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.