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