;MACRO library UNIVERSAL ;structured programming definitions Z=4 N=10 DEFINE SOJ reg,addr DEC reg JNE addr ENDM DEFINE BIS src,dst = OR src,dst DEFINE BISW src,dst = ORW src,dst DEFINE BIC src,dst MOV src,D7 COM D7 AND D7,dst ENDM DEFINE BICW src,dst MOVW src,D7 COMW D7 ANDW D7,dst ENDM DEFINE BIT src,dst MOV dst,D7 AND src,D7 ENDM DEFINE BITW src,dst MOVW dst,D7 ANDW src,D7 ENDM DEFINE TJMP index LEA A6,1$$ ADDW index,A6 ADDW @A6,A6 JMP @A6 1$$: ENDM DEFINE CEQ addr BNE 1$$ CALL addr 1$$: ENDM DEFINE CNE addr BEQ 1$$ CALL addr 1$$: ENDM DEFINE REQ BNE 1$$ RTN 1$$: ENDM DEFINE RNE BEQ 1$$ RTN 1$$: ENDM ;CRT terminal function calls DEFINE CRT ARG1,ARG2 IF B,ARG2 MOVW #<-1_8.>,D1 ADDW ARG1,D1 ENDC IF NB,ARG2 MOVW ARG1,D1 ROLW D1,#8. ADDW ARG2,D1 ENDC TCRT ENDM DEFINE CURSOR ROW,COL MOVW ROW,D1 ROLW D1,#8. ADDW COL,D1 TCRT ENDM DEFINE CLS = CRT #0 DEFINE HOME = CRT #1 DEFINE NEWLIN = CRT #2 DEFINE UP = CRT #3 DEFINE DOWN = CRT #4 DEFINE LEFT = CRT #5 DEFINE RIGHT = CRT #6 DEFINE KLOCK = CRT #7 DEFINE KUNLOK = CRT #8. DEFINE CLREOL = CRT #9. DEFINE CLREOS = CRT #10. DEFINE LOW = CRT #11. DEFINE HIGH = CRT #12. DEFINE DELLIN = CRT #15. DEFINE INSLIN = CRT #16. DEFINE C.ON = CRT #28. DEFINE C.OFF = CRT #29. DEFINE DEPACK ADDR IF NB,ADDR,LEA A1,ADDR SUB #4,SP MOV SP,A2 UNPACK CLRB @A2 TTYL @SP ADD #4,SP ENDM DEFINE GTSTR ADDR IF NDF,GTSTR,EXTERN GTSTR LEA A6,ADDR CALL GTSTR ENDM DEFINE GTIDN ADDR IF NDF,GTIDN,EXTERN GTIDN LEA A6,ADDR CALL GTIDN ENDM DEFINE CMPSTR ADDR1,ADDR2 IF NDF,CMPSTR,EXTERN CMPSTR SAVE A0 LEA A0,ADDR1 LEA A6,ADDR2 CALL CMPSTR REST A0 ENDM DEFINE OUTSTR ADDR,DDB IF NDF,OUTSTR,EXTERN OUTSTR SAVE A0 LEA A0,DDB LEA A6,ADDR CALL OUTSTR REST A0 ENDM END .