{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IFMACS)}}
====== IFMACS ======
(George Source)
24D6 [
24XQ [ HERE FOLLOW THE USER MACROS
25CB [ ===========================
25X2 [
26BL [
26W= [??? IF SECT DEVT FGN 1 DOC
27*W [
27TG #MAC IF
28*6 [ ==
28SQ [
29#B [ SETS:
29S2 [ DEPTH UP, ADVANCES THE THREE STACK IDENTIFIERS
2=?L [ CURRENT STRUCTURE = CONDITIONAL
2=R= [ 'THEN' NOT FOUND
2?=W [ 'OR' NOT EXPECTED
2?QG [ COMPILES:
2#=6 [ A JUMP OR BRANCH
2#PQ [
2*9B #OPT NESTREASON=0
2*P2 #OPT NESTDEPTH=0
2B8L #OPT NESTFLAG=0
2BN= #OPT NESTEITHERS=0
2C7W STRUCTURE 1,ON
2CMG ALTDEPTH +1
2D76 #SKI NESTDEPTH/9 [INCLUDE IF NESTDEPTH 9-16 INCLUSIVE
2DLQ (
2F6B GOIFALSE NIF7,NIF6,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
2FL2 P,%Q,%R,%S,%T,%U,%V
2G5L #EXI
2GK= )
2H4W [ELSE INCLUDE IF NESTDEPTH 1-8 INCLUSIVE
2HJG GOIFALSE NIF2,NIF1,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
2J46 P,%Q,%R,%S,%T,%U,%V
2JHQ #NOR
2K3B [
2KH2 [
2L2L [??? THEN SECT DEVT FGN 1 DOC
2LG= [
2L^W #MAC THEN
2MFG [ ====
2M^6 [
2NDQ [ ENSURES:
2NYB [ DEPTH NON-ZERO
2PD2 [ CURRENT STRUCTURE = CONDITIONAL
2PXL [ 'OR' NOT EXPECTED
2QC= [ 'THEN' NOT FOUND
2QWW [ COMPILES:
2RBG [ 'THEN' LABEL
2RW6 [
2S*Q #UNS NESTDEPTH
2STB (
2T*2 STRUCTURE 1,CHECK
2TSL FLAGTEST THEN,0,NOT,0,NOT,THEN
2W#= #ALT NESTFLAG=NESTFLAG^1
2WRW #SKI NESTDEPTH/9
2X?G (
2XR6 #ALT 20?=NESTDEPTH-9
2Y=Q NESTLABEL NIF6,FREE
2YQB #EXI
2^=2 )
2^PL #ALT 20?=NESTDEPTH-1
329= NESTLABEL NIF1,FREE
32NW #EXI
338G )
33N6 !! MEANINGLESS AT NESTING DEPTH ZERO !!!
347Q #NOR
34MB [
3572 [
35LL [??? ELSE SECT DEVT FGN 1 DOC
366= [
36KW #MAC ELSE
375G [ ====
37K6 [
384Q [ DEPTH NON-ZERO
38JB [ CURRENT STRUCTURE = CONDITIONAL
3942 [ 'OR' NOT EXPECTED
39HL [ 'THEN' FOUND
3=3= [ COMPILES:
3=GW [ BRN TO END OF CONDITIONAL
3?2G [ 'ELSE' LABEL
3?G6 [
3?^Q #UNS NESTDEPTH
3#FB (
3#^2 STRUCTURE 1,CHECK
3*DL FLAGTEST ELSE,0,NOT,1,,THEN
3*Y= #SKI NESTDEPTH/9 [INCLUDE IF NESTDEPTH 9-16 INCLUSIVE
3BCW (
3BXG #ALT 20?=NESTDEPTH-9
3CC6 NESTBRANCH RN,NIF8
3CWQ #ALT 20?=NESTDEPTH-9
3DBB NESTLABEL NIF7,FRE
3DW2 #EXI
3F*L )
3FT= #ALT 20?=NESTDEPTH-1
3G#W NESTBRANCH RN,NIF3
3GSG #ALT 20?=NESTDEPTH-1
3H#6 NESTLABEL NIF2,FRE
3HRQ #EXI
3J?B )
3JR2 !! MEANINGLESS AT NESTING DEPTH ZERO !!
3K=L #NOR
3KQ= [
3L9W [
3LPG [??? FI SECT DEVT FGN 1 DOC
3M96 [
3MNQ #MAC FI
3N8B [ ==
3NN2 [
3P7L [ ENSURES:
3PM= [ DEPTH NON-ZERO
3Q6W [ CURRENT STRUCTURE = CONDITIONAL
3QLG [ 'OR' NOT EXPECTED
3R66 [ 'THEN' FOUND
3RKQ [ COMPILES:
3S5B [ 'ELSE' LABEL
3SK2 [ LABEL FOR END OF CONDITIONAL
3T4L [ SETS:
3TJ= [ DEPTH DOWN, RETRACTS THE THREE STACK IDENTIFIERS
3W3W [
3WHG #UNS NESTDEPTH
3X36 (
3XGQ STRUCTURE 1,OFF
3Y2B FLAGTEST FI,0,NOT,1,,THEN
3YG2 #SKI NESTDEPTH/9 [INCLUDE IF NESTDEPTH 9-16 INCLUSIVE
3Y^L (
3^F= #ALT 20?=NESTDEPTH-9
3^YW NESTLABEL NIF7,FREE,NIF8,FREE
42DG ALTDEPTH -1
42Y6 #EXI
43CQ )
43XB [ELSE INCLUDE IF NESTDEPTH 1-8 INCLUSIVE
44C2 #ALT 20?=NESTDEPTH-1
44WL NESTLABEL NIF2,FREE,NIF3,FREE
45B= ALTDEPTH -1
45TW #EXI
46*G )
46T6 !! MEANINGLESS AT NESTING DEPTH ZERO !!
47#Q #NOR
47SB [
48#2 [
48RL [??? ELSF SECT DEVT FGN 1 DOC
49?= [
49QW #MAC ELSF
4==G [ ====
4=Q6 [
4?9Q [ ENSURES:
4?PB [ DEPTH NON-ZERO
4#92 [ CURRENT STRUCTURE = CONDITIONAL
4#NL [ 'OR' NOT EXPECTED
4*8= [ 'THEN' FOUND
4*MW [ SETS:
4B7G [ 'THEN' NOT FOUND
4BM6 [ COMPILES:
4C6Q [ BRN TO END OF CONDITIONAL
4CLB [ 'ELSE' LABEL
4D62 [ A JUMP OR BRANCH
4DKL [
4F5= #UNS NESTDEPTH
4FJW (
4G4G STRUCTURE 1,CHECK
4GJ6 FLAGTEST ELSF,0,NOT,1,,THEN
4H3Q #ALT NESTFLAG=NESTFLAG$1 [CLEAR 'THEN'
4HHB #SKI NESTDEPTH/9
4J32 (
4JGL #ALT 20?=NESTDEPTH-9
4K2= NESTBRANCH RN,NIF8
4KFW #ALT 20?=NESTDEPTH-9
4K^G NESTLABEL NIF7,FREE
4LF6 #ALT 20?=NESTDEPTH-9
4LYQ GOIFALSE NIF7,NIF6,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
4MDB P,%Q,%R,%S,%T,%U,%V
4MY2 #EXI
4NCL )
4NX= #ALT 20?=NESTDEPTH-1
4PBW NESTBRANCH RN,NIF3
4PWG #ALT 20?=NESTDEPTH-1
4QB6 NESTLABEL NIF2,FREE
4QTQ #ALT 20?=NESTDEPTH-1
4R*B GOIFALSE NIF2,NIF1,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
4RT2 P,%Q,%R,%S,%T,%U,%V
4S#L #EXI
4SS= )
4T?W !! MEANINGLESS AT NESTING DEPTH ZERO !!
4TRG #NOR
4W?6 [
4WQQ [
4X=B [??? OR SECT DEVT FGN 1 DOC
4XQ2 [
4Y9L #MAC OR
4YP= [ ==
4^8W [
4^NG [ ENSURES:
5286 [ DEPTH NON-ZERO
52MQ [ 'THEN' / 'DO' NOT FOUND
537B [ 'OR' EXPECTED
53M2 [ COMPILES:
546L [ A JUMP OR BRANCH
54L= [ LABEL FOR START OF NEXT CONDITION STEP
555W [
55KG #UNS NESTDEPTH
5656 (
56JQ FLAGTEST OR,1,,0,NOT,THEN/DO
574B #ALT NESTEITHERS=NESTEITHERS$1 [CLEAR 'EITHER'
57J2 #SKI NESTDEPTH/9
583L (
58H= GOIFALSE NIF7,NIF6,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
592W P,%Q,%R,%S,%T,%U,%V
59GG #ALT 20?=NESTDEPTH-9
5=26 #STR EITHER,%A
5=FQ (
5=^B NESTLABEL NIF6,FREE
5?F2 #EXI
5?YL )
5#D= NESTLABEL NIF7,FREE
5#XW #EXI
5*CG )
5*X6 GOIFALSE NIF2,NIF1,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
5BBQ P,%Q,%R,%S,%T,%U,%V
5BWB #ALT 20?=NESTDEPTH-1
5CB2 #STR EITHER,%A
5CTL (
5D*= NESTLABEL NIF1,FREE
5DSW #EXI
5F#G )
5FS6 NESTLABEL NIF2,FREE
5G?Q #EXI
5GRB )
5H?2 !! MEANINGLESS AT NESTING DEPTH ZERO !!
5HQL #NOR
5J== [
5JPW [
5K9G [??? AND SECT DEVT FGN 1 DOC
5KP6 [
5L8Q #MAC AND
5LNB [ ===
5M82 [
5MML [ ENSURES:
5N7= [ DEPTH NON-ZERO
5NLW [ 'THEN' / 'DO' NOT FOUND
5P6G [ 'OR' EXPECTED
5PL6 [ COMPILES:
5Q5Q [ A JUMP OR BRANCH
5QKB [ LABEL FOR START OF NEXT CONDITION STEP
5R52 [
5RJL #UNS NESTDEPTH
5S4= (
5SHW FLAGTEST AND,0,NOT,0,NOT,THEN/DO
5T3G #SKI NESTDEPTH/9
5TH6 (
5W2Q GOIFALSE NIF7,NIF6,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
5WGB P,%Q,%R,%S,%T,%U,%V
5X22 #ALT 20?=NESTDEPTH-9
5XFL #STR EITHER,%A
5X^= (
5YDW NESTLABEL NIF6,FREE
5YYG #EXI
5^D6 )
5^XQ NESTLABEL NIF7,FREE
62CB #EXI
62X2 )
63BL GOIFALSE NIF2,NIF1,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
63W= P,%Q,%R,%S,%T,%U,%V
64*W #ALT 20?=NESTDEPTH-1
64TG #STR EITHER,%A
65*6 (
65SQ NESTLABEL NIF1,FREE
66#B #EXI
66S2 )
67?L NESTLABEL NIF2,FREE
67R= #EXI
68=W )
68QG !! MEANINGLESS AT NESTING DEPTH ZERO !!
69=6 #NOR
69PQ [
6=9B [
6=P2 #
6?8L [??? WHILE SECT DEVT FGN 1 DOC
6?N= [
6#7W #MAC WHILE
6#MG [ =====
6*76 [
6*LQ [ SETS:
6B6B [ DEPTH UP, ADVANCES THE THREE STACK IDENTIFIERS
6BL2 [ CURRENT STUCTURE = ITERATION
6C5L [ 'DO' NOT FOUND
6CK= [ 'OR' NOT EXPECTED
6D4W [ COMPILES:
6DJG [ LABEL FOR START OF ITERATION
6F46 [ A JUMP OR BRANCH
6FHQ [
6G3B #OPT NESTREASON=0
6GH2 #OPT NESTDEPTH=0
6H2L #OPT NESTFLAG=0
6HG= #OPT NESTEITHERS=0
6H^W STRUCTURE 0,ON
6JFG ALTDEPTH +1
6J^6 #SKI NESTDEPTH/9 [INCLUDE IF NESTDEPTH 9-16 INCLUSIVE
6KDQ (
6KYB #ALT 20?=NESTDEPTH-9
6LD2 NESTLABEL NIF5
6LXL GOIFALSE NIF7,NIF6,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
6MC= P,%Q,%R,%S,%T,%U,%V
6MWW #EXI
6NBG )
6NW6 #ALT 20?=NESTDEPTH-1
6P*Q NESTLABEL NIF0
6PTB GOIFALSE NIF2,NIF1,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%-
6Q*2 P,%Q,%R,%S,%T,%U,%V
6QSL #NOR
6R#= [
6RRW [
6S?G [??? DO SECT DEVT FGN 1 DOC
6SR6 [
6T=Q #MAC DO
6TQB [ ==
6W=2 [
6WPL [ (FOLLOWING 'WHILE')
6X9= [ ENSURES:
6XNW [ 'DO' NOT FOUND
6Y8G [ 'OR' NOT EXPECTED
6YN6 [ CURRENT STUCTURE = ITERATION
6^7Q [ SETS:
6^MB [ 'DO' FOUND
7272 [ COMPILES:
72LL [ LABEL FOR START OF ITERATION BODY
736= [
73KW [ (NOT FOLLOWING 'WHILE')
745G [ SETS:
74K6 [ DEPTH UP, ADVANCES THE THREE STACK IDENTIFIERS
754Q [ CURRENT STUCTURE = ITERATION
75JB [ 'DO' FOUND
7642 [ 'OR' NOT EXPECTED
76HL [ COMPILES:
773= [ LABEL FOR START OF ITERATION
77GW [
782G #UNS NESTDEPTH
78G6 (
78^Q #SKI NESTFLAG^NESTREASON&1<1$1
79FB ( [IF FOLLOWS 'WHILE'
79^2 FLAGTEST DO,0,NOT,0,,A CATASTROPHE
7=DL #ALT NESTFLAG=NESTFLAG^1 [SET 'DO'
7=Y= STRUCTURE 0,CHECK
7?CW #SKI NESTDEPTH/9
7?XG (
7#C6 #ALT 20?=NESTDEPTH-9
7#WQ NESTLABEL NIF6,FREE
7*BB #EXI
7*W2 )
7B*L #ALT 20?=NESTDEPTH-1
7BT= NESTLABEL NIF1,FREE
7C#W #EXI
7CSG )
7D#6 ) [IF DOESN'T FOLLOW 'WHILE'
7DRQ #OPT NESTREASON=0
7F?B #OPT NESTFLAG=0
7FR2 #OPT NESTDEPTH=0
7G=L #OPT NESTEITHERS=0
7GQ= STRUCTURE 0,ON
7H9W ALTDEPTH +1
7HPG #ALT NESTFLAG=NESTFLAG^1 [SET 'DO'
7J96 #SKI NESTDEPTH/9
7JNQ (
7K8B #ALT 20?=NESTDEPTH-9
7KN2 NESTLABEL NIF5
7L7L #EXI
7LM= )
7M6W #ALT 20?=NESTDEPTH-1
7MLG NESTLABEL NIF0
7N66 #NOR
7NKQ [
7P5B [
7PK2 [??? REPEAT SECT DEVT FGN 1 DOC
7Q4L [
7QJ= #MAC REPEAT
7R3W [ ======
7RHG [
7S36 [ ENSURES:
7SGQ [ DEPTH NON-ZERO
7T2B [ CURRENT STUCTURE = ITERATION
7TG2 [ 'DO' FOUND
7T^L [ 'OR' NOT EXPECTED
7WF= [ COMPILES:
7WYW [ A JUMP OR BRANCH
7XDG [ LABEL FOR END OF ITERATION
7XY6 [ SETS:
7YCQ [ DEPTH DOWN, RETRACTS THE THREE STACK IDENTIFIERS
7YXB [
7^C2 #UNS NESTDEPTH
7^WL (
82B= STRUCTURE 0,OFF
82TW FLAGTEST REPEAT,0,NOT,1,,DO
83*G #STR UNTIL,%A
83T6 (
84#Q #SKI NESTDEPTH/9 [INCLUDE IF NESTDEPTH 9-16 INCLUSIVE
84SB (
85#2 #ALT 20?=NESTDEPTH-9
85RL #STR %A
86?= NESTFBRANCH %A,NIF5
86QW #STR %A
87=G #SKI
87Q6 NESTFBRANCH RN,NIF5
889Q #ALT 20?=NESTDEPTH-9
88PB NESTLABEL NIF7,FREE
8992 #ALT 20?=NESTDEPTH-9
89NL ALTDEPTH -1
8=8= #EXI
8=MW )
8?7G #ALT 20?=NESTDEPTH-1
8?M6 #STR %A
8#6Q NESTFBRANCH %A,NIF0
8#LB #STR %A
8*62 #SKI
8*KL NESTFBRANCH RN,NIF0
8B5= #ALT 20?=NESTDEPTH-1
8BJW NESTLABEL NIF2,FREE
8C4G #ALT 20?=NESTDEPTH-1
8CJ6 ALTDEPTH -1
8D3Q #EXI
8DHB )
8F32 #SKI NESTDEPTH/9
8FGL (
8G2= GOIFALSE NIF5,NIF5,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%-
8GFW Q,%R,%S,%T,%U
8G^G #ALT 20?=NESTDEPTH-9
8HF6 #ALT 21?=20?
8HYQ NESTLABEL NIF7,FREE
8JDB #ALT 20?=21?
8JY2 NESTFREE NIF5
8KCL ALTDEPTH -1
8KX= #EXI
8LBW )
8LWG GOIFALSE NIF0,NIF0,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%-
8MB6 Q,%R,%S,%T,%U
8MTQ #ALT 20?=NESTDEPTH-1
8N*B #ALT 21?=20?
8NT2 NESTLABEL NIF2,FREE
8P#L #ALT 20?=21?
8PS= NESTFREE NIF0
8Q?W ALTDEPTH -1
8QRG #EXI
8R?6 )
8RQQ !! MEANINGLESS AT NESTING DEPTH ZERO !!
8S=B #NOR
8SQ2 [
8T9L [
8T9W ...[??? IFR SECT COMM FGN 1 DOC
8T=6 ...[
8T=B ...#MAC IFR
8T=L ...[ ===
8T=W ...[
8T?6 ...[ CONTRACTION OF 'IF EITHER'
8T?B ...[
8T?L ... IF EITHER,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P, -
8T?W ... %Q,%R,%S,%T
8T#6 ...#NOR
8T#B ...[
8T#L ...[
8T#W ...[??? ANDR SECT COMM FGN 1 DOC
8T*6 ...[
8T*B ...#MAC ANDR
8T*L ...[ ====
8T*W ...[
8TB6 ...[ CONTRACTION OF 'AND EITHER'
8TBB ...[
8TBL ... AND EITHER,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P, -
8TBW ... %Q,%R,%S,%T
8TC6 ...#NOR
8TCB ...[
8TCL ...[
8TCW ...[??? ORR SECT COMM FGN 1 DOC
8TD6 ...[
8TDB ...#MAC ORR
8TDL ...[ ===
8TDW ...[
8TF6 ...[ CONTRACTION OF 'OR EITHER'
8TFB ...[
8TFL ... OR EITHER,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P, -
8TFW ... %Q,%R,%S,%T
8TG6 ...#NOR
8TGB ...[
8TGL ...[
8TGW ...[??? ELSFR SECT COMM FGN 1 DOC
8TH6 ...[
8THB ...#MAC ELSFR
8THL ...[ =====
8THW ...[
8TJ6 ...[ CONTRACTION OF 'ELSF EITHER'
8TJB ...[
8TJL ... ELSF EITHER,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P, -
8TJW ... %Q,%R,%S,%T
8TK6 ...#NOR
8TKB ...[
8TKL ...[
8TKW ...[??? WHILER SECT COMM FGN 1 DOC
8TL6 ...[
8TLB ...#MAC WHILER
8TLL ...[ ======
8TLW ...[
8TM6 ...[ CONTRACTION OF 'WHILE EITHER'
8TMB ...[
8TML ... WHILE EITHER,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P, -
8TMW ... %Q,%R,%S,%T
8TN6 ...#NOR
8TNB ...[
8TNL ...[
8TP= [ HERE FOLLOW THE UTILITY MACROS
8W8W [ ================================
8WNG [
8X86 [
8XMQ [??? BRANCHIF SECT DEVT FGN 1 DOC
8Y7B [
8YM2 #MAC BRANCHIF
8^6L [ ========
8^L= [
925W [
92KG [ %A - LABEL ROOT
9356 [ %B - BRANCH DEFINER
93JQ [ %C - (OPTIONAL) ACCUMULATOR, OR STORE LOCATION TO BE LOADED INTO X0
944B [ (ONLY USED FOR VISIBLE REGISTER DEFINERS)
94J2 [ %D - (OPTIONAL) OPERAND FOR MACRO BRANCH DEFINER
953L [
95H= [ LOADS X0 IF NECESSARY, SETS UP THE BRANCH AND CALLS 'NESTBRANCH' TO
962W [ PUT THE APPROPRIATE NUMBER (NESTDEPTH MOD 9, HELD IN 20?) OF N'S AT
96GG [ THE START OF THE LABEL ROOT
9726 [
97FQ #STR %C
97^B (
98F2 #ACC %C
98YL (
99D= LDX 0 %C
99XW BRANCHIF %A,%B,0,%D
9=CG #EXI
9=X6 )
9?BQ )
9?WB #ALT 20?=NESTDEPTH-1
9#B2 #SKI NESTDEPTH/9
9#TL #ALT 20?=20?-8
9**= #STR %D
9*SW (
9B#G NESTBRANCH X%B %C %D,%A
9BS6 #EXI
9C?Q )
9CRB NESTBRANCH %B %C,%A
9D?2 #NOR
9DQL [
9F== [
9FPW [??? GOIFALSE SECT DEVT FGN 1 DOC
9G9G [
9GP6 #MAC GOIFALSE
9H8Q [ ========
9HNB [
9J82 [
9JML [ %A - LABEL ROOT FOR STANDARD JUMP
9K7= [ %B - LABEL ROOT FOR IF 'EITHER' GIVEN, I.E. 'OR' EXPECTED TO FOLLOW
9KLW [ %C ... PARAMETERS TO THE CALLING USER LEVEL MACRO
9L6G [
9LL6 [ IF 'EITHER' GIVEN THEN
9M5Q ...[ SETS 'OR EXPECTED' IN 'NESTEITHERS'
9MKB [ CALLS 'GOIFTRUE' WITHOUT THE 'EITHER' AND WITH %A, %B REVERSED
9N52 [ ELSE INVERTS JUMP DIRECTION BY 'IFN' MACRO
9NJL [
9P4= #STR BOTH,%C ['BOTH' HAS NO EFFECT
9PHW #SKI
9Q3G (
9QH6 GOIFALSE %A,%B,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
9R2Q ,%U,%V
9RGB #EXI
9S22 )
9SFL #STR EITHER,%C ['EITHER' CHANGES JUMP
9S^= #SKI
9TDW (
9TYG #ALT NESTEITHERS=NESTEITHERS^1 [SET 'EITHER'
9WD6 GOIFTRUE %B,%A,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
9WXQ ,%U,%V
9XCB #EXI
9XX2 )
9YBL #ACC %C
9YW= (
9^*W #STR +,%C
9^TG (
=2*6 IFN%C %A,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U-
=2SQ ,%V,%W
=3#B [ E.G. IFNCS NIF2
=3S2 [ OR IFNBS NIF1,2,BIT1
=4?L #EXI
=4R= )
=5=W )
=5QG IFN%D %A,%C,%E
=6=6 [ E.G. IFNGE NIF1,0,GSIGN
=6PQ #NOR
=79B [
=7P2 [
=88L [??? GOIFTRUE SECT DEVT FGN 1 DOC
=8N= [
=97W #MAC GOIFTRUE
=9MG [ ========
==76 [
==LQ [
=?6B [ %A - LABEL ROOT FOR STANDARD JUMP
=?L2 [ %B - LABEL ROOT FOR IF 'EITHER' GIVEN, I.E. 'OR' EXPECTED TO FOLLOW
=#5L [ %C ... PARAMETERS TO THE CALLING USER LEVEL MACRO
=#K= [
=*4W [ IF 'EITHER' GIVEN THEN
=*JG ...[ SETS 'OR EXPECTED' IN 'NESTEITHERS'
=B46 [ CALLS 'GOIFALSE' WITHOUT THE 'EITHER' AND WITH %A, %B REVERSED
=BHQ [ ELSE CALLS 'JUMPIF' OR 'BRANCHIF' TO COMPILE THE BRANCH
=C3B [
=CH2 #STR BOTH,%C ['BOTH' HAS NO EFFECT
=D2L #SKI
=DG= (
=D^W GOIFTRUE %A,%B,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
=FFG ,%U,%V
=F^6 #EXI
=GDQ )
=GYB #STR EITHER,%C ['EITHER' CHANGES JUMP
=HD2 #SKI
=HXL (
=JC= #ALT NESTEITHERS=NESTEITHERS^1 [SET 'EITHER'
=JWW GOIFALSE %B,%A,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
=KBG ,%U,%V
=KW6 #EXI
=L*Q )
=LTB #ACC %C
=M*2 (
=MSL #STR +,%C
=N#= (
=NRW #STR %D
=P?G (
=PR6 JUMPIF %C,%A,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
=Q=Q ,%U,%V,%W
=QQB [ E.G. JUMPIF MBS,NIF2,2,ENPR,FSTAR
=R=2 #EXI
=RPL )
=S9= BRANCHIF %A,%C
=SNW [ E.G. BRANCHIF NIF1,CS
=T8G #EXI
=TN6 )
=W7Q )
=WMB BRANCHIF %A,%D,%C,%E
=X72 [ E.G. BRANCHIF NIF2,GE,0,GSIGN
=XLL #NOR
=Y6= [
=YKW [
=^5G [??? NESTJUMP SECT DEVT FGN 1 DOC
=^K6 [
?24Q #MAC NESTJUMP
?2JB [ ========
?342 [
?3HL [
?43= [ %A - LABEL ROOT
?4GW [ %B - JUMP CONDITION DEFINER
?52G [ %C - PARAMETERS TO JUMP CONDITION DEFINER
?5G6 [
?5^Q [ PREFIXES THE LABEL ROOT WITH 20? N'S AND SETS UP THE JUMP
?6FB [ FOR COMPILATION
?6^2 [
?7DL #SKI 20?
?7Y= (
?8CW #ALT 20?=20?-1
?8XG NESTJUMP N%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%-
?9C6 S,%T,%U,%V
?9WQ #EXI
?=BB )
?=W2 J%B %A,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T-
??*L ,%U,%V
??T= #NOR
?##W [
?#SG [
?*#6 [??? JUMPIF SECT DEVT FGN 1 DOC
?*RQ [
?B?B #MAC JUMPIF
?BR2 [ ======
?C=L [
?CQ= [
?D9W [ %A - JUMP CONDITION DEFINER
?DPG [ %B - LABEL ROOT
?F96 [ %C - PARAMETERS TO JUMP CONDITION DEFINER
?FNQ [
?G8B [ CALLS 'NESTJUMP' TO PUT THE APPROPRIATE NUMBER (NESTDEPTH MOD 9,
?GN2 [ HELD IN 20?) OF N'S AT THE START OF THE LABEL ROOT AND COMPILE THE
?H7L [ JUMP MACRO
?HM= [
?HND ...#STR BUSY,%A
?HPL ...#SKI
?HQS ...(
?HS2 ... JUMPIF INUSE,%B,%C
?HT8 ...#EXI
?HWB ...)
?HXJ ...#STR UNBUSY,%A
?HYQ ...#SKI
?H^Y ...(
?J36 ... JUMPIF NOTINUSE,%B,%C
?J4# ...#EXI
?J5G ...)
?J6W #ALT 20?=NESTDEPTH-1
?JLG #SKI NESTDEPTH/9
?K66 #ALT 20?=20?-8
?KKQ NESTJUMP %B,%A,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S-
?L5B ,%T,%U,%V
?LK2 #NOR
?M4L [
?MJ= [
?N3W [??? NESTBRANCH SECT DEVT FGN 1 DOC
?NHG [
?P36 #MAC NESTBRANCH
?PGQ [ ==========
?Q2B [
?QG2 [
?Q^L [ %A - BRANCH ROOT, E.G. 'CC' OR 'ZE 7' OR 'XGE 5 BCOUNT'
?RF= [ %B - LABEL ROOT
?RYW [
?SDG [ PREFIXES THE LABEL ROOT WITH 20? N'S AND SETS UP THE BRANCH OR
?SY6 [ BRANCH MACRO FOR COMPILATION
?TCQ [
?TXB #SKI 20?
?WC2 (
?WWL #ALT 20?=20?-1
?XB= NESTBRANCH %A,N%B
?XTW #EXI
?Y*G )
?YT6 #STR X,%A
?^#Q (
?^SB B%A %B
#2#2 #EXI
#2RL )
#3?= B%A,%B
#3QW #NOR
#4=G [
#4Q6 [
#59Q [??? NESTFBRANCH SECT DEVT FGN 1 DOC
#5PB [
#692 #MAC NESTFBRANCH
#6NL [ ===========
#78= [
#7MW [
#87G [ AS NESTBRANCH ABOVE, BUT FREES THE LABEL AFTER COMPILING THE BRANCH
#8M6 [ (SAVES AN EXTRA CALL - TO NESTFREE)
#96Q [
#9LB #SKI 20?
#=62 (
#=KL #ALT 20?=20?-1
#?5= NESTFBRANCH %A,N%B
#?JW #EXI
##4G )
##J6 #STR X,%A
#*3Q (
#*HB B%A %B
#B32 #FRE %B
#BGL #EXI
#C2= )
#CFW B%A,%B
#C^G #FRE %B
#DF6 #NOR
#DYQ [
#FDB [
#FY2 [??? NESTFREE SECT DEVT FGN 1 DOC
#GCL [
#GX= #MAC NESTFREE
#HBW [ ========
#HWG [
#JB6 [
#JTQ [ %A - LABEL ROOT
#K*B [
#KT2 [ PREFIXES %A WITH 20? N'S AND #FRE'S THE RESULT
#L#L [
#LS= #SKI 20?
#M?W (
#MRG #ALT 20?=20?-1
#N?6 NESTFREE N%A
#NQQ #EXI
#P=B )
#PQ2 #FRE %A
#Q9L #NOR
#QP= [
#R8W [
#RNG [??? NESTLABEL SECT DEVT FGN 1 DOC
#S86 [
#SMQ #MAC NESTLABEL
#T7B [ =========
#TM2 [
#W6L [
#WL= [ %A - LABEL ROOT
#X5W [
#XKG [ PREFIXES %A WITH 20? N'S AND USES THE RESULT AS A LABEL
#Y56 [ IF IDENTIFIER 'NOIFLABELS' IS SET NON-ZERO THEN THIS IS DONE
#YJQ [ BY #DEF LABEL=CURRENT WORD ADDRESS (TO AVOID SHOWING LABELS
#^4B [ ON THE COMPILATION LISTING)
#^J2 [
*23L #SKI 20?
*2H= (
*32W #ALT 20?=20?-1
*3GG NESTLABEL N%A,%B,N%C,%D
*426 #EXI
*4FQ )
*4^B #UNS NOIFLABELS
*5F2 #DEF %A=0?+37?
*5YL #UNS NOIFLABELS
*6D= #SKI
*6XW %A
*7CG #STR %B
*7X6 #FRE %A
*8BQ #STR %C,%A
*8WB (
*9B2 #UNS NOIFLABELS
*9TL #DEF %C=0?+37?
*=*= #UNS NOIFLABELS
*=SW #SKI
*?#G %C
*?S6 #STR %D
*#?Q #FRE %C
*#RB )
**?2 #NOR
**QL [
*B== [
*BPW [??? STRUCTURE SECT DEVT FGN 1 DOC
*C9G [
*CP6 #MAC STRUCTURE
*D8Q [ =========
*DNB [
*F82 [
*FML [ %A - 1 OR 0 (1 => CONDITIONAL, 0 => ITERATION)
*G7= [ %B - 'ON' OR 'OFF' OR 'CHECK'
*GLW [
*H6G [ IF 'ON', INCREASES DEPTH OF 'NESTREASON' AND SETS B23 TO %A
*HL6 [ IF 'OFF', CHECKS B23 = %A AND DECREASES DEPTH OF 'NESTREASON' ANYWAY
*J5Q [ IF 'CHECK', CHECKS B23 = %A
*JKB [ GENERATES A DIAGNOSTIC ERROR LINE IF A CHECK FAILS
*K52 [
*KJL #STR ON,%B
*L4= #SKI
*LHW (
*M3G #ALT NESTREASON=NESTREASON@L1+%A
*MH6 #EXI
*N2Q )
*NGB #STR OFF,%B
*P22 #SKI
*PFL (
*P^= #SKI NESTREASON&1-%A
*QDW (
*QYG !! CLOSING WRONG STRUCTURE !!
*RD6 #EXI
*RXQ )
*SCB #ALT NESTREASON=NESTREASON@L-1
*SX2 #EXI
*TBL )
*TW= #STR CHECK,%B
*W*W #SKI
*WTG (
*X*6 #SKI NESTREASON&1-%A
*XSQ !! IN WRONG STRUCTURE !!
*Y#B #EXI
*YS2 )
*^?L !! ACTION MUST BE ON, OFF OR CHECK !!
*^R= #NOR
B2=W [
B2QG [
B3=6 [??? ALTDEPTH SECT DEVT FGN 1 DOC
B3PQ [
B49B #MAC ALTDEPTH
B4P2 [ ========
B58L [
B5N= [
B67W [ %A - +1 OR -1
B6MG [
B776 [ ALTERS 'NESTDEPTH' AND SHIFTS STACK IDENTIFIERS 'NESTEITHERS'
B7LQ [ AND 'NESTFLAG' APPROPRIATELY
B86B [
B8L2 #ALT NESTDEPTH=NESTDEPTH%A
B95L #STR +,%A
B9K= (
B=4W #ALT NESTEITHERS=NESTEITHERS@L-1
B=JG #ALT NESTFLAG=NESTFLAG@L-1
B?46 #EXI
B?HQ )
B#3B #ALT NESTEITHERS=NESTEITHERS@L1
B#H2 #ALT NESTFLAG=NESTFLAG@L1
B*2L #NOR
B*G= [
B*^W [
BBFG [??? FLAGTEST SECT DEVT FGN 1 DOC
BB^6 [
BCDQ #MAC FLAGTEST
BCYB [ ========
BDD2 [
BDXL [
BFC= [ %A - NAME OF CALLING USER LEVEL MACRO
BFWW [ %B - 1 => 'EITHER' SHOULD HAVE BEEN GIVEN PREVIOUSLY (ELSE 0)
BGBG [ %C - 'NOT' OR NULL - USED IN ERROR MESSAGE
BGW6 [ %D - 1 => 'THEN' OR 'DO' SHOULD HAVE BEEN GIVEN PREVIOUSLY (ELSE 0)
BH*Q [ %E - 'NOT' OR NULL - USED IN ERROR MESSAGE
BHTB [ %F - 'THEN', 'DO' OR 'THEN/DO' AS APPROP - USED IN ERROR MESSAGE
BJ*2 [
BJSL [ CHECKS THAT B23'S OF 'NESTEITHERS' AND 'NESTFLAG' ARE AS EXPECTED.
BK#= [ IF NOT, SETS THEM CORRECTLY AND OUTPUTS A DIAGNOSTIC ERROR MESSAGE
BKRW [
BL?G #SKI NESTEITHERS&1-%B
BLR6 (
BM=Q !! %A MUST %C FOLLOW 'EITHER' !!
BMQB #ALT NESTEITHERS=NESTEITHERS$1 [INVERT B23
BN=2 )
BNPL #SKI NESTFLAG&1-%D
BP9= (
BPNW !! %A MUST %E FOLLOW '%F' !!
BQ8G #ALT NESTFLAG=NESTFLAG$1 [INVERT B23
BQN6 )
BR7Q #NOR
BRMB [
BS72 [
BSLL [ HERE FOLLOW THE SUBSIDIARY MACROS
BT6= [ =================================
BTKW [
BW5G [
BWK6 [ DIRECTION INVERSION MACROS, E.G.
BX4Q [ IF 0,NZ
BXJB [ ==
BY42 [ -> GOIFALSE NIF2,NIF1,0,NZ
BYHL [ -> IFNNZ NIF2,0
B^3= [ -> BRANCHIF NIF2,ZE,0
B^GW [ -> NESTBRANCH ZE 0,NIF2
C22G [ -> BZE 0 NNNNIF2
C2G6 [ ==
C2^Q [
C3FB [
C3^2 [??? IFNFALSE SECT DEVT FGN 1 DOC
C4DL [
C4Y= #MAC IFNFALSE
C5CW [ ========
C5XG BRANCHIF %A,TRUE
C6C6 #NOR
C6WQ [??? IFNTRUE SECT DEVT FGN 1 DOC
C7BB [
C7W2 #MAC IFNTRUE
C8*L [ =======
C8T= [ I.E. BRN IF FALSE I.E. DO NOTHING
C9#W #NOR
C9SG [??? BTRUE SECT DEVT FGN 1 DOC
C=#6 [
C=RQ #MAC BTRUE
C??B [ =====
C?R2 BRN %A
C#=L #NOR
C#Q= [??? BFALSE SECT DEVT FGN 1 DOC
C*9W [
C*PG #MAC BFALSE
CB96 [ ======
CBNQ [ I.E. BRN IF FALSE I.E. DO NOTHING
CC8B #NOR
CC92 ...[??? JINUSE SECT COMM FGN 1 DOC
CC9L ...[
CC== ...#MAC JINUSE
CC=W ...[ ======
CC?G ... JBUSY %B,%A
CC#6 ...#NOR
CC#Q ...[??? JNOTINUS SECT COMM FGN 1 DOC
CC*B ...[
CCB2 ...#MAC JNOTINUSE
CCBL ...[ =========
CCC= ... JUNBUSY %B,%A
CCCW ...#NOR
CCDG ...[??? IFNBUSY SECT COMM FGN 1 DOC
CCF6 ...[
CCFQ ...#MAC IFNBUSY
CCGB ...[ =======
CCH2 ... JUMPIF UNBUSY,%A,%B,%C,%D
CCHL ...#NOR
CCJ= ...[??? IFNUNBUS SECT COMM FGN 1 DOC
CCJW ...[
CCKG ...#MAC IFNUNBUSY
CCL6 ...[ =========
CCLQ ... JUMPIF BUSY,%A,%B,%C,%D
CCMB ...#NOR
CCN2 [??? JREP2 SECT DEVT FGN 1 DOC
CD7L [
CDM= #MAC JREP2
CF6W [ =====
CFLG LDX 0 ACOMMUNE9(2)
CG66 #SKI ANS%B
CGKQ SBN 0 ANS%B
CH5B BZE 0 %A
CHK2 #NOR
CJ4L [??? JRPN2 SECT DEVT FGN 1 DOC
CJJ= [
CK3W #MAC JRPN2
CKHG [ =====
CL36 LDX 0 ACOMMUNE9(2)
CLGQ #SKI ANS%B
CM2B SBN 0 ANS%B
CMG2 BNZ 0 %A
CM^L #NOR
CNF= [??? JREP SECT DEVT FGN 1 DOC
CNYW [
CPDG #MAC JREP
CPY6 [ ====
CQCQ SMO FX2
CQXB LDX 0 ACOMMUNE9
CRC2 #SKI ANS%B
CRWL SBN 0 ANS%B
CSB= BZE 0 %A
CSTW #NOR
CT*G [??? JREPN SECT DEVT FGN 1 DOC
CTT6 [
CW#Q #MAC JREPN
CWSB [ =====
CX#2 SMO FX2
CXRL LDX 0 ACOMMUNE9
CY?= #SKI ANS%B
CYQW SBN 0 ANS%B
C^=G BNZ 0 %A
C^Q6 #NOR
D29Q [??? IFNREP2 SECT DEVT FGN 1 DOC
D2PB [
D392 #MAC IFNREP2
D3NL [ =======
D48= JUMPIF RPN2,%A,%B
D4MW #NOR
D57G [??? IFNRPN2 SECT DEVT FGN 1 DOC
D5M6 [
D66Q #MAC IFNRPN2
D6LB [ =======
D762 JUMPIF REP2,%A,%B
D7KL #NOR
D85= [??? IFNREP SECT DEVT FGN 1 DOC
D8JW [
D94G #MAC IFNREP
D9J6 [ ======
D=3Q JUMPIF REPN,%A,%B
D=HB #NOR
D?32 [??? IFNREPN SECT DEVT FGN 1 DOC
D?GL [
D#2= #MAC IFNREPN
D#FW [ =======
D#^G JUMPIF REP,%A,%B
D*F6 #NOR
D*YQ [??? IFNCS SECT DEVT FGN 1 DOC
DBDB [
DBY2 #MAC IFNCS
DCCL [ =====
DCX= BRANCHIF %A,CC
DDBW #NOR
DDWG [??? IFNCC SECT DEVT FGN 1 DOC
DFB6 [
DFTQ #MAC IFNCC
DG*B [ =====
DGT2 BRANCHIF %A,CS
DH#L #NOR
DHS= [??? IFNVS SECT DEVT FGN 1 DOC
DJ?W [
DJRG #MAC IFNVS
DK?6 [ =====
DKQQ BRANCHIF %A,VC
DL=B #NOR
DLQ2 [??? IFNVC SECT DEVT FGN 1 DOC
DM9L [
DMP= #MAC IFNVC
DN8W [ =====
DNNG BRANCHIF %A,VS
DP86 #NOR
DPMQ [??? IFNVSR SECT DEVT FGN 1 DOC
DQ7B [
DQM2 #MAC IFNVSR
DR6L [ ======
DRL= BRANCHIF %A,VCR
DS5W #NOR
DSKG [??? IFNVCR SECT DEVT FGN 1 DOC
DT56 [
DTJQ #MAC IFNVCR
DW4B [ ======
DWJ2 BRANCHIF %A,VSR
DX3L #NOR
DXH= [??? IFNGE SECT DEVT FGN 1 DOC
DY2W [
DYGG #MAC IFNGE
D^26 [ =====
D^FQ BRANCHIF %A,L,%B,%C
D^^B #NOR
F2F2 [??? IFNL SECT DEVT FGN 1 DOC
F2YL [
F3D= #MAC IFNL
F3XW [ ====
F4CG BRANCHIF %A,GE,%B,%C
F4X6 #NOR
F5BQ [??? IFNE SECT DEVT FGN 1 DOC
F5WB [
F6B2 #MAC IFNE
F6TL [ ====
F7*= BRANCHIF %A,U,%B,%C
F7SW #NOR
F8#G [??? IFNU SECT DEVT FGN 1 DOC
F8S6 [
F9?Q #MAC IFNU
F9RB [ ====
F=?2 BRANCHIF %A,E,%B,%C
F=QL #NOR
F?== [??? IFNZE SECT DEVT FGN 1 DOC
F?PW [
F#9G #MAC IFNZE
F#P6 [ =====
F*8Q BRANCHIF %A,NZ,%B
F*NB #NOR
FB82 [??? IFNNZ SECT DEVT FGN 1 DOC
FBML [
FC7= #MAC IFNNZ
FCLW [ =====
FD6G BRANCHIF %A,ZE,%B
FDL6 #NOR
FF5Q [??? IFNNG SECT DEVT FGN 1 DOC
FFKB [
FG52 #MAC IFNNG
FGJL [ =====
FH4= BRANCHIF %A,PZ,%B
FHHW #NOR
FJ3G [??? IFNPZ SECT DEVT FGN 1 DOC
FJH6 [
FK2Q #MAC IFNPZ
FKGB [ =====
FL22 BRANCHIF %A,NG,%B
FLFL #NOR
FL^= [??? IFNBS SECT DEVT FGN 1 DOC
FMDW [
FMYG #MAC IFNBS
FND6 [ =====
FNXQ JUMPIF BC,%A,%B,%C
FPCB #NOR
FPX2 [??? IFNBC SECT DEVT FGN 1 DOC
FQBL [
FQW= #MAC IFNBC
FR*W [ =====
FRTG JUMPIF BS,%A,%B,%C
FS*6 #NOR
FSSQ [??? IFNBSS SECT DEVT FGN 1 DOC
FT#B [
FTS2 #MAC IFNBSS
FW?L [ ======
FWR= JUMPIF BCS,%A,%B,%C
FX=W #NOR
FXQG [??? IFNBCS SECT DEVT FGN 1 DOC
FY=6 [
FYPQ #MAC IFNBCS
F^9B [ ======
F^P2 JUMPIF BSS,%A,%B,%C
G28L #NOR
G2N= [??? IFNBSC SECT DEVT FGN 1 DOC
G37W [
G3MG #MAC IFNBSC
G476 [ ======
G4LQ JUMPIF BCC,%A,%B,%C
G56B #NOR
G5L2 [??? IFNBCC SECT DEVT FGN 1 DOC
G65L [
G6K= #MAC IFNBCC
G74W [ ======
G7JG JUMPIF BSC,%A,%B,%C
G846 #NOR
G8HQ [??? IFNBWS SECT DEVT FGN 1 DOC
G93B [
G9H2 #MAC IFNBWS
G=2L [ ======
G=G= JUMPIF BWC,%A,%B,%C
G=^W #NOR
G?FG [??? IFNBWC SECT DEVT FGN 1 DOC
G?^6 [
G#DQ #MAC IFNBWC
G#YB [ ======
G*D2 JUMPIF BWS,%A,%B,%C
G*XL #NOR
GBC= [??? IFNFZ SECT DEVT FGN 1 DOC
GBWW [
GCBG #MAC IFNFZ
GCW6 [ =====
GD*Q JUMPIF FNZ,%A,%B,%C
GDTB #NOR
GF*2 [??? IFNFNZ SECT DEVT FGN 1 DOC
GFSL [
GG#= #MAC IFNFNZ
GGRW [ ======
GH?G JUMPIF FZ,%A,%B,%C
GHR6 #NOR
GJ=Q [??? IFNDECFZ SECT DEVT FGN 1 DOC
GJQB [
GK=2 #MAC IFNDECFZ
GKPL [ ========
GL9= JUMPIF DECFNZ,%A,%B,%C
GLNW #NOR
GM8G [??? IFNDECFNZ SECT DEVT FGN 1 DOC
GMN6 [
GN7Q #MAC IFNDECFNZ
GNMB [ =========
GP72 JUMPIF DECFZ,%A,%B,%C
GPLL #NOR
GQ6= [??? IFNMBS SECT DEVT FGN 1 DOC
GQKW [
GR5G #MAC IFNMBS
GRK6 [ ======
GS4Q JUMPIF MBAC,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,-
GSJB %R,%S,%T,%U
GT42 #NOR
GTHL [??? IFNMBAC SECT DEVT FGN 1 DOC
GW3= [
GWGW #MAC IFNMBAC
GX2G [ =======
GXG6 JUMPIF MBS,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%-
GX^Q R,%S,%T,%U
GYFB #NOR
GY^2 [??? IFNMBC SECT DEVT FGN 1 DOC
G^DL [
G^Y= #MAC IFNMBC
H2CW [ ======
H2XG JUMPIF MBAS,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,-
H3C6 %R,%S,%T,%U
H3WQ #NOR
H4BB [??? IFNMBAS SECT DEVT FGN 1 DOC
H4W2 [
H5*L #MAC IFNMBAS
H5T= [ =======
H6#W JUMPIF MBC,%A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%-
H6SG R,%S,%T,%U
H7#6 #NOR
H7RQ ...[??? IFNENV SECT COMM FGN 1 DOC
H8?B ...[
H8R2 ...#MAC IFNENV
H9=L ...[ ======
H9Q= ... JUMPIF ENVNOT,%A,%B,%C,%D
H=9W ...#NOR
H=PG ...[??? IFNENVNO SECT COMM FGN 1 DOC
H?96 ...[
H?NQ ...#MAC IFNENVNOT
H#8B ...[ =========
H#N2 ... JUMPIF ENV,%A,%B,%C,%D
H*7L ...#NOR
H*M= ...[
HB6W ...[
HBLG ...[
HC66 ...#SKI
HCKQ ...( [********* READY WHEN NEEDED
HD5B ...[
HDK2 ...[
HF4L ...[ 'BLOCK' GROUP OF MACROS
HFJ= ...[ =======================
HG3W ...[
HGHG ...[
HH36 ...[
HHGQ ...[
HJ2B ...[
HJG2 ...[ A BLOCK IS IN THIS CONTEXT EFFECTIVELY A SUBROUTINE
HJ^L ...[ FOR WHICH ONLY ONE CALL IS ALLOWED (SINCE THERE IS
HKF= ...[ NO LINK)
HKYW ...[
HLDG ...[ IT IS A BLOCK OF CODE STARTED BY 'BLOCK' AND TERMINATED
HLY6 ...[ BY 'ENDBLOCK'. THE EQUIVALENT OF CALL IS 'EXECUTE',
HMCQ ...[ OF WHICH ONLY ONE IS ALLOWED FOR EACH BLOCK.
HMXB ...[
HNC2 ...[ THE EFFECT OF AN EXECUTE IS TO BRN TO THE TOP OF THE
HNWL ...[ BLOCK. AT THE END OF THE BLOCK, A BRN IS DONE TO THE
HPB= ...[ INSTRUCTION FOLLOWING THE EXECUTE. THUS WE HAVE MERELY
HPTW ...[ DISPLACED A BLOCK OF CODE FROM THE MAIN PATH AT THE
HQ*G ...[ COST OF TWO INSTRUCTIONS. THE GAIN IN READABILITY OF
HQT6 ...[ THE CODE MUST BE BALANCED AGAINST THIS OVERHEAD
HR#Q ...[
HRSB ...[
HS#2 ...[
HSRL ...[??? BLOCK SECT COMM FGN 1 DOC
HT?= ...[
HTQW ...#MAC BLOCK
HW=G ...[ =====
HWQ6 ...[
HX9Q ...[ MERELY A LABEL. ONLY MACROISED FOR READABILITY
HXPB ...[
HY92 ...#DEF %A0=0?+37?
HYNL ...#NOR
H^8= ...[
H^MW ...[
J27G ...[??? ENDBLOCK SECT COMM FGN 1 DOC
J2M6 ...[
J36Q ...#MAC ENDBLOCK
J3LB ...[ ========
J462 ...[
J4KL ...[ ENSURES THAT IT FOLLOWS A BLOCK-START LABEL FOR
J55= ...[ THE BLOCK IN QUESTION. GENERATES A BRN TO THE
J5JW ...[ INSTRUCTION FOLLOWING THE 'EXECUTE' FOR THIS BLOCK
J64G ...[
J6J6 ...#SKI %A0&0
J73Q ...!! BLOCK %A NOT YET STARTED
J7HB ... BRN %A1
J832 ...#NOR
J8GL ...[
J92= ...[
J9FW ...[??? EXECUTE SECT COMM FGN 1 DOC
J9^G ...[
J=F6 ...#MAC EXECUTE
J=YQ ...[ =======
J?DB ...[
J?Y2 ...[ EXECUTES A BLOCK OF CODE DELIMITED BY 'BLOCK' AND
J#CL ...[ 'ENDBLOCK' MACROS. GENERATES A BRN TO THE BLOCK,
J#X= ...[ AND A RETURN LABEL
J*BW ... BRN %A0
J*WG ...#DEF %A1=0?+37?
JBB6 ...#NOR
JBTQ ...)
^^^^ ...504456400005