Rev 2247 | Details | Compare with Previous | Last modification | View Log
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 2241 | lvd | 1 | // Z80 ciphers test framework |
| 2 | // (c) 2019 lvd^mhm |
||
| 3 | |||
| 4 | /* |
||
| 5 | This file is part of Z80 ciphers test framework. |
||
| 6 | |||
| 7 | Z80 ciphers test framework is free software: |
||
| 8 | you can redistribute it and/or modify it under the terms of |
||
| 9 | the GNU General Public License as published by |
||
| 10 | the Free Software Foundation, either version 3 of the License, or |
||
| 11 | (at your option) any later version. |
||
| 12 | |||
| 13 | Z80 ciphers test framework is distributed in the hope that |
||
| 14 | it will be useful, but WITHOUT ANY WARRANTY; without even |
||
| 15 | the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||
| 16 | See the GNU General Public License for more details. |
||
| 17 | |||
| 18 | You should have received a copy of the GNU General Public License |
||
| 19 | along with Z80 ciphers test framework. |
||
| 20 | If not, see <http://www.gnu.org/licenses/>. |
||
| 21 | */ |
||
| 22 | |||
| 23 | #ifndef _Z80_WRAP_H_ |
||
| 24 | #define _Z80_WRAP_H_ |
||
| 25 | |||
| 2254 | lvd | 26 | #define SYS_CPM (1) |
| 27 | #define SYS_NEDOOS (2) |
||
| 28 | #define SYS_ZX (3) |
||
| 2241 | lvd | 29 | |
| 2254 | lvd | 30 | struct type_detect |
| 31 | { |
||
| 32 | const char * const argument_name; |
||
| 33 | const int sys_type; |
||
| 34 | }; |
||
| 35 | |||
| 2241 | lvd | 36 | enum z80_max_clocks |
| 37 | { |
||
| 38 | Z80_MAX_CLOCKS = 10000000 |
||
| 39 | }; |
||
| 40 | |||
| 41 | |||
| 42 | struct z80_context |
||
| 43 | { |
||
| 44 | Z80 z80; |
||
| 2254 | lvd | 45 | uint16_t start_address; |
| 46 | uint16_t start_sp; |
||
| 2241 | lvd | 47 | |
| 2247 | lvd | 48 | int was_ed; |
| 2254 | lvd | 49 | int was_23; |
| 2247 | lvd | 50 | |
| 2241 | lvd | 51 | uint8_t z80_mem[65536]; |
| 52 | }; |
||
| 53 | |||
| 54 | |||
| 2254 | lvd | 55 | struct z80_context * z80_init(char * filename, int sys_type); |
| 2241 | lvd | 56 | |
| 2254 | lvd | 57 | size_t z80_exec(struct z80_context * z80, size_t max_clocks); |
| 2241 | lvd | 58 | |
| 59 | |||
| 60 | uint8_t z80_rdbyte(struct z80_context * z80, uint16_t addr); |
||
| 61 | uint16_t z80_rdword_le(struct z80_context * z80, uint16_t addr); |
||
| 62 | uint32_t z80_rdlong_le(struct z80_context * z80, uint16_t addr); |
||
| 63 | uint64_t z80_rdocta_le(struct z80_context * z80, uint16_t addr); |
||
| 64 | |||
| 65 | void z80_wrbyte(struct z80_context * z80, uint16_t addr, uint8_t data); |
||
| 66 | void z80_wrword_le(struct z80_context * z80, uint16_t addr, uint16_t data); |
||
| 67 | void z80_wrlong_le(struct z80_context * z80, uint16_t addr, uint32_t data); |
||
| 68 | void z80_wrocta_le(struct z80_context * z80, uint16_t addr, uint64_t data); |
||
| 69 | |||
| 70 | |||
| 71 | |||
| 72 | |||
| 73 | |||
| 74 | #endif // _Z80_WRAP_H_ |
||
| 75 |