trunk/src/mame/drivers/fidel6502.cpp
r253030 | r253031 | |
16 | 16 | #include "cpu/m6502/m65sc02.h" |
17 | 17 | #include "machine/6821pia.h" |
18 | 18 | #include "sound/speaker.h" |
| 19 | #include "bus/generic/slot.h" |
| 20 | #include "bus/generic/carts.h" |
| 21 | #include "softlist.h" |
19 | 22 | |
20 | 23 | #include "includes/fidelz80.h" |
21 | 24 | |
r253030 | r253031 | |
32 | 35 | fidel6502_state(const machine_config &mconfig, device_type type, const char *tag) |
33 | 36 | : fidelz80base_state(mconfig, type, tag), |
34 | 37 | m_6821pia(*this, "6821pia"), |
| 38 | m_cart(*this, "cartslot"), |
35 | 39 | m_speaker(*this, "speaker"), |
36 | 40 | m_irq_off(*this, "irq_off") |
37 | 41 | { } |
38 | 42 | |
39 | 43 | // devices/pointers |
40 | 44 | optional_device<pia6821_device> m_6821pia; |
| 45 | optional_device<generic_slot_device> m_cart; |
41 | 46 | optional_device<speaker_sound_device> m_speaker; |
42 | 47 | optional_device<timer_device> m_irq_off; |
43 | 48 | |
r253030 | r253031 | |
57 | 62 | DECLARE_READ_LINE_MEMBER(csc_pia1_cb1_r); |
58 | 63 | |
59 | 64 | // model SC12 |
| 65 | DECLARE_MACHINE_START(sc12); |
| 66 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge); |
60 | 67 | TIMER_DEVICE_CALLBACK_MEMBER(irq_off); |
61 | 68 | TIMER_DEVICE_CALLBACK_MEMBER(sc12_irq); |
62 | 69 | DECLARE_WRITE8_MEMBER(sc12_control_w); |
r253030 | r253031 | |
203 | 210 | SC12 |
204 | 211 | ******************************************************************************/ |
205 | 212 | |
| 213 | // cartridge |
| 214 | |
| 215 | DEVICE_IMAGE_LOAD_MEMBER(fidel6502_state, scc_cartridge) |
| 216 | { |
| 217 | UINT32 size = m_cart->common_get_size("rom"); |
| 218 | |
| 219 | // max size is 16KB |
| 220 | if (size > 0x4000) |
| 221 | { |
| 222 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size"); |
| 223 | return IMAGE_INIT_FAIL; |
| 224 | } |
| 225 | |
| 226 | m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); |
| 227 | m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); |
| 228 | |
| 229 | return IMAGE_INIT_PASS; |
| 230 | } |
| 231 | |
| 232 | MACHINE_START_MEMBER(fidel6502_state, sc12) |
| 233 | { |
| 234 | if (m_cart->exists()) |
| 235 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); |
| 236 | |
| 237 | fidelz80base_state::machine_start(); |
| 238 | } |
| 239 | |
| 240 | |
206 | 241 | // interrupt handling |
207 | 242 | |
208 | 243 | TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::irq_off) |
r253030 | r253031 | |
331 | 366 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) |
332 | 367 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) |
333 | 368 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) |
334 | | PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L) // level |
| 369 | PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L) |
335 | 370 | |
336 | 371 | PORT_START("IN.4") |
337 | 372 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) |
r253030 | r253031 | |
384 | 419 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop") PORT_CODE(KEYCODE_4) |
385 | 420 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen") PORT_CODE(KEYCODE_5) |
386 | 421 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King") PORT_CODE(KEYCODE_6) |
387 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) // clear |
388 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) // reset |
| 422 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) |
| 423 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) |
389 | 424 | PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED) PORT_UNUSED |
390 | 425 | INPUT_PORTS_END |
391 | 426 | |
r253030 | r253031 | |
477 | 512 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV / Rook") PORT_CODE(KEYCODE_4) |
478 | 513 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV / Queen") PORT_CODE(KEYCODE_5) |
479 | 514 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB / King") PORT_CODE(KEYCODE_6) |
480 | | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) // clear |
481 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) // reset |
| 515 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) |
| 516 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) |
482 | 517 | INPUT_PORTS_END |
483 | 518 | |
484 | 519 | |
r253030 | r253031 | |
533 | 568 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1)) |
534 | 569 | MCFG_DEFAULT_LAYOUT(layout_fidel_sc12) |
535 | 570 | |
| 571 | MCFG_MACHINE_START_OVERRIDE(fidel6502_state, sc12) |
| 572 | |
536 | 573 | /* sound hardware */ |
537 | 574 | MCFG_SPEAKER_STANDARD_MONO("mono") |
538 | 575 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
539 | 576 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 577 | |
| 578 | /* cartridge */ |
| 579 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc") |
| 580 | MCFG_GENERIC_EXTENSIONS("bin,dat") |
| 581 | MCFG_GENERIC_LOAD(fidel6502_state, scc_cartridge) |
| 582 | |
| 583 | MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc") |
540 | 584 | MACHINE_CONFIG_END |
541 | 585 | |
542 | 586 | static MACHINE_CONFIG_START( fev, fidel6502_state ) |
trunk/src/mame/drivers/fidelz80.cpp
r253030 | r253031 | |
3 | 3 | /****************************************************************************** |
4 | 4 | |
5 | 5 | Fidelity Electronics Z80 based board driver |
6 | | for 6502 based boards, see drivers/fidel6502.cpp |
| 6 | for 6502 based boards, see drivers/fidel6502.cpp (documentation is in this driver) |
7 | 7 | |
8 | | Detailed RE work done by Kevin 'kevtris' Horton, except where noted |
9 | | |
10 | 8 | TODO: |
11 | 9 | - Figure out why it says the first speech line twice; it shouldn't? |
12 | 10 | It sometimes does this on Voice Sensory Chess Challenger real hardware. |
13 | 11 | It can also be heard on Advanced Voice Chess Challenger real hardware, but not the whole line: |
14 | 12 | "I I am Fidelity's chess challenger", instead. |
15 | | - Get rom locations from pcb (done for UVC, VCC is probably similar) |
16 | 13 | - correctly hook up VBRC speech so that the z80 is halted while words are being spoken |
17 | 14 | |
| 15 | Read the official manual(s) on how to play. |
| 16 | |
| 17 | Keypad legend: |
| 18 | - RE: Reset |
| 19 | - CL: Clear |
| 20 | - EN: Enter |
| 21 | - PB: Problem Mode |
| 22 | - PV: Position Verification |
| 23 | - LV: Playing Levels |
| 24 | - TB: Take Back |
| 25 | - DM: Display Move/Double Move |
| 26 | - RV: Reverse |
| 27 | |
| 28 | Peripherals, compatible with various boards: |
| 29 | - Fidelity Challenger Printer - thermal printer, MCU=? |
| 30 | |
| 31 | Program/data cartridges, for various boards, some cross-compatible: |
| 32 | - CG6: Greatest Chess Games 1 |
| 33 | - CAC: Challenger Advanced Chess - 8KB 101-1038A01 |
| 34 | - CB9: Challenger Book Openings 1 - 8KB? |
| 35 | - CB16: Challenger Book Openings 2 - 8+8KB 101-1042A01,02 |
| 36 | - others are alt. titles of these? |
| 37 | |
| 38 | Board hardware descriptions below. |
| 39 | Detailed RE work done by Kevin 'kevtris' Horton, except where noted |
| 40 | |
18 | 41 | *********************************************************************** |
19 | 42 | |
20 | 43 | Voice Chess Challenger (VCC) (version A and B?) |
r253030 | r253031 | |
305 | 328 | |
306 | 329 | ****************************************************************************** |
307 | 330 | |
308 | | Champion Sensory Chess Challenger (CSC) (6502 based -> fidel6502.cpp driver) |
| 331 | Champion Sensory Chess Challenger (CSC) |
309 | 332 | --------------------------------------- |
310 | 333 | |
311 | 334 | Memory map: |
r253030 | r253031 | |
594 | 617 | |
595 | 618 | ****************************************************************************** |
596 | 619 | |
597 | | Sensory Chess Challenger (SC12-B) (6502 based -> fidel6502.cpp driver) |
| 620 | Sensory Chess Challenger (SC12-B) |
| 621 | 4 versions are known to exist: A,B,C, and X, with increasing CPU speed. |
598 | 622 | --------------------------------- |
599 | 623 | |
600 | | RE information by Berger |
| 624 | RE information from netlist by Berger |
601 | 625 | |
602 | 626 | 8*(8+1) buttons, 8+8+2 red LEDs |
603 | 627 | DIN 41524C printer port |
r253030 | r253031 | |
637 | 661 | |
638 | 662 | ****************************************************************************** |
639 | 663 | |
640 | | Voice Excellence (FEV, model 6092) (6502 based -> fidel6502.cpp driver) |
| 664 | Voice Excellence (FEV, model 6092) |
641 | 665 | ---------------------------------- |
642 | 666 | |
643 | 667 | PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards |
trunk/src/mame/drivers/hh_tms1k.cpp
r253030 | r253031 | |
14 | 14 | @CP0904A TMS0970 1977, Milton Bradley Comp IV |
15 | 15 | @MP0905B TMS0970 1977, Parker Brothers Codename Sector |
16 | 16 | *MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?) |
| 17 | *MP0158 TMS1000 1979, Entex Soccer |
17 | 18 | *MP0168 TMS1000? 1979, Conic Basketball |
| 19 | *MP0170 TMS1000? 1979, E.R.S. Football |
18 | 20 | @MP0914 TMS1000 1979, Entex Baseball 1 |
19 | 21 | @MP0923 TMS1000 1979, Entex Baseball 2 |
20 | 22 | @MP1030 TMS1100 1980, APF Mathemagician |
21 | 23 | @MP1133 TMS1470 1979, Kosmos Astro |
22 | 24 | @MP1180 TMS1100 1980, Tomy Power House Pinball |
| 25 | *MP1181 TMS1100 1979, Conic Football 2 |
23 | 26 | @MP1204 TMS1100 1980, Entex Baseball 3 (6007) |
24 | 27 | @MP1211 TMS1100 1980, Entex Space Invader |
25 | 28 | @MP1218 TMS1100 1980, Entex Basketball 2 (6010) |
| 29 | *MP1219 TMS1100 1980, U.S. Games Super Sports 4 |
26 | 30 | @MP1221 TMS1100 1980, Entex Raise The Devil |
27 | 31 | *MP1296 TMS1100? 1982, Entex Black Knight |
28 | 32 | *MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer |
r253030 | r253031 | |
59 | 63 | MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel |
60 | 64 | M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M3400x..) |
61 | 65 | @M34012 TMS1100 1980, Mattel Dungeons & Dragons - Computer Labyrinth Game |
| 66 | *M34014 TMS1100 1981, Coleco Bowlatronic |
62 | 67 | M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter |
63 | 68 | M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster |
64 | 69 | *M34078A TMS1100 1983, Milton Bradley Arcade Mania |