;;
;; HD64180 MACRO LIBRARY
;;
;; THE FOLLOWING MACROS ENABLE ASSEMBLING HD64180 INSTRUCTIONS
;; WITH SLR Z80ASM
;;
;; INVOKE WITH "MACLIB H80"
;;
;;
;;
;; MACRO FORMATS
;; ----- -------
;;
;; HD64180 Unique instructions:
;;
;; SLP ; Enter SLEEP mode
;; MLT RR ; 8 bit multiply with 16 bit result
;; IN0 R,P (or IN0 P) ; Input from internal port
;; OUT0 P,R (or OUT0 P) ; Output to internal port
;; OTIM ; Block output, increment
;; OTIMR ; Block output, increment and repeat
;; OTDM ; Block output, decrement
;; OTDMR ; Block output, decrement and repeat
;; TSTIO P ; Non destructive AND, I/O port and A
;; TSTR R (or TST R) ; Non destructive AND, reg and A
;; TSTD D (or TST ID) ; Non destructive AND, immediate data and A
;; TSTP (or TST M) ; Non destructive AND, (HL) and A
;; (or TST (HL))
;;
;;
;;
;; HD64180 orignal command support
IN0 MACRO ?R,?P
IF NUL ?P
DB 0EDH,??A SHL 3,?R
ELSE
DB 0EDH,(??&?R AND 7) SHL 3, ?P
ENDIF
ENDM
OUT0 MACRO ?P,?R
IF NUL ?R
DB 0EDH,1+??A SHL 3,?P
ELSE
DB 0EDH,1+(??&?R AND 7) SHL 3,?P
ENDIF
ENDM
OTIM MACRO
DB 0EDH,83H
ENDM
OTIMR MACRO
DB 0EDH,93H
ENDM
OTDM MACRO
DB 0EDH,8BH
ENDM
OTDMR MACRO
DB 0EDH,9BH
ENDM
TSTIO MACRO ?P
DB 0EDH,74H,?P
ENDM
TSTR MACRO ?R
DB 0EDH,4+(??&?R AND 7) SHL 3
ENDM
TSTD MACRO ?P
DB 0EDH,64H,?P
ENDM
TSTP MACRO
DB 0EDH,34H
ENDM
TST MACRO ?R
?D: SET 0
IRPC ?X,?R
?D: SET ?D+1 ; Count # chars in "?R"
ENDM
IF ?D EQ 1 ; IF # chars = 1
IRPC ?X,ABCDEHL ; Look up the character
IF ??&?X EQ ??&?R
DB 0EDH,4+(??&?R AND 7) SHL 3
EXITM
ENDIF
ENDM
DB 0EDh,64h,?R
EXITM
ENDIF
IF (?R = 2) & (?D = 4)
?D: SET 0
IRPC ?X,?R
IFIDN <?X>,<(>
DB 0EDh,34h
EXITM
ENDIF
?D: SET ?D + 1
ENDM
ENDIF
IF ?D NE 0
DB 0EDH,64H,?R
ENDIF
ENDM