summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/z180/z180.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/z180/z180.h')
-rw-r--r--src/devices/cpu/z180/z180.h1788
1 files changed, 1788 insertions, 0 deletions
diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h
new file mode 100644
index 00000000000..7529280b95a
--- /dev/null
+++ b/src/devices/cpu/z180/z180.h
@@ -0,0 +1,1788 @@
+// 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 */
+
+ Z180_GENPC = STATE_GENPC,
+ Z180_GENSP = STATE_GENSP,
+ Z180_GENPCBASE = STATE_GENPCBASE
+};
+
+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) */
+};
+
+enum
+{
+ CPUINFO_PTR_Z180_CYCLE_TABLE = CPUINFO_PTR_CPU_SPECIFIC,
+ CPUINFO_PTR_Z180_CYCLE_TABLE_LAST = CPUINFO_PTR_Z180_CYCLE_TABLE + Z180_TABLE_ex
+};
+
+
+#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:
+ // construction/destruction
+ z180_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // device_execute_interface overrides
+ virtual UINT32 execute_min_cycles() const { return 1; }
+ virtual UINT32 execute_max_cycles() const { return 16; }
+ virtual UINT32 execute_input_lines() const { return 3; }
+ virtual UINT32 execute_default_irq_vector() const { return 0xff; }
+ virtual void execute_run();
+ virtual void execute_burn(INT32 cycles);
+ virtual void execute_set_input(int inputnum, int state);
+
+ // device_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
+ virtual bool memory_translate(address_spacenum spacenum, int intention, offs_t &address);
+
+ // device_state_interface overrides
+ virtual void state_import(const device_state_entry &entry);
+ virtual void state_export(const device_state_entry &entry);
+ void state_string_export(const device_state_entry &entry, std::string &str);
+
+ // device_disasm_interface overrides
+ virtual UINT32 disasm_min_opcode_bytes() const { return 1; }
+ virtual UINT32 disasm_max_opcode_bytes() const { return 4; }
+ virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
+
+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 */
+ z80_daisy_chain m_daisy;
+ 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__ */