mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
138 lines
11 KiB
Plaintext
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
|