1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

138 lines
11 KiB
Plaintext

BEGIN 00000300
REAL WATE,DUMPS,Z,I,N,USED,AVAIL,SAVD,T,T1,S,LINKWD,NMIX; 00000400
DEFINE JAR=31927#, % SYSTEM VIII-I 00000500
MIXMAX=12#; 00000600
LABEL BRK; 00000700
FORMAT FT(D"{!!!!!"I2":"I2":"I2"{!!~"); 00000800
REAL STREAM PROCEDURE FETCH(A); 00000900
VALUE A; 00001000
BEGIN SI~A; DI~LOC FETCH; DS~WDS; END; 00001100
STREAM PROCEDURE MOVE(S,CD,D); 00001200
VALUE CD; 00001300
BEGIN SI~S; SI~SI+CD; 00001400
DI~D; DS~28 CHR; DS~RESET;DS~5 SET; 00001500
END; 00001600
STREAM PROCEDURE STP(JAR,MIXMAX,C,STAB,TAB,NMIX); 00001700
VALUE JAR,MIXMAX; 00001800
BEGIN LOCAL POINT,MIX,NIMIX; 00001900
LABEL OVER; 00002000
OVER: SI~JAR; SI~SI+8; 00002100
JAR~SI; TALLY~MIX; 00002200
TALLY~TALLY+1; MIX~TALLY; 00002300
IF SB THEN 00002400
BEGIN DI~LOC POINT; 00002500
DS~WDS; SI~POINT; 00002600
DI~C; SI~SI+1; 00002700
DS~7 CHR; DS~LIT "/"; 00002800
SI~SI+1; DS~7 CHR; 00002900
DS~LIT "="; SI~LOC MIX; 00003000
DS~2 DEC; DS~LIT " "; 00003100
SI~STAB; DS~5 DEC; 00003200
STAB~SI; DS~LIT " "; 00003300
SI~TAB; DS~5 DEC; 00003400
TAB~SI; DS~2 LIT "{!"; 00003500
C~DI; 00003600
TALLY~NIMIX; TALLY~TALLY+1; 00003700
NIMIX~TALLY; 00003800
END ELSE 00003900
BEGIN SI~STAB; 00004000
SI~SI+8; STAB~SI; 00004100
SI~TAB; SI~SI+8; 00004200
TAB~SI; 00004300
END; 00004400
SI~LOC MIX; DI~LOC MIXMAX; 00004500
IF 8 SC ! DC THEN GO TO OVER; 00004600
DI~C; 00004700
DS~4 LIT "{!!~"; 00004800
DI~NMIX; SI~LOC NIMIX; 00004900
DS~1 WDS; 00005000
END STP; 00005100
STREAM PROCEDURE STP2(STAB,TAB,USED,AVAIL,SAVD,NSAVD,LINKW,D); 00005200
VALUE STAB,TAB,USED,AVAIL,SAVD,NSAVD,LINKW ; 00005300
BEGIN 00005400
DI~D; SI~LOC STAB; 00005500
DI~DI+11; DS~5 DEC; 00005600
DI~DI+1; DS~5 DEC; 00005700
DI~DI+1; 00005800
4 ( DI~DI+15; DS~5 DEC; ) ; 00005900
DI~DI+3; DS~3 DEC; 00006000
END; 00006100
SAVE ARRAY STAB,TAB[0:MIXMAX]; 00006200
ARRAY C[0:4|MIXMAX+1],D[0:16],W[0:4]; 00006300
ALPHA FILE OUT DC 14 (2,5); 00006400
BEGIN 00006500
REAL STREAM PROCEDURE ADDRS(A); 00006600
BEGIN SI~A; ADDRS~SI; END; 00006700
STREAM PROCEDURE STP1(D); 00006800
BEGIN 00006900
DI~D; DS~11 LIT "MCP USING "; 00007000
DI~DI+5; DS~LIT " "; 00007100
DI~DI+5; DS~16 LIT "{!!IN-USE = "; 00007200
DI~DI+5; DS~15 LIT "{!AVAILIABLE = "; 00007300
DI~DI+5; DS~15 LIT "{!SAVED = "; 00007400
DI~DI+5; DS~15 LIT "{!NONSAVED = "; 00007500
DI~DI+5; DS~3 LIT "{!!"; 00007600
DI~DI+3; DS~14 LIT " LINK WORDS{!~"; 00007700
END; 00007800
ARRAY A[0:1]; 00007900
IF STATUS(A[*]) > 0 THEN Z~A[0] ELSE GO TO BRK; 00008000
IF WATE=0 THEN BEGIN DUMPS:=1;WATE:=5;END ELSE BEGIN 00008100
DUMPS:=WATE DIV 1000;WATE:=MAX(WATE MOD 1000,30);END; 00008200
I~FETCH(ADDRS(A)-2).[33:15]; 00008300
DO UNTIL I~FETCH(N~I).[33:15] = 0; 00008400
N~FETCH(N).[18:15]; 00008500
STP1(D[1]); 00008600
W[0]~Z; 00008700
END; 00008800
WHILE DUMPS~DUMPS-1 } 0 DO 00008900
BEGIN 00009000
USED~AVAIL~SAVD~LINKWD~0; 00009100
FOR I~0 STEP 1 UNTIL MIXMAX DO TAB[I]~STAB[I]~0; 00009200
WHEN(WATE); 00009300
WRITE(DC(Z,90),FT,(I~TIME(1)/60)DIV 3600, I MOD 3600 DIV 60, 00009400
I MOD 60)[BRK:BRK]; 00009500
I~FETCH(N).[18:15]; 00009600
WHILE I!0 DO 00009700
BEGIN 00009800
I~(T~FETCH(T1~I)).[18:15]; 00009900
T1~T.[33:15]-T1-2; 00010000
LINKWD~LINKWD+1; 00010100
IF T { 0 THEN AVAIL~AVAIL +T1 00010200
ELSE 00010300
BEGIN 00010400
IF S~T.[9:6] > MIXMAX THEN 00010500
BEGIN 00010600
FORMAT FD(O,"{!LOST AT CELL " 00010700
5A1 "~"); 00010800
WRITE(DC(Z,90),FD,Z,T.[33:3],T.[36:3],T.[39:3],T.[42:3], 00010900
T.[45:3])[BRK:BRK]; 00011000
END; 00011100
USED~USED+T1; 00011200
IF T.[3:6]<2 OR T.[3:6]>6 THEN S~0; 00011250
IF BOOLEAN(T.[2:1]) THEN 00011300
BEGIN 00011400
SAVD~SAVD+T1; 00011500
STAB[S]~STAB[S]+T1; 00011600
END 00011700
ELSE 00011800
IF T.[3:6] = 7 THEN TAB[0]~TAB[0]+T1 00011900
ELSE TAB[S]~TAB[S]+T1; 00012000
END; 00012100
END; 00012200
STP(JAR,MIXMAX,C[1],STAB[1],TAB[1],NMIX); 00012300
STP2(STAB[0],TAB[0],USED,AVAIL,SAVD,USED-SAVD,LINKWD,D[1]); 00012400
FOR I~8 STEP 28 UNTIL NMIX|32+11 DO 00012500
BEGIN 00012600
MOVE(C[I DIV 8],ENTIER(I MOD 8),W[1]); 00012700
WRITE(DC(Z,90),5,W[*])[BRK:BRK]; 00012800
END; 00012900
FOR I~8 STEP 28 UNTIL 131 DO 00013000
BEGIN 00013100
MOVE(D[I DIV 8],ENTIER(I MOD 8),W[1]); 00013200
WRITE(DC(Z,90),5,W[*])[BRK:BRK]; 00013300
END; 00013400
END; 00013500
BRK: 00013600
END. 00013700
END;END. LAST CARD ON 0CRDING TAPE 99999999