-
Notifications
You must be signed in to change notification settings - Fork 4
/
MCALGOL-L200009.alg
7891 lines (7891 loc) · 624 KB
/
MCALGOL-L200009.alg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
00000000
00000010
00000020
00000030
00000040
00000050
BEGIN 00000097
DEFINE LANGUAGELEVEL = 3#; 00000098
DEFINE DATE = "/16/68"&"01"[1:37:11]#; 00000099
COMMENT SUMMARY OF PATCHES................... 00000100
G01 GENERAL REPAIR AND IMPROVEMENTS %G0100000101
; 00000999
$ INCLUDE 00004001, IF ADVANCED; 00003000
$ SET INTERMEDIATE = TRUE; 00004000
INTEGER 00005000
ERRCT, % # OF SYNTAX ERRORS, "COMMON" ON STARTUP 00006000
RCCNT; % CURRENT INPUT IMAGE "LINE" 00007000
$ INCLUDE 00008001, IF INTERMEDIATE; 00007999
REAL CAT1,CAT2; % FIXED LOCATIONS FOR ISOCAT 00008000
$ INCLUDE 00015000, IF COUNTING; 00010000
ARRAY COUNTING[0:19]; 00011000
DEFINE ASCT = COUNTING[ 0] #, 00011200
BSCT = COUNTING[ 1] #, 00011400
SSCT = COUNTING[ 2] #, 00011600
ESCT = COUNTING[ 3] #, 00011800
STEPCT = COUNTING[ 4] #, 00012000
INDCT = COUNTING[ 5] #, 00012200
STKCT = COUNTING[ 6] #, 00012400
STKMX = COUNTING[ 7] #, 00012600
STKDP = COUNTING[ 8] #, 00012800
PSEU = COUNTING[ 9] #, 00013000
MSTCT = COUNTING[10] #, 00013200
PUTCT = COUNTING[11] #, 00013400
GETCT = COUNTING[12] #, 00013600
MOVCT = COUNTING[13] #, 00013800
PTRCT = COUNTING[14] #, 00014000
PTCHCT = COUNTING[15] #; 00014050
BOOLEAN 00100000
$ INCLUDE 00100101, IF DEBUGGING; 00100099
ACMLST, % LISTING OF ACM REQUESTED ("ACCUM") 00100100
ATOG, % ARITHMETIC EXPRESSION TOGGLE 00101000
BLOCK, % BLOCK LEVEL LISTING REQUESTED ("BLOCK") 00102000
BOOLEANEXTOG,% COMPILING A BOOLEAN EXPRESSION 00103000
CCDATATOG, % PROCESSING DATA SECTION OF CCHANDLER 00104000
CCLISTOG, % LISTING OF CONTROL DECK REQUESTED 00105000
CMT, % PROCESSING A COMMENT 00106000
COND, % COMPILING A CONDITIONAL STMT 00107000
CONVERTTOG, % INTERPRETIVE MSTRING CONVERSION REQUIRED 00108000
DBLINE, % DOUBLE SPACING REQUESTED ("DOUBLE") 00109000
$ INCLUDE 00110001, IF DEBUGGING; 00109999
DBUGN, % LISTING OF COMPILED CODE REQUESTED ("DEBUGN") 00110000
DEC, % PROCESSING A DECLARATION 00111000
DECOMTOG, % COMPILING A DECOMPOSITION STMT 00112000
DJTOG, % DECLARATION JUGGLING INTO OUTPUT STRING 00113000
DOLLARSIGN, % "$" IMAGE GOING INTO OUTPUT STRING 00114000
ENDT, % PROCESSING AN END COMMENT 00115000
EQVTOG, % NEED NAME OF A MACRO W/O INTERPRETATION 00116000
EX, % "EXPRESSION" BEING SCANNED BY ESCAN 00117000
FIELDTOG, % INTERPRETING AN MFIELD 00118000
FLUSHD, % LAST OUTPUT STRING IMAGE FLUSHED: POB IS CLEAN 00119000
FMTTOG, % FORMAT BEING PROCESSED...SCAN DIFFERENTLY 00120000
INDEXING, % INDEX REQUESTED ("INDEX") 00121000
INTERLIST, % OUTPUT STRING LISTING REQUESTED ("INTER") 00122000
ITOG, % INTEGER MSTRING BEING PROCESSED 00123000
LENGTHTOG, % INTERPRETING PARTIAL MSTRING 00124000
LUOK, % LASTUSED OK TO PRINT INPUT IMAGE 00125000
MACROTOG, % COMPILING A MACRO DECLARATION 00126000
$ INCLUDE 00127001, IF DEBUGGING; 00126999
MONITER, % INTERPRER MONITORING REQUESTED ("MONITOR") 00127000
NEWFILE, % NEW DISK FILE REQUESTED ("NEW DISK") 00128000
NEWRESEQ, % RESEQUENCING IN NEW DISK REQUESTED ("SEQ") 00129000
NOJUMP, % JUMP NOT ALLOWED FOLLOWING PREVIOUS SYLLABLE 00130000
NOREAD, % PREVENT SCANNING BEYOND END OF PSEUDOREADER 00131000
PACKLAST, % SETPACK CALLED LAST 00131100
PREV, % PREVIOUS ITEM PACKED WAS A SPECIAL CHR 00132000
PRINT, % LISTING OF INPUT REQUESTED ("LIST") 00133000
PROCTOG, % PROCESSING PROCEDURE DECLARATION 00134000
$ INCLUDE 00135001, IF DEBUGGING; 00134999
PSEUDOTOG, % MONITORING OF PSEUDORDRS REQUESTED("PSEUDO") 00135000
$ INCLUDE 00136001, IF INTERMEDIATE; 00135999
PWT, % PARTIAL WORD TOGGLE 00136000
RESCANTOG, % ALLOWS INTERPRETATION OF SCANNED ITEMS 00137000
SPCT, % PROCESSING PROCEDURE SPECIFICATIONS PART 00138000
$ INCLUDE 00139001, IF DEBUGGING; 00138999
SRT, % ADDRESS ASSIGNMENTS REQUESTED ("PRT") 00139000
STREAMTOG, % PROCESSING A STREAM PROCEDURE 00140000
SVT, % SAVE TOGGLE FOR LOCKING CODE FILE 00141000
TOGGLE, % INTERPRETATION SUCCESS TOGGLE FOR MACROS 00142000
TRACE, % ENTRY-EXIT OF MACROS REQUESTED ("TRACE") 00143000
UNPACK, % UNPACKED OUTPUT STRING REQUESTED ("UNPACK") 00144000
$ INCLUDE 00144101, IF ADVANCED; 00144099
USERTOG, % USER TOGGLE FOR CONDITIONAL MACROS 00144100
VOIDING, % PROCESSING A MCALGOL $ VOID CARD 00145000
WARNING, % WARNING MESSAGES HAVE OCCURRED IN PROGRAM 00146000
WARNTOG, % WARNING MESSAGES REQUESTED ("WARN") 00147000
WRITEIT; % A LISTING HAS BEEN PRODUCED 00148000
ALPHA CHAR, % LAST SCANNED SPECIAL CHARACTER 00149000
DATANAME, % TIME-DERIVED NAME FOR CC DATA FILES 00150000
F, % SUFFIX OF CODE FILE 00151000
LANG, % NAME OF LANGUAGE FILE 00152000
MF, % PREFIX OF CODE FILE 00153000
V, % LAST GET VALUE 00154000
W; % LAST ELBAT WORD FROM INDICT 00155000
INTEGER A, % GLOBAL TEMP 00156000
ALGOLDICT, % POINTER TO START OF ALGOL RESWDS IN DICT 00157000
BASE, % SUBTRACTION BASE FOR SCANCOUNT 00158000
BC, % BFR CHR POINTER 00159000
BECT, % SERIAL NUMBER FOR DECLARATION IDS 00160000
BELB, % BASE POSITION OF PHYSICAL ELBAT ARRAY 00161000
BFRLNG, % LEFTMOST CHR POS OF CURRENT PSEUDOREADER 00162000
BLOCKLEVEL, % CURRENT BLOCK NESTING DEPTH 00163000
BLVL, % CURRENT BEGIN NESTING DEPTH 00164000
BNO, % SERIAL NUMBER OF CURRENT "BEGIN" FOR MATCHING 00165000
BNOMAX, % NEXT BNO TO ASSIGN 00166000
BW, % BFR WORD POINTER 00167000
BWMAX, % RIGHTMOST CHR POS OF CURRENT PSEUDOREADER 00168000
CARDREC, % RECORD # OF CURRENT CARD IMAGE 00169000
CCC, % CONTROL CARD COUNTER (* CARDS) 00170000
CFIELD, % COMPILE-TIME FIELD WORD 00171000
CIN, % PSEUDOREADER STACKING INDEX 00172000
CODEREC, % SERIAL # OF CODE FILE IMAGE 00173000
CONP, % NEXT AVAILABLE WORD IN CONSTANT POOL 00174000
COUNT, % CHR COUNTER USED BY SCANNERS 00175000
DECP, % INDEX INTO DECL 00176000
DISKREC, % RECORD # OF CURRENT DISK IMAGE 00177000
DOLLARDICT, % POINTER TO MCALGOL DOLLAR CARD WORDS 00178000
DSTK, % NESTING DEPTH OF DISKSTACK 00178100
ELB, % ELBAT WORD OF CURRENTLY SCANNED ITEM 00179000
EP, % SYLLABLE OF MACRO CODE BEING INTERPRETED 00180000
FC, % FIRST CHR OF PARTIAL MSTRING(USUALLY 0) 00181000
GADR, % CURRENT INTERPRETING OPERATOR 00182000
GLAT, % NEXT GLOBAL ALPHA MSTRING ADDRESS 00183000
GLIT, % NEXT GLOBAL INTEGER MSTRING ADDRESS 00184000
GLOT, % NEXT GLOBAL MPOINTER ADDRESS 00185000
GOP, % CURRENT INTERPRETING OPERATOR 00186000
HM, % CHR COUNT (+3) OF ACCM 00187000
I, % GLOBAL TEMP 00188000
IACCM, % INTEGER ACCUMULATOR 00189000
IACCM1, % SIDE IACCM FOR RELATIONS 00190000
II, % GLOBAL TEMP FOR PSEUDOREADING 00191000
INDENT, % 3|RECURSION DEPTH OF MACROS FOR TRACING 00192000
INXR, % INDEX RECORD COUNTER 00193000
J, % GLOBAL TEMP 00194000
LACT, % NEXT LOCAL ALPHA MSTRING ADDRESS 00195000
LAD, % LAST ADINFO FIELD FROM INDICT 00196000
LASTDICT, % LAST ASSIGNED POSITION IN DICT 00197000
LASTUSED, % INPUT MEDIA SWITCH IN READACARD 00198000
LICT, % NEXT LOCAL INTEGER MSTRING ADDRESS 00199000
LIMT, % LENGTH OF LAST INTEGER MSTRING 00200000
LOCT, % NEXT LOCAL MPOINTER ADDRESS 00201000
LSTUDICT, % LAST ASSIGNED POISTION IN UDICT 00202000
MACRODICT, % POINTER TO MACRO RESWDS IN DICT 00203000
MACT, % RECURSION DEPTH OF MACROS 00204000
MADDR, % DICT ADDRESS OF CURRENT MACRO FOR TRACING 00205000
MCBL, % BLOCK LEVEL AT WHICH MACRO WAS DECLARED 00206000
MEL, % INDEX INTO TELBAT 00207000
ML, % CODE ADDRESS DURING MACRO COMPILING 00208000
MSTORP, % CURRENT ROWS IN MDECL AND MCODE 00209000
NEST, % PROCEDURE NESTING LEVEL INDEX 00210000
NEWINC, % SEQUENCE INCREMENT FOR NEWDISK FILE 00211000
NEWSEQ, % SEQUENCE # FOR NEWDISK FILE 00212000
NEXTDICT, % NEXT AVAILABLE DICT ENTRY LOCATION 00213000
$ INCLUDE 00214001, IF INTERMEDIATE; 00213999
NOWCODE, % CURRENT RECORD OF ISOCODE IN CODRAY 00214000
NWCT, % CHR POS IN DECL FOR PACKET 00215000
NXTCODE, % NEXT RECORD & REL-ADR FOR MFIELD CODE 00216000
NXTELB, % SERIAL # OF NEXT ELBAT WORD 00217000
NXTPTCHREC, % NEXT AVAILABLE RECORD IN BACKPATCHES 00218000
NXTPTCHX, % INDEX INTO PATCHSPACE 00219000
NXTUDICT, % NEXT AVAILABLE UDICT LOCATION 00220000
OHM, % CHR COUNT (+3) IN OA 00221000
OP, % CURRENT COMPILE TIME OPERATOR 00222000
OUTC, % CHR POS IN POB FOR CODE RECORD PACKING 00223000
OUTERLIMIT, % BEGIN NESTING LEVEL OF OUTPUT STRING 00224000
PANK, % INDEX INTO TANK 00225000
PL, % PARTIAL MFIELD LENGTH 00226000
PT, % INDEX INTO MCODE 00227000
SAVEA, % SAVED LAST MSTRING ADDRESS 00228000
SAVEML, % ML FOR LISTING 00229000
SAVEOP, % TEMP OP 00230000
% 00231000
SEQ, % CURRENT SEQUENCE # IN CODE FILE (STEP 100) 00232000
SSTK, % STATEMENT PATCH STACK INDEX 00233000
STMTSTKLVL, % OUTER BLOCK BEGIN NESTING LEVEL 00234000
STREAMDICT, % POINTER TO STREAM RESWDS IN DICT 00235000
TABLET, % THE "I" USED IN STEPI 00236000
TEMP, % NEED I SAY MORE 00237000
TFC, % TEMPORARY STORAGE FOR PARTIAL MFIELD FC 00238000
TNWCT, % OVERFLOW NWCT FOR PACKET 00239000
TOGGLECT, % COUNT OF TOGGLE SETTING OPERATIONS 00239200
TPANK, % TTANK INDEX 00240000
TYPE; % CLASS OF LAST ITEM FROM TABLE 00241000
REAL FIELD; % MFIELD DESCRIPTOR 00242000
00243000
DEFINE % ELBAT FIELDS 00300000
DIFF = [ 1: 8] #, % BACK TRACE LINK 00301000
BLKLVL = [ 9: 9] #, % BLOCK LEVEL 00302000
SUB = [18: 9] #, % SUBCLASS 00303000
CLASS = [27: 6] #, % CLASS 00304000
ADINFO = [33:15] #, % ADDITIONAL INFO 00305000
TODIFF = 1:40: 8#, 00306000
TOBLKLVL = 9:39: 9#, 00307000
TOSUB = 18:39: 9#, 00308000
TOCLASS = 27:42: 6#, 00309000
TOCLSUB = 18:33:15#, 00310000
CLUBCLUB = 18:18:15#, 00311000
TOADINFO = 33:33:15#, 00312000
% INTEGER MSTRING ADINFO FIELDS 00313000
OFFSET = [ 9: 9] #, % DICTIONARY DISPLACEMENT 00314000
REF = [18:15] #, % REFERENCE ADDRESS 00315000
LIM = [33:15] #, % SIZE LIMIT 00316000
TOOFFSET = 9:39: 9#, 00317000
OFFTOOFF = 3: 3:15#, 00318000
REFTOREF = 18:18:15#, 00318500
TOREF = 18:33:15#, 00319000
TOLIM = 33:33:15#, 00320000
% MACRO ADINFO FIELDS 00321000
MCIF = [ 2: 6] #, % CONDITIONAL INTERROGATION FLAG 00321900
MLICT = [ 8:10] #, % # LOCAL INTEGER MSTRINGS 00322000
MLACT = [18:10] #, % # LOCAL ALPHA MSTRINGS 00323000
MPOOL = [28:10] #, % SIZE OF CONSTANT POOL 00324000
MML = [38:10] #, % SIZE OF CODE STRING 00325000
MSMAP = [13:10] #, % SIZE OF SPACEMAP ENTRY 00326000
MLOCT = [23:10] #, % # LOCAL MPOINTERS 00327000
MPT = [33:15] #, % LOCATION OF CODE STRING 00328000
TOMCIF = 2:42: 6#, 00328900
TOMLICT = 8:38:10#, 00329000
TOMLACT = 18:38:10#, 00330000
TOMPOOL = 28:38:10#, 00331000
TOMML = 38:38:10#, 00332000
TOMSMAP = 13:38:10#, 00333000
TOMLOCT = 23:38:10#, 00334000
TOMPT = 33:33:15#, 00335000
% PSEUDOREADER FIELDS 00336000
SENDT = [ 4: 1] #, % END COMMENT TOGGLE 00337000
SRSC = [ 5: 1] #, % RESCANTOG 00338000
SLST = [ 6: 3] #, % LASTUSED 00339000
SMAX = [ 9:13] #, % BWMAX 00340000
SLNG = [22:13] #, % BFRLNG 00341000
SBC = [35: 3] #, % BC 00342000
SBW = [38:10] #, % BW 00343000
TOSENDT = 4:47: 1#, 00344000
TOSRSC = 5:47: 1#, 00345000
TOSLST = 6:45: 3#, 00346000
TOSMAX = 9:35:13#, 00347000
TOSLNG = 22:35:13#, 00348000
TOSBC = 35:45: 3#, 00349000
TOSBW = 38:38:10#, 00350000
% BLIST FIELDS FOR CUTBACK 00351000
BBLKL = [ 3:15] #, % BLOCK LEVEL 00352000
BNXTD = [18:15] #, % NEXTDICT 00353000
BBNO = [33:15] #, % DECLARATION BNO 00354000
TOBBLKL = 3:33:15#, 00355000
TOBNXTD = 18:33:15#, 00356000
TOBBNO = 33:33:15#, 00357000
% PATCH FIELDS 00358000
PNOTT = [ 1: 1] #, % NOT TOUCHED OR FOUND 00359000
PLINK = [ 2: 1] #, % PATCH LINK FLAG 00360000
PSEQN = [ 9:29] #, % SEQUENCE # OF LINK RECORD 00361000
PBASE = [38:10] #, % BASE RECORD IN PATCH FILE 00362000
PUSED = [ 3:15] #, % # RECORD USED 00363000
PSIZE = [18:15] #, % REQUESTED SIZE 00364000
PCODE = [33:15] #, % CODEREC OF LINK RECORD 00365000
PLVL = [18:15] #, % OUTERLIMIT OF PATCH 00366000
PLOC = [33:15] #, % LOCATION OF PATCH 00367000
TOPNOTT = 1:47: 1#, 00368000
TOPLINK = 2:47: 1#, 00369000
TOPSEQN = 9:19:29#, 00370000
TOPBASE = 38:38:10#, 00371000
TOPUSED = 3:33:15#, 00372000
TOPSIZE = 18:33:15#, 00373000
TOPCODE = 33:33:15#, 00374000
TOPLVL = 18:33:15#, 00375000
TOPLOC = 33:33:15#, 00376000
% SCAN RESTORATION FIELDS 00377000
RPANK = [ 8:10] #, % TANK POINTER 00378000
RT = [18:10] #, % T OF STEPI FAME 00379000
RNELB = [28:10] #, % NXTELB 00380000
RX = [38:10] #, % CURRENTLY UNUSED 00381000
TORPANK = 8:38:10#, 00382000
TORT = 18:38:10#, 00383000
TORNELB = 28:38:10#, 00384000
TORX = 38:38:10#, 00385000
% PARAMETRIC DEFINE FIELDS 00386000
PDC1 = [ 2: 2] #, % CONSTANT CLASS, PART 1 00387000
PDC2 = [ 4: 2] #, % " " " 2 00388000
PDP1 = [ 6: 6] #, % PARAMETER NO, " 1 00389000
PDP2 = [12: 6] #, % " " " 2 00390000
PDF1 = [18:15] #, % CONSTANT FIELD, " 1 00391000
PDF2 = [33:15] #, % " " " 2 00392000
TOPDC1 = 2:46: 2#, 00393000
TOPDC2 = 4:46: 2#, 00394000
TOPDP1 = 6:42: 6#, 00395000
TOPDP2 = 12:42: 6#, 00396000
TOPDF1 = 18:33:15#, 00397000
TOPDF2 = 33:33:15#, 00398000
% LOADSCAN FIELDS 00399000
LSLNK = [ 6: 6] #, % LINK TO NEXT ENTRY 00400000
LSCTR = [12: 6] #, % COUNTER FIELD 00401000
LSCMP = [12:36] #, % COMPARISON FIELD 00402000
LSBAK = [18:15] #, % BACK LINK TO LAST ENTRY 00403000
LSNXT = [33:15] #, % INDEX OF NEXT ENTRY 00404000
% OPERATOR TEST FIELDS 00405000
MOVM = [15: 1] #, % MOVE CHR INTO MSTRING 00406000
DBMN = [16: 1] #, % DEBUG USING MNEMON 00407000
DBA = [17: 1] #, % DEBUG IN ALPHA 00408000
SCMP = [20: 1] #, % STRING COMPARISON 00409000
MINT = [21: 1] #, % INTEGER OPERATOR 00410000
MCON = [22: 1] #, % MAY TAKE A CONSTANT 00411000
ZACM = [23: 1] #, % CLEAR ACCM 00412000
% MFIELD FIELDS 00413000
MFDG = [ 1: 1] #, % MFIELD DESIGNATOR IN LDFT 00414000
MFVN = [ 2: 1] #, % MFIELD VALUE IN NEXT LDFT WORD 00415000
MFINT = [ 3: 1] #, % INTEGER MFIELD 00416000
MFDCT = [ 4: 1] #, % DICT LIMIT PRESENT 00416050
MFLIM = [ 6:12] #, % ALPHA SIZE LIMIT 00416150
MFOFF = [18: 6] #, % OFFSET FOR DICTIONARY 00417000
MFBGN = [24:12] #, % START POSITION 00418000
MFLNG = [36:12] #, % LENGTH 00419000
CROW = [24:12] #, % CODE ROW 00420000
CRAD = [36:12] #, % CODE RELATIVE ADDRESS 00421000
TOMFDG = 1:47: 1#, 00422000
TOMFVN = 2:47: 1#, 00423000
TOMFINT = 3:47: 1#, 00424000
TOMFDCT = 4:47: 1#, 00424050
TOMFLIM = 6:36:12#, 00424150
TOMFOFF = 18:42: 6#, 00425000
TOMFBGN = 24:36:12#, 00426000
TOMFLNG = 36:36:12#, 00427000
TOCROW = 24:36:12#, 00428000
TOCRAD = 36:36:12#, 00429000
% USER DICTIONARY FIELDS 00430000
USIZ = [18: 9] #, % REQUESTED SIZE OF ENTRY 00431000
UXXX = [27: 6] #, % OPEN 00432000
UQUAL = [33:15] #, % QUALIFIER 00433000
UDCT = [ 2: 1] #, % DICTIONARY ADDRESS 00433050
TOUSIZ = 18:39: 9#, 00434000
TOUXXX = 27:42: 6#, 00435000
TOUQUAL = 33:33:15#, 00436000
TOUDCT = 2:47: 1#, 00436050
% CHARACTER FIELDS 00437000
C0 = [ 1: 5] #, TOC0 = 1:43: 5#, 00438000
C1 = [ 6: 6] #, TOC1 = 6:42: 6#, 00439000
C2 = [12: 6] #, TOC2 = 12:42: 6#, 00440000
C3 = [18: 6] #, TOC3 = 18:42: 6#, 00441000
C4 = [24: 6] #, TOC4 = 24:42: 6#, 00442000
C5 = [30: 6] #, TOC5 = 30:42: 6#, 00443000
C6 = [36: 6] #, TOC6 = 36:42: 6#, 00444000
C7 = [42: 6] #, TOC7 = 42:42: 6#, 00445000
C12 = [ 6:12] #, TOC12 = 6:36:12#, 00446000
C23 = [12:12] #, TOC23 = 12:36:12#, 00447000
C34 = [18:12] #, TOC34 = 18:36:12#, 00448000
% MISCELLANY 00449000
CTR = [ 1:17] #, % MSTRING COUNT FIELD 00450000
TOCTR = 1:31:17#, 00451000
IR = [33: 7] #, % INDEX ROW 00452000
IC = [40: 8] #, % INDEX COLUMN 00453000
XIR = [ 3: 7] #, % X-FIELD INDEX ROW 00454000
XIC = [10: 8] #, % X-FIELD INDEX COLUMN 00455000
XF = [ 3:15] #, % X-TRA FIELD 00456000
TOXF = 3:33:15#, 00457000
IRTOIR = 33:33: 7#, 00458000
WRD = [35:10] #, % WORD INDEX (DIV 8) 00459000
CHR = [45: 3] #, % CHR INDEX (MOD 8) 00460000
SADD = [33:15] #, % STREAM ADDRESS 00461000
SCHR = [30: 3] #, % STREAM CHR POS 00462000
TOWRD = 35:38:10#, 00463000
TOCHR = 45:45: 3#, 00464000
TOSADD = 33:33:15#, 00465000
TOSCHR = 30:45: 3#, 00466000
JADR = [37:11] #, % JUMPING ADDRESS 00467000
STA = [ 9: 9] #, % STATION FROM STATUS WORD 00468000
NEXT = [18:15] #, % NEXT BASE COUNT 00469000
CUR = [33:15] #, % CURRENT BASE COUNTER 00470000
TONEXT = 18:33:15#, 00471000
TOCUR = 33:33:15#, 00472000
D2 = [37:10] #, % DIV 2 00473000
D4 = [36:10] #, % DIV 4 00474000
D32 = [33:10] #, % DIV 32 00475000
D512 = [33: 6] #, % DIV 512 00476000
M4 = [46: 2] #, % MOD 4 00477000
M32 = [43: 5] #, % MOD 32 00478000
CFX8 = 30:33:15#; % C-FIELD | 8 00479000
00480000
DEFINE % MACRO ADDRESS STRUCTURES 00481000
LALFBAS = 0 #, 00482000
LINTBAS = 256 #, 00483000
LPTRBAS = 768 #, 00484000
GALFBAS = 1280 #, 00485000
GINTBAS = 1792 #, 00486000
GPTRBAS = 2816 #, 00487000
CONSBAS = 3840 #, 00488000
LALFMAX = 255 #, 00489000
LINTMAX = 767 #, 00490000
LPTRMAX = 1279 #, 00491000
GALFMAX = 1791 #, 00492000
GINTMAX = 2815 #, 00493000
GPTRMAX = 3839 #, 00494000
CONSMAX = 4095 #, 00495000
00496000
ELBMAX = 90 #, 00497000
TANKMAX = 180 #, 00498000
BFRMAX = 350 #, % SIZE OF BFR 00498100
IDMAX = 90 #, % MAX CHR IN SCANNED ITEM (NOT A STRING) 00499000
MSMAX = 1950 #, % MAX CHR IN MSTRING 00500000
CONVBAS = 1011 #, 00501000
CREV = 6 #, % REVERSE COMPARE 00502000
PATCHMAX= 1000 #, % MAX BACKPATCHES 00502050
PTCHMAX = 268 #, % MAX RESERVES | 2 00502100
MLMAX = 2043 #; % MAX CODE ADDRESS 00503000
00504000
DEFINE % MACRO OPERATORS 00505000
ONOPP = 00 #, % NO OPERATION 00506000
OOPSU = 01 #, % OPEN PSEUDOREADER 00507000
OCPSU = 02 #, % CLOSE PSEUDOREADER 00508000
OSEQL = 03 #, % STRING COMPARE EQUAL 00509000
OSNEQ = 04 #, % STRING COMPARE NOT EQUAL 00510000
OSLSS = 05 #, % STRING COMPARE LESS 00511000
OSLEQ = 06 #, % STRING COMPARE LESS THAN OR EQUAL 00512000
OSGTR = 07 #, % STRING COMPARE GREATER 00513000
OSGEQ = 08 #, % STRING COMPARE GREATER THAN OR EQUAL 00514000
OOPDC = 09 #, % MSTRING OPERAND CALL..CAT 00515000
OOPDS = 10 #, % MSTRING OPERAND CALL..SPACE 00516000
ONSTR = 11 #, % NON-DESTRUCTIVE MSTRING STORE 00517000
ODSTR = 12 #, % DESTRUCTIVE MSTRING STORE 00518000
OISTR = 13 #, % INTEGER STORE 00519000
OIOPC = 14 #, % INTEGER MSTRING OPERAND CALL 00520000
OADDI = 15 #, % ADD INTEGER MSTRING 00521000
OSUBI = 16 #, % SUBTRACT INTEGER MSTRING 00522000
OMULI = 17 #, % MULTIPLY INTEGER MSTRING 00523000
ODIVI = 18 #, % DIVIDE INTEGER MSTRING 00524000
OOP19 = 19 #, 00525000
OOP20 = 20 #, 00526000
OILIT = 21 #, % INTEGER LITERAL CALL 00527000
OADDL = 22 #, % ADD LITERAL 00528000
OSUBL = 23 #, % SUBTRACT LITERAL 00529000
OMULL = 24 #, % MULTIPLY LITERAL 00530000
ODIVL = 25 #, % DIVIDE LITERAL 00531000
OLT1C = 26 #, % 1-LIT..CAT 00532000
OLT2C = 27 #, % 2-LIT..CAT 00533000
OLT2S = 28 #, % 2-LIT..SPACE 00534000
OOP29 = 29 #, 00535000
OOP30 = 30 #, 00536000
OOP31 = 31 #, 00537000
OOP32 = 32 #, 00538000
OOP33 = 33 #, 00539000
OOP34 = 34 #, 00540000
OOP35 = 35 #, 00541000
OINPT = 36 #, % INPUT SEQUENCE 00542000
OOTPT = 37 #, % OUTPUT SEQUENCE 00543000
OERRO = 38 #, % ERROR, WARNING, NOTE SEQUENCE 00544000
OOP39 = 39 #, 00545000
OOP40 = 40 #, 00546000
OLDFT = 41 #, % LOAD FOR TEST 00547000
OSUNC = 42 #, % SCAN UNTIL..CAT 00548000
OSUNS = 43 #, % SCAN UNTIL..SPACE 00549000
OSTHC = 44 #, % SCAN THRU..CAT 00550000
OSTHS = 45 #, % SCAN THRU..SPACE 00551000
OENTR = 46 #, % USERDICT ENTRY 00552000
OFIND = 47 #, % FIND USERDICT ENTRY 00553000
OSRCH = 48 #, % SEARCH USERDICT 00554000
OOP49 = 49 #, 00555000
OOP50 = 50 #, 00556000
OTYPC = 51 #, % SCAN TYPE..CAT 00557000
OTYPS = 52 #, % SCAN TYPE..SPACE 00558000
OSETL = 53 #, % SET LENGTH 00559000
OCONV = 54 #, % CONVERT 00560000
OINDC = 55 #, % INDIRECT ADDRESS CALL 00561000
OICMP = 56 #, % INTEGER COMPARE 00562000
OTOGL = 57 #, % TOGGLE SET RESET OPERATIONS 00563000
OOP58 = 58 #, 00564000
OOP59 = 59 #, 00565000
OOP60 = 60 #, 00566000
OJMPC = 61 #, % JUMP CONDITIONAL 00567000
OJUMP = 62 #, % JUMP UNCONDITIONAL 00568000
OINT1 = 63 #, % INTRINSIC 1 (CASES FOLLOW (+64)) 00569000
OBGNL = 64 #, % BEGINLEVEL (+OP) 00570000
OBLKL = 69 #, % BLOCKLEVEL (+OP) 00571000
ODIAL = 74 #, % DIAL FIRST CHARACTER 00572000
OLINC = 75 #, % LINE..CAT 00573000
OLINS = 76 #, % LINE..SPACE 00574000
OENTI = 77 #, % ENTIER 00575000
OLENG = 78 #, % LENGTH 00576000
ORDCD = 79 #, % READACARD 00577000
ODELE = 80 #, % DELETE 00578000
OSTCK = 81 #, % STACK 00579000
ONSTK = 82 #, % UNSTACK 00580000
OSCNT = 83 #, % SCAN COUNT 00581000
OLEVL = 88 #, % UDICT LEVEL 00582000
OQUAL = 89 #, % UDICT QUALIFIER 00583000
ONAME = 90 #, % UDICT ENTRY NAME 00584000
OEXIT = 91 #; % EXIT MACRO 00585000
00586000
00587000
DEFINE % SCAN CLASSES 00588000
VSPECIAL = 00 #, % SPECIAL CHARACTER 00589000
VNUMBER = 01 #, % REAL OR INTEGER NUMBER 00590000
VOCTAL = 02 #, % WRL OCTAL CONSTANT 00591000
VSTRING = 03 #, % QUOTED STRING 00592000
VTORF = 04 #, % TRUE OR FALSE 00593000
VNOTDEC = 05 #, % NON RESCANNED ID 00594000
VMFIELDID = 13 #, % MFIELD FUNCTION 00595000
% 0 => ALPHA 00596000
% 1 => INTEGER 00597000
VMACRONAME = 14 #, % MACRO IDENTIFIER 00598000
% SEE VOTHERS SUBCLASSES 00599000
VPARAMID = 15 #, % PARAMETRIC DEFINE PARAMETER 00600000
% N = PARAMETER # 00601000
VSTRINGNAME = 16 #, % MSTRING, MPOINTER ID 00602000
% 0 => ALPHA MSTRING 00603000
% 1 => INTEGER MSTRING 00604000
% 2 => ALPHA MPOINTER 00605000
% 3 => INTEGER MPOINTER 00606000
% 4 => DICTIONARY ALPHA MSTRING 00607000
% 5 => DICTIONARY INTEGER MSTRING 00608000
% 6 => DICTIONARY MPOINTER 00609000
VALGOLIDENT = 17 #, % ALGOL DECLARED ID 00610000
% SEE VOTHERS SUBCLASSES 00611000
VDEFINEDID = 18 #, % DEFINE ID 00612000
% 0 => 1 IDENTIFIER 00613000
% 1 => MANY THINGS, LAST ITEM = ID 00614000
% 2 => 1 SPCHR 00615000
% 3 => MANY THINGS, LAST ITEM = SPCHR 00616000
% 4+=> PARAMETRIC 00617000
VDOLLARID = 19 #, % MCALGOL DOLLAR CARD RESERVED WORD 00618000
% 00 => CARD 00619000
% 01 => DISK 00620000
% 02 => NEW 00621000
% 03 => SEQ 00622000
% 04 => DUMP 00623000
% 05 => VOID 00624000
% 06 => LIST 00625000
% 07 => DOUBLE 00626000
% 08 => MONITOR 00627000
% 09 => TRACE 00628000
% 10 => DEBUGN 00629000
% 11 => ACCUM 00630000
% 12 => UNPACK 00631000
% 13 => INTER 00632000
% 14 => PRT 00633000
% 15 => BLOCK 00634000
% 16 => WARN 00635000
% 17 => PAGE 00636000
% 18 => INDEX 00637000
% 19 => PSEUDO 00638000
VSTREAMRES = 20 #, % STREAM RESERVED WORD 00639000
VMACRORES = 21 #, % MACRO RESERVED WORD 00640000
% SEE VMACRORES SUBCLASSES 00641000
VOTHERS = 22 #, % ALGOL RESERVED? WORD 00642000
% SEE VOTHERS SUBCLASSES 00643000
VDECLRN = 23 #, % DECLARATION POINTER 00644000
VPATCHID = 24 #; % PATCH IDENTIFIER 00645000
00646000
DEFINE % VOTHERS SUBCLASSES 00647000
OWNV = 01 #, 00648000
SAVEV = 02 #, 00649000
BOOLEANV = 03 #, 00650000
REALV = 04 #, 00651000
ALPHAV = 05 #, 00652000
INTEGERV = 06 #, 00653000
LABELV = 07 #, 00654000
DUMPV = 08 #, 00655000
MONITORV = 09 #, 00656000
OUTV = 10 #, 00657000
INV = 11 #, 00658000
SWITCHV = 12 #, 00659000
STREAMV = 13 #, 00660000
PROCEDUREV = 14 #, 00661000
ARRAYV = 15 #, 00662000
STRINGV = 16 #, 00663000
FILEV = 17 #, 00664000
LISTV = 18 #, 00665000
FORMATV = 19 #, 00666000
MACROV = 20 #, 00667000
DEFINEV = 21 #, 00668000
MFIELDV = 22 #, 00669000
DICTIONARYV = 23 #, 00670000
MPOINTERV = 24 #, 00671000
NOV = 31 #, 00672000
PAGEV = 32 #, 00673000
DBLV = 33 #, 00674000
READV = 36 #, 00675000
WRITEV = 37 #, 00676000
BEGINV = 42 #, 00677000
FORV = 43 #, 00678000
THENV = 44 #, 00679000
DOV = 45 #, 00680000
UNTILV = 46 #, 00681000
ELSEV = 47 #, 00682000
ENDV = 48 #, 00683000
FILLV = 49 #, 00684000
TOV = 50 #, 00685000
IFV = 51 #, 00686000
GOV = 52 #, 00687000
RELEASEV = 53 #, 00688000
DOUBLEV = 54 #, 00689000
REVERSEV = 55 #, 00690000
MODV = 56 #, 00691000
DIVV = 57 #, 00692000
ENTIERV = 58 #, 00693000
COSV = 59 #, 00694000
EXPV = 60 #, 00695000
LNV = 61 #, 00696000
ARCTANV = 62 #, 00697000
SINV = 63 #, 00698000
SQRTV = 64 #, 00699000
SIGNV = 65 #, 00700000
ABSV = 66 #, 00701000
COMMENTV = 71 #, 00702000
FORWARDV = 72 #, 00703000
STEPV = 73 #, 00704000
WHILEV = 74 #, 00705000
REPLACEV = 75 #, 00706000
VALUEV = 76 #, 00707000
WITHV = 77 #, 00708000
NOTV = 85 #, 00709000
EQVV = 88 #, 00710000
IMPV = 89 #, 00711000
ORV = 90 #, 00712000
ANDV = 91 #; 00713000
00714000
DEFINE % VMACRORES SUBCLASSES 00715000
% STATEMENT BEGINNERS 00716000
INPUTM = 00 #, 00717000
RESCANM = 01 #, 00718000
OUTPUTM = 02 #, 00719000
ERRORM = 03 #, 00720000
WARNINGM = 04 #, 00721000
POSTM = 05 #, 00722000
DELETEM = 06 #, 00723000
PATCHM = 07 #, 00724000
SETM = 08 #, 00725000
RESETM = 09 #, 00726000
% INTEGER SEQUENCE ELEMENTS ONLY 00727000
RESERVEM = 25 #, 00728000
RESERVESTMTM = 26 #, 00729000
ENTERM = 27 #, 00730000
FINDM = 28 #, 00731000
SEARCHM = 29 #, 00732000
LEVELM = 30 #, 00733000
QUALIFIERM = 31 #, 00734000
% INTEGER OR ALPHA SEQUENCE ELEMENTS 00735000
LINEM = 50 #, 00736000
ENTIERM = 51 #, 00737000
LENGTHM = 52 #, 00738000
% + OPERATORS 00739000
BEGINLEVELM = 60 #, 00740000
BLOCKLEVELM = 61 #, 00741000
SCANCOUNTM = 62 #, 00742000
% ALPHA SEQUENCE ELEMENTS ONLY 00743000
UNTILM = 75 #, 00744000
THRUM = 76 #, 00745000
QUOTEM = 77 #, 00746000
NAMEM = 78 #, 00747000
% MISC 00748000
NULLM = 97 #, 00748050
EQUIVM = 98 #, 00748100
TOGGLEM = 99 #; 00749000
00750000
DEFINE % VMACRORES SCAN TYPES SUBCLASSES 00751000
% ALPHA ONLY 00752000
BEXPRESSIONM = 100 #, 00753000
CHARACTERM = 101 #, 00754000
ELEMENTM = 102 #, 00755000
EXPRESSIONM = 103 #, 00756000
IDENTIFIERM = 104 #, 00757000
STATEMENTM = 105 #, 00758000
VARIABLEM = 106 #, 00759000
DECLARATIONM = 107 #, 00760000
BPRIMARYM = 108 #, 00761000
PRIMARYM = 109 #, 00762000
% INTEGER OR ALPHA 00763000
NUMBERM = 125 #, 00764000
INTGERM = 126 #, 00765000
% TOGGLE CONDITIONS 00766000
DECLAREM = 200 #, 00767000
COMMENTM = 201 #, 00768000
ENDCOMMENTM = 202 #, 00769000
INHIBITM = 203 #, 00770000
USERM = 255 #; 00771000
00772000
DEFINE 00773000
T = TABLET #, 00774000
STEPI = TYPE ~ TABLE(TABLET~TABLET+1)#; 00775000
ARRAY ACCM[0:255],COMMENT ALPHA SEQUENCE ACCUMULATOR. FORMAT FOR 00800000
ALL ALPHA MSTRINGS IS 3 CHR FOR BINARY COUNTER 00801000
FIELD FOLLOWED BY CHARACTERS FOLLOWED BY SPACE; 00802000
BFR[0:BFRMAX-1], COMMENT PSEUDO & INPUT IMAGE BUFFER TO 00803000
CONTAIN "INPUT STRING". INPUT IMAGES ARE PLACED 00804000
IN THE RIGHTMOST 10 WORDS WITH A SCANNER 00805000
TERMINATING "%" IN COLUMN 73. PSEUDO INPUT IS 00806000
"STACKED" TO THE LEFT OF THE NEXT ITEM TO BE 00807000
SCANNED. A "%" IS PLACED AT THE RIGHT OF EACH 00808000
PSEUDOREADER TO CAUSE UNSTACKING AND/OR 00809000
PREVENT OVER-SCANNING ON DECOMPOSITION; 00810000
BLIST[0:249], COMMENT BEGIN-END AND BLOCK CONTROL 00811000
CUT BACK INFO FOR DICTIONARY ENTRIES. 00812000
MCALGOL DICT LIST IN 0-124, 00813000
USER DICT LIST IN 125-249; 00814000
COMCON[0:255], COMMENT MACRO COMPILE-TIME CONSTANTS 00815000
STORAGE AREA; 00816000
DECL[0:255], COMMENT DECLARATION TIME STORAGE SPACE FOR 00817000
PACKED ELEMENTS OF A DECLARATION; 00818000
DFN[0:255], COMMENT USED TO EXPAND DEFINES; 00819000
DICT[0:63,0:255], COMMENT MCALGOL DICTIONARY. 00820000
WORD[0] CONTAINS SCRAMBLE LINK WORD. 00821000
=-1 IF END OF CHAIN. 00822000
WORD[1] CONTAINS ELBAT WORD. 00823000
WORDS[2-N] CONTAIN IDENTIFIER IN ALPHA 00824000
MSTRING FORMAT. 00825000
N IS (CTR+10)DIV 8-2 WORDS FOR THE 00826000
CHR REMAINING AFTER FIRST FIVE. 00827000
WORD[1].ADINFO HAS THE FOLLOWING USES: 00828000
MSTRINGS, MPOINTERS: WORD[N+1] 00829000
LIM = LENGTH IN CHR 00830000
REF = SYMBOLIC ADDRESS 00831000
MACROS: WORD[N+1] 00832000
MLICT = # LOCAL INTEGERS 00833000
MLACT = # LOCAL ALPHAS 00834000
MPOOL = # WORDS IN CONSTANT POOL 00835000
MML = # WORDS OF CODE 00836000
WORD[N+2]: 00837000
MLOCT = # LOCAL MPOINTERS 00838000
MPT = LOCATION OF CODE IN MCODE 00839000
MFIELDS: WORD[N+1] = CONSTANT POOL 00840000
ENTRY FOR MFIELD DESCRIPTOR. 00841000
DECLARATIONS: MDECL ADDRESS WHERE 00842000
ALPHA CAN BE FOUND. 00843000
IDENTIFIERS: TANK ADDRESS OF ORIGINAL 00844000
ALPHA. 00845000
SPECIAL CHARACTERS: THE CHARACTER. 00846000
PARAMETRIC DEFINES: WORD[N+1] 00847000
LIM = # RECONSTRUCTION PARTS 00848000
REF = MDECL ADDRESS OF RECON INFO 00849000
WORDS[N+2->...] SPACE FOR PARAMETER 00850000
POINTERS DURING PROCESSING 00851000
ELBAT.SUB = 4+# OF PARAMETERS 00852000
; 00853000
DLIST[0:249], COMMENT SCRAMBL STACKHEAD. 00854000
MCALGOL DICT IN 0-124. USER DICT IN 125-249; 00855000
ELBAT[0:269], COMMENT CONTAINS ELBAT WORDS FOR SCANNED 00856000
ITEMS. NXTELB IS SERIAL. BELB IS CURRENT BASE 00857000
INDEX OF ELBAT[0]. OVERFLOW KEEPS LAST 10 ITEMS; 00858000
ERB[0:14], COMMENT ERROR BUFFER AND GLOBAL ALPHA TEMP; 00859000
GINT[0:255],COMMENT GLOBAL INTEGER MSTRING SPACE; 00860000
GLOBAL[0:63,0:255], COMMENT GLOBAL ALPHA MSTRINGS. ROW 00861000
SIZES ARE FORESHORTENED AT DECLARATION TIME. 00862000
MAX SIZE IS 512, BUT NO ONE HAS YET USED OR 00863000
EXCEEDED 64; 00864000
GPTR[0:255], COMMENT GLOBAL MPOINTERS; 00865000
IDENT[0:255], COMMENT LAST SCANNED IDENTIFIER OR 00866000
QUOTED STRING; 00867000
LINKS[0:3], COMMENT SEQUENCE FIELDS OF INPUT AND PREVIOUS 00868000
ERROR IMAGES; 00869000
LOCAL[0:63,0:255], COMMENT LOACL STORAGE FOR MACROS. ROWS OF 00870000
LOCAL CONTAIN: 00871000
0 - INTEGER MSTRINGS, 1 WORD PER MSTRING 00872000
1 - CONSTANT POOL 00873000
2 - CODE STRING 00874000
3 - ALPHA COMPARISON SPACE & "JUNK" 00875000
4 - SCAN POOL FOR LOAD-FOR-TEST SEQUENCE 00876000
5 - TEMP ACCM STORAGE WHILE LOADING..NOT STACKED TO DISK 00877000
6 - MPOINTERS 00878000
7-N - ALPHA MSTRINGS, 4 UNITS OF 64 WORDS EACH; 00879000
00880000
MAXINFO[0:99], COMMENT PSEUDOREADER STACKING INFO; 00883000
MC[0:255], COMMENT MACRO COMPILE-TIME CODE ARRAY; 00884000
MCODE[0:255], COMMENT STORAGE FOR COMPILED CODE, 00885000
CONSTANTS, AND SIZING INFO; 00886000
MDECL[0:255], COMMENT STORAGE FOR PACKED 00887000
DECLARATIONS AND DEFINES; 00888000
MNEMON[0:99], COMMENT CONTAINS DEBUGGING MNEMONICS FOR 00889000
OPCODES AND THE INTERPRETATION-TIME PROPERTIES 00890000
THEREOF. 0-63 ARE ACTUAL OPCODES. }64 ARE 00891000
OINT1 CASE SWITCH OPERATORS(+64); 00892000
OA[0:1022],COMMENT OUTPUT ACCUMULATOR FOR OUTPUT OF A MACRO. 00893000
SEQUENCES ARE APPENDED SERIALLY AT END. 00894000
OA WILL BE PSEUDOREAD UPON TERMINATION 00895000
OF MACRO; 00896000
$ INCLUDE 00899001, IF INTERMEDIATE; 00896999
PATCHSPACE[0:PTCHMAX+1],COMMENT LOCATOR SPACE FOR PATCH RECORDS.00897000
TWO WORD ENTRIES KEEP TRACK OF REQUESTED AND 00898000
USED SPACE; 00899000
POB[0:14], COMMENT PACKED OUTPUT BUFFER FOR OUTPUT STRING; 00900000
PPB[0:14], COMMENT PACKED PATCH BUFFER FOR BACKPATCHES; 00901000
PROCT[0:63], COMMENT PROCEDURE NESTING AND BEGIN-END 00902000
COUNTER; 00903000
RELOP[0:11], COMMENT RELATION AND COUNTER RELATION 00904000
OPTIMIZATION ARRAY; 00905000
SPACEMAP[0:23], COMMENT BIT MAP OF SPACE ASSIGNMENTS 00906000
IN GLOBAL & LOCAL; 00907000
STMTSTACK[0:127], COMMENT RESERVE STATEMENT STACKED 00908000
OCCURENCE STORAGE; 00909000
TANK[0:179], COMMENT CIRCULAR FILE OF IDENTIFIER ALPHA 00910000
POINTED TO BY ELBAT WORDS; 00911000
TELBAT[0:89], COMMENT TEMPORARY STORAGE FOR ELBAT WORDS 00912000
ALREADY PRESCANNED AT THE TIME OF A PSEUDOREAD. 00913000
THEY WILL BE RECALLED WHEN THE PSEUDOREADER 00914000
IS CLOSED; 00915000
TTANK[0:179], COMMENT CIRCULAR FILE OF ALPHA FOR ITEMS 00916000
IN TELBAT; 00917000
$ INCLUDE 00917101, IF DEBUGGING; 00917049
TYPENAME[0:63], COMMENT NAMES OF SCANTYPE PROCEDURES 00917050
USED IN TRACING; 00917100
$ INCLUDE 00926001, IF ADVANCED; 00917999
UDICT[0:63,0:255]; COMMENT USER DICTIONARY. 00918000
WORD[0] IS DLIST LINK. 00919000
WORD[1] HAS THE FOLLOWING FIELDS: 00920000
00921000
00922000
00923000
00924000
00925000
; 00926000
$ OMIT 00926051, IF ADVANCED; 00926049
UDICT[0:0]; % DUMMY 00926050
BOOLEAN ARRAY 00927000
ERRMASK[0:31]; COMMENT A BIT IS SET IN ERRMASK FOR EACH 00928000
ERROR AND WARNING MESSAGE ENCOUNTERED. THIS 00929000
GUIDES THE ERROR MESSAGE LISTER AT THE END 00930000
OF THE PROGRAM; 00931000
FILE OUT CODE DISK SERIAL[20:IF ERRCT=0 THEN 120 ELSE(ERRCT+299) 00950000
DIV 300|15](1,10,150,SAVE 780); 00951000
FILE OUT PRINTER 4(1,15); 00952000
FILE OUT CC DISK SERIAL [20:24](1,10,60); 00953000
FILE IN DISK DISK SERIAL (1,150,10); 00954000
FILE IN CARD (1,10,150); 00955000
FILE OUT NEWDISK DISK SERIAL [20:(ERRCT+299)DIV 300|15] 00956000
(1,10,150,SAVE 780); 00957000
FILE DISKSTACK DISK RANDOM [20:20](2,270); 00958000
$ INCLUDE 00959101, IF INTERMEDIATE; 00958999
FILE BACKPATCHES DISK RANDOM[20:(PATCHMAX+199)DIV 200|10] 00959000
(1,9,90); 00959100
FILE OUT INDEX DISK SERIAL [20:60](1,10,150,SAVE 1); 00960000
$ INCLUDE 00961001, IF INTERMEDIATE; 00960999
FILE ISOCODE DISK RANDOM [20: 5] (1,120); 00961000
FILE MSTOR DISK RANDOM [20:15] (1,256); 00962000
FILE ERRORS DISK RANDOM (1,10,30); 00963000
FORMAT 00975000
MON1(A5"["I5"] "A1,X1,O" ("3I6")"A7,X1,A1), 00976000
MON2("CAD="I4" OP="A4" ADD="V4" T="I5" TOG="L1" HM="I4, 00977000
" OHM="I4" IACCM="I9" IACCM1="I9), 00978000
MON3("SLIPWORDS"2I5), 00979000
MON4(A2,I5,L6); 00980000
FORMAT 00981000
FLUSH("FLUSHED"); 00982000
$ INCLUDE 00984001, IF DEBUGGING; 00982999
FORMAT 00983000
DEBUG(I5" OP="A4" ADDR="V4); 00984000
$ INCLUDE 01014001, IF INTERMEDIATE; 00999999
INTEGER SPOTISOCAT; % MOVE NOT THESE 3 DECLARATIONS 01000000
REAL PROCEDURE ISOCAT(A); VALUE A; INTEGER A; 01001000
BEGIN REAL B; ISOCAT ~ B END; 01002000
SAVE ARRAY CODRAY[0:119]; 01003000
PROCEDURE STARTUPISOCAT; BEGIN 01004000
STREAM PROCEDURE FIXISOCAT(SCAT); 01005000
BEGIN 01006000
SI~SCAT; SI~SI+21; 01007000
DI~SCAT; DI~DI+8; DS~5 LIT "=0000"; DS~3 CHR; 01008000
DI~DI-3; DS~3 RESET; 01009000
END; 01010000
NOWCODE ~ REAL(NOT FALSE); 01011000
CODRAY[0] ~ REAL(<55400662310055>); % F-1,LFU 01012000
FIXISOCAT(SPOTISOCAT); 01013000
END STARTUPISOCAT; 01014000
BEGIN % END SETUP 01100000
LABEL DP,EOF,ENDDD; 01101000
PROCEDURE READACARD; FORWARD; 01102000
PROCEDURE PACKET; FORWARD; 01103000
PROCEDURE SLIPWORDS(A,B); VALUE A,B; INTEGER A,B; FORWARD; 01104000
PROCEDURE WRAPBLOCK(T); VALUE T; BOOLEAN T; FORWARD; 01105000
PROCEDURE MACRON(QQ,Q); VALUE Q,QQ; REAL Q,QQ; FORWARD; 01106000
PROCEDURE MACRO(Q); VALUE Q; REAL Q; FORWARD; 01107000
PROCEDURE DECLARATION; FORWARD; 01108000
INTEGER PROCEDURE TABLE(P); VALUE P; INTEGER P; FORWARD; 01109000
$ INCLUDE 01110001, IF INTERMEDIATE; 01109999
REAL PROCEDURE COMPILEFIELD(A,B); VALUE A,B; INTEGER A,B; FORWARD; 01110000
BOOLEAN PROCEDURE MDOLLAR(B); VALUE B; BOOLEAN B; FORWARD; 01111000
COMMENT TIMEIT POSTS THE TIME LINE AT THE BEGINNING AND 01112000
ENDING OF THE LISTING; 01113000
PROCEDURE TIMEIT(A); 01114000
FILE A; 01115000
BEGIN 01116000
OWN BOOLEAN B; 01117000
INTEGER E, F, G, H, I; 01118000
STREAM PROCEDURE C(A,B,D); VALUE A; BEGIN 01119000
SI~LOC A; SI~SI+3; DI~B; DS~2 OCT; DI~D; DS~3 OCT END; 01120000
STREAM PROCEDURE D(A, B, C, E, F, G, H, I, J, K); 01121000
VALUE A, B, C, E, F, G, H, I, J; 01122000
BEGIN 01123000
LABEL L, M, N, O, P, Q; 01124000
DI~K; DS~8 LIT " "; SI~K; DS~14 WDS; DI~K; SI~LOC A; 01125000
DS~2 DEC; 2(DS~LIT ":"; DS~2 DEC); DI~DI+1; 01126000
CI~CI+E; % 5 SYLLABLE HOPS 01127000
DS~3 LIT "SUN"; GO L; SKIP SB; 01128000
DS~3 LIT "MON"; GO L; SKIP SB; 01129000
DS~4 LIT "TUES"; GO L; SKIP SB; 01130000
DS~6 LIT "WEDNES"; GO L; 01131000
DS~5 LIT "THURS"; GO L; 01132000
DS~3 LIT "FRI"; GO L; SKIP SB; 01133000
DS~5 LIT "SATUR"; 01134000
L: DS~4 LIT "DAY,"; DI~DI+1; 01135000
CI~CI+F; % 5 SYLLABLE HOPS 01136000
DS~3 LIT "JAN"; GO M; SKIP SB; 01137000
DS~4 LIT "FEBR"; GO M; SKIP SB; 01138000
DS~5 LIT "MARCH"; GO O; 01139000
DS~5 LIT "APRIL"; GO O; 01140000
DS~3 LIT "MAY"; GO O; SKIP SB; 01141000
DS~4 LIT "JUNE"; GO O; SKIP SB; 01142000
DS~4 LIT "JULY"; GO O; SKIP SB; 01143000
DS~6 LIT "AUGUST"; GO O; 01144000
DS~6 LIT "SEPTEM"; GO N; 01145000
DS~4 LIT "OCTO"; GO N; SKIP SB; 01146000
DS~5 LIT "NOVEM"; GO N; 01147000
DS~5 LIT "DECEM"; GO N; 01148000
M: DS~4 LIT "UARY"; GO O; 01149000
N: DS~3 LIT "BER"; 01150000
O: DI~DI+1; A~DI; DI~LOC B; SI~LOC G; DS~2 DEC; DI~A; 01151000
SI~LOC B; IF SC="0" THEN SI~SI+1 ELSE DS~CHR; DS~CHR; 01152000
DS~4 LIT ", 19"; SI~LOC H; DS~2 DEC; 01153000
IF SC!"+" THEN BEGIN 01154000
DI~DI+4; DS~16 LIT "PROCESSOR TIME ="; DI~DI+1; 01155000
A~CI; GO P; 01156000
DI~DI+4; DS~10 LIT "I/O TIME ="; DI~DI+1; 01157000
SI~LOC J; A~CI; GO P; GO Q; 01158000
P: B~DI; DI~LOC C; DS~8 DEC; SI~LOC C; DI~B; 01159000
5(IF TOGGLE THEN IF SC="0" THEN SI~SI+1 ELSE 01160000
DS~CHR ELSE DS~CHR); 01161000
DS~CHR; DS~LIT "."; DS~2 CHR; DS~8 LIT " SECONDS"; 01162000
CI~A; 01163000
Q: END; 01164000
END; 01165000
ARRAY J[0:14]; 01166000
C(TIME(0), E, F); 01167000
G~((((E-1) DIV 4)+E+F) MOD 7)|5; 01168000
IF F<60 THEN 01169000
F~ F-1 01170000
ELSE 01171000
IF E MOD 4=0 THEN 01172000
F~ F-1; 01173000
IF F>212 THEN 01174000
F~(F+31) DIV 61+F 01175000
ELSE 01176000
IF F>59 THEN 01177000
F~(F+62) DIV 61+F; 01178000
H~ TIME(1)|.016667; 01179000
D(H DIV 3600,I~H DIV 60 MOD 60,I~H MOD 60,G,(F DIV 31)|5, 01180000
H~F MOD 31+1,E,IF B THEN H~TIME(2)|1.6667 ELSE-1,IF B 01181000
THEN H~ TIME(3)|1.6667 ELSE-1, J[0]); 01182000
B~ TRUE; 01183000
WRITE(A[DBL], 15, J[*]) 01184000
END; 01185000
COMMENT SETSIZE CHANGES THE DESCRIPTOR SIZE FIELD OF 01200000
AN ARRAY OR VECTOR. L MUST NOT BE ZERO OR A NAME DESCRIPTOR 01201000
WILL RESULT; 01202000
STREAM PROCEDURE SETSIZE(L,A,M,N); 01203000
VALUE L, M, N; 01204000
BEGIN 01205000
SI~LOC L; SI~SI+6; DI~A; 01206000
N(DI~DI+8); M(16(DI~DI+32)); 01207000
DI~DI+1; DS~NUM; DS~CHR; 01208000
END; 01209000
COMMENT SIZE OBTAINS THE ARRAY SIZE FROM A ROW 01210000
DESCRIPTOR; 01211000
INTEGER STREAM PROCEDURE SIZE(A); 01212000
BEGIN 01213000
SI~LOC A; SI~SI+1; DI~LOC SIZE; DI~DI+6; 01214000
DS~NUM; DS~CHR; 01215000
END; 01216000
COMMENT MOVEDEC CREATES A DECIMAL STRING 8 CHR WIDE FROM A, 01217000
F LEADING ZEROES FILLED, AT B +C CHR. E CHR ARE TRANSFERRED 01218000
STARTING AT CHR D. A BLANK IS ALWAYS EMITTED TO THE RIGHT; 01219000
STREAM PROCEDURE MOVEDEC(A,B,C,D,E,F); 01220000
VALUE A,C,D,E,F; 01221000
BEGIN 01222000
SI~LOC A; DI~LOC A; DS~8 DEC; DI~DI-8; DS~F FILL; 01223000
SI~SI-8; DI~B; DI~DI+C; SI~SI+D; DS~E CHR; DS~LIT " "; 01224000
END; 01225000
COMMENT MASK SETS A BIT IN THE ERROR MASK FOR SYNTAX 01226000
ERRORS; 01227000
BOOLEAN STREAM PROCEDURE MASK(X); VALUE X; BEGIN 01228000
DI~LOC MASK; DI~DI+2; SKIP X DB; DS~SET END; 01229000
COMMENT CR OBTAINS A CHR FROM THE WORD & POSITION GIVEN; 01230000
ALPHA STREAM PROCEDURE CR(S,N); 01231000
VALUE N; 01232000
BEGIN 01233000
SI~S; SI~SI+N; DI~LOC CR; DI~DI+7; DS~CHR; 01234000
END; 01235000
COMMENT DIALB DIALS BLANKS INTO A SEQUENCE. USUALLY USED 01236000
FOR FILLING PARTIAL FIELDS WHEN SEQUENCE IS NOT LONG ENOUGH; 01237000
STREAM PROCEDURE DIALB(N,M,A,P); VALUE N,M,P; 01238000
BEGIN 01239000
DI~ A; DI~ DI+ P; 01240000
M(DS~ LIT " "); 01241000
N(32(DS~2 LIT " ")); 01242000
END; 01243000
COMMENT CONSTANTCONVERT TAKES A SIGNED OR UNSIGNED NUMBER 01244000
L CHR LONG AND CONVERTS IT TO A BINARY QUANTITY; 01245000
INTEGER STREAM PROCEDURE CONSTANTCONVERT(S,L); 01246000
VALUE L; 01247000