.NLIST .MACRO SUPER ;;;;; V011 10-AUG-76 ; $DIDDO=0 $L$=0 $T=0 $L=0 $LL=0 $R=-1 IIII=-1 .LIST TTM R6=%6 R7=%7 RTNVAL=%0 ; .MACRO ..PUSH AA1,AA2 IIII=IIII+1 .IRP TT,\IIII TYPS'TT = AA1 LBLS'TT = AA2 .ENDM .ENDM .MACRO ..POP AA1,AA2 .IIF LT IIII,.ERROR IIII ;STACK UNDERFLOW!!!!!!; .IRP TT,\IIII AA1 = TYPS'TT AA2 = LBLS'TT .ENDM IIII=IIII-1 .ENDM .MACRO ..TAG TG,WH .EMITL .ENDM ; .MACRO ..BRAN BRA,TG,WH,SPLBRN .IF NB .IF GE .-WH'TG-126. .EMIT .IFF .EMIT .ENDC .IFF .EMIT .ENDC .ENDM ; .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$ .EMIT .IIF EQ $L$-1 .EMIT .IIF EQ $L$-2 .EMIT .IIF EQ $L$-3 .EMIT .IFF .IIF EQ $L$ .EMIT .IIF EQ $L$-1 .EMIT .IIF EQ $L$-2 .EMIT .IIF EQ $L$-3 .EMIT .ENDC ..PUSH 0,$T $I$=1 .ENDM .MACRO .IS Q1,Q2,QB,QT $I$=0 .IIF IDN , .IFOPR <>,NE,QT .IIF IDN , .IFOPR <>,EQ,QT .IIF NE $I$ .MEXIT .IIF DIF ,,.IFOPR <>,Q2,QT .IIF IDN ,,.IFOPR <<.=.>>,Q2,QT .ENDM ; .MACRO .GENBR A1,B1,C1,D1,E1 $I$=0 .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 IDN <=> .IFOPR <>,EQ,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 RNE LOC .EMIT .ENDM .MACRO REQ LOC .EMIT .ENDM .MACRO RLT LOC .EMIT .ENDM .MACRO RGE LOC .EMIT .ENDM .MACRO RGT LOC .EMIT .ENDM .MACRO RLE LOC .EMIT .ENDM .MACRO RPL LOC .EMIT .ENDM .MACRO RMI LOC .EMIT .ENDM .MACRO RHI LOC .EMIT .ENDM .MACRO RLOS LOC .EMIT .ENDM .MACRO RHIS LOC .EMIT .ENDM .MACRO RLO LOC .EMIT .ENDM .MACRO RCS LOC .EMIT .ENDM .MACRO RCC LOC .EMIT .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 $F$=0 .IIF IDN <:=> $F$=1 .IIF IDN <:B=> $F$=1 .IF NE $F$ .IFARI 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 .MEXIT .ENDC $O$=0 $I$=0 .IIF IDN .LEAVE A,BE,C,BB,F .IIF NE $I$ .MEXIT .IIF IDN .GOTO A,BE,C,BB,F .IIF NE $I$ .MEXIT .IIF IDN .OR A,BE,C,BB .IIF IDN .OR A,BE,C,BB .IF EQ $O$ .IIF EQ $L$-1 .GENBR A,BE,C,BB,\$T2 .IIF NE $L$-1 .GENBR A,BE,C,BB,\$T .ENDC $T=$T+1 .IIF B ,.MEXIT .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 .IIF NE $L$-1 .GENBR OA,OB,OC,OD,\$T .IIF EQ $L$-1 .GENBR OA,OB,OC,OD,\$T2 $L$=$SV$ $R=-$R .ENDM ; .MACRO .IFARI 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 .SIMPLE A,BE,C,D,EE .IIF IDN IF RESULT,IS,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB .IIF IDN .MEXIT .IIF IDN IF RESULT,IS,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB .IIF IDN .MEXIT IF RESULT,IS,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB .ENDM ; ; ; .MACRO .LEAVE LA,LB,LC,LD,LE $L$=2 .IIF B $K$=$LL .IIF NB $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 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 $T1,$T .IIF IDN ..POP $T1,$T IF'BB EE,F,G,H .IF DIF .IF DIF ..POP $$TT,$$TT ..POP $$T,$$T ..TAG \$$T,L .IIF B ..PUSH 0,$$TT .IIF B .MEXIT .IIF IDN ..PUSH 0,$$TT .IIF IDN .MEXIT H I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z ..TAG \$$TT,L $DIDDO=0 .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 .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 $T1,$T2 .IIF NE $T1,.ERROR $T1 ;ELSE SEEN IN OTHER THAN IF BLOCK; ..BRAN BR,\$T,L ..TAG \$T2,L ..PUSH $T1,$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 BR,\$L,B ..POP $$T,$$T ..TAG \$$T,L .IFF ..PUSH 1,$L $LL=$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 .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 .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 .IIF DIF ,,.MEXIT ; .SIMPLE A,BBB,C ..TAG \$L,B .IF B ..PUSH 2,$L $LL=$L .IRP TT,\<$L> .MACRO $.$'TT D A,EE,G,TT .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 $E$=0 .OPADD A1,A3 .EMIT .EMIT .EMITL .ENDM .MACRO DOWNTO A1,A2,A3,A4 $E$=0 .OPSUB A1,A3 .EMIT .EMIT .EMITL .ENDM .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 .IF IDN THRU BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V .MEXIT .ENDC ..TAG \$L,B ..PUSH 5,$L $LL=$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 $T1,$T2 .IF NE $T1-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 \$T2,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 $LL=$L .IRP TT,\$L .MACRO $.$'TT .EMIT .ENDM .ENDM $L=$L+1 .ENDM .MACRO END COMM ..POP $T1,$T2 .IIF EQ $T1 ..TAG \$T2,L ;-0- IF .IIF EQ $T1 .MEXIT ; $LL = $LL -1 .IIF EQ $T1-3 ..TAG \$T2,E ;-3- BEGIN/END .IIF EQ $T1-3 .MEXIT ; .IIF EQ $T1-5 ..BRAN BR,\$T2,B,1 ;-5- REPEAT .IIF EQ $T1-5 ..TAG \$T2,E .IIF EQ $T1-5 .MEXIT ; .IF EQ $T1-1 ;-1- WHILE ..BRAN BR,\$T2,B,1 ..POP $$T,$$T ..TAG \$$T,L ..TAG \$T2,E .MEXIT .ENDC ; .IF EQ $T1-2 ;-2- REPEAT/FOR .IRP TT,<\$T2> $.$'TT .ENDM .MEXIT .ENDC ; .IF EQ $T1-4 ;-4- CASE $LL = $LL + 1 ..TAG \$T2,L .EMIT .EMIT .EMIT .MEXIT .ENDC ; .IF EQ $T1-6 ; -6- THRU (REPEAT THRU) .IRP TT,\$T2 $.$'TT .ENDM ..TAG \$T2,E .MEXIT .ENDC ; .ERROR ; $T STRANGE SUPER-MAC STACK VALUE; .ENDM ; .MACRO BEGIN BNAME .IIF NB BNAME=$L ..PUSH 3,$L ..TAG \$L,B $LL = $L $L=$L+1 .ENDM .MACRO $$END .IF GE IIII .PRINT ; MISSING END END $$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,V .IF B .IRP QQ,\<$LL> .EMIT
.ENDM .MEXIT .ENDC .IRP QQ,\AAAA .EMIT
.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,V .EMIT .ENDM ; .MACRO GOTO BBBB .EMIT
.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 ; .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 .EMIT POP P1,P2,P3,P4,P5,P6,P7,P8,P9 .ENDC .ENDM .MACRO SCALL 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 T $GENM T,\.$T .$T=.$T+1 .ENDM .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 .IIF B .EMIT .IIF B .MEXIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF IDN .EMIT .IIF NB .EMIT .IIF B .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 .IF IDN <.> .SIMPLE A,BE,A,D,EE .IFF .SIMPLE A,BE,C,D,EE .ENDC .IIF B .MEXIT .IIF B .MEXIT .IIF B .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 .SIMPLE X1,X2,X3,X4,X5,X6 .IF IDN <:B=> .SIMPLE X1,:=,X3,X4,X5,B .MEXIT .ENDC $Y$=0 $Z$=0 .IIF IDN $Y$=7 .IIF IDN <0> $Y$=7 .IIF IDN <#0> $Y$=7 .IIF IDN $Y$=4 .IIF IDN $Y$=-1 ; .IIF IDN $Y$=-1 .IIF IDN <-> $Y$=-2 .IF DIF .IIF EQ $Y$-7 .EMIT .IIF EQ $Y$-4 .EMIT .IIF EQ $Y$ .EMIT .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$+5 .EMIT .IIF EQ $Y$+6 .EMIT .MEXIT .ENDC ; .IIF B .MEXIT .IIF IDN .MEXIT $E$=0 .IIF EQ $E$ .ARITH X1,X5,X6,X4 .ENDM ; .MACRO .ARITH Y1,Y2,Y3,Y4 .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 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 .IF IDN <*> .NTYPE MFH$T,Y1 .IF EQ MFH$T&1 .ERROR ;'Y1' IS NOT A SINGLE PRECISION REGESTER;; .IFF .EMIT .ENDC .ENDC .IF IDN <**> .NTYPE MFH$T,Y1 .IF NE MFH$T&1 .ERROR ;'Y1' IS NOT A DOUBLE PRESISION REGESTER;; .IFF .EMIT .ENDC .ENDC .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 NAME ARGS COMM .EMIT <.TITLE NAME> .EMIT <.PSECT NAME> .EMIT <.GLOBL NAME> .EMITL .IIF DF DEBUG$ .EMIT .ENDM ; .MACRO ENDPROCEDURE COMM .EMIT .ENDM ; .MACRO FORMAT BUF,PIC,A,B,C,D,E,F,G,H,?LAB1,?LAB BR LAB LAB1: .ASCIZ \PIC\ .EVEN LAB: MOV R0,-(SP) MOV R3,-(SP) .IIF NB , MOV H,-(SP) .IIF NB , MOV G,-(SP) .IIF NB MOV F,-(SP) .IIF NB , MOV E,-(SP) .IIF NB , MOV D,-(SP) .IIF NB , MOV C,-(SP) .IIF NB , MOV B,-(SP) .IIF NB , MOV A,-(SP) MOV #LAB1,R1 .GLOBL $FORMAT .IIF NB , MOV BUF,R2 JSR PC,$FORMAT MOV (SP)+,R3 MOV (SP)+,R0 .ENDM .MACRO ACCEPT BUF,LEN,NCHRS,EOF,ERR .MCALL QIO$S,WTSE$S .IF B LEN ACCEPT BUF,#80.,NCHRS,EOF,ERR .IFF .IF NB EOF'NCHRS'ERR SUB #4,SP MOV SP,R5 QIO$S #IO.RLB,CONSOL,#1,,R5,, WTSE$S #1 .IF NB NCHRS LET NCHRS := 2(R5) .ENDC .IF NB EOF IFB (R5) EQ #IE.EOF LET SP := SP + #4 JUMPTO EOF ELSE LET SP := SP + #4 END .ENDC .IF NB ERR IFB (R5) LT #0 THEN GOTO ERR .ENDC .IFF QIO$S #IO.RLB,CONSOL,#1,,,, WTSE$S #1 .ENDC .ENDC .ENDM .MACRO PRINT BUF,LEN,FORMS .MCALL QIO$S,WTSE$S .IF NB FORMS QIO$S #IO.WLB,CONSOL,#1,,,, .IFF QIO$S #IO.WLB,CONSOL,#1,,,, .ENDC WTSE$S #1 .ENDM .MACRO PUTLINE LUN,ADDRS,LEN,ERR .MCALL PUT$ .IF B ERR PUTLINE LUN,ADDRS,LEN,B$IOERROR .IFF PUSH R0,R1,R2,R3 LET R2 := LUN LET R3 := @#$OTSV SCALL $FCHNL LET R0 := R0 + #14 IFB F.FACC(R0) EQ #0 LET R1 := #ERR SCALL B$OPENFOR END PUT$ R0,ADDRS,LEN,ERR POP R3,R2,R1,R0 .ENDC .ENDM .MACRO BEGINMAIN NAME .PSECT NAME NAME':: .ENDM .MACRO ENDMAIN NAME .MCALL EXIT$S EXIT$S .ENDM .MACRO FCALL NAME,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V $NARGS=0 $NSTK=0 $LITNO=0 PUSH R5 $STFARG A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V PUSH #$NARGS $NSTK=$NSTK+2 MOV SP,R5 JSR PC,NAME ADD #$NSTK,SP POP R5 .ENDM .MACRO $STFARG A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V .IF NB A .NTYPE $SYM,A .IF NE $SYM-67 PUSH A $NSTK=$NSTK+2 $LITNO=$LITNO+2 $STFARG B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V MOV SP,R5 ADD #$NSTK-$LITNO,R5 PUSH R5 $NSTK=$NSTK+2 $LITNO=$LITNO-2 $NARGS=$NARGS+1 .IFF $STFARG B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V PUSH #A $NSTK=$NSTK+2 $NARGS=$NARGS+1 .ENDC .ENDC .ENDM .MACRO FORET VAL,DISP LET R0 := VAL IF (R5) GE #DISP/2 IF DISP(R5) NE #-1 LET @DISP(R5) := R0 END END .ENDM .MACRO READVB BLK,ADDR,ERR .IF B ERR READVB BLK,ADDR,B$IOERROR .IFF .MCALL READ$,WAIT$ PUSH R0 LET IOPTR+2 := BLK READ$ RT.FDB(ROOT),ADDR,,#IOPTR,,#IOERR,,ERR WAIT$ POP R0 .ENDC .ENDM .MACRO WRITEVB BLK,ADDR,ERR .IF B ERR WRITEVB BLK,ADDR,B$IOERROR .IFF .MCALL WRITE$,WAIT$ PUSH R0 LET IOPTR+2 := BLK WRITE$ RT.FDB(ROOT),ADDR,,#IOPTR,,#IOERR,,ERR WAIT$ POP R0 .ENDC .ENDM .ENDM .LIST