diff --git a/Utilities-Richard-Cornwell/README.txt b/Utilities-Richard-Cornwell/README.txt new file mode 100644 index 0000000..ffb2c50 --- /dev/null +++ b/Utilities-Richard-Cornwell/README.txt @@ -0,0 +1,28 @@ +Burroughs B5500 Utilities: Richard Cornwell + + +reader.card + A compile deck for the OBJECT/READER utility program. This was + reconstructed by inference from scanned PDF listings at + http://bitsavers.org/pdf/burroughs/B5000_5500_5700/listing/. + The program can be used to print a deck of cards, print a file from + disk or tape, or copy a deck of cards to disk or tape. Its behavior + is controlled by COMMON and file-equation control cards. See the + comment in the source for details. + + The following example will copy a deck of cards to a disk file named + CARDS/ONDISK, using the standard blocking for B5500 source files + (10-word records, 150-word blocks). The file will also be printed: + + ?RUN OBJECT/READER; COMMON = 3 + ?FILE NEWTAPE = CARDS/ONDISK DISK SERIAL + ?FILE LINE = LINE PRINT BACKUP DISK + ?DATA CARD + : + : + : + ?END + + This deck will compile the program to disk as OBJECT/READER, store + its source as SYMBOL/READER on disk, and create a compile listing. + diff --git a/Utilities-Richard-Cornwell/reader.card b/Utilities-Richard-Cornwell/reader.card new file mode 100644 index 0000000..b01eaf2 --- /dev/null +++ b/Utilities-Richard-Cornwell/reader.card @@ -0,0 +1,52 @@ +?COMPILE OBJECT/READER ALGOL LIBRARY +?ALGOL FILE LINE = PRINT BACK UP DISK +?ALGOL FILE NEWTAPE = SYMBOL/READER SERIAL DISK +?DATA CARD +$CARD LIST NEW TAPE SINGLE +BEGIN 0001000 +COMMENT: SET COMMON TO CHANGE THE ACTION OF THIS PROGRAM. 0002000 + DEFAULT WITH COMMON = 0 IS TO COPY "S" TO "LINE". 0003000 + WITH COMMON = 1 THE FILE "CARD" IS COPIED TO "LINE". 0004000 + WITH COMMON = 2 THE FILE "S" IS COPIED TO BOTH 0005000 + "LINE" AND "NEWTAPE". 0006000 + WITH COMMON = 3 THE FILE "CARD" IS COPIED TO BOTH 0007000 + "LINE" AND "NEWTAPE". 0008000 + 0009000 + SET COMMON=3 TO LOAD A DECK OF CARDS TO NEWTAPE. 0010000 + NO SETTING WILL PRINT OUT FILE "S". 0011000 +; 0012000 +INTEGER COMMON; 0013000 +LABEL EOF; 0014000 +SAVE ARRAY REC[0:15]; 0015000 +FILE IN CARD (2, 10); 0016000 +FILE IN S DISK SERIAL (2, 10, 150); 0017000 +SAVE FILE OUT NEWTAPE DISK SERIAL [20:3000] (2,10,150,SAVE 99); 0018000 +FILE OUT LINE 15(5,15); 0019000 + 0020000 +STREAM PROCEDURE FILLIT(DEST); 0021000 +BEGIN 0022000 + DI := DEST ; 15(DS := 8 LIT " "); 0023000 +END; 0024000 + 0025000 +FILLIT(REC[*]); 0026000 +WHILE TRUE DO 0027000 + BEGIN 0028000 + IF BOOLEAN(COMMON.[47:1]) THEN 0029000 + READ(CARD, 10, REC[*]) [EOF] 0030000 + ELSE 0031000 + READ(S, 10, REC[*]) [EOF]; 0032000 + IF BOOLEAN(COMMON.[46:1]) THEN 0033000 + WRITE(NEWTAPE, 10, REC[*]); 0034000 + WRITE(LINE, 15, REC[*]); 0035000 + END WHILE; 0036000 + 0037000 +EOF: 0038000 +LOCK(LINE); 0039000 +IF BOOLEAN(COMMON.[46:1]) THEN LOCK(NEWTAPE,RELEASE); 0040000 +IF BOOLEAN(COMMON.[47:1]) THEN 0041000 + CLOSE(CARD) 0042000 +ELSE 0043000 + CLOSE(S); 0044000 +END. 0045000 +END. LAST CARD ON 0CRDING TAPE 9999999 +?END