1 // license:BSD-3-Clause
2 // copyright-holders:Juergen Buchmueller
3 #ifndef MAME_CPU_Z180_Z180_H
4 #define MAME_CPU_Z180_Z180_H
5 
6 #pragma once
7 
8 #include "machine/z80daisy.h"
9 
10 
11 enum
12 {
13 	Z180_PC,
14 	Z180_SP,
15 	Z180_AF,
16 	Z180_BC,
17 	Z180_DE,
18 	Z180_HL,
19 	Z180_IX,
20 	Z180_IY,
21 	Z180_A,
22 	Z180_B,
23 	Z180_C,
24 	Z180_D,
25 	Z180_E,
26 	Z180_H,
27 	Z180_L,
28 	Z180_AF2,
29 	Z180_BC2,
30 	Z180_DE2,
31 	Z180_HL2,
32 	Z180_R,
33 	Z180_I,
34 	Z180_IM,
35 	Z180_IFF1,
36 	Z180_IFF2,
37 	Z180_HALT,
38 	Z180_DC0,
39 	Z180_DC1,
40 	Z180_DC2,
41 	Z180_DC3,
42 	Z180_CNTLA0,
43 	Z180_CNTLA1,
44 	Z180_CNTLB0,
45 	Z180_CNTLB1,
46 	Z180_STAT0,
47 	Z180_STAT1,
48 	Z180_TDR0,
49 	Z180_TDR1,
50 	Z180_RDR0,
51 	Z180_RDR1,
52 	Z180_CNTR,
53 	Z180_TRDR,
54 	Z180_TMDR0,
55 	Z180_TMDR1,
56 	Z180_RLDR0,
57 	Z180_RLDR1,
58 	Z180_TCR,
59 	Z180_ASEXT0,
60 	Z180_ASEXT1,
61 	Z180_FRC,
62 	Z180_ASTC0,
63 	Z180_ASTC1,
64 	Z180_CMR,
65 	Z180_CCR,
66 	Z180_SAR0,
67 	Z180_DAR0,
68 	Z180_BCR0,
69 	Z180_MAR1,
70 	Z180_IAR1,
71 	Z180_BCR1,
72 	Z180_DSTAT,
73 	Z180_DMODE,
74 	Z180_DCNTL,
75 	Z180_IL,
76 	Z180_ITC,
77 	Z180_RCR,
78 	Z180_CBR,
79 	Z180_BBR,
80 	Z180_CBAR,
81 	Z180_OMCR,
82 	Z180_IOCR,
83 	Z180_IOLINES    /* read/write I/O lines */
84 };
85 
86 enum
87 {
88 	Z180_TABLE_op,
89 	Z180_TABLE_cb,
90 	Z180_TABLE_ed,
91 	Z180_TABLE_xy,
92 	Z180_TABLE_xycb,
93 	Z180_TABLE_ex    /* cycles counts for taken jr/jp/call and interrupt latency (rst opcodes) */
94 };
95 
96 // input lines
97 enum {
98 	Z180_INPUT_LINE_IRQ0,           /* Execute IRQ1 */
99 	Z180_INPUT_LINE_IRQ1,           /* Execute IRQ1 */
100 	Z180_INPUT_LINE_IRQ2,           /* Execute IRQ2 */
101 	Z180_INPUT_LINE_DREQ0,          /* Start DMA0 */
102 	Z180_INPUT_LINE_DREQ1           /* Start DMA1 */
103 };
104 
105 class z180_device : public cpu_device, public z80_daisy_chain_interface
106 {
107 public:
108 	bool get_tend0();
109 	bool get_tend1();
110 
111 protected:
112 	// construction/destruction
113 	z180_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool extended_io, address_map_constructor internal_map);
114 
115 	// device-level overrides
116 	virtual void device_start() override;
117 	virtual void device_reset() override;
118 
119 	// device_execute_interface overrides
execute_min_cycles()120 	virtual uint32_t execute_min_cycles() const noexcept override { return 1; }
execute_max_cycles()121 	virtual uint32_t execute_max_cycles() const noexcept override { return 16; }
execute_clocks_to_cycles(uint64_t clocks)122 	virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 2 - 1) / 2; }
execute_cycles_to_clocks(uint64_t cycles)123 	virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 2); }
execute_input_lines()124 	virtual uint32_t execute_input_lines() const noexcept override { return 5; }
execute_default_irq_vector(int inputnum)125 	virtual uint32_t execute_default_irq_vector(int inputnum) const noexcept override { return 0xff; }
execute_input_edge_triggered(int inputnum)126 	virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return inputnum == INPUT_LINE_NMI; }
127 	virtual void execute_run() override;
128 	virtual void execute_burn(int32_t cycles) override;
129 	virtual void execute_set_input(int inputnum, int state) override;
130 
131 	// device_memory_interface overrides
132 	virtual space_config_vector memory_space_config() const override;
133 	virtual bool memory_translate(int spacenum, int intention, offs_t &address) override;
134 
135 	// device_state_interface overrides
136 	virtual void state_import(const device_state_entry &entry) override;
137 	virtual void state_export(const device_state_entry &entry) override;
138 	virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
139 
140 	// device_disasm_interface overrides
141 	virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
142 
143 	virtual uint8_t z180_read_memory(offs_t addr);
144 	virtual void z180_write_memory(offs_t addr, uint8_t data);
145 	virtual uint8_t z180_internal_port_read(uint8_t port);
146 	virtual void z180_internal_port_write(uint8_t port, uint8_t data);
147 
148 	address_space_config m_program_config;
149 	address_space_config m_io_config;
150 	address_space_config m_decrypted_opcodes_config;
151 
152 	void set_address_width(int bits);
153 
154 private:
memory_wait_states()155 	int memory_wait_states() const { return (m_dcntl & 0xc0) >> 6; }
io_wait_states()156 	int io_wait_states() const { return (m_dcntl & 0x30) == 0 ? 0 : ((m_dcntl & 0x30) >> 4) + 1; }
is_internal_io_address(uint16_t port)157 	bool is_internal_io_address(uint16_t port) const { return ((port ^ m_iocr) & (m_extended_io ? 0xff80 : 0xffc0)) == 0; }
158 
159 	const bool m_extended_io;
160 
161 	PAIR      m_PREPC,m_PC,m_SP,m_AF,m_BC,m_DE,m_HL,m_IX,m_IY;
162 	PAIR      m_AF2,m_BC2,m_DE2,m_HL2;
163 	uint8_t   m_R,m_R2,m_IFF1,m_IFF2,m_HALT,m_IM,m_I;
164 	uint8_t   m_tmdr_latch;                     // flag latched TMDR0H, TMDR1H values
165 	uint8_t   m_read_tcr_tmdr[2];               // flag to indicate that TCR or TMDR was read
166 	uint32_t  m_iol;                            // I/O line status bits
167 	uint8_t   m_asci_cntla[2];                  // ASCI control register A ch 0-1
168 	uint8_t   m_asci_cntlb[2];                  // ASCI control register B ch 0-1
169 	uint8_t   m_asci_stat[2];                   // ASCI status register 0-1
170 	uint8_t   m_asci_tdr[2];                    // ASCI transmit data register 0-1
171 	uint8_t   m_asci_rdr[2];                    // ASCI receive data register 0-1
172 	uint8_t   m_csio_cntr;                      // CSI/O control/status register
173 	uint8_t   m_csio_trdr;                      // CSI/O transmit/receive register
174 	PAIR16    m_tmdr[2];                        // PRT data register ch 0-1
175 	PAIR16    m_rldr[2];                        // PRT reload register ch 0-1
176 	uint8_t   m_tcr;                            // PRT control register
177 	uint8_t   m_frc;                            // free running counter (also time base for ASCI, CSI/O & PRT)
178 	uint8_t   m_frc_prescale;                   // divide CPU clock by 10
179 	PAIR      m_dma_sar0;                       // DMA source address register ch 0
180 	PAIR      m_dma_dar0;                       // DMA destination address register ch 0
181 	PAIR16    m_dma_bcr[2];                     // DMA byte register ch 0-1
182 	PAIR      m_dma_mar1;                       // DMA memory address register ch 1
183 	PAIR      m_dma_iar1;                       // DMA I/O address register ch 1
184 	uint8_t   m_dstat;                          // DMA status register
185 	uint8_t   m_dmode;                          // DMA mode register
186 	uint8_t   m_dcntl;                          // DMA/WAIT control register
187 	uint8_t   m_il;                             // INT vector low register
188 	uint8_t   m_itc;                            // INT/TRAP control register
189 	uint8_t   m_rcr;                            // refresh control register
190 	uint8_t   m_mmu_cbr;                        // MMU common base register
191 	uint8_t   m_mmu_bbr;                        // MMU bank base register
192 	uint8_t   m_mmu_cbar;                       // MMU common/bank area register
193 	uint8_t   m_omcr;                           // operation mode control register
194 	uint8_t   m_iocr;                           // I/O control register
195 	offs_t    m_mmu[16];                        // MMU address translation
196 	uint8_t   m_tmdrh[2];                       // latched TMDR0H and TMDR1H values
197 	uint16_t  m_tmdr_value[2];                  // TMDR values used byt PRT0 and PRT1 as down counter
198 	uint8_t   m_nmi_state;                      // NMI line state
199 	uint8_t   m_nmi_pending;                    // NMI pending
200 	uint8_t   m_irq_state[3];                   // IRQ line states (INT0,INT1,INT2)
201 	uint8_t   m_int_pending[11 + 1];            // interrupt pending
202 	uint8_t   m_after_EI;                       // are we in the EI shadow?
203 	uint32_t  m_ea;
204 	memory_access<20, 0, 0, ENDIANNESS_LITTLE>::cache m_cprogram, m_copcodes;
205 	memory_access<20, 0, 0, ENDIANNESS_LITTLE>::specific m_program;
206 	memory_access<16, 0, 0, ENDIANNESS_LITTLE>::specific m_io;
207 	uint8_t   m_rtemp;
208 	uint32_t  m_ioltemp;
209 	int m_icount;
210 	int m_extra_cycles;           /* extra cpu cycles */
211 	uint8_t *m_cc[6];
212 
213 	typedef void (z180_device::*opcode_func)();
214 	static const opcode_func s_z180ops[6][0x100];
215 
216 	inline void z180_mmu();
217 	inline u8 RM(offs_t addr);
218 	inline u8 IN(u16 port);
219 	inline void OUT(u16 port, u8 value);
220 	inline void RM16( offs_t addr, PAIR *r );
221 	inline void WM16( offs_t addr, PAIR *r );
222 	inline uint8_t ROP();
223 	inline uint8_t ARG();
224 	inline uint32_t ARG16();
225 	inline uint8_t INC(uint8_t value);
226 	inline uint8_t DEC(uint8_t value);
227 	inline uint8_t RLC(uint8_t value);
228 	inline uint8_t RRC(uint8_t value);
229 	inline uint8_t RL(uint8_t value);
230 	inline uint8_t RR(uint8_t value);
231 	inline uint8_t SLA(uint8_t value);
232 	inline uint8_t SRA(uint8_t value);
233 	inline uint8_t SLL(uint8_t value);
234 	inline uint8_t SRL(uint8_t value);
235 	inline uint8_t RES(uint8_t bit, uint8_t value);
236 	inline uint8_t SET(uint8_t bit, uint8_t value);
237 	inline int exec_op(const uint8_t opcode);
238 	inline int exec_cb(const uint8_t opcode);
239 	inline int exec_dd(const uint8_t opcode);
240 	inline int exec_ed(const uint8_t opcode);
241 	inline int exec_fd(const uint8_t opcode);
242 	inline int exec_xycb(const uint8_t opcode);
243 	int take_interrupt(int irq);
244 	uint8_t z180_readcontrol(offs_t port);
245 	void z180_writecontrol(offs_t port, uint8_t data);
246 	int z180_dma0(int max_cycles);
247 	int z180_dma1();
248 	void z180_write_iolines(uint32_t data);
249 	void clock_timers();
250 	int check_interrupts();
251 	void handle_io_timers(int cycles);
252 
253 	void op_00();
254 	void op_01();
255 	void op_02();
256 	void op_03();
257 	void op_04();
258 	void op_05();
259 	void op_06();
260 	void op_07();
261 	void op_08();
262 	void op_09();
263 	void op_0a();
264 	void op_0b();
265 	void op_0c();
266 	void op_0d();
267 	void op_0e();
268 	void op_0f();
269 	void op_10();
270 	void op_11();
271 	void op_12();
272 	void op_13();
273 	void op_14();
274 	void op_15();
275 	void op_16();
276 	void op_17();
277 	void op_18();
278 	void op_19();
279 	void op_1a();
280 	void op_1b();
281 	void op_1c();
282 	void op_1d();
283 	void op_1e();
284 	void op_1f();
285 	void op_20();
286 	void op_21();
287 	void op_22();
288 	void op_23();
289 	void op_24();
290 	void op_25();
291 	void op_26();
292 	void op_27();
293 	void op_28();
294 	void op_29();
295 	void op_2a();
296 	void op_2b();
297 	void op_2c();
298 	void op_2d();
299 	void op_2e();
300 	void op_2f();
301 	void op_30();
302 	void op_31();
303 	void op_32();
304 	void op_33();
305 	void op_34();
306 	void op_35();
307 	void op_36();
308 	void op_37();
309 	void op_38();
310 	void op_39();
311 	void op_3a();
312 	void op_3b();
313 	void op_3c();
314 	void op_3d();
315 	void op_3e();
316 	void op_3f();
317 	void op_40();
318 	void op_41();
319 	void op_42();
320 	void op_43();
321 	void op_44();
322 	void op_45();
323 	void op_46();
324 	void op_47();
325 	void op_48();
326 	void op_49();
327 	void op_4a();
328 	void op_4b();
329 	void op_4c();
330 	void op_4d();
331 	void op_4e();
332 	void op_4f();
333 	void op_50();
334 	void op_51();
335 	void op_52();
336 	void op_53();
337 	void op_54();
338 	void op_55();
339 	void op_56();
340 	void op_57();
341 	void op_58();
342 	void op_59();
343 	void op_5a();
344 	void op_5b();
345 	void op_5c();
346 	void op_5d();
347 	void op_5e();
348 	void op_5f();
349 	void op_60();
350 	void op_61();
351 	void op_62();
352 	void op_63();
353 	void op_64();
354 	void op_65();
355 	void op_66();
356 	void op_67();
357 	void op_68();
358 	void op_69();
359 	void op_6a();
360 	void op_6b();
361 	void op_6c();
362 	void op_6d();
363 	void op_6e();
364 	void op_6f();
365 	void op_70();
366 	void op_71();
367 	void op_72();
368 	void op_73();
369 	void op_74();
370 	void op_75();
371 	void op_76();
372 	void op_77();
373 	void op_78();
374 	void op_79();
375 	void op_7a();
376 	void op_7b();
377 	void op_7c();
378 	void op_7d();
379 	void op_7e();
380 	void op_7f();
381 	void op_80();
382 	void op_81();
383 	void op_82();
384 	void op_83();
385 	void op_84();
386 	void op_85();
387 	void op_86();
388 	void op_87();
389 	void op_88();
390 	void op_89();
391 	void op_8a();
392 	void op_8b();
393 	void op_8c();
394 	void op_8d();
395 	void op_8e();
396 	void op_8f();
397 	void op_90();
398 	void op_91();
399 	void op_92();
400 	void op_93();
401 	void op_94();
402 	void op_95();
403 	void op_96();
404 	void op_97();
405 	void op_98();
406 	void op_99();
407 	void op_9a();
408 	void op_9b();
409 	void op_9c();
410 	void op_9d();
411 	void op_9e();
412 	void op_9f();
413 	void op_a0();
414 	void op_a1();
415 	void op_a2();
416 	void op_a3();
417 	void op_a4();
418 	void op_a5();
419 	void op_a6();
420 	void op_a7();
421 	void op_a8();
422 	void op_a9();
423 	void op_aa();
424 	void op_ab();
425 	void op_ac();
426 	void op_ad();
427 	void op_ae();
428 	void op_af();
429 	void op_b0();
430 	void op_b1();
431 	void op_b2();
432 	void op_b3();
433 	void op_b4();
434 	void op_b5();
435 	void op_b6();
436 	void op_b7();
437 	void op_b8();
438 	void op_b9();
439 	void op_ba();
440 	void op_bb();
441 	void op_bc();
442 	void op_bd();
443 	void op_be();
444 	void op_bf();
445 	void op_c0();
446 	void op_c1();
447 	void op_c2();
448 	void op_c3();
449 	void op_c4();
450 	void op_c5();
451 	void op_c6();
452 	void op_c7();
453 	void op_c8();
454 	void op_c9();
455 	void op_ca();
456 	void op_cb();
457 	void op_cc();
458 	void op_cd();
459 	void op_ce();
460 	void op_cf();
461 	void op_d0();
462 	void op_d1();
463 	void op_d2();
464 	void op_d3();
465 	void op_d4();
466 	void op_d5();
467 	void op_d6();
468 	void op_d7();
469 	void op_d8();
470 	void op_d9();
471 	void op_da();
472 	void op_db();
473 	void op_dc();
474 	void op_dd();
475 	void op_de();
476 	void op_df();
477 	void op_e0();
478 	void op_e1();
479 	void op_e2();
480 	void op_e3();
481 	void op_e4();
482 	void op_e5();
483 	void op_e6();
484 	void op_e7();
485 	void op_e8();
486 	void op_e9();
487 	void op_ea();
488 	void op_eb();
489 	void op_ec();
490 	void op_ed();
491 	void op_ee();
492 	void op_ef();
493 	void op_f0();
494 	void op_f1();
495 	void op_f2();
496 	void op_f3();
497 	void op_f4();
498 	void op_f5();
499 	void op_f6();
500 	void op_f7();
501 	void op_f8();
502 	void op_f9();
503 	void op_fa();
504 	void op_fb();
505 	void op_fc();
506 	void op_fd();
507 	void op_fe();
508 	void op_ff();
509 	void cb_00();
510 	void cb_01();
511 	void cb_02();
512 	void cb_03();
513 	void cb_04();
514 	void cb_05();
515 	void cb_06();
516 	void cb_07();
517 	void cb_08();
518 	void cb_09();
519 	void cb_0a();
520 	void cb_0b();
521 	void cb_0c();
522 	void cb_0d();
523 	void cb_0e();
524 	void cb_0f();
525 	void cb_10();
526 	void cb_11();
527 	void cb_12();
528 	void cb_13();
529 	void cb_14();
530 	void cb_15();
531 	void cb_16();
532 	void cb_17();
533 	void cb_18();
534 	void cb_19();
535 	void cb_1a();
536 	void cb_1b();
537 	void cb_1c();
538 	void cb_1d();
539 	void cb_1e();
540 	void cb_1f();
541 	void cb_20();
542 	void cb_21();
543 	void cb_22();
544 	void cb_23();
545 	void cb_24();
546 	void cb_25();
547 	void cb_26();
548 	void cb_27();
549 	void cb_28();
550 	void cb_29();
551 	void cb_2a();
552 	void cb_2b();
553 	void cb_2c();
554 	void cb_2d();
555 	void cb_2e();
556 	void cb_2f();
557 	void cb_30();
558 	void cb_31();
559 	void cb_32();
560 	void cb_33();
561 	void cb_34();
562 	void cb_35();
563 	void cb_36();
564 	void cb_37();
565 	void cb_38();
566 	void cb_39();
567 	void cb_3a();
568 	void cb_3b();
569 	void cb_3c();
570 	void cb_3d();
571 	void cb_3e();
572 	void cb_3f();
573 	void cb_40();
574 	void cb_41();
575 	void cb_42();
576 	void cb_43();
577 	void cb_44();
578 	void cb_45();
579 	void cb_46();
580 	void cb_47();
581 	void cb_48();
582 	void cb_49();
583 	void cb_4a();
584 	void cb_4b();
585 	void cb_4c();
586 	void cb_4d();
587 	void cb_4e();
588 	void cb_4f();
589 	void cb_50();
590 	void cb_51();
591 	void cb_52();
592 	void cb_53();
593 	void cb_54();
594 	void cb_55();
595 	void cb_56();
596 	void cb_57();
597 	void cb_58();
598 	void cb_59();
599 	void cb_5a();
600 	void cb_5b();
601 	void cb_5c();
602 	void cb_5d();
603 	void cb_5e();
604 	void cb_5f();
605 	void cb_60();
606 	void cb_61();
607 	void cb_62();
608 	void cb_63();
609 	void cb_64();
610 	void cb_65();
611 	void cb_66();
612 	void cb_67();
613 	void cb_68();
614 	void cb_69();
615 	void cb_6a();
616 	void cb_6b();
617 	void cb_6c();
618 	void cb_6d();
619 	void cb_6e();
620 	void cb_6f();
621 	void cb_70();
622 	void cb_71();
623 	void cb_72();
624 	void cb_73();
625 	void cb_74();
626 	void cb_75();
627 	void cb_76();
628 	void cb_77();
629 	void cb_78();
630 	void cb_79();
631 	void cb_7a();
632 	void cb_7b();
633 	void cb_7c();
634 	void cb_7d();
635 	void cb_7e();
636 	void cb_7f();
637 	void cb_80();
638 	void cb_81();
639 	void cb_82();
640 	void cb_83();
641 	void cb_84();
642 	void cb_85();
643 	void cb_86();
644 	void cb_87();
645 	void cb_88();
646 	void cb_89();
647 	void cb_8a();
648 	void cb_8b();
649 	void cb_8c();
650 	void cb_8d();
651 	void cb_8e();
652 	void cb_8f();
653 	void cb_90();
654 	void cb_91();
655 	void cb_92();
656 	void cb_93();
657 	void cb_94();
658 	void cb_95();
659 	void cb_96();
660 	void cb_97();
661 	void cb_98();
662 	void cb_99();
663 	void cb_9a();
664 	void cb_9b();
665 	void cb_9c();
666 	void cb_9d();
667 	void cb_9e();
668 	void cb_9f();
669 	void cb_a0();
670 	void cb_a1();
671 	void cb_a2();
672 	void cb_a3();
673 	void cb_a4();
674 	void cb_a5();
675 	void cb_a6();
676 	void cb_a7();
677 	void cb_a8();
678 	void cb_a9();
679 	void cb_aa();
680 	void cb_ab();
681 	void cb_ac();
682 	void cb_ad();
683 	void cb_ae();
684 	void cb_af();
685 	void cb_b0();
686 	void cb_b1();
687 	void cb_b2();
688 	void cb_b3();
689 	void cb_b4();
690 	void cb_b5();
691 	void cb_b6();
692 	void cb_b7();
693 	void cb_b8();
694 	void cb_b9();
695 	void cb_ba();
696 	void cb_bb();
697 	void cb_bc();
698 	void cb_bd();
699 	void cb_be();
700 	void cb_bf();
701 	void cb_c0();
702 	void cb_c1();
703 	void cb_c2();
704 	void cb_c3();
705 	void cb_c4();
706 	void cb_c5();
707 	void cb_c6();
708 	void cb_c7();
709 	void cb_c8();
710 	void cb_c9();
711 	void cb_ca();
712 	void cb_cb();
713 	void cb_cc();
714 	void cb_cd();
715 	void cb_ce();
716 	void cb_cf();
717 	void cb_d0();
718 	void cb_d1();
719 	void cb_d2();
720 	void cb_d3();
721 	void cb_d4();
722 	void cb_d5();
723 	void cb_d6();
724 	void cb_d7();
725 	void cb_d8();
726 	void cb_d9();
727 	void cb_da();
728 	void cb_db();
729 	void cb_dc();
730 	void cb_dd();
731 	void cb_de();
732 	void cb_df();
733 	void cb_e0();
734 	void cb_e1();
735 	void cb_e2();
736 	void cb_e3();
737 	void cb_e4();
738 	void cb_e5();
739 	void cb_e6();
740 	void cb_e7();
741 	void cb_e8();
742 	void cb_e9();
743 	void cb_ea();
744 	void cb_eb();
745 	void cb_ec();
746 	void cb_ed();
747 	void cb_ee();
748 	void cb_ef();
749 	void cb_f0();
750 	void cb_f1();
751 	void cb_f2();
752 	void cb_f3();
753 	void cb_f4();
754 	void cb_f5();
755 	void cb_f6();
756 	void cb_f7();
757 	void cb_f8();
758 	void cb_f9();
759 	void cb_fa();
760 	void cb_fb();
761 	void cb_fc();
762 	void cb_fd();
763 	void cb_fe();
764 	void cb_ff();
765 	void illegal_1();
766 	void dd_00();
767 	void dd_01();
768 	void dd_02();
769 	void dd_03();
770 	void dd_04();
771 	void dd_05();
772 	void dd_06();
773 	void dd_07();
774 	void dd_08();
775 	void dd_09();
776 	void dd_0a();
777 	void dd_0b();
778 	void dd_0c();
779 	void dd_0d();
780 	void dd_0e();
781 	void dd_0f();
782 	void dd_10();
783 	void dd_11();
784 	void dd_12();
785 	void dd_13();
786 	void dd_14();
787 	void dd_15();
788 	void dd_16();
789 	void dd_17();
790 	void dd_18();
791 	void dd_19();
792 	void dd_1a();
793 	void dd_1b();
794 	void dd_1c();
795 	void dd_1d();
796 	void dd_1e();
797 	void dd_1f();
798 	void dd_20();
799 	void dd_21();
800 	void dd_22();
801 	void dd_23();
802 	void dd_24();
803 	void dd_25();
804 	void dd_26();
805 	void dd_27();
806 	void dd_28();
807 	void dd_29();
808 	void dd_2a();
809 	void dd_2b();
810 	void dd_2c();
811 	void dd_2d();
812 	void dd_2e();
813 	void dd_2f();
814 	void dd_30();
815 	void dd_31();
816 	void dd_32();
817 	void dd_33();
818 	void dd_34();
819 	void dd_35();
820 	void dd_36();
821 	void dd_37();
822 	void dd_38();
823 	void dd_39();
824 	void dd_3a();
825 	void dd_3b();
826 	void dd_3c();
827 	void dd_3d();
828 	void dd_3e();
829 	void dd_3f();
830 	void dd_40();
831 	void dd_41();
832 	void dd_42();
833 	void dd_43();
834 	void dd_44();
835 	void dd_45();
836 	void dd_46();
837 	void dd_47();
838 	void dd_48();
839 	void dd_49();
840 	void dd_4a();
841 	void dd_4b();
842 	void dd_4c();
843 	void dd_4d();
844 	void dd_4e();
845 	void dd_4f();
846 	void dd_50();
847 	void dd_51();
848 	void dd_52();
849 	void dd_53();
850 	void dd_54();
851 	void dd_55();
852 	void dd_56();
853 	void dd_57();
854 	void dd_58();
855 	void dd_59();
856 	void dd_5a();
857 	void dd_5b();
858 	void dd_5c();
859 	void dd_5d();
860 	void dd_5e();
861 	void dd_5f();
862 	void dd_60();
863 	void dd_61();
864 	void dd_62();
865 	void dd_63();
866 	void dd_64();
867 	void dd_65();
868 	void dd_66();
869 	void dd_67();
870 	void dd_68();
871 	void dd_69();
872 	void dd_6a();
873 	void dd_6b();
874 	void dd_6c();
875 	void dd_6d();
876 	void dd_6e();
877 	void dd_6f();
878 	void dd_70();
879 	void dd_71();
880 	void dd_72();
881 	void dd_73();
882 	void dd_74();
883 	void dd_75();
884 	void dd_76();
885 	void dd_77();
886 	void dd_78();
887 	void dd_79();
888 	void dd_7a();
889 	void dd_7b();
890 	void dd_7c();
891 	void dd_7d();
892 	void dd_7e();
893 	void dd_7f();
894 	void dd_80();
895 	void dd_81();
896 	void dd_82();
897 	void dd_83();
898 	void dd_84();
899 	void dd_85();
900 	void dd_86();
901 	void dd_87();
902 	void dd_88();
903 	void dd_89();
904 	void dd_8a();
905 	void dd_8b();
906 	void dd_8c();
907 	void dd_8d();
908 	void dd_8e();
909 	void dd_8f();
910 	void dd_90();
911 	void dd_91();
912 	void dd_92();
913 	void dd_93();
914 	void dd_94();
915 	void dd_95();
916 	void dd_96();
917 	void dd_97();
918 	void dd_98();
919 	void dd_99();
920 	void dd_9a();
921 	void dd_9b();
922 	void dd_9c();
923 	void dd_9d();
924 	void dd_9e();
925 	void dd_9f();
926 	void dd_a0();
927 	void dd_a1();
928 	void dd_a2();
929 	void dd_a3();
930 	void dd_a4();
931 	void dd_a5();
932 	void dd_a6();
933 	void dd_a7();
934 	void dd_a8();
935 	void dd_a9();
936 	void dd_aa();
937 	void dd_ab();
938 	void dd_ac();
939 	void dd_ad();
940 	void dd_ae();
941 	void dd_af();
942 	void dd_b0();
943 	void dd_b1();
944 	void dd_b2();
945 	void dd_b3();
946 	void dd_b4();
947 	void dd_b5();
948 	void dd_b6();
949 	void dd_b7();
950 	void dd_b8();
951 	void dd_b9();
952 	void dd_ba();
953 	void dd_bb();
954 	void dd_bc();
955 	void dd_bd();
956 	void dd_be();
957 	void dd_bf();
958 	void dd_c0();
959 	void dd_c1();
960 	void dd_c2();
961 	void dd_c3();
962 	void dd_c4();
963 	void dd_c5();
964 	void dd_c6();
965 	void dd_c7();
966 	void dd_c8();
967 	void dd_c9();
968 	void dd_ca();
969 	void dd_cb();
970 	void dd_cc();
971 	void dd_cd();
972 	void dd_ce();
973 	void dd_cf();
974 	void dd_d0();
975 	void dd_d1();
976 	void dd_d2();
977 	void dd_d3();
978 	void dd_d4();
979 	void dd_d5();
980 	void dd_d6();
981 	void dd_d7();
982 	void dd_d8();
983 	void dd_d9();
984 	void dd_da();
985 	void dd_db();
986 	void dd_dc();
987 	void dd_dd();
988 	void dd_de();
989 	void dd_df();
990 	void dd_e0();
991 	void dd_e1();
992 	void dd_e2();
993 	void dd_e3();
994 	void dd_e4();
995 	void dd_e5();
996 	void dd_e6();
997 	void dd_e7();
998 	void dd_e8();
999 	void dd_e9();
1000 	void dd_ea();
1001 	void dd_eb();
1002 	void dd_ec();
1003 	void dd_ed();
1004 	void dd_ee();
1005 	void dd_ef();
1006 	void dd_f0();
1007 	void dd_f1();
1008 	void dd_f2();
1009 	void dd_f3();
1010 	void dd_f4();
1011 	void dd_f5();
1012 	void dd_f6();
1013 	void dd_f7();
1014 	void dd_f8();
1015 	void dd_f9();
1016 	void dd_fa();
1017 	void dd_fb();
1018 	void dd_fc();
1019 	void dd_fd();
1020 	void dd_fe();
1021 	void dd_ff();
1022 	void illegal_2();
1023 	void ed_00();
1024 	void ed_01();
1025 	void ed_02();
1026 	void ed_03();
1027 	void ed_04();
1028 	void ed_05();
1029 	void ed_06();
1030 	void ed_07();
1031 	void ed_08();
1032 	void ed_09();
1033 	void ed_0a();
1034 	void ed_0b();
1035 	void ed_0c();
1036 	void ed_0d();
1037 	void ed_0e();
1038 	void ed_0f();
1039 	void ed_10();
1040 	void ed_11();
1041 	void ed_12();
1042 	void ed_13();
1043 	void ed_14();
1044 	void ed_15();
1045 	void ed_16();
1046 	void ed_17();
1047 	void ed_18();
1048 	void ed_19();
1049 	void ed_1a();
1050 	void ed_1b();
1051 	void ed_1c();
1052 	void ed_1d();
1053 	void ed_1e();
1054 	void ed_1f();
1055 	void ed_20();
1056 	void ed_21();
1057 	void ed_22();
1058 	void ed_23();
1059 	void ed_24();
1060 	void ed_25();
1061 	void ed_26();
1062 	void ed_27();
1063 	void ed_28();
1064 	void ed_29();
1065 	void ed_2a();
1066 	void ed_2b();
1067 	void ed_2c();
1068 	void ed_2d();
1069 	void ed_2e();
1070 	void ed_2f();
1071 	void ed_30();
1072 	void ed_31();
1073 	void ed_32();
1074 	void ed_33();
1075 	void ed_34();
1076 	void ed_35();
1077 	void ed_36();
1078 	void ed_37();
1079 	void ed_38();
1080 	void ed_39();
1081 	void ed_3a();
1082 	void ed_3b();
1083 	void ed_3c();
1084 	void ed_3d();
1085 	void ed_3e();
1086 	void ed_3f();
1087 	void ed_40();
1088 	void ed_41();
1089 	void ed_42();
1090 	void ed_43();
1091 	void ed_44();
1092 	void ed_45();
1093 	void ed_46();
1094 	void ed_47();
1095 	void ed_48();
1096 	void ed_49();
1097 	void ed_4a();
1098 	void ed_4b();
1099 	void ed_4c();
1100 	void ed_4d();
1101 	void ed_4e();
1102 	void ed_4f();
1103 	void ed_50();
1104 	void ed_51();
1105 	void ed_52();
1106 	void ed_53();
1107 	void ed_54();
1108 	void ed_55();
1109 	void ed_56();
1110 	void ed_57();
1111 	void ed_58();
1112 	void ed_59();
1113 	void ed_5a();
1114 	void ed_5b();
1115 	void ed_5c();
1116 	void ed_5d();
1117 	void ed_5e();
1118 	void ed_5f();
1119 	void ed_60();
1120 	void ed_61();
1121 	void ed_62();
1122 	void ed_63();
1123 	void ed_64();
1124 	void ed_65();
1125 	void ed_66();
1126 	void ed_67();
1127 	void ed_68();
1128 	void ed_69();
1129 	void ed_6a();
1130 	void ed_6b();
1131 	void ed_6c();
1132 	void ed_6d();
1133 	void ed_6e();
1134 	void ed_6f();
1135 	void ed_70();
1136 	void ed_71();
1137 	void ed_72();
1138 	void ed_73();
1139 	void ed_74();
1140 	void ed_75();
1141 	void ed_76();
1142 	void ed_77();
1143 	void ed_78();
1144 	void ed_79();
1145 	void ed_7a();
1146 	void ed_7b();
1147 	void ed_7c();
1148 	void ed_7d();
1149 	void ed_7e();
1150 	void ed_7f();
1151 	void ed_80();
1152 	void ed_81();
1153 	void ed_82();
1154 	void ed_83();
1155 	void ed_84();
1156 	void ed_85();
1157 	void ed_86();
1158 	void ed_87();
1159 	void ed_88();
1160 	void ed_89();
1161 	void ed_8a();
1162 	void ed_8b();
1163 	void ed_8c();
1164 	void ed_8d();
1165 	void ed_8e();
1166 	void ed_8f();
1167 	void ed_90();
1168 	void ed_91();
1169 	void ed_92();
1170 	void ed_93();
1171 	void ed_94();
1172 	void ed_95();
1173 	void ed_96();
1174 	void ed_97();
1175 	void ed_98();
1176 	void ed_99();
1177 	void ed_9a();
1178 	void ed_9b();
1179 	void ed_9c();
1180 	void ed_9d();
1181 	void ed_9e();
1182 	void ed_9f();
1183 	void ed_a0();
1184 	void ed_a1();
1185 	void ed_a2();
1186 	void ed_a3();
1187 	void ed_a4();
1188 	void ed_a5();
1189 	void ed_a6();
1190 	void ed_a7();
1191 	void ed_a8();
1192 	void ed_a9();
1193 	void ed_aa();
1194 	void ed_ab();
1195 	void ed_ac();
1196 	void ed_ad();
1197 	void ed_ae();
1198 	void ed_af();
1199 	void ed_b0();
1200 	void ed_b1();
1201 	void ed_b2();
1202 	void ed_b3();
1203 	void ed_b4();
1204 	void ed_b5();
1205 	void ed_b6();
1206 	void ed_b7();
1207 	void ed_b8();
1208 	void ed_b9();
1209 	void ed_ba();
1210 	void ed_bb();
1211 	void ed_bc();
1212 	void ed_bd();
1213 	void ed_be();
1214 	void ed_bf();
1215 	void ed_c0();
1216 	void ed_c1();
1217 	void ed_c2();
1218 	void ed_c3();
1219 	void ed_c4();
1220 	void ed_c5();
1221 	void ed_c6();
1222 	void ed_c7();
1223 	void ed_c8();
1224 	void ed_c9();
1225 	void ed_ca();
1226 	void ed_cb();
1227 	void ed_cc();
1228 	void ed_cd();
1229 	void ed_ce();
1230 	void ed_cf();
1231 	void ed_d0();
1232 	void ed_d1();
1233 	void ed_d2();
1234 	void ed_d3();
1235 	void ed_d4();
1236 	void ed_d5();
1237 	void ed_d6();
1238 	void ed_d7();
1239 	void ed_d8();
1240 	void ed_d9();
1241 	void ed_da();
1242 	void ed_db();
1243 	void ed_dc();
1244 	void ed_dd();
1245 	void ed_de();
1246 	void ed_df();
1247 	void ed_e0();
1248 	void ed_e1();
1249 	void ed_e2();
1250 	void ed_e3();
1251 	void ed_e4();
1252 	void ed_e5();
1253 	void ed_e6();
1254 	void ed_e7();
1255 	void ed_e8();
1256 	void ed_e9();
1257 	void ed_ea();
1258 	void ed_eb();
1259 	void ed_ec();
1260 	void ed_ed();
1261 	void ed_ee();
1262 	void ed_ef();
1263 	void ed_f0();
1264 	void ed_f1();
1265 	void ed_f2();
1266 	void ed_f3();
1267 	void ed_f4();
1268 	void ed_f5();
1269 	void ed_f6();
1270 	void ed_f7();
1271 	void ed_f8();
1272 	void ed_f9();
1273 	void ed_fa();
1274 	void ed_fb();
1275 	void ed_fc();
1276 	void ed_fd();
1277 	void ed_fe();
1278 	void ed_ff();
1279 	void fd_00();
1280 	void fd_01();
1281 	void fd_02();
1282 	void fd_03();
1283 	void fd_04();
1284 	void fd_05();
1285 	void fd_06();
1286 	void fd_07();
1287 	void fd_08();
1288 	void fd_09();
1289 	void fd_0a();
1290 	void fd_0b();
1291 	void fd_0c();
1292 	void fd_0d();
1293 	void fd_0e();
1294 	void fd_0f();
1295 	void fd_10();
1296 	void fd_11();
1297 	void fd_12();
1298 	void fd_13();
1299 	void fd_14();
1300 	void fd_15();
1301 	void fd_16();
1302 	void fd_17();
1303 	void fd_18();
1304 	void fd_19();
1305 	void fd_1a();
1306 	void fd_1b();
1307 	void fd_1c();
1308 	void fd_1d();
1309 	void fd_1e();
1310 	void fd_1f();
1311 	void fd_20();
1312 	void fd_21();
1313 	void fd_22();
1314 	void fd_23();
1315 	void fd_24();
1316 	void fd_25();
1317 	void fd_26();
1318 	void fd_27();
1319 	void fd_28();
1320 	void fd_29();
1321 	void fd_2a();
1322 	void fd_2b();
1323 	void fd_2c();
1324 	void fd_2d();
1325 	void fd_2e();
1326 	void fd_2f();
1327 	void fd_30();
1328 	void fd_31();
1329 	void fd_32();
1330 	void fd_33();
1331 	void fd_34();
1332 	void fd_35();
1333 	void fd_36();
1334 	void fd_37();
1335 	void fd_38();
1336 	void fd_39();
1337 	void fd_3a();
1338 	void fd_3b();
1339 	void fd_3c();
1340 	void fd_3d();
1341 	void fd_3e();
1342 	void fd_3f();
1343 	void fd_40();
1344 	void fd_41();
1345 	void fd_42();
1346 	void fd_43();
1347 	void fd_44();
1348 	void fd_45();
1349 	void fd_46();
1350 	void fd_47();
1351 	void fd_48();
1352 	void fd_49();
1353 	void fd_4a();
1354 	void fd_4b();
1355 	void fd_4c();
1356 	void fd_4d();
1357 	void fd_4e();
1358 	void fd_4f();
1359 	void fd_50();
1360 	void fd_51();
1361 	void fd_52();
1362 	void fd_53();
1363 	void fd_54();
1364 	void fd_55();
1365 	void fd_56();
1366 	void fd_57();
1367 	void fd_58();
1368 	void fd_59();
1369 	void fd_5a();
1370 	void fd_5b();
1371 	void fd_5c();
1372 	void fd_5d();
1373 	void fd_5e();
1374 	void fd_5f();
1375 	void fd_60();
1376 	void fd_61();
1377 	void fd_62();
1378 	void fd_63();
1379 	void fd_64();
1380 	void fd_65();
1381 	void fd_66();
1382 	void fd_67();
1383 	void fd_68();
1384 	void fd_69();
1385 	void fd_6a();
1386 	void fd_6b();
1387 	void fd_6c();
1388 	void fd_6d();
1389 	void fd_6e();
1390 	void fd_6f();
1391 	void fd_70();
1392 	void fd_71();
1393 	void fd_72();
1394 	void fd_73();
1395 	void fd_74();
1396 	void fd_75();
1397 	void fd_76();
1398 	void fd_77();
1399 	void fd_78();
1400 	void fd_79();
1401 	void fd_7a();
1402 	void fd_7b();
1403 	void fd_7c();
1404 	void fd_7d();
1405 	void fd_7e();
1406 	void fd_7f();
1407 	void fd_80();
1408 	void fd_81();
1409 	void fd_82();
1410 	void fd_83();
1411 	void fd_84();
1412 	void fd_85();
1413 	void fd_86();
1414 	void fd_87();
1415 	void fd_88();
1416 	void fd_89();
1417 	void fd_8a();
1418 	void fd_8b();
1419 	void fd_8c();
1420 	void fd_8d();
1421 	void fd_8e();
1422 	void fd_8f();
1423 	void fd_90();
1424 	void fd_91();
1425 	void fd_92();
1426 	void fd_93();
1427 	void fd_94();
1428 	void fd_95();
1429 	void fd_96();
1430 	void fd_97();
1431 	void fd_98();
1432 	void fd_99();
1433 	void fd_9a();
1434 	void fd_9b();
1435 	void fd_9c();
1436 	void fd_9d();
1437 	void fd_9e();
1438 	void fd_9f();
1439 	void fd_a0();
1440 	void fd_a1();
1441 	void fd_a2();
1442 	void fd_a3();
1443 	void fd_a4();
1444 	void fd_a5();
1445 	void fd_a6();
1446 	void fd_a7();
1447 	void fd_a8();
1448 	void fd_a9();
1449 	void fd_aa();
1450 	void fd_ab();
1451 	void fd_ac();
1452 	void fd_ad();
1453 	void fd_ae();
1454 	void fd_af();
1455 	void fd_b0();
1456 	void fd_b1();
1457 	void fd_b2();
1458 	void fd_b3();
1459 	void fd_b4();
1460 	void fd_b5();
1461 	void fd_b6();
1462 	void fd_b7();
1463 	void fd_b8();
1464 	void fd_b9();
1465 	void fd_ba();
1466 	void fd_bb();
1467 	void fd_bc();
1468 	void fd_bd();
1469 	void fd_be();
1470 	void fd_bf();
1471 	void fd_c0();
1472 	void fd_c1();
1473 	void fd_c2();
1474 	void fd_c3();
1475 	void fd_c4();
1476 	void fd_c5();
1477 	void fd_c6();
1478 	void fd_c7();
1479 	void fd_c8();
1480 	void fd_c9();
1481 	void fd_ca();
1482 	void fd_cb();
1483 	void fd_cc();
1484 	void fd_cd();
1485 	void fd_ce();
1486 	void fd_cf();
1487 	void fd_d0();
1488 	void fd_d1();
1489 	void fd_d2();
1490 	void fd_d3();
1491 	void fd_d4();
1492 	void fd_d5();
1493 	void fd_d6();
1494 	void fd_d7();
1495 	void fd_d8();
1496 	void fd_d9();
1497 	void fd_da();
1498 	void fd_db();
1499 	void fd_dc();
1500 	void fd_dd();
1501 	void fd_de();
1502 	void fd_df();
1503 	void fd_e0();
1504 	void fd_e1();
1505 	void fd_e2();
1506 	void fd_e3();
1507 	void fd_e4();
1508 	void fd_e5();
1509 	void fd_e6();
1510 	void fd_e7();
1511 	void fd_e8();
1512 	void fd_e9();
1513 	void fd_ea();
1514 	void fd_eb();
1515 	void fd_ec();
1516 	void fd_ed();
1517 	void fd_ee();
1518 	void fd_ef();
1519 	void fd_f0();
1520 	void fd_f1();
1521 	void fd_f2();
1522 	void fd_f3();
1523 	void fd_f4();
1524 	void fd_f5();
1525 	void fd_f6();
1526 	void fd_f7();
1527 	void fd_f8();
1528 	void fd_f9();
1529 	void fd_fa();
1530 	void fd_fb();
1531 	void fd_fc();
1532 	void fd_fd();
1533 	void fd_fe();
1534 	void fd_ff();
1535 	void xycb_00();
1536 	void xycb_01();
1537 	void xycb_02();
1538 	void xycb_03();
1539 	void xycb_04();
1540 	void xycb_05();
1541 	void xycb_06();
1542 	void xycb_07();
1543 	void xycb_08();
1544 	void xycb_09();
1545 	void xycb_0a();
1546 	void xycb_0b();
1547 	void xycb_0c();
1548 	void xycb_0d();
1549 	void xycb_0e();
1550 	void xycb_0f();
1551 	void xycb_10();
1552 	void xycb_11();
1553 	void xycb_12();
1554 	void xycb_13();
1555 	void xycb_14();
1556 	void xycb_15();
1557 	void xycb_16();
1558 	void xycb_17();
1559 	void xycb_18();
1560 	void xycb_19();
1561 	void xycb_1a();
1562 	void xycb_1b();
1563 	void xycb_1c();
1564 	void xycb_1d();
1565 	void xycb_1e();
1566 	void xycb_1f();
1567 	void xycb_20();
1568 	void xycb_21();
1569 	void xycb_22();
1570 	void xycb_23();
1571 	void xycb_24();
1572 	void xycb_25();
1573 	void xycb_26();
1574 	void xycb_27();
1575 	void xycb_28();
1576 	void xycb_29();
1577 	void xycb_2a();
1578 	void xycb_2b();
1579 	void xycb_2c();
1580 	void xycb_2d();
1581 	void xycb_2e();
1582 	void xycb_2f();
1583 	void xycb_30();
1584 	void xycb_31();
1585 	void xycb_32();
1586 	void xycb_33();
1587 	void xycb_34();
1588 	void xycb_35();
1589 	void xycb_36();
1590 	void xycb_37();
1591 	void xycb_38();
1592 	void xycb_39();
1593 	void xycb_3a();
1594 	void xycb_3b();
1595 	void xycb_3c();
1596 	void xycb_3d();
1597 	void xycb_3e();
1598 	void xycb_3f();
1599 	void xycb_40();
1600 	void xycb_41();
1601 	void xycb_42();
1602 	void xycb_43();
1603 	void xycb_44();
1604 	void xycb_45();
1605 	void xycb_46();
1606 	void xycb_47();
1607 	void xycb_48();
1608 	void xycb_49();
1609 	void xycb_4a();
1610 	void xycb_4b();
1611 	void xycb_4c();
1612 	void xycb_4d();
1613 	void xycb_4e();
1614 	void xycb_4f();
1615 	void xycb_50();
1616 	void xycb_51();
1617 	void xycb_52();
1618 	void xycb_53();
1619 	void xycb_54();
1620 	void xycb_55();
1621 	void xycb_56();
1622 	void xycb_57();
1623 	void xycb_58();
1624 	void xycb_59();
1625 	void xycb_5a();
1626 	void xycb_5b();
1627 	void xycb_5c();
1628 	void xycb_5d();
1629 	void xycb_5e();
1630 	void xycb_5f();
1631 	void xycb_60();
1632 	void xycb_61();
1633 	void xycb_62();
1634 	void xycb_63();
1635 	void xycb_64();
1636 	void xycb_65();
1637 	void xycb_66();
1638 	void xycb_67();
1639 	void xycb_68();
1640 	void xycb_69();
1641 	void xycb_6a();
1642 	void xycb_6b();
1643 	void xycb_6c();
1644 	void xycb_6d();
1645 	void xycb_6e();
1646 	void xycb_6f();
1647 	void xycb_70();
1648 	void xycb_71();
1649 	void xycb_72();
1650 	void xycb_73();
1651 	void xycb_74();
1652 	void xycb_75();
1653 	void xycb_76();
1654 	void xycb_77();
1655 	void xycb_78();
1656 	void xycb_79();
1657 	void xycb_7a();
1658 	void xycb_7b();
1659 	void xycb_7c();
1660 	void xycb_7d();
1661 	void xycb_7e();
1662 	void xycb_7f();
1663 	void xycb_80();
1664 	void xycb_81();
1665 	void xycb_82();
1666 	void xycb_83();
1667 	void xycb_84();
1668 	void xycb_85();
1669 	void xycb_86();
1670 	void xycb_87();
1671 	void xycb_88();
1672 	void xycb_89();
1673 	void xycb_8a();
1674 	void xycb_8b();
1675 	void xycb_8c();
1676 	void xycb_8d();
1677 	void xycb_8e();
1678 	void xycb_8f();
1679 	void xycb_90();
1680 	void xycb_91();
1681 	void xycb_92();
1682 	void xycb_93();
1683 	void xycb_94();
1684 	void xycb_95();
1685 	void xycb_96();
1686 	void xycb_97();
1687 	void xycb_98();
1688 	void xycb_99();
1689 	void xycb_9a();
1690 	void xycb_9b();
1691 	void xycb_9c();
1692 	void xycb_9d();
1693 	void xycb_9e();
1694 	void xycb_9f();
1695 	void xycb_a0();
1696 	void xycb_a1();
1697 	void xycb_a2();
1698 	void xycb_a3();
1699 	void xycb_a4();
1700 	void xycb_a5();
1701 	void xycb_a6();
1702 	void xycb_a7();
1703 	void xycb_a8();
1704 	void xycb_a9();
1705 	void xycb_aa();
1706 	void xycb_ab();
1707 	void xycb_ac();
1708 	void xycb_ad();
1709 	void xycb_ae();
1710 	void xycb_af();
1711 	void xycb_b0();
1712 	void xycb_b1();
1713 	void xycb_b2();
1714 	void xycb_b3();
1715 	void xycb_b4();
1716 	void xycb_b5();
1717 	void xycb_b6();
1718 	void xycb_b7();
1719 	void xycb_b8();
1720 	void xycb_b9();
1721 	void xycb_ba();
1722 	void xycb_bb();
1723 	void xycb_bc();
1724 	void xycb_bd();
1725 	void xycb_be();
1726 	void xycb_bf();
1727 	void xycb_c0();
1728 	void xycb_c1();
1729 	void xycb_c2();
1730 	void xycb_c3();
1731 	void xycb_c4();
1732 	void xycb_c5();
1733 	void xycb_c6();
1734 	void xycb_c7();
1735 	void xycb_c8();
1736 	void xycb_c9();
1737 	void xycb_ca();
1738 	void xycb_cb();
1739 	void xycb_cc();
1740 	void xycb_cd();
1741 	void xycb_ce();
1742 	void xycb_cf();
1743 	void xycb_d0();
1744 	void xycb_d1();
1745 	void xycb_d2();
1746 	void xycb_d3();
1747 	void xycb_d4();
1748 	void xycb_d5();
1749 	void xycb_d6();
1750 	void xycb_d7();
1751 	void xycb_d8();
1752 	void xycb_d9();
1753 	void xycb_da();
1754 	void xycb_db();
1755 	void xycb_dc();
1756 	void xycb_dd();
1757 	void xycb_de();
1758 	void xycb_df();
1759 	void xycb_e0();
1760 	void xycb_e1();
1761 	void xycb_e2();
1762 	void xycb_e3();
1763 	void xycb_e4();
1764 	void xycb_e5();
1765 	void xycb_e6();
1766 	void xycb_e7();
1767 	void xycb_e8();
1768 	void xycb_e9();
1769 	void xycb_ea();
1770 	void xycb_eb();
1771 	void xycb_ec();
1772 	void xycb_ed();
1773 	void xycb_ee();
1774 	void xycb_ef();
1775 	void xycb_f0();
1776 	void xycb_f1();
1777 	void xycb_f2();
1778 	void xycb_f3();
1779 	void xycb_f4();
1780 	void xycb_f5();
1781 	void xycb_f6();
1782 	void xycb_f7();
1783 	void xycb_f8();
1784 	void xycb_f9();
1785 	void xycb_fa();
1786 	void xycb_fb();
1787 	void xycb_fc();
1788 	void xycb_fd();
1789 	void xycb_fe();
1790 	void xycb_ff();
1791 };
1792 
1793 class z80180_device : public z180_device
1794 {
1795 public:
1796 	// construction/destruction
1797 	z80180_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
1798 };
1799 
1800 class hd64180rp_device : public z180_device
1801 {
1802 public:
1803 	// construction/destruction
1804 	hd64180rp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
1805 };
1806 
1807 class z8s180_device : public z180_device
1808 {
1809 public:
1810 	// construction/destruction
1811 	z8s180_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
1812 
1813 protected:
1814 	z8s180_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
1815 
1816 	// device-level overrides
1817 	virtual void device_start() override;
1818 	virtual void device_reset() override;
1819 
1820 	// device_execute_interface overrides
execute_clocks_to_cycles(uint64_t clocks)1821 	virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return BIT(m_cmr, 7) ? (clocks * 2) : BIT(m_ccr, 7) ? clocks : (clocks + 2 - 1) / 2; }
execute_cycles_to_clocks(uint64_t cycles)1822 	virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return BIT(m_cmr, 7) ? (cycles + 2 - 1) / 2 : BIT(m_ccr, 7) ? cycles : (cycles * 2); }
1823 
1824 	virtual uint8_t z180_internal_port_read(uint8_t port) override;
1825 	virtual void z180_internal_port_write(uint8_t port, uint8_t data) override;
1826 
1827 private:
1828 	uint8_t   m_asci_ext[2];                    // ASCI extension control register 0-1
1829 	PAIR16    m_asci_tc[2];                     // ASCI time constant ch 0-1
1830 	uint8_t   m_cmr;                            // clock multiplier
1831 	uint8_t   m_ccr;                            // chip control register
1832 };
1833 
1834 class z80182_device : public z8s180_device
1835 {
1836 public:
1837 	// construction/destruction
1838 	z80182_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
1839 };
1840 
1841 DECLARE_DEVICE_TYPE(Z80180, z80180_device)
1842 DECLARE_DEVICE_TYPE(HD64180RP, hd64180rp_device)
1843 DECLARE_DEVICE_TYPE(Z8S180, z8s180_device)
1844 DECLARE_DEVICE_TYPE(Z80182, z80182_device)
1845 
1846 #endif // MAME_CPU_Z180_Z180_H
1847