% VAX-11 Librarian V04-00g3ώ Bَ" kkk4 5_ aa$$BRANCHl$$CALLm$$FORn$$LABELp$$SETq$ANDORx$BRANCHy$CALL4$DESCRQ$EMIT7$ENDFORR$FORS$LABELd$MODULEr $PROCEDUREs$PUSHz$SET $UNIQUE .BLKT ADDQADDQ3AND8ANDIF9BCBCC:BCSBEGIN;BSTBSC^BSSCASErCCCMPQCONSTCONTINUE8CSzDESCR DESCR.BLKA^ DESCR.BLKB DESCR.BLKDfUBSSVCASEeCCWCMPQfCONSTtCONTINUE|CSDESCR DESCR.BLKA DESCR.BLKB| DESCR.BLKD DESCR.BLKFh DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ< DESCR.BLKT= DESCR.BLKW>DIVQ4DOELSE?ELSEIFEND@ENDCASEYENDFORENDIFENDLOOP ENDMODULE.ENDOF ENDPROCEDURE $ENDPSECT ENDRECORD ENDREPEAT DENDWHILE0BSCENDFORMODULEWHILENoENDIFENDLOOP ENDMODULEAENDOFB ENDPROCEDURECENDPSECT ENDRECORD ENDREPEATENDWHILEDEQLZEQLU[EXIT\EXTERNALhFORjFOREVERGEQEGEQU]GLOBALkGOTOvGTRwGTRU}IFLBCLBSLEQLLEQULOOPLSSLSSU`MODULE+rMULQ3,.NEQ,tNEQU,OF,OR-(ORIF- OTHERWISE-F PROCEDURE/PSECT/LRECORD0JREPEAT#MULQFMULQ3GNEQHNEQU$OF%OR&ORIF' OTHERWISE PROCEDURE)PSECT*RECORD+REPEATIRETURNJSUBQ,SUBQ3KTHEN-TSTQ.UNTIL/VAR0VCLVS1WHILE qԎ .macro $unique,struc,value,flag .if nb  struc'value=flag .ifff' .iif ndf mlr_unique, mlr_unique=19999P mlr_unique=mlr_unique+1n struc'value=mlr_unique .endc .endm $uniqueww.endc .endm $emitwwmeo .endm $callwwm $$callww3ώ$ .macro $$for,index,by,to,value,type ACB'type to,by,index,value'$ .endm $$forww(3ώ .macro $$label,valuevalue'$: .endm $$labelww`3ώ .macro $$set,flag,valԎ .macro .blkt,length .BLKB length. .endm .blktwwuc'value=flag .iffx' .iif ndf mlr_unique, mlr_unique=19999e mlr_unique=mlr_unique+1n struc'value=mlr_unique .endc .endm $uniquewwflag=0f .iif le mlr_mode-1, mlr_flag=1a .iif eq mlr_mode-5, mlr_flag=1G .if eq mlr_flag PUSHA'type name .iff  PUSH'type name. .endc .endm $pushwwlabel: .endc .endm $descr,wwa,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .narg mlr_count mlr_count=mlrԎ& .macro addq,add,sum,?tst1,?tst2,?tst3 ADDL add,sum ADWC 4+add,4+sumf TSTL 4+sumf BLSS tst1 BGTR tst2 TSTL suml BNEQU tst2u CLRL r0 BRW tst3utst1: MOVL #-1,r0c BRW tst3ntst2: MOVL #1,r0tst3:> .endm addq<ww .if nb  mlr .endc .endrs .endc .endm $emitwwlabel .WORD length% .BYTE DSC$K_DTYPE_%extract(4,1,type) .if idn <0>, .BYTE DSC$K_CLASS_D .LONG 0 .iff .BYTE DSC$K_CLASS_S .if nb  .if idn <*>,<`oԎ- .macro addq3,add1,add2,sum,?tst1,?tst2,?tst3  MOVQ add2,sum ADDL add1,sum ADWC 4+add1,4+sum TSTL 4+sum2 BLSS tst1 BGTR tst2 TSTL sum0 BNEQU tst2 CLRL r0 BRW tst3Btst1: MOVL #-1,r0L BRW tst33tst2: MOVL #1,r0tst3:, .endm addq3wwr_count .if gt mlr_count- .irp mlr,<,,,,,,,,-( ,,,,,,,

,,,,,,,,,,m .endm beginww mlr_unique=mlr_unique+1 struc'value=mlr_unique .endc .endm $uniqueww`3ώ .macro .blkt,length .BLKB length .endm .blktwwt3ώ& .macro addq,add,sum,?tst1,?tst2,?tst3 ADDL add,sum ADWC 4+adblkh,length,name,allot! $descr .BLKH,,name,allotC .endm descr.blkhww MOVL #-1,r0l BRW tst3mtst2: MOVL #1,r0tst3:q .endm cmpqlwws,4 .iif ndf mlr_cases, mlr_cases=0 mlr_cases=mlr_cases+1 $unique mlr_case0,\mlr_cases,0d $unique mlr_case1,\mlr_cases+ $unique mlr_case2,\mlr_cases .macro do .endm do < $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,! $branch BRW,mlr_case1,\mlr_casesA .endm casea Ԏ$ .macro descr.blkl,length,name,allot! $descr .BLKL,,name,allot .endm descr.blkl,wwifs mlr_or=0 .endc .endm andifww<3ώ .macro bc,pos,base $andor BBC,BBS,pos,base .endm bcww3ώ .macro bcc,pos,base $andor BBCC,BBSC,pos,base .endm bccww J3ώ .macro bcs,pos,base $andor BBCS,BBSS,pos,base .endm bcsww3ώA .macro begin,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .@'Ԏ$ .macro descr.blko,length,name,allot! $descr .BLKO,,name,allot3 .endm descr.blko ww TSTL r2 BNEQU tst2w CLRL r0 BRW tst3mtst1: MOVL #-1,r0 BRW tst3tst2: MOVL #1,r0tst3:n .endm cmpqowwe .endm bsww@3ώ .macro bsc,pos,base $andor BBSC,BBCC,pos,base .endm bscwwq3ώ .macro bss,pos,base $andor BBSS,BBCS,pos,base .endm bssww3ώ .macro case,source,list,-7 a,b,c,d,e,f,g,h,i,j,k,l,m, Ԏ$ .macro descr.blkq,length,name,allot! $descr .BLKQ,,name,allot .endm descr.blkq1wwle: .irp mlr, .WORD mlr-table .endr endtable: .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,4 .iif ndf mlr_cases, mlr_cases=0 mlr_cases=mlr_cases+1 $unique mlr_case0,\mlr_cases,0 $unique mlr_case1,\mlr_cases $unique mlr_case2,\mlr_cases .macro do .endm do< $emit ,,,,,,,,,,,,,-5  Ԏ .macro do .endm dovww,rem,-l+ ?div1,?div2,?div3,?div4,?tst1,?tst2,?tst3m PUSHR #^M. MOVQ divr,r0o MOVQ divd,r2n MOVQ r2,r4 CLRQ r6 CLRL r8 MOVL #65,r10,div1: ASHQ #1,r6,r63 BISL r8,r6r CLRL r8 CMPL r1,r7W BNEQ div2 CMPL r0,r6Bdiv2: BGTRU div3 SUBL r0,r6 SBWC r1,r7 INCL r8 div3: CLRL r91 TSTL r5 BGEQ div4 INCL r9div4: ASHQ #1,r4,r4 BISL r8,r4 MOVL r9,r8 DECL r10. BNEQ div1 MOVQ r4,quo MOVQ r6,rem XԎ@ .macro else,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z $unique mlr_if3,\mlr_ifsM $branch BRW,mlr_if3,\mlr_ifsr $label mlr_if1,\mlr_ifs< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,C .endm elseiwwGTRU div3 SUBL r0,r6s SBWC r1,r7 INCL r8 div3: CLRL r9r TSTL r5 BGEQ div4 INCL r9div4: ASHQ #1,r4,r4> BISL r8,r4 MOVL r9,r8b DECL r10 BNEQ div1 MOVQ r4,quo MOVQ r6,rem"g9Ԏ .macro end,name $set mlr_flag,mlr_end,\mlr_ends .if eq mlr_flag endmodule name .mexit .endc .if eq 1-mlr_flag endprocedure name, .mexit .endc .if eq 2-mlr_flag endif namee .mexit .endc .if eq 3-mlr_flag endloop name, .mexit .endc .if eq 4-mlr_flag endcase name .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect name  .mex Ԏ .macro endif,name $set mlr_flag,mlr_if3,\mlr_ifs_ .if gt mlr_flag $label mlr_if3,\mlr_ifs\ .iffe $label mlr_if1,\mlr_ifse .endc $set mlr_flag,mlr_if0,\mlr_ifsr mlr_ifs=mlr_ifs-1 mlr_ends=mlr_ends-1 .if ne mlr_flag endifl .endc .endm endifwwc .if eq 4-mlr_flag endcase name .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect namek .mex OԎ .macro endloop,name# $set mlr_flag,mlr_loop0,\mlr_loopsf .if eq mlr_flag" $branch BRW,mlr_loop1,\mlr_loops .iffr $endfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loops=mlr_loops-1 mlr_ends=mlr_ends-1 .endm endloopww .endc .endm endifwwc .if eq 4-mlr_flag endcase name .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect name  .mexԎ .macro endmodule,name mlr_returns=mlr_returns-1 mlr_ends=mlr_ends-1 .endm endmoduleww_loop1,\mlr_loops .iffr $endfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loops=mlr_loops-1 mlr_ends=mlr_ends-1 .endm endloopww .endc .endm endifwwc .if eq 4-mlr_flag endcase namee .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect name, .mexgԎ .macro endrecord,name mlr_ends=mlr_ends-1 .RESTORE_PSECTe .endm endrecordwwendprocedurevwwy,z else9 if ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,, $unique mlr_if0,\mlr_ifs,1 .endm elseifwwxZ3ώ .macro end,name $set mlr_flag,mlr_end,\mlr_ends .if eq mlr_flag endmodule name .mexit .endc .if eq 1-mlr_flag endprocedure name .mexit .endc .if eq 2-mlr_flag#Ԏ .macro endrepeat,name endloop .endm endrepeatww_PSECTe .endm endrecordwwendprocedureowwmlr_loops .iff $endfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loops=mlr_loops-1 mlr_ends=mlr_ends-1 .endm endloopww-mlr_flag endpsect name .mexit .endc .endm endww@ѩ3ώ .macro endcase,name# $set mlr_flag,mlr_case0,\mlr_cases .if eq mlr_flag $label mlr_case1,\mlr_cases .endc $label mlr_case2,\mlr_cases mlr_casԎ .macro endwhile,namee endloop .endm endwhiletww_PSECTe .endm endrecordwwendprocedureww@;3ώ .macro endif,name $set mlr_flag,mlr_if3,\mlr_ifs .if gt mlr_flag $label mlr_if3,\mlr_ifs .iff $label mlr_if1,\mlr_ifs .endc $set mlr_flag,mlr_if0,\mlr_ifs mlr_ifs=mlr_ifs-1 mlr_ends=mlr_ends-1 .if ne mlr_flag endif .endc .endm endifwwU3ώ .macro endloop,name# $set mlr_flag,mlr_loop0,\mlr_loops .if eq n Ԏ .macro geqe $andor BGEQ,BLSS .endm geqwwwf dif ,<#0> .if dif ,<0> MOV'type from,index .iff  CLR'type indexl .endc .iff CLR'type index .endc .endc loope $unique mlr_loop0,\mlr_loops,11 .macro do .endm do< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,1/ $for index,,,mlr_loop1,\mlr_loops,typen .endm forww mlr_returns=mlr_returns-1 mlr_ends=mlr_ends!ds, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb & .PSECT psect'_'type,RD,NOWRT,EXE,LONG .iffe% .PSECT name'_'type,RD,NOWRT,EXE,LONG .endc .if idn ,name:: .iffsname:n .endc .SAVE_PSECT .if nb _% .PSECT psect'_data,RD,WRT,NOEXE,LONGr .iffs$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .macro name BSBW name .endm name. .endm procedurewwWRT,EXE,LONGn .endc .if idn ,name:: .iffyname:e .endc .if nb  .WORD ^Mm .iff .WORD ^M .endc mlr_count=0 name'.narg=mlr_countt .if nb  .irp mlr, mlr_count=mlr_count+4 name'.'mlr=mlr_count .endr> .endc .SAVE_PSECT .if nb >% .PSECT psect'_data,RD,WRT,NOEXE,LONGt .iffv$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLO(CK .endm modulewwacro lssu $andor BLSSU,BGEQU .endm lssuwwlbsww=mlr_ends+1 $unique mlr_end,\mlr_ends,2 .iif ndf mlr_ifs, mlr_ifs=0 mlr_ifs=mlr_ifs+1 $unique mlr_if0,\mlr_ifs,0 $unique mlr_if1,\mlr_ifs, $unique mlr_if2,\mlr_ifs, $unique mlr_if3,\mlr_ifs,0m mlr_and=0 .macro andn AND? .endm and mlr_or=0. .macro or OR? .endm or < $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,l .endm if@:Ԏ4 .macro mulq,mulr,prod,?mul1,?mul2,?tst1,?tst2,?tst3 EMUL mulr,prod,#0,r2< MULL3 4+mulr,prod,r0E MULL3 mulr,4+prod,r1l MULL r1,r0n TSTL mulr BGEQ mul1 MULL prod,r0mul1: TSTL prodg BGEQ mul2 MULL mulr,r0.mul2: MULL r0,r3 MOVQ r2,prod TSTL 4+prod BLSS tst1 BGTR tst2 TSTL prod BNEQU tst2 CLRL r0 BRW tst3stst1: MOVL #-1,r0a BRW tst3 tst2: MOVL #1,r0tst3: .endm mulqwwcall name .endm name .endc .endcs .mexit .endc @Ԏ> .macro of,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,5< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,+ .endm of ww BGTR tst2 TSTL prod BNEQU tst2_ CLRL r0 BRW tst3etst1: MOVL #-1,r0i BRW tst3etst2: MOVL #1,r0tst3:r .endm mulq3wws+1" $unique mlr_return,\mlr_returns,0 .if nb % .PSECT psԎ .macro or OR? .endm oriwwl,m,n,o,p,q,r,s,t,u,v,w,x,y,z .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,5< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,+ .endm of ww BGTR tst2 TSTL prod BNEQU tst2t CLRL r0 BRW tst3ttst1: MOVL #-1,r0. BRW tst3.tst2: MOVL #1,r0tst3:O .endm mulq3ww.ENABLE LOCAL_BLOCK .endm module wwo>,

,,,,,,,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,T .endm ofBwwst1 BGTR tst2 TSTL prod BNEQU tst2 CLRL r0 BRW tst3tst1: MOVL #-1,r0d BRW tst3jtst2: MOVL #1,r0tst3:w .endm mulq wwlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_(Ԏ .macro otherwise,name $unique mlr_case0,\mlr_cases,11 $label mlr_case1,\mlr_cases .endm otherwiseww .endc .endm orifrww\mlr_ends,5< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,+ .endm of ww BGTR tst2 TSTL prod BNEQU tst2 CLRL r0 BRW tst3stst1: MOVL #-1,r0E BRW tst3ltst2: MOVL #1,r0tst3: .endm mulq3wwndor BLSSU,BGEQU .endm lssuww q3ώ# .macro modu^@CԎ. .macro procedure,name,alias,psect=,type=LOCAL .if idn , .EXTERNAL namen .if nb  .macro aliasi BSBW G^'name5 .endm alias .iff .macro name BSBW G^'name< .endm name, .endcr .mexit .endc .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb & .PSECT psect'_'type,RD,NOWRT,EX  vԎ .macro psect,name,attra .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,7 .SAVE_PSECT .PSECT name,attrn .endm psectwws .iff .macro name BSBW G^'nameL .endm name. .endce .mexit .endc .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb m% .PSECT psect'_code,RD,NOWRT,EXE Ԏ .macro record,name,psect= .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,6 .SAVE_PSECT .if nb n .PSECT psect'_abs,ABS .iff  .PSECT name'_abs,ABS^ .endc .endm recordwwdcr .mexit .endc .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb % .PSECT psect'_code,RD,NOWRT,EXE1"ԎB .macro repeat,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z loop_< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,b .endm repeatwwm recordwwdcr .mexit .endc .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb s% .PSECT psect'_code,RD,NOWRT,EXE`"<Ԏ+ .macro subq3,sub,min,dif,?tst1,?tst2,?tst3B MOVQ min,difW SUBL sub,dif SBWC 4+sub,4+dif TSTL 4+difs BLSS tst1 BGTR tst2 TSTL dif BNEQU tst2, CLRL r0 BRW tst3tst1: MOVL #-1,r0O BRW tst3stst2: MOVL #1,r0tst3:l .endm subq3wwRSB .endc .endm returnewwSECT psect'_code,RD,NOWRT,EXE,LONGn .iff$$ .PSECT name'_code,RD,NOWRT,EXE,LONG .endc .if idn ,name:: .ifftname:v .endc .SAVE_PSECT .if nb % .PSECT psect'OԎ" .macro tstq,src,?tst1,?tst2,?tst3 TSTL 4+srcr BLSS tst1 BGTR tst2 TSTL srcm BNEQU tst2  CLRL r0 BRW tst3mtst1: MOVL #-1,r0< BRW tst3<tst2: MOVL #1,r0tst3: .endm tstq,wwr>,,,,,,,,0 .endm thennwwbq3wwRSB .endc .endm returnowwiseww3ώ. .macro procedure,name,alias,psect=,type=LOCAL .if idn , .EXTERNAL name .if nb  .macro alias BSBW G^'name .endm alias -\ԎA .macro until,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,zT9 if ,,,,,,,,,,,,,-15 ,,

,,,,,,,,,,. thent exitr endif endloop .endm untilww.endm thennwwbq3wwRSB .endc .endm returndwwNOWRT,EXE,LONG .iff$ .PSECT name'_code,RD,NOWRT,EXE,LONG .endc .if idn ,name:: .iffname: .endc .SAVE_PSECT .if nb % .PSECT psect'_data,RD,WRT,NOEXE,L@UeԎ .macro vari .endm varww,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,zT9 if ,,,,,,,,,,,,,-15 ,,

,,,,,,,,,,. thent exitr endif endloop .endm untilww.endm thennwwbq3wwRSB .endc .endm returnwwndm psectww3ώ .macro record,name,psect= .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,6 .SAVE_PSECT .if nb  .PSECT psect'_aokԎ .macro vc $andor BVC,BVS .endm vc,ww,q,r,s,t,u,v,w,x,y,zT9 if ,,,,,,,,,,,,,-15 ,,

,,,,,,,,,,. thent exitr endif endloop .endm untilww.endm thennwwbq3ww .endm repeatwwaJ3ώB .macro return,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,, `+yԎA .macro while,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,zT loopa .macro do thenf .endm doi9 if ,,,,,,,,,,,,,-,5 ,,

,,,,,,,,,,n elsel exitE endif .endm whilewwt3tst1: MOVL #-1,r0 BRW tst3tst2: MOVL #1,r0tst3: .endm subqww`\3ώ+ .macro subq3,sub,min,dif,?tst1,?tst2,?tst3 MOVQ min,dif SUBL sub,dif SBWC 4+sub,4+dif TSTL 4+dif BLSS tsPEMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQUE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUECSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUGLOBALGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMUL2LKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUGLOBALGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILE,1Ўj GVROD $$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$#Ԏ, .macro $descr,type,length,name,allot,?label .WORD length>% .BYTE DSC$K_DTYPE_%extract(4,1,type)< .if idn <0>, .BYTE DSC$K_CLASS_D .if nb name:$ .endc .LONG 0 .iff. .BYTE DSC$K_CLASS_S .if nb  .if idn <*>,u .LONG labellabel: type length .iffd .LONG namei .if idn <*>,name: type length .endc .endc .iff .LONG labellabel: .endc .endc .endm $descrww63ώj GVROD $$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$EMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQUE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUECSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITE3XTERNALFORFOREVERGEQGEQUGLOBALGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILEH.Ўj GVROD $$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$EMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQUE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUECSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.B=Ԏ .macro $endfor,value, endfor'value, .endm $endfor,valuewwY .narg mlr_count .if gt mlr_count.- .irp mlr,<,,,,,,,,-f( ,,,,,,,

,,-' ,,,,,,,,> .if nb e mlr .endc .endr .endc .endm $emitwwG name, .if idn <*>,name:a type length .endc .endc .iff .LONG labellabel: .endc .endc .endm $descrbwww@SԴ.Ў .macro $$set,flag,val +Ԏ .macro andif and .if eq 1-mlr_or $label mlr_if2,\mlr_ifsA $unique mlr_if2,\mlr_ifs mlr_or=0 .endc .endm andifwwst2 TSTL sum0 BNEQU tst2 CLRL r0 BRW tst3Btst1: MOVL #-1,r0L BRW tst33tst2: MOVL #1,r0tst3: .endm addq3ww-5, mlr_flag=1b .if eq mlr_flag PUSHA'type name .iffs PUSH'type namea .endc .endm $pushww.ЎF .macro $call,name,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .narg mlr_count mlr_count=mlrRԎ .macro bc,pos,based $andor BBC,BBS,pos,base .endm bc\wwfsA $unique mlr_if2,\mlr_ifs mlr_or=0 .endc .endm andifwwst2 TSTL sum BNEQU tst2= CLRL r0 BRW tst3.tst1: MOVL #-1,r0l BRW tst3utst2: MOVL #1,r0tst3: .endm addq3ww.macro $module,name,arglist,alias,xpsect,xmask,xtypeA module name,,alias,psect=xpsect,mask=,type=xtype .endm $modulewwi.Ў* .macro $procedure,name,alias,xpsect,xtype- procedure name,alԎ .macro bcs,pos,base $andor BBCS,BBSS,pos,base .endm bcswwA $unique mlr_if2,\mlr_ifs mlr_or=0 .endc .endm andifwwst2 TSTL sum< BNEQU tst2C CLRL r0 BRW tst3itst1: MOVL #-1,r0a BRW tst3 tst2: MOVL #1,r0tst3: .endm addq3ww-5, mlr_flag=1 .if eq mlr_flag PUSHA'type name .iff PUSH'type name .endc .endm $pushww %".Ў .macro $set,flag,struc,value $$set flag,\struc'value .endm $setww#.Ў .ma4$Ԏ .macro bs,pos,base, $andor BBS,BBC,pos,base .endm bs,ww,z .RESTORE_PSECTf .ENABLE LOCAL_BLOCK< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,0 .endm beginww MOVL #-1,r0 BRW tst3tst2: MOVL #1,r0tst3: .endm addqww2.Ў- .macro addq3,add1,add2,sum,?tst1,?tst2,?tst3 MOVQ add2,sum ADDL add1,sum ADWC 4+add1,4+sum TSTL 4+sum BLSS tst1 BGTR tst2 TSTL sum BԎ$ .macro descr.blkt,length,name,allot $descr .BLKT,,name, .endm descr.blktrwwlww $label mlr_if2,\mlr_ifs $unique mlr_if2,\mlr_ifs mlr_or=0 .endc .endm andifww=E.Ў .macro bc,pos,base $andor BBC,BBS,pos,base .endm bcww F.Ў .macro bcc,pos,base $andor BBCC,BBSC,pos,base .endm bccww`I.Ў .macro bcs,pos,base $andor BBCS,BBSS,pos,base .endm bcswwXK.ЎA .macro begin,a,b, Ԏ$ .macro descr.blkw,length,name,allot! $descr .BLKW,,name,allot .endm descr.blkwww r3 BLSS tst1 BGTR tst2 TSTL r2 BNEQU tst2 CLRL r0 BRW tst3tst1: MOVL #-1,r0c BRW tst3 tst2: MOVL #1,r0tst3:, .endm cmpq,ww,x,y,z,-! type=L,base=#0,?table,?endtable. CASE'type source,base,#</2>-1table: .irp mlr, .if nb  .WORD mlr-table .iff .WORD endtable-table .endc .endr endtable: .iif ndf mlr_ends, mlr_ XԎ! .macro divq4,divr,divd,quo,rem,-l+ ?div1,?div2,?div3,?div4,?tst1,?tst2,?tst3m PUSHR #^Mr MOVQ divr,r0e MOVQ divd,r2m MOVQ r2,r4_ CLRQ r6 CLRL r8 MOVL #65,r10ediv1: ASHQ #1,r6,r6m BISL r8,r6< CLRL r8 CMPL r1,r7< BNEQ div2 CMPL r0,r6>div2: BGTRU div3 SUBL r0,r6t SBWC r1,r7, INCL r8 div3: CLRL r9W TSTL r5 BGEQ div4 INCL r9div4: ASHQ #1,r4,r4} BISL r8,r4r MOVL r9,r8 DECL r10. BNEQ div1 MOVQ r4,quo MOVQ r6,rem`#ԎB .macro elseif,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z elsee9 if ,,,,,,,,,,,,,- 5 ,,

,,,,,,,,,,> $unique mlr_if0,\mlr_ifs,1, .endm elseif,wwt>,,,,,,C .endm elseiwwGTRU div3 SUBL r0,r6 SBWC r1,r7b INCL r8 div3: CLRL r9 TSTL r5 BGEQ div4 INCL r9div4: ASHQ #1,r4,r4K BISL r8,r4m MOVL r9,r8n DECL r10k BNEQ div1 MOVQ r4,quo MOVQ r6,rem QoԎ .macro endcase,name# $set mlr_flag,mlr_case0,\mlr_casese .if eq mlr_flag $label mlr_case1,\mlr_cases. .endc $label mlr_case2,\mlr_cases mlr_cases=mlr_cases-1 mlr_ends=mlr_ends-1 .endm endcaseww.endc .if eq 3-mlr_flag endloop name, .mexit .endc .if eq 4-mlr_flag endcase name .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect name  .mex`Ԏ .macro endof,name! $branch BRW,mlr_case2,\mlr_casesm mlr_ends=mlr_ends-1 .endm endofww_loop1,\mlr_loops .iffr $endfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loops=mlr_loops-1 mlr_ends=mlr_ends-1 .endm endloopww .endc .endm endifww,?div2,?div3,?div4,?tst1,?tst2,?tst3 PUSHR #^M MOVQ divr,r0 MOVQ divd,r2 MOVQ r2,r4 CLRQ r6 CLRL r8 MOVL #65,r10div1: ASHQ #1,r6,r6 BISL r8,r6 CLRL r8 CMPL r1,r7 BԎ .macro endprocedure,namen mlr_returns=mlr_returns-1 mlr_ends=mlr_ends-1 .endm endprocedureowwmlr_loops .iffr $endfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loops=mlr_loops-1 mlr_ends=mlr_ends-1 .endm endloopww .endc .endm endifwwndm elsewwȽ.ЎB .macro elseif,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z else9 if ,,,,,,,,,,,,,-5 ,,

,,,,,,,,ԪԎ .macro endpsect,namen mlr_ends=mlr_ends-1 .RESTORE_PSECTe .endm endpsect.wwendprocedureowwmlr_loops .iff_ $endfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loops=mlr_loops-1 mlr_ends=mlr_ends-1 .endm endloopwwop name .mexit .endc .if eq 4-mlr_flag endcase name .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect name .mex Ԏ .macro eqlw $andor BEQL,BNEQp .endm eqlwwtww_PSECTe .endm endrecordwwendprocedurelwwg $label mlr_case1,\mlr_cases .endc $label mlr_case2,\mlr_cases mlr_cases=mlr_cases-1 mlr_ends=mlr_ends-1 .endm endcaseww`.Ў .macro endfor endloop .endm endforww.Ў .macro endif,name $set mlr_flag,mlr_if3,\mlr_ifs .if gt mlr_flag $label mlr_if3,\mlr_ifs .iff $label mlr_if1,\mlr_ifs .endc $set mlr_flag@Ԏ .macro gequ $andor BGEQU,BLSSU .endm gequww,s,t,u,v,w,x,y,z,-m from=,to=,by=#1,type=L .if nb from .if dif ,<#0> .if dif ,<0> MOV'type from,index .iffs CLR'type indexm .endc .iff. CLR'type indexC .endc .endc loopm $unique mlr_loop0,\mlr_loops,1n .macro do .endm doc< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,/ $for index,,,mlr_loop1,\mlr_loops,typԎ: .macro mulq3,mulr,muld,prod,?mul1,?mul2,?tst1,?tst2,?tst3 EMUL mulr,muld,#0,prodn MULL3 4+mulr,muld,r0r MULL3 mulr,4+muld,r1$ MULL r1,r0t TSTL mulr BGEQ mul1 MULL muld,r0.mul1: TSTL muld, BGEQ mul2 MULL mulr,r0mul2: MULL r0,4+prod TSTL 4+prod BLSS tst1 BGTR tst2 TSTL prod BNEQU tst2r CLRL r0 BRW tst3ftst1: MOVL #-1,r0^ BRW tst3rtst2: MOVL #1,r0tst3:^ .endm mulq3wwndc mlr_count=0 name'.narg=mlr_count< .if nb , .irpԎ .macro neqr $andor BNEQ,BEQL' .endm neqww .endrv .endc .SAVE_PSECT .if nb 0% .PSECT psect'_data,RD,WRT,NOEXE,LONGd .iffn$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .endm module\wwoops,0a $unique mlr_loop1,\mlr_loopsc $unique mlr_loop2,\mlr_loopsE $label mlr_loop1,\mlr_loops< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,m .endm loopwwidn ,,,,,,,,r .endm loop.wwor< $emit @L(ԎB .macro return,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,,& $set mlr_flag,mlr_return,\mlr_returns .if eq mlr_flag RET .iff  RSB .endc .endm returnrww=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb d% .PSECT psect'_code,RD,NOWRT,EXEt1Ԏ& .macro subq,sub,dif,?tst1,?tst2,?tst3 SUBL sub,dift SBWC 4+sub,4+dift TSTL 4+dif< BLSS tst1 BGTR tst2 TSTL dif< BNEQU tst2o CLRL r0 BRW tst3,tst1: MOVL #-1,r0, BRW tst3 tst2: MOVL #1,r0tst3:r .endm subqeww_flag RET .iff  RSB .endc .endm return wwndm procedureww .iff .if nb  .macro name,arglist $call name,arglist .endm name .iff .macro name $call name .endm name .endc .endc`WHԎ@ .macro then,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z and* .iif eq 1-mlr_or, $label mlr_if2,\mlr_ifs< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,0 .endm thennwwbq3wwRSB .endc .endm returnrww=mlr_ends+1 $unique mlr_end,\mlr_ends,1$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,1 .if nb % .PSECT psect'_code,RD,NOWRT,EXE@qԎ .macro vs $andor BVS,BVC .endm vs,ww,q,r,s,t,u,v,w,x,y,zz9 if ,,,,,,,,,,,,,->5 ,,

,,,,,,,,,,x thenz exitn endif endloop .endm untilwwLOCAL_BLOCK .macro name BSBW name .endm nameL .endm procedurewwLL3 mulr,4+prod,r1 MULL r1,r0 TSTL mulr BGEQ mul1 MULL prod,r0mul1: TSTL prod BGEQ mul2 MULL mulr,r0mul2: MULL r0,r3 MOVQ r2,prod TSTL 4+prod BLSS ts_$$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$EMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQUE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUECSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUMCSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUGLOBALGOTOGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILEzԎk GVROD NREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUGLOBALGOTOGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILE nԎk GVROD $$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$EMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQUE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUEcQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILE8,,,,,,,,-f( ,,,,,,,

,,-' ,,,,,,,,> .if nb e mlr .endc .endr .endc .endm $emitwwG name, .if idn <*>,name:x type length .endc .endc .iff. .LONG labellabel: .endc .endc .endm $descrwwlEԎ* .macro $for,index,by,to,struct,value,type .macro endfor'value' $$for index,by,to,\struct'value,type .endm endfor'valuec .endm $for,wwh>,-f( ,,,,,,,

,,-' ,,,,,,,,> .if nb e mlr .endc .endr .endc .endm $emitwwG namee .if idn <*>,name:u type length .endc .endc .iff .LONG labellabel: .endc .endc .endm $descrlww,a,b .endm and .macro or mlr_or=1" $@KԎ .macro $label,struc,value $$label \struc'valuer .endm $labelwwr index,by,to,\struct'value,type .endm endfor'valuec .endm $for,wwh>,-O( ,,,,,,,

,,-' ,,,,,,,,>b .if nb  mlr .endc .endrm .endc .endm $emitwwame:> type length .endc .endc .iff> .LONG labellabel: .endc .endc .endm $descr$ww .endc .endr .endc $$call \mlr_count,name .endm $callwi0Ԏ .macro bsc,pos,base $andor BBSC,BBCC,pos,base .endm bscww. .RESTORE_PSECT% .ENABLE LOCAL_BLOCK< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,e .endm beginwwabel: type length .iff .LONG name .if idn <*>,name: type length .endc .endc .iff .LONG labellabel: .endc .endm $descrww`ϖ1ЎA .macro $emit,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,1AԎ .macro bss,pos,base $andor BBSS,BBCS,pos,base .endm bsswwd .RESTORE_PSECT+ .ENABLE LOCAL_BLOCK< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,n .endm beginwwtype -(SP) .mexit .endc .if idn <#0>, CLR'type -(SP) .mexit .endc mlr_flag=0 .iif le mlr_mode-1, mlr_flag=1 .iif eq mlr_mode-5, mlr_flag=1 .if eq mlr_flag PUSHA'type name .iff PUSH'type name .endc .{@KԎ .macro case,source,list,-7 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,-f! type=L,base=#0,?table,?endtable. CASE'type source,base,#</2>-1table: .irp mlr, .if nb  .WORD mlr-table .iff, .WORD endtable-table .endc .endr endtable: .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,4 .iif ndf mlr_cases, mlr_cases=0 mlr_cases=mlr_cases+1 $unique mlr_case0,\mlr_cases,01 $unique mlr_case1,\vԎ( .macro cmpq,src1,src2,?tst1,?tst2,?tst3 MOVQ src1,r2, SUBL src2,r2, SBWC 4+src2,r3y TSTL r3 BLSS tst1 BGTR tst2 TSTL r2 BNEQU tst2< CLRL r0 BRW tst3tst1: MOVL #-1,r0l BRW tst3ntst2: MOVL #1,r0tst3:e .endm cmpqOwwdtable-tablea .endc .endr endtable:, .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,4 .iif ndf mlr_cases, mlr_cases=0 mlr_cases=mlr_cases+1 $unique mlr_case0,\mlr_cases,0, $unique mlr_case1,\ POPR #^M TSTL 4+quol BLSS tst1 BGTR tst2 TSTL quon BNEQU tst2. CLRL r0 BRW tst3tst1: MOVL #-1,r0o BRW tst3ntst2: MOVL #1,r0tst3:. .endm divq4wwQ1Ў .macro bss,pos,base $andor BBSS,BBCS,pos,base .endm bsswwT1Ў .macro case,source,list,-7 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,-! type=L,base=#0,?table,?endtable. CASE'type source,base,#</2>-1table: .irp mlr, .if nb  .WO@ }Ԏ .macro endfor endloop .endm endforrww0,\mlr_casese .if eq mlr_flag $label mlr_case1,\mlr_cases. .endc $label mlr_case2,\mlr_cases mlr_cases=mlr_cases-1 mlr_ends=mlr_ends-1 .endm endcaseww.endc .if eq 3-mlr_flag endloop namea .mexit .endc .if eq 4-mlr_flag endcase names .mexit .endc .if eq 5-mlr_flag endof name .mexit .endc .if eq 6-mlr_flag endrecord name .mexit .endc .if eq 7-mlr_flag endpsect name. .mexԎ .macro eqlu $andor BEQLU,BNEQU .endm eqluwwt,u,v,w,x,y,z elseC9 if ,,,,,,,,,,,,,-O5 ,,

,,,,,,,,,, $unique mlr_if0,\mlr_ifs,1 .endm elseifwwro descr.blkq,length,name,allot! $descr .BLKQ,,name,allot .endm descr.blkqww ڴ1Ў$ .macro descr.blkt,length,name,allot $descr .BLKT,,name .endm descr.blktww yٗ1Ў$ .macro descr.blkw,l  Ԏ .macro exit,value $set mlr_flag,mlr_end,\mlr_ends .if eq mlr_flag .if nb valueW MOV'type value,r0 .endc $EXIT_S r0s .mexit# .endc! $branch BRW,mlr_loop2,\mlr_loops .endm exitrww .endm doww1Ў@ .macro else,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z $unique mlr_if3,\mlr_ifs $branch BRW,mlr_if3,\mlr_ifs $label mlr_if1,\mlr_ifs< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,@Ԏ' .macro external,mlr,name,arglist,aliase .if idn ,_) $module name,,alias,,,EXTERNAL. .mexit .endc .if idn ,n) $module name,,alias,,,EXTERNAL .mexit .endc .if idn ,! $procedure name,alias,,EXTERNAL .mexit .endc .if idn ,! $procedure name,alias,,EXTERNAL  .mexit .endc .EXTERNAL mlr .endm externalwwendfor \mlr_loops .endc $label mlr_loop2,\mlr_loops mlr_loopsuԎ, .macro global,mlr,name,arglist,psect=,mask= .if idn ,, .if nb - $module name,,,psect,,GLOBAL .iff, $module name,,,name,,GLOBAL .endcn .mexit .endc .if idn ,n .if nb - $module name,,,psect,,GLOBAL .iff, $module name,,,name,,GLOBAL .endc< .mexit .endc .if idn , .if nb  $procedure name,,psect,GLOBAL, .iff $pE,LONG .iff% .PSECT name'_'type,RD,NOWRT,EXE,LONG1 .endc .if idn ,name:: .iff name:3 .endc .SAVE_PSECT .if nb e% .PSECT psect'_data,RD,WRT,NOEXE,LONG .iffu$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .macro name BSBW name .endm name  .endm procedurewwU tst2r CLRL r0 BRW tst3tst1: MOVL #-1,r0 BRW tst3tst2: MOVL #1,r0tst3:o .endm mulq3ww,,,,,,,,,,,-5 ,,

,,,GLOBALGOTOGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILE)jBَ GVROD MODULE PROCEDURE`9Bَ# .macro module,name,arglist,alias,-. psect=,mask=,type=LOCALA .if idn , .if nb  .if nb  .macro alias,arglist $call name,arglist .endm aliasR .iffX .macro alias $call name .endm alias .endc .iff .if nb u .macro name,arglist $call name,arglist .endm name .iffm .macro nameO $call name .endm name .endc .endc' .mexit .endc .iif ndf mlr_ends @Ԏ .macro $$branch,instr,value,a,b .if nb bs instr a,b,value'$ .mexitr .endc .if nb ar instr a,value'$ .mexitr .endc instr value'$ .endm $$branchww prod,r0cmul1: TSTL prod BGEQ mul2 MULL mulr,r0 mul2: MULL r0,r3 MOVQ r2,prodo TSTL 4+prod BLSS tst1 BGTR tst2 TSTL prod BNEQU tst2. CLRL r0 BRW tst3 tst1: MOVL #-1,r0r BRW tst3 tst2: MOVL #1,r0tst3:a .endm mulqwwmacro namel $call name .endm name .endc .endcmoE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUECSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUGLOBALGOTOGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDbENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDUREENDPSECT ENDRECORD ENDREPEATENDWHILEEQLEQLUEXITEXTERNALFORFOREVERGEQGEQUGLOBALGTRGTRUIFLBCLBSLEQLEQULOOPLSSLSSUMODULEMULQMULQ3NEQNEQUOFORORIF OTHERWISE PROCEDUREPSECTRECORDREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILE=Ҏ GVROD GOTO`e)Ԏk GVROD $$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$EMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQU@&pԎ5 .macro $module,name,arglist,alias,xpsect,xmask,xtype.A module name,,alias,psect=xpsect,mask=,type=xtype' .endm $modulewwwwm $$labelww8sю .macro $$set,flag,value flag=value .endm $$setww 8sю .macro $andor,true,false,a,b .macro and mlr_and=1# $branch false,mlr_if1,\mlr_ifs,a,b .endm and .macro or mlr_or=1" $branch true,mlr_if2,\mlr_ifs,a,b .endm or .mexit .endm $andorww08srmԎ .macro cc $andor BCC,BCS .endm cc,ww,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,-t! type=L,base=#0,?table,?endtablea. CASE'type source,base,#</2>-1table: .irp mlr, .if nb > .WORD mlr-table .iff .WORD endtable-tabler .endc .endr endtable:c .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,4 .iif ndf mlr_cases, mlr_cases=0 mlr_cases=mlr_cases+1 $unique mlr_case0,\mlr_cases,0r $unique mlr_case1,\`UԎ .macro consts .endm constww2,?tst3 MOVQ src1,r2, SUBL src2,r2, SBWC 4+src2,r3y TSTL r3 BLSS tst1 BGTR tst2 TSTL r2 BNEQU tst2< CLRL r0 BRW tst3tst1: MOVL #-1,r0l BRW tst3ntst2: MOVL #1,r0tst3:e .endm cmpqOwwdtable-tablen .endc .endr endtable:u .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,4 .iif ndf mlr_cases, mlr_cases=0 mlr_cases=mlr_cases+1 $unique mlr_case0,\mlr_cases,0  $unique mlr_case1,\it .endc .endm endww descr.blkw,length,name,allot! $descr .BLKW,,name,allot .endm descr.blkwrwwe,source,list,-7 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,-! type=L,base=#0,?table,?endtable. CASE'type source,base,#</2>-1table: .irp mlr, .if nb  .WORD mlr-table .iff .WORD endtable-table .endc .endr endtable: .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,4 .iif ndf mlr_cases, mlr_ci ~ԎG .macro for,index,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,- from=,to=,by=#1,type=L .if nb from .if dif ,<#0> .if dif ,<0>n MOV'type from,index .iff< CLR'type indexo .endc .iffs CLR'type index, .endc .endc loopB $unique mlr_loop0,\mlr_loops,1c .macro do .endm do9< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,V/ $for index,,,mlr_loop1,\mlr_loops,type .endm forww .macro external,mlr,name,arglist,aliasn .if idn ,,) $module name,,alias,,,EXTERNALx .mexit .endc .if idn ,t) $module name,,alias,,,EXTERNALm .mexit .endc .if idn ,! $procedure name,alias,,EXTERNALc .mexit .endc .if idn ,! $procedure name,alias,,EXTERNAL  .mexit .endc .EXTERNAL mlr .endm external>ww,allot .endm descr.blklww9sю$ .macro descr.`Ԏ .macro forever,name endloop .endm foreverww,r,s,t,u,v,w,x,y,z,- from=,to=,by=#1,type=L .if nb from .if dif ,<#0> .if dif ,<0>h MOV'type from,index .iff. CLR'type index< .endc .iff, CLR'type indexs .endc .endc loopy $unique mlr_loop0,\mlr_loops,1 .macro do .endm doe< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,m/ $for index,,,mlr_loop1,\mlr_loops,typ2Ԏ .macro goto,label BRW label .endm goto=wwf idn ,: .if nb - $module name,,,psect,,GLOBAL .iff, $module name,,,name,,GLOBAL .endc .mexit .endc .if idn ,  .if nb - $module name,,,psect,,GLOBALv .iff, $module name,,,name,,GLOBAL .endcn .mexit .endc .if idn , .if nb  $procedure name,,psect,GLOBAL_ .iff $p@uԎ .macro $$call,count,name4 CALLS #count,G^'namen .endm $$call.ww .SAVE_PSECT .if nb e% .PSECT psect'_data,RD,WRT,NOEXE,LONG .iff$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .endm modulewwacro global,mlr,name,arglist,psect=,mask= .if idn , .if nb - $module name,,,psect,,GLOBAL .iff, $module name,,,name,,GLOBAL .endc .mexit .endc .if idn <Ԏ$ .macro $$for,index,by,to,value,type ACB'type to,by,index,value'$u .endm $$forwwMULL3 4+mulr,muld,r0m MULL3 mulr,4+muld,r11 MULL r1,r0, TSTL mulr BGEQ mul1 MULL muld,r0mul1: TSTL muld BGEQ mul2 MULL mulr,r0 mul2: MULL r0,4+prod TSTL 4+prod BLSS tst1 BGTR tst2 TSTL prod BNEQU tst2f CLRL r0 BRW tst3tst1: MOVL #-1,r0 BRW tst3tst2: MOVL #1,r0tst3:f .endm mulq3ww .macro name,arglist $call name,arglist .endm name .if`KԎ .macro $$label,valuervalue'$: .endm $$labelwwa,b,value'$ .mexit: .endc .if nb a. instr a,value'$ .mexit  .endc instr value'$ .endm $$branchEww_ .iff,$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .macro name BSBW name .endm names .endm procedurewwLONG .iff$ .PSECT name'_code,RD,NOWRT,EXE,LONG .endc .if idn ,name:: .iffname: .endc .WORD ^M mlr_count=0 name'.narg=mlr_count .OREPEATRETURNSUBQSUBQ3THENTSTQUNTILVARVCVSWHILE`, Ԏk GVROD $$BRANCH$$CALL$$FOR$$LABEL$$SET$ANDOR$BRANCH$CALL$DESCR$EMIT$ENDFOR$FOR$LABEL$MODULE $PROCEDURE$PUSH$SET$UNIQUE.BLKTADDQADDQ3ANDANDIFBCBCCBCSBEGINBSBSCBSSCASECCCMPQCONSTCONTINUECSDESCR DESCR.BLKA DESCR.BLKB DESCR.BLKD DESCR.BLKF DESCR.BLKG DESCR.BLKH DESCR.BLKL DESCR.BLKO DESCR.BLKQ DESCR.BLKT DESCR.BLKWDIVQ4DOELSEELSEIFENDENDCASEENDFORENDIFENDLOOP ENDMODULEENDOF ENDPROCEDU`Ԏ .macro $$set,flag,value flag=valueo .endm $$setwwm $$callwwit .endc .if nb a instr a,value'$ .mexitc .endc instr value'$ .endm $$branch,ww ,,

,,,,,,,,,, else exit endif .endm whileww @IԎ .macro $andor,true,false,a,bO .macro and. mlr_and=1# $branch false,mlr_if1,\mlr_ifs,a,b. .endm and .macro or mlr_or=1r" $branch true,mlr_if2,\mlr_ifs,a,b .endm orr .mexit .endm $andorRwwXE,LONG .endc .ENABLE LOCAL_BLOCK .macro name BSBW name .endm nameG .endm procedurewwe>,name:: .iffname: .endc .WORD ^M mlr_count=0 name'.narg=mlr_count .if nb  .irp mlr, mlr_count=mlr_count+4 name'NyԎ* .macro $procedure,name,alias,xpsect,xtype- procedure name,alias,psect=xpsect,type=xtypet .endm $procedure>ww=xtype  .endm $modulewwr,<,,,,,,,,-( ,,

,,,,,,,-' ,,,,,,,,> .if nb  $push  .endc .endre .endc $$call \mlr_count,name .endm $callww`m%Ԏ .macro $$label,valuevalue'$: .endm $$labelww%Ԏ .macro $$set,flag,val YԎ .macro $push,name,type=Ll .ntype mlr_mode,namee mlr_mode=mlr_mode@-4&^xFt .if idn <0>,$ CLR'type -(SP). .mexitl .endc .if idn <#0>, CLR'type -(SP)u .mexitz .endc mlr_flag=0m .iif le mlr_mode-1, mlr_flag=1_ .iif eq mlr_mode-5, mlr_flag=1w .if eq mlr_flag PUSHA'type name .iff> PUSH'type name- .endc .endm $pushww>,,,> .if nb  $push  .endc .endr .endc $$call \mlr_count,name .endm $callwoԎ .macro continue .endm continueowwndm do.< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,! $branch BRW,mlr_case1,\mlr_casesl .endm caseaww .endm $labelww%Ԏ5 .macro $module,name,arglist,alias,xpsect,xmask,xtypeA module name,,alias,psect=xpsect,mask=,type=xtype .endm $modulewwL%Ԏ* .macro $procedure,name,alias,xpsect,xtype- procedure name,alrocedure name,,name,GLOBAL .endcl .mexit .endc .if idn , .if nb  $procedure name,,psect,GLOBALn .iff $procedure name,,name,GLOBAL .endc .mexit .endc .endm globaleww.endm caseww`X&Ԏ .macro cc $andor BCC,BCS .endm ccww[&Ԏ( .macro cmpq,src1,src2,?tst1,?tst2,?tst3 MOVQ src1,r2 SUBL src2,r2 SBWC 4+src2,r3 TSTL r3 BLSS tst1 BGTR tst2 TSTL r2 BNEQU tst2 CLRL r0 BRW tst3tst1: MO 8Ԏ .macro gtrT $andor BGTR,BLEQ1 .endm gtrwwTL quon BNEQU tst2o CLRL r0 BRW tst3tst1: MOVL #-1,r0& BRW tst3rtst2: MOVL #1,r0tst3:a .endm divq4ww,,name,allot .endm descr.blklww@Z&Ԏ$ .macro descr.blko,length,name,allot! $descr .BLKO,,name,allot .endm descr.blkoww&Ԏ$ .macro descr.blkq,length,name,allot! $descr .BLKQ,,name,allot .endm descr.blkqww&Ԏ$ .macro descr.@]@Ԏ .macro gtru $andor BGTRU,BLEQU. .endm gtruwwn , .if nb - $module name,,,psect,,GLOBAL  .iff, $module name,,,name,,GLOBAL .endcr .mexit .endc .if idn ,2 .if nb - $module name,,,psect,,GLOBALn .iff, $module name,,,name,,GLOBAL .endc  .mexit .endc .if idn , .if nb  $procedure name,,psect,GLOBALl .iff $p Ԏ% .macro $branch,instr,struc,value,a,b" $$branch ,\struc'value,a,b .endm $branchwwQU,BLSSU .endm gequww'Ԏ? .macro global,mlr,name,arglist,psect=,mask= .if idn , .if nb - $module name,,,psect,,GLOBAL .iff, $module name,,,name,,GLOBAL .endc .mexit .endc .if idn , .if nb - $module name,,,psect,,GLOBAL .iff, ԎF .macro $call,name,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .narg mlr_count mlr_count=mlr_count-1 .if gt mlr_count- .irp mlr,<,,,,,,,,-( ,,

,,,,,,,-' ,,,,,,,,>, .if nb  $push  .endc .endrL .endc $$call \mlr_count,namen .endm $callww (Ԏ .macro goto,label BRW label .endm gotoww $ (Ԏ .macro gtr $andor BGTR,B൮Ԏ .macro $set,flag,struc,valuea $$set flag,\struc'value .endm $setDwwNOEXE,LONG .iff$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .endm moduleww`~(Ԏ4 .macro mulq,mulr,prod,?mul1,?mul2,?tst1,?tst2,?tst3 EMUL mulr,prod,#0,r2 MULL3 4+mulr,prod,r0 MULL3 mulr,4+prod,r1 MULL r1,r0 TSTL mulr BGEQ mul1 MULL prod,r0mul1: TSTL prod BGEQ mul2 MULL mulr,r0mul2: MULL r0,r3 MOVQ r2,prod TSTL 4+prod BLSS ts mlr_cases $unique mlr_case2,\mlr_casesp .macro do .endm don< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,R! $branch BRW,mlr_case1,\mlr_casesr .endm caseiwwmlr_mode-1, mlr_flag=1$ .iif eq mlr_mode-5, mlr_flag=1. .if eq mlr_flag PUSHA'type name .iffm PUSH'type name .endc .endm $pushwwr,true,false,a,b .macro and mlr_and=1# $branch false,mlr_if1,\mlr_ifs,a,b .endm and .macro or mlr_or=1" $Ԏ .macro cs $andor BCS,BCCa .endm csnwws< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,! $branch BRW,mlr_case1,\mlr_casest .endm caseewwname,alias,psect=xpsect,type=xtype .endm $procedurewwcԎ .macro $push,name,type=L .ntype mlr_mode,name mlr_mode=mlr_mode@-4&^xF .if idn <0>, CLR'type -(SP) .mexit .endc .if idn <#0>, CLR'type -(SP) .mexit~wFԎ> .macro if,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,2 .iif ndf mlr_ifs, mlr_ifs=0 mlr_ifs=mlr_ifs+1 $unique mlr_if0,\mlr_ifs,03 $unique mlr_if1,\mlr_ifs $unique mlr_if2,\mlr_ifs $unique mlr_if3,\mlr_ifs,0 mlr_and=0 .macro ande AND?m .endm and mlr_or=0 .macro or OR? .endm oro< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,,e .endm ifGwwEQs .endm gtrwwn ,) $module name,,alias,,,EXTERNAL .mexit .endc .if idn ,) $module name,,alias,,,EXTERNAL .mexit .endc .if idn ,! $procedure name,alias,,EXTERNAL .mexit .endc .if idn ,! $procedure name,alias,,EXTERNAL .mexit .endc .EXTERNAL mlr .endm externalww>w ԎG .macro for,index,a,b,c,d,e,f,g,h,i,j,k,l,m,n,@Ԏ$ .macro descr,type,length,name,allot descr'type ,name,allot .endm descrwwedure name,,psect,GLOBAL .iff $procedure name,,name,GLOBAL .endc .mexit .endc .endm globalww Ԏ .macro goto,label BRW label .endm gotowwG Ԏ .macro gtr $andor BGTR,BLEQ .endm gtrww Ԏ .macro gtru $andor BGTRU,BLEQU .endm gtruww` Ԏ> .macro if,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,sखԎ$ .macro descr.blka,length,name,allot! $descr .BLKA,,name,allote .endm descr.blka,ww.endm and .macro or mlr_or=1" $branch true,mlr_if2,\mlr_ifs,a,b .endm or .mexit .endm $andorww/Ԏ% .macro $branch,instr,struc,value,a,b" $$branch ,\struc'value,a,b .endm $branchww`JԎF .macro $call,name,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .narg mlr_count mlr_count=mlr_count-1 .if gt mlr_count- .irp`3TԎ .macro lbc,source $andor BLBC,BLBS,source .endm lbcww.macro cs $andor BCS,BCC .endm cswwMGԎ$ .macro descr,type,length,name,allot descr'type ,name,allot .endm descrww@uPԎ$ .macro descr.blka,length,name,allot! $descr .BLKA,,name,allot .endm descr.blkaww >aԎ$ .macro descr.blkb,length,name,allot! $descr .BLKB,,name,allot .endm descr.blkbww@IԎ$ .macro descr.@WԎ .macro lbs,source $andor BLBS,BLBC,source .endm lbsww Ԏ> .macro if,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,2 .iif ndf mlr_ifs, mlr_ifs=0 mlr_ifs=mlr_ifs+1 $unique mlr_if0,\mlr_ifs,0 $unique mlr_if1,\mlr_ifs $unique mlr_if2,\mlr_ifs $unique mlr_if3,\mlr_ifs,0 mlr_and=0 .macro and AND? .endm and mlr_or=0 .macro or OR? .endm or< $emit , mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,0$ .iif ndf mlr_returns, mlr_returns=0 mlr_returns=mlr_returns+1" $unique mlr_return,\mlr_returns,0 .if nb o& .PSECT psect'_'type,RD,NOWRT,EXE,LONG .iffr% .PSECT name'_'type,RD,NOWRT,EXE,LONG .endc .if idn ,name:: .iffname:  .endc .if nb  .WORD ^Mr .iff .WORD ^M .endc mlr_count=0 name'.narg=mlr_counto .if nb i .irp mlr,8Ԏ$ .macro descr.blkb,length,name,allot! $descr .BLKB,,name,allot .endm descr.blkbwwFԎ$ .macro descr.blkd,length,name,allot! $descr .BLKD,,name,allot .endm descr.blkdwwCԎ$ .macro descr.blkf,length,name,allot! $descr .BLKF,,name,allot .endm descr.blkfww׿Ԏ$ .macro descr.blkg,length,name,allot! $descr .BLKG,,name,allot .endm descr.blkgww@Ԏ$ .macro descr.@XԎ .macro leq $andor BLEQ,BGTR .endm leqww []Ԏ .macro lequ $andor BLEQU,BGTRU .endm lequww`h`Ԏ@ .macro loop,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z .iif ndf mlr_ends, mlr_ends=0 mlr_ends=mlr_ends+1 $unique mlr_end,\mlr_ends,3 .iif ndf mlr_loops, mlr_loops=0 mlr_loops=mlr_loops+1 $unique mlr_loop0,\mlr_loops,0 $unique mlr_loop1,\mlr_loops $unique mlr_loop2,\mlr_loops $label mlr_loop1,\mlr_loops< $emit ,,,,,,,,,,,,,-5 ,,

,,,,,,,,,, .endm loopww`lԎ .macro lss $andor BLSS,BGEQ .endm lssww@1qԎ .macro lssu $andor BLSSU,BGEQU .endm lssuww uԎ# .macro module,name,arglist,alias,- psect=,mask=,type=LOCAL .if idn , .EXTERNAL name .if nb  .if nb  .macro alias,arglist $call name,arglist .endm  mlr_count=mlr_count+4 name'.'mlr=mlr_count .endr .endc .SAVE_PSECT .if nb % .PSECT psect'_data,RD,WRT,NOEXE,LONG .iff$ .PSECT name'_data,RD,WRT,NOEXE,LONG .endc .ENABLE LOCAL_BLOCK .endm moduleww Bَ. .macro procedure,name,alias,psect=,type=LOCAL .if idn , .if nb  .macro alias BSBW G^'name .endm alias .iff .macro name BSBW G^'name .endm name .endc .mexit .endc .iif ndf mlr_en

,,-' ,,,,,,,,> .if nb  mlr .endc .endr .endc .endm $emit Ԏ .macro andq AND?a .endm andwwt2,?tst3  MOVQ add2,sum ADDL add1,sum ADWC 4+add1,4+sum TSTL 4+sum2 BLSS tst1 BGTR tst2 TSTL sum0 BNEQU tst2 CLRL r0 BRW tst3Btst1: MOVL #-1,r0L BRW tst33tst2: MOVL #1,r0tst3: .endm addq3ww.macro $label,struc,value $$label \struc'value .endm $labelww$3ώ5 .macro $module,name,arglist,alias,xpsect,xmask,xtypeA module name,,alias,psect=xpsect,mask=,type=xtype .endm $mo`Ԏ .macro bcc,pos,base $andor BBCC,BBSC,pos,base .endm bccwwA $unique mlr_if2,\mlr_ifs mlr_or=0 .endc .endm andifwwst2 TSTL sume BNEQU tst2n CLRL r0 BRW tst3ltst1: MOVL #-1,r0m BRW tst3etst2: MOVL #1,r0tst3:a .endm addq3wwP) .mexit .endc .if idn <#0>, CLR'type -(SP) .mexit .endc mlr_flag=0 .iif le mlr_mode-1, mlr_flag=1 .iif eq mlr_mode-5, mlr_flag=1 .if eq mlr_flag PUSHA'type name .iff PUSH'type name]ԎA .macro begin,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,zs .RESTORE_PSECTf .ENABLE LOCAL_BLOCK< $emit ,,,,,,,,,,,,,-5 ,,