; ; ALTERED: ; EDWIN H. MARISON 11 MAY 76 15:39 ; ARTHUR P. GAUGHAN, JR. 9-FEB-1978 ; ARTHUR P. GAUGHAN, JR. 28-JUL-1978 ; ARTHUR P. GAUGHAN, JR. 28-AUG-1978 ; RICHARD L. MICHAUD 2-NOV-78 (ADD NVS,NVC,RVS,RVC .MCALL TO SMCALL) ; ARTHUR P. GAUGHAN, JR. 5-DEC-78 ; ARTHUR P. GAUGHAN, JR. 27-JUN-79 IMPROVE SYMMETRY AND CLEAN UP ; ARTHUR P. GAUGHAN, JR. 19-MAR-80 ADD BEGINMODULE,ENDMODULE ; ARTHUR P. GAUGHAN, JR. 24-MAR-80 REMOVE ENDMODULE ; ARTHUR P. GAUGHAN, JR. 26-MAR-80 PUT BACK WHILEB IN SMCALL ; BRUCE GOODSTEIN 13-JUN-80 ADD SHORT BRANCHES AND RESTART LOOP ; BRUCE GOODSTEIN 02-JUL-80 MODIFY GOTO,JUMPTO AND RESTART TO USE BRJ ; BRUCE GOODSTEIN 18-SEP-80 CHANGE LABELS,PRINT NO CODE GENERATED MESS,FIX PUSHB ;STRUCTURED PROGRAMMING MACROS ; ; ** SUPMAC ** ; ;;;;; V0054 ; .MACRO SMACIT .MCALL SMCALL $SUPMC=54 $DIDDO=0 $EF$=0 $L$=0 $T=0 $L=0 $R=-1 $IIII=-1 $.$.$.=0 $OPT$=0 SMCALL ; DEFINE SUPMAC .ENDM SMACIT ; .MACRO SMCALL .MCALL ..PUSH,..POP,..GET,..TAG,..BRAN,.EMIT,.EMITL,.EMITR,.IFOPR,.IS,.GENBR .MCALL .OPADD,.OPSUB,ENTRYPOINT,PROBE,PROBEB,BEGINMODULE,IF,OR,AND,WHILEB .MCALL RNE,REQ,RLT,RGE,RGT,RLE,RPL,RMI,RHI,RLOS,RHIS,RLO,RCS,RCC,RVC,RVS .MCALL NNE,NEQ,NLT,NGE,NGT,NLE,NPL,NMI,NHI,NLOS,NHIS,NLO,NCS,NCC,NVC,NVS .MCALL .OR,.LEAVE,.GOTO,$SET$K$,DO,THEN,ELSE,WHILE,CASE,CASEB,FOR,TO,DOWNTO .MCALL FOR.ABS,REPEAT,UNTIL,THRU,END,BEGIN,$$END,LEAVE,JUMPTO,GOTO,PUSH,POP .MCALL $CALL,$RETURN,LET,LETB,.SIMPLE,.ARITH,BRANCH,.SOB,PROCEDURE,CALLG .MCALL PUSHB,POPB,ORB,ANDB,IFB,UNTILB,ON.ERROR,ON.NOERROR,FI,.SBRAN,RESTART .MCALL ..BRCH .MACRO SMCALL .ENDM .ENDM SMCALL ; ; .MACRO ..PUSH AA1,AA2 $IIII=$IIII+1 .IRP TT,\$IIII $TYP'TT = AA1 $LBL'TT = AA2 .ENDM .ENDM .MACRO ..POP AA1,AA2 .IF LT $IIII .LIST .ERROR ;STACK UNDERFLOW; $Y$=$IIII .NLIST .MEXIT .IFF .IRP TT,\$IIII AA1 = $TYP'TT AA2 = $LBL'TT .ENDM .ENDC $IIII=$IIII-1 .ENDM ; .MACRO ..GET PPP,AA1,AA2 .IRP TT,\PPP AA1=$TYP'TT AA2=$LBL'TT .ENDM .ENDM ..GET ; .MACRO .SBRAN LOC,BRA .IF EQ $OPT$ ..BRAN BRA,\$.$.$.,T BRANCH LOC ..TAG \$.$.$.,T $.$.$.=$.$.$.+1 .IFF .EMIT $.$.$.=$.$.$.+1 .ENDC .ENDM .SBRAN ; .MACRO ..TAG TG,WH .EMITL <$'WH''TG':> .ENDM ; .MACRO ..BRAN BRA,TG,WH .IIF IDN .EMIT .IIF DIF .EMIT .ENDM ..BRAN ; .MACRO .SOB A,B .IF DF LNG$$ .EMIT ..BRAN BEQ,\$.$.$.,T BRANCH B ..TAG \$.$.$.,T $.$.$.=$.$.$.+1 .IFF .EMIT $.$.$.=$.$.$.+1 .ENDC .ENDM .SOB ; .MACRO BRANCH TARGET .IF DF LNG$$ .IF DF TARGET .IF GT .-TARGET-376 .EMIT .IFF .IF GE .-TARGET .EMIT
.IFF .EMIT .ENDC .ENDC .IFF .EMIT .ENDC .IFF .EMIT
.ENDC .ENDM BRANCH ; .MACRO ..BRCH TARGET .IF DF TARGET .IF GT .-TARGET-376 .EMIT .IFF .IF GE .-TARGET .EMIT
.IFF .EMIT .ENDC .ENDC .IFF .EMIT .ENDC .ENDM ..BRCH ; .MACRO .EMIT VAL $E$=1 .IIF DF LST$$ .LIST MEB VAL .IIF DF LST$$ .NLIST MEB .ENDM ; .MACRO .EMITL VAL .IIF DF LST$$ .LIST VAL .IIF DF LST$$ .NLIST .ENDM ; .MACRO .EMITR S1,S2 .EMIT .IIF GT S2-1 .EMITR ,\S2-1 .ENDM .MACRO .IFOPR OPRA,RELA,TTG .EMIT OPRA .IF GT $R .IIF EQ $L$ N'RELA L'TTG .IIF EQ $L$-1 N'RELA B'TTG .IIF EQ $L$-2 N'RELA E'TTG .IIF EQ $L$-3 N'RELA TTG .IFF .IIF EQ $L$ R'RELA L'TTG .IIF EQ $L$-1 R'RELA B'TTG .IIF EQ $L$-2 R'RELA E'TTG .IIF EQ $L$-3 R'RELA TTG .ENDC ..PUSH 0,$T $I$=1 .ENDM .MACRO .IS Q1,Q2,QB,QT .IIF DIF ,,.ERROR ; IF SYNTAX ERROR Q1 IS; .IIF IDN ,,.IFOPR <<.=.>>,Q2,QT .ENDM ; .MACRO .GENBR A1,B1,C1,D1,E1 $I$=0 .IIF IDN .IFOPR <>,NE,E1 .IIF IDN .IFOPR <>,NE,E1 .IIF IDN .IFOPR <>,EQ,E1 .IIF IDN .IFOPR <>,EQ,E1 .IIF IDN <#0> .IFOPR <>,B1,E1 .IIF IDN <#0> .IFOPR <>,B1,E1 .IIF IDN .IS A1,C1,D1,E1 .IIF EQ $I$ .IFOPR <>,B1,E1 .ENDM .MACRO .OPADD V1,V2,V3 .IIF IDN <#1> .EMIT .IIF NE $E$ .MEXIT .IIF IDN .EMIT .IIF NE $E$ .MEXIT .EMIT .ENDM ; ; .MACRO .OPSUB V1,V2,V3 .IIF IDN <#1> .EMIT .IIF NE $E$ .MEXIT .IIF IDN .EMIT .IIF NE $E$ .MEXIT .EMIT .ENDM .MACRO NNE LOC .SBRAN LOC,BEQ .ENDM .MACRO NEQ LOC .SBRAN LOC,BNE .ENDM .MACRO NLT LOC .SBRAN LOC,BGE .ENDM .MACRO NGE LOC .SBRAN LOC,BLT .ENDM .MACRO NGT LOC .SBRAN LOC,BLE .ENDM .MACRO NLE LOC .SBRAN LOC,BGT .ENDM .MACRO NPL LOC .SBRAN LOC,BMI .ENDM .MACRO NMI LOC .SBRAN LOC,BPL .ENDM .MACRO NHI LOC .SBRAN LOC,BLOS .ENDM .MACRO NLOS LOC .SBRAN LOC,BHI .ENDM .MACRO NHIS LOC .SBRAN LOC,BLO .ENDM .MACRO NLO LOC .SBRAN LOC,BHIS .ENDM .MACRO NCS LOC .SBRAN LOC,BCC .ENDM .MACRO NCC LOC .SBRAN LOC,BCS .ENDM .MACRO NVC LOC .SBRAN LOC,BVS .ENDM .MACRO NVS LOC .SBRAN LOC,BVC .ENDM .MACRO RNE LOC .SBRAN LOC,BNE .ENDM .MACRO REQ LOC .SBRAN LOC,BEQ .ENDM .MACRO RLT LOC .SBRAN LOC,BLT .ENDM .MACRO RGE LOC .SBRAN LOC,BGE .ENDM .MACRO RGT LOC .SBRAN LOC,BGT .ENDM .MACRO RLE LOC .SBRAN LOC,BLE .ENDM .MACRO RPL LOC .SBRAN LOC,BPL .ENDM .MACRO RMI LOC .SBRAN LOC,BMI .ENDM .MACRO RHI LOC .SBRAN LOC,BHI .ENDM .MACRO RLOS LOC .SBRAN LOC,BLOS .ENDM .MACRO RHIS LOC .SBRAN LOC,BHIS .ENDM .MACRO RLO LOC .SBRAN LOC,BLO .ENDM .MACRO RCS LOC .SBRAN LOC,BCS .ENDM .MACRO RCC LOC .SBRAN LOC,BCC .ENDM .MACRO RVC LOC .SBRAN LOC,BVC .ENDM .MACRO RVS LOC .SBRAN LOC,BVS .ENDM .MACRO IF A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB .IIF B .MEXIT $O$=0 $I$=0 .IF IDN .IIF NB .LEAVE A,BE,C,BB,EE .ENDC .IIF NE $I$ .MEXIT .IF IDN .IIF NB .GOTO A,BE,C,BB,EE .ENDC .IIF NE $I$ .MEXIT .IIF IDN .OR A,BE,C,BB .IIF IDN .OR A,BE,C,BB .IF EQ $O$ .IF NDF LNG$$ $OPT$=1 $R=-$R .ENDC .IIF EQ $L$-1 .GENBR A,BE,C,BB,\$T2A .IIF NE $L$-1 .GENBR A,BE,C,BB,\$T .IF NDF LNG$$ $OPT$=0 $R=-$R .ENDC .ENDC $T=$T+1 .IIF B ,.MEXIT ; D EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .IIF LE $DIDDO .MEXIT ..POP $$T,$$T ..TAG \$$T,L $DIDDO=$DIDDO-1 .ENDM .MACRO .OR OA,OB,OC,OD $R=-$R $O$=1 $SV$=$L$ $L$=0 .IF NDF LNG$$ $OPT$=1 $R=-$R .ENDC .IIF NE $L$-1 .GENBR OA,OB,OC,OD,\$T .IIF EQ $L$-1 .GENBR OA,OB,OC,OD,\$T2A .IF NDF LNG$$ $OPT$=0 $R=-$R .ENDC $L$=$SV$ $R=-$R .ENDM ; ; ; .MACRO .LEAVE LA,LB,LC,LD,LE $L$=2 .IIF IDN $SET$K$ $IIII .IIF DIF $K$=LE $R=-$R .GENBR LA,LB,LC,LD,\$K$ ..POP $$TT,$$TT $R=-$R $L$=0 .ENDM ; ; .MACRO .GOTO GA,GB,GC,GD,GEE $R=-$R $L$=3 .GENBR GA,GB,GC,GD,GEE ..POP $$TT,$$TT $R=-$R $L$=0 .ENDM ; ; .MACRO $SET$K$ BBB $K$L=-1 $K$=-1 .IF LT BBB .ERROR ; NO LOOP BLOCK; .MEXIT .ENDC ..GET BBB,$K$T,$K$L $XXX$ = 0 .IIF EQ $K$T-1 $XXX$ = 1 ;WHILE .IIF EQ $K$T-2 $XXX$ = 1 ;FOR .IIF EQ $K$T-5 $XXX$ = 1 ;REPEAT .IIF EQ $K$T-6 $XXX$ = 1 ;THRU .IIF EQ $XXX$ $SET$K$ BBB-1 $K$=$K$L .ENDM $SET$K$ .MACRO OR EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB .IIF B .MEXIT .IIF IDN ..POP $T1A,$T .IIF IDN ..POP $T1A,$T IF'BB EE,F,G,H .IF DIF .IF DIF ..POP $$TT,$$TT ..POP $$T,$$T $$S=0 .IIF IDN ,,$$S=1 .IIF IDN ,,$$S=1 .IIF IDN ,,$$S=2 .IIF IDN ,,$$S=2 .IF NE $$S .IF EQ,$$S-1 ..PUSH 0,$$TT ..TAG \$$T,L .ERROR ; AND (ANDB) SEEN AFTER AN OR (ORB); .MEXIT .ENDC ..TAG \$$T,L THEN H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .IFF ..TAG \$$T,L .IIF B ..PUSH 0,$$TT .IIF B .MEXIT H I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .ENDC .IF LE $DIDDO ..PUSH 0,$$TT .IFF ..TAG \$$TT,L $DIDDO=0 .ENDC .MEXIT .ENDC .ENDC H I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .ENDM ; ; .MACRO AND EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB .IIF B .MEXIT $$S=0 .IIF IDN ,,$$S=1 .IIF IDN ,,$$S=1 .IF GT $$S ..POP $$T,$$T IF'BB EE,F,G,H ..TAG \$$T,L H I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .IFF ..POP $T,$T IF'BB EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z $$S=0 .IIF IDN ,,$$S=1 .IIF IDN ,,$$S=1 .IF NE $$S ..TAG \$T,L $T=$T+1 .ENDC .ENDC .ENDM ; ; .MACRO DO EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .IIF B ,.MEXIT LET EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z $DIDDO=$DIDDO+1 .ENDM ; ; .MACRO THEN EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z .IIF B .MEXIT EE F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z $DIDDO=$DIDDO+1 .ENDM .MACRO ELSE ..POP $T1A,$T2A .IF NE $T1A .ERROR ; $T1A ELSE SEEN IN OTHER THAN IF BLOCK; ..PUSH $T1A,$T2A .MEXIT .ENDC ..BRAN BRANCH,\$T,L ..TAG \$T2A,L ..PUSH $T1A,$T $T=$T+1 .ENDM .MACRO WHILE A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,BB $DIDDO=-1 ..TAG \$L,B IF A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,BB .IF EQ $DIDDO ..BRAN BRANCH,\$L,B ..POP $$T,$$T ..TAG \$$T,L .IFF ..PUSH 1,$L .ENDC $DIDDO=0 $L=$L+1 .ENDM .MACRO CASE A,BBB,C .IIF DIF .EMIT .EMIT .IRP TT,\$T .EMIT .ENDM ..PUSH 4,$T $T=$T+1 .ENDM CASE ; .MACRO CASEB A,BBB,C .IIF DIF .EMIT .EMIT .EMIT .IRP TT,\$T .EMIT .ENDM ..PUSH 4,$T $T=$T+1 .ENDM CASEB .MACRO FOR A,BBB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,MG .IIF DIF ,,FOR A,BBB,C,D,EE,BY,#1,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,MG .IIF DIF ,,.MEXIT ; .SIMPLE A,BBB,C ..TAG \$L,B .IF B ..PUSH 2,$L .IRP TT,\<$L> .MACRO $.$'TT D A,EE,G,TT,MG .ENDM .ENDM .IFF $SDO=$DIDDO H I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z D A,EE,G,\$L .IIF GT $DIDDO-$SDO $DIDDO=$DIDDO-1 .ENDC $L=$L+1 .ENDM .MACRO TO A1,A2,A3,A4,MG $E$=0 .OPADD A1,A3 .EMIT .IF IDN .EMIT .IFF .EMIT .ENDC BRANCH B'A4 .EMITL <$E'A4:> .ENDM .MACRO DOWNTO A1,A2,A3,A4,MG $E$=0 .OPSUB A1,A3 .EMIT .IF IDN .EMIT .IFF .EMIT .ENDC BRANCH B'A4 .EMITL <$E'A4:> .ENDM .MACRO FOR.ABS A,BBB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z FOR A,BBB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,ABS .ENDM FOR.ABS .MACRO REPEAT A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z ..TAG \$L,B ..PUSH 5,$L $L=$L+1 .IIF B .MEXIT .IF IDN UNTILB BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z .MEXIT .ENDC .IF IDN UNTIL BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z .MEXIT .ENDC LET A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z .ENDM .MACRO UNTIL A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB $L$=1 ..POP $T1A,$T2A .IF NE $T1A-5 .ERROR ; UNTIL SEEN IN OTHER THAN REPEAT BLOCK; .MEXIT .ENDC IF A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB ..POP $$T,$$T ..TAG \$T2A,E $L$=0 .ENDM .MACRO THRU A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V .NTYPE A3,A .IF NE A3&70 .ERROR ; A MUST BE A REGISTER; .MEXIT .ENDC .IIF NB ,LET A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V ..TAG \$L,B ..PUSH 6,$L .IRP TT,\$L .MACRO $.$'TT .SOB A,B'TT .ENDM .ENDM $L=$L+1 .ENDM THRU .MACRO END COMM ..POP $T1A,$T2A .IF EQ $T1A .IIF EQ $EF$-1 .PRINT ; MISSING END - IF; ..TAG \$T2A,L ;-0- IF .MEXIT .ENDC ; .IF EQ $T1A-3 .IIF EQ $EF$-1 .PRINT ; MISSING END - BEGIN; ..TAG \$T2A,E ;-3- BEGIN/END .MEXIT .ENDC ; .IF EQ $T1A-5 .IIF EQ $EF$-1 .PRINT ; MISSING END - REPEAT; ..BRAN BRANCH,\$T2A,B ;-5- REPEAT ..TAG \$T2A,E .MEXIT .ENDC ; .IF EQ $T1A-1 ;-1- WHILE .IIF EQ $EF$-1 .PRINT ; MISSING END - WHILE; ..BRAN BRANCH,\$T2A,B ..POP $$T,$$T ..TAG \$$T,L ..TAG \$T2A,E .MEXIT .ENDC ; .IF EQ $T1A-2 ;-2- FOR .IIF EQ $EF$-1 .PRINT ; MISSING END - FOR; .IRP TT,<\$T2A> $.$'TT .ENDM .MEXIT .ENDC ; .IF EQ $T1A-4 ;-4- CASE .IIF EQ $EF$-1 .PRINT ; MISSING END - CASE; ..TAG \$T2A,L .EMIT .EMIT .EMIT .MEXIT .ENDC ; .IF EQ $T1A-6 ; -6- THRU .IIF EQ $EF$-1 .PRINT ; MISSING END - THRU; .IRP TT,\$T2A $.$'TT ..TAG \$T2A,E .ENDM .MEXIT .ENDC ; .ERROR ; $T STRANGE SUPER-MAC STACK VALUE; .ENDM ; .MACRO BEGIN BNAME .IIF NB BNAME=$L ..PUSH 3,$L ..TAG \$L,B $L=$L+1 .ENDM .MACRO $$END .IF GE $IIII $EF$=1 END $EF$=0 $$END .ENDC .ENDM .MACRO LEAVE AAAA,A,BB,C,D,EE,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U .IIF B .MEXIT .IIF IDN ,,$SET$K$ $IIII .IIF DIF ,,$K$=AAAA .IRP QQ,\$K$ ..BRCH $E'QQ .ENDM .ENDM ; .MACRO RESTART AAAA,A,BB,C,D,EE,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U .IIF B .MEXIT .IIF IDN ,,$SET$K$ $IIII .IIF DIF ,,$K$=AAAA .IRP QQ,\$K$ ..BRCH $B'QQ .ENDM .ENDM ; ; .MACRO JUMPTO AAAA,A,B,C,D,E,F,H,G,I,J,K,L,M,N,O,P,Q,R,S,T,U ..BRCH AAAA .ENDM ; .MACRO GOTO BBBB,A,BB,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U .IIF B .MEXIT ..BRCH BBBB .ENDM ; .MACRO PUSH P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q22 .IF NB P0 .EMIT PUSH P1,P2,P3,P4,P5,P6,P7,P8,P9 .ENDC .ENDM PUSH ; .MACRO POP P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q22 .IF NB P0 .IF IDN .EMIT .IFF .EMIT .ENDC POP P1,P2,P3,P4,P5,P6,P7,P8,P9 .ENDC .ENDM POP ; .MACRO PUSHB P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q22 .IF NB P0 .EMIT .EMIT PUSHB P1,P2,P3,P4,P5,P6,P7,P8,P9 .ENDC .ENDM PUSHB ; .MACRO POPB P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q22 .IF NB P0 .EMIT POPB P1,P2,P3,P4,P5,P6,P7,P8,P9 .ENDC .ENDM POPB .MACRO $CALL NAME,ARGS,WHERE,TYPE,A,BB,C,D,E,F,G,H,I,J,K,LL,M,N,O,P,Q,RR,S ; NOTE: **** WHERE AND TYPE NOT IMPLEMENTED **** .IIF B .EMIT .IIF B .MEXIT .IF NB WHERE .ERROR ; WHERE .... ARG'S MUST BE WITHIN <>; .MEXIT .ENDC .$T=0 .MACRO $GENM BBT,BBP .IIF GT BBP-5 .ERROR ; 6 ARG MAX (R0-R5); .IIF GT BBP-5 .MEXIT .IIF DIF .EMIT .ENDM .IRP T, .IIF NB $GENM T,\.$T .$T=.$T+1 .ENDM .EMIT .ENDM .MACRO CALLG ENTRY,ARGS,CHECK .IF B ENTRY .ERROR ;.... PROCEDURE NAME NOT SPECIFIED ....; .MEXIT .ENDC .IF NB CHECK .ERROR ; CHECK .... ARGUMENTS MUST BE WITHIN <> ....; .MEXIT .ENDC .IF B .EMIT .EMIT .EMIT .EMIT .EMIT .EMIT .EMIT .MEXIT .ENDC .$ARGS=0 .$SIZE=0 .IRP X, .$ARGS=.$ARGS+1 .$SIZE=.$SIZE+2 .ENDM .IIF GT .$ARGS-16 .ERROR ;.... 16 ARGS MAX ....; .EMIT .EMIT .EMIT .EMIT .EMIT .IRP X, .IIF B .EMIT .IIF NB .EMIT .ENDM .EMIT .EMIT .EMIT .EMIT .EMIT .EMIT .ENDM .MACRO $RETURN STA,REG,A,BE,C,D,E,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE .IF NB STA .IF DIF , .IF DIF , .IF DIF , .IF IDN , .EMIT .EMIT .IFF .EMIT .EMIT .ENDC .IFF .EMIT .ENDC .IFF .EMIT .ENDC .ENDC .ENDC .IIF B .EMIT .IIF NB .EMIT .ENDM .MACRO LET A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .SIMPLE A,BE,C,D,EE .IIF B .MEXIT .IIF B .MEXIT .IIF B .MEXIT .IIF IDN LET EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .IIF IDN .MEXIT .IIF IDN LET F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .IIF IDN .MEXIT .IIF IDN LET G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .IIF IDN .MEXIT .IF LT $Y$ LET A,BE,A,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .MEXIT .ENDC LET A,BE,A,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .ENDM .MACRO LETB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V LET A,:B=,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V .ENDM LETB .MACRO .SIMPLE X1,X2,X3,X4,X5,X6 .IF DIF <:=> .IF DIF <:W=> .IF DIF <:==> .IF DIF <:B=> .ERROR ; X2 NOT A LEGAL ASSIGNMENT OPERATOR; .MEXIT .ENDC .ENDC .SIMPLE X1,:=,X3,X4,X5,B .MEXIT .ENDC .ENDC .IIF IDN .SIMPLE -(SP),X2,X3,X4,X5,X6 .IIF IDN .MEXIT .IIF IDN .SIMPLE @SP,X2,X3,X4,X5,X6 .IIF IDN .MEXIT $Y$=0 $Z$=0 .IIF IDN $Z$=-1 .IIF IDN $Z$=-1 .IIF IDN $Z$=-2 .IIF IDN $Y$=7 .IIF IDN $Y$=7 .IIF IDN $Y$=7 .IIF IDN <0> $Y$=7 .IIF IDN <#0> $Y$=7 .IIF IDN $Y$=4 .IIF IDN $Y$=4 .IIF IDN $Y$=4 .IF LT $Z$ .IIF EQ $Z$+$Y$-6 .EMIT .IIF EQ $Z$+$Y$-5 .EMIT .IIF EQ $Z$+$Y$-3 .EMIT .IIF EQ $Z$+$Y$-2 .EMIT .MEXIT .ENDC ; .IIF IDN $Y$=-1 .IIF IDN <-> $Y$=-2 .IIF IDN $Y$=5 .IIF IDN $Y$=6 .IIF IDN $Y$=10 .IF DIF .IIF EQ $Y$-7 .EMIT .IF DIF <@SP>, .IIF EQ $Y$-6 .EMIT .ENDC .IIF EQ $Y$-5 .EMIT .IIF EQ $Y$-4 .EMIT .IIF EQ $Y$ .EMIT .IFF .IIF B .PRINT ;NO CODE GENERATED; .ENDC .IF DIF .IIF LT $Y$ .EMIT .ENDC .IIF IDN <+1> $Y$=-5 .IIF IDN <-1> $Y$=-6 .IF LT $Y$ .IIF EQ $Y$+1 .EMIT .IIF EQ $Y$+2 .EMIT .IIF EQ $Y$+3 .EMIT .IIF EQ $Y$+4 .EMIT .IIF EQ $Y$+5 .EMIT .IIF EQ $Y$+6 .EMIT .MEXIT .ENDC ; .IIF B .MEXIT .IIF IDN .MEXIT .IIF IDN .MEXIT $E$=0 .IIF IDN .ARITH X1,@SP,X6,X4 .IIF IDN .ARITH X1,(SP)+,X6,X4 .IIF EQ $E$ .ARITH X1,X5,X6,X4 .ENDM ; .MACRO .ARITH Y1,Y2,Y3,Y4 .IIF IDN <-(SP)> .ARITH @SP,Y2,Y3,Y4 .IIF IDN <-(SP)> .MEXIT .IIF IDN <+> .OPADD Y1,Y2,Y3 .IIF IDN <-> .OPSUB Y1,Y2,Y3 .IIF NE $E$ .MEXIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF NE $E$ .MEXIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF NE $E$ .MEXIT .IIF IDN .EMITR ,Y2 .IIF IDN .EMITR ,Y2 .IIF IDN .EMITR ,Y2 .IIF IDN .EMITR ,Y2 .IIF NE $E$ .MEXIT .IIF IDN <*> .EMIT .IIF IDN .EMIT
.IIF IDN .EMIT .IIF IDN .EMIT .IIF NE $E$ .MEXIT .IIF IDN .EMIT .IIF EQ $E$ .ERROR ; Y4 NOT A LEGAL OPERATOR; .ENDM ; ; ; .MACRO ORB EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z OR EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B .ENDM ; .MACRO ANDB EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z AND EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B .ENDM ; .MACRO IFB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z IF A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B .ENDM ; ; .MACRO UNTILB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z UNTIL A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,B .ENDM ; .MACRO WHILEB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z WHILE A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,B .ENDM ; .MACRO ON.NOERROR A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S IF RESULT IS,CC,A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S .ENDM ; .MACRO ON.ERROR A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S IF RESULT IS,CS,A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S .ENDM .MACRO FI COMM END .ENDM ; ; .MACRO PROCEDURE ENTRY,TYPE,SAVE .IF B ENTRY .ERROR ;.... PROCEDURE NAME NOT SPECIFIED ....; .MEXIT .ENDC .IF B TYPE .EMITL .IFF .IF IDN .EMITL .IFF .IF IDN .EMITL .IFF .EMITL .PRINT ;.... UNRECOGNIZED TYPE KEYWORD - DEFAULT TO GLOBAL ....; .ENDC .ENDC .ENDC .IF B SAVE .MEXIT .IFF .IF IDN .EMIT .IFF .PRINT ;.... UNRECOGNIZED SAVE KEYWORD - REGISTERS NOT SAVED ....; .ENDC .ENDC .ENDM PROCEDURE ; .MACRO ENTRYPOINT ENTRY,TYPE .IF B ENTRY .ERROR ;.... ENTRY POINT NAME NOT SPECIFIED ....; .MEXIT .ENDC .IF B TYPE .EMITL .IFF .IF IDN .EMITL .IFF .IF IDN .EMITL .IFF .EMITL .PRINT ;.... UNRECOGNIZED TYPE KEYWORD - DEFAULT TO GLOBAL ....; .ENDC .ENDC .ENDC .ENDM ENTRYPOINT ; .MACRO BEGINMODULE NAME,IDENT,DATE .IF NB .EMIT <.TITLE NAME> .ENDC .IF NB .EMIT <.IDENT /IDENT/> .ENDC .EMIT <.NLIST CND> .LIST ME ;--------------------------------------------------------------------- ; ; THIS IS A COPYRIGHT/DISCLAIMER BLOCK. FILL IT IN WITH ; YOUR OWN MESSAGE. ; ; ; YOUR NAME ; YOUR ADDRESS ; ; ; .IF NB ; MODULE: NAME .IFF ; .ENDC .IF NB ; VERSION: IDENT .IFF ; .ENDC .IF NB ; NOTES: LAST EDIT -> DATE .IFF ; NOTES: .ENDC ;------------------------------------------------------------------------- ; ; .NLIST ME .ENDM BEGINMODULE .MACRO PROBE A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BYTE .IF NB BE .ERROR ;.....'PROBE' ACCEPTS ONLY ONE ARGUMENT.....; .MEXIT .ENDC .IF NB C .ERROR ;.....'PROBE' ACCEPTS ONLY ONE ARGUMENT.....; .MEXIT .ENDC .IF NB D .ERROR ;.....'PROBE' ACCEPTS ONLY ONE ARGUMENT.....; .MEXIT .ENDC .IF NB EE .ERROR ;.....'PROBE' ACCEPTS ONLY ONE ARGUMENT.....; .MEXIT .ENDC .IF B BYTE .EMIT .IFF .IF IDN .EMIT .IFF .ERROR ;.....'PROBE' ACCEPTS ONLY ONE ARGUMENT.....; .ENDC .ENDC .ENDM PROBE .MACRO PROBEB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z PROBE A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B .ENDM PROBEB