;*; Updated on 29-Jun-93 at 1:12 PM by Sharon L. Greene; edit time: 0:01:41
;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