1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
.xlist
;;
;; Z180 / HD64180 MACRO LIBRARY
;;
IFNDEF SLP
;;
;;
;; HD64180 instructions:
;;
;; SLP ; Enter SLEEP mode
;; MLT RR ; 8 bit multiply with 16 bit result
;; IN0 R,P ; Input from internal port
;; OUT0 P,R ; 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
;; TST R ; Non destructive AND, reg and A
;; TST ID ; Non destructive AND, immediate data and A
;; TST (HL) ; Non destructive AND, (HL) and A
;;
;;
??BC EQU 0 ; Double-register definitions
??DE EQU 1
??HL EQU 2
??SP EQU 3
??A EQU 7 ; Single-register defintions
??B EQU 0
??C EQU 1
??D EQU 2
??E EQU 3
??H EQU 4
??L EQU 5
SLP MACRO
DEFB 0EDH,76H
ENDM
MLT MACRO ?R
DB 0EDH,4CH+(??&?R AND 3) SHL 4
ENDM
IN0 MACRO ?R,?P
DB 0EDH,(??&?R AND 7) SHL 3, ?P
ENDM
OUT0 MACRO ?P,?R
DB 0EDH,1+(??&?R AND 7) SHL 3,?P
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
ENDIF ;/* IFNDEF SLP /
.list
|