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:
24
source/E-mode/utilities/B5500.POWTEN.alg_m
Normal file
24
source/E-mode/utilities/B5500.POWTEN.alg_m
Normal 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
|
||||
184
source/E-mode/utilities/BICTOEBCDIC.alg_m
Normal file
184
source/E-mode/utilities/BICTOEBCDIC.alg_m
Normal 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
|
||||
209
source/E-mode/utilities/CODEDUMP55.alg_m
Normal file
209
source/E-mode/utilities/CODEDUMP55.alg_m
Normal 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
|
||||
116
source/E-mode/utilities/EMODE.POWTEN.dat_m
Normal file
116
source/E-mode/utilities/EMODE.POWTEN.dat_m
Normal 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,
|
||||
262
source/E-mode/utilities/INCL2OMIT.alg_m
Normal file
262
source/E-mode/utilities/INCL2OMIT.alg_m
Normal 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
|
||||
7
source/E-mode/utilities/NEATUP-ESPOLXEM.wfl_m
Normal file
7
source/E-mode/utilities/NEATUP-ESPOLXEM.wfl_m
Normal 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
|
||||
2024
source/E-mode/utilities/NEATUP.alg_m
Normal file
2024
source/E-mode/utilities/NEATUP.alg_m
Normal file
File diff suppressed because it is too large
Load Diff
2102
source/E-mode/utilities/NEATUP55.alg_m
Normal file
2102
source/E-mode/utilities/NEATUP55.alg_m
Normal file
File diff suppressed because it is too large
Load Diff
198
source/E-mode/utilities/NEATUPINFO.alg_m
Normal file
198
source/E-mode/utilities/NEATUPINFO.alg_m
Normal 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
|
||||
20238
source/E-mode/xem/ALGOLXEM.alg_m
Normal file
20238
source/E-mode/xem/ALGOLXEM.alg_m
Normal file
File diff suppressed because it is too large
Load Diff
12176
source/E-mode/xem/ESPOLXEM.alg_m
Normal file
12176
source/E-mode/xem/ESPOLXEM.alg_m
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user