1 // license:BSD-3-Clause 2 // copyright-holders:Juergen Buchmueller 3 #ifndef MAME_CPU_UPD7810_UPD7810_H 4 #define MAME_CPU_UPD7810_UPD7810_H 5 6 #pragma once 7 8 9 /* 10 all types have internal ram at 0xff00-0xffff 11 7810 12 7811 (4kbyte),7812(8),7814(16) have internal rom at 0x0000 13 */ 14 15 16 enum 17 { 18 UPD7810_PC=1, UPD7810_SP, UPD7810_PSW, 19 UPD7810_EA, UPD7810_V, UPD7810_A, UPD7810_VA, 20 UPD7810_BC, UPD7810_B, UPD7810_C, UPD7810_DE, UPD7810_D, UPD7810_E, UPD7810_HL, UPD7810_H, UPD7810_L, 21 UPD7810_EA2, UPD7810_V2, UPD7810_A2, UPD7810_VA2, 22 UPD7810_BC2, UPD7810_B2, UPD7810_C2, UPD7810_DE2, UPD7810_D2, UPD7810_E2, UPD7810_HL2, UPD7810_H2, UPD7810_L2, 23 UPD7810_CNT0, UPD7810_CNT1, UPD7810_TM0, UPD7810_TM1, UPD7810_ECNT, UPD7810_ECPT, UPD7810_ETM0, UPD7810_ETM1, 24 UPD7810_MA, UPD7810_MB, UPD7810_MCC, UPD7810_MC, UPD7810_MM, UPD7810_MF, 25 UPD7810_TMM, UPD7810_ETMM, UPD7810_EOM, UPD7810_SML, UPD7810_SMH, 26 UPD7810_ANM, UPD7810_MKL, UPD7810_MKH, UPD7810_ZCM, 27 UPD7810_TXB, UPD7810_RXB, UPD7810_CR0, UPD7810_CR1, UPD7810_CR2, UPD7810_CR3, 28 UPD7810_AN0, UPD7810_AN1, UPD7810_AN2, UPD7810_AN3, UPD7810_AN4, UPD7810_AN5, UPD7810_AN6, UPD7810_AN7, 29 UPD7810_TXD, UPD7810_RXD, UPD7810_SCK, UPD7810_TI, UPD7810_TO, UPD7810_CI, UPD7810_CO0, UPD7810_CO1, 30 UPD7810_LV0, UPD7810_LV1 31 }; 32 33 /* IRQ lines */ 34 #define UPD7810_INTF1 0 35 #define UPD7810_INTF2 1 36 #define UPD7810_INTF0 2 37 #define UPD7810_INTFE1 4 38 39 40 class upd7810_device : public cpu_device 41 { 42 public: 43 // construction/destruction 44 upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 45 46 // configuration helpers to_func()47 auto to_func() { return m_to_func.bind(); } co0_func()48 auto co0_func() { return m_co0_func.bind(); } co1_func()49 auto co1_func() { return m_co1_func.bind(); } txd_func()50 auto txd_func() { return m_txd_func.bind(); } rxd_func()51 auto rxd_func() { return m_rxd_func.bind(); } an0_func()52 auto an0_func() { return m_an_func[0].bind(); } an1_func()53 auto an1_func() { return m_an_func[1].bind(); } an2_func()54 auto an2_func() { return m_an_func[2].bind(); } an3_func()55 auto an3_func() { return m_an_func[3].bind(); } an4_func()56 auto an4_func() { return m_an_func[4].bind(); } an5_func()57 auto an5_func() { return m_an_func[5].bind(); } an6_func()58 auto an6_func() { return m_an_func[6].bind(); } an7_func()59 auto an7_func() { return m_an_func[7].bind(); } 60 pa_in_cb()61 auto pa_in_cb() { return m_pa_in_cb.bind(); } pb_in_cb()62 auto pb_in_cb() { return m_pb_in_cb.bind(); } pc_in_cb()63 auto pc_in_cb() { return m_pc_in_cb.bind(); } pd_in_cb()64 auto pd_in_cb() { return m_pd_in_cb.bind(); } pf_in_cb()65 auto pf_in_cb() { return m_pf_in_cb.bind(); } pa_out_cb()66 auto pa_out_cb() { return m_pa_out_cb.bind(); } pb_out_cb()67 auto pb_out_cb() { return m_pb_out_cb.bind(); } pc_out_cb()68 auto pc_out_cb() { return m_pc_out_cb.bind(); } pd_out_cb()69 auto pd_out_cb() { return m_pd_out_cb.bind(); } pf_out_cb()70 auto pf_out_cb() { return m_pf_out_cb.bind(); } 71 set_pa_pullups(uint8_t p)72 void set_pa_pullups(uint8_t p) { m_pa_pullups = p; } set_pb_pullups(uint8_t p)73 void set_pb_pullups(uint8_t p) { m_pb_pullups = p; } set_pc_pullups(uint8_t p)74 void set_pc_pullups(uint8_t p) { m_pc_pullups = p; } set_pd_pullups(uint8_t p)75 void set_pd_pullups(uint8_t p) { m_pd_pullups = p; } set_pf_pullups(uint8_t p)76 void set_pf_pullups(uint8_t p) { m_pf_pullups = p; } 77 pt_in_cb()78 auto pt_in_cb() { return m_pt_in_cb.bind(); } 79 80 void pa_w(uint8_t data, uint8_t mem_mask = ~0); 81 void pb_w(uint8_t data, uint8_t mem_mask = ~0); 82 void pc_w(uint8_t data, uint8_t mem_mask = ~0); 83 void pd_w(uint8_t data, uint8_t mem_mask = ~0); 84 void pf_w(uint8_t data, uint8_t mem_mask = ~0); 85 86 protected: 87 void upd_internal_128_ram_map(address_map &map); 88 void upd_internal_256_ram_map(address_map &map); 89 void upd_internal_4096_rom_map(address_map &map); 90 91 // flags 92 enum 93 { 94 CY = 0x01, 95 F1 = 0x02, 96 L0 = 0x04, 97 L1 = 0x08, 98 HC = 0x10, 99 SK = 0x20, 100 Z = 0x40, 101 F7 = 0x80 102 }; 103 104 // IRR flags 105 enum 106 { 107 INTFNMI = 0x0001, 108 INTFT0 = 0x0002, 109 INTFT1 = 0x0004, 110 INTF1 = 0x0008, 111 INTF2 = 0x0010, 112 INTFE0 = 0x0020, 113 INTFE1 = 0x0040, 114 INTFEIN = 0x0080, 115 INTFAD = 0x0100, 116 INTFSR = 0x0200, 117 INTFST = 0x0400, 118 INTER = 0x0800, 119 INTOV = 0x1000, 120 INTF0 = 0x2000 121 }; 122 123 // ITF flags 124 enum 125 { 126 INTAN4 = 0x0001, 127 INTAN5 = 0x0002, 128 INTAN6 = 0x0004, 129 INTAN7 = 0x0008, 130 INTSB = 0x0010 131 }; 132 133 upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map); 134 135 // device-level overrides 136 virtual void device_start() override; 137 virtual void device_reset() override; 138 139 // device_execute_interface overrides execute_clocks_to_cycles(uint64_t clocks)140 virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 3 - 1) / 3; } execute_cycles_to_clocks(uint64_t cycles)141 virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 3); } execute_min_cycles()142 virtual uint32_t execute_min_cycles() const noexcept override { return 1; } execute_max_cycles()143 virtual uint32_t execute_max_cycles() const noexcept override { return 40; } execute_input_lines()144 virtual uint32_t execute_input_lines() const noexcept override { return 2; } execute_input_edge_triggered(int inputnum)145 virtual bool execute_input_edge_triggered(int inputnum) const noexcept override { return true; } 146 virtual void execute_run() override; 147 virtual void execute_set_input(int inputnum, int state) override; 148 149 // device_memory_interface overrides 150 virtual space_config_vector memory_space_config() const override; 151 152 // device_state_interface overrides 153 virtual void state_string_export(const device_state_entry &entry, std::string &str) const override; 154 155 // device_disasm_interface overrides 156 virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; 157 158 virtual void handle_timers(int cycles); 159 virtual void upd7810_take_irq(); 160 161 void upd7810_handle_timer0(int cycles, int clkdiv); 162 void upd7810_handle_timer1(int cycles, int clkdiv); 163 164 void upd7810_co0_output_change(); 165 void upd7810_co1_output_change(); 166 167 devcb_write_line m_to_func; 168 devcb_write_line m_co0_func; 169 devcb_write_line m_co1_func; 170 devcb_write_line m_txd_func; 171 devcb_read_line m_rxd_func; 172 devcb_read8::array<8> m_an_func; 173 174 devcb_read8 m_pa_in_cb; 175 devcb_read8 m_pb_in_cb; 176 devcb_read8 m_pc_in_cb; 177 devcb_read8 m_pd_in_cb; 178 devcb_read8 m_pf_in_cb; 179 devcb_write8 m_pa_out_cb; 180 devcb_write8 m_pb_out_cb; 181 devcb_write8 m_pc_out_cb; 182 devcb_write8 m_pd_out_cb; 183 devcb_write8 m_pf_out_cb; 184 185 devcb_read8 m_pt_in_cb; // TODO: uPD7807 only 186 187 typedef void (upd7810_device::*opcode_func)(); 188 189 struct opcode_s { 190 opcode_func opfunc; 191 uint8_t oplen; 192 uint8_t cycles; 193 uint8_t cycles_skip; 194 uint8_t mask_l0_l1; 195 }; 196 197 virtual void configure_ops(); 198 199 static const struct opcode_s s_op48[256]; 200 static const struct opcode_s s_op4C[256]; 201 static const struct opcode_s s_op4D[256]; 202 static const struct opcode_s s_op60[256]; 203 static const struct opcode_s s_op64[256]; 204 static const struct opcode_s s_op70[256]; 205 static const struct opcode_s s_op74[256]; 206 static const struct opcode_s s_opXX_7810[256]; 207 static const struct opcode_s s_opXX_7807[256]; 208 static const struct opcode_s s_op48_7801[256]; 209 static const struct opcode_s s_op4C_7801[256]; 210 static const struct opcode_s s_op4D_7801[256]; 211 static const struct opcode_s s_op60_7801[256]; 212 static const struct opcode_s s_op64_7801[256]; 213 static const struct opcode_s s_op70_7801[256]; 214 static const struct opcode_s s_op74_7801[256]; 215 static const struct opcode_s s_opXX_7801[256]; 216 static const struct opcode_s s_op48_78c05[256]; 217 static const struct opcode_s s_op4C_78c05[256]; 218 static const struct opcode_s s_op4D_78c05[256]; 219 static const struct opcode_s s_op60_78c05[256]; 220 static const struct opcode_s s_op64_78c05[256]; 221 static const struct opcode_s s_op70_78c05[256]; 222 static const struct opcode_s s_op74_78c05[256]; 223 static const struct opcode_s s_opXX_78c05[256]; 224 static const struct opcode_s s_op48_78c06[256]; 225 static const struct opcode_s s_op4C_78c06[256]; 226 static const struct opcode_s s_op4D_78c06[256]; 227 static const struct opcode_s s_op60_78c06[256]; 228 static const struct opcode_s s_op64_78c06[256]; 229 static const struct opcode_s s_op70_78c06[256]; 230 static const struct opcode_s s_op74_78c06[256]; 231 static const struct opcode_s s_opXX_78c06[256]; 232 233 address_space_config m_program_config; 234 235 PAIR m_ppc; /* previous program counter */ 236 PAIR m_pc; /* program counter */ 237 PAIR m_sp; /* stack pointer */ 238 uint8_t m_op; /* opcode */ 239 uint8_t m_op2; /* opcode part 2 */ 240 uint8_t m_iff; /* interrupt enable flip flop */ 241 uint8_t m_iff_pending; 242 uint8_t m_psw; /* processor status word */ 243 PAIR m_ea; /* extended accumulator */ 244 PAIR m_va; /* accumulator + vector register */ 245 PAIR m_bc; /* 8bit B and C registers / 16bit BC register */ 246 PAIR m_de; /* 8bit D and E registers / 16bit DE register */ 247 PAIR m_hl; /* 8bit H and L registers / 16bit HL register */ 248 PAIR m_ea2; /* alternate register set */ 249 PAIR m_va2; 250 PAIR m_bc2; 251 PAIR m_de2; 252 PAIR m_hl2; 253 PAIR m_cnt; /* 8 bit timer counter */ 254 PAIR m_tm; /* 8 bit timer 0/1 comparator inputs */ 255 PAIR m_ecnt; /* timer counter register / capture register */ 256 PAIR m_etm; /* timer 0/1 comparator inputs */ 257 uint8_t m_ma; /* port A input or output mask */ 258 uint8_t m_mb; /* port B input or output mask */ 259 uint8_t m_mcc; /* port C control/port select */ 260 uint8_t m_mc; /* port C input or output mask */ 261 uint8_t m_mm; /* memory mapping */ 262 uint8_t m_mf; /* port F input or output mask */ 263 uint8_t m_mt; /* port T input threshold level */ 264 uint8_t m_tmm; /* timer 0 and timer 1 operating parameters */ 265 uint8_t m_etmm; /* 16-bit multifunction timer/event counter */ 266 uint8_t m_eom; /* 16-bit timer/event counter output control */ 267 uint8_t m_sml; /* serial interface parameters low */ 268 uint8_t m_smh; /* -"- high */ 269 uint8_t m_panm; /* previous analog to digital converter operating parameters */ 270 uint8_t m_anm; /* analog to digital converter operating parameters */ 271 uint8_t m_mkl; /* interrupt mask low */ 272 uint8_t m_mkh; /* -"- high */ 273 uint8_t m_zcm; /* bias circuitry for ac zero-cross detection */ 274 uint8_t m_pa_in; /* port A,B,C,D,F inputs */ 275 uint8_t m_pb_in; 276 uint8_t m_pc_in; 277 uint8_t m_pd_in; 278 uint8_t m_pf_in; 279 uint8_t m_pa_out; /* port A,B,C,D,F outputs */ 280 uint8_t m_pb_out; 281 uint8_t m_pc_out; 282 uint8_t m_pd_out; 283 uint8_t m_pf_out; 284 uint8_t m_pa_pullups; 285 uint8_t m_pb_pullups; 286 uint8_t m_pc_pullups; 287 uint8_t m_pd_pullups; 288 uint8_t m_pf_pullups; 289 uint8_t m_cr[4]; /* analog digital conversion registers */ 290 uint8_t m_txb; /* transmitter buffer */ 291 uint8_t m_rxb; /* receiver buffer */ 292 uint8_t m_txd; /* port C control line states */ 293 uint8_t m_rxd; 294 uint8_t m_sck; 295 uint8_t m_ti; 296 uint8_t m_to; 297 uint8_t m_ci; 298 uint8_t m_lv0; /* level flip flop for co0 */ 299 uint8_t m_lv1; /* level flip flop for co1 */ 300 uint8_t m_co0; 301 uint8_t m_co1; 302 uint16_t m_irr; /* interrupt request register */ 303 uint16_t m_itf; /* interrupt test flag register */ 304 int m_nmi; /* keep track of current nmi state. Needed for 7810 irq checking. */ 305 int m_int1; /* keep track of current int1 state. Needed for irq checking. */ 306 int m_int2; /* keep track to current int2 state. Needed for irq checking. */ 307 308 /* internal helper variables */ 309 uint16_t m_txs; /* transmitter shift register */ 310 uint16_t m_rxs; /* receiver shift register */ 311 uint8_t m_txcnt; /* transmitter shift register bit count */ 312 uint8_t m_rxcnt; /* receiver shift register bit count */ 313 uint8_t m_txbuf; /* transmitter buffer was written */ 314 int32_t m_ovc0; /* overflow counter for timer 0 (for clock div 12/384) */ 315 int32_t m_ovc1; /* overflow counter for timer 0 (for clock div 12/384) */ 316 int32_t m_ovce; /* overflow counter for ecnt */ 317 int32_t m_ovcf; /* overflow counter for fixed clock div 3 mode */ 318 int32_t m_ovcs; /* overflow counter for serial I/O */ 319 uint8_t m_edges; /* rising/falling edge flag for serial I/O */ 320 uint16_t m_adcnt; /* A/D converter cycle count */ 321 uint8_t m_adtot; /* A/D converter total cycles per conversion */ 322 uint8_t m_tmpcr; /* temporary analog digital conversion register */ 323 int m_shdone; /* A/D converter sample and hold done */ 324 int m_adout; /* currently selected A/D converter output register */ 325 int m_adin; /* currently selected A/D converter input */ 326 int m_adrange;/* in scan mode, A/D converter range (AN0-AN3 or AN4-AN7) */ 327 328 const struct opcode_s *m_opXX; /* opcode table */ 329 const struct opcode_s *m_op48; 330 const struct opcode_s *m_op4C; 331 const struct opcode_s *m_op4D; 332 const struct opcode_s *m_op60; 333 const struct opcode_s *m_op64; 334 const struct opcode_s *m_op70; 335 const struct opcode_s *m_op74; 336 memory_access<16, 0, 0, ENDIANNESS_LITTLE>::cache m_opcodes; 337 memory_access<16, 0, 0, ENDIANNESS_LITTLE>::specific m_program; 338 int m_icount; 339 340 uint8_t RP(offs_t port); 341 void WP(offs_t port, uint8_t data); 342 void upd7810_write_EOM(); 343 void upd7810_write_TXB(); 344 void upd7810_sio_output(); 345 void upd7810_sio_input(); 346 void illegal(); 347 void illegal2(); 348 void SLRC_A(); 349 void SLRC_B(); 350 void SLRC_C(); 351 void SLLC_A(); 352 void SLLC_B(); 353 void SLLC_C(); 354 void SK_NV(); 355 void SK_CY(); 356 void SK_HC(); 357 void SK_Z(); 358 void SKN_NV(); 359 void SKN_CY(); 360 void SKN_HC(); 361 void SKN_Z(); 362 void SLR_A(); 363 void SLR_B(); 364 void SLR_C(); 365 void SLL_A(); 366 void SLL_B(); 367 void SLL_C(); 368 void JEA(); 369 void CALB(); 370 void CLC(); 371 void STC(); 372 void MUL_A(); 373 void MUL_B(); 374 void MUL_C(); 375 void RLR_A(); 376 void RLR_B(); 377 void RLR_C(); 378 void RLL_A(); 379 void RLL_B(); 380 void RLL_C(); 381 void RLD(); 382 void RRD(); 383 void NEGA(); 384 void HALT(); 385 void DIV_A(); 386 void DIV_B(); 387 void DIV_C(); 388 void SKIT_NMI(); 389 void SKIT_FT0(); 390 void SKIT_FT1(); 391 void SKIT_F1(); 392 void SKIT_F2(); 393 void SKIT_FE0(); 394 void SKIT_FE1(); 395 void SKIT_FEIN(); 396 void SKIT_FAD(); 397 void SKIT_FSR(); 398 void SKIT_FST(); 399 void SKIT_ER(); 400 void SKIT_OV(); 401 void SKIT_AN4(); 402 void SKIT_AN5(); 403 void SKIT_AN6(); 404 void SKIT_AN7(); 405 void SKIT_SB(); 406 void SKNIT_NMI(); 407 void SKNIT_FT0(); 408 void SKNIT_FT1(); 409 void SKNIT_F1(); 410 void SKNIT_F2(); 411 void SKNIT_FE0(); 412 void SKNIT_FE1(); 413 void SKNIT_FEIN(); 414 void SKNIT_FAD(); 415 void SKNIT_FSR(); 416 void SKNIT_FST(); 417 void SKNIT_ER(); 418 void SKNIT_OV(); 419 void SKNIT_AN4(); 420 void SKNIT_AN5(); 421 void SKNIT_AN6(); 422 void SKNIT_AN7(); 423 void SKNIT_SB(); 424 void LDEAX_D(); 425 void LDEAX_H(); 426 void LDEAX_Dp(); 427 void LDEAX_Hp(); 428 void LDEAX_D_xx(); 429 void LDEAX_H_A(); 430 void LDEAX_H_B(); 431 void LDEAX_H_EA(); 432 void LDEAX_H_xx(); 433 void STEAX_D(); 434 void STEAX_H(); 435 void STEAX_Dp(); 436 void STEAX_Hp(); 437 void STEAX_D_xx(); 438 void STEAX_H_A(); 439 void STEAX_H_B(); 440 void STEAX_H_EA(); 441 void STEAX_H_xx(); 442 void DSLR_EA(); 443 void DSLL_EA(); 444 void TABLE(); 445 void DRLR_EA(); 446 void DRLL_EA(); 447 void STOP(); 448 void DMOV_EA_ECNT(); 449 void DMOV_EA_ECPT(); 450 void DMOV_ETM0_EA(); 451 void DMOV_ETM1_EA(); 452 void MOV_A_PA(); 453 void MOV_A_PB(); 454 void MOV_A_PC(); 455 void MOV_A_PD(); 456 void MOV_A_PF(); 457 void MOV_A_MKH(); 458 void MOV_A_MKL(); 459 void MOV_A_ANM(); 460 void MOV_A_SMH(); 461 void MOV_A_EOM(); 462 void MOV_A_TMM(); 463 void MOV_A_PT(); 464 void MOV_A_RXB(); 465 void MOV_A_CR0(); 466 void MOV_A_CR1(); 467 void MOV_A_CR2(); 468 void MOV_A_CR3(); 469 void MOV_PA_A(); 470 void MOV_PB_A(); 471 void MOV_PC_A(); 472 void MOV_PD_A(); 473 void MOV_PF_A(); 474 void MOV_MKH_A(); 475 void MOV_MKL_A(); 476 void MOV_ANM_A(); 477 void MOV_SMH_A(); 478 void MOV_SML_A(); 479 void MOV_EOM_A(); 480 void MOV_ETMM_A(); 481 void MOV_TMM_A(); 482 void MOV_MM_A(); 483 void MOV_MCC_A(); 484 void MOV_MA_A(); 485 void MOV_MB_A(); 486 void MOV_MC_A(); 487 void MOV_MF_A(); 488 void MOV_TXB_A(); 489 void MOV_TM0_A(); 490 void MOV_TM1_A(); 491 void MOV_MT_A(); 492 void MOV_ZCM_A(); 493 void ANA_V_A(); 494 void ANA_A_A(); 495 void ANA_B_A(); 496 void ANA_C_A(); 497 void ANA_D_A(); 498 void ANA_E_A(); 499 void ANA_H_A(); 500 void ANA_L_A(); 501 void XRA_V_A(); 502 void XRA_A_A(); 503 void XRA_B_A(); 504 void XRA_C_A(); 505 void XRA_D_A(); 506 void XRA_E_A(); 507 void XRA_H_A(); 508 void XRA_L_A(); 509 void ORA_V_A(); 510 void ORA_A_A(); 511 void ORA_B_A(); 512 void ORA_C_A(); 513 void ORA_D_A(); 514 void ORA_E_A(); 515 void ORA_H_A(); 516 void ORA_L_A(); 517 void ADDNC_V_A(); 518 void ADDNC_A_A(); 519 void ADDNC_B_A(); 520 void ADDNC_C_A(); 521 void ADDNC_D_A(); 522 void ADDNC_E_A(); 523 void ADDNC_H_A(); 524 void ADDNC_L_A(); 525 void GTA_V_A(); 526 void GTA_A_A(); 527 void GTA_B_A(); 528 void GTA_C_A(); 529 void GTA_D_A(); 530 void GTA_E_A(); 531 void GTA_H_A(); 532 void GTA_L_A(); 533 void SUBNB_V_A(); 534 void SUBNB_A_A(); 535 void SUBNB_B_A(); 536 void SUBNB_C_A(); 537 void SUBNB_D_A(); 538 void SUBNB_E_A(); 539 void SUBNB_H_A(); 540 void SUBNB_L_A(); 541 void LTA_V_A(); 542 void LTA_A_A(); 543 void LTA_B_A(); 544 void LTA_C_A(); 545 void LTA_D_A(); 546 void LTA_E_A(); 547 void LTA_H_A(); 548 void LTA_L_A(); 549 void ADD_V_A(); 550 void ADD_A_A(); 551 void ADD_B_A(); 552 void ADD_C_A(); 553 void ADD_D_A(); 554 void ADD_E_A(); 555 void ADD_H_A(); 556 void ADD_L_A(); 557 void ADC_V_A(); 558 void ADC_A_A(); 559 void ADC_B_A(); 560 void ADC_C_A(); 561 void ADC_D_A(); 562 void ADC_E_A(); 563 void ADC_H_A(); 564 void ADC_L_A(); 565 void SUB_V_A(); 566 void SUB_A_A(); 567 void SUB_B_A(); 568 void SUB_C_A(); 569 void SUB_D_A(); 570 void SUB_E_A(); 571 void SUB_H_A(); 572 void SUB_L_A(); 573 void NEA_V_A(); 574 void NEA_A_A(); 575 void NEA_B_A(); 576 void NEA_C_A(); 577 void NEA_D_A(); 578 void NEA_E_A(); 579 void NEA_H_A(); 580 void NEA_L_A(); 581 void SBB_V_A(); 582 void SBB_A_A(); 583 void SBB_B_A(); 584 void SBB_C_A(); 585 void SBB_D_A(); 586 void SBB_E_A(); 587 void SBB_H_A(); 588 void SBB_L_A(); 589 void EQA_V_A(); 590 void EQA_A_A(); 591 void EQA_B_A(); 592 void EQA_C_A(); 593 void EQA_D_A(); 594 void EQA_E_A(); 595 void EQA_H_A(); 596 void EQA_L_A(); 597 void ANA_A_V(); 598 void ANA_A_B(); 599 void ANA_A_C(); 600 void ANA_A_D(); 601 void ANA_A_E(); 602 void ANA_A_H(); 603 void ANA_A_L(); 604 void XRA_A_V(); 605 void XRA_A_B(); 606 void XRA_A_C(); 607 void XRA_A_D(); 608 void XRA_A_E(); 609 void XRA_A_H(); 610 void XRA_A_L(); 611 void ORA_A_V(); 612 void ORA_A_B(); 613 void ORA_A_C(); 614 void ORA_A_D(); 615 void ORA_A_E(); 616 void ORA_A_H(); 617 void ORA_A_L(); 618 void ADDNC_A_V(); 619 void ADDNC_A_B(); 620 void ADDNC_A_C(); 621 void ADDNC_A_D(); 622 void ADDNC_A_E(); 623 void ADDNC_A_H(); 624 void ADDNC_A_L(); 625 void GTA_A_V(); 626 void GTA_A_B(); 627 void GTA_A_C(); 628 void GTA_A_D(); 629 void GTA_A_E(); 630 void GTA_A_H(); 631 void GTA_A_L(); 632 void SUBNB_A_V(); 633 void SUBNB_A_B(); 634 void SUBNB_A_C(); 635 void SUBNB_A_D(); 636 void SUBNB_A_E(); 637 void SUBNB_A_H(); 638 void SUBNB_A_L(); 639 void LTA_A_V(); 640 void LTA_A_B(); 641 void LTA_A_C(); 642 void LTA_A_D(); 643 void LTA_A_E(); 644 void LTA_A_H(); 645 void LTA_A_L(); 646 void ADD_A_V(); 647 void ADD_A_B(); 648 void ADD_A_C(); 649 void ADD_A_D(); 650 void ADD_A_E(); 651 void ADD_A_H(); 652 void ADD_A_L(); 653 void ONA_A_V(); 654 void ONA_A_A(); 655 void ONA_A_B(); 656 void ONA_A_C(); 657 void ONA_A_D(); 658 void ONA_A_E(); 659 void ONA_A_H(); 660 void ONA_A_L(); 661 void ADC_A_V(); 662 void ADC_A_B(); 663 void ADC_A_C(); 664 void ADC_A_D(); 665 void ADC_A_E(); 666 void ADC_A_H(); 667 void ADC_A_L(); 668 void OFFA_A_V(); 669 void OFFA_A_A(); 670 void OFFA_A_B(); 671 void OFFA_A_C(); 672 void OFFA_A_D(); 673 void OFFA_A_E(); 674 void OFFA_A_H(); 675 void OFFA_A_L(); 676 void SUB_A_V(); 677 void SUB_A_B(); 678 void SUB_A_C(); 679 void SUB_A_D(); 680 void SUB_A_E(); 681 void SUB_A_H(); 682 void SUB_A_L(); 683 void NEA_A_V(); 684 void NEA_A_B(); 685 void NEA_A_C(); 686 void NEA_A_D(); 687 void NEA_A_E(); 688 void NEA_A_H(); 689 void NEA_A_L(); 690 void SBB_A_V(); 691 void SBB_A_B(); 692 void SBB_A_C(); 693 void SBB_A_D(); 694 void SBB_A_E(); 695 void SBB_A_H(); 696 void SBB_A_L(); 697 void EQA_A_V(); 698 void EQA_A_B(); 699 void EQA_A_C(); 700 void EQA_A_D(); 701 void EQA_A_E(); 702 void EQA_A_H(); 703 void EQA_A_L(); 704 void MVI_PA_xx(); 705 void MVI_PB_xx(); 706 void MVI_PC_xx(); 707 void MVI_PD_xx(); 708 void MVI_PF_xx(); 709 void MVI_MKH_xx(); 710 void MVI_MKL_xx(); 711 void ANI_PA_xx(); 712 void ANI_PB_xx(); 713 void ANI_PC_xx(); 714 void ANI_PD_xx(); 715 void ANI_PF_xx(); 716 void ANI_MKH_xx(); 717 void ANI_MKL_xx(); 718 void XRI_PA_xx(); 719 void XRI_PB_xx(); 720 void XRI_PC_xx(); 721 void XRI_PD_xx(); 722 void XRI_PF_xx(); 723 void XRI_MKH_xx(); 724 void XRI_MKL_xx(); 725 void ORI_PA_xx(); 726 void ORI_PB_xx(); 727 void ORI_PC_xx(); 728 void ORI_PD_xx(); 729 void ORI_PF_xx(); 730 void ORI_MKH_xx(); 731 void ORI_MKL_xx(); 732 void ADINC_PA_xx(); 733 void ADINC_PB_xx(); 734 void ADINC_PC_xx(); 735 void ADINC_PD_xx(); 736 void ADINC_PF_xx(); 737 void ADINC_MKH_xx(); 738 void ADINC_MKL_xx(); 739 void GTI_PA_xx(); 740 void GTI_PB_xx(); 741 void GTI_PC_xx(); 742 void GTI_PD_xx(); 743 void GTI_PF_xx(); 744 void GTI_MKH_xx(); 745 void GTI_MKL_xx(); 746 void SUINB_PA_xx(); 747 void SUINB_PB_xx(); 748 void SUINB_PC_xx(); 749 void SUINB_PD_xx(); 750 void SUINB_PF_xx(); 751 void SUINB_MKH_xx(); 752 void SUINB_MKL_xx(); 753 void LTI_PA_xx(); 754 void LTI_PB_xx(); 755 void LTI_PC_xx(); 756 void LTI_PD_xx(); 757 void LTI_PF_xx(); 758 void LTI_MKH_xx(); 759 void LTI_MKL_xx(); 760 void ADI_PA_xx(); 761 void ADI_PB_xx(); 762 void ADI_PC_xx(); 763 void ADI_PD_xx(); 764 void ADI_PF_xx(); 765 void ADI_MKH_xx(); 766 void ADI_MKL_xx(); 767 void ONI_PA_xx(); 768 void ONI_PB_xx(); 769 void ONI_PC_xx(); 770 void ONI_PD_xx(); 771 void ONI_PF_xx(); 772 void ONI_MKH_xx(); 773 void ONI_MKL_xx(); 774 void ACI_PA_xx(); 775 void ACI_PB_xx(); 776 void ACI_PC_xx(); 777 void ACI_PD_xx(); 778 void ACI_PF_xx(); 779 void ACI_MKH_xx(); 780 void ACI_MKL_xx(); 781 void OFFI_PA_xx(); 782 void OFFI_PB_xx(); 783 void OFFI_PC_xx(); 784 void OFFI_PD_xx(); 785 void OFFI_PF_xx(); 786 void OFFI_MKH_xx(); 787 void OFFI_MKL_xx(); 788 void SUI_PA_xx(); 789 void SUI_PB_xx(); 790 void SUI_PC_xx(); 791 void SUI_PD_xx(); 792 void SUI_PF_xx(); 793 void SUI_MKH_xx(); 794 void SUI_MKL_xx(); 795 void NEI_PA_xx(); 796 void NEI_PB_xx(); 797 void NEI_PC_xx(); 798 void NEI_PD_xx(); 799 void NEI_PF_xx(); 800 void NEI_MKH_xx(); 801 void NEI_MKL_xx(); 802 void SBI_PA_xx(); 803 void SBI_PB_xx(); 804 void SBI_PC_xx(); 805 void SBI_PD_xx(); 806 void SBI_PF_xx(); 807 void SBI_MKH_xx(); 808 void SBI_MKL_xx(); 809 void EQI_PA_xx(); 810 void EQI_PB_xx(); 811 void EQI_PC_xx(); 812 void EQI_PD_xx(); 813 void EQI_PF_xx(); 814 void EQI_MKH_xx(); 815 void EQI_MKL_xx(); 816 void MVI_ANM_xx(); 817 void MVI_SMH_xx(); 818 void MVI_EOM_xx(); 819 void MVI_TMM_xx(); 820 void ANI_ANM_xx(); 821 void ANI_SMH_xx(); 822 void ANI_EOM_xx(); 823 void ANI_TMM_xx(); 824 void XRI_ANM_xx(); 825 void XRI_SMH_xx(); 826 void XRI_EOM_xx(); 827 void XRI_TMM_xx(); 828 void ORI_ANM_xx(); 829 void ORI_SMH_xx(); 830 void ORI_EOM_xx(); 831 void ORI_TMM_xx(); 832 void ADINC_ANM_xx(); 833 void ADINC_SMH_xx(); 834 void ADINC_EOM_xx(); 835 void ADINC_TMM_xx(); 836 void GTI_ANM_xx(); 837 void GTI_SMH_xx(); 838 void GTI_EOM_xx(); 839 void GTI_TMM_xx(); 840 void SUINB_ANM_xx(); 841 void SUINB_SMH_xx(); 842 void SUINB_EOM_xx(); 843 void SUINB_TMM_xx(); 844 void LTI_ANM_xx(); 845 void LTI_SMH_xx(); 846 void LTI_EOM_xx(); 847 void LTI_TMM_xx(); 848 void ADI_ANM_xx(); 849 void ADI_SMH_xx(); 850 void ADI_EOM_xx(); 851 void ADI_TMM_xx(); 852 void ONI_ANM_xx(); 853 void ONI_SMH_xx(); 854 void ONI_EOM_xx(); 855 void ONI_TMM_xx(); 856 void ACI_ANM_xx(); 857 void ACI_SMH_xx(); 858 void ACI_EOM_xx(); 859 void ACI_TMM_xx(); 860 void OFFI_ANM_xx(); 861 void OFFI_SMH_xx(); 862 void OFFI_EOM_xx(); 863 void OFFI_TMM_xx(); 864 void SUI_ANM_xx(); 865 void SUI_SMH_xx(); 866 void SUI_EOM_xx(); 867 void SUI_TMM_xx(); 868 void NEI_ANM_xx(); 869 void NEI_SMH_xx(); 870 void NEI_EOM_xx(); 871 void NEI_TMM_xx(); 872 void SBI_ANM_xx(); 873 void SBI_SMH_xx(); 874 void SBI_EOM_xx(); 875 void SBI_TMM_xx(); 876 void EQI_ANM_xx(); 877 void EQI_SMH_xx(); 878 void EQI_EOM_xx(); 879 void EQI_TMM_xx(); 880 void SSPD_w(); 881 void LSPD_w(); 882 void SBCD_w(); 883 void LBCD_w(); 884 void SDED_w(); 885 void LDED_w(); 886 void SHLD_w(); 887 void LHLD_w(); 888 void EADD_EA_A(); 889 void EADD_EA_B(); 890 void EADD_EA_C(); 891 void ESUB_EA_A(); 892 void ESUB_EA_B(); 893 void ESUB_EA_C(); 894 void MOV_V_w(); 895 void MOV_A_w(); 896 void MOV_B_w(); 897 void MOV_C_w(); 898 void MOV_D_w(); 899 void MOV_E_w(); 900 void MOV_H_w(); 901 void MOV_L_w(); 902 void MOV_w_V(); 903 void MOV_w_A(); 904 void MOV_w_B(); 905 void MOV_w_C(); 906 void MOV_w_D(); 907 void MOV_w_E(); 908 void MOV_w_H(); 909 void MOV_w_L(); 910 void ANAX_B(); 911 void ANAX_D(); 912 void ANAX_H(); 913 void ANAX_Dp(); 914 void ANAX_Hp(); 915 void ANAX_Dm(); 916 void ANAX_Hm(); 917 void XRAX_B(); 918 void XRAX_D(); 919 void XRAX_H(); 920 void XRAX_Dp(); 921 void XRAX_Hp(); 922 void XRAX_Dm(); 923 void XRAX_Hm(); 924 void ORAX_B(); 925 void ORAX_D(); 926 void ORAX_H(); 927 void ORAX_Dp(); 928 void ORAX_Hp(); 929 void ORAX_Dm(); 930 void ORAX_Hm(); 931 void ADDNCX_B(); 932 void ADDNCX_D(); 933 void ADDNCX_H(); 934 void ADDNCX_Dp(); 935 void ADDNCX_Hp(); 936 void ADDNCX_Dm(); 937 void ADDNCX_Hm(); 938 void GTAX_B(); 939 void GTAX_D(); 940 void GTAX_H(); 941 void GTAX_Dp(); 942 void GTAX_Hp(); 943 void GTAX_Dm(); 944 void GTAX_Hm(); 945 void SUBNBX_B(); 946 void SUBNBX_D(); 947 void SUBNBX_H(); 948 void SUBNBX_Dp(); 949 void SUBNBX_Hp(); 950 void SUBNBX_Dm(); 951 void SUBNBX_Hm(); 952 void LTAX_B(); 953 void LTAX_D(); 954 void LTAX_H(); 955 void LTAX_Dp(); 956 void LTAX_Hp(); 957 void LTAX_Dm(); 958 void LTAX_Hm(); 959 void ADDX_B(); 960 void ADDX_D(); 961 void ADDX_H(); 962 void ADDX_Dp(); 963 void ADDX_Hp(); 964 void ADDX_Dm(); 965 void ADDX_Hm(); 966 void ONAX_B(); 967 void ONAX_D(); 968 void ONAX_H(); 969 void ONAX_Dp(); 970 void ONAX_Hp(); 971 void ONAX_Dm(); 972 void ONAX_Hm(); 973 void ADCX_B(); 974 void ADCX_D(); 975 void ADCX_H(); 976 void ADCX_Dp(); 977 void ADCX_Hp(); 978 void ADCX_Dm(); 979 void ADCX_Hm(); 980 void OFFAX_B(); 981 void OFFAX_D(); 982 void OFFAX_H(); 983 void OFFAX_Dp(); 984 void OFFAX_Hp(); 985 void OFFAX_Dm(); 986 void OFFAX_Hm(); 987 void SUBX_B(); 988 void SUBX_D(); 989 void SUBX_H(); 990 void SUBX_Dp(); 991 void SUBX_Hp(); 992 void SUBX_Dm(); 993 void SUBX_Hm(); 994 void NEAX_B(); 995 void NEAX_D(); 996 void NEAX_H(); 997 void NEAX_Dp(); 998 void NEAX_Hp(); 999 void NEAX_Dm(); 1000 void NEAX_Hm(); 1001 void SBBX_B(); 1002 void SBBX_D(); 1003 void SBBX_H(); 1004 void SBBX_Dp(); 1005 void SBBX_Hp(); 1006 void SBBX_Dm(); 1007 void SBBX_Hm(); 1008 void EQAX_B(); 1009 void EQAX_D(); 1010 void EQAX_H(); 1011 void EQAX_Dp(); 1012 void EQAX_Hp(); 1013 void EQAX_Dm(); 1014 void EQAX_Hm(); 1015 void ANI_V_xx(); 1016 void ANI_A_xx(); 1017 void ANI_B_xx(); 1018 void ANI_C_xx(); 1019 void ANI_D_xx(); 1020 void ANI_E_xx(); 1021 void ANI_H_xx(); 1022 void ANI_L_xx(); 1023 void XRI_V_xx(); 1024 void XRI_A_xx(); 1025 void XRI_B_xx(); 1026 void XRI_C_xx(); 1027 void XRI_D_xx(); 1028 void XRI_E_xx(); 1029 void XRI_H_xx(); 1030 void XRI_L_xx(); 1031 void ORI_V_xx(); 1032 void ORI_A_xx(); 1033 void ORI_B_xx(); 1034 void ORI_C_xx(); 1035 void ORI_D_xx(); 1036 void ORI_E_xx(); 1037 void ORI_H_xx(); 1038 void ORI_L_xx(); 1039 void ADINC_V_xx(); 1040 void ADINC_A_xx(); 1041 void ADINC_B_xx(); 1042 void ADINC_C_xx(); 1043 void ADINC_D_xx(); 1044 void ADINC_E_xx(); 1045 void ADINC_H_xx(); 1046 void ADINC_L_xx(); 1047 void GTI_V_xx(); 1048 void GTI_A_xx(); 1049 void GTI_B_xx(); 1050 void GTI_C_xx(); 1051 void GTI_D_xx(); 1052 void GTI_E_xx(); 1053 void GTI_H_xx(); 1054 void GTI_L_xx(); 1055 void SUINB_V_xx(); 1056 void SUINB_A_xx(); 1057 void SUINB_B_xx(); 1058 void SUINB_C_xx(); 1059 void SUINB_D_xx(); 1060 void SUINB_E_xx(); 1061 void SUINB_H_xx(); 1062 void SUINB_L_xx(); 1063 void LTI_V_xx(); 1064 void LTI_A_xx(); 1065 void LTI_B_xx(); 1066 void LTI_C_xx(); 1067 void LTI_D_xx(); 1068 void LTI_E_xx(); 1069 void LTI_H_xx(); 1070 void LTI_L_xx(); 1071 void ADI_V_xx(); 1072 void ADI_A_xx(); 1073 void ADI_B_xx(); 1074 void ADI_C_xx(); 1075 void ADI_D_xx(); 1076 void ADI_E_xx(); 1077 void ADI_H_xx(); 1078 void ADI_L_xx(); 1079 void ONI_V_xx(); 1080 void ONI_A_xx(); 1081 void ONI_B_xx(); 1082 void ONI_C_xx(); 1083 void ONI_D_xx(); 1084 void ONI_E_xx(); 1085 void ONI_H_xx(); 1086 void ONI_L_xx(); 1087 void ACI_V_xx(); 1088 void ACI_A_xx(); 1089 void ACI_B_xx(); 1090 void ACI_C_xx(); 1091 void ACI_D_xx(); 1092 void ACI_E_xx(); 1093 void ACI_H_xx(); 1094 void ACI_L_xx(); 1095 void OFFI_V_xx(); 1096 void OFFI_A_xx(); 1097 void OFFI_B_xx(); 1098 void OFFI_C_xx(); 1099 void OFFI_D_xx(); 1100 void OFFI_E_xx(); 1101 void OFFI_H_xx(); 1102 void OFFI_L_xx(); 1103 void SUI_V_xx(); 1104 void SUI_A_xx(); 1105 void SUI_B_xx(); 1106 void SUI_C_xx(); 1107 void SUI_D_xx(); 1108 void SUI_E_xx(); 1109 void SUI_H_xx(); 1110 void SUI_L_xx(); 1111 void NEI_V_xx(); 1112 void NEI_A_xx(); 1113 void NEI_B_xx(); 1114 void NEI_C_xx(); 1115 void NEI_D_xx(); 1116 void NEI_E_xx(); 1117 void NEI_H_xx(); 1118 void NEI_L_xx(); 1119 void SBI_V_xx(); 1120 void SBI_A_xx(); 1121 void SBI_B_xx(); 1122 void SBI_C_xx(); 1123 void SBI_D_xx(); 1124 void SBI_E_xx(); 1125 void SBI_H_xx(); 1126 void SBI_L_xx(); 1127 void EQI_V_xx(); 1128 void EQI_A_xx(); 1129 void EQI_B_xx(); 1130 void EQI_C_xx(); 1131 void EQI_D_xx(); 1132 void EQI_E_xx(); 1133 void EQI_H_xx(); 1134 void EQI_L_xx(); 1135 void ANAW_wa(); 1136 void DAN_EA_BC(); 1137 void DAN_EA_DE(); 1138 void DAN_EA_HL(); 1139 void XRAW_wa(); 1140 void DXR_EA_BC(); 1141 void DXR_EA_DE(); 1142 void DXR_EA_HL(); 1143 void ORAW_wa(); 1144 void DOR_EA_BC(); 1145 void DOR_EA_DE(); 1146 void DOR_EA_HL(); 1147 void ADDNCW_wa(); 1148 void DADDNC_EA_BC(); 1149 void DADDNC_EA_DE(); 1150 void DADDNC_EA_HL(); 1151 void GTAW_wa(); 1152 void DGT_EA_BC(); 1153 void DGT_EA_DE(); 1154 void DGT_EA_HL(); 1155 void SUBNBW_wa(); 1156 void DSUBNB_EA_BC(); 1157 void DSUBNB_EA_DE(); 1158 void DSUBNB_EA_HL(); 1159 void LTAW_wa(); 1160 void DLT_EA_BC(); 1161 void DLT_EA_DE(); 1162 void DLT_EA_HL(); 1163 void ADDW_wa(); 1164 void DADD_EA_BC(); 1165 void DADD_EA_DE(); 1166 void DADD_EA_HL(); 1167 void ONAW_wa(); 1168 void DON_EA_BC(); 1169 void DON_EA_DE(); 1170 void DON_EA_HL(); 1171 void ADCW_wa(); 1172 void DADC_EA_BC(); 1173 void DADC_EA_DE(); 1174 void DADC_EA_HL(); 1175 void OFFAW_wa(); 1176 void DOFF_EA_BC(); 1177 void DOFF_EA_DE(); 1178 void DOFF_EA_HL(); 1179 void SUBW_wa(); 1180 void DSUB_EA_BC(); 1181 void DSUB_EA_DE(); 1182 void DSUB_EA_HL(); 1183 void NEAW_wa(); 1184 void DNE_EA_BC(); 1185 void DNE_EA_DE(); 1186 void DNE_EA_HL(); 1187 void SBBW_wa(); 1188 void DSBB_EA_BC(); 1189 void DSBB_EA_DE(); 1190 void DSBB_EA_HL(); 1191 void EQAW_wa(); 1192 void DEQ_EA_BC(); 1193 void DEQ_EA_DE(); 1194 void DEQ_EA_HL(); 1195 void NOP(); 1196 void LDAW_wa(); 1197 void INX_SP(); 1198 void DCX_SP(); 1199 void LXI_S_w(); 1200 void ANIW_wa_xx(); 1201 void MOV_A_EAH(); 1202 void MOV_A_EAL(); 1203 void MOV_A_B(); 1204 void MOV_A_C(); 1205 void MOV_A_D(); 1206 void MOV_A_E(); 1207 void MOV_A_H(); 1208 void MOV_A_L(); 1209 void EXA(); 1210 void EXX(); 1211 void EXR(); 1212 void INX_BC(); 1213 void DCX_BC(); 1214 void LXI_B_w(); 1215 void ORIW_wa_xx(); 1216 void MOV_EAH_A(); 1217 void MOV_EAL_A(); 1218 void MOV_B_A(); 1219 void MOV_C_A(); 1220 void MOV_D_A(); 1221 void MOV_E_A(); 1222 void MOV_H_A(); 1223 void MOV_L_A(); 1224 void INRW_wa(); 1225 void JB(); 1226 void INX_DE(); 1227 void DCX_DE(); 1228 void LXI_D_w(); 1229 void GTIW_wa_xx(); 1230 void LDAX_B(); 1231 void LDAX_D(); 1232 void LDAX_H(); 1233 void LDAX_Dp(); 1234 void LDAX_Hp(); 1235 void LDAX_Dm(); 1236 void LDAX_Hm(); 1237 void DCRW_wa(); 1238 void BLOCK(); 1239 void INX_HL(); 1240 void DCX_HL(); 1241 void LXI_H_w(); 1242 void LTIW_wa_xx(); 1243 void STAX_B(); 1244 void STAX_D(); 1245 void STAX_H(); 1246 void STAX_Dp(); 1247 void STAX_Hp(); 1248 void STAX_Dm(); 1249 void STAX_Hm(); 1250 void CALL_w(); 1251 void INR_A(); 1252 void INR_B(); 1253 void INR_C(); 1254 void LXI_EA_s(); 1255 void ONIW_wa_xx(); 1256 void PRE_48(); 1257 void MVIX_BC_xx(); 1258 void MVIX_DE_xx(); 1259 void MVIX_HL_xx(); 1260 void PRE_4C(); 1261 void PRE_4D(); 1262 void JRE(); 1263 void EXH(); 1264 void DCR_A(); 1265 void DCR_B(); 1266 void DCR_C(); 1267 void JMP_w(); 1268 void OFFIW_wa_xx(); 1269 void BIT_0_wa(); 1270 void BIT_1_wa(); 1271 void BIT_2_wa(); 1272 void BIT_3_wa(); 1273 void BIT_4_wa(); 1274 void BIT_5_wa(); 1275 void BIT_6_wa(); 1276 void BIT_7_wa(); 1277 void SKN_bit(); 1278 void SETB(); 1279 void CLR(); 1280 void SK_bit(); 1281 void PRE_60(); 1282 void DAA(); 1283 void RETI(); 1284 void STAW_wa(); 1285 void PRE_64(); 1286 void NEIW_wa_xx(); 1287 void MVI_V_xx(); 1288 void MVI_A_xx(); 1289 void MVI_B_xx(); 1290 void MVI_C_xx(); 1291 void MVI_D_xx(); 1292 void MVI_E_xx(); 1293 void MVI_H_xx(); 1294 void MVI_L_xx(); 1295 void PRE_70(); 1296 void MVIW_wa_xx(); 1297 void SOFTI(); 1298 void PRE_74(); 1299 void EQIW_wa_xx(); 1300 void CALF(); 1301 void CALT(); 1302 void POP_VA(); 1303 void POP_BC(); 1304 void POP_DE(); 1305 void POP_HL(); 1306 void POP_EA(); 1307 void DMOV_EA_BC(); 1308 void DMOV_EA_DE(); 1309 void DMOV_EA_HL(); 1310 void INX_EA(); 1311 void DCX_EA(); 1312 void EI(); 1313 void LDAX_D_xx(); 1314 void LDAX_H_A(); 1315 void LDAX_H_B(); 1316 void LDAX_H_EA(); 1317 void LDAX_H_xx(); 1318 void PUSH_VA(); 1319 void PUSH_BC(); 1320 void PUSH_DE(); 1321 void PUSH_HL(); 1322 void PUSH_EA(); 1323 void DMOV_BC_EA(); 1324 void DMOV_DE_EA(); 1325 void DMOV_HL_EA(); 1326 void RET(); 1327 void RETS(); 1328 void DI(); 1329 void STAX_D_xx(); 1330 void STAX_H_A(); 1331 void STAX_H_B(); 1332 void STAX_H_EA(); 1333 void STAX_H_xx(); 1334 void JR(); 1335 void CALT_7801(); 1336 void DCR_A_7801(); 1337 void DCR_B_7801(); 1338 void DCR_C_7801(); 1339 void DCRW_wa_7801(); 1340 void INR_A_7801(); 1341 void INR_B_7801(); 1342 void INR_C_7801(); 1343 void INRW_wa_7801(); 1344 void IN(); 1345 void OUT(); 1346 void MOV_A_S(); 1347 void MOV_S_A(); 1348 void PEN(); 1349 void PER(); 1350 void PEX(); 1351 void SIO(); 1352 void SKIT_F0(); 1353 void SKNIT_F0(); 1354 void STM(); 1355 void STM_7801(); 1356 void MOV_MC_A_7801(); 1357 void base_device_start(); 1358 }; 1359 1360 1361 class upd78c10_device : public upd7810_device 1362 { 1363 public: 1364 // construction/destruction 1365 upd78c10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 1366 1367 protected: 1368 upd78c10_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map); 1369 }; 1370 1371 1372 class upd7807_device : public upd7810_device 1373 { 1374 public: 1375 // construction/destruction 1376 upd7807_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 1377 1378 protected: 1379 virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; 1380 virtual void configure_ops() override; 1381 }; 1382 1383 1384 class upd7801_device : public upd7810_device 1385 { 1386 public: 1387 // construction/destruction 1388 upd7801_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 1389 1390 protected: 1391 virtual void device_reset() override; execute_clocks_to_cycles(uint64_t clocks)1392 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)1393 virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 2); } 1394 virtual void execute_set_input(int inputnum, int state) override; 1395 virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; 1396 virtual void handle_timers(int cycles) override; 1397 virtual void upd7810_take_irq() override; 1398 virtual void configure_ops() override; 1399 }; 1400 1401 1402 class upd78c05_device : public upd7810_device 1403 { 1404 public: 1405 // construction/destruction 1406 upd78c05_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 1407 1408 protected: 1409 upd78c05_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); 1410 1411 virtual void device_start() override; 1412 virtual void device_reset() override; execute_clocks_to_cycles(uint64_t clocks)1413 virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 4 - 1) / 4; } execute_cycles_to_clocks(uint64_t cycles)1414 virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 4); } 1415 virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; 1416 virtual void handle_timers(int cycles) override; 1417 virtual void configure_ops() override; 1418 }; 1419 1420 1421 class upd78c06_device : public upd78c05_device 1422 { 1423 public: 1424 // construction/destruction 1425 upd78c06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 1426 virtual void configure_ops() override; 1427 }; 1428 1429 1430 DECLARE_DEVICE_TYPE(UPD7810, upd7810_device) 1431 DECLARE_DEVICE_TYPE(UPD78C10, upd78c10_device) 1432 DECLARE_DEVICE_TYPE(UPD7807, upd7807_device) 1433 DECLARE_DEVICE_TYPE(UPD7801, upd7801_device) 1434 DECLARE_DEVICE_TYPE(UPD78C05, upd78c05_device) 1435 DECLARE_DEVICE_TYPE(UPD78C06, upd78c06_device) 1436 1437 #endif // MAME_CPU_UPD7810_UPD7810_H 1438