-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathalgol.si
3887 lines (3887 loc) · 307 KB
/
algol.si
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
******************************
* ALGOL *
* 910/920 60-4 *
* 012016 *
******************************
AORG 1
WIM 2
OBJTY EQU 016000 ALGOL OBJECT CODE TYPER
NLIT EQU 0176 NUMBER OF LITERALS
STL EQU 67
NIMF EQU 16 NUMBER OF IMPLICIT FUNCTIONS
LIMF EQU 20 LENGTH OF IMPLICIT DECS
ZZA EQU 014000000 APOSTROPHE
ZZD EQU 061000000 DIVIDE
ZZI EQU 076000000 INVERSE DIVIDE
ZZP EQU 020000000 PLUS
ZZL EQU 035000000 LEFT BRACKET
ZZR EQU 055000000 RIGHT BRACKET
ZZSC EQU 056000000 SEMICOLON
IMAGE RES 20
BUF DATA 050000 CONTROL WORD
DATA 02100000 LOAD ADDR WORD
RES 24
DATA 0,0,0,0,0,0,0,0
RAST RES 1
CHAR RES 1
LEN RES 1
NAME RES 2
CNT RES 1
OP RES 1
CC DATA 80
AORG 0100
TYY OPD 010000000
TYPW 1,1
MIW *0
TOPW 1
BRTW
BRU $-1
BRR 0
SKMA OPD 010600000
SKMA SKM *0
MIN 0
BRR 0
SKGA OPD 011100000
SKGA SKG *0
MIN 0
BRR 0
SKNA OPD 011400000
SKNA SKN *0
MIN 0
BRR 0
CXA OPD 011700000
STX TT
LDA TT
BRR 0
STZ OPD 012200000
STZ CLR
STA *0
BRR 0
SS DATA 0
COP OPD 012600000
COP LDA 0
STA RECUR
LDA *0
BRM COA
BRR RECUR
RECUR DATA 0
CAX OPD 013400000
STA TT
LDX TT
BRR 0
CNA OPD 013700000
EOR =-1
ADD =1
BRR 0
XMA OPD 014200000
STA TT+1
LDA *0
STA TT
LDA TT+1
XMA1 STA *0
LDA TT
BRR 0
ADM OPD 015100000
STA TT
ADD *0
BRU XMA1
SKE OPD 015400000
STB TT
LDB =-1
SKM *0
BRU SKEA2
BRU SKEA1
SKEA OPD 016100000
STB TT
LDB =-1
SKM *0
SKEA1 MIN 0
SKEA2 LDB TT
BRR 0
SKR OPD 016700000
MDE OPD 06000000
MDE *0
NOP FOR 920 TESTING
SKN *0
BRR 0
MIN 0
BRR 0
CLA OPD 07600175
CLB OPD 07500175
DATA 0
ERR OPD 017600000
STX ERRX
LDX 0
STX RECUR
TYY =052000000
LDA 0,IX2
LSH 18
STA ERRT
TYY ERRT
TYY =054000000
LDA CC
STA ERRT
STZ CC
BRM GETC
TYY CHAR
MIN CC
SKR ERRT
BRU $-4
SKR CC
LDX ERRX
BRR RECUR
ERRT RES 1
ERRX RES 1
TT RES 2
GETC PZE
LDA CC
RSH 2
CAX
LDB IMAGE,IX2
LDA CC
SKA =2
LSH 12
LDA CC
SKA =1
LSH 6
XAB
ETR =077000000
SKEA =074000000
LDA =035000000
SKEA =034000000
LDA =055000000
SKEA =060000000
LDA =012000000
STA CHAR
BRR GETC
* GETS NEXT CHAR FROM INPUT SOURCE
FETCH SKN STOPSW
BRU ENDPO
MIN CC
LDA CC
SKG HICOL MAXIMUM SIGNIFICANT CHARACTERS
BRU FETCH1
FETCHR BRM CARD
CLR
STA SS
STA CC
FETCH1 BRM GETC
SKN KSW
BRU FETCH5
SKEA =012000000
BRU FETCH2
BPT 3
BRU $+3
BRU FETCH3
TYY =012000000
SKR SS
BRU $-2
TYY CHAR
FETCH2 MIN SS
FETCH3 ABC
LDA =4
SKGA TMIN
BRU FETCH4
ERR 'K' MINOR SYNTAX OVERFLOW
FETCH6 STZ KSW
STZ NOCOD
BRU FETCH
FETCH4 LDA =0
LSH 6 LD INDEX
LDB A8 LD BASE PZE CVERT,IX2
BRM LDCON
STA T
SKEA =BOUND
STA STOPSW
LDA TMIN
LDB A4
BRM LDSNG
SKE =APOST2
BRU PREC2
LDA T
SKE =APOST
BRU SN25
BRU PREC1
FETCH5 SKE =ZZSC
BRU FETCH
LDA =-1
STA KSW
STZ TMIN
STZ RMIN
BRU SYN2
KSW DATA -1
PREC2 SKE =APOST
BRU PREC3
LDA TMIN
SUB =1
LDB A4
BRM LDSNG
SKE =APOST2
BRU PREC5
LDA T
SKEA =APOST
BRU SN21
SKR TMIN
SKR RMIN
LDA =ZZA
XMA CHAR
STA T+1
BRM STRWD
LDA T+1
STA CHAR
BRM STRWD
BRU FETCH
PREC3 SKE =COMENT
BRU PREC4
LDA T
SKE =SEMCOL
BRU FETCH
BRU PREC1
PREC4 SKE =END
BRU PREC5
LDA T
SKEA =SEMCOL
BRU PREC1
SKEA =APOST
BRU PREC1
SKE =BOUND
BRU FETCH
BRU PREC1
PREC5 LDA T
SKEA =BLANK
BRU FETCH
PREC1 LDB T
BRU LW10
STOPSW DATA -1
*
* LD CONSTRUCT FROM BASE AND INDEX TO ACC,RJE
ZRSH LSH 8
LSH 16
XAB
LDCON PZE
STB T+22
LDX =040000
SKG =2
BRU $+3
SUB =3
BRX $-3
LDB *T+22
CAX
EXU OPD 02300000
EXU ZRSH,IX2
ETR =0377
LDX MODE
BRR LDCON
* ST CONSTRUCT INTO BASE AND INDEX FROM ACC,RJE
STCON PZE
STA T+22
LDA P+8
RSH 1
CAX
LDA T+22
STB T+22
LDB =07777
SKN T+22
LSH 12
STB T+22
EOR *P+9
ETR T+22
EOR *P+9
STA *P+9
LDX MODE
BRR STCON
LDSNG PZE
STB T+22
RSH 1
CAX
LDA *T+22
STB T+22
SKN T+22
RSH 12
ETR =0377
LDX MODE
BRR LDSNG
* COMPARES RULE IMPLIERS WITH CONSTRUCT STRING
CPARE PZE
LDX MODE
LDA RMIN,IX2
ADD T+10 R+Q LD INDEX
STA T+12
CP2 LDB A4,IX2
BRM LDSNG
STA T+11
LDA T+1
ADD =020000000
XAB
LDA T+9 X LD INDEX
BRM LDCON
SKE T+11
BRR CPARE
MIN T+9 EQ
MIN T+12
LDA T+12
SKR T+13
BRU CP2
CP1 MIN CPARE
BRR CPARE
* INSERTS IMPLICAND STRING INTO CONSTRUCT STRING
MASAGE PZE
SUB =1
STA T+2 NO. IMPLAND CONSTR -1 IS CNTR
SUB P+1
ADD P+2
STA DELTA P5-P2+P3-1
SKN T+2
BRU MS6
LDA =-1
ADM RAST
BRU MS5
MS6 LDA DELTA
SKE =0
BRU MS2
MS3 LDA P+2
STA P+8 ST INDEX
LDA A4,IX2
STA P+9 ST BASE
MS1 LDA P+5
LDB P+3 LD BASE
BRM LDCON
BRM STCON
MIN P+5
MIN T+4
MIN P+8
SKR T+2
BRU MS1
MS5 LDA DELTA
ADD TMIN,IX2
STA TMIN,IX2
BRR MASAGE
MS2 LDA P+1
SKEA P
BRU MS3 P1 EQ P2
ADD =1
STA T+4 LD INDEX
ADD DELTA
STA P+8 ST INDEX
LDA P
SUB T+4
STA T+5 CNTR P1-(P2+1)
LDB A4,IX2
STB P+9
MS4 LDB P+9
LDA T+4
BRM LDSNG
BRM STCON
MIN T+4
MIN P+8
SKR T+5
BRU MS4
BRU MS3
* FINDS MATE DEF WITHIN A RULE
RULER LDA T+1 IMPLY DICT WD
ETR =07777
STA T+1
LDX =-3
LDB *T+1
RL1 CLA
LSH 2
STA T+9,IX2 F,G,H ARE T+6,7,8 RESPECT
BRX RL1
LDA =2
STA T+9
LDA T+7
SKG =0
BRU RL2 G EQ 0
CLR G GT 0
SUB T+7
STA T+10 Q
ADD =1
CNA
STA T+13
BRM CPARE
BRU RL3
RL2 LDA T+6
SUB T+7
SKEA =0
BRU RL4 F EQ G
SUB =1
STA T+13
LDA =1
STA T+10 Q
BRM CPARE
BRU RL3 NO GOOD
RL4 LDX MODE
LDA TMIN,IX2 T
STA P
LDA RMIN,IX2
ADD T+6
SUB T+7
STA P+1 R+F-G
SUB T+6
STA P+2 R-G
LDA T+6
ADD =2
STA P+5
LDA T+1
ADD A3
STA P+3
LDA A1,IX2
STA P+4
LDA T+8
BRM MASAGE
LDA RMIN,IX2
SUB T+7
STA RMIN,IX2 R=R-G
RL5 LDA *T+1
RSH 8
ETR =01777
ADD SEM,IX2
STA T+1
CLR
LDA =-1
BRU *T+1 RCVRY PT
RL3 LDA T+6
ADD T+8
MIN T+1
RL6 MIN T+1
SUB =3
SKG =1
BRU RULER+3
BRU RL6
* CORRESPONDENCE BETWEEN PRIMITIVES AND CONSTRUCTS
CON FORM 8,8,8
CVERT CON DGT,DGT,DGT
CON DGT,DGT,DGT
CON DGT,DGT,DGT
CON DGT,BLANK,EQUAL
CON APOST,COLON,RPT
CON ILLEG,AOP,LTR
CON LTR,LTR,LTR
CON LTR,LTR,LTR
CON LTR,LTR,BLANK
CON PT,ILLEG,LPAREN
CON LPT,BOUND,AOP
CON LTR,LTR,LTR
CON LTR,LTR,LTR
CON LTR,LTR,LTR
CON BLANK,ILLEG,AST
CON RPAREN,SEMCOL,TEN
CON ILLEG,MOP,LTR
CON LTR,LTR,LTR
CON LTR,LTR,LTR
CON LTR,BLANK,COMMA
CON ILLEG,ILLEG,MOP
CON BLANK,0,0
M EQU $
SM LDX MODE
LW102 EQU SM
DEF LDA A1,IX2
STA D
LDA RMIN,IX2
STA RAST
LDB A4,IX2
BRM LDSNG
SUB =3
SUB MODE
SKG =-1
BRU DF8
SKGA SIZE,IX2
BRU DF8
CAX
LDA *D
BRU DF2
DF4 STA RAST
LDB A4,IX2
BRM LDSNG
CLB
LSH 12
STA T+1 CONSTR IN B2-9
LDX =0
LDB =07770000
DF1 LDA *D
SKM T+1
BRU $+2
BRU DF2
MIN D
SKG =-1
BRU $+2
BRU DF1
LDX MODE
DF8 MIN RMIN,IX2
LDA RMIN,IX2
SKG TMIN,IX2
BRU DEF R LE T
DF7 BRU $+1,IX2
BRU FETCH
LDX =0
STX MODE
BRU DEF
DF2 STA T+1 IMPLY DICT WD
RSH 21
ETR =3
ADD A2
STA $+2
LDX MODE
BRU
DF6 BRU DF3
BRU DF5 1 - IMPLAND ADDR
BRU RULER 2 - RULE
LDA TMIN,IX2 3 - RULEF
SKG RMIN,IX2
BRU DF7
BRU RULER
DF3 LDA T+1
ETR =07777
STA D
LDA RAST
SUB =1
BRU DF4
DF5 LDA TMIN,IX2
STA P
LDA RMIN,IX2
STA P+1
LDA RAST
STA P+2
LDA T+1
ETR =07777
STA T+1
STA P+3
LDA A1,IX2
STA P+4
LDB *P+3
LDA =020000000
ADM P+3
LDA =2
STA P+5
LDA =0
LSH 6
BRM MASAGE
LDA RAST
STA RMIN,IX2
BRU RL5
SM1 LDA =2
STA TYPES
BRU SM
SM2 LDA =3
BRU SM1+1
SM3 LDA =1
BRU SM1+1
SM17 LDA =01600 OPARY
STA *SK
BRU SM
SM64 STZ NDIM
SKN STYPE
MIN NDIM
LDA =1
STA TOT
BRU SM
SM68 CLR
STA DECST
STA STYPE
STA NDIM
LDA =1
STA TOT
BRU SM
SM133 LDA =8
BRU R2D2+1
SM134 LDA =9
BRU R2D2+1
SM135 LDA *BCTAB
RSH 9
ETR =0777
CAX
LDA BASEA-1,IX2
LDB =00600000
SKMA =0
BRU SM135A
ETR =077777
ADD =060100000
STA WORDS
ABC
BRM MOVE
SM135A MIN NDB6
BRU ENDBLK
SM22 STZ PARA
BRU SM
SM117 CLR
STA STYPE
BRU SM1+1
SM137 LDA *SK
SKE CW+14 - CW
BRU $+4
LDA CW+28
STA *SK
BRU SM
SKNA NOCOD
SKR SK
BRU SM
R1D1 ADD RMIN+1
LDB A4+1
BRM LDSNG
CLB
SKEA =BLKHD
STB TEMPT
BRU SM
R1D2 STB DECSW
BRU SM
SIGN DATA 0
FRACP PZE
LDA NUMB
STA FRAC
LDA ND
STA EXP
BRR FRACP
R2D2 LDA =1
STA KIND
BRU SM
R2D4 STA DECST
LDA TYPES
STA SWIND
R2D5 STB NENT
LDA =2
R2D5A STA KIND
BRM DUP
LDA KIND
BRM ADST
BRU SM
R2D6A MIN NENT
BRU R2D5+1
R2D6 LDA =3
BRU R2D2+1
R2D8 STB TYPES
R2D7 STZ LA
LDA =5
BRU R2D5A
XNAM PZE
STB T+10
LDB =060606060
STB BUF+2
LDB =BUF+1
BRM MOVNAM
LDA =010450000
STA BUF
LDA T+10
ETR =077777
ADD =020100000
BRR XNAM
R2D9A LDA =4
BRM ADST
LDA *A15B
LDB BASEA,IX2
BRM XNAM
ADD =020000000
STA BUF+3
BRM SEND
BRU R2D9B
R2D9 LDA MAD
STA LA
LDA =4
BRM ADST
R2D9B LDA =-1
STA DECSW
STA PROCSW
STA NENT
CLR
LDA =3
SUB TYPES
LSH 21
ADD =04100000
STA WORDS
CLR
BRM MOVE
BRU BEGBLK+1
R2D10 CLR
STA NENT
ADD =WORDS
STA T+20
BRM BLKAD
ADD =020000000
STA *T+20
LDA MAD
ADD NENT
STA LA
LDA =1
STA PARA
STA TYPES
MIN TYPES
BRM ADST
MIN NDAD
BRU SM
R2D11 LDA NENT
ADD =1
BRU R2D10+1
R2D12 BRM STSCH
SKA =040000000
BRU R2D12A
LDA =01000000
ADD BASEA,IX2
STA BASEA,IX2
ETR =077777
SUB MAD
CAX
LDA =020000000
ADM WORDS,IX2
BRU SM
R2D12A ERR 'C' VALUE BUT NO PARAMETER
BRU SM
R2D1 LDA =1
STA KIND
R2D14 BRM STSCH
SKA =040000000
BRU R2D12A
CLR
LDA KIND
LSH 4
ADD TYPES
LSH 16
STA T+21
LDA BASEA,IX2
ETR =03177777
ADD T+21
STA BASEA,IX2
LDB =077000000
SKMA =012000000 KIND=ARIDT,PARA=CBV
MIN NDAD
ETR =077777
SUB MAD
CAX
CLR
LDA =3
SUB TYPES
LSH 4
ADD KIND
LSH 15
ADM WORDS,IX2
BRU SM
R4D1 STB TYPES
R4D2 LDA =4
BRU R2D2+1
R4D4 STB TYPES
BRU SM
R5D1 LDA =2
STA TYPES
R5D3 LDA =2
BRU R2D2+1
R5D2 STA STYPE
BRU SM
R5D5 STA STYPE
LDA =2
STA TYPES
BRU SM
R5D6 LDA =2
STA TYPES
R5D4 MIN NDIM
BRU SM
R7D2 STA STYPE
BRU VAR
R7D4 LDA =9
BRU MODB
R11D14 LDA =11
BRU MODB
R26D4 LDA CW LBRACK
STA *SK
LDA =13
BRU MODB
R8D2 LDB CW+37
LDA *SJ
SKEA IO
BRU R8D2A
COP BCJM0
LDB CW+30 PROC OP
R8D2A STB *SK
LDB RAND
SKNA NEST
STB INDEX
MIN NEST
BRU SM
NEST DATA -1
INDEX DATA 0
R10D2 LDA SJ
SUB A12
STA PTR
BRU SM
SYND ERR 'D' 'DO' SYNTAX ERROR
BRU SYN1
SYNS ERR 'E' STATEMENT SYNTAX ERROR
BRU SYN1
SYN ERR 'M' SEMICOLON SYNTAX ERROR
SYN1 SKR RMIN+1
SYN2 LDA RMIN+1
STA TMIN+1
LDB A4+1
BRM LDSNG
SKGA =SPECAL
BRU SYN1
LDA A12
ADD =7
STA SJ
LDA A11
STA SK
STZ NOCOD
BRU SM
R29D1 STZ RSULT
BRU SM
R39D1 STA SCSW
R39D2 BRU ENDPRG
R40D1 SKNA NOCOD
SKR SJ
BRU SM
* PROC CALL CODE GENERATOR
OPPROC BRM SAVE
COP PJM0
LDA *SJ
LDB =074000000
SKMA =020000000
BRU OPPR3
SKM =024000000
OPPR2 SKR SJ
OPPR3 LDA OP
SKE CW+12 RPAREN OP
BRU TSEX
LDA *SJ
SKE IO
COP ECJM0
LDB INDEX
LDA =-1
ADM NEST
SKNA NEST
STB RAND
ADM SK
LDA *SJ
LDB =00600000
SKMA =0
BRU OPPR1
BRM RST
BRU TSEX
OPPR1 SKR SJ
BRU TSEX
OPIO BRM SAVE
COP IOJM0
BRU OPPR2
* STATIC ARRAY DECLARATION OPERATOR
OPARY MIN NDIM
LDX NDIM
LDA NUMB
STA WORDS,IX2
LDA OP
SKEA CW+27
BRU TSEX
LDA WORDS-1,IX2
SKGA WORDS,IX2
ERR 'F' ILLEGAL ARRAY BOUND
LDA WORDS-1,IX2
SUB WORDS,IX2
SUB =1
CAX
CLR
ADD TOT
BRX $-1
STA TOT
LDA OP
SKE CW+12
BRU TSEX
CLR
LDA SWIND HAS TYPES
SKE =1
BRU OPAR6
XMA TOT BOOLEAN
OPAR7 SUB =24
SKG =0
BRU OPAR2
MIN TOT
BRU OPAR7
OPAR6 SKE =2
BRU OPAR2
OPAR1 LDA TOT
LSH 1
OPAR3 STA TOT
OPAR2 LDA NABADD
SUB NENT
SUB =1
CAX
LDA BASEA,IX2
ETR =077700000
ADD MAD
STA BASEA,IX2
CLR
LDA =3
SUB SWIND
LSH 5
ADD NDIM
LSH 14
ETR =077700000
SKN STYPE
BRU OPAR4
ADD MAD
ADD =1
STA WORDS
LDA NDIM
LDB =040000000
BRM MOVE
BRM CODOUT
LDA TOT
ADM MAD
OPAR5 SKR NENT
BRU OPAR2
SKR SK
BRU TSEX
OPAR4 ADD NDAD
ADD =010000000
STA WORDS
BRM BLKAD
STA WORDS+1
LDA TOT
ADM NDAD
LDA NDIM
LDB =020000000
BRM MOVE
BRU OPAR5
TOT DATA 1
DUP PZE
LDA =-1
BRM STSCH
SKE =-1
ERR 'G' DUPLICATE USE OF IDENTIFIER
BRR DUP
* CHANGES CONSTRUCT FROM KIND -LAST DEF OF IDT RULE
MODA CLR
BRM STSCH
SKA =040000000
BRU LABREF
STA RAND
LDA BASEA,IX2
LDB =074000000
SKMA =024000000 XPRIDT
BRU MODA2
SKM =034000000
BRU MODA1
LDA RAND
ADD =1
BRU LBRF1
MODA2 ETR =077700000
ADD =BASEA
ADD RAND
MODA1 SKNA NOCOD
MIN SJ
STA *SJ
SKA =01000000
BRM FFDZ
LDA *SJ
SKA =020000000 PRIDT
BRU MODA4
MODA5 LDX RAND
CLR
LDB BASEA,IX2
LSH 4
MODA3 CAX
LDB TAB1,IX2
LDX MODE
LDA RMIN+1
BRU LW14+1
MODA4 LDA TMIN+1
LDB A4+1
BRM LDSNG
SKEA =ASSIGN
BRU MODA5
BRM FFDZ
LDA TMIN
LDB A4
BRM LDSNG
SKEA =LPAREN
BRU MODA5
COP BCJM0
COP ECJM0
LDA *SJ
SKA =00600000
BRU MODA6
SKNA NOCOD
SKR SJ
BRU MODA5
MODA6 BRM RST