1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-01-11 23:42:42 +00:00
Paul Kimpel 13642bcfdd Correct line-endings for Windows vs Linux.
Correct bad line endings in the repository files that caused problems
between checking out in Windows vs Linux clients.
2019-03-24 12:03:28 -07:00

210 lines
19 KiB
Plaintext

$ SET LINEINFO 00000100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001000
%% CODEDUMP55 %%00001100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001200
% 00001300
% MCP E-MODE PROGRAM TO DUMP A B-5500 CODE FILE IN OCTAL AND TO 00001400
% INTERPRET SEGMENT 0 AND THE SEGMENT DICTIONARY. 00001500
% 00001600
% TO USE, EQUATE FILE CODE TO THE B5500 CODE FILE. OUTPUT IS TO THE 00001700
% PRINTER FILE LINE. 00001800
% 00049900
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00050000
% 2012-04-19 P.KIMPEL 00050010
% ORIGINAL VERSION. 00050011
% 2012-07-14 P.KIMPEL 00050020120714PK
% CORRECT USE OF PARAMETER DEFINES. 00050021120714PK
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00099000
BEGIN 00100000
DEFINE 00100100
SECTORSIZE = 30 #, 00100200
UNITSOF(V,U) = (((V)+((U)-1)) DIV (U)) #, 00100300120714PK
INCREMENTSOF(V,U) = (UNITSOF(V,U)*(U)) #; 00100400120714PK
00110000
INTEGER 00120100
CODERECSIZE, 00120200
PRTSIZE, 00120300
SEGDICTSIZE; 00120400
00130000
REAL 00130100
T7; 00130200
00150000
ARRAY 00150100
A[0:29], 00150200
PRT[0:29], 00150300
SEGDICT[0:29], 00150400
SEGZERO[0:29]; 00150500
00170000
FILE 00170100
CODE (KIND=DISK, DEPENDENTSPECS, DEPENDENTINTMODE), 00170200
LINE (KIND=PRINTER, MAXRECSIZE=132, FRAMESIZE=8, FILEUSE=IO); 00170300
00300000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00300100
PROCEDURE DUMPSECTOR(SECTOR, BUF, BUFX); 00300200
VALUE SECTOR, BUFX; 00300300
INTEGER SECTOR, BUFX; 00300400
ARRAY BUF[0]; 00300500
BEGIN 00300600
INTEGER 00300700
ENDX, 00300800
X, 00300900
Y; 00301000
00301100
ENDX:= BUFX+SECTORSIZE-1; 00301200
WRITE(LINE, <X3,K5,X2,5(K4,X1,6(K16,X1),/,X10)>, 00301300
SECTOR, FOR X:= BUFX STEP 6 UNTIL ENDX DO [ 00301400
X, FOR Y:=0 STEP 1 UNTIL 5 DO BUF[X+Y]]); 00301500
END DUMPSECTOR; 00301600
00810000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00810100
PROCEDURE DUMPPRT(PRTLOC, PRTSIZE, PRT); 00810200
VALUE PRTLOC, PRTSIZE; 00810300
INTEGER PRTLOC, PRTSIZE; 00810400
ARRAY PRT[0]; 00810500
BEGIN 00810600
INTEGER 00810700
BUFX, 00810800
SECTOR; 00810900
00811000
WRITE(LINE, <"PRT:">); 00811100
SECTOR:= PRTLOC; 00811200
IF SIZE(PRT) < PRTSIZE THEN 00811300
RESIZE(PRT, INCREMENTSOF(PRTSIZE, SECTORSIZE)); 00811400
00811500
WHILE BUFX < PRTSIZE DO 00811600
BEGIN 00811700
READ(CODE[SECTOR], CODERECSIZE, PRT[BUFX]); 00811800
DUMPSECTOR(SECTOR, PRT, BUFX); 00811900
BUFX:=*+SECTORSIZE; 00812000
SECTOR:= *+1; 00812100
END WHILE; 00812200
END DUMPPRT; 00812300
00820000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00820100
PROCEDURE DUMPSEGDICT(DICTLOC, DICTSIZE, DICT, PRT); 00820200
VALUE DICTLOC, DICTSIZE; 00820300
INTEGER DICTLOC, DICTSIZE; 00820400
ARRAY DICT, PRT[0]; 00820500
BEGIN 00820600
INTEGER 00820700
BUFX, 00820800
PRTX, 00820900
SECTOR, 00821000
SECTOREND, 00821050
SEGSECTORS; 00821100
REAL 00821200
P, 00821300
W; 00821400
00821500
WRITE(LINE, <"SEGMENT DICTIONARY:">); 00821600
SECTOR:= DICTLOC; 00821700
IF SIZE(DICT) < DICTSIZE THEN 00821800
RESIZE(DICT, INCREMENTSOF(DICTSIZE, SECTORSIZE)); 00821900
00822000
WHILE BUFX < DICTSIZE DO 00822100
BEGIN 00822200
READ(CODE[SECTOR], CODERECSIZE, DICT[BUFX]); 00822300
BUFX:= *+SECTORSIZE; 00822400
END WHILE; 00822500
00822600
FOR BUFX:= 0 STEP 1 WHILE BUFX < DICTSIZE DO 00822700
BEGIN 00822800
W:= DICT[BUFX]; 00822900
IF W IS 0 THEN 00823000
WRITE(LINE, <K4,X2,"(ZERO)">, BUFX) 00823100
ELSE 00823200
BEGIN 00823300
SECTOR:= W.[14:15]; 00823400
SEGSECTORS:= UNITSOF(W.[29:15], SECTORSIZE); 00823500
SECTOREND:= SECTOR+SEGSECTORS-1; 00823600
PRTX:= W.[39:10]; 00823700
WRITE(LINE, <K4,X2,K16," TYPE=",I1," INTR=",I1," PRT-LNK=",K3, 00823800
" SIZE=",K5," ADDR=",K5>, 00823900
BUFX, W, W.[46:1]+1, W.[45:1], PRTX, W.[29:15], SECTOR); 00824000
00824100
IF PRTX > 0 THEN 00824200
BEGIN 00824300
DO BEGIN 00824400
P:= PRT[PRTX]; 00824500
WRITE(LINE, <X6,"PRT ",K4," STOP=",I1," LINK=",K4, 00824600
" SEG DICT=",K5," OFFSET=",K5>, 00824700
PRTX, P.[41:1], P.[40:11], P.[29:15], P.[14:15]); 00824800
PRTX:= P.[40:11]; 00824900
END 00825000
UNTIL BOOLEAN(P.[41:1]); % PRT STOPPER BIT 00825100
END; 00825200
00825300
IF BOOLEAN(W.[45:1]) THEN 00825400
WRITE(LINE) % AN INTRINSICS SEGMENT 00825500
ELSE 00825600
BEGIN 00825700
WRITE(LINE); 00825800
FOR SECTOR:= SECTOR STEP 1 WHILE SECTOR<=SECTOREND DO 00825900
BEGIN 00826000
READ(CODE[SECTOR], CODERECSIZE, A); 00826100
DUMPSECTOR(SECTOR, A, 0); 00826200
END FOR; 00826300
END; 00826400
END; 00826500
END FOR; 00826600
00826700
WRITE(LINE); 00826800
END DUMPSEGDICT; 00826900
00840000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00840100
PROCEDURE DUMPFPB(FPBLOC, FPBSIZE, BUF); 00840200
VALUE FPBLOC, FPBSIZE; 00840300
INTEGER FPBLOC, FPBSIZE; 00840400
ARRAY BUF[0]; 00840500
BEGIN 00840600
INTEGER 00840700
BUFX, 00840800
SECTOR; 00840900
00841000
WRITE(LINE, <"FPB:">); 00841100
SECTOR:= FPBLOC; 00841200
00841300
WHILE BUFX < FPBSIZE DO 00841400
BEGIN 00841500
READ(CODE[SECTOR], CODERECSIZE, BUF); 00841600
DUMPSECTOR(SECTOR, BUF, 0); 00841700
BUFX:=*+SECTORSIZE; 00841800
SECTOR:= *+1; 00841900
END WHILE; 00842000
END DUMPFPB; 00842100
00900000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00900100
%% OUTER BLOCK 00900200
00900300
OPEN(CODE); 00900400
CODERECSIZE:= CODE.MAXRECSIZE; 00900500
REPLACE POINTER(A,8) BY " " FOR 132; 00900600
REPLACE POINTER(A,8) BY "CODEDUMP55: ", CODE.LTITLE; 00900700
REPLACE POINTER(A[17],8)-5 BY " ", 00900800
(T7:= TIME(7)).[47:12] FOR 4 DIGITS, "-", 00900900
T7.[35:6] FOR 2 DIGITS, "-", 00901000
T7.[29:6] FOR 2 DIGITS, " ", 00901100
T7.[23:6] FOR 2 DIGITS, ":", 00901200
T7.[17:6] FOR 2 DIGITS; 00901300
WRITE(LINE[SPACE 2], 132, A); 00901400
00910000
READ(CODE[0], CODERECSIZE, SEGZERO); 00910100
00910200
WRITE(LINE, <"SEGMENT DICTIONARY AT SECTOR ",I6," FOR ",I6,/, 00910300
"PRT AT SECTOR ",I6," FOR ",I6,/, 00910400
"FPB AT SECTOR ",I6," FOR ",I6,/, 00910500
"STARTING SEGMENT NUMBER ",I6,/, 00910600
"NUMBER OF FILES ",I6,/, 00910700
"CORE ESTIMATE ",I6,/>, 00910800
SEGZERO[0], SEGZERO[1], SEGZERO[2], SEGZERO[3], 00910900
SEGZERO[4], SEGZERO[5], SEGZERO[6], 00911000
SEGZERO[7].[14:15], SEGZERO[7].[29:15]*64); 00911100
00911200
SEGDICTSIZE:= SEGZERO[1]; 00911300
PRTSIZE:= SEGZERO[3]; 00911400
DUMPPRT(SEGZERO[2], PRTSIZE, PRT); 00911500
DUMPFPB(SEGZERO[4], SEGZERO[5], A); 00911600
DUMPSEGDICT(SEGZERO[0], SEGDICTSIZE, SEGDICT, PRT); 00911700
00999800
END. 00999900