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.
163 lines
13 KiB
Plaintext
163 lines
13 KiB
Plaintext
PATCH 000112AA 00000100
|
|
00000200
|
|
ELIMINATES THE NEED OF INTERPRETING, COLLATING, AND MERGING 00000300
|
|
PATCHES TO SOFTWARE RECEIVED FROM BURROUGHS FOR THE B 5500. 00000400
|
|
SIMPLY TAKE THE ENTIRE PATCH DECK, PRECEDE IT WITH AN "EXECUTE" 00000500
|
|
CARD AND A "DATA CRD" CARD, AND FOLLOW IT WITH AN "END" CARD. 00000600
|
|
THIS PROGRAM WILL ACCEPT THE PATCH DECK AS INPUT, LIST IT 00000700
|
|
ACCORDING TO PATCH NUMBER, NUMBER OF CARDS PER PATCH, AND TOTAL 00000800
|
|
NUMBER OF CARDS IN THE PATCH DECK. THEN IT WILL SORT THE 00000900
|
|
PATCH DECK ACCORDING TO SEQUENCE NUMBER AND PATCH NUMBER. 00001000
|
|
THE PROGRAM WILL THEN LOOK FOR A SYMBOLIC TAPE FILE LABELED 00001100
|
|
"CII". THIS FILE NAME SHOULD BE LABEL-EQUATED TO THE SOFTWARE 00001200
|
|
TAPE FILE BEING PATCHED. FOR EXAMPLE: 00001300
|
|
EXECUTE PATCH/UTILITY 00001400
|
|
FILE CII=SYMBOL/DCESPSY 00001500
|
|
DATA CRD 00001600
|
|
.................PATCH DECK 00001700
|
|
END 00001800
|
|
00001900
|
|
THE ABOVE DECK SETUP WOULD BE USED TO UPDATE THE MCP WITH 00002000
|
|
AN UPDATED PATCH DECK. THE PROGRAM WILL CREATE A NEW SYMBOL 00002100
|
|
TAPE, THEN IT WILL COMPARE THE ORIGINAL AND THE NEW SYMBOL 00002200
|
|
TAPE AND LIST ALL CARDS ADDED, DELETED, OR CHANGED. 00002300
|
|
THE PROGRAM WILL ACCEPT A PATCH DECK FROM DISK IF IT HAS 00002400
|
|
BEEN WRITTEN ON DISK WITH THE FILE DECLARATION PARAMETERS 00002500
|
|
(X,10,30) 00002600
|
|
00002700
|
|
00002800
|
|
**********************************************************************00002900
|
|
PLEASE NOTE THAT THE BURROUGHS CORPORATION ASSUMES 00003000
|
|
NO RESPONSIBILITY FOR THE USE OR MAINTENANCE OF THIS PROGRAM. 00003100
|
|
**********************************************************************00003200
|
|
00003300
|
|
00003400
|
|
BEGIN % DISK SYSTEM MAINTENANCE B.L.LANGE 00003500
|
|
FILE CRD(2,10,30); 00003600
|
|
FILE PBT 18(2,15); 00003700
|
|
FILE CII (2,56,10); 00003800
|
|
FILE CIO 2(2,56,10,SAVE 1); 00003900
|
|
FILE DFO DISK SERIAL [20:1000] (2,15,30); 00004000
|
|
FORMAT HD1( 9("- - - - "),"SEQUENCE. INPUT. PATCH. CARDS. NOTES."); 00004100
|
|
ALPHA ARRAY AR[0:9], A, B, C, D[0:14]; 00004200
|
|
INTEGER STREAM PROCEDURE COMPARE (KEY1,KEY2) ; 00004300
|
|
BEGIN 00004400
|
|
SI ~ KEY1 ; DI ~ KEY2 ; 00004500
|
|
IF 8 SC > DC THEN TALLY ~ 2 ELSE 00004600
|
|
BEGIN 00004700
|
|
SI ~ SI - 8 ; DI ~ DI - 8 ; 00004800
|
|
IF 8 SC < DC THEN TALLY ~ 0 ELSE TALLY ~ 1 ; 00004900
|
|
END; COMPARE ~ TALLY ; 00005000
|
|
END COMPARE PROCEDURE ; 00005100
|
|
ALPHA STREAM PROCEDURE ALF(I); BEGIN 00005200
|
|
SI~I; DI~LOC ALF; DS~4LIT". ";DS~4DEC; END; 00005300
|
|
INTEGER STREAM PROCEDURE COMPAR2 (KEY1,KEY2) ; 00005400
|
|
BEGIN 00005500
|
|
SI ~ KEY1 ; DI ~ KEY2 ; 00005600
|
|
IF 16 SC > DC THEN TALLY ~ 2 ELSE 00005700
|
|
BEGIN 00005800
|
|
SI ~ SI -16 ; DI ~ DI -16 ; 00005900
|
|
IF 16 SC < DC THEN TALLY ~ 0 ELSE TALLY ~ 1 ; 00006000
|
|
END; COMPAR2 ~ TALLY ; 00006100
|
|
END COMPAR2 PROCEDURE ; 00006200
|
|
INTEGER STREAM PROCEDURE CRDIMG (OLD,NEW); 00006300
|
|
BEGIN SI ~ OLD; DI ~ NEW; TALLY ~ 0; 00006400
|
|
9(IF 8 SC ! DC THEN TALLY ~ 2); IF 8 SC ! DC THEN 00006500
|
|
TALLY ~ TALLY + 1; CRDIMG ~ TALLY; 00006600
|
|
END OF CRDIMG ; 00006700
|
|
STREAM PROCEDURE MOVE(N,A,B); VALUE N; 00006800
|
|
BEGIN SI~A; DI~B; DS~ N WDS; 00006900
|
|
END OF MOVE; 00007000
|
|
PROCEDURE PATCH (P,F,M); FILE P,F,M; 00007100
|
|
BEGIN INTEGER C; LABEL MG,EP,EF,EX; 00007200
|
|
B[10] ~ D[10] ~ 00007300
|
|
B[11] ~ B[12] ~ B[13] ~ B[14] ~ 00007400
|
|
D[11] ~ D[12] ~ D[14] ~ AR[1]; 00007500
|
|
D[13] ~ AR[5]; 00007600
|
|
WRITE(PBT[PAGE]); WRITE(PBT[DBL],HD1); 00007700
|
|
READ( F ,10,D[*]); 00007800
|
|
C~1; 00007900
|
|
MG: IF C{1 THEN READ(P,10,A[*])[EP]; 00008000
|
|
IF C}1 THEN BEGIN 00008100
|
|
MOVE(10,D[0],B[0]); READ(F,10,D[*])[EF]; 00008200
|
|
IF COMPARE(B[9],D[9]) } 1 THEN 00008300
|
|
BEGIN WRITE(PBT,15,B[*]); WRITE(PBT[DBL],15,D[*]); 00008400
|
|
END; END; 00008500
|
|
IF C}0 AND C{2 THEN C~COMPARE(A[9],B[9]); 00008600
|
|
IF C{1 THEN IF COMPARE(A[0],AR[8])=1 THEN C~9; 00008700
|
|
IF C>1 AND C<9 THEN WRITE(M,10,B[*]); 00008800
|
|
IF C{1 THEN WRITE(M,10,A[*]); 00008900
|
|
IF C=9 THEN IF COMPARE(A[2], B[9])<1 THEN C~0; 00009000
|
|
GO TO MG; 00009100
|
|
EP: IF C<0 THEN GO TO EX; IF C<1 THEN WRITE(M,10,B[*]); 00009200
|
|
C~3; GO TO MG; 00009300
|
|
EF: IF C>2 THEN GO TO EX; 00009400
|
|
C~-1; GO TO MG; 00009500
|
|
EX: END OF PATCH; 00009600
|
|
BOOLEAN PROCEDURE INPUT (TEMP); ARRAY TEMP[0]; 00009700
|
|
BEGIN LABEL RD,EF,EX; 00009800
|
|
OWN INTEGER I, J, K; 00009900
|
|
RD: READ(CRD,10,TEMP[*])[EF]; 00010000
|
|
TEMP[13]~TEMP[14]~AR[1]; 00010100
|
|
IF COMPARE(TEMP[9],AR[1]) < 1 THEN 00010200
|
|
BEGIN 00010300
|
|
WRITE(PBT[PAGE]); 00010400
|
|
WRITE(PBT[ DBL],HD1); J~J+1; K~0; 00010500
|
|
TEMP[10]~TEMP[11]~TEMP[12]~AR[1]; 00010600
|
|
WRITE(PBT[DBL],15,TEMP[*]); 00010700
|
|
GO TO RD; 00010800
|
|
END; 00010900
|
|
I~I+1; TEMP[10]~ALF(I); TEMP[11]~ALF(J); 00011000
|
|
K~K+1; TEMP[12]~ALF(K); 00011100
|
|
WRITE(PBT,15,TEMP[*]); GO TO EX; 00011200
|
|
EF: INPUT ~ TRUE; CLOSE(CRD,RELEASE); 00011300
|
|
EX: END OF INPUT; 00011400
|
|
PROCEDURE OUTPUT (EOF,B); VALUE EOF; ARRAY B[0]; BOOLEAN EOF; 00011500
|
|
BEGIN LABEL SE,EX; OWN BOOLEAN SW; 00011600
|
|
IF EOF THEN GO TO SE; 00011700
|
|
IF NOT SW THEN BEGIN SW ~ TRUE; 00011800
|
|
WRITE(PBT[PAGE]); WRITE(PBT[DBL],HD1); 00011900
|
|
MOVE(15,B[0],A[0]); GO TO EX; END; 00012000
|
|
IF COMPARE(A[9],B[9])!0 THEN BEGIN A[13] ~ AR[6]; 00012100
|
|
WRITE(PBT,15,A[*]); WRITE(PBT[DBL],15,B[*]); END 00012200
|
|
ELSE WRITE(DFO,15,A[*]); 00012300
|
|
MOVE(15,B[0],A[0]); GO TO EX; 00012400
|
|
SE: WRITE(DFO,15,A[*]); REWIND(DFO); 00012500
|
|
EX: END OF OUTPUT; 00012600
|
|
BOOLEAN PROCEDURE SORTA (A,B); ARRAY A,B[0]; 00012700
|
|
SORTA ~ COMPAR2(A[9],B[9]) { 1; 00012800
|
|
PROCEDURE HIVALU (A); ARRAY A[0]; 00012900
|
|
FILL A[*] WITH 0,0,0,0,0,0,0,0,0,OCT1414141414141414; 00013000
|
|
INTEGER X; 00013100
|
|
LABEL RO, RN, LS, RP, RX, OM; 00013200
|
|
FILL AR[*] WITH "~ ", ". ", ". NOP ", 00013300
|
|
". ADD ", ". DIF ", ". SEQ ", 00013400
|
|
". DUP ", ". ERROR ", "$$ OMIT", 00013500
|
|
". OMIT "; 00013600
|
|
SORT(OUTPUT,INPUT,0,HIVALU,SORTA,15); 00013700
|
|
PATCH(DFO,CII,CIO); 00013800
|
|
CLOSE(CII,SAVE); REWIND(CIO); REWIND(DFO); 00013900
|
|
WRITE(PBT[PAGE]); WRITE(PBT[DBL],HD1); 00014000
|
|
B[14]~AR[1]; 00014100
|
|
READ(DFO,15,C[*])[RO]; 00014200
|
|
RO: READ (CII,10,A[*])[RN]; 00014300
|
|
RN: READ (CIO,10,B[*])[LS]; 00014400
|
|
IF CRDIMG(A[0],C[0]) = 0 THEN BEGIN C[13]~AR[2]; 00014500
|
|
WRITE(PBT,15,C[*]); 00014600
|
|
READ(DFO,15,C[*])[RX]; END; 00014700
|
|
RX: IF X ~ CRDIMG(A[0],B[0]) = 0 THEN GO TO RO; 00014800
|
|
B[13] ~ IF X=3 THEN AR[3] ELSE 00014900
|
|
IF X=2 THEN AR[4] ELSE AR[5]; 00015000
|
|
IF CRDIMG(C[0],B[0])!0 THEN B[13]~AR[7]; 00015100
|
|
MOVE(3,C[10],B[10]); 00015200
|
|
IF COMPARE(AR[8],C[0])=1 THEN BEGIN 00015300
|
|
A[10]~AR[9]; 00015400
|
|
OM: WRITE(PBT,15,A[*]); 00015500
|
|
READ(CII,10,A[*]); 00015600
|
|
IF COMPARE(A[9],C[2]){1 THEN GO TO OM; 00015700
|
|
GO TO RX; END; 00015800
|
|
READ(DFO,15,C[*])[RP]; RP: 00015900
|
|
WRITE (PBT,15,B[*]);IF X=3 THEN GO RN; GO RO; 00016000
|
|
LS: END. 00016100
|
|
END;END. LAST CARD ON 0CRDING TAPE 99999999
|