1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-02-27 16:52:39 +00:00
Files

CAST Tape Examples for CUBE Library Version 13.

The CUBE_LBR tape image in the library is in CAST format, a sequential
source archive originating from the days of the B5000. The B5000 did not
have the large Head-per-Track disks that were introduced with the B5500,
only two relatively small drums, so source programs had to be maintained
either as card decks or on tape.

The CAST format allows multiple source modules to be maintained as a
single file. CAST files were originally on tape, but on the B5500, could
also be stored on disk. These tapes are maintained by the standard
Burroughs utility program MAKCAST/DISK. The Algol and COBOL compilers
understand this format and can compile programs and include individual
routines directly from CAST tapes or a disk file.

CAST tapes have a directory on the front of the tape that identifies the
files stored on that tape. The directory includes the relative record
number of the start of each file. This allows MAKCAST/disk and the
compilers to use the Algol SPACE statement to position the tape to
individual files relatively efficiently. If the CAST file is on disk,
SPACE provides random access to the modules. If the file is on tape, it
can take about five minutes to traverse a full reel.

Here is what I have deduced for the format of CAST tapes:

    1. The tape is labeled with standard B5500 tape labels.

    2. Tapes are written with fixed-length 448-character (56 word)
    blocks.

    3. The first three blocks on the tape contain a directory of the
    files on the tape:

        a. The first word of the first directory block appears to be a
        binary count of the number of blocks in the directory. This
        appears to be a fixed value of 3, however, and is hard-wired
        into the MAKCAST/DISK utility program.

        b. Entries in the tape directory are variable length,
        consisting of N+4 characters, where N is the number of
        characters in the library module name.

        c. The first character in an entry is the binary length of the
        module name. This length is followed immediately by the
        characters of the name.

        d. Following the name are three characters that specify a big-
        endian 18-bit binary number -- the 1-relative logical record
        number on the tape where the module starts. This number is
        relative to the first non-directory block on the tape (i.e., the
        block following the directory blocks).

        e. Directory entries are not split across tape blocks. If there
        is insufficient room at the end of a block for the next entry, a
        zero-length entry is inserted at the end of that block and the
        entry is stored at the beginning of the next block.

    4. The remainder of the tape after the directory blocks consists of
    blocks containing the text of the library modules.

    5. The first word of each of these text blocks is the big-endian
    binary value of the 1-relative record number of the first logical
    record in the block, using the same relative basis as in the 18-bit
    directory record numbers.

    6. The remainder of the block consists of five logical records of 88
    characters (11 words) each (thus 5*88+8=448). The first 80
    characters of a logical record hold a card image. The last eight
    characters of a logical record do not appear to be used and are
    zero.

    7. The library is terminated by a physical tape mark and ending tape
    label.

    8. A 2400-foot reel of tape could hold almost 110,000 records at 800
    bpi. The maximum capacity of a library is limited by the three
    directory blocks and the 18-bit record number in the directory
    entries.

The MAKCAST/DISK program is described on page 5-5ff in:

    http://bitsavers.org/pdf/burroughs/B5000_5500_5700/
    1024916_B5500_B5700_OperMan_Sep68.pdf

The Algol and COBOL compilers use "$$" cards to include source modules
from a CAST tape or disk file into the program being compiled. These
cards are described on page 4-41ff in the link above.


CASTTST.card
    Card deck illustrating how to compile a program from a CAST file. By
    default, the "A" file was "CASTA/LIBRARY" on disk.

COMCAST.card
    Card deck illustrating how to compile and run a program by inserting
    fragments of a module from a CAST tape and insert patches between
    the fragments. By default, the "C" file was labeled "CASTC" on tape.

CPYCAST.card
    Card deck for a program to copy the "CASTC" file from tape to
    "CASTA/LIBRARY" on disk

MAKCAST.card
    Card deck to illustrate simple use of MAKCAST/DISK. This deck
    generates a listing of the tape directory, a listing of module
    URS046, and punches a deck for module PTS024.

PTS051.lst
    The listing resulting from the compilation and execution in
    COMCAST.card.

__________
2018-05-27 Paul Kimpel
    Initial version.