void z80_write_block(uint8_t *src, uint32_t dest, uint32_t length);
int z80_stat_halt(void);
-#define rx_fifo 0x7c0f7
-#define tx_fifo 0x7c11a
-typedef enum {fifo_in, fifo_out} fifo_t;
+typedef enum fifo_t {fifo_in, fifo_out, NUM_FIFOS} fifo_t;
-void z80_memfifo_init(void);
-int z80_memfifo_is_empty(fifo_t f);
-int z80_memfifo_is_full(fifo_t f);
-uint8_t z80_memfifo_getc(fifo_t f);
+void z80_memfifo_init(const fifo_t f, uint32_t adr);
+int z80_memfifo_is_empty(const fifo_t f);
+int z80_memfifo_is_full(const fifo_t f);
+uint8_t z80_memfifo_getc(const fifo_t f);
void z80_memfifo_putc(fifo_t f, uint8_t val);
-void z80_setup_io_infifo(void);
-int z80_io_infifo_getc(void);
+void z80_setup_msg_fifo(void);
+void z80_init_msg_fifo(uint32_t addr);
+int z80_msg_fifo_getc(void);