summaryrefslogtreecommitdiff
path: root/z180/z180.lib
blob: ffe0ab7effd313f52f3a0d4e558c8847a863acb2 (plain)
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