1
0
mirror of https://github.com/pkimpel/retro-b5500.git synced 2026-04-29 21:27:49 +00:00

Release emulator version 1.00:

1. Implement new system and disk subsystem configuration mechanism.
2. Implement initial Mark-XIII Cold Start card deck for use with new configuration interfaces.
3. Deprecate use of B5500ColdLoader.html script (replaced by new configuration mechanism and Cold Start deck), but correct and enhance IndexedDB database detection, creation, and deletion in it.
4. Implement "Application Cache" support to allow emulator to run off-line in a browser.
5. Implement web-font support and update all UIs to use DejaVu Sans and DejaVu Sans Mono from downloaded .woff or .ttf font files.
6. Rework some code in Processor OPDC, DESC, and indexDescriptor routines, attempting to resolve Flag Bit errors (issue #23). This appears to result in some improvement, but we still see them occasionally under load.
7. Line Printer:
    - Implement new line printer driver with more realistic UI and operator controls.
    - Implement Algol Glyphs option to render special Algol characters in Unicode.
    - Implement support for optional "greenbar" shading on the "paper".
8. SPO:
    - Redesign SPO driver to accept input from a text <input> element instead of capturing keystrokes directly from the window or "paper" <iframe>. This was done to allow input from tablet and mobile devices that will not pop up a keyboard unless an input-like element has the focus.
    - Implement Unicode Algol Glyphs support on output.
    - Intelligently resize "paper" area when SPO window is resized.
    - Accept "_" as a substitute for "~" as end-of-message on input.
9. Card Punch:
    - Implement Unicode Algol Glyphs support on output.
    - Implement stacker-full annunciators in UI.
10. Card Reader:
    - Implement Unicode Algol Glyphs support on input.
    - Accept "_" as a substitute for "~" on input.
11. Disk:
    - Adapt B5500DiskUnit driver to new configuration mechanism.
    - Implement support for Model-IB (slow) disk and non-DFX disk storage configurations; support up to 20 EUs.
    - Implement check for DKA readiness in cc.load() if not doing card-load-select.
12. Datacom:
    - Rework datacom driver keystroke handling for compatibility with Google Chrome.
    - Correct typo (line 437) in B5500DatacomUnit reported by Peter Grootswagers (issue #28).
13. Magnetic Tape:    
    - Implement more granular tape reel animation in B5500MagTapeDrive.
    - Open the tape loader window on top of its device window.
14. Correct color of NOT READY lamps in peripheral device UIs; convert <progress> bars to <meter> elements.
15. More intelligently resize peripheral UI controls when their window is resized.
16. Implement lamp test during power-on in B5500Console.
17. Illuminate NOT READY light on Console at power-on if certain minimum configuration requirements are not met.
18. Set all HTML <meta> Content-Type character sets to UTF-8 (were ISO-8859-1); correct problem with FireFox requiring the character set to be specified within the first 1024 characters of an HTML file.
19. Clean up and refactor CSS style sheets
20. Split Javascript code out from B5500Console.html to new B5500Console.js.
21. Refactor common UI routines into webUI\B5500Util.js.
22. Move images and fonts to new webUI/resources directory; rearrange files in webUI/tool, tools, tests, source directories of repo.
23. Make significant wiki updates to document the new features in this release.
This commit is contained in:
paul.kimpel@digm.com
2014-09-29 15:28:56 +00:00
parent 9016cc93fb
commit 8b0d19deba
117 changed files with 7349 additions and 2850 deletions

View File

@@ -0,0 +1,24 @@
BEGIN 00100100
FILE DISK(MAXRECSIZE=90, BLOCKSIZE=1800, FRAMESIZE=8, 00100200
TITLE="DATA/MISC/B5500/POWTEN ON DISK."); 00100300120807PK
INTEGER 00100400
I; 00100500
DOUBLE 00100600
POW; 00100700
00100800
POW:= 1.0; 00100850
FOR I:= 0 STEP 1 WHILE I<69 DO 00100900
BEGIN 00101000
WRITE(DISK, <I3," OCT",K16,",">, I, REAL(POW)); 00101100120807PK
POW:= * MUX 10.0; 00101200
END FOR I; 00101300120807PK
00101400120807PK
POW:= 1.0; 00101500120807PK
FOR I:= -1 STEP -1 UNTIL -47 DO 00101600120807PK
BEGIN 00101700120807PK
POW:= */10.0; 00101800120807PK
WRITE (DISK, <I3," OCT",K16,",">, I, REAL(POW)); 00101900120807PK
END FOR I; 00102000120807PK
00190000
CLOSE(DISK, CRUNCH); 00190100
END. 00999900

View File

@@ -0,0 +1,184 @@
$ SET LINEINFO 00000100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001000
%% SRCE/MISC/B5500/BIC2EBCDIC %%00001100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001200
% CONVERTS 6-BIT BCL-CODED BINARY DATA FILES TO 8-BIT EBCDIC-CODED 00001300
% FILES, SPECIFICALLY B5500 CODE FILES GENERATED BY ESPOLXEM. 00001400
% BCL INPUT FILE IS "DISK" AND OUTPUT EBCDIC FILE IS "TEXT". 00001500
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00010000
% 2013-03-10 P.KIMPEL 00010010
% ORIGINAL VERSION, CLONED PARTLY FROM ESPOLXEM SOURCE. 00010020
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00099900
00100000
BEGIN 00100100
00110000
INTEGER 00110100
BICRECSIZE, 00110200
BICRECWORDS, 00110300
BICBLOCKFACTOR, 00110400
TEXTRECSIZE, 00110500
TEXTRECWORDS; 00110600
00130000
ARRAY 00130100
BIC[0:29], 00130200
EBC[0:39]; 00130300
00160000
FILE 00160100
DISK(KIND=DISK, DEPENDENTSPECS, FILEUSE=IN), 00160200
TEXT(KIND=DISK, MAXRECSIZE=240, BLOCKSIZE=3600, FRAMESIZE=8, 00160300
AREAS=10, AREASIZE=1008, FLEXIBLE, FILEKIND=DATA); 00160400
00180000
TRANSLATETABLE 00180100
BICTOEBCDIC ( % 00180200
EBCDIC TO "?", 00180300
48"00" TO "0", % DIGIT-ZERO 00180400
48"01" TO "1", 00180500
48"02" TO "2", 00180600
48"03" TO "3", 00180700
48"04" TO "4", 00180800
48"05" TO "5", 00180900
48"06" TO "6", 00181000
48"07" TO "7", 00181100
48"08" TO "8", 00181200
48"09" TO "9", 00181300
48"0A" TO "#", 00181400
48"0B" TO "@", 00181500
48"0C" TO "?", 00181600
48"0D" TO ":", 00181700
48"0E" TO ">", 00181800
48"0F" TO "}", % GEQ 00181900
48"10" TO "+", 00182000
48"11" TO "A", 00182100
48"12" TO "B", 00182200
48"13" TO "C", 00182300
48"14" TO "D", 00182400
48"15" TO "E", 00182500
48"16" TO "F", 00182600
48"17" TO "G", 00182700
48"18" TO "H", 00182800
48"19" TO "I", 00182900
48"1A" TO ".", 00183000
48"1B" TO "[", 00183100
48"1C" TO "&", 00183200
48"1D" TO "(", 00183300
48"1E" TO "<", 00183400
48"1F" TO "~", % LEFT-ARROW 00183500
48"20" TO "|", % TIMES 00183600
48"21" TO "J", 00183700
48"22" TO "K", 00183800
48"23" TO "L", 00183900
48"24" TO "M", 00184000
48"25" TO "N", 00184100
48"26" TO "O", % LETTER-O 00184200
48"27" TO "P", 00184300
48"28" TO "Q", 00184400
48"29" TO "R", 00184500
48"2A" TO "$", 00184600
48"2B" TO "*", 00184700
48"2C" TO "-", 00184800
48"2D" TO ")", 00184900
48"2E" TO ";", 00185000
48"2F" TO "{", % LEQ 00185100
48"30" TO " ", % BLANK 00185200
48"31" TO "/", 00185300
48"32" TO "S", 00185400
48"33" TO "T", 00185500
48"34" TO "U", 00185600
48"35" TO "V", 00185700
48"36" TO "W", 00185800
48"37" TO "X", 00185900
48"38" TO "Y", 00186000
48"39" TO "Z", 00186100
48"3A" TO ",", 00186200
48"3B" TO "%", 00186300
48"3C" TO "!", % NEQ 00186400
48"3D" TO "=", 00186500
48"3E" TO "]", 00186600
48"3F" TO """); % QUOTE 00186700
00300000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00300100
PROCEDURE UNPACKBICTOEBCDIC(S, SX, D, DX, N); 00300200
VALUE SX, DX, N; 00300300
ARRAY S, D[0]; 00300400
REAL SX, DX, N; 00300500
BEGIN COMMENT 00300600
UNPACKS 6-BIT BIC CHARACTERS TO 8-BIT EBCDIC CHARACTERS FROM 00300700
ARRAY S TO ARRAY D. SX IS THE 6-BIT CHARACTER OFFSET INTO S AND 00300800
DX IS THE 8-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 00300900
CHARACTERS TO UNPACK. UNPACKING PROCEEDS IN A REVERSE DIRECTION 00301000
SO THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 00301100
; 00301200
REAL 00301300
NC, % NR CHARS LEFT TO UNPACK 00301400
SA, % SOURCE ACCUMULATOR WORD, 00301500
SB, % SOURCE BIT NBR 00301600
SW, % SOURCE WORD INDEX 00301700
DA, % DESTINATION ACCUMULATOR WORD 00301800
DB, % DESTINATION BIT NBR 00301900
DW; % DESTINATION WORD INDEX 00302000
00302100
SW:= (SX+N-1) DIV 8; 00302200
SB:= 47-((SX+N-1) MOD 8)*6; 00302300
DW:= (DX+N-1) DIV 6; 00302400
DB:= 47-((DX+N-1) MOD 6)*8; 00302500
SA:= S[SW]; 00302600
DA:= D[DW]; 00302700
NC:= N; 00302800
WHILE NC > 0 DO 00302900
BEGIN 00303000
DA:= * & (SA.[SB:6])[DB:8]; 00303100
NC:= *-1; 00303200
IF NC > 0 THEN 00303300
BEGIN 00303400
IF SB < 47 THEN 00303500
SB:= *+6 00303600
ELSE 00303700
BEGIN 00303800
SB:= 5; 00303900
SA:= S[SW:= *-1]; 00304000
END; 00304100
00304200
IF DB < 47 THEN 00304300
DB:= *+8 00304400
ELSE 00304500
BEGIN 00304600
D[DW]:= DA; 00304700
DB:= 7; 00304800
DA:= D[DW:= *-1]; 00304900
END; 00305000
END; 00305100
END WHILE; 00305200
00305300
D[DW]:= DA; 00305400
REPLACE POINTER(D[DX DIV 6],8)+(DX MOD 6) BY 00305500
POINTER(D[DX DIV 6],8)+(DX MOD 6) FOR N WITH BICTOEBCDIC; 00305600
END UNPACKBICTOEBCDIC; 00305700
00900000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00900100
%% OUTER BLOCK 00900200
00900300
OPEN(DISK); 00900400
BICRECSIZE:= DISK.MAXRECSIZE; 00900500
BICBLOCKFACTOR:= DISK.BLOCKSIZE DIV BICRECSIZE; 00900600
BICRECWORDS:= (DISK.FRAMESIZE*BICRECSIZE + 47) DIV 48; 00900700
IF SIZE(BIC) < BICRECWORDS THEN 00900800
RESIZE(BIC, BICRECWORDS); 00900900
00901000
TEXTRECSIZE:= BICRECWORDS*8; 00901100
TEXTRECWORDS:= (TEXTRECSIZE + 5) DIV 6; 00901200
TEXT.MAXRECSIZE:= TEXTRECSIZE; 00901300
TEXT.BLOCKSIZE:= TEXTRECSIZE*BICBLOCKFACTOR; 00901400
TEXT.AREASIZE:= (BICBLOCKFACTOR+999) DIV BICBLOCKFACTOR; 00901500
IF SIZE(EBC) < TEXTRECWORDS THEN 00901600
RESIZE(EBC, TEXTRECWORDS); 00901700
00901800
WHILE NOT READ(DISK, BICRECSIZE, BIC) DO 00901900
BEGIN 00902000
UNPACKBICTOEBCDIC(BIC, 0, EBC, 0, TEXTRECSIZE); 00902100
WRITE(TEXT, TEXTRECSIZE, EBC); 00902200
END READ SOURCE; 00908800
00908900
CLOSE(TEXT, CRUNCH); 00909000
CLOSE(DISK); 00909100
00999800
END. 00999900

View File

@@ -0,0 +1,209 @@
$ 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

View File

@@ -0,0 +1,116 @@
-47 OCT0000000000000000,
-46 OCT1771110463422054,
-45 OCT1761332600326467,
-44 OCT1751621340414205,
-43 OCT1742165630517247,
-42 OCT1732623176643120,
-41 OCT1723370036413744,
-40 OCT1714266046116735,
-39 OCT1705343457542525,
-38 OCT1676634373473252,
-37 OCT1651040347241213,
-36 OCT1641250441111455,
-35 OCT1631522551333770,
-34 OCT1622047303622767,
-33 OCT1612461164567564,
-32 OCT1603175421725521,
-31 OCT1574034726313046,
-30 OCT1565044113775657,
-29 OCT1556255136775233,
-28 OCT1547730366574502,
-27 OCT1521171646433362,
-26 OCT1511430220142257,
-25 OCT1501736264172732,
-24 OCT1472325741231521,
-23 OCT1463013331500045,
-22 OCT1453616220020057,
-21 OCT1444561664024072,
-20 OCT1435716241031111,
-19 OCT1427301711237333,
-18 OCT1401116227350722,
-17 OCT1371341675243107,
-16 OCT1361632254513731,
-15 OCT1352200727636717,
-14 OCT1342641115606502,
-13 OCT1333411341150223,
-12 OCT1324313631402270,
-11 OCT1315376577702746,
-10 OCT1306676337663537,
-9 OCT1261045602764047,
-8 OCT1251257143561061,
-7 OCT1241532774515275,
-6 OCT1232061573640554,
-5 OCT1222476132610707,
-4 OCT1213215561353071,
-3 OCT1204061115645707,
-2 OCT1175075341217270,
-1 OCT1166314631463146,
0 OCT1141000000000000,
1 OCT1131200000000000,
2 OCT1121440000000000,
3 OCT1111750000000000,
4 OCT1102342000000000,
5 OCT1073032400000000,
6 OCT1063641100000000,
7 OCT1054611320000000,
8 OCT1045753604000000,
9 OCT1037346545000000,
10 OCT1011124027620000,
11 OCT0001351035564000,
12 OCT0011643245121000,
13 OCT0022214116345200,
14 OCT0032657142036440,
15 OCT0043432772446150,
16 OCT0054341571157602,
17 OCT0065432127413543,
18 OCT0076740555316473,
19 OCT0111053071060221,
20 OCT0121265707274266,
21 OCT0131543271153343,
22 OCT0142074147406234,
23 OCT0152513201307703,
24 OCT0163236041571663,
25 OCT0174105452130240,
26 OCT0205126764556310,
27 OCT0216354561711772,
28 OCT0231004771627437,
29 OCT0241206170175347,
30 OCT0251447626234641,
31 OCT0261761573704011,
32 OCT0272356132665013,
33 OCT0303051561442216,
34 OCT0313664115752661,
35 OCT0324641141345435,
36 OCT0336011371636745,
37 OCT0347413670206536,
38 OCT0361131664625027,
39 OCT0371360241772234,
40 OCT0401654312370703,
41 OCT0412227375067064,
42 OCT0422675274304701,
43 OCT0433454553366062,
44 OCT0444367706263476,
45 OCT0455465667740415,
46 OCT0467003245730521,
47 OCT0501060411731665,
48 OCT0511274514320242,
49 OCT0521553637404312,
50 OCT0532106607305375,
51 OCT0542530351166674,
52 OCT0553256443424453,
53 OCT0564132154331566,
54 OCT0575160607420123,
55 OCT0606414751324150,
56 OCT0621012014361120,
57 OCT0631214417455344,
58 OCT0641457523370635,
59 OCT0651773450267005,
60 OCT0662372362344606,
61 OCT0673071057035747,
62 OCT0703707272645341,
63 OCT0714671151416632,
64 OCT0726047403722400,
65 OCT0737461304707100,
66 OCT0751137556607072,
67 OCT0761367512350710,
68 OCT0771665435043073,

View File

@@ -0,0 +1,262 @@
$ SET LINEINFO 00000100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001000
%% SRCE/MISC/B5500/INCL2OMIT %%00001100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00001200
% CONVERTS $INCLUDE AND $OMIT PRAGMAS IN THE B5500 MARK XIII MCP 00001300
% SOURCE TO THE NEWER $OMIT SCHEME USED IN LATER RELEASES. READS THE 00001400
% MCP SOURCE FROM INTNAME "SOURCE" AND WRITES CHANGED LINES TO 00001500
% INTNAME "PATCH". 00001600
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00010000
% 2013-03-08 P.KIMPEL 00010010
% ORIGINAL VERSION. 00010020
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00099900
00100000
BEGIN 00100100
DEFINE 00100200
ALL1 = REAL(NOT FALSE) #; 00100300
00100400
INTEGER 00100500
LASTSEQNR, 00100600
LEFT, 00100700
OMITDEPTH, 00100750
OMITTYPE, 00100800
POPCOUNT, 00100900
POPSEQNR, 00101000
STOPSEQNR, 00101100
THISSEQNR, 00101200
TOKLEFT, 00101300
TOKLENGTH, 00101400
TOKOFFSET, 00101500
X; 00101600
00101700
POINTER 00101800
P; 00101900
00102000
ARRAY 00102100
POPLIST[0:15]; 00102200
00102300
EBCDIC ARRAY 00102400
PREC[0:89], 00102500
REC[0:89], 00102600
TOKEN[0:89]; 00102700
00102800
FILE 00102900
SOURCE(KIND=DISK, DEPENDENTSPECS, FILEUSE=IN, 00103000
TITLE="SRCE/MISC/B5500/MARKXIII/MCP."), 00103100
PATCH(KIND=DISK, MAXRECSIZE=15, BLOCKSIZE=420, FRAMESIZE=48, 00103200
AREAS=10, AREASIZE=1008, FLEXIBLE, FILEKIND=ESPOLSYMBOL, 00103300
TITLE="PATCH/MISC/B5500/MARKXIII/MCP/INCL2OMIT."); 00103350
00103400
TRUTHSET 00103500
NUMBERS ("0123456789"), 00103600
ALPHANUM (NUMBERS OR "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 00103700
00300000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00300100
INTEGER PROCEDURE SCANNER; 00300200
BEGIN 00300300
INTEGER 00300400
LEFT; 00300500
POINTER 00300600
P; 00300700
00300800
SCAN P:REC[TOKOFFSET] FOR LEFT:TOKLEFT WHILE=" "; 00300900
IF LEFT = 0 THEN 00301000
BEGIN 00301100
TOKLENGTH:= TOKLEFT:= 0; 00301200
REPLACE TOKEN BY 48"00"; 00301300
END 00301400
ELSE 00301500
BEGIN 00301600
TOKOFFSET:= *+TOKLEFT-LEFT; 00301700
IF P IN NUMBERS THEN 00301800
REPLACE TOKEN[1] BY P FOR TOKLEFT:LEFT WHILE IN NUMBERS 00301900
ELSE IF P IN ALPHANUM THEN 00302000
REPLACE TOKEN[1] BY P FOR TOKLEFT:LEFT WHILE IN ALPHANUM 00302100
ELSE 00302200
BEGIN 00302300
REPLACE TOKEN[1] BY P FOR 1; 00302400
TOKLEFT:= LEFT-1; 00302500
END; 00302600
00302700
TOKLENGTH:= LEFT-TOKLEFT; 00302800
TOKOFFSET:= *+TOKLENGTH; 00302900
REPLACE TOKEN BY TOKLENGTH.[7:48] FOR 1; 00303000
END; 00303100
00303200
SCANNER:= TOKLENGTH; 00303300
END SCANNER; 00303400
00303500
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00303600
INTEGER PROCEDURE INSERTPOP(STOPSEQNR); 00303700
VALUE STOPSEQNR; 00303800
INTEGER STOPSEQNR; 00303900
BEGIN 00304000
INTEGER 00304100
X; 00304200
00304300
X:= POPLIST[0]; 00304400
IF X > 0 THEN 00304500
X:= MASKSEARCH(0, ALL1, POPLIST[X]); 00304600
00304700
IF X < 1 THEN 00304800
BEGIN 00304850
X:= POPLIST[0]:= *+1; 00304900
IF SIZE(POPLIST) <= X THEN 00305000
RESIZE(POPLIST, X+16, RETAIN); 00305100
END; 00305200
00305300
POPLIST[X]:= STOPSEQNR; 00305400
OMITDEPTH:= *+1; 00305450
INSERTPOP:= X; 00305500
END INSERTPOP; 00305600
00305700
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00305800
INTEGER PROCEDURE REMOVEPOP(STOPSEQNR); 00305900
VALUE STOPSEQNR; 00306000
INTEGER STOPSEQNR; 00306100
BEGIN 00306200
INTEGER 00306300
X; 00306400
00306500
X:= POPLIST[0]; 00306600
WHILE X > 0 DO 00306700
BEGIN 00306800
IF POPLIST[X] > STOPSEQNR THEN 00306900
X:= *-1 00307000
ELSE 00307100
BEGIN 00307200
REMOVEPOP:= POPLIST[X]; 00307300
POPLIST[X]:= 0; 00307400
IF POPLIST[0] = X THEN 00307500
POPLIST[0]:= *-1; 00307600
00307700
X:= 0; % KILL THE LOOP 00307800
IF OMITDEPTH > 0 THEN 00307820
OMITDEPTH:= *-1; 00307840
END; 00307900
END; 00308000
END REMOVEPOP; 00308100
00900000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00900100
%% OUTER BLOCK 00900200
00900300
REPLACE REC BY " " FOR 72, "0" FOR 8, " " FOR 10; 00900500
REPLACE REC BY "$# MARKXIII/MCP INCL2OMIT"; 00900600
WRITE(PATCH, 15, REC); 00900700
00900800
WHILE NOT READ(SOURCE, 15, REC) DO 00900900
BEGIN 00901000
TOKOFFSET:= 0; 00901100
TOKLEFT:= 72; 00901200
LASTSEQNR:= THISSEQNR; 00901300
THISSEQNR:= INTEGER(REC[72], 8); 00901400
IF THISSEQNR <= LASTSEQNR THEN 00901500
DISPLAY("SEQUENCE ERROR " !! STRING(LASTSEQNR,8) !! " : " !! 00901600
STRING(THISSEQNR,8)); 00901700
00901800
POPCOUNT:= 0; 00901900
POPSEQNR:= REMOVEPOP(THISSEQNR); 00901950
WHILE POPSEQNR > 0 DO 00902000
BEGIN 00902100
IF POPSEQNR >= THISSEQNR THEN 00902200
BEGIN 00902250
POPCOUNT:= *+1; 00902300
POPSEQNR:= REMOVEPOP(THISSEQNR); 00902320
END 00902340
ELSE 00902400
BEGIN 00902500
REPLACE PREC BY " " FOR 72, POPSEQNR FOR 8 DIGITS, " " FOR 10; 00902600
REPLACE P:PREC BY " $POP OMIT"; 00902700
LASTSEQNR:= POPSEQNR; 00902710
DO BEGIN 00902720
POPSEQNR:= REMOVEPOP(THISSEQNR); 00902730
IF POPSEQNR = LASTSEQNR THEN 00902740
REPLACE P:P BY " OMIT"; 00902750
END 00902760
UNTIL POPSEQNR ^= LASTSEQNR; 00902770
WRITE(PATCH, 15, PREC); 00902800
END; 00903000
END WHILE; 00903100
00903200
SCANNER; 00903300
IF TOKEN ^= 48"01""$" THEN 00903400
BEGIN 00903402
IF POPCOUNT > 0 THEN 00903405
BEGIN 00903410
REPLACE PREC BY " " FOR 72, THISSEQNR-1 FOR 8 DIGITS, " " FOR 10; 00903415
REPLACE P:PREC BY " $POP "; 00903420
WHILE POPCOUNT > 0 DO 00903425
BEGIN 00903430
REPLACE P:P BY "OMIT "; 00903435
POPCOUNT:= *-1; 00903440
END WHILE; 00903445
WRITE(PATCH, 15, PREC); 00903450
END; 00903455
END 00903456
ELSE 00903460
BEGIN 00903500
SCANNER; 00903600
OMITTYPE:= (IF TOKEN=48"07""INCLUDE" THEN 1 ELSE 00903700
IF TOKEN=48"04""OMIT" THEN 2 ELSE 0); 00903800
IF OMITTYPE > 0 THEN 00903900
BEGIN 00904000
SCANNER; 00904100
IF TOKEN[1] IN NUMBERS FOR TOKLENGTH THEN 00904200
BEGIN 00904300
STOPSEQNR:= INTEGER(TOKEN[1], TOKLENGTH); 00904400
SCANNER; 00904500
IF TOKEN = 48"01""," THEN 00904600
SCANNER; 00904700
00904800
IF TOKEN = 48"02""IF" THEN 00904900
BEGIN 00905000
REPLACE PREC BY " " FOR 90; 00905100
REPLACE P:PREC BY " $"; 00905200
IF POPCOUNT > 0 THEN 00905300
BEGIN 00905400
REPLACE P:P BY "POP "; 00905500
WHILE POPCOUNT > 0 DO 00905600
BEGIN 00905700
REPLACE P:P BY "OMIT "; 00905800
POPCOUNT:= *-1; 00905900
END WHILE; 00906000
END; 00906100
00906200
INSERTPOP(STOPSEQNR); 00906250
REPLACE P:P BY "SET OMIT="; 00906300
IF OMITTYPE = 1 THEN 00906400
REPLACE P:P BY "NOT"; 00906500
00906600
REPLACE P:P BY "("; 00906700
SCANNER; 00906800
DO BEGIN 00906900
REPLACE P:P BY TOKEN[1] FOR TOKLENGTH, " "; 00907000
SCANNER; 00907100
END 00907200
UNTIL TOKLENGTH = 0 OR TOKEN=48"01"";"; 00907300
IF TOKEN = 48"01"";" THEN 00907320
SCANNER; 00907340
00907360
REPLACE P:P-1 BY ") "; 00907400
IF OMITDEPTH > 1 THEN 00907420
REPLACE P:P BY "OR OMIT "; 00907440
00907450
WHILE TOKLENGTH > 0 DO 00907500
BEGIN 00907600
REPLACE P:P BY TOKEN[1] FOR TOKLENGTH, " "; 00907700
SCANNER; 00907800
END WHILE; 00907900
00908000
REPLACE PREC[72] BY THISSEQNR FOR 8 DIGITS; 00908100
WRITE(PATCH, 15, PREC); 00908200
END; 00908300
00908400
END; 00908500
END; 00908600
END; 00908700
END READ SOURCE; 00908800
00908900
CLOSE(PATCH, CRUNCH); 00909000
CLOSE(SOURCE); 00909100
00999800
END. 00999900

View File

@@ -0,0 +1,7 @@
E MISC/B5500/NEATUP55 ("SRCE/MISC/B5500/ESPOLXEM MAKE SRCE/MISC/B5500/ESPOLNEAT: 00000100
BEGINOFFSET 2 DECINDENT 2 DEFINEINDENT 18 INDENT 2 INDENTELSEIF SET LOCKCOMMENTS 00000200
SET MARGIN 0 NEATUPSEQ 5000+5000 PROCINDENT 2") ; FILE INPUT(DEPENDENTSPECS, TI 00000300
TLE=SRCE/MISC/B5500/ESPOLXEM); FILE OUTPUT(FILEKIND=ALGOLSYMBOL) 00000400
#RUNNING 6173 00000500
#6173 PK501 (PAUL)SRCE/MISC/B5500/ESPOLNEAT REPLACED ON OPS 00000600
#ET=5.4 PT=4.8 IO=0.4 00000700

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,198 @@
BEGIN 00000100120323PK
INTEGER 00000200120323PK
W, 00000300120323PK
X; 00000400120323PK
FILE 00000500120323PK
DISK(KIND=DISK, MAXRECSIZE=90, BLOCKSIZE=1800, FRAMESIZE=8, 00000600120323PK
AREAS=1, AREASIZE=1000, FLEXIBLE, 00000700120323PK
TITLE="DATA/MISC/B5500/NEATUPINFO."); 00000750120323PK
00000800120323PK
EBCDIC VALUE ARRAY LEXICONTEXT 0000090081/10/14.1
("TRANSLATETABLELOCKCOMMENTSLEFTCOMMENTSINDENTTHENIFINDE", 0000100081/10/14.1
"NTELSEIFDEFINEINDENTBEGINOFFSETELSEOFFSETLINELENGTHONE", 0000110081/10/14.1
"PERLINEATUPLISTPROCINDENTNEATUPSEQDECINDENTREFERENCEPR", 0000120081/10/14.1
"OCEDUREINTERRUPTINTERLOCKTRUTHSETDATABASECOMPLEXBOOLEA", 0000130081/10/14.1
"NPOINTERPICTUREINTEGERMONITORMESSAGELIBRARYLAYOUTFORMA", 0000140081/10/14.1
"TEXPORTNUMBERSTRINGSWITCHEBCDICDOUBLEDIRECTMARGINEVENT", 0000150081/10/14.1
"ASCIIARRAYRESETALPHAVALUEQUEUEFIELDLABELWHILEUNTILCASE", 0000160081/10/14.1
"THRUSTEPLONGFILEREALWORDOMITPAGEPOPBCLANDOWNHEXNOTNEQM", 0000170081/10/14.1
"ODLSSEQLENDIVLEQIMPGTRGEQVBY"); 0000180081/10/14.1
VALUE ARRAY COARSEINDEX( 0000190081/10/14.1
4"000000000003",4"000004000008",4"00000900000B",4"00000C000013", 0000200081/10/14.1
4"00001400001B",4"00001C00001F",4"000020000021",4"000022000022", 0000210081/10/14.1
4"00002300002B",4"000001000000",4"000001000000",4"00002C000036", 0000220081/10/14.1
4"00003700003A",4"00003B000040",4"000041000046",4"00004700004C", 0000230081/10/14.1
4"00004D00004D",4"00004E000050",4"000051000054",4"000055000058", 0000240081/10/14.1
4"000059000059",4"00005A00005A",4"00005B00005C",4"000001000000", 0000250081/10/14.1
4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0000260081/10/14.1
4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0000270081/10/14.1
4"000001000000",4"000001000000",4"000001000000"); 0000280081/10/14.1
VALUE ARRAY INFOARRAY( 0000290081/10/14.1
4"0C30841A0012",4"145030144000",4"14502E149000",4"14502C153000", 0000300081/10/14.1
4"0820881CA002",4"0C303219D000",4"14508604A002",4"1C70340D2000", 0000310081/10/14.1
4"2CB00204A001",4"10408A176002",4"1C70380CB000",4"1C7036012000", 0000320081/10/14.1
4"08208E12D002",4"0C308C1BA002",4"18603C03E000",4"18604012D000", 0000330081/10/14.1
4"18603E133000",4"20803A0C3000",4"24900408E001",4"30C00603E001", 0000340081/10/14.1
4"0C30941B5022",4"0C30921B8182",4"0C30961C7012",4"104090038182", 0000350081/10/14.1
4"14504413F000",4"186042127000",4"18604610F000",4"28A008055001", 0000360081/10/14.1
4"0C3098109042",4"10404A186000",4"145048162008",4"18604C109000", 0000370081/10/14.1
4"0C309C1C3022",4"0C309A1C6022",4"0C304E1A6000",4"0820A0026022", 0000380081/10/14.1
4"08209E030002",4"0C30A21C0012",4"18600A026001",4"1C70500E7000", 0000390081/10/14.1
4"2490540A9000",4"2490520B2008",4"30C00C032001",4"30C00E026001", 0000400081/10/14.1
4"0C30A41BD022",4"0C30A61B2022",4"104060182000",4"10405E00E008", 0000410081/10/14.1
4"10405C077000",4"145056167000",4"186058103008",4"1C705A0FC000", 0000420081/10/14.1
4"28A01405F001",4"30C01200E001",4"30C01001A001",4"0C30A81AF002", 0000430081/10/14.1
4"186016139001",4"1C70640EE000",4"1C70620F5004",4"0C30AC1A9012", 0000440081/10/14.1
4"0C30AA1AC022",4"186066115000",4"186018071001",4"24901C085001", 0000450081/10/14.1
4"28A01A071001",4"082068069000",4"0820B00F3012",4"0820AE04F002", 0000460081/10/14.1
4"0C306A1A3000",4"10401E192001",4"28A020069001",4"0C302419A001", 0000470081/10/14.1
4"104022196001",4"1C706C0E0000",4"1C706E0D9000",4"2490700A0000", 0000480081/10/14.1
4"28A02607B001",4"14507215D00C",4"10407418A000",4"14502814E001", 0000490081/10/14.1
4"249076097000",4"0C302A052001",4"1040B417E002",4"18607811B000", 0000500081/10/14.1
4"18607A121000",4"1040B202C102",4"1040B617A042",4"20807E0BB000", 0000510081/10/14.1
4"38E07C000000",4"1450B8171082",4"145080158000",4"10408218E008", 0000520081/10/14.1
4"1450BA16C042"); 0000530081/10/14.1
DEFINE 0000540081/10/14.1
ALPHAC = 22 #, 0000550081/10/14.1
ANDC = 66 #, 0000560081/10/14.1
ARRAYC = 23 #, 0000570081/10/14.1
ASCIIC = 24 #, 0000580081/10/14.1
BCLC = 25 #, 0000590081/10/14.1
BEGINC = 67 #, 0000600081/10/14.1
BEGINOFFSETC = 1 #, 0000610081/10/14.1
BOOLEANC = 26 #, 0000620081/10/14.1
BYC = 68 #, 0000630081/10/14.1
CASEC = 69 #, 0000640081/10/14.1
COMMENTC = 27 #, 0000650081/10/14.1
COMPLEXC = 28 #, 0000660081/10/14.1
DATABASEC = 29 #, 0000670081/10/14.1
DECINDENTC = 2 #, 0000680081/10/14.1
DEFINEC = 30 #, 0000690081/10/14.1
DEFINEINDENTC = 3 #, 0000700081/10/14.1
DIRECTC = 31 #, 0000710081/10/14.1
DIVC = 70 #, 0000720081/10/14.1
DOC = 71 #, 0000730081/10/14.1
DOUBLEC = 32 #, 0000740081/10/14.1
EBCDICC = 33 #, 0000750081/10/14.1
ELSEC = 72 #, 0000760081/10/14.1
ELSEOFFSETC = 4 #, 0000770081/10/14.1
ENDC = 73 #, 0000780081/10/14.1
EQLC = 74 #, 0000790081/10/14.1
EQVC = 75 #, 0000800081/10/14.1
EVENTC = 34 #, 0000810081/10/14.1
EXPORTC = 35 #, 0000820081/10/14.1
FIELDC = 36 #, 0000830081/10/14.1
FILEC = 37 #, 0000840081/10/14.1
FORC = 76 #, 0000850081/10/14.1
FORMATC = 38 #, 0000860081/10/14.1
GEQC = 77 #, 0000870081/10/14.1
GTRC = 78 #, 0000880081/10/14.1
HEXC = 39 #, 0000890081/10/14.1
IFC = 79 #, 0000900081/10/14.1
IMPC = 81 #, 0000910081/10/14.1
INC = 80 #, 0000920081/10/14.1
INDENTC = 5 #, 0000930081/10/14.1
INDENTELSEIFC = 6 #, 0000940081/10/14.1
INDENTTHENIFC = 7 #, 0000950081/10/14.1
INTEGERC = 40 #, 0000960081/10/14.1
INTERLOCKC = 41 #, 0000970081/10/14.1
INTERRUPTC = 42 #, 0000980081/10/14.1
LABELC = 43 #, 0000990081/10/14.1
LAYOUTC = 44 #, 0001000081/10/14.1
LEFTCOMMENTSC = 8 #, 0001010081/10/14.1
LEQC = 82 #, 0001020081/10/14.1
LIBRARYC = 45 #, 0001030081/10/14.1
LINELENGTHC = 10 #, 0001040081/10/14.1
LISTC = 46 #, 0001050081/10/14.1
LOCKC = 47 #, 0001060081/10/14.1
LOCKCOMMENTSC = 9 #, 0001070081/10/14.1
LONGC = 48 #, 0001080081/10/14.1
LSSC = 83 #, 0001090081/10/14.1
MARGINC = 11 #, 0001100081/10/14.1
MESSAGEC = 49 #, 0001110081/10/14.1
MODC = 84 #, 0001120081/10/14.1
MONITORC = 50 #, 0001130081/10/14.1
NEATUPC = 12 #, 0001140081/10/14.1
NEATUPLISTC = 13 #, 0001150081/10/14.1
NEATUPSEQC = 14 #, 0001160081/10/14.1
NEQC = 85 #, 0001170081/10/14.1
NOTC = 86 #, 0001180081/10/14.1
NUMBERC = 51 #, 0001190081/10/14.1
OFC = 87 #, 0001200081/10/14.1
OMITC = 15 #, 0001210081/10/14.1
ONC = 52 #, 0001220081/10/14.1
ONEPERLINEC = 16 #, 0001230081/10/14.1
ORC = 88 #, 0001240081/10/14.1
OWNC = 53 #, 0001250081/10/14.1
PAGEC = 17 #, 0001260081/10/14.1
PICTUREC = 54 #, 0001270081/10/14.1
POINTERC = 55 #, 0001280081/10/14.1
POPC = 18 #, 0001290081/10/14.1
PROCEDUREC = 56 #, 0001300081/10/14.1
PROCINDENTC = 19 #, 0001310081/10/14.1
QUEUEC = 57 #, 0001320081/10/14.1
REALC = 58 #, 0001330081/10/14.1
REFERENCEC = 59 #, 0001340081/10/14.1
RESETC = 20 #, 0001350081/10/14.1
SETC = 21 #, 0001360081/10/14.1
STEPC = 90 #, 0001370081/10/14.1
STRINGC = 60 #, 0001380081/10/14.1
SWITCHC = 61 #, 0001390081/10/14.1
THENC = 89 #, 0001400081/10/14.1
THRUC = 91 #, 0001410081/10/14.1
TRANSLATETABLEC = 62 #, 0001420081/10/14.1
TRUTHSETC = 63 #, 0001430081/10/14.1
UNTILC = 92 #, 0001440081/10/14.1
VALUEC = 64 #, 0001450081/10/14.1
WHILEC = 93 #, 0001460081/10/14.1
WORDC = 65 #; 0001470081/10/14.1
DEFINE 0001480081/10/14.1
ALGOL = 0 #, 0001490081/10/14.1
BOOLEANOP = 0 #, 0001500081/10/14.1
DCALGOL = 1 #, 0001510081/10/14.1
DECLARATOR = 0 #, 0001520081/10/14.1
ESPOL = 2 #, 0001530081/10/14.1
ESPOLORDCALGOL = 3 #, 0001540081/10/14.1
ITERATIONOP = 2 #, 0001550081/10/14.1
LINEENDER = 4 #, 0001560081/10/14.1
MYOPTION = 1 #, 0001570081/10/14.1
RELATIONOP = 1 #, 0001580081/10/14.1
RESWORD = 2 #, 0001590081/10/14.1
TERMINATOR = 3 #; 0001600081/10/14.1
DEFINE 0001610081/10/14.1
COARSEFINISHF = [23:24] # 0001620081/10/14.1
,COARSESTARTF = [47:24] # 0001630081/10/14.1
,INFODEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0001640081/10/14.1
,DEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0001650081/10/14.1
,INFOMINSIZE(INX) = INFOARRAY[INX].[47:6] # 0001660081/10/14.1
,MINSIZE(INX) = INFOARRAY[INX].[47:6] # 0001670081/10/14.1
,INFOLEXPTR(INX) = INFOARRAY[INX].[24:13] # 0001680081/10/14.1
,INFOTEXTSIZE(INX) = INFOARRAY[INX].[41:6] # 0001690081/10/14.1
,ITEMTYPE(INX) = INFOARRAY[INX].[1:2] # 0001700081/10/14.1
,DECLANGUAGE(INX) = INFOARRAY[INX].[3:2] # 0001710081/10/14.1
,RESWORDTYPE(INX,BIT) = BOOLEAN(INFOARRAY[INX].[4+BIT:1]) # 0001720081/10/14.1
,ITEMKEY(INX) = INFOARRAY[INX].[35:11] # 0001730081/10/14.1
,INFOENTRYSIZE = 1 #; 0001740081/10/14.1
DEFINE HASH(R,PTR) = 0001750081/10/14.1
(R:=(R:=REAL(PTR,1)).[3:4]-1-R.[5:1]+9*R.[5:2])#; 0001760081/10/14.1
0001770081/10/14.1
WRITE(DISK, <"COARSE INDEX:">); 00017800120323PK
FOR X:= 0 STEP 1 WHILE X < SIZE(COARSEINDEX) DO 00017900120323PK
BEGIN 00018000120323PK
W:= COARSEINDEX[X]; 00018100120323PK
WRITE(DISK, <I3,":",2I4>, X, W.COARSESTARTF, W.COARSEFINISHF); 00018200120323PK
END; 00018300120323PK
00018400120323PK
WRITE(DISK, </,"INFOARRAY:">); 00018450120323PK
FOR X:= 0 STEP 1 WHILE X < SIZE(INFOARRAY) DO 00018500120323PK
BEGIN 00018600120323PK
WRITE(DISK, <I3,":",4I3,I6,I5,2I3,X1,A*>, 00018700120323PK
X, HASH(W, LEXICONTEXT[INFOLEXPTR(X)]), 00018800120323PK
ITEMTYPE(X), DECLANGUAGE(X), INFOARRAY[X].[11:8], 00018900120323PK
DEFINEVALUE(X), INFOLEXPTR(X), 00019000120323PK
INFOMINSIZE(X), INFOTEXTSIZE(X), INFOTEXTSIZE(X), 00019100120323PK
LEXICONTEXT[INFOLEXPTR(X)]); 00019200120323PK
END; 00019300120323PK
00019320120323PK
CLOSE(DISK, CRUNCH); 00019340120323PK
END. 00019400120323PK

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff