extern irqflags_t di(void);
extern void irqrestore(irqflags_t f);
+extern void out(uint8_t addr, uint8_t val);
+extern uint8_t in(uint8_t addr);
/* Z80 binaries start with a JP */
#define EMAGIC 0xc3 /* Header of executable */
.globl interrupt_handler
.globl _di
.globl _irqrestore
+ .globl _in
+ .globl _out
; imported symbols
.globl _trap_monitor
add a, #0x07 ; start at 'A' (10+7+0x30=0x41='A')
numeral:add a, #0x30 ; start at '0' (0x30='0')
jp outchar
+;
+; I/O helpers for cases we don't use __sfr
+;
+_out:
+ pop hl
+ pop de
+ pop bc
+ out (c), b
+ push bc
+ push de
+ jp (hl)
+
+_in:
+ pop hl
+ pop de
+ pop bc
+ push bc
+ push de
+ push hl
+ in l, (c)
+ ret
+
;
; Pull in the CPU specific workarounds
.globl interrupt_handler
.globl _di
.globl _irqrestore
+ .globl _out
+ .globl _in
; imported symbols
.globl _trap_monitor
numeral:add a, #0x30 ; start at '0' (0x30='0')
jp outchar
+;
+; I/O helpers for cases we don't use __sfr
+;
+_out:
+ pop hl
+ pop bc
+ out (c), b
+ push bc
+ jp (hl)
+
+_in:
+ pop hl
+ pop bc
+ push bc
+ push hl
+ in l, (c)
+ ret
+
;
; Pull in the CPU specific workarounds
;