src/mess/drivers/mc10.c
| r6090 | r6091 | |
| 16 | 16 | #include "formats/coco_cas.h" |
| 17 | 17 | #include "devices/messram.h" |
| 18 | 18 | |
| 19 | |
| 19 | 20 | /*************************************************************************** |
| 20 | 21 | TYPE DEFINITIONS |
| 21 | 22 | ***************************************************************************/ |
| r6090 | r6091 | |
| 27 | 28 | const device_config *dac; |
| 28 | 29 | const device_config *cassette; |
| 29 | 30 | |
| 31 | UINT8 *ram; |
| 32 | UINT32 ram_size; |
| 33 | |
| 30 | 34 | UINT8 keyboard_strobe; |
| 31 | 35 | }; |
| 32 | 36 | |
| r6090 | r6091 | |
| 122 | 126 | |
| 123 | 127 | static READ8_DEVICE_HANDLER( mc10_mc6847_videoram_r ) |
| 124 | 128 | { |
| 125 | | mc6847_inv_w(device, BIT(messram_get_ptr(devtag_get_device(device->machine, "messram"))[offset], 6)); |
| 126 | | mc6847_as_w(device, BIT(messram_get_ptr(devtag_get_device(device->machine, "messram"))[offset], 7)); |
| 129 | mc10_state *mc10 = device->machine->driver_data; |
| 127 | 130 | |
| 128 | | return messram_get_ptr(devtag_get_device(device->machine, "messram"))[offset]; |
| 131 | mc6847_inv_w(device, BIT(mc10->ram[offset], 6)); |
| 132 | mc6847_as_w(device, BIT(mc10->ram[offset], 7)); |
| 133 | |
| 134 | return mc10->ram[offset]; |
| 129 | 135 | } |
| 130 | 136 | |
| 131 | 137 | static VIDEO_UPDATE( mc10 ) |
| r6090 | r6091 | |
| 153 | 159 | mc10->cassette = devtag_get_device(machine, "cassette"); |
| 154 | 160 | |
| 155 | 161 | /* initialize memory */ |
| 156 | | memory_set_bankptr(machine, 1, messram_get_ptr(devtag_get_device(machine, "messram"))); |
| 162 | mc10->ram = messram_get_ptr(devtag_get_device(machine, "messram")); |
| 163 | mc10->ram_size = messram_get_size(devtag_get_device(machine, "messram")); |
| 157 | 164 | |
| 165 | memory_set_bankptr(machine, 1, mc10->ram); |
| 166 | |
| 158 | 167 | /* initialize memory expansion */ |
| 159 | | if (messram_get_size(devtag_get_device(machine, "messram")) == 20*1024) |
| 160 | | memory_set_bankptr(machine, 2, messram_get_ptr(devtag_get_device(machine, "messram")) + 0x1000); |
| 168 | if (mc10->ram_size == 20*1024) |
| 169 | memory_set_bankptr(machine, 2, mc10->ram + 0x1000); |
| 161 | 170 | else |
| 162 | 171 | memory_install_readwrite8_handler(prg, 0x5000, 0x8fff, 0, 0, SMH_NOP, SMH_NOP); |
| 163 | 172 | |
| r6090 | r6091 | |
| 415 | 424 | MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) |
| 416 | 425 | |
| 417 | 426 | MDRV_CASSETTE_ADD("cassette", mc10_cassette_config) |
| 418 | | |
| 427 | |
| 419 | 428 | /* internal ram */ |
| 420 | 429 | MDRV_RAM_ADD("messram") |
| 421 | 430 | MDRV_RAM_DEFAULT_SIZE("20K") |
| 422 | | MDRV_RAM_EXTRA_OPTIONS("4K") |
| 431 | MDRV_RAM_EXTRA_OPTIONS("4K") |
| 423 | 432 | MACHINE_DRIVER_END |
| 424 | 433 | |
| 425 | 434 | |