q[VAX-11 Librarian V2A.00ৣ!ȈƗDD CCC  |BBREAK.CALLCFCOUNT8DSB_LONG5@ELSE8dENB_LONG5ENDIFENDWHILE4IFNEXTATREPEATSMAC.IF,STRINGrUNTIL0VECTOR6jWHILEVNEXTNG SMAC.GENBRB.B SMAC.GSLB.B.B SMAC.LONGBB.B SMAC.RGTRTB.B SMAC.RNEQTB.B SMAC.SHORTB.BSTRINGWHILEREPEAT=SMAC.BCKNXT<SMAC.BCKNXT1 SMAC.BRKNXT<zSMAC.BSITR?SMAC.CCITR; SMAC.EMITR; SMAC.EMITL=SMAC.EQLOR< SMAC.ERROR SMAC.GENBR SMAC.GSLB! SMAC.GSLB.B :SMAC.TAGIL9 SMAC.UNTIL>SMAC.VCILE>SMAC.VSILE?SMAC.WHILE SMAC.WHILECSTRING: SMAC.LONGB.B>SMAC.LSSYTB=bSMAC.NEQYTB= SMAC.OKAYTB; SMAC.PEEKTB%SMAC.POPHTB;$ SMAC.PUSHTBBSMAC.RBCLTBASMAC.RBSLTBASMAC.RCCLTB? SMAC.REQLTB@p SMAC.RGEQTB? SMAC.RGTRTB >SMAC.GTR8SMAC.IFSMAC.INIIL<hSMAC.LBCGBB<SMAC.LBSGBB=SMAC.LEQGBB" SMAC.LONGBB2 SMAC.GENTST>SMAC.GEQB SMAC.GSLB SMAC.GSLB.B AnSMAC.RSCRTB@DSMAC.RVCRTB@SMAC.RVSRTBBjSMAC.RWORTB)SMAC.SCORTB! SMAC.SHORTB: SMAC.SHORTB.BA SMAC.RLBCTBA< SMAC.RLBSTB@ SMAC.RLEQTB@ SMAC.RLSSTB?b SMAC.RNEQTB J .MACRO ENDIFA .IF NDF, SMAC..INIT* .ERROR ; ENDIF occurs before any IF's .MEXITA .ENDC SMAC.PEEK ..LBL, ..TYP ; .IF EQ,<..TYP - SMAC..IF> ; SMAC.TAG \..LBL, 3 ;. .IF_FALSE .IF EQ,<..TYP-SMAC..ELSE> ; SMAC.TAG \..LBL,4 ; .IF_FALSE4 .ERROR ; ENDIF does not terminate an IF block .MEXIT. .ENDC .ENDC SMAC.POP ..LBL, ..TYP ; ; .ENDM ENDIFwwF EQ,..NOOR ; SMAC.TAG \SMAC..LBLN,2 .ENDC SMAC.PUSH \SMAC..LBLN,\ ` .MACRO REPEAT SMAC.INI ;;% SMAC.PUSH \SMAC..LBLN, \SMAC..REPEAT. SMAC.TAG \SMAC..LBLN, 1SMAC..LBLN = SMAC..LBLN + 1y .ENDM REPEATIww.ENDC SMAC.PEEK ..LBL, ..TYP ; .IF NE,<..TYP - SMAC..IF>- .ERROR ; Incorrect nesting of ELSE block .MEXIT .IF_FALSE SMAC.POP ..LBL, ..TYP ; .IRP ..N, \..LBL SMAC.EMIT  .ENDR SMAC.TAG \..LBL, 3 SMAC.PUSH \..LBL, \SMAC..ELSE .ENDC .ENDM ELSEww6Ǖ1 .MACRO UNTIL T1,C1,T2,C2,T3,C3,T4,C4,T5,C5,T6,C6  .IF NDF,SMAC..INI. .ERROR ; UNTIL occurs before any REPEAT's .MEXIT, .ENDC SMAC.PEEK ..LBL, ..TYP  .IF NE,<..TYP-SMAC..REPEAT>/ .ERROR ; UNTIL does not terminate a REPEAT4 .MEXITF .ENDC SMAC.POP ..LBL, ..TYP ; .IRP CC,\..LBLo SMAC.TAG 'CC',2 ;N .ENDR .NARG ..NARG. .IF EQ,..NARG: .ERROR ; UNTIL requires a condition, FOREVER, or ONCE .MEXIT  .ENDC? SMAC.UNTIL ,< T5>,,,-A ,,,,C1,T1M .IF EQ,..NOOR ;  SMAC.TAG \SMAC..LBLN,4 .ENDC# SMAC.PUSH \SMAC..LBLN,\SMAC..WHILEC SMAC..LBLN = SMAC..LBLN + 1 .ENDM WHILEwwOR ; UNTIL occurs before any REPEAT's .MEXIT .ENDC SMAC.PEEK ..LBL, ..TYP .IF NE,<..TYP-SMAC..REPEAT>/ .ERROR ; UNTIL does not terminate a REPEAT .MEXIT .ENDC SMAC.POP ..LBL, ..TYP ; .IRP CC,\..LBL SMAC.TAG 'CC',2 ; .ENDR .NARG ..NARG .IF EQ,..NARG: .` .MACRO ENDWHILE .IF NDF, SMAC..INI.0 .ERROR ; ENDWHILE occurs before any WHILE's .MEXITC .ENDC SMAC.PEEK ..LBL, ..TYP ; .IF NE,<..TYP - SMAC..WHILE>;1 .ERROR ; ENDWHILE does not terminate a WHILE .MEXIT  .ENDC SMAC.POP ..LBL, ..TYP ; ; SMAC.TAG \..LBL,2 ; .IRP CC,\..LBL ; SMAC.EMIT n .ENDR SMAC.TAG \..LBL,3 ; .ENDM ENDWHILE.ww2>*2-..NARG> ;8 .ERROR ; Missing condition or DO in WHILE statement@= .MACRO NEXT NXTID, IFDUM,T1,C1,T2,C2,T3,C3,T4,C4,T5,C5,T6,C66;6 .IF NDF, SMAC..INI,/ .ERROR ; NEXT occurs before any structuress .MEXITS .ENDC .IF IDN,NXTID, ;" SMAC.PEEK ..LBL, ..TYP, LEV=0 ; .IF LE,..TYP-4 ;- .ERROR ; Can't NEXT in an IF structureu .MEXITI .IF_FALSE;B SMAC.BRKNXT ,,,,,,,,,- ,, .IRP CC,\..LBLB SMAC.EMIT 3 .ENDR  ENDIF .ENDC .IF_FALSE ;;B SMAC.BRKNXT ,,,,,,,,,,- , SMAC.EMIT  ENDIF .ENDC .ENDM NEXTEwww3 ; .ENDM ENDWHILEww!Ȉ> .MACRO BREAK BRKID, IFDUM,T1,C1,T2,C2,T3,C3,T4,C4,T5,C5,T6,C6; .IF NDF, SMAC..INI0 .ERROR ; BREAK occurs before any structures .MEXIT .ENDC .IF IDN,BRKID, ;" SMAC.PEEK ..LBL, ..TYP, LEV=0 ; .IF LE,..TYP-4 ;0 .ERROR ; Can't BREAK from an IF structure .MEXIT .IF_FALSE;B SMAC.BRKNXT ,,,,,,,,,- ,, .IRP CC,\..LBL SMAC.EMIT .ENDR ENDIF .ENDC .IF_FALSE ;;B SMAC.BRKNXT ,,,,,,,,,,- , SMAC.EMIT  ENDIF .ENDC .ENDM BREAKww"Ȉ= .MACRO NEXT NXTID, IFDUM,T1,C1,T2,C2,T3,C3,T4,C4,T5,C5,T6,C6; .IF NDF, SMAC..INI/ .ERROR ; NEXT occurs before any structures .MEXIT .ENDC .IF IDN,NXTID, ;" SMAC.PEEK ..LBL, ..TYP, LEV=0 ; .IF LE,..TYP-4 ;- .ERROR ; Can't NEXT in an IF structure .MEXIT .IF_FALSE;B SMAC.BRKNXT ,,,,,,,,,- ,, .IRP CC,\..LBL SMAC.EMIT .ENDR ENDIF .ENDC .IF_FALSE ;;B SMAC.BRKNXT ,,,,,,,,,,- , SMAC.EMIT  ENDIF .ENDC .ENDM NEXTww"Ȉ/ .MACRO CALL NAME,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9;; ..CNT = 0) .IRP ARG, .IF NB,ARG .NTYPE ..TYP,ARG ; ..TYP = ..TYP@-4&^XF .IF IDN,0, ; PUSHL #0 ; .MEXIT .ENDC ..FLG = 0 .IIF LE,..TYP-1, ..FLG=1 .IIF EQ,..TYP-5, ..FLG=1 .IF EQ,..FLG ; PUSHAL ARG .IF_FALSE PUSHL ARG ; .ENDC ..CNT = ..CNT + 1 .ENDC .ENDR .IRP CC,\..CNT CALLS #'CC',NAME .ENDR .ENDM CALLww"Ȉ .MACRO COUNT INIT; .IF NB,INIT .LONG INIT .IF_FALSE .LONG 0 .ENDC .ENDM COUNTww"Ȉ .MACRO STRING LEN, INIT, ?SYM;; .NCHR ..CNT, .IF GE, .WORD LEN .IF_FALSE .WORD ..CNT .IF_TRUE_FALSE .BYTE DSC$K_DTYPE_T .BYTE DSC$K_C5 SMAC.GENTST , , , , -U <_.'CC'.1>, SMAC..BRREV .IF_FALSE ;4 SMAC.GENTST , , , ,- <_.'CC'.3>, SMAC..NORM .ENDC .ENDC .ENDC .ENDR .IF NB, ;/ SMAC.UNTIL <>, <>, , , , , -u% , , , , C2, T2. .ENDC .ENDM SMAC.UNTILww."ȈF .MACRO SMAC.IF C6,T6,C5,T5,C4,T4,C3,T3,C2,T2,C1,REL,ARG1,ARG2,TYPE=L ; .IRP CC,\SMAC..LBLN ꄖI .MACRO SMAC.WHILE C6,T6,C5,T5,C4,T4,C3,T3,C2,T2,C1,REL,ARG1,ARG2,TYPE=L .;M .IRP CC,\SMAC..LBLN .IF IDN,, ..NOOR = 0GF SMAC.GENTST , , , , <_.'CC'.4>, SMAC..NORM .IF_FALSE ;G SMAC.GENTST , , , , <_.'CC'.3>, SMAC..BRREV. .ENDC .ENDR .IF NB, ;/ SMAC.WHILE <>, <>, , , , , -3% , , , , C2, T2 .ENDC .ENDM SMAC.WHILEIwwEL>,,,,,,,,,,,C1,T1 .IF EQ,..NOOR ;. SMAC.TAG \SMAC..LBLN,2  .ENDC SMAC.PUSH \SMAC..LBLN,\SMAC..IF SMAC..LBLN = SMAC..LBLN + 1 .ENDM SMAC.BRKNXTww .ENDC .ENDC .ENDR .IF NB, ;/ SMAC.UNTIL <>, <>, , , , , -% , , , , C2, T2 .ENDC .ENDM SMAC.UNTILww  .MACRO SMAC.INI;5 SMAC..INI = 1 ; SMAC..IF = 1 ;L SMAC..REPEAT = 5C SMAC..WHILE = 6 SMAC..ELSE = 2> SMAC..BRREV = 1 ; SMAC..NORM = 0> SMAC..SP = 0 ;P SMAC..LBLN = 0 ;. SMAC..LONGM = 0 ;( .IIF NDF,SMAC..LISTON, SMAC..LISTON = 0 $DSCDEF .MACRO SMAC.INI ; .ENDM SMAC.INI .ENDM SMAC.INIwwAC.WHILE <>, <>, , , , , -% , , , , C2, T2 .ENDC .ENDM SMAC.WHILEwwF"Ȉ n# .MACRO SMAC.GENBR REL, DEST, SENSE5 ..LCP = %LENGTH(REL) - 1 ;" .IF IDN,%EXTRACT(..LCP,1,REL), SMAC.'REL , U, F .IF_FALSE SMAC.'REL , <>,  .ENDC .ENDM SMAC.GENBRNwwC..IF SMAC..LBLN = SMAC..LBLN + 1 .ENDM SMAC.BRKNXTwwK"Ȉ .MACRO SMAC.INI; SMAC..INI = 1 ; SMAC..IF = 1 ; SMAC..REPEAT = 5 SMAC..WHILE = 6 SMAC..ELSE = 2 SMAC..BRREV = 1 ; SMAC..NORM = 0 SMAC..SP = 0 ; ɖ* .MACRO SMAC.GSLB REL, DEST, SIGNED, SENSE .IF EQ,SMAC..LONGM ;/ SMAC.SHORTB , , , . .MEXITN .ENDC .IF NDF,DEST ;0 SMAC.LONGB , , , ; .MEXIT .IF_FALSE .IF LT,<128-<.-DEST>> ;0 SMAC.LONGB , , , .MEXIT< .IF_FALSE1 SMAC.SHORTB , , , " .MEXIT  .ENDC .ENDC .ENDM SMAC.GSLBwwNSE .IF BLANK,REL$ .ERROR  BԖ1 .MACRO SMAC.GSLB.B REL, SENSE, ARG1, DEST, DUMMY;F;A;A .IF NB,DUMMY.;B;R3 SMAC.GSLB.B , , , % .MEXIT, .IF_FALSE;. .IF EQ,SMAC..LONGM ;1 SMAC.SHORTB.B , , , 1 .MEXITM .ENDC .IF NDF,DEST ;2 SMAC.LONGB.B , , , ; .MEXIT .IF_FALSE .IF LT,<128-<.-DEST>> ;2 SMAC.LONGB.B , , , .MEXITA .IF_FALSE3 SMAC.SHORTB.B , , , .MEXIT .ENDC .ENDC .ENDC .ENDM SMAC.GSLB.Bww .ENDC .ENDM SMAC.GENTSTwwc"Ȉ* .MACRO SMAC.GSLB REL, DEST, SIGNED, SENSE .IF EQ,SMAC..LONGM ;/ SMAC.SHORTB , , , .MEXIT .ENDC .IF NDF,DEST ;0 SMAC.LONGB , , , ; .MEXIT .IF_FALSE .IF LT,<128-<.-DEST>> ;0 SMAC.LONGB , , , , .MACRO SMAC.SHORTB REL, DEST, SIGNED, SENSE .IF DIF,SENSE,SMAC..BRREV ; SMAC.EMIT .MEXIT .IF_FALSE SMAC.R'REL , .MEXIT  .ENDC .ENDM SMAC.SHORTBwwF NB,DUMMY;;3 SMAC.GSLB.B , , , .MEXIT .IF_FALSE; .IF EQ,SMAC..LONGM ;1 SMAC.SHORTB.B , , , .MEXIT .ENDC .IF NDF,DEST ;2 SMAC.LONGB.B , , , .IF_FALSE SMAC.R'REL ,  .ENDC SMAC.EMIT E SMAC.EMITL  .ENDM SMAC.LONGBNwwAC.GSLB.Bww`Gy"Ȉ, .MACRO SMAC.SHORTB REL, DEST, SIGNED, SENSE .IF DIF,SENSE,SMAC..BRREV ; SMAC.EMIT .MEXIT .IF_FALSE SMAC.R'REL , .MEXIT .ENDC .ENDM SMAC.SHORTB# .MACRO SMAC.TAG LBL, SUFFIX SMAC.EMITL <_.'LBL'.'SUFFIX> .ENDM SMAC.TAGSwwSMAC..BRREV ; SMAC.EMIT .IF_FALSE SMAC.R'REL ,  .ENDC SMAC.EMIT  SMAC.EMITL  .ENDM SMAC.LONGBww"Ȉ, .MACRO SMAC.SHORTB.B REL, ARG1, DEST, SENSE; .IF DIF,SENSE,SMAC..BRREV ; SMAC.EMIT .MEXIT .IF_FALSE SMAC.R'REL , .MEXIT .ENDC .ENDM SMAC.SHORTB.BwwLEV=0 .IF LE,SMAC..SP-LEV4 .ERROR ; Incorrect nesting or missing statemnt. .MEXITS .IF_FALSE ..TMP = SMAC..SP - LEV1 .IRP CC,\..TMP LBL = SMAC..STKL'CC TYP = SMAC..STKT'CC .ENDR .ENDC .ENDM SMAC.PEEKww.LONGB.Bww@"Ȉ .MACRO SMAC.TAG LBL, SUFFIX SMAC.EMITL <_.'LBL'.'SUFFIX> .ENDM SMAC.TAGww"Ȉ .MACRO SMAC.EMIT VAL .IIF NE,SMAC..LISTON, .SHOW ME VAL! .IIF NE,SMAC..LISTON, .NOSHOW ME .ENDM SMAC..( .MACRO SMAC.POP LBL,TYP SMAC.PEEK , L SMAC..SP = SMAC..SP - 1 .ENDM SMAC.POPOwwOSHOW ME .ENDM SMAC.EMITLww*"Ȉ .MACRO SMAC.PUSH LBL,TYP SMAC..SP = SMAC..SP + 1 .IRP CC, \SMAC..SP SMAC..STKT'CC = TYP SMAC..STKL'CC = LBL .ENDR .ENDM SMAC.PUSHww@E"Ȉ .MACRO SMAC.PEEK LBL,TYP,LEV=0 .IF LE,SMAC..SP-LEV4 .ERROR ; Incorrect nesting or missing statemnt. .MEXIT .IF_FALSE ..TMP = SMAC..SP AC.ERROR DEST, SIGNED, SENSE ;L;=! SMAC.GSLB.B , , DESTK .ENDM SMAC.ERROR.ww .ENDM SMAC.PEEKww ٚ"Ȉ .MACRO SMAC.POP LBL,TYP SMAC.PEEK ,  SMAC..SP = SMAC..SP - 1 .ENDM SMAC.POPww_"Ȉ$ .MACRO SMAC.BC DEST, SIGNED, SENSE; SMAC.GSLB.B , , DEST .ENDM SMAC.BCww`"Ȉ$ .MACRO SMAC.BS DEST, SIGNED, SENSE; SMAC.GSLB.B , , DEST .ENDM SMAC.BSww"Ȉ% .MACRO SMAC.LEQ DEST, SIGNED, SENSE+ SMAC.GSLB , , , . .ENDM SMAC.LEQww@z"Ȉ% .MACRO SMAC.LBC DEST, SIGNED, SENSE;! SMAC.GSLB.B , , DEST .ENDM SMAC.LBCww"Ȉ' .MACRO SMAC.ERROR DEST, SIGNED, SENSE;;! SMAC.GSLB.B , , DEST .ENDM SMAC.ERRORww "Ȉ& .MACRO SMAC.OKAY DEST, SIGNED, SENSE;;! SMAC.GSLB.B , , DEST .ENDM SMAC.OKAYww"Ȉ .MACRO SMAC.B DEZ# .MACRO SMAC.VC DEST, SIGNED, SENSE.* SMAC.GSLB , , ,  .ENDM SMAC.VCww SMAC.GSLB , , ,  .ENDM SMAC.EQLww("Ȉ$ .MACRO SMAC.NEQ DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.NEQww@"Ȉ$ .MACRO SMAC.LEQ DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.LEQww5"Ȉ$ .MACRO SMAC.GEQ DEST, SIGNED, SENSE+ SMAC.GSLB <7e# .MACRO SMAC.SC DEST, SIGNED, SENSE* SMAC.GSLB , , ,  .ENDM SMAC.SCwwSLB , , ,  .ENDM SMAC.LSSww`P"Ȉ$ .MACRO SMAC.GTR DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.GTRww׷"Ȉ# .MACRO SMAC.VS DEST, SIGNED, SENSE* SMAC.GSLB , , ,  .ENDM SMAC.VSww]"Ȉ# .MACRO SMAC.VC DEST, SIGNED, SENSE* SMAC.GSLB , < SMAC.EMIT N .ENDM SMAC.RGTRww@"Ȉ# .MACRO SMAC.SC DEST, SIGNED, SENSE* SMAC.GSLB , , ,  .ENDM SMAC.SCww"Ȉ# .MACRO SMAC.CC DEST, SIGNED, SENSE* SMAC.GSLB , , ,  .ENDM SMAC.CCww x"Ȉ" .MACRO SMAC.W DEST, SIGNED, SENSE) SMAC.GSLB , , , .ENDM SMAC.Www"Ȉ .MACRO SMAC.REQL DEST, SIGNED SMAC.EMIT  .ENDM SMAC.ENDM SMAC.RVSww`"Ȉ .MACRO SMAC.RNEQ DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RNEQww "Ȉ .MACRO SMAC.RGTR DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RGTRww"Ȉ .MACRO SMAC.RLSS DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RLSSww"Ȉ .MACRO SMAC.RGEQ DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RGEQww&"Ȉ .MACRO SMAC.RLEQ DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RLEQww "Ȉ .MACRO SMAC.RVC DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RVCww3"Ȉ .MACRO SMAC.RVS DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RVSww`"Ȉ .MACRO SMAC.RCC DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RCCww"Ȉ .MACRO SMAC.RSC DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RSCww@N"Ȉ .MACRO SMAC.RLBC ARG1, DEST SMAC.ucture .MEXITT .IF_FALSE;B SMAC.BRKNXT ,,,,,,,,,- ,, .IRP CC,\..LBL SMAC.EMIT S .ENDR ENDIF .ENDC .IF_FALSE ;;B SMAC.BRKNXT ,,,,,,,,,,- , SMAC.EMIT  ENDIF .ENDC .ENDM BREAKww, SIGNED SMAC.EMIT  .ENDM SMAC.RWwwv"Ȉ> .MACRO BREAK BRKID, IFDUM,T1,C1,T2,C2,T3,Ch/ .MACRO CALL NAME,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9C;C;6 ..CNT = 0) .IRP ARG,r .IF NB,ARGc .NTYPE ..TYP,ARG ;C ..TYP = ..TYP@-4&^XF .IF IDN,0, ;, PUSHL #0 ; .MEXIT .ENDC ..FLG = 0 .IIF LE,..TYP-1, ..FLG=1 .IIF EQ,..TYP-5, ..FLG=1. .IF EQ,..FLG ; PUSHAL ARGC .IF_FALSE PUSHL ARG ; .ENDC ..CNT = ..CNT + 1 .ENDC .ENDR .IRTRING1wwLG=1, .IIF EQ,..TYP-5, ..FLG=1C .IF EQ,..FLG ; PUSHAL ARGI .IF_FALSE PUSHL ARG ; .ENDC ..CNT = ..CNT + 1 .ENDC .ENDR .IRP CC,\..CNT5 CALLS #'CC',NAMEF .ENDR .ENDM CALLRww ; NEXT occurs before any structures .MEXIT .ENDC .IF IDN,NXTID, ;" SMAC.PEEK ..LBL, ..TYP, LEV=0 ; .IF LE,..TYP-4 ;- .ERROR ; Can't NEXT in an IF structure .MEXIT .IF_FALSE;B SMAC.BRKNXT ,,,,,,,,,,- , SMAC.EMIT  ENDIF .ENDC .ENDM NEXTww`"Ȉ/ .MACRO CALL NAME,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9;; ..CNT = 0) .IRP ARG, .IF NB,ARG .NTYPE ..TYP,ARG ;ƗB .MACRO SMAC.BRKNXT T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6;. ..NOOR = 1C@ SMAC.IF ,,,,,,,,,,C1,T1 .IF EQ,..NOOR ;E SMAC.TAG \SMAC..LBLN,2 .ENDC SMAC.PUSH \SMAC..LBLN,\SMAC..IF SMAC..LBLN = SMAC..LBLN + 1 .ENDM SMAC.BRKNXTwwww CC,\..CNT CALLS #'CC',NAME .ENDR .ENDM CALLww#Ȉ .MACRO COUNT INIT; .IF NB,INIT .LONG INIT .IF_FALSE .LONG 0 .ENDC .ENDM C3`6 .MACRO SMAC.GENTST REL, ARG1, ARG2, TYPE, DEST, SENSE .IF BLANK,REL$ .ERROR ; Relation not specified .MEXITL .ENDC .IF BLANK,ARG2 ; .IF BLANK,ARG1 ;( SMAC.GENBR , , ; .IF_FALSE$ .IF DIF,%EXTRACT(0,2,REL),; .IF DIF,REL,OKAY ; .IF DIF,REL,ERROR;! SMAC.EMIT E* SMAC.GENBR , , ; .MEXIT .ENDCR .ENDC .ENDC2;3, SMAC.GENBR , ,  .ENDC .IF_FALSE! .IF DIF,%EXTRACT(0,1,REL),;C# SMAC.EMIT A& SMAC.GENBR , , .IF_FALSE0 SMAC.GENBR , ,  .ENDC .ENDC .ENDM SMAC.GENTSTww5 9 .MACRO IF T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6 SMAC.INI ; .NARG ..NARG .IF BLANK, ;7 .ERROR ; Missing condition or THEN in IF statement .MEXIT .ENDC .IF NE,<<..NARG/2>*2-..NARG> ;7 .ERROR ; Missing condition or THEN in IF statement .MEXIT .ENDC ..NOOR = 1( SMAC.IF ,,,,,,- ,,,,C1,T1 .IF EQ,..NOOR ; SMAC.TAG \SMAC..LBLN,2 .ENDC SMAC.PUSH \SMAC..LBLN,\!SMAC..IF SMAC..LBLN = SMAC..LBLN + 1 .ENDM IFww .MACRO ELSE .IF NDF, SMAC..INI) .ERROR ; ELSE occurs before any IF's .MEXIT .ENDC SMAC.PEEK ..LBL, ..TYP ; .IF NE,<..TYP - SMAC..IF>- .ERROR ; Incorrect nesting of ELSE block .MEXIT .IF_FALSE SMAC.POP ..LBL, ..TYP ; .IRP ..N, \..LBL SMAC.EMIT  .ENDR SMAC.TAG \..LBL, 3 SMAC.PUSH \..LBL, \SMAC..ELSE .ENDC .ENDM ELSEwwT6>,,,,,,,,,- C1, T1 SMAC.TAG \..LBL,3 .ENDM UNTILwwӕ< .MACRO WHILE T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6 SMAC.INI ; .NARG ..NARG .IF BLANK, ;8 .ERROR ; Missing condition or DO in WHILE statement .MEXIT .ENDC .IF NE,<<..NARG/2>*2-..NARG> ;8 .ERROR ; Missing condition or DO in WHILE statement .MEXIT .ENDC ..NOOR = 1 SMAC.TAG \SMAC..LBLN,1 ;+ SMAC.WHILE ,,,< ENDIF .ENDC .IF_FALSE ;;B SMAC.BRKNXT ,,,,,,,,,,- , SMAC.EMIT  ENDIF .ENDC .ENDM NEXTww\)/ .MACRO CALL NAME,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9;; ..CNT = 0) .IRP ARG, .IF NB,ARG .NTYPE ..TYP,ARG ; ..TYP = ..TYP@-4&^XF .IF IDN,0, ; PUSHL #0 ; .MEXIT .ENDC ..FLG = 0 .IIF LE,.9`R .MACRO VECTOR NRELS,SIZE=L; .BLK'SIZE NRELS .ENDM VECTORwwT .MACRO ENB_LONG;; SMAC..LONGM = 1 .ENDM ENB_LONGww`^ .MACRO DSB_LONG;; SMAC..LONGM = 0 .ENDM DSB_LONGwwK`F .MACRO SMAC.IF C6,T6,C5,T5,C4,T4,C3,T3,C2,T2,C1,REL,ARG1,ARG2,TYPE=L ; .IRP CC,\SMAC..LBLN .IF IDN,, ..NOOR = 0F SMAC.GENTST , , , , <_.'CC'.2>, SMAC..NORM  .IF_FALSE ;G SMAC.GENTST , , , , <_.'CC'.3>, SMAC..BRREV .ENDC .ENDR .IF NB, ;, SMAC.IF <>, <>, , , , , -% , , , , C2, T2 .ENDC .ENDM SMAC.IFww`jI .MACRO SMAC.UNTIL C6,T6,C5,T5,C4,T4,C3,T3,C2,T2,C1,REL,ARG1,ARG2,TYPE=L ; .IRP CC,\..LBL .IF IDN,, ; SMAC.EMIT .IF_FALSE .IF DIF,, ; .IF DIF,, ;#, .MACRO SMAC.SHORTB.B REL, ARG1, DEST, SENSE; .IF DIF,SENSE,SMAC..BRREV ; SMAC.EMIT .MEXIT .IF_FALSE SMAC.R'REL , .MEXIT .ENDC .ENDM SMAC.SHORTB.Bww2 .MACRO SMAC.LONGB.B REL, ARG1, DEST, SENSE, ?LBL1;;; .IF IDN,SENSE,SMAC..BRREV ; SMAC.EMIT .IF_FALSE SMAC.R'REL ,  .ENDC SMAC.EMIT  SMAC.EMITL  .ENDM SMAC.LONGB.Bww$`  .MACRO SMAC.EMIT VAL .IIF NE,SMAC..LISTON, .SHOW ME VAL! .IIF NE,SMAC..LISTON, .NOSHOW ME .ENDM SMAC.EMITww@> .MACRO SMAC.EMITL VAL .IIF NE,SMAC..LISTON, .SHOW MEVAL:! .IIF NE,SMAC..LISTON, .NOSHOW ME .ENDM SMAC.EMITLwwK .MACRO SMAC.PUSH LBL,TYP SMAC..SP = SMAC..SP + 1 .IRP CC, \SMAC..SP SMAC..STKT'CC = TYP SMAC..STKL'CC = LBL .ENDR .ENDM SMAC.PUSHww@s .MACRO SMAC.PEEK LBL,TYP,& <+$ .MACRO SMAC.BC DEST, SIGNED, SENSE; SMAC.GSLB.B , , DEST .ENDM SMAC.BCww,$ .MACRO SMAC.BS DEST, SIGNED, SENSE; SMAC.GSLB.B , , DEST .ENDM SMAC.BSww`I.% .MACRO SMAC.LBS DEST, SIGNED, SENSE;! SMAC.GSLB.B , , DEST .ENDM SMAC.LBSwwc4% .MACRO SMAC.LBC DEST, SIGNED, SENSE;! SMAC.GSLB.B , , DEST .ENDM SMAC.LBCww q7' .MACRO SM'8& .MACRO SMAC.OKAY DEST, SIGNED, SENSE;;! SMAC.GSLB.B , , DEST .ENDM SMAC.OKAYww< .MACRO SMAC.B DEST, SIGNED SMAC.EMIT .ENDM SMAC.BwwB$ .MACRO SMAC.EQL DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.EQLww C$ .MACRO SMAC.NEQ DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.NEQww,E$ .MACRO SMAC(`F$ .MACRO SMAC.GEQ DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.GEQwwU$ .MACRO SMAC.LSS DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.LSSww@|W$ .MACRO SMAC.GTR DEST, SIGNED, SENSE+ SMAC.GSLB , , ,  .ENDM SMAC.GTRwwY# .MACRO SMAC.VS DEST, SIGNED, SENSE* SMAC.GSLB , , ,  .ENDM SMAC.VSww*f# .MACRO SMAC.CC DEST, SIGNED, SENSE* SMAC.GSLB , , ,  .ENDM SMAC.CCwwi" .MACRO SMAC.W DEST, SIGNED, SENSE) SMAC.GSLB , , , .ENDM SMAC.Www`Rk .MACRO SMAC.REQL DEST, SIGNED SMAC.EMIT  .ENDM SMAC.REQLww@o .MACRO SMAC.RNEQ DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RNEQwwlq .MACRO SMAC.RGTR DEST, SIGNED+r .MACRO SMAC.RLSS DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RLSSwwv .MACRO SMAC.RGEQ DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RGEQww`w .MACRO SMAC.RLEQ DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RLEQww@| .MACRO SMAC.RVC DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RVCww} .MACRO SMAC.RVS DEST, SIGNED SMAC.EMIT  .,  .MACRO SMAC.RCC DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RCCww5 .MACRO SMAC.RSC DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RSCww` .MACRO SMAC.RLBC ARG1, DEST SMAC.EMIT  .ENDM SMAC.RLBCwwC .MACRO SMAC.RLBS ARG1, DEST SMAC.EMIT  .ENDM SMAC.RLBSww@P .MACRO SMAC.RBS ARG1, DEST SMAC.EMIT  .ENDM SMAC.RBS-։ .MACRO SMAC.RBC ARG1, DEST SMAC.EMIT  .ENDM SMAC.RBCww] .MACRO SMAC.RW DEST, SIGNED SMAC.EMIT  .ENDM SMAC.RWww 䌗> .MACRO BREAK BRKID, IFDUM,T1,C1,T2,C2,T3,C3,T4,C4,T5,C5,T6,C6; .IF NDF, SMAC..INI0 .ERROR ; BREAK occurs before any structures .MEXIT .ENDC .IF IDN,BRKID, ;" SMAC.PEEK ..LBL, ..TYP, LEV=0 ; .IF LE,..TYP-4 ;0 .ERROR ; Can't BREAK from an IF str)/P CC,\..CNT CALLS #'CC',NAME .ENDR .ENDM CALLww઺ .MACRO COUNT INIT; .IF NB,INIT .LONG INIT .IF_FALSE .LONG 0 .ENDC .ENDM COUNTww  .MACRO STRING LEN, INIT, ?SYM;; .NCHR ..CNT, .IF GE, .WORD LEN .IF_FALSE .WORD ..CNT .IF_TRUE_FALSE .BYTE DSC$K_DTYPE_T .BYTE DSC$K_CLASS_S .ADDRESS SYMSYM: .ASCII ~INIT~ .IF_TRUE . = . +  .ENDC .ENDM S