trunk/src/mame/drivers/fidelz80.cpp
| r253162 | r253163 | |
| 42 | 42 | Board hardware descriptions below. |
| 43 | 43 | Detailed RE work done by Kevin 'kevtris' Horton, except where noted |
| 44 | 44 | |
| 45 | | *********************************************************************** |
| 45 | ****************************************************************************** |
| 46 | 46 | |
| 47 | 47 | Voice Chess Challenger (VCC) (version A and B?) |
| 48 | 48 | Advanced Voice Chess Challenger (UVC) |
| r253162 | r253163 | |
| 51 | 51 | |
| 52 | 52 | (which share the same hardware) |
| 53 | 53 | ---------------------- |
| 54 | | |
| 55 | 54 | The CPU is a Z80 running at 4MHz. The TSI chip runs at around 25KHz, using a |
| 56 | 55 | 470K / 100pf RC network. This system is very very basic, and is composed of just |
| 57 | 56 | the Z80, 4 ROMs, the TSI chip, and an 8255. |
| r253162 | r253163 | |
| 79 | 78 | 4000-5FFF: 1K RAM (2114 SRAM x2) |
| 80 | 79 | 6000-FFFF: empty |
| 81 | 80 | |
| 82 | | I/O map: |
| 83 | | -------- |
| 81 | Port map: |
| 82 | --------- |
| 84 | 83 | 00-03: 8255 port chip, mirrored over the 00-FF range; program accesses F4-F7 |
| 85 | 84 | |
| 86 | | |
| 87 | 85 | 8255 connections: |
| 88 | 86 | ----------------- |
| 89 | | |
| 90 | 87 | PA.0 - segment G, TSI A0 (W) |
| 91 | 88 | PA.1 - segment F, TSI A1 (W) |
| 92 | 89 | PA.2 - segment E, TSI A2 (W) |
| r253162 | r253163 | |
| 115 | 112 | PC.6 - button column C (W) |
| 116 | 113 | PC.7 - button column D (W) |
| 117 | 114 | |
| 118 | | |
| 119 | 115 | language switches: |
| 120 | 116 | ------------------ |
| 121 | | |
| 122 | 117 | When PB.6 is pulled low, the language switches can be read. There are four. |
| 123 | 118 | They connect to the button rows. When enabled, the row(s) will read low if |
| 124 | 119 | the jumper is present. English only VCC's do not have the 367 or any pads stuffed. |
| 125 | 120 | The jumpers are labelled: French, German, Spanish, and special. |
| 126 | 121 | |
| 127 | | |
| 128 | 122 | language latch: |
| 129 | 123 | --------------- |
| 130 | | |
| 131 | 124 | There's an unstuffed 7474 on the board that connects to PA.6 and PA.7. It allows |
| 132 | 125 | one to latch the state of A12 to the speech ROM. The English version has the chip |
| 133 | 126 | missing, and a jumper pulling "A12" to ground. This line is really a negative |
| r253162 | r253163 | |
| 143 | 136 | determination and give you a language option on power up or something. |
| 144 | 137 | |
| 145 | 138 | |
| 146 | | *********************************************************************** |
| 139 | ****************************************************************************** |
| 147 | 140 | |
| 148 | | Chess Challenger 10 |
| 141 | Chess Challenger 10 (CC10) |
| 149 | 142 | ------------------- |
| 150 | | |
| 151 | 143 | 4 versions are known to exist: A,B,C,D. Strangely, version C has an 8080 |
| 152 | 144 | instead of Z80. Chess Challenger 1,3 and 7 also run on very similar hardware. |
| 153 | 145 | |
| r253162 | r253163 | |
| 158 | 150 | |
| 159 | 151 | 8255 connections: |
| 160 | 152 | ----------------- |
| 161 | | |
| 162 | 153 | PA.0 - segment G (W) |
| 163 | 154 | PA.1 - segment F (W) |
| 164 | 155 | PA.2 - segment E (W) |
| r253162 | r253163 | |
| 193 | 184 | |
| 194 | 185 | ****************************************************************************** |
| 195 | 186 | |
| 187 | Chess Challenger 7 (BCC) |
| 188 | ------------------------ |
| 189 | RE information from netlist by Berger |
| 190 | |
| 191 | Zilog Z80A, 3.579MHz from XTAL |
| 192 | This is a cost-reduced design from CC10, no special I/O chips. |
| 193 | |
| 194 | Memory map: |
| 195 | ----------- |
| 196 | 0000-0FFF: 4K 2332 ROM CN19103N BCC-REVB. |
| 197 | 2000-2FFF: ROM/RAM bus conflict! |
| 198 | 3000-3FFF: 256 bytes RAM (2111 SRAM x2) |
| 199 | 4000-FFFF: Z80 A14/A15 not connected |
| 200 | |
| 201 | Port map (Write): |
| 202 | --------- |
| 203 | D0-D3: digit select and keypad mux |
| 204 | D4: LOSE led |
| 205 | D5: CHECK led |
| 206 | A0-A2: NE591 A0-A2 |
| 207 | D7: NE591 D (_C not used) |
| 208 | NE591 Q0-Q6: digit segments A-G |
| 209 | NE591 Q7: buzzer |
| 210 | |
| 211 | Port map (Read): |
| 212 | --------- |
| 213 | D0-D3: keypad row |
| 214 | |
| 215 | |
| 216 | ****************************************************************************** |
| 217 | |
| 196 | 218 | Voice Bridge Challenger (Model VBRC, later reissued as Model 7002) |
| 197 | 219 | and Bridge Challenger 3 (Model 7014) |
| 198 | 220 | (which both share the same* hardware) |
| r253162 | r253163 | |
| 216 | 238 | |
| 217 | 239 | Memory Map: |
| 218 | 240 | ----------- |
| 219 | | |
| 220 | 241 | 0000-1FFF: 8K 101-64108 ROM |
| 221 | 242 | 2000-3FFF: 8K 101-64109 ROM |
| 222 | 243 | 4000-5FFF: 8K 101-64110 ROM |
| r253162 | r253163 | |
| 230 | 251 | The TSI chip's ROM is 4K, and is marked 101-32118. The clock is the same as the Chess |
| 231 | 252 | Challengers- 470K/100pf which gives a frequency around 25KHz or so. |
| 232 | 253 | |
| 233 | | I/O Map: |
| 234 | | -------- |
| 235 | | |
| 254 | Port Map: |
| 255 | --------- |
| 236 | 256 | 00-FF: 8041 I/O ports (A0 selects between the two) |
| 237 | 257 | |
| 238 | | |
| 239 | 258 | 8041 pinout: |
| 240 | 259 | ------------ |
| 241 | | |
| 242 | 260 | (note: columns are pulled up with 10K resistors) |
| 243 | 261 | |
| 244 | 262 | P10 - column H, RD LED, VFD grid 0 |
| r253162 | r253163 | |
| 264 | 282 | T0 - optical card sensor (high = bright/reflective, low = dark/non reflective) |
| 265 | 283 | T1 - connects to inverter, then nothing? |
| 266 | 284 | |
| 267 | | |
| 268 | 285 | D8243C I/O expander: |
| 269 | 286 | -------------------- |
| 270 | | |
| 271 | 287 | P4.0 - segment M |
| 272 | 288 | P4.1 - segment L |
| 273 | 289 | P4.2 - segment N |
| r253162 | r253163 | |
| 288 | 304 | P7.2 - segment C |
| 289 | 305 | P7.3 - segment H |
| 290 | 306 | |
| 291 | | |
| 292 | 307 | button matrix: |
| 293 | 308 | -------------- |
| 294 | | |
| 295 | 309 | the matrix is composed of 8 columns by 4 rows. |
| 296 | 310 | |
| 297 | 311 | A B C D E F G H |
| r253162 | r253163 | |
| 337 | 351 | |
| 338 | 352 | Memory map: |
| 339 | 353 | ----------- |
| 340 | | |
| 341 | 354 | 0000-07FF: 2K of RAM |
| 342 | 355 | 0800-0FFF: 1K of RAM (note: mirrored twice) |
| 343 | 356 | 1000-17FF: PIA 0 (display, TSI speech chip) |
| r253162 | r253163 | |
| 356 | 369 | IRQ is connected to a 600Hz oscillator (38.4KHz divided by 64). |
| 357 | 370 | Reset is connected to a power-on reset circuit. |
| 358 | 371 | |
| 359 | | |
| 360 | 372 | PIA 0: |
| 361 | 373 | ------ |
| 362 | | |
| 363 | 374 | PA0 - 7seg segments E, TSI A0 |
| 364 | 375 | PA1 - 7seg segments D, TSI A1 |
| 365 | 376 | PA2 - 7seg segments C, TSI A2 |
| r253162 | r253163 | |
| 384 | 395 | CB1 - NC |
| 385 | 396 | CB2 - NC (connects to pin 14 of soldered connector) |
| 386 | 397 | |
| 387 | | |
| 388 | 398 | PIA 1: |
| 389 | 399 | ------ |
| 390 | | |
| 391 | 400 | PA0 - button row 1 |
| 392 | 401 | PA1 - button row 2 |
| 393 | 402 | PA2 - button row 3 |
| r253162 | r253163 | |
| 412 | 421 | CB1 - button row 8 |
| 413 | 422 | CB2 - selector bit 2 |
| 414 | 423 | |
| 415 | | |
| 416 | 424 | Selector: (attached to PIA 1, outputs 1 of 10 pins low. 7442) |
| 417 | 425 | --------- |
| 418 | | |
| 419 | 426 | output # (selected turns this column on, and all others off) |
| 420 | 427 | 0 - LED column A, button column A, 7seg digit 1 |
| 421 | 428 | 1 - LED column B, button column B, 7seg digit 2 |
| r253162 | r253163 | |
| 456 | 463 | |
| 457 | 464 | these 6 buttons use row 9 (connects to PIA 0) |
| 458 | 465 | |
| 459 | | |
| 460 | 466 | LED display: |
| 461 | 467 | ------------ |
| 462 | | |
| 463 | 468 | 43 21 (digit number) |
| 464 | 469 | ----- |
| 465 | 470 | 88:88 |
| r253162 | r253163 | |
| 473 | 478 | All three of the above are called "segment H". |
| 474 | 479 | |
| 475 | 480 | |
| 476 | | *********************************************************************** |
| 481 | ****************************************************************************** |
| 477 | 482 | |
| 478 | 483 | Voice Sensory Chess Challenger (VSC) |
| 479 | 484 | ------------------------------------ |
| 480 | | |
| 481 | 485 | The display/button/LED/speech technology is identical to the above product. |
| 482 | 486 | Only the CPU board was changed. As such, it works the same but is interfaced |
| 483 | 487 | to different port chips this time. |
| 484 | 488 | |
| 485 | 489 | Hardware: |
| 486 | 490 | --------- |
| 487 | | |
| 488 | 491 | On the board are 13 chips. |
| 489 | 492 | |
| 490 | 493 | The CPU is a Z80A running at 3.9MHz, with 20K of ROM and 1K of RAM mapped. |
| r253162 | r253163 | |
| 508 | 511 | |
| 509 | 512 | Memory map: |
| 510 | 513 | ----------- |
| 511 | | |
| 512 | 514 | 0000-1FFF: 8K ROM 101-64018 |
| 513 | 515 | 2000-3FFF: 8K ROM 101-64019 (also used on the sensory champ. chess challenger) |
| 514 | 516 | 4000-5FFF: 4K ROM 101-32024 |
| 515 | 517 | 6000-7FFF: 1K of RAM (2114 * 2) |
| 516 | 518 | 8000-FFFF: not used, maps to open bus |
| 517 | 519 | |
| 518 | | I/O map: |
| 519 | | -------- |
| 520 | | |
| 521 | | There's only two chips in the I/O map, an 8255 triple port chip, and a Z80A PIO |
| 520 | Port map: |
| 521 | --------- |
| 522 | There's only two chips in the portmap, an 8255 triple port chip, and a Z80A PIO |
| 522 | 523 | parallel input/output device. |
| 523 | 524 | |
| 524 | 525 | Decoding isn't performed using a selector, but instead address lines are used. |
| r253162 | r253163 | |
| 551 | 552 | Refer to the Sensory Champ. Chess Chall. above for explanations of the below |
| 552 | 553 | I/O names and labels. It's the same. |
| 553 | 554 | |
| 554 | | |
| 555 | 555 | 8255: |
| 556 | 556 | ----- |
| 557 | | |
| 558 | 557 | PA.0 - segment D, TSI A0 |
| 559 | 558 | PA.1 - segment E, TSI A1 |
| 560 | 559 | PA.2 - segment F, TSI A2 |
| r253162 | r253163 | |
| 582 | 581 | PC.6 - LED column G, button column G |
| 583 | 582 | PC.7 - LED column H, button column H |
| 584 | 583 | |
| 585 | | |
| 586 | 584 | Z80A PIO: |
| 587 | 585 | --------- |
| 588 | | |
| 589 | 586 | PA.0 - button row 1 |
| 590 | 587 | PA.1 - button row 2 |
| 591 | 588 | PA.2 - button row 3 |
| r253162 | r253163 | |
| 604 | 601 | PB.6 - TSI start line |
| 605 | 602 | PB.7 - TSI ROM A12 line |
| 606 | 603 | |
| 607 | | |
| 608 | 604 | selection jumpers: |
| 609 | 605 | ------------------ |
| 610 | | |
| 611 | 606 | These act like another row of buttons. It is composed of two diode locations, |
| 612 | 607 | so there's up to 4 possible configurations. My board does not have either diode |
| 613 | 608 | stuffed, so this most likely is "English". I suspect it selects which language to use |
| r253162 | r253163 | |
| 624 | 619 | Sensory Chess Challenger (SC12-B) |
| 625 | 620 | 4 versions are known to exist: A,B,C, and X, with increasing CPU speed. |
| 626 | 621 | --------------------------------- |
| 627 | | |
| 628 | 622 | RE information from netlist by Berger |
| 629 | 623 | |
| 630 | 624 | 8*(8+1) buttons, 8+8+2 red LEDs |
| r253162 | r253163 | |
| 636 | 630 | - timer#1, one-shot at power-on, to CPU _RESET |
| 637 | 631 | - timer#2: R1=82K, R2=1K, C=22nf, to CPU _IRQ: ~780Hz, active low=15.25us |
| 638 | 632 | |
| 639 | | |
| 640 | 633 | Memory map: |
| 641 | 634 | ----------- |
| 642 | | |
| 643 | 635 | 6000-0FFF: 4K of RAM (2016 * 2) |
| 644 | 636 | 2000-5FFF: cartridge |
| 645 | 637 | 6000-7FFF: control(W) |
| r253162 | r253163 | |
| 650 | 642 | |
| 651 | 643 | control: (74LS377) |
| 652 | 644 | -------- |
| 653 | | |
| 654 | 645 | Q0-Q3: 7442 A0-A3 |
| 655 | 646 | Q4: enable printer port pin 1 input |
| 656 | 647 | Q5: printer port pin 5 output |
| r253162 | r253163 | |
| 667 | 658 | |
| 668 | 659 | Voice Excellence (FEV, model 6092) |
| 669 | 660 | ---------------------------------- |
| 670 | | |
| 671 | 661 | PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards |
| 672 | 662 | CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6) |
| 673 | 663 | 2 rows of LEDs on the side: 1*8 green, 1*8 red |
| r253162 | r253163 | |
| 713 | 703 | |
| 714 | 704 | // internal artwork |
| 715 | 705 | #include "fidel_cc.lh" |
| 706 | #include "fidel_bcc.lh" |
| 716 | 707 | #include "fidel_vcc.lh" |
| 717 | 708 | #include "fidel_vbrc.lh" |
| 718 | 709 | #include "fidel_vsc.lh" // clickable |
| r253162 | r253163 | |
| 751 | 742 | DECLARE_WRITE8_MEMBER(vcc_ppi_portc_w); |
| 752 | 743 | DECLARE_WRITE8_MEMBER(cc10_ppi_porta_w); |
| 753 | 744 | TIMER_DEVICE_CALLBACK_MEMBER(beeper_off_callback); |
| 745 | |
| 746 | // model BCC |
| 747 | DECLARE_READ8_MEMBER(bcc_input_r); |
| 748 | DECLARE_WRITE8_MEMBER(bcc_control_w); |
| 754 | 749 | |
| 755 | 750 | // model VSC |
| 756 | 751 | void vsc_prepare_display(); |
| r253162 | r253163 | |
| 763 | 758 | DECLARE_READ8_MEMBER(vsc_pio_portb_r); |
| 764 | 759 | DECLARE_WRITE8_MEMBER(vsc_pio_portb_w); |
| 765 | 760 | |
| 766 | | // model 7014 and VBC |
| 761 | // model 7014 and VBRC |
| 767 | 762 | void vbrc_prepare_display(); |
| 768 | 763 | DECLARE_WRITE8_MEMBER(vbrc_speech_w); |
| 769 | 764 | DECLARE_WRITE8_MEMBER(vbrc_mcu_p1_w); |
| r253162 | r253163 | |
| 891 | 886 | m_display_maxy = maxy; |
| 892 | 887 | } |
| 893 | 888 | |
| 889 | void fidelz80base_state::set_display_segmask(UINT32 digits, UINT32 mask) |
| 890 | { |
| 891 | // set a segment mask per selected digit, but leave unselected ones alone |
| 892 | for (int i = 0; i < 0x20; i++) |
| 893 | { |
| 894 | if (digits & 1) |
| 895 | m_display_segmask[i] = mask; |
| 896 | digits >>= 1; |
| 897 | } |
| 898 | } |
| 899 | |
| 894 | 900 | void fidelz80base_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety) |
| 895 | 901 | { |
| 896 | 902 | set_display_size(maxx, maxy); |
| r253162 | r253163 | |
| 939 | 945 | |
| 940 | 946 | void fidelz80_state::vcc_prepare_display() |
| 941 | 947 | { |
| 942 | | // 4 7seg leds |
| 943 | | for (int i = 0; i < 4; i++) |
| 944 | | m_display_segmask[i] = 0x7f; |
| 945 | | |
| 946 | | // note: sel d0 for extra leds |
| 948 | // 4 7seg leds (note: sel d0 for extra leds) |
| 947 | 949 | UINT8 outdata = (m_7seg_data & 0x7f) | (m_led_select << 7 & 0x80); |
| 950 | set_display_segmask(0xf, 0x7f); |
| 948 | 951 | display_matrix(8, 4, outdata, m_led_select >> 2 & 0xf); |
| 949 | 952 | } |
| 950 | 953 | |
| r253162 | r253163 | |
| 1028 | 1031 | |
| 1029 | 1032 | |
| 1030 | 1033 | /****************************************************************************** |
| 1034 | BCC |
| 1035 | ******************************************************************************/ |
| 1036 | |
| 1037 | // TTL |
| 1038 | |
| 1039 | WRITE8_MEMBER(fidelz80_state::bcc_control_w) |
| 1040 | { |
| 1041 | // a0-a2,d7: digit segment data via NE591, Q7 is speaker out |
| 1042 | UINT8 sel = 1 << (offset & 7); |
| 1043 | m_7seg_data = (m_7seg_data & ~sel) | ((data & 0x80) ? sel : 0); |
| 1044 | m_speaker->level_w(m_7seg_data >> 7 & 1); |
| 1045 | |
| 1046 | // d0-d3: led select, input mux |
| 1047 | // d4,d5: check,lose leds(direct) |
| 1048 | set_display_segmask(0xf, 0x7f); |
| 1049 | display_matrix(7, 6, m_7seg_data & 0x7f, data & 0x3f); |
| 1050 | m_inp_mux = data & 0xf; |
| 1051 | } |
| 1052 | |
| 1053 | READ8_MEMBER(fidelz80_state::bcc_input_r) |
| 1054 | { |
| 1055 | // d0-d3: multiplexed inputs |
| 1056 | return read_inputs(4); |
| 1057 | } |
| 1058 | |
| 1059 | |
| 1060 | |
| 1061 | /****************************************************************************** |
| 1031 | 1062 | VSC |
| 1032 | 1063 | ******************************************************************************/ |
| 1033 | 1064 | |
| r253162 | r253163 | |
| 1037 | 1068 | { |
| 1038 | 1069 | // 4 7seg leds + H |
| 1039 | 1070 | for (int i = 0; i < 4; i++) |
| 1040 | | { |
| 1041 | | m_display_segmask[i] = 0x7f; |
| 1042 | 1071 | m_display_state[i] = (m_led_select >> i & 1) ? m_7seg_data : 0; |
| 1043 | | } |
| 1044 | 1072 | |
| 1045 | 1073 | // 8*8 chessboard leds |
| 1046 | 1074 | for (int i = 0; i < 8; i++) |
| 1047 | 1075 | m_display_state[i+4] = (m_led_select >> i & 1) ? m_led_data : 0; |
| 1048 | 1076 | |
| 1049 | 1077 | set_display_size(8, 12); |
| 1078 | set_display_segmask(0xf, 0x7f); |
| 1050 | 1079 | display_update(); |
| 1051 | 1080 | } |
| 1052 | 1081 | |
| r253162 | r253163 | |
| 1127 | 1156 | { |
| 1128 | 1157 | // 14seg led segments, d15 is extra led, d14 is unused (tone on prototype?) |
| 1129 | 1158 | UINT16 outdata = BITSWAP16(m_7seg_data,12,13,1,6,5,2,0,7,15,11,10,14,4,3,9,8); |
| 1130 | | for (int i = 0; i < 8; i++) |
| 1131 | | m_display_segmask[i] = 0x3fff; |
| 1132 | | |
| 1159 | set_display_segmask(0xff, 0x3fff); |
| 1133 | 1160 | display_matrix(16, 8, outdata, m_led_select); |
| 1134 | 1161 | } |
| 1135 | 1162 | |
| r253162 | r253163 | |
| 1181 | 1208 | |
| 1182 | 1209 | static ADDRESS_MAP_START( cc10_map, AS_PROGRAM, 8, fidelz80_state ) |
| 1183 | 1210 | ADDRESS_MAP_UNMAP_HIGH |
| 1211 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 1184 | 1212 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 1185 | | AM_RANGE(0x3000, 0x31ff) AM_RAM |
| 1213 | AM_RANGE(0x3000, 0x31ff) AM_MIRROR(0x0e00) AM_RAM |
| 1186 | 1214 | ADDRESS_MAP_END |
| 1187 | 1215 | |
| 1188 | 1216 | static ADDRESS_MAP_START( vcc_map, AS_PROGRAM, 8, fidelz80_state ) |
| r253162 | r253163 | |
| 1197 | 1225 | ADDRESS_MAP_END |
| 1198 | 1226 | |
| 1199 | 1227 | |
| 1228 | // BCC |
| 1229 | |
| 1230 | static ADDRESS_MAP_START( bcc_map, AS_PROGRAM, 8, fidelz80_state ) |
| 1231 | ADDRESS_MAP_UNMAP_HIGH |
| 1232 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 1233 | AM_RANGE(0x0000, 0x0fff) AM_ROM |
| 1234 | AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0f00) AM_RAM |
| 1235 | ADDRESS_MAP_END |
| 1236 | |
| 1237 | static ADDRESS_MAP_START( bcc_io, AS_IO, 8, fidelz80_state ) |
| 1238 | ADDRESS_MAP_GLOBAL_MASK(0x07) |
| 1239 | AM_RANGE(0x00, 0x07) AM_READWRITE(bcc_input_r, bcc_control_w) |
| 1240 | ADDRESS_MAP_END |
| 1241 | |
| 1242 | |
| 1200 | 1243 | // VSC |
| 1201 | 1244 | |
| 1202 | 1245 | static ADDRESS_MAP_START( vsc_map, AS_PROGRAM, 8, fidelz80_state ) |
| r253162 | r253163 | |
| 1359 | 1402 | INPUT_PORTS_END |
| 1360 | 1403 | |
| 1361 | 1404 | |
| 1405 | static INPUT_PORTS_START( bcc ) |
| 1406 | PORT_START("IN.0") |
| 1407 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) |
| 1408 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_O) |
| 1409 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("d4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) |
| 1410 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) |
| 1411 | |
| 1412 | PORT_START("IN.1") |
| 1413 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) |
| 1414 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P) |
| 1415 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) |
| 1416 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("g7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) |
| 1417 | |
| 1418 | PORT_START("IN.2") |
| 1419 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_SPACE) |
| 1420 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M) |
| 1421 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("b2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B) |
| 1422 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) |
| 1423 | |
| 1424 | PORT_START("IN.3") |
| 1425 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) |
| 1426 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L) |
| 1427 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A) |
| 1428 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E) |
| 1429 | INPUT_PORTS_END |
| 1430 | |
| 1431 | |
| 1362 | 1432 | static INPUT_PORTS_START( vsc ) |
| 1363 | 1433 | PORT_START("IN.0") |
| 1364 | 1434 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Square a1") |
| r253162 | r253163 | |
| 1537 | 1607 | Machine Drivers |
| 1538 | 1608 | ******************************************************************************/ |
| 1539 | 1609 | |
| 1540 | | static MACHINE_CONFIG_START( cc7, fidelz80_state ) |
| 1610 | static MACHINE_CONFIG_START( bcc, fidelz80_state ) |
| 1541 | 1611 | |
| 1542 | 1612 | /* basic machine hardware */ |
| 1543 | 1613 | MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz) |
| 1544 | | MCFG_CPU_PROGRAM_MAP(cc10_map) |
| 1545 | | //MCFG_CPU_IO_MAP(vcc_io) |
| 1614 | MCFG_CPU_PROGRAM_MAP(bcc_map) |
| 1615 | MCFG_CPU_IO_MAP(bcc_io) |
| 1546 | 1616 | |
| 1547 | 1617 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1)) |
| 1548 | | MCFG_DEFAULT_LAYOUT(layout_fidel_cc) |
| 1618 | MCFG_DEFAULT_LAYOUT(layout_fidel_bcc) |
| 1549 | 1619 | |
| 1550 | 1620 | /* sound hardware */ |
| 1551 | 1621 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1552 | | MCFG_SOUND_ADD("beeper", BEEP, 0) |
| 1622 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
| 1553 | 1623 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1554 | 1624 | MACHINE_CONFIG_END |
| 1555 | 1625 | |
| r253162 | r253163 | |
| 1657 | 1727 | ROM Definitions |
| 1658 | 1728 | ******************************************************************************/ |
| 1659 | 1729 | |
| 1660 | | ROM_START( cc7 ) |
| 1730 | ROM_START( cc10 ) |
| 1661 | 1731 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 1662 | | ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332 |
| 1732 | ROM_LOAD( "cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332 |
| 1663 | 1733 | ROM_END |
| 1664 | 1734 | |
| 1665 | | ROM_START( cc10 ) |
| 1735 | ROM_START( cc7 ) |
| 1666 | 1736 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 1667 | | ROM_LOAD( "cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332 |
| 1737 | ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332 |
| 1668 | 1738 | ROM_END |
| 1669 | 1739 | |
| 1670 | 1740 | |
| r253162 | r253163 | |
| 1826 | 1896 | |
| 1827 | 1897 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ |
| 1828 | 1898 | COMP( 1978, cc10, 0, 0, cc10, cc10, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (rev. B)", MACHINE_SUPPORTS_SAVE ) |
| 1829 | | COMP( 1979, cc7, 0, 0, cc7, cc10, driver_device, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) |
| 1899 | COMP( 1979, cc7, 0, 0, bcc, bcc, driver_device, 0, "Fidelity Electronics", "Chess Challenger 7 (rev. B)", MACHINE_SUPPORTS_SAVE ) |
| 1830 | 1900 | |
| 1831 | 1901 | COMP( 1979, vcc, 0, 0, vcc, vcc, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE ) |
| 1832 | 1902 | COMP( 1979, vccsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE ) |