]> cloudbase.mooo.com Git - z180-stamp.git/blob - include/z80-if.h
7225cf47c8a450f74e98d9e0b5eacfa30a86d0a1
[z180-stamp.git] / include / z80-if.h
1 /*
2 * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de>
3 *
4 * SPDX-License-Identifier: GPL-2.0
5 */
6 #include "common.h"
7
8 #define ZST_ACQUIRED 0x01
9 #define ZST_RUNNING 0x02
10
11 typedef enum {
12 RESET = 0x00,
13 RESET_AQRD = ZST_ACQUIRED,
14 RUNNING = ZST_RUNNING,
15 RUNNING_AQRD = ZST_RUNNING | ZST_ACQUIRED,
16 } zstate_t;
17
18 typedef enum {
19 Reset,
20 Request,
21 Release,
22 Run,
23 Restart,
24 M_Cycle
25 } bus_cmd_t;
26
27 typedef enum {LOW, HIGH} level_t;
28
29
30 void z80_bus_request_or_exit(void);
31
32 zstate_t z80_bus_state(void);
33 zstate_t z80_bus_cmd(bus_cmd_t cmd);
34 void z80_setup_bus(void);
35 int z80_stat_reset(void);
36 //void z80_busreq(level_t level);
37 int z80_stat_halt(void);
38
39
40 int32_t z80_memsize_detect(void);
41 void z80_write(uint32_t addr, uint8_t data);
42 uint8_t z80_read(uint32_t addr);
43 void z80_memset(uint32_t addr, uint8_t data, uint32_t length);
44 void z80_write_block_P(const FLASH uint8_t *src, uint32_t dest, uint32_t length);
45 void z80_write_block(const uint8_t *src, uint32_t dest, uint32_t length);
46 void z80_read_block (uint8_t *dest, uint32_t src, size_t length);
47
48
49 typedef enum fifo_t {
50 fifo_msgin, fifo_msgout,
51 fifo_conin, fifo_conout,
52 NUM_FIFOS
53 } fifo_t;
54
55 void z80_memfifo_init(const fifo_t f, uint32_t adr);
56 int z80_memfifo_is_empty(const fifo_t f);
57 int z80_memfifo_is_full(const fifo_t f);
58 int z80_memfifo_getc(const fifo_t f);
59 uint8_t z80_memfifo_getc_wait(const fifo_t f);
60 void z80_memfifo_putc(fifo_t f, uint8_t val);
61
62 void z80_load_mem(int_fast8_t verbosity, const FLASH unsigned char data[],
63 const FLASH unsigned long *sections,
64 const FLASH unsigned long address[],
65 const FLASH unsigned long length_of_sections[]);