;*; 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