// license:BSD-3-Clause // copyright-holders:Juergen Buchmueller #pragma once #ifndef __Z180_H__ #define __Z180_H__ #include "cpu/z80/z80daisy.h" enum { Z180_PC, Z180_SP, Z180_AF, Z180_BC, Z180_DE, Z180_HL, Z180_IX, Z180_IY, Z180_A, Z180_B, Z180_C, Z180_D, Z180_E, Z180_H, Z180_L, Z180_AF2, Z180_BC2, Z180_DE2, Z180_HL2, Z180_R, Z180_I, Z180_IM, Z180_IFF1, Z180_IFF2, Z180_HALT, Z180_DC0, Z180_DC1, Z180_DC2, Z180_DC3, Z180_CNTLA0, /* 00 ASCI control register A ch 0 */ Z180_CNTLA1, /* 01 ASCI control register A ch 1 */ Z180_CNTLB0, /* 02 ASCI control register B ch 0 */ Z180_CNTLB1, /* 03 ASCI control register B ch 1 */ Z180_STAT0, /* 04 ASCI status register 0 */ Z180_STAT1, /* 05 ASCI status register 1 */ Z180_TDR0, /* 06 ASCI transmit data register 0 */ Z180_TDR1, /* 07 ASCI transmit data register 1 */ Z180_RDR0, /* 08 ASCI receive data register 0 */ Z180_RDR1, /* 09 ASCI receive data register 1 */ Z180_CNTR, /* 0a CSI/O control/status register */ Z180_TRDR, /* 0b CSI/O transmit/receive register */ Z180_TMDR0L, /* 0c TIMER data register ch 0 L */ Z180_TMDR0H, /* 0d TIMER data register ch 0 H */ Z180_RLDR0L, /* 0e TIMER reload register ch 0 L */ Z180_RLDR0H, /* 0f TIMER reload register ch 0 H */ Z180_TCR, /* 10 TIMER control register */ Z180_IO11, /* 11 reserved */ Z180_ASEXT0, /* 12 (Z8S180/Z8L180) ASCI extension control register 0 */ Z180_ASEXT1, /* 13 (Z8S180/Z8L180) ASCI extension control register 0 */ Z180_TMDR1L, /* 14 TIMER data register ch 1 L */ Z180_TMDR1H, /* 15 TIMER data register ch 1 H */ Z180_RLDR1L, /* 16 TIMER reload register ch 1 L */ Z180_RLDR1H, /* 17 TIMER reload register ch 1 H */ Z180_FRC, /* 18 free running counter */ Z180_IO19, /* 19 reserved */ Z180_ASTC0L, /* 1a ASCI time constant ch 0 L */ Z180_ASTC0H, /* 1b ASCI time constant ch 0 H */ Z180_ASTC1L, /* 1c ASCI time constant ch 1 L */ Z180_ASTC1H, /* 1d ASCI time constant ch 1 H */ Z180_CMR, /* 1e clock multiplier */ Z180_CCR, /* 1f chip control register */ Z180_SAR0L, /* 20 DMA source address register ch 0 L */ Z180_SAR0H, /* 21 DMA source address register ch 0 H */ Z180_SAR0B, /* 22 DMA source address register ch 0 B */ Z180_DAR0L, /* 23 DMA destination address register ch 0 L */ Z180_DAR0H, /* 24 DMA destination address register ch 0 H */ Z180_DAR0B, /* 25 DMA destination address register ch 0 B */ Z180_BCR0L, /* 26 DMA byte count register ch 0 L */ Z180_BCR0H, /* 27 DMA byte count register ch 0 H */ Z180_MAR1L, /* 28 DMA memory address register ch 1 L */ Z180_MAR1H, /* 29 DMA memory address register ch 1 H */ Z180_MAR1B, /* 2a DMA memory address register ch 1 B */ Z180_IAR1L, /* 2b DMA I/O address register ch 1 L */ Z180_IAR1H, /* 2c DMA I/O address register ch 1 H */ Z180_IAR1B, /* 2d (Z8S180/Z8L180) DMA I/O address register ch 1 B */ Z180_BCR1L, /* 2e DMA byte count register ch 1 L */ Z180_BCR1H, /* 2f DMA byte count register ch 1 H */ Z180_DSTAT, /* 30 DMA status register */ Z180_DMODE, /* 31 DMA mode register */ Z180_DCNTL, /* 32 DMA/WAIT control register */ Z180_IL, /* 33 INT vector low register */ Z180_ITC, /* 34 INT/TRAP control register */ Z180_IO35, /* 35 reserved */ Z180_RCR, /* 36 refresh control register */ Z180_IO37, /* 37 reserved */ Z180_CBR, /* 38 MMU common base register */ Z180_BBR, /* 39 MMU bank base register */ Z180_CBAR, /* 3a MMU common/bank area register */ Z180_IO3B, /* 3b reserved */ Z180_IO3C, /* 3c reserved */ Z180_IO3D, /* 3d reserved */ Z180_OMCR, /* 3e operation mode control register */ Z180_IOCR, /* 3f I/O control register */ Z180_IOLINES /* read/write I/O lines */ }; enum { Z180_TABLE_op, Z180_TABLE_cb, Z180_TABLE_ed, Z180_TABLE_xy, Z180_TABLE_xycb, Z180_TABLE_ex /* cycles counts for taken jr/jp/call and interrupt latency (rst opcodes) */ }; #define Z180_IRQ0 0 /* Execute IRQ1 */ #define Z180_IRQ1 1 /* Execute IRQ1 */ #define Z180_IRQ2 2 /* Execute IRQ2 */ class z180_device : public cpu_device, public z80_daisy_chain_interface { public: // construction/destruction z180_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock); protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; // device_execute_interface overrides virtual UINT32 execute_min_cycles() const override { return 1; } virtual UINT32 execute_max_cycles() const override { return 16; } virtual UINT32 execute_input_lines() const override { return 3; } virtual UINT32 execute_default_irq_vector() const override { return 0xff; } virtual void execute_run() override; virtual void execute_burn(INT32 cycles) override; virtual void execute_set_input(int inputnum, int state) override; // device_memory_interface overrides virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override; // device_state_interface overrides virtual void state_import(const device_state_entry &entry) override; virtual void state_export(const device_state_entry &entry) override; virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const override { return 1; } virtual UINT32 disasm_max_opcode_bytes() const override { return 4; } virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override; private: address_space_config m_program_config; address_space_config m_io_config; address_space_config m_decrypted_opcodes_config; PAIR m_PREPC,m_PC,m_SP,m_AF,m_BC,m_DE,m_HL,m_IX,m_IY; PAIR m_AF2,m_BC2,m_DE2,m_HL2; UINT8 m_R,m_R2,m_IFF1,m_IFF2,m_HALT,m_IM,m_I; UINT8 m_tmdr_latch; /* flag latched TMDR0H, TMDR1H values */ UINT8 m_read_tcr_tmdr[2]; /* flag to indicate that TCR or TMDR was read */ UINT32 m_iol; /* I/O line status bits */ UINT8 m_io[64]; /* 64 internal 8 bit registers */ offs_t m_mmu[16]; /* MMU address translation */ UINT8 m_tmdrh[2]; /* latched TMDR0H and TMDR1H values */ UINT16 m_tmdr_value[2]; /* TMDR values used byt PRT0 and PRT1 as down counter */ UINT8 m_tif[2]; /* TIF0 and TIF1 values */ UINT8 m_nmi_state; /* nmi line state */ UINT8 m_nmi_pending; /* nmi pending */ UINT8 m_irq_state[3]; /* irq line states (INT0,INT1,INT2) */ UINT8 m_int_pending[11 + 1]; /* interrupt pending */ UINT8 m_after_EI; /* are we in the EI shadow? */ UINT32 m_ea; UINT8 m_timer_cnt; /* timer counter / divide by 20 */ UINT8 m_dma0_cnt; /* dma0 counter / divide by 20 */ UINT8 m_dma1_cnt; /* dma1 counter / divide by 20 */ address_space *m_program; direct_read_data *m_direct; address_space *m_oprogram; direct_read_data *m_odirect; address_space *m_iospace; UINT8 m_rtemp; UINT32 m_ioltemp; int m_icount; int m_extra_cycles; /* extra cpu cycles */ UINT8 *m_cc[6]; typedef void (z180_device::*opcode_func)(); static const opcode_func s_z180ops[6][0x100]; inline void z180_mmu(); inline void RM16( offs_t addr, PAIR *r ); inline void WM16( offs_t addr, PAIR *r ); inline UINT8 ROP(); inline UINT8 ARG(); inline UINT32 ARG16(); inline UINT8 INC(UINT8 value); inline UINT8 DEC(UINT8 value); inline UINT8 RLC(UINT8 value); inline UINT8 RRC(UINT8 value); inline UINT8 RL(UINT8 value); inline UINT8 RR(UINT8 value); inline UINT8 SLA(UINT8 value); inline UINT8 SRA(UINT8 value); inline UINT8 SLL(UINT8 value); inline UINT8 SRL(UINT8 value); inline UINT8 RES(UINT8 bit, UINT8 value); inline UINT8 SET(UINT8 bit, UINT8 value); inline int exec_op(const UINT8 opcode); inline int exec_cb(const UINT8 opcode); inline int exec_dd(const UINT8 opcode); inline int exec_ed(const UINT8 opcode); inline int exec_fd(const UINT8 opcode); inline int exec_xycb(const UINT8 opcode); int take_interrupt(int irq); UINT8 z180_readcontrol(offs_t port); void z180_writecontrol(offs_t port, UINT8 data); int z180_dma0(int max_cycles); int z180_dma1(); void z180_write_iolines(UINT32 data); void clock_timers(); int check_interrupts(); void handle_io_timers(int cycles); void op_00(); void op_01(); void op_02(); void op_03(); void op_04(); void op_05(); void op_06(); void op_07(); void op_08(); void op_09(); void op_0a(); void op_0b(); void op_0c(); void op_0d(); void op_0e(); void op_0f(); void op_10(); void op_11(); void op_12(); void op_13(); void op_14(); void op_15(); void op_16(); void op_17(); void op_18(); void op_19(); void op_1a(); void op_1b(); void op_1c(); void op_1d(); void op_1e(); void op_1f(); void op_20(); void op_21(); void op_22(); void op_23(); void op_24(); void op_25(); void op_26(); void op_27(); void op_28(); void op_29(); void op_2a(); void op_2b(); void op_2c(); void op_2d(); void op_2e(); void op_2f(); void op_30(); void op_31(); void op_32(); void op_33(); void op_34(); void op_35(); void op_36(); void op_37(); void op_38(); void op_39(); void op_3a(); void op_3b(); void op_3c(); void op_3d(); void op_3e(); void op_3f(); void op_40(); void op_41(); void op_42(); void op_43(); void op_44(); void op_45(); void op_46(); void op_47(); void op_48(); void op_49(); void op_4a(); void op_4b(); void op_4c(); void op_4d(); void op_4e(); void op_4f(); void op_50(); void op_51(); void op_52(); void op_53(); void op_54(); void op_55(); void op_56(); void op_57(); void op_58(); void op_59(); void op_5a(); void op_5b(); void op_5c(); void op_5d(); void op_5e(); void op_5f(); void op_60(); void op_61(); void op_62(); void op_63(); void op_64(); void op_65(); void op_66(); void op_67(); void op_68(); void op_69(); void op_6a(); void op_6b(); void op_6c(); void op_6d(); void op_6e(); void op_6f(); void op_70(); void op_71(); void op_72(); void op_73(); void op_74(); void op_75(); void op_76(); void op_77(); void op_78(); void op_79(); void op_7a(); void op_7b(); void op_7c(); void op_7d(); void op_7e(); void op_7f(); void op_80(); void op_81(); void op_82(); void op_83(); void op_84(); void op_85(); void op_86(); void op_87(); void op_88(); void op_89(); void op_8a(); void op_8b(); void op_8c(); void op_8d(); void op_8e(); void op_8f(); void op_90(); void op_91(); void op_92(); void op_93(); void op_94(); void op_95(); void op_96(); void op_97(); void op_98(); void op_99(); void op_9a(); void op_9b(); void op_9c(); void op_9d(); void op_9e(); void op_9f(); void op_a0(); void op_a1(); void op_a2(); void op_a3(); void op_a4(); void op_a5(); void op_a6(); void op_a7(); void op_a8(); void op_a9(); void op_aa(); void op_ab(); void op_ac(); void op_ad(); void op_ae(); void op_af(); void op_b0(); void op_b1(); void op_b2(); void op_b3(); void op_b4(); void op_b5(); void op_b6(); void op_b7(); void op_b8(); void op_b9(); void op_ba(); void op_bb(); void op_bc(); void op_bd(); void op_be(); void op_bf(); void op_c0(); void op_c1(); void op_c2(); void op_c3(); void op_c4(); void op_c5(); void op_c6(); void op_c7(); void op_c8(); void op_c9(); void op_ca(); void op_cb(); void op_cc(); void op_cd(); void op_ce(); void op_cf(); void op_d0(); void op_d1(); void op_d2(); void op_d3(); void op_d4(); void op_d5(); void op_d6(); void op_d7(); void op_d8(); void op_d9(); void op_da(); void op_db(); void op_dc(); void op_dd(); void op_de(); void op_df(); void op_e0(); void op_e1(); void op_e2(); void op_e3(); void op_e4(); void op_e5(); void op_e6(); void op_e7(); void op_e8(); void op_e9(); void op_ea(); void op_eb(); void op_ec(); void op_ed(); void op_ee(); void op_ef(); void op_f0(); void op_f1(); void op_f2(); void op_f3(); void op_f4(); void op_f5(); void op_f6(); void op_f7(); void op_f8(); void op_f9(); void op_fa(); void op_fb(); void op_fc(); void op_fd(); void op_fe(); void op_ff(); void cb_00(); void cb_01(); void cb_02(); void cb_03(); void cb_04(); void cb_05(); void cb_06(); void cb_07(); void cb_08(); void cb_09(); void cb_0a(); void cb_0b(); void cb_0c(); void cb_0d(); void cb_0e(); void cb_0f(); void cb_10(); void cb_11(); void cb_12(); void cb_13(); void cb_14(); void cb_15(); void cb_16(); void cb_17(); void cb_18(); void cb_19(); void cb_1a(); void cb_1b(); void cb_1c(); void cb_1d(); void cb_1e(); void cb_1f(); void cb_20(); void cb_21(); void cb_22(); void cb_23(); void cb_24(); void cb_25(); void cb_26(); void cb_27(); void cb_28(); void cb_29(); void cb_2a(); void cb_2b(); void cb_2c(); void cb_2d(); void cb_2e(); void cb_2f(); void cb_30(); void cb_31(); void cb_32(); void cb_33(); void cb_34(); void cb_35(); void cb_36(); void cb_37(); void cb_38(); void cb_39(); void cb_3a(); void cb_3b(); void cb_3c(); void cb_3d(); void cb_3e(); void cb_3f(); void cb_40(); void cb_41(); void cb_42(); void cb_43(); void cb_44(); void cb_45(); void cb_46(); void cb_47(); void cb_48(); void cb_49(); void cb_4a(); void cb_4b(); void cb_4c(); void cb_4d(); void cb_4e(); void cb_4f(); void cb_50(); void cb_51(); void cb_52(); void cb_53(); void cb_54(); void cb_55(); void cb_56(); void cb_57(); void cb_58(); void cb_59(); void cb_5a(); void cb_5b(); void cb_5c(); void cb_5d(); void cb_5e(); void cb_5f(); void cb_60(); void cb_61(); void cb_62(); void cb_63(); void cb_64(); void cb_65(); void cb_66(); void cb_67(); void cb_68(); void cb_69(); void cb_6a(); void cb_6b(); void cb_6c(); void cb_6d(); void cb_6e(); void cb_6f(); void cb_70(); void cb_71(); void cb_72(); void cb_73(); void cb_74(); void cb_75(); void cb_76(); void cb_77(); void cb_78(); void cb_79(); void cb_7a(); void cb_7b(); void cb_7c(); void cb_7d(); void cb_7e(); void cb_7f(); void cb_80(); void cb_81(); void cb_82(); void cb_83(); void cb_84(); void cb_85(); void cb_86(); void cb_87(); void cb_88(); void cb_89(); void cb_8a(); void cb_8b(); void cb_8c(); void cb_8d(); void cb_8e(); void cb_8f(); void cb_90(); void cb_91(); void cb_92(); void cb_93(); void cb_94(); void cb_95(); void cb_96(); void cb_97(); void cb_98(); void cb_99(); void cb_9a(); void cb_9b(); void cb_9c(); void cb_9d(); void cb_9e(); void cb_9f(); void cb_a0(); void cb_a1(); void cb_a2(); void cb_a3(); void cb_a4(); void cb_a5(); void cb_a6(); void cb_a7(); void cb_a8(); void cb_a9(); void cb_aa(); void cb_ab(); void cb_ac(); void cb_ad(); void cb_ae(); void cb_af(); void cb_b0(); void cb_b1(); void cb_b2(); void cb_b3(); void cb_b4(); void cb_b5(); void cb_b6(); void cb_b7(); void cb_b8(); void cb_b9(); void cb_ba(); void cb_bb(); void cb_bc(); void cb_bd(); void cb_be(); void cb_bf(); void cb_c0(); void cb_c1(); void cb_c2(); void cb_c3(); void cb_c4(); void cb_c5(); void cb_c6(); void cb_c7(); void cb_c8(); void cb_c9(); void cb_ca(); void cb_cb(); void cb_cc(); void cb_cd(); void cb_ce(); void cb_cf(); void cb_d0(); void cb_d1(); void cb_d2(); void cb_d3(); void cb_d4(); void cb_d5(); void cb_d6(); void cb_d7(); void cb_d8(); void cb_d9(); void cb_da(); void cb_db(); void cb_dc(); void cb_dd(); void cb_de(); void cb_df(); void cb_e0(); void cb_e1(); void cb_e2(); void cb_e3(); void cb_e4(); void cb_e5(); void cb_e6(); void cb_e7(); void cb_e8(); void cb_e9(); void cb_ea(); void cb_eb(); void cb_ec(); void cb_ed(); void cb_ee(); void cb_ef(); void cb_f0(); void cb_f1(); void cb_f2(); void cb_f3(); void cb_f4(); void cb_f5(); void cb_f6(); void cb_f7(); void cb_f8(); void cb_f9(); void cb_fa(); void cb_fb(); void cb_fc(); void cb_fd(); void cb_fe(); void cb_ff(); void illegal_1(); void dd_00(); void dd_01(); void dd_02(); void dd_03(); void dd_04(); void dd_05(); void dd_06(); void dd_07(); void dd_08(); void dd_09(); void dd_0a(); void dd_0b(); void dd_0c(); void dd_0d(); void dd_0e(); void dd_0f(); void dd_10(); void dd_11(); void dd_12(); void dd_13(); void dd_14(); void dd_15(); void dd_16(); void dd_17(); void dd_18(); void dd_19(); void dd_1a(); void dd_1b(); void dd_1c(); void dd_1d(); void dd_1e(); void dd_1f(); void dd_20(); void dd_21(); void dd_22(); void dd_23(); void dd_24(); void dd_25(); void dd_26(); void dd_27(); void dd_28(); void dd_29(); void dd_2a(); void dd_2b(); void dd_2c(); void dd_2d(); void dd_2e(); void dd_2f(); void dd_30(); void dd_31(); void dd_32(); void dd_33(); void dd_34(); void dd_35(); void dd_36(); void dd_37(); void dd_38(); void dd_39(); void dd_3a(); void dd_3b(); void dd_3c(); void dd_3d(); void dd_3e(); void dd_3f(); void dd_40(); void dd_41(); void dd_42(); void dd_43(); void dd_44(); void dd_45(); void dd_46(); void dd_47(); void dd_48(); void dd_49(); void dd_4a(); void dd_4b(); void dd_4c(); void dd_4d(); void dd_4e(); void dd_4f(); void dd_50(); void dd_51(); void dd_52(); void dd_53(); void dd_54(); void dd_55(); void dd_56(); void dd_57(); void dd_58(); void dd_59(); void dd_5a(); void dd_5b(); void dd_5c(); void dd_5d(); void dd_5e(); void dd_5f(); void dd_60(); void dd_61(); void dd_62(); void dd_63(); void dd_64(); void dd_65(); void dd_66(); void dd_67(); void dd_68(); void dd_69(); void dd_6a(); void dd_6b(); void dd_6c(); void dd_6d(); void dd_6e(); void dd_6f(); void dd_70(); void dd_71(); void dd_72(); void dd_73(); void dd_74(); void dd_75(); void dd_76(); void dd_77(); void dd_78(); void dd_79(); void dd_7a(); void dd_7b(); void dd_7c(); void dd_7d(); void dd_7e(); void dd_7f(); void dd_80(); void dd_81(); void dd_82(); void dd_83(); void dd_84(); void dd_85(); void dd_86(); void dd_87(); void dd_88(); void dd_89(); void dd_8a(); void dd_8b(); void dd_8c(); void dd_8d(); void dd_8e(); void dd_8f(); void dd_90(); void dd_91(); void dd_92(); void dd_93(); void dd_94(); void dd_95(); void dd_96(); void dd_97(); void dd_98(); void dd_99(); void dd_9a(); void dd_9b(); void dd_9c(); void dd_9d(); void dd_9e(); void dd_9f(); void dd_a0(); void dd_a1(); void dd_a2(); void dd_a3(); void dd_a4(); void dd_a5(); void dd_a6(); void dd_a7(); void dd_a8(); void dd_a9(); void dd_aa(); void dd_ab(); void dd_ac(); void dd_ad(); void dd_ae(); void dd_af(); void dd_b0(); void dd_b1(); void dd_b2(); void dd_b3(); void dd_b4(); void dd_b5(); void dd_b6(); void dd_b7(); void dd_b8(); void dd_b9(); void dd_ba(); void dd_bb(); void dd_bc(); void dd_bd(); void dd_be(); void dd_bf(); void dd_c0(); void dd_c1(); void dd_c2(); void dd_c3(); void dd_c4(); void dd_c5(); void dd_c6(); void dd_c7(); void dd_c8(); void dd_c9(); void dd_ca(); void dd_cb(); void dd_cc(); void dd_cd(); void dd_ce(); void dd_cf(); void dd_d0(); void dd_d1(); void dd_d2(); void dd_d3(); void dd_d4(); void dd_d5(); void dd_d6(); void dd_d7(); void dd_d8(); void dd_d9(); void dd_da(); void dd_db(); void dd_dc(); void dd_dd(); void dd_de(); void dd_df(); void dd_e0(); void dd_e1(); void dd_e2(); void dd_e3(); void dd_e4(); void dd_e5(); void dd_e6(); void dd_e7(); void dd_e8(); void dd_e9(); void dd_ea(); void dd_eb(); void dd_ec(); void dd_ed(); void dd_ee(); void dd_ef(); void dd_f0(); void dd_f1(); void dd_f2(); void dd_f3(); void dd_f4(); void dd_f5(); void dd_f6(); void dd_f7(); void dd_f8(); void dd_f9(); void dd_fa(); void dd_fb(); void dd_fc(); void dd_fd(); void dd_fe(); void dd_ff(); void illegal_2(); void ed_00(); void ed_01(); void ed_02(); void ed_03(); void ed_04(); void ed_05(); void ed_06(); void ed_07(); void ed_08(); void ed_09(); void ed_0a(); void ed_0b(); void ed_0c(); void ed_0d(); void ed_0e(); void ed_0f(); void ed_10(); void ed_11(); void ed_12(); void ed_13(); void ed_14(); void ed_15(); void ed_16(); void ed_17(); void ed_18(); void ed_19(); void ed_1a(); void ed_1b(); void ed_1c(); void ed_1d(); void ed_1e(); void ed_1f(); void ed_20(); void ed_21(); void ed_22(); void ed_23(); void ed_24(); void ed_25(); void ed_26(); void ed_27(); void ed_28(); void ed_29(); void ed_2a(); void ed_2b(); void ed_2c(); void ed_2d(); void ed_2e(); void ed_2f(); void ed_30(); void ed_31(); void ed_32(); void ed_33(); void ed_34(); void ed_35(); void ed_36(); void ed_37(); void ed_38(); void ed_39(); void ed_3a(); void ed_3b(); void ed_3c(); void ed_3d(); void ed_3e(); void ed_3f(); void ed_40(); void ed_41(); void ed_42(); void ed_43(); void ed_44(); void ed_45(); void ed_46(); void ed_47(); void ed_48(); void ed_49(); void ed_4a(); void ed_4b(); void ed_4c(); void ed_4d(); void ed_4e(); void ed_4f(); void ed_50(); void ed_51(); void ed_52(); void ed_53(); void ed_54(); void ed_55(); void ed_56(); void ed_57(); void ed_58(); void ed_59(); void ed_5a(); void ed_5b(); void ed_5c(); void ed_5d(); void ed_5e(); void ed_5f(); void ed_60(); void ed_61(); void ed_62(); void ed_63(); void ed_64(); void ed_65(); void ed_66(); void ed_67(); void ed_68(); void ed_69(); void ed_6a(); void ed_6b(); void ed_6c(); void ed_6d(); void ed_6e(); void ed_6f(); void ed_70(); void ed_71(); void ed_72(); void ed_73(); void ed_74(); void ed_75(); void ed_76(); void ed_77(); void ed_78(); void ed_79(); void ed_7a(); void ed_7b(); void ed_7c(); void ed_7d(); void ed_7e(); void ed_7f(); void ed_80(); void ed_81(); void ed_82(); void ed_83(); void ed_84(); void ed_85(); void ed_86(); void ed_87(); void ed_88(); void ed_89(); void ed_8a(); void ed_8b(); void ed_8c(); void ed_8d(); void ed_8e(); void ed_8f(); void ed_90(); void ed_91(); void ed_92(); void ed_93(); void ed_94(); void ed_95(); void ed_96(); void ed_97(); void ed_98(); void ed_99(); void ed_9a(); void ed_9b(); void ed_9c(); void ed_9d(); void ed_9e(); void ed_9f(); void ed_a0(); void ed_a1(); void ed_a2(); void ed_a3(); void ed_a4(); void ed_a5(); void ed_a6(); void ed_a7(); void ed_a8(); void ed_a9(); void ed_aa(); void ed_ab(); void ed_ac(); void ed_ad(); void ed_ae(); void ed_af(); void ed_b0(); void ed_b1(); void ed_b2(); void ed_b3(); void ed_b4(); void ed_b5(); void ed_b6(); void ed_b7(); void ed_b8(); void ed_b9(); void ed_ba(); void ed_bb(); void ed_bc(); void ed_bd(); void ed_be(); void ed_bf(); void ed_c0(); void ed_c1(); void ed_c2(); void ed_c3(); void ed_c4(); void ed_c5(); void ed_c6(); void ed_c7(); void ed_c8(); void ed_c9(); void ed_ca(); void ed_cb(); void ed_cc(); void ed_cd(); void ed_ce(); void ed_cf(); void ed_d0(); void ed_d1(); void ed_d2(); void ed_d3(); void ed_d4(); void ed_d5(); void ed_d6(); void ed_d7(); void ed_d8(); void ed_d9(); void ed_da(); void ed_db(); void ed_dc(); void ed_dd(); void ed_de(); void ed_df(); void ed_e0(); void ed_e1(); void ed_e2(); void ed_e3(); void ed_e4(); void ed_e5(); void ed_e6(); void ed_e7(); void ed_e8(); void ed_e9(); void ed_ea(); void ed_eb(); void ed_ec(); void ed_ed(); void ed_ee(); void ed_ef(); void ed_f0(); void ed_f1(); void ed_f2(); void ed_f3(); void ed_f4(); void ed_f5(); void ed_f6(); void ed_f7(); void ed_f8(); void ed_f9(); void ed_fa(); void ed_fb(); void ed_fc(); void ed_fd(); void ed_fe(); void ed_ff(); void fd_00(); void fd_01(); void fd_02(); void fd_03(); void fd_04(); void fd_05(); void fd_06(); void fd_07(); void fd_08(); void fd_09(); void fd_0a(); void fd_0b(); void fd_0c(); void fd_0d(); void fd_0e(); void fd_0f(); void fd_10(); void fd_11(); void fd_12(); void fd_13(); void fd_14(); void fd_15(); void fd_16(); void fd_17(); void fd_18(); void fd_19(); void fd_1a(); void fd_1b(); void fd_1c(); void fd_1d(); void fd_1e(); void fd_1f(); void fd_20(); void fd_21(); void fd_22(); void fd_23(); void fd_24(); void fd_25(); void fd_26(); void fd_27(); void fd_28(); void fd_29(); void fd_2a(); void fd_2b(); void fd_2c(); void fd_2d(); void fd_2e(); void fd_2f(); void fd_30(); void fd_31(); void fd_32(); void fd_33(); void fd_34(); void fd_35(); void fd_36(); void fd_37(); void fd_38(); void fd_39(); void fd_3a(); void fd_3b(); void fd_3c(); void fd_3d(); void fd_3e(); void fd_3f(); void fd_40(); void fd_41(); void fd_42(); void fd_43(); void fd_44(); void fd_45(); void fd_46(); void fd_47(); void fd_48(); void fd_49(); void fd_4a(); void fd_4b(); void fd_4c(); void fd_4d(); void fd_4e(); void fd_4f(); void fd_50(); void fd_51(); void fd_52(); void fd_53(); void fd_54(); void fd_55(); void fd_56(); void fd_57(); void fd_58(); void fd_59(); void fd_5a(); void fd_5b(); void fd_5c(); void fd_5d(); void fd_5e(); void fd_5f(); void fd_60(); void fd_61(); void fd_62(); void fd_63(); void fd_64(); void fd_65(); void fd_66(); void fd_67(); void fd_68(); void fd_69(); void fd_6a(); void fd_6b(); void fd_6c(); void fd_6d(); void fd_6e(); void fd_6f(); void fd_70(); void fd_71(); void fd_72(); void fd_73(); void fd_74(); void fd_75(); void fd_76(); void fd_77(); void fd_78(); void fd_79(); void fd_7a(); void fd_7b(); void fd_7c(); void fd_7d(); void fd_7e(); void fd_7f(); void fd_80(); void fd_81(); void fd_82(); void fd_83(); void fd_84(); void fd_85(); void fd_86(); void fd_87(); void fd_88(); void fd_89(); void fd_8a(); void fd_8b(); void fd_8c(); void fd_8d(); void fd_8e(); void fd_8f(); void fd_90(); void fd_91(); void fd_92(); void fd_93(); void fd_94(); void fd_95(); void fd_96(); void fd_97(); void fd_98(); void fd_99(); void fd_9a(); void fd_9b(); void fd_9c(); void fd_9d(); void fd_9e(); void fd_9f(); void fd_a0(); void fd_a1(); void fd_a2(); void fd_a3(); void fd_a4(); void fd_a5(); void fd_a6(); void fd_a7(); void fd_a8(); void fd_a9(); void fd_aa(); void fd_ab(); void fd_ac(); void fd_ad(); void fd_ae(); void fd_af(); void fd_b0(); void fd_b1(); void fd_b2(); void fd_b3(); void fd_b4(); void fd_b5(); void fd_b6(); void fd_b7(); void fd_b8(); void fd_b9(); void fd_ba(); void fd_bb(); void fd_bc(); void fd_bd(); void fd_be(); void fd_bf(); void fd_c0(); void fd_c1(); void fd_c2(); void fd_c3(); void fd_c4(); void fd_c5(); void fd_c6(); void fd_c7(); void fd_c8(); void fd_c9(); void fd_ca(); void fd_cb(); void fd_cc(); void fd_cd(); void fd_ce(); void fd_cf(); void fd_d0(); void fd_d1(); void fd_d2(); void fd_d3(); void fd_d4(); void fd_d5(); void fd_d6(); void fd_d7(); void fd_d8(); void fd_d9(); void fd_da(); void fd_db(); void fd_dc(); void fd_dd(); void fd_de(); void fd_df(); void fd_e0(); void fd_e1(); void fd_e2(); void fd_e3(); void fd_e4(); void fd_e5(); void fd_e6(); void fd_e7(); void fd_e8(); void fd_e9(); void fd_ea(); void fd_eb(); void fd_ec(); void fd_ed(); void fd_ee(); void fd_ef(); void fd_f0(); void fd_f1(); void fd_f2(); void fd_f3(); void fd_f4(); void fd_f5(); void fd_f6(); void fd_f7(); void fd_f8(); void fd_f9(); void fd_fa(); void fd_fb(); void fd_fc(); void fd_fd(); void fd_fe(); void fd_ff(); void xycb_00(); void xycb_01(); void xycb_02(); void xycb_03(); void xycb_04(); void xycb_05(); void xycb_06(); void xycb_07(); void xycb_08(); void xycb_09(); void xycb_0a(); void xycb_0b(); void xycb_0c(); void xycb_0d(); void xycb_0e(); void xycb_0f(); void xycb_10(); void xycb_11(); void xycb_12(); void xycb_13(); void xycb_14(); void xycb_15(); void xycb_16(); void xycb_17(); void xycb_18(); void xycb_19(); void xycb_1a(); void xycb_1b(); void xycb_1c(); void xycb_1d(); void xycb_1e(); void xycb_1f(); void xycb_20(); void xycb_21(); void xycb_22(); void xycb_23(); void xycb_24(); void xycb_25(); void xycb_26(); void xycb_27(); void xycb_28(); void xycb_29(); void xycb_2a(); void xycb_2b(); void xycb_2c(); void xycb_2d(); void xycb_2e(); void xycb_2f(); void xycb_30(); void xycb_31(); void xycb_32(); void xycb_33(); void xycb_34(); void xycb_35(); void xycb_36(); void xycb_37(); void xycb_38(); void xycb_39(); void xycb_3a(); void xycb_3b(); void xycb_3c(); void xycb_3d(); void xycb_3e(); void xycb_3f(); void xycb_40(); void xycb_41(); void xycb_42(); void xycb_43(); void xycb_44(); void xycb_45(); void xycb_46(); void xycb_47(); void xycb_48(); void xycb_49(); void xycb_4a(); void xycb_4b(); void xycb_4c(); void xycb_4d(); void xycb_4e(); void xycb_4f(); void xycb_50(); void xycb_51(); void xycb_52(); void xycb_53(); void xycb_54(); void xycb_55(); void xycb_56(); void xycb_57(); void xycb_58(); void xycb_59(); void xycb_5a(); void xycb_5b(); void xycb_5c(); void xycb_5d(); void xycb_5e(); void xycb_5f(); void xycb_60(); void xycb_61(); void xycb_62(); void xycb_63(); void xycb_64(); void xycb_65(); void xycb_66(); void xycb_67(); void xycb_68(); void xycb_69(); void xycb_6a(); void xycb_6b(); void xycb_6c(); void xycb_6d(); void xycb_6e(); void xycb_6f(); void xycb_70(); void xycb_71(); void xycb_72(); void xycb_73(); void xycb_74(); void xycb_75(); void xycb_76(); void xycb_77(); void xycb_78(); void xycb_79(); void xycb_7a(); void xycb_7b(); void xycb_7c(); void xycb_7d(); void xycb_7e(); void xycb_7f(); void xycb_80(); void xycb_81(); void xycb_82(); void xycb_83(); void xycb_84(); void xycb_85(); void xycb_86(); void xycb_87(); void xycb_88(); void xycb_89(); void xycb_8a(); void xycb_8b(); void xycb_8c(); void xycb_8d(); void xycb_8e(); void xycb_8f(); void xycb_90(); void xycb_91(); void xycb_92(); void xycb_93(); void xycb_94(); void xycb_95(); void xycb_96(); void xycb_97(); void xycb_98(); void xycb_99(); void xycb_9a(); void xycb_9b(); void xycb_9c(); void xycb_9d(); void xycb_9e(); void xycb_9f(); void xycb_a0(); void xycb_a1(); void xycb_a2(); void xycb_a3(); void xycb_a4(); void xycb_a5(); void xycb_a6(); void xycb_a7(); void xycb_a8(); void xycb_a9(); void xycb_aa(); void xycb_ab(); void xycb_ac(); void xycb_ad(); void xycb_ae(); void xycb_af(); void xycb_b0(); void xycb_b1(); void xycb_b2(); void xycb_b3(); void xycb_b4(); void xycb_b5(); void xycb_b6(); void xycb_b7(); void xycb_b8(); void xycb_b9(); void xycb_ba(); void xycb_bb(); void xycb_bc(); void xycb_bd(); void xycb_be(); void xycb_bf(); void xycb_c0(); void xycb_c1(); void xycb_c2(); void xycb_c3(); void xycb_c4(); void xycb_c5(); void xycb_c6(); void xycb_c7(); void xycb_c8(); void xycb_c9(); void xycb_ca(); void xycb_cb(); void xycb_cc(); void xycb_cd(); void xycb_ce(); void xycb_cf(); void xycb_d0(); void xycb_d1(); void xycb_d2(); void xycb_d3(); void xycb_d4(); void xycb_d5(); void xycb_d6(); void xycb_d7(); void xycb_d8(); void xycb_d9(); void xycb_da(); void xycb_db(); void xycb_dc(); void xycb_dd(); void xycb_de(); void xycb_df(); void xycb_e0(); void xycb_e1(); void xycb_e2(); void xycb_e3(); void xycb_e4(); void xycb_e5(); void xycb_e6(); void xycb_e7(); void xycb_e8(); void xycb_e9(); void xycb_ea(); void xycb_eb(); void xycb_ec(); void xycb_ed(); void xycb_ee(); void xycb_ef(); void xycb_f0(); void xycb_f1(); void xycb_f2(); void xycb_f3(); void xycb_f4(); void xycb_f5(); void xycb_f6(); void xycb_f7(); void xycb_f8(); void xycb_f9(); void xycb_fa(); void xycb_fb(); void xycb_fc(); void xycb_fd(); void xycb_fe(); void xycb_ff(); }; extern const device_type Z180; #endif /* __Z180_H__ */