src/mess/machine/mz700.c
| r5270 | r5271 | |
| 408 | 408 | /************************ PIT ************************************************/ |
| 409 | 409 | |
| 410 | 410 | /* Timer 0 is the clock for the speaker output */ |
| 411 | static UINT8 speaker_level = 0; |
| 412 | static UINT8 prev_state = 0; |
| 413 | |
| 411 | 414 | static PIT8253_OUTPUT_CHANGED( pit_out0_changed ) |
| 412 | 415 | { |
| 413 | 416 | const device_config *speaker = devtag_get_device(device->machine, "speaker"); |
| 414 | | speaker_level_w(speaker, state ? 1 : 0); |
| 417 | if((prev_state==0) && (state==1)) { |
| 418 | speaker_level ^= 1; |
| 419 | } |
| 420 | prev_state = state; |
| 421 | speaker_level_w( speaker, speaker_level); |
| 415 | 422 | } |
| 416 | 423 | |
| 417 | 424 | |
src/mess/machine/mz80.c
| r5270 | r5271 | |
| 13 | 13 | #include "sound/speaker.h" |
| 14 | 14 | #include "includes/mz80.h" |
| 15 | 15 | |
| 16 | | static UINT8 mz80k_tempo_strobe = 0; |
| 16 | UINT8 mz80k_tempo_strobe = 0; |
| 17 | 17 | static UINT8 mz80k_8255_portc = 0; |
| 18 | 18 | UINT8 mz80k_vertical = 0; |
| 19 | 19 | UINT8 mz80k_cursor_cnt = 0; |
| r5270 | r5271 | |
| 25 | 25 | { |
| 26 | 26 | } |
| 27 | 27 | |
| 28 | | |
| 29 | 28 | MACHINE_RESET( mz80k ) |
| 30 | 29 | { |
| 31 | 30 | mz80k_tempo_strobe = 0; |
| r5270 | r5271 | |
| 69 | 68 | // logerror("mz80k_8255_portc_w %02x\n",data); |
| 70 | 69 | } |
| 71 | 70 | |
| 71 | static UINT8 speaker_level = 0; |
| 72 | static UINT8 prev_state = 0; |
| 72 | 73 | static PIT8253_OUTPUT_CHANGED( pit_out0_changed ) |
| 73 | 74 | { |
| 74 | 75 | const device_config *speaker = devtag_get_device(device->machine, "speaker"); |
| 75 | | speaker_level_w( speaker, state ? 1 : 0 ); |
| 76 | if((prev_state==0) && (state==1)) { |
| 77 | speaker_level ^= 1; |
| 78 | } |
| 79 | prev_state = state; |
| 80 | speaker_level_w( speaker, speaker_level); |
| 76 | 81 | } |
| 77 | 82 | |
| 78 | 83 | |
| r5270 | r5271 | |
| 100 | 105 | const struct pit8253_config mz80k_pit8253_config = |
| 101 | 106 | { |
| 102 | 107 | { |
| 103 | | /* clockin irq callback */ |
| 104 | | { 1108800.0, pit_out0_changed }, |
| 105 | | { 15611.0, pit_out1_changed }, |
| 106 | | { 0, pit_out2_changed }, |
| 108 | /* clockin irq callback */ |
| 109 | { XTAL_8MHz/ 4, pit_out0_changed }, |
| 110 | { XTAL_8MHz/256, pit_out1_changed }, |
| 111 | { 0, pit_out2_changed }, |
| 107 | 112 | } |
| 108 | 113 | }; |
| 109 | 114 | |
| 110 | 115 | READ8_HANDLER(mz80k_strobe_r) |
| 111 | 116 | { |
| 112 | | mz80k_tempo_strobe^=1; |
| 113 | 117 | return(0x7e | mz80k_tempo_strobe); |
| 114 | 118 | } |
| 115 | 119 | WRITE8_HANDLER(mz80k_strobe_w) |
| 116 | 120 | { |
| 121 | const device_config *pit = devtag_get_device(space->machine, "pit8253"); |
| 122 | pit8253_gate_w(pit,0,data); |
| 117 | 123 | } |
| 118 | 124 | |
src/mess/drivers/mz80.c
| r5270 | r5271 | |
| 231 | 231 | AM_RANGE(0xd000, 0xd3ff) AM_RAM // Video RAM |
| 232 | 232 | AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255", i8255a_r, i8255a_w) /* PPIA 8255 */ |
| 233 | 233 | AM_RANGE(0xe004, 0xe007) AM_DEVREADWRITE("pit8253", pit8253_r,pit8253_w) /* PIT 8253 */ |
| 234 | | AM_RANGE(0xe008, 0xe008) AM_READWRITE( mz80k_strobe_r, mz80k_strobe_w) |
| 234 | AM_RANGE(0xe008, 0xe00b) AM_READWRITE( mz80k_strobe_r, mz80k_strobe_w) |
| 235 | 235 | AM_RANGE(0xf000, 0xf3ff) AM_ROM |
| 236 | 236 | ADDRESS_MAP_END |
| 237 | 237 | |
| r5270 | r5271 | |
| 255 | 255 | CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED |
| 256 | 256 | }; |
| 257 | 257 | |
| 258 | static TIMER_DEVICE_CALLBACK( ne555_tempo_callback ) |
| 259 | { |
| 260 | mz80k_tempo_strobe ^= 1; |
| 261 | } |
| 262 | |
| 258 | 263 | static MACHINE_DRIVER_START( mz80k ) |
| 259 | 264 | /* basic machine hardware */ |
| 260 | 265 | |
| 261 | 266 | /* main CPU */ |
| 262 | | MDRV_CPU_ADD("maincpu", Z80, 2000000) /* 2 MHz */ |
| 267 | MDRV_CPU_ADD("maincpu", Z80, XTAL_8MHz / 4) /* 2 MHz */ |
| 263 | 268 | MDRV_CPU_PROGRAM_MAP(mz80k_mem) |
| 264 | 269 | MDRV_CPU_IO_MAP(mz80k_io) |
| 265 | 270 | |
| r5270 | r5271 | |
| 289 | 294 | MDRV_SOUND_ADD("speaker", SPEAKER, 0) |
| 290 | 295 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 291 | 296 | |
| 297 | MDRV_TIMER_ADD_PERIODIC("tempo", ne555_tempo_callback, HZ(24)) // 33.5Hz - 34.3Hz |
| 298 | |
| 292 | 299 | MDRV_CASSETTE_ADD( "cassette", mz80k_cassette_config ) |
| 293 | 300 | MACHINE_DRIVER_END |
| 294 | 301 | |