trunk/src/mame/drivers/fidel6502.cpp
r253039 | r253040 | |
45 | 45 | optional_device<generic_slot_device> m_cart; |
46 | 46 | optional_device<speaker_sound_device> m_speaker; |
47 | 47 | optional_device<timer_device> m_irq_off; |
48 | | |
| 48 | |
49 | 49 | // model CSC |
| 50 | void csc_update_7442(); |
50 | 51 | void csc_prepare_display(); |
51 | 52 | DECLARE_READ8_MEMBER(csc_speech_r); |
52 | 53 | DECLARE_WRITE8_MEMBER(csc_pia0_pa_w); |
r253039 | r253040 | |
80 | 81 | |
81 | 82 | // misc handlers |
82 | 83 | |
| 84 | void fidel6502_state::csc_update_7442() |
| 85 | { |
| 86 | // 7442 0-8: led select, input mux |
| 87 | m_inp_mux = 1 << m_led_select & 0x3ff; |
| 88 | |
| 89 | // 7442 9: buzzer speaker out |
| 90 | m_speaker->level_w(m_inp_mux >> 9 & 1); |
| 91 | } |
| 92 | |
83 | 93 | void fidel6502_state::csc_prepare_display() |
84 | 94 | { |
85 | | // 7442 output, also update input mux (9 is unused) |
86 | | m_inp_mux = (1 << m_led_select) & 0x1ff; |
| 95 | csc_update_7442(); |
87 | 96 | |
88 | 97 | // 4 7seg leds + H |
89 | 98 | for (int i = 0; i < 4; i++) |
r253039 | r253040 | |
126 | 135 | |
127 | 136 | // d1: TSI START line |
128 | 137 | m_speech->start_w(data >> 1 & 1); |
129 | | |
130 | | // d4: tone line |
131 | | m_speaker->level_w(data >> 4 & 1); |
| 138 | |
| 139 | // d4: lower TSI volume |
| 140 | m_speech->set_output_gain(0, (data & 0x10) ? 0.5 : 1.0); |
132 | 141 | } |
133 | 142 | |
134 | 143 | READ8_MEMBER(fidel6502_state::csc_pia0_pb_r) |
trunk/src/mame/drivers/fidelz80.cpp
r253039 | r253040 | |
366 | 366 | PA7 - 7seg segments A |
367 | 367 | |
368 | 368 | PB0 - A12 on speech ROM (if used... not used on this model, ROM is 4K) |
369 | | PB1 - START line on S14001A |
| 369 | PB1 - START line on TSI |
370 | 370 | PB2 - white wire |
371 | | PB3 - BUSY line from S14001A |
372 | | PB4 - Tone line (toggle to make a tone in the speaker) |
| 371 | PB3 - BUSY line from TSI |
| 372 | PB4 - hi/lo TSI speaker volume |
373 | 373 | PB5 - button row 9 |
374 | 374 | PB6 - selection jumper (resistor to 5V) |
375 | 375 | PB7 - selection jumper (resistor to ground) |
r253039 | r253040 | |
422 | 422 | 6 - LED column G, button column G |
423 | 423 | 7 - LED column H, button column H |
424 | 424 | 8 - button column I |
425 | | 9 - |
| 425 | 9 - Tone line (toggle to make a tone in the buzzer) |
426 | 426 | |
427 | 427 | The rows/columns are indicated on the game board: |
428 | 428 | |
r253039 | r253040 | |
593 | 593 | |
594 | 594 | PB.0 - button column I |
595 | 595 | PB.1 - button column J |
596 | | PB.2 - Tone line (toggle to make tone in the speaker) |
| 596 | PB.2 - hi/lo TSI speaker volume |
597 | 597 | PB.3 - violet wire |
598 | 598 | PB.4 - white wire (and TSI BUSY line) |
599 | 599 | PB.5 - selection jumper input (see below) |
r253039 | r253040 | |
703 | 703 | #include "machine/i8255.h" |
704 | 704 | #include "machine/i8243.h" |
705 | 705 | #include "machine/z80pio.h" |
706 | | #include "sound/speaker.h" |
707 | 706 | #include "sound/beep.h" |
708 | 707 | |
709 | 708 | #include "includes/fidelz80.h" |
r253039 | r253040 | |
724 | 723 | m_z80pio(*this, "z80pio"), |
725 | 724 | m_ppi8255(*this, "ppi8255"), |
726 | 725 | m_i8243(*this, "i8243"), |
727 | | m_speaker(*this, "speaker"), |
728 | 726 | m_beeper_off(*this, "beeper_off"), |
729 | 727 | m_beeper(*this, "beeper") |
730 | 728 | { } |
r253039 | r253040 | |
734 | 732 | optional_device<z80pio_device> m_z80pio; |
735 | 733 | optional_device<i8255_device> m_ppi8255; |
736 | 734 | optional_device<i8243_device> m_i8243; |
737 | | optional_device<speaker_sound_device> m_speaker; |
738 | 735 | optional_device<timer_device> m_beeper_off; |
739 | 736 | optional_device<beep_device> m_beeper; |
740 | 737 | |
r253039 | r253040 | |
1102 | 1099 | // d0,d1: input mux highest bits |
1103 | 1100 | m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300); |
1104 | 1101 | |
1105 | | // d2: tone line |
1106 | | m_speaker->level_w(data >> 2 & 1); |
1107 | | |
1108 | 1102 | // d6: TSI START line |
1109 | 1103 | m_speech->start_w(data >> 6 & 1); |
| 1104 | |
| 1105 | // d2: lower TSI volume |
| 1106 | m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0); |
1110 | 1107 | } |
1111 | 1108 | |
1112 | 1109 | |
r253039 | r253040 | |
1274 | 1271 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_E) |
1275 | 1272 | |
1276 | 1273 | PORT_START("IN.1") |
1277 | | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_Z) |
| 1274 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE) |
1278 | 1275 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M) |
1279 | 1276 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_B) |
1280 | 1277 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F) |
r253039 | r253040 | |
1541 | 1538 | MCFG_SPEAKER_STANDARD_MONO("mono") |
1542 | 1539 | MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz |
1543 | 1540 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
1544 | | |
1545 | | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
1546 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
1547 | 1541 | MACHINE_CONFIG_END |
1548 | 1542 | |
1549 | 1543 | static MACHINE_CONFIG_START( vbrc, fidelz80_state ) |