1 
2 // automatically generated by m4 from headers in proto subdir
3 
4 
5 #if __Z180
6 
7 #ifndef __Z180_H__
8 #define __Z180_H__
9 
10 #include <arch.h>
11 #include <stdint.h>
12 
13 // Runtime IM 2
14 
15 #include <im2.h>
16 
17 // Exact T State Delay Busy Loop
18 
19 extern void z180_delay_ms(uint16_t ms);
20 extern void z180_delay_ms_fastcall(uint16_t ms) __z88dk_fastcall;
21 #define z180_delay_ms(a) z180_delay_ms_fastcall(a)
22 
23 
24 extern void z180_delay_tstate(uint16_t tstates) __preserves_regs(d,e);
25 extern void z180_delay_tstate_fastcall(uint16_t tstates) __preserves_regs(d,e) __z88dk_fastcall;
26 #define z180_delay_tstate(a) z180_delay_tstate_fastcall(a)
27 
28 
29 extern uint8_t z180_get_int_state(void) __preserves_regs(b,c,d,e);
30 
31 extern void z180_set_int_state(uint8_t state) __preserves_regs(b,c,d,e);
32 extern void z180_set_int_state_fastcall(uint8_t state) __preserves_regs(a,b,c,d,e,h,l) __z88dk_fastcall;
33 #define z180_set_int_state(a) z180_set_int_state_fastcall(a)
34 
35 
36 
37 // IO By Function
38 
39 extern uint8_t z180_inp(uint16_t port) __preserves_regs(d,e);
40 extern uint8_t z180_inp_fastcall(uint16_t port) __preserves_regs(d,e) __z88dk_fastcall;
41 #define z180_inp(a) z180_inp_fastcall(a)
42 
43 
44 extern void *z180_inir(void *dst,uint8_t port,uint8_t num) __preserves_regs(d,e);
45 extern void *z180_inir_callee(void *dst,uint8_t port,uint8_t num) __preserves_regs(d,e) __z88dk_callee;
46 #define z180_inir(a,b,c) z180_inir_callee(a,b,c)
47 
48 
49 extern void *z180_indr(void *dst,uint8_t port,uint8_t num) __preserves_regs(d,e);
50 extern void *z180_indr_callee(void *dst,uint8_t port,uint8_t num) __preserves_regs(d,e) __z88dk_callee;
51 #define z180_indr(a,b,c) z180_indr_callee(a,b,c)
52 
53 
54 extern void z180_outp(uint16_t port,uint8_t data) __preserves_regs(d,e);
55 extern void z180_outp_callee(uint16_t port,uint8_t data) __preserves_regs(d,e) __z88dk_callee;
56 #define z180_outp(a,b) z180_outp_callee(a,b)
57 
58 
59 extern void *z180_otir(void *src,uint8_t port,uint8_t num) __preserves_regs(d,e);
60 extern void *z180_otir_callee(void *src,uint8_t port,uint8_t num) __preserves_regs(d,e) __z88dk_callee;
61 #define z180_otir(a,b,c) z180_otir_callee(a,b,c)
62 
63 
64 extern void *z180_otdr(void *src,uint8_t port,uint8_t num) __preserves_regs(d,e);
65 extern void *z180_otdr_callee(void *src,uint8_t port,uint8_t num) __preserves_regs(d,e) __z88dk_callee;
66 #define z180_otdr(a,b,c) z180_otdr_callee(a,b,c)
67 
68 
69 
70 extern void *z180_otimr(void *dst,uint8_t port,uint8_t num) __preserves_regs(d,e);
71 extern void *z180_otimr_callee(void *dst,uint8_t port,uint8_t num) __preserves_regs(d,e) __z88dk_callee;
72 #define z180_otimr(a,b,c) z180_otimr_callee(a,b,c)
73 
74 
75 extern void *z180_otdmr(void *src,uint8_t port,uint8_t num) __preserves_regs(d,e);
76 extern void *z180_otdmr_callee(void *src,uint8_t port,uint8_t num) __preserves_regs(d,e) __z88dk_callee;
77 #define z180_otdmr(a,b,c) z180_otdmr_callee(a,b,c)
78 
79 
80 
81 // Memory by Address
82 
83 #define z180_bpoke(a,b)  (*(unsigned char *)(a) = b)
84 #define z180_wpoke(a,b)  (*(unsigned int *)(a) = b)
85 #define z180_lpoke(a,b)  (*(unsigned long *)(a) = b)
86 
87 #define z180_bpeek(a)    (*(unsigned char *)(a))
88 #define z180_wpeek(a)    (*(unsigned int *)(a))
89 #define z180_lpeek(a)    (*(unsigned long *)(a))
90 
91 #ifdef __CLANG
92 
93 #define z180_llpoke(a,b) (*(unsigned long long *)(a) = b)
94 #define z180_llpeek(a)   (*(unsigned long long *)(a))
95 
96 #endif
97 
98 #ifdef __SDCC
99 
100 #define z180_llpoke(a,b) (*(unsigned long long *)(a) = b)
101 #define z180_llpeek(a)   (*(unsigned long long *)(a))
102 
103 #endif
104 
105 // INTERNAL INTERRUPT VECTORS
106 
107 #if (__Z180 & __Z180_Z80180)
108 
109    // Z80180 CLASS
110 
111 #else
112 
113    // Z8S180 / Z8L180 CLASS
114 
115 #endif
116 
117 // IO MAPPED INTERNAL REGISTERS
118 
119 #if (__Z180 & __Z180_Z80180)
120 
121    // Z80180 CLASS
122 
123    #ifdef __CLANG
124 
125    extern unsigned char CNTLA0;
126    extern unsigned char CNTLA1;
127    extern unsigned char CNTLB0;
128    extern unsigned char CNTLB1;
129    extern unsigned char STAT0;
130    extern unsigned char STAT1;
131    extern unsigned char TDR0;
132    extern unsigned char TDR1;
133    extern unsigned char RDR0;
134    extern unsigned char RDR1;
135 
136    extern unsigned char CNTR;
137    extern unsigned char TRDR;
138 
139    extern unsigned char TMDR0L;
140    extern unsigned char TMDR0H;
141    extern unsigned char RLDR0L;
142    extern unsigned char RLDR0H;
143    extern unsigned char TCR;
144    extern unsigned char TMDR1L;
145    extern unsigned char TMDR1H;
146    extern unsigned char RLDR1L;
147    extern unsigned char RLDR1H;
148 
149    extern unsigned char FRC;
150 
151    extern unsigned char SAR0L;
152    extern unsigned char SAR0H;
153    extern unsigned char SAR0B;
154    extern unsigned char DAR0L;
155    extern unsigned char DAR0H;
156    extern unsigned char DAR0B;
157    extern unsigned char BCR0L;
158    extern unsigned char BCR0H;
159    extern unsigned char MAR1L;
160    extern unsigned char MAR1H;
161    extern unsigned char MAR1B;
162    extern unsigned char IAR1L;
163    extern unsigned char IAR1H;
164    extern unsigned char BCR1L;
165    extern unsigned char BCR1H;
166    extern unsigned char DSTAT;
167    extern unsigned char DMODE;
168    extern unsigned char DCNTL;
169 
170    extern unsigned char IL;
171    extern unsigned char ITC;
172 
173    extern unsigned char RCR;
174 
175    extern unsigned char CBR;
176    extern unsigned char BBR;
177    extern unsigned char CBAR;
178 
179    extern unsigned char OMCR;
180    extern unsigned char ICR;
181 
182    #else
183 
184    __sfr __at __IO_CNTLA0 CNTLA0;
185    __sfr __at __IO_CNTLA1 CNTLA1;
186    __sfr __at __IO_CNTLB0 CNTLB0;
187    __sfr __at __IO_CNTLB1 CNTLB1;
188    __sfr __at __IO_STAT0 STAT0;
189    __sfr __at __IO_STAT1 STAT1;
190    __sfr __at __IO_TDR0 TDR0;
191    __sfr __at __IO_TDR1 TDR1;
192    __sfr __at __IO_RDR0 RDR0;
193    __sfr __at __IO_RDR1 RDR1;
194 
195    __sfr __at __IO_CNTR CNTR;
196    __sfr __at __IO_TRDR TRDR;
197 
198    __sfr __at __IO_TMDR0L TMDR0L;
199    __sfr __at __IO_TMDR0H TMDR0H;
200    __sfr __at __IO_RLDR0L RLDR0L;
201    __sfr __at __IO_RLDR0H RLDR0H;
202    __sfr __at __IO_TCR TCR;
203    __sfr __at __IO_TMDR1L TMDR1L;
204    __sfr __at __IO_TMDR1H TMDR1H;
205    __sfr __at __IO_RLDR1L RLDR1L;
206    __sfr __at __IO_RLDR1H RLDR1H;
207 
208    __sfr __at __IO_FRC FRC;
209 
210    __sfr __at __IO_SAR0L SAR0L;
211    __sfr __at __IO_SAR0H SAR0H;
212    __sfr __at __IO_SAR0B SAR0B;
213    __sfr __at __IO_DAR0L DAR0L;
214    __sfr __at __IO_DAR0H DAR0H;
215    __sfr __at __IO_DAR0B DAR0B;
216    __sfr __at __IO_BCR0L BCR0L;
217    __sfr __at __IO_BCR0H BCR0H;
218    __sfr __at __IO_MAR1L MAR1L;
219    __sfr __at __IO_MAR1H MAR1H;
220    __sfr __at __IO_MAR1B MAR1B;
221    __sfr __at __IO_IAR1L IAR1L;
222    __sfr __at __IO_IAR1H IAR1H;
223    __sfr __at __IO_BCR1L BCR1L;
224    __sfr __at __IO_BCR1H BCR1H;
225    __sfr __at __IO_DSTAT DSTAT;
226    __sfr __at __IO_DMODE DMODE;
227    __sfr __at __IO_DCNTL DCNTL;
228 
229    __sfr __at __IO_IL IL;
230    __sfr __at __IO_ITC ITC;
231 
232    __sfr __at __IO_RCR RCR;
233 
234    __sfr __at __IO_CBR CBR;
235    __sfr __at __IO_BBR BBR;
236    __sfr __at __IO_CBAR CBAR;
237 
238    __sfr __at __IO_OMCR OMCR;
239    __sfr __at __IO_ICR ICR;
240 
241    #endif
242 
243 #else
244 
245    // Z8S180 / Z8L180 CLASS
246 
247    #ifdef __CLANG
248 
249    extern unsigned char CNTLA0;
250    extern unsigned char CNTLA1;
251    extern unsigned char CNTLB0;
252    extern unsigned char CNTLB1;
253    extern unsigned char STAT0;
254    extern unsigned char STAT1;
255    extern unsigned char TDR0;
256    extern unsigned char TDR1;
257    extern unsigned char RDR0;
258    extern unsigned char RDR1;
259    extern unsigned char ASEXT0;
260    extern unsigned char ASEXT1;
261    extern unsigned char ASTC0L;
262    extern unsigned char ASTC0H;
263    extern unsigned char ASTC1L;
264    extern unsigned char ASTC1H;
265 
266    extern unsigned char CNTR;
267    extern unsigned char TRDR;
268 
269    extern unsigned char TMDR0L;
270    extern unsigned char TMDR0H;
271    extern unsigned char RLDR0L;
272    extern unsigned char RLDR0H;
273    extern unsigned char TCR;
274    extern unsigned char TMDR1L;
275    extern unsigned char TMDR1H;
276    extern unsigned char RLDR1L;
277    extern unsigned char RLDR1H;
278 
279    extern unsigned char FRC;
280    extern unsigned char CMR;
281    extern unsigned char CCR;
282 
283    extern unsigned char SAR0L;
284    extern unsigned char SAR0H;
285    extern unsigned char SAR0B;
286    extern unsigned char DAR0L;
287    extern unsigned char DAR0H;
288    extern unsigned char DAR0B;
289    extern unsigned char BCR0L;
290    extern unsigned char BCR0H;
291    extern unsigned char MAR1L;
292    extern unsigned char MAR1H;
293    extern unsigned char MAR1B;
294    extern unsigned char IAR1L;
295    extern unsigned char IAR1H;
296    extern unsigned char IAR1B;
297    extern unsigned char BCR1L;
298    extern unsigned char BCR1H;
299    extern unsigned char DSTAT;
300    extern unsigned char DMODE;
301    extern unsigned char DCNTL;
302 
303    extern unsigned char IL;
304    extern unsigned char ITC;
305 
306    extern unsigned char RCR;
307 
308    extern unsigned char CBR;
309    extern unsigned char BBR;
310    extern unsigned char CBAR;
311 
312    extern unsigned char OMCR;
313    extern unsigned char ICR;
314 
315    #else
316 
317    __sfr __at __IO_CNTLA0 CNTLA0;
318    __sfr __at __IO_CNTLA1 CNTLA1;
319    __sfr __at __IO_CNTLB0 CNTLB0;
320    __sfr __at __IO_CNTLB1 CNTLB1;
321    __sfr __at __IO_STAT0 STAT0;
322    __sfr __at __IO_STAT1 STAT1;
323    __sfr __at __IO_TDR0 TDR0;
324    __sfr __at __IO_TDR1 TDR1;
325    __sfr __at __IO_RDR0 RDR0;
326    __sfr __at __IO_RDR1 RDR1;
327    __sfr __at __IO_ASEXT0 ASEXT0;
328    __sfr __at __IO_ASEXT1 ASEXT1;
329    __sfr __at __IO_ASTC0L ASTC0L;
330    __sfr __at __IO_ASTC0H ASTC0H;
331    __sfr __at __IO_ASTC1L ASTC1L;
332    __sfr __at __IO_ASTC1H ASTC1H;
333 
334    __sfr __at __IO_CNTR CNTR;
335    __sfr __at __IO_TRDR TRDR;
336 
337    __sfr __at __IO_TMDR0L TMDR0L;
338    __sfr __at __IO_TMDR0H TMDR0H;
339    __sfr __at __IO_RLDR0L RLDR0L;
340    __sfr __at __IO_RLDR0H RLDR0H;
341    __sfr __at __IO_TCR TCR;
342    __sfr __at __IO_TMDR1L TMDR1L;
343    __sfr __at __IO_TMDR1H TMDR1H;
344    __sfr __at __IO_RLDR1L RLDR1L;
345    __sfr __at __IO_RLDR1H RLDR1H;
346 
347    __sfr __at __IO_FRC FRC;
348    __sfr __at __IO_CMR CMR;
349    __sfr __at __IO_CCR CCR;
350 
351    __sfr __at __IO_SAR0L SAR0L;
352    __sfr __at __IO_SAR0H SAR0H;
353    __sfr __at __IO_SAR0B SAR0B;
354    __sfr __at __IO_DAR0L DAR0L;
355    __sfr __at __IO_DAR0H DAR0H;
356    __sfr __at __IO_DAR0B DAR0B;
357    __sfr __at __IO_BCR0L BCR0L;
358    __sfr __at __IO_BCR0H BCR0H;
359    __sfr __at __IO_MAR1L MAR1L;
360    __sfr __at __IO_MAR1H MAR1H;
361    __sfr __at __IO_MAR1B MAR1B;
362    __sfr __at __IO_IAR1L IAR1L;
363    __sfr __at __IO_IAR1H IAR1H;
364    __sfr __at __IO_IAR1B IAR1B;
365    __sfr __at __IO_BCR1L BCR1L;
366    __sfr __at __IO_BCR1H BCR1H;
367    __sfr __at __IO_DSTAT DSTAT;
368    __sfr __at __IO_DMODE DMODE;
369    __sfr __at __IO_DCNTL DCNTL;
370 
371    __sfr __at __IO_IL IL;
372    __sfr __at __IO_ITC ITC;
373 
374    __sfr __at __IO_RCR RCR;
375 
376    __sfr __at __IO_CBR CBR;
377    __sfr __at __IO_BBR BBR;
378    __sfr __at __IO_CBAR CBAR;
379 
380    __sfr __at __IO_OMCR OMCR;
381    __sfr __at __IO_ICR ICR;
382 
383    #endif
384 
385 #endif
386 
387 #endif
388 
389 #endif
390