trunk/src/mess/machine/nc.c
| r32600 | r32601 | |
| 12 | 12 | /* PCMCIA Ram Card management */ |
| 13 | 13 | |
| 14 | 14 | /* the data is stored as a simple memory dump, there is no header or other information */ |
| 15 | | |
| 16 | 15 | /* stores size of actual file on filesystem */ |
| 17 | 16 | |
| 18 | | /* save card data back */ |
| 19 | | void nc_state::nc_card_save(device_image_interface &image) |
| 20 | | { |
| 21 | | /* if there is no data to write, quit */ |
| 22 | | if (!m_card_ram || !m_card_size) |
| 23 | | return; |
| 24 | 17 | |
| 25 | | logerror("attempting card save\n"); |
| 18 | /* this is not a real register, it is used to record card status */ |
| 19 | /* ==0, card not inserted, !=0 card is inserted */ |
| 26 | 20 | |
| 27 | | /* write data */ |
| 28 | | image.fwrite(m_card_ram, m_card_size); |
| 29 | | |
| 30 | | logerror("write succeeded!\r\n"); |
| 21 | // set pcmcia card present state |
| 22 | void nc_state::set_card_present_state(int state) |
| 23 | { |
| 24 | m_card_status = state; |
| 31 | 25 | } |
| 32 | 26 | |
| 33 | | /* this mask will prevent overwrites from end of data */ |
| 34 | | int nc_state::nc_card_calculate_mask(int size) |
| 35 | | { |
| 36 | | int i; |
| 37 | 27 | |
| 28 | // this mask will prevent overwrites from end of data |
| 29 | int nc_state::card_calculate_mask(int size) |
| 30 | { |
| 38 | 31 | /* memory block is visible as 16k blocks */ |
| 39 | 32 | /* mask can only operate on power of two sizes */ |
| 40 | 33 | /* memory cards normally in power of two sizes */ |
| 41 | 34 | /* maximum of 64 16k blocks can be accessed using memory paging of nc computer */ |
| 42 | 35 | /* max card size is therefore 1mb */ |
| 43 | | for (i=14; i<20; i++) |
| 36 | for (int i = 14; i < 20; i++) |
| 44 | 37 | { |
| 45 | | if (size<(1<<i)) |
| 46 | | return 0x03f>>(19-i); |
| 38 | if (size < (1 << i)) |
| 39 | return 0x03f >> (19 - i); |
| 47 | 40 | } |
| 48 | 41 | |
| 49 | 42 | return 0x03f; |
| 50 | 43 | } |
| 51 | 44 | |
| 52 | 45 | |
| 53 | | /* load card image */ |
| 54 | | int nc_state::nc_card_load(device_image_interface &image, unsigned char **ptr) |
| 46 | // load pcmcia card data |
| 47 | DEVICE_IMAGE_LOAD_MEMBER( nc_state, nc_pcmcia_card ) |
| 55 | 48 | { |
| 56 | | int datasize; |
| 57 | | unsigned char *data; |
| 49 | UINT32 size = m_card->common_get_size("rom"); |
| 58 | 50 | |
| 59 | | /* get file size */ |
| 60 | | datasize = image.length(); |
| 51 | m_card->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); |
| 52 | m_card->common_load_rom(m_card->get_rom_base(), size, "rom"); |
| 61 | 53 | |
| 62 | | if (datasize!=0) |
| 63 | | { |
| 64 | | /* alloc memory for this data */ |
| 65 | | data = global_alloc_array(unsigned char, datasize); |
| 54 | set_card_present_state(1); |
| 55 | m_membank_card_ram_mask = card_calculate_mask(size); |
| 66 | 56 | |
| 67 | | if (data!=NULL) |
| 68 | | { |
| 69 | | m_card_size = datasize; |
| 70 | | |
| 71 | | /* read whole file */ |
| 72 | | image.fread(data, datasize); |
| 73 | | |
| 74 | | *ptr = data; |
| 75 | | |
| 76 | | logerror("File loaded!\r\n"); |
| 77 | | |
| 78 | | m_membank_card_ram_mask = nc_card_calculate_mask(datasize); |
| 79 | | |
| 80 | | logerror("Mask: %02x\n",m_membank_card_ram_mask); |
| 81 | | |
| 82 | | /* ok! */ |
| 83 | | return 1; |
| 84 | | } |
| 85 | | } |
| 86 | | |
| 87 | | return 0; |
| 57 | return IMAGE_INIT_PASS; |
| 88 | 58 | } |
| 89 | 59 | |
| 90 | 60 | |
| 91 | | DRIVER_INIT_MEMBER( nc_state, nc ) |
| 61 | // save pcmcia card data back |
| 62 | DEVICE_IMAGE_UNLOAD_MEMBER( nc_state, nc_pcmcia_card ) |
| 92 | 63 | { |
| 93 | | /* card not present */ |
| 94 | | nc_set_card_present_state(0); |
| 95 | | /* card ram NULL */ |
| 96 | | m_card_ram = NULL; |
| 64 | // if there is no data to write, quit |
| 65 | if (!m_card_size) |
| 66 | return; |
| 67 | |
| 68 | logerror("attempting card save\n"); |
| 69 | |
| 70 | // write data |
| 71 | image.fwrite(m_card_ram, m_card_size); |
| 72 | |
| 73 | logerror("write succeeded!\r\n"); |
| 74 | |
| 75 | // set card not present state |
| 76 | set_card_present_state(0); |
| 97 | 77 | m_card_size = 0; |
| 98 | 78 | } |
| 99 | 79 | |
| 100 | | |
| 101 | | /* load pcmcia card */ |
| 102 | | DEVICE_IMAGE_LOAD_MEMBER( nc_state, nc_pcmcia_card ) |
| 80 | DRIVER_INIT_MEMBER( nc_state, nc ) |
| 103 | 81 | { |
| 104 | | /* filename specified */ |
| 105 | | |
| 106 | | /* attempt to load file */ |
| 107 | | if (nc_card_load(image, &m_card_ram)) |
| 108 | | { |
| 109 | | if (m_card_ram!=NULL) |
| 110 | | { |
| 111 | | /* card present! */ |
| 112 | | if (m_membank_card_ram_mask!=0) |
| 113 | | { |
| 114 | | nc_set_card_present_state(1); |
| 115 | | } |
| 116 | | return IMAGE_INIT_PASS; |
| 117 | | } |
| 118 | | } |
| 119 | | |
| 120 | | /* nc100 can run without a image */ |
| 121 | | return IMAGE_INIT_FAIL; |
| 122 | | } |
| 123 | | |
| 124 | | |
| 125 | | DEVICE_IMAGE_UNLOAD_MEMBER( nc_state, nc_pcmcia_card ) |
| 126 | | { |
| 127 | | /* save card data if there is any */ |
| 128 | | nc_card_save(image); |
| 129 | | |
| 130 | | /* free ram allocated to card */ |
| 131 | | if (m_card_ram!=NULL) |
| 132 | | { |
| 133 | | global_free_array(m_card_ram); |
| 134 | | m_card_ram = NULL; |
| 135 | | } |
| 82 | // set card not present state |
| 83 | set_card_present_state(0); |
| 136 | 84 | m_card_size = 0; |
| 137 | | |
| 138 | | /* set card not present state */ |
| 139 | | nc_set_card_present_state(0); |
| 140 | 85 | } |
| 86 | |
trunk/src/mess/machine/primo.c
| r32600 | r32601 | |
| 21 | 21 | /* Devices */ |
| 22 | 22 | #include "imagedev/cassette.h" |
| 23 | 23 | #include "imagedev/snapquik.h" |
| 24 | | #include "imagedev/cartslot.h" |
| 25 | 24 | |
| 26 | 25 | |
| 27 | 26 | |
| r32600 | r32601 | |
| 50 | 49 | { |
| 51 | 50 | case 0x00: /* Original ROM */ |
| 52 | 51 | space.unmap_write(0x0000, 0x3fff); |
| 53 | | membank("bank1")->set_base(memregion("maincpu")->base()+0x10000); |
| 52 | membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000); |
| 54 | 53 | break; |
| 55 | 54 | case 0x01: /* EPROM extension 1 */ |
| 56 | 55 | space.unmap_write(0x0000, 0x3fff); |
| 57 | | membank("bank1")->set_base(memregion("maincpu")->base()+0x14000); |
| 56 | membank("bank1")->set_base(m_cart2_rom->base()); |
| 58 | 57 | break; |
| 59 | 58 | case 0x02: /* RAM */ |
| 60 | 59 | space.install_write_bank(0x0000, 0x3fff, "bank1"); |
| r32600 | r32601 | |
| 62 | 61 | break; |
| 63 | 62 | case 0x03: /* EPROM extension 2 */ |
| 64 | 63 | space.unmap_write(0x0000, 0x3fff); |
| 65 | | membank("bank1")->set_base(memregion("maincpu")->base()+0x18000); |
| 64 | membank("bank1")->set_base(m_cart1_rom->base()); |
| 66 | 65 | break; |
| 67 | 66 | } |
| 68 | 67 | logerror ("Memory update: %02x\n", m_port_FD); |
| r32600 | r32601 | |
| 241 | 240 | machine().device("maincpu")->set_clock_scale(ioport("CPU_CLOCK")->read() ? 1.5 : 1.0); |
| 242 | 241 | } |
| 243 | 242 | |
| 243 | void primo_state::machine_start() |
| 244 | { |
| 245 | astring region_tag; |
| 246 | m_cart1_rom = memregion(region_tag.cpy(m_cart1->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 247 | m_cart2_rom = memregion(region_tag.cpy(m_cart2->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 248 | } |
| 249 | |
| 244 | 250 | void primo_state::machine_reset() |
| 245 | 251 | { |
| 246 | 252 | primo_common_machine_init(); |
| r32600 | r32601 | |
| 262 | 268 | |
| 263 | 269 | void primo_state::primo_setup_pss (UINT8* snapshot_data, UINT32 snapshot_size) |
| 264 | 270 | { |
| 265 | | int i; |
| 266 | | |
| 267 | 271 | /* Z80 registers */ |
| 268 | | |
| 269 | 272 | m_maincpu->set_state_int(Z80_BC, snapshot_data[4] + snapshot_data[5]*256); |
| 270 | 273 | m_maincpu->set_state_int(Z80_DE, snapshot_data[6] + snapshot_data[7]*256); |
| 271 | 274 | m_maincpu->set_state_int(Z80_HL, snapshot_data[8] + snapshot_data[9]*256); |
| r32600 | r32601 | |
| 292 | 295 | |
| 293 | 296 | |
| 294 | 297 | /* memory */ |
| 295 | | |
| 296 | | for (i=0; i<0xc000; i++) |
| 297 | | m_maincpu->space(AS_PROGRAM).write_byte( i+0x4000, snapshot_data[i+38]); |
| 298 | for (int i = 0; i < 0xc000; i++) |
| 299 | m_maincpu->space(AS_PROGRAM).write_byte(i + 0x4000, snapshot_data[i + 38]); |
| 298 | 300 | } |
| 299 | 301 | |
| 300 | 302 | SNAPSHOT_LOAD_MEMBER( primo_state, primo ) |
| r32600 | r32601 | |
| 323 | 325 | *******************************************************************************/ |
| 324 | 326 | |
| 325 | 327 | |
| 326 | | void primo_state::primo_setup_pp (UINT8* quickload_data, UINT32 quickload_size) |
| 328 | void primo_state::primo_setup_pp(UINT8* quickload_data, UINT32 quickload_size) |
| 327 | 329 | { |
| 328 | | int i; |
| 329 | | |
| 330 | 330 | UINT16 load_addr; |
| 331 | 331 | UINT16 start_addr; |
| 332 | 332 | |
| 333 | 333 | load_addr = quickload_data[0] + quickload_data[1]*256; |
| 334 | 334 | start_addr = quickload_data[2] + quickload_data[3]*256; |
| 335 | 335 | |
| 336 | | for (i=4; i<quickload_size; i++) |
| 336 | for (int i = 4; i < quickload_size; i++) |
| 337 | 337 | m_maincpu->space(AS_PROGRAM).write_byte(start_addr+i-4, quickload_data[i]); |
| 338 | 338 | |
| 339 | 339 | m_maincpu->set_state_int(Z80_PC, start_addr); |
trunk/src/mess/machine/electron.c
| r32600 | r32601 | |
| 129 | 129 | READ8_MEMBER(electron_state::electron_read_keyboard) |
| 130 | 130 | { |
| 131 | 131 | UINT8 data = 0; |
| 132 | | int i; |
| 133 | | static const char *const keynames[] = { |
| 134 | | "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", |
| 135 | | "LINE7", "LINE8", "LINE9", "LINE10", "LINE11", "LINE12", "LINE13" |
| 136 | | }; |
| 137 | 132 | |
| 138 | 133 | //logerror( "PC=%04x: keyboard read from paged rom area, address: %04x", activecpu_get_pc(), offset ); |
| 139 | | for( i = 0; i < 14; i++ ) |
| 134 | for (int i = 0; i < 14; i++) |
| 140 | 135 | { |
| 141 | | if( !(offset & 1) ) |
| 142 | | data |= ioport(keynames[i])->read() & 0x0f; |
| 136 | if (!(offset & 1)) |
| 137 | data |= m_keybd[i]->read() & 0x0f; |
| 143 | 138 | |
| 144 | 139 | offset = offset >> 1; |
| 145 | 140 | } |
| r32600 | r32601 | |
| 349 | 344 | } |
| 350 | 345 | |
| 351 | 346 | void electron_state::machine_start() |
| 352 | | { |
| 353 | | membank("bank2")->configure_entries(0, 16, memregion("user1")->base(), 0x4000); |
| 347 | { |
| 348 | UINT8 *lo_rom, *up_rom; |
| 349 | astring region_tag; |
| 350 | memory_region *cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 354 | 351 | |
| 352 | if (cart_rom) |
| 353 | up_rom = cart_rom->base(); |
| 354 | else |
| 355 | up_rom = memregion("user1")->base() + 12 * 0x4000; |
| 356 | if (cart_rom && cart_rom->bytes() > 0x4000) |
| 357 | lo_rom = cart_rom->base() + 0x4000; |
| 358 | else |
| 359 | lo_rom = memregion("user1")->base(); |
| 360 | |
| 361 | membank("bank2")->configure_entries(0, 1, lo_rom, 0x4000); |
| 362 | membank("bank2")->configure_entries(1, 11, memregion("user1")->base() + 0x04000, 0x4000); |
| 363 | membank("bank2")->configure_entries(12, 1, up_rom, 0x4000); |
| 364 | membank("bank2")->configure_entries(13, 3, memregion("user1")->base() + 0x34000, 0x4000); |
| 365 | |
| 355 | 366 | m_ula.interrupt_status = 0x82; |
| 356 | 367 | m_ula.interrupt_control = 0x00; |
| 357 | 368 | timer_set(attotime::zero, TIMER_SETUP_BEEP); |
| r32600 | r32601 | |
| 360 | 371 | |
| 361 | 372 | DEVICE_IMAGE_LOAD_MEMBER( electron_state, electron_cart ) |
| 362 | 373 | { |
| 363 | | UINT8 *user1 = memregion("user1")->base() + 0x4000; |
| 364 | | |
| 365 | 374 | if (image.software_entry() == NULL) |
| 366 | 375 | { |
| 367 | 376 | UINT32 filesize = image.length(); |
| 368 | 377 | |
| 369 | | if ( filesize != 16384 ) |
| 378 | if (filesize != 16384) |
| 370 | 379 | { |
| 371 | | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size. Only size 16384 is supported"); |
| 380 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size: Only size 16384 is supported"); |
| 372 | 381 | return IMAGE_INIT_FAIL; |
| 373 | 382 | } |
| 374 | 383 | |
| 375 | | if (image.fread( user1 + 12 * 16384, filesize) != filesize) |
| 384 | m_cart->rom_alloc(filesize, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); |
| 385 | image.fread(m_cart->get_rom_base(), filesize); |
| 386 | return IMAGE_INIT_PASS; |
| 387 | } |
| 388 | else |
| 389 | { |
| 390 | int upsize = image.get_software_region_length("uprom"); |
| 391 | int losize = image.get_software_region_length("lorom"); |
| 392 | |
| 393 | if (upsize != 16384 && upsize != 0) |
| 376 | 394 | { |
| 377 | | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Error loading file"); |
| 395 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size for uprom"); |
| 378 | 396 | return IMAGE_INIT_FAIL; |
| 379 | 397 | } |
| 398 | |
| 399 | if (losize != 16384 && losize != 0) |
| 400 | { |
| 401 | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size for lorom"); |
| 402 | return IMAGE_INIT_FAIL; |
| 403 | } |
| 380 | 404 | |
| 381 | | return IMAGE_INIT_PASS; |
| 382 | | } |
| 405 | m_cart->rom_alloc(upsize + losize, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); |
| 383 | 406 | |
| 384 | | int upsize = image.get_software_region_length("uprom"); |
| 385 | | int losize = image.get_software_region_length("lorom"); |
| 407 | if (upsize) |
| 408 | memcpy(m_cart->get_rom_base(), image.get_software_region("uprom"), upsize); |
| 409 | |
| 410 | if (losize) |
| 411 | memcpy(m_cart->get_rom_base() + upsize, image.get_software_region("lorom"), losize); |
| 386 | 412 | |
| 387 | | if ( upsize != 16384 && upsize != 0 ) |
| 388 | | { |
| 389 | | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size for uprom"); |
| 390 | | return IMAGE_INIT_FAIL; |
| 413 | return IMAGE_INIT_PASS; |
| 391 | 414 | } |
| 392 | | |
| 393 | | if ( losize != 16384 && losize != 0 ) |
| 394 | | { |
| 395 | | image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size for lorom"); |
| 396 | | return IMAGE_INIT_FAIL; |
| 397 | | } |
| 398 | | |
| 399 | | if ( upsize ) |
| 400 | | { |
| 401 | | memcpy( user1 + 12 * 16384, image.get_software_region("uprom"), upsize ); |
| 402 | | } |
| 403 | | |
| 404 | | if ( losize ) |
| 405 | | { |
| 406 | | memcpy( user1 + 0 * 16384, image.get_software_region("lorom"), losize ); |
| 407 | | } |
| 408 | | |
| 409 | | return IMAGE_INIT_PASS; |
| 410 | 415 | } |
trunk/src/mess/includes/primo.h
| r32600 | r32601 | |
| 8 | 8 | #define PRIMO_H_ |
| 9 | 9 | |
| 10 | 10 | #include "imagedev/snapquik.h" |
| 11 | #include "imagedev/cassette.h" |
| 11 | 12 | #include "bus/cbmiec/cbmiec.h" |
| 12 | 13 | #include "sound/speaker.h" |
| 13 | | #include "imagedev/cassette.h" |
| 14 | 14 | |
| 15 | #include "bus/generic/slot.h" |
| 16 | #include "bus/generic/carts.h" |
| 17 | |
| 15 | 18 | class primo_state : public driver_device |
| 16 | 19 | { |
| 17 | 20 | public: |
| 18 | 21 | primo_state(const machine_config &mconfig, device_type type, const char *tag) |
| 19 | 22 | : driver_device(mconfig, type, tag), |
| 23 | m_maincpu(*this, "maincpu"), |
| 20 | 24 | m_iec(*this, CBM_IEC_TAG), |
| 21 | | m_maincpu(*this, "maincpu"), |
| 22 | 25 | m_speaker(*this, "speaker"), |
| 23 | | m_cassette(*this, "cassette") { } |
| 26 | m_cassette(*this, "cassette"), |
| 27 | m_cart1(*this, "cartslot1"), |
| 28 | m_cart2(*this, "cartslot2") |
| 29 | { } |
| 24 | 30 | |
| 31 | required_device<cpu_device> m_maincpu; |
| 25 | 32 | required_device<cbm_iec_device> m_iec; |
| 33 | required_device<speaker_sound_device> m_speaker; |
| 34 | required_device<cassette_image_device> m_cassette; |
| 35 | required_device<generic_slot_device> m_cart1; |
| 36 | required_device<generic_slot_device> m_cart2; |
| 26 | 37 | |
| 38 | memory_region *m_cart1_rom; |
| 39 | memory_region *m_cart2_rom; |
| 40 | |
| 27 | 41 | UINT16 m_video_memory_base; |
| 28 | 42 | UINT8 m_port_FD; |
| 29 | 43 | int m_nmi; |
| r32600 | r32601 | |
| 36 | 50 | DECLARE_DRIVER_INIT(primo64); |
| 37 | 51 | DECLARE_DRIVER_INIT(primo32); |
| 38 | 52 | virtual void machine_reset(); |
| 53 | virtual void machine_start(); |
| 39 | 54 | DECLARE_MACHINE_RESET(primob); |
| 40 | 55 | UINT32 screen_update_primo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 41 | 56 | INTERRUPT_GEN_MEMBER(primo_vblank_interrupt); |
| 42 | | required_device<cpu_device> m_maincpu; |
| 43 | | required_device<speaker_sound_device> m_speaker; |
| 44 | | required_device<cassette_image_device> m_cassette; |
| 45 | 57 | void primo_draw_scanline(bitmap_ind16 &bitmap, int primo_scanline); |
| 46 | 58 | void primo_update_memory(); |
| 47 | 59 | void primo_common_driver_init (primo_state *state); |
trunk/src/mess/includes/kyocera.h
| r32600 | r32601 | |
| 8 | 8 | |
| 9 | 9 | #include "bus/rs232/rs232.h" |
| 10 | 10 | #include "cpu/i8085/i8085.h" |
| 11 | | #include "imagedev/cartslot.h" |
| 12 | 11 | #include "imagedev/cassette.h" |
| 13 | 12 | #include "machine/buffer.h" |
| 14 | 13 | #include "bus/centronics/ctronics.h" |
| r32600 | r32601 | |
| 23 | 22 | #include "sound/speaker.h" |
| 24 | 23 | #include "rendlay.h" |
| 25 | 24 | |
| 25 | #include "bus/generic/slot.h" |
| 26 | #include "bus/generic/carts.h" |
| 27 | |
| 26 | 28 | #define SCREEN_TAG "screen" |
| 27 | 29 | #define I8085_TAG "m19" |
| 28 | 30 | #define I8155_TAG "m25" |
| r32600 | r32601 | |
| 71 | 73 | m_centronics(*this, CENTRONICS_TAG), |
| 72 | 74 | m_speaker(*this, "speaker"), |
| 73 | 75 | m_cassette(*this, "cassette"), |
| 76 | m_opt_cart(*this, "opt_cartslot"), |
| 74 | 77 | m_ram(*this, RAM_TAG), |
| 75 | 78 | m_rs232(*this, RS232_TAG), |
| 76 | 79 | m_rom(*this, I8085_TAG), |
| 77 | | m_option(*this, "option"), |
| 78 | 80 | m_y0(*this, "Y0"), |
| 79 | 81 | m_y1(*this, "Y1"), |
| 80 | 82 | m_y2(*this, "Y2"), |
| r32600 | r32601 | |
| 103 | 105 | required_device<centronics_device> m_centronics; |
| 104 | 106 | required_device<speaker_sound_device> m_speaker; |
| 105 | 107 | required_device<cassette_image_device> m_cassette; |
| 108 | required_device<generic_slot_device> m_opt_cart; |
| 106 | 109 | required_device<ram_device> m_ram; |
| 107 | 110 | required_device<rs232_port_device> m_rs232; |
| 108 | 111 | required_memory_region m_rom; |
| 109 | | required_memory_region m_option; |
| 110 | 112 | required_ioport m_y0; |
| 111 | 113 | required_ioport m_y1; |
| 112 | 114 | required_ioport m_y2; |
| r32600 | r32601 | |
| 119 | 121 | required_ioport m_battery; |
| 120 | 122 | |
| 121 | 123 | virtual void machine_start(); |
| 124 | memory_region *m_opt_region; |
| 122 | 125 | |
| 123 | 126 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 124 | 127 | |
| r32600 | r32601 | |
| 167 | 170 | { |
| 168 | 171 | public: |
| 169 | 172 | pc8201_state(const machine_config &mconfig, device_type type, const char *tag) |
| 170 | | : kc85_state(mconfig, type, tag) { } |
| 173 | : kc85_state(mconfig, type, tag), |
| 174 | m_cas_cart(*this, "cas_cartslot") |
| 175 | { } |
| 171 | 176 | |
| 172 | 177 | virtual void machine_start(); |
| 178 | required_device<generic_slot_device> m_cas_cart; |
| 173 | 179 | |
| 174 | 180 | DECLARE_READ8_MEMBER( bank_r ); |
| 175 | 181 | DECLARE_WRITE8_MEMBER( bank_w ); |
| r32600 | r32601 | |
| 202 | 208 | m_cent_data_out(*this, "cent_data_out"), |
| 203 | 209 | m_speaker(*this, "speaker"), |
| 204 | 210 | m_cassette(*this, "cassette"), |
| 211 | m_opt_cart(*this, "opt_cartslot"), |
| 205 | 212 | m_ram(*this, RAM_TAG), |
| 206 | 213 | m_rs232(*this, RS232_TAG), |
| 207 | 214 | m_rom(*this, I8085_TAG), |
| 208 | | m_option(*this, "option"), |
| 209 | 215 | m_y0(*this, "Y0"), |
| 210 | 216 | m_y1(*this, "Y1"), |
| 211 | 217 | m_y2(*this, "Y2"), |
| r32600 | r32601 | |
| 224 | 230 | required_device<output_latch_device> m_cent_data_out; |
| 225 | 231 | required_device<speaker_sound_device> m_speaker; |
| 226 | 232 | required_device<cassette_image_device> m_cassette; |
| 233 | required_device<generic_slot_device> m_opt_cart; |
| 227 | 234 | required_device<ram_device> m_ram; |
| 228 | 235 | required_device<rs232_port_device> m_rs232; |
| 229 | 236 | required_memory_region m_rom; |
| 230 | | required_memory_region m_option; |
| 231 | 237 | required_ioport m_y0; |
| 232 | 238 | required_ioport m_y1; |
| 233 | 239 | required_ioport m_y2; |
| r32600 | r32601 | |
| 239 | 245 | required_ioport m_y8; |
| 240 | 246 | |
| 241 | 247 | virtual void machine_start(); |
| 248 | memory_region *m_opt_region; |
| 242 | 249 | |
| 243 | 250 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 244 | 251 | |
trunk/src/mess/drivers/kyocera.c
| r32600 | r32601 | |
| 380 | 380 | UINT8 data = 0xff; |
| 381 | 381 | |
| 382 | 382 | if (m_rom_sel) |
| 383 | | { |
| 384 | | data = m_option->base()[m_rom_addr & 0x1ffff]; |
| 385 | | } |
| 383 | data = m_cas_cart->read_rom(space, m_rom_addr & 0x1ffff); |
| 386 | 384 | |
| 387 | 385 | return data; |
| 388 | 386 | } |
| r32600 | r32601 | |
| 1169 | 1167 | void kc85_state::machine_start() |
| 1170 | 1168 | { |
| 1171 | 1169 | address_space &program = m_maincpu->space(AS_PROGRAM); |
| 1172 | | |
| 1170 | |
| 1171 | astring region_tag; |
| 1172 | m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 1173 | |
| 1173 | 1174 | /* initialize RTC */ |
| 1174 | 1175 | m_rtc->cs_w(1); |
| 1175 | 1176 | m_rtc->oe_w(1); |
| r32600 | r32601 | |
| 1178 | 1179 | program.install_read_bank(0x0000, 0x7fff, "bank1"); |
| 1179 | 1180 | program.unmap_write(0x0000, 0x7fff); |
| 1180 | 1181 | membank("bank1")->configure_entry(0, m_rom->base()); |
| 1181 | | membank("bank1")->configure_entry(1, m_option->base()); |
| 1182 | membank("bank1")->configure_entry(1, m_opt_region ? m_opt_region->base() : m_rom->base()); |
| 1182 | 1183 | membank("bank1")->set_entry(0); |
| 1183 | 1184 | |
| 1184 | 1185 | /* configure RAM banking */ |
| r32600 | r32601 | |
| 1209 | 1210 | void pc8201_state::machine_start() |
| 1210 | 1211 | { |
| 1211 | 1212 | UINT8 *ram = m_ram->pointer(); |
| 1212 | | |
| 1213 | |
| 1214 | astring region_tag; |
| 1215 | m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 1216 | |
| 1213 | 1217 | /* initialize RTC */ |
| 1214 | 1218 | m_rtc->cs_w(1); |
| 1215 | 1219 | m_rtc->oe_w(1); |
| 1216 | 1220 | |
| 1217 | 1221 | /* configure ROM banking */ |
| 1218 | 1222 | membank("bank1")->configure_entry(0, m_rom->base()); |
| 1219 | | membank("bank1")->configure_entry(1, m_option->base()); |
| 1223 | membank("bank1")->configure_entry(1, m_opt_region ? m_opt_region->base() : m_rom->base()); |
| 1220 | 1224 | membank("bank1")->configure_entries(2, 2, ram + 0x8000, 0x8000); |
| 1221 | 1225 | membank("bank1")->set_entry(0); |
| 1222 | 1226 | |
| r32600 | r32601 | |
| 1240 | 1244 | void trsm100_state::machine_start() |
| 1241 | 1245 | { |
| 1242 | 1246 | address_space &program = m_maincpu->space(AS_PROGRAM); |
| 1243 | | |
| 1247 | |
| 1248 | astring region_tag; |
| 1249 | m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 1250 | |
| 1244 | 1251 | /* initialize RTC */ |
| 1245 | 1252 | m_rtc->cs_w(1); |
| 1246 | 1253 | m_rtc->oe_w(1); |
| r32600 | r32601 | |
| 1249 | 1256 | program.install_read_bank(0x0000, 0x7fff, "bank1"); |
| 1250 | 1257 | program.unmap_write(0x0000, 0x7fff); |
| 1251 | 1258 | membank("bank1")->configure_entry(0, m_rom->base()); |
| 1252 | | membank("bank1")->configure_entry(1, m_option->base()); |
| 1259 | membank("bank1")->configure_entry(1, m_opt_region ? m_opt_region->base() : m_rom->base()); |
| 1253 | 1260 | membank("bank1")->set_entry(0); |
| 1254 | 1261 | |
| 1255 | 1262 | /* configure RAM banking */ |
| r32600 | r32601 | |
| 1289 | 1296 | |
| 1290 | 1297 | void tandy200_state::machine_start() |
| 1291 | 1298 | { |
| 1299 | astring region_tag; |
| 1300 | m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 1301 | |
| 1292 | 1302 | /* configure ROM banking */ |
| 1293 | 1303 | membank("bank1")->configure_entry(0, m_rom->base()); |
| 1294 | 1304 | membank("bank1")->configure_entry(1, m_rom->base() + 0x10000); |
| 1295 | | membank("bank1")->configure_entry(2, m_option->base()); |
| 1305 | membank("bank1")->configure_entry(2, m_opt_region ? m_opt_region->base() : m_rom->base()); |
| 1296 | 1306 | membank("bank1")->set_entry(0); |
| 1297 | 1307 | |
| 1298 | 1308 | /* configure RAM banking */ |
| r32600 | r32601 | |
| 1374 | 1384 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
| 1375 | 1385 | |
| 1376 | 1386 | /* option ROM cartridge */ |
| 1377 | | MCFG_CARTSLOT_ADD("cart") |
| 1378 | | MCFG_CARTSLOT_EXTENSION_LIST("rom,bin") |
| 1379 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 1380 | | MCFG_CARTSLOT_INTERFACE("trsm100_cart") |
| 1387 | MCFG_GENERIC_CARTSLOT_ADD("opt_cartslot", generic_linear_slot, "trsm100_cart") |
| 1388 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 1381 | 1389 | |
| 1382 | 1390 | /* software lists */ |
| 1383 | 1391 | MCFG_SOFTWARE_LIST_ADD("cart_list", "trsm100") |
| r32600 | r32601 | |
| 1426 | 1434 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
| 1427 | 1435 | |
| 1428 | 1436 | /* option ROM cartridge */ |
| 1429 | | MCFG_CARTSLOT_ADD("cart") |
| 1430 | | MCFG_CARTSLOT_EXTENSION_LIST("rom,bin") |
| 1431 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 1432 | | MCFG_CARTSLOT_INTERFACE("pc8201_cart") |
| 1437 | MCFG_GENERIC_CARTSLOT_ADD("opt_cartslot", generic_linear_slot, "pc8201_cart") |
| 1438 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 1433 | 1439 | |
| 1434 | 1440 | /* 128KB ROM cassette */ |
| 1435 | | MCFG_CARTSLOT_ADD("cart2") |
| 1436 | | MCFG_CARTSLOT_EXTENSION_LIST("rom,bin") |
| 1437 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 1438 | | MCFG_CARTSLOT_INTERFACE("pc8201_cart2") |
| 1441 | MCFG_GENERIC_CARTSLOT_ADD("cas_cartslot", generic_linear_slot, "pc8201_cart2") |
| 1442 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 1439 | 1443 | |
| 1440 | 1444 | /* software lists */ |
| 1441 | 1445 | MCFG_SOFTWARE_LIST_ADD("cart_list", "pc8201") |
| r32600 | r32601 | |
| 1489 | 1493 | // MCFG_MC14412_ADD(MC14412_TAG, XTAL_1MHz) |
| 1490 | 1494 | |
| 1491 | 1495 | /* option ROM cartridge */ |
| 1492 | | MCFG_CARTSLOT_ADD("cart") |
| 1493 | | MCFG_CARTSLOT_EXTENSION_LIST("rom,bin") |
| 1494 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 1495 | | MCFG_CARTSLOT_INTERFACE("trsm100_cart") |
| 1496 | MCFG_GENERIC_CARTSLOT_ADD("opt_cartslot", generic_linear_slot, "trsm100_cart") |
| 1497 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 1496 | 1498 | |
| 1497 | 1499 | /* software lists */ |
| 1498 | 1500 | MCFG_SOFTWARE_LIST_ADD("cart_list", "trsm100") |
| r32600 | r32601 | |
| 1558 | 1560 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) |
| 1559 | 1561 | |
| 1560 | 1562 | /* option ROM cartridge */ |
| 1561 | | MCFG_CARTSLOT_ADD("cart") |
| 1562 | | MCFG_CARTSLOT_EXTENSION_LIST("rom,bin") |
| 1563 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 1564 | | MCFG_CARTSLOT_INTERFACE("tandy200_cart") |
| 1563 | MCFG_GENERIC_CARTSLOT_ADD("opt_cartslot", generic_linear_slot, "tandy200_cart") |
| 1564 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 1565 | 1565 | |
| 1566 | 1566 | /* software lists */ |
| 1567 | 1567 | MCFG_SOFTWARE_LIST_ADD("cart_list", "tandy200") |
| r32600 | r32601 | |
| 1577 | 1577 | ROM_START( kc85 ) |
| 1578 | 1578 | ROM_REGION( 0x8000, I8085_TAG, 0 ) |
| 1579 | 1579 | ROM_LOAD( "kc85rom.bin", 0x0000, 0x8000, CRC(8a9ddd6b) SHA1(9d18cb525580c9e071e23bc3c472380aa46356c0) ) |
| 1580 | | |
| 1581 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1582 | | ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_MIRROR | ROM_OPTIONAL) |
| 1583 | 1580 | ROM_END |
| 1584 | 1581 | |
| 1585 | 1582 | ROM_START( pc8201 ) |
| 1586 | 1583 | ROM_REGION( 0x10000, I8085_TAG, 0 ) |
| 1587 | 1584 | ROM_LOAD( "3256a41-3b1 n 82 basic.rom0", 0x0000, 0x8000, CRC(3dbaa484) SHA1(9886a973faa639ca9e0ba478790bab20e5163495) ) |
| 1588 | | |
| 1589 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1590 | | ROM_CART_LOAD("cart1", 0x0000, 0x8000, ROM_MIRROR | ROM_OPTIONAL) |
| 1591 | | |
| 1592 | | ROM_REGION( 0x20000, "cassette", ROMREGION_ERASEFF ) |
| 1593 | | ROM_CART_LOAD("cart2", 0x0000, 0x20000, ROM_MIRROR | ROM_OPTIONAL) |
| 1594 | 1585 | ROM_END |
| 1595 | 1586 | |
| 1596 | 1587 | ROM_START( pc8201a ) |
| 1597 | 1588 | ROM_REGION( 0x10000, I8085_TAG, 0 ) |
| 1598 | 1589 | ROM_LOAD( "pc8201rom.rom", 0x0000, 0x8000, CRC(30555035) SHA1(96f33ff235db3028bf5296052acedbc94437c596) ) |
| 1599 | | |
| 1600 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1601 | | ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_MIRROR | ROM_OPTIONAL) |
| 1602 | | |
| 1603 | | ROM_REGION( 0x20000, "cassette", ROMREGION_ERASEFF ) |
| 1604 | | ROM_CART_LOAD("cart2", 0x0000, 0x20000, ROM_MIRROR | ROM_OPTIONAL) |
| 1605 | 1590 | ROM_END |
| 1606 | 1591 | |
| 1607 | 1592 | ROM_START( npc8300 ) |
| 1608 | 1593 | ROM_REGION( 0x10000, I8085_TAG, 0 ) |
| 1609 | 1594 | ROM_LOAD( "831000-438_n83a_basic_1986_microsoft_8716_z01.bin", 0x0000, 0x8000, CRC(a3c15dcb) SHA1(f0322dfe3f2e951de043bf6d0973e6ffc2c87181)) |
| 1610 | | |
| 1611 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1612 | | ROM_CART_LOAD("cart1", 0x0000, 0x8000, ROM_MIRROR | ROM_OPTIONAL) |
| 1613 | | |
| 1614 | | ROM_REGION( 0x20000, "cassette", ROMREGION_ERASEFF ) |
| 1615 | | ROM_CART_LOAD("cart2", 0x0000, 0x20000, ROM_MIRROR | ROM_OPTIONAL) |
| 1616 | 1595 | ROM_END |
| 1617 | 1596 | |
| 1618 | 1597 | ROM_START( trsm100 ) |
| r32600 | r32601 | |
| 1625 | 1604 | */ |
| 1626 | 1605 | ROM_REGION( 0x8000, I8085_TAG, 0 ) |
| 1627 | 1606 | ROM_LOAD( "m100rom.m12", 0x0000, 0x8000, CRC(730a3611) SHA1(094dbc4ac5a4ea5cdf51a1ac581a40a9622bb25d) ) |
| 1628 | | |
| 1629 | | // increased to 0x30000 to fully load 'Booster Pack', but its banking is still unknown |
| 1630 | | ROM_REGION( 0x30000, "option", ROMREGION_ERASEFF ) |
| 1631 | | ROM_CART_LOAD("cart", 0x0000, 0x30000, ROM_MIRROR | ROM_OPTIONAL) |
| 1632 | 1607 | ROM_END |
| 1633 | 1608 | |
| 1634 | 1609 | ROM_START( m10 ) |
| 1635 | 1610 | // 3256C02-4B3/I Italian |
| 1636 | 1611 | ROM_REGION( 0x8010, I8085_TAG, 0 ) |
| 1637 | 1612 | ROM_LOAD( "m10rom.m12", 0x0000, 0x8000, CRC(f0e8447a) SHA1(d58867276213116a79f7074109b7d7ce02e8a3af) ) |
| 1638 | | |
| 1639 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1640 | | ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_MIRROR | ROM_OPTIONAL) |
| 1641 | 1613 | ROM_END |
| 1642 | 1614 | |
| 1643 | 1615 | ROM_START( tandy102 ) |
| 1644 | 1616 | ROM_REGION( 0x8000, I8085_TAG, 0 ) |
| 1645 | 1617 | ROM_LOAD( "m102rom.m12", 0x0000, 0x8000, CRC(08e9f89c) SHA1(b6ede7735a361c80419f4c9c0e36e7d480c36d11) ) |
| 1646 | | |
| 1647 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1648 | | ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_MIRROR | ROM_OPTIONAL) |
| 1649 | 1618 | ROM_END |
| 1650 | 1619 | |
| 1651 | 1620 | ROM_START( tandy200 ) |
| r32600 | r32601 | |
| 1655 | 1624 | ROM_LOAD( "rom #2.m14", 0x10000, 0x8000, NO_DUMP ) |
| 1656 | 1625 | ROM_LOAD( "t200rom.bin", 0x0000, 0xa000, BAD_DUMP CRC(e3358b38) SHA1(35d4e6a5fb8fc584419f57ec12b423f6021c0991) ) /* Y2K hacked */ |
| 1657 | 1626 | ROM_CONTINUE( 0x10000, 0x8000 ) |
| 1658 | | |
| 1659 | | ROM_REGION( 0x8000, "option", ROMREGION_ERASEFF ) |
| 1660 | | ROM_CART_LOAD("cart", 0x0000, 0x8000, ROM_NOMIRROR | ROM_OPTIONAL) |
| 1661 | 1627 | ROM_END |
| 1662 | 1628 | |
| 1663 | 1629 | /* System Drivers */ |
trunk/src/mess/drivers/electron.c
| r32600 | r32601 | |
| 28 | 28 | #include "cpu/m6502/m6502.h" |
| 29 | 29 | #include "includes/electron.h" |
| 30 | 30 | #include "imagedev/cassette.h" |
| 31 | | #include "imagedev/cartslot.h" |
| 32 | 31 | #include "formats/uef_cas.h" |
| 33 | 32 | #include "sound/beep.h" |
| 34 | 33 | |
| r32600 | r32601 | |
| 61 | 60 | |
| 62 | 61 | static INPUT_PORTS_START( electron ) |
| 63 | 62 | |
| 64 | | PORT_START("LINE0") /* Keyboard line 0 */ |
| 63 | PORT_START("LINE.0") |
| 65 | 64 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xE2\x86\x92 | \\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR('|') PORT_CHAR('\\') // on the real keyboard, this would be on the 1st row, the 3rd key after 0 |
| 66 | 65 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHAR('[') PORT_CHAR(']') |
| 67 | 66 | /* PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("<NONE>") PORT_CODE(KEYCODE_) */ |
| 68 | 67 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 69 | 68 | |
| 70 | | PORT_START("LINE1") /* Keyboard line 1 */ |
| 69 | PORT_START("LINE.1") |
| 71 | 70 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xE2\x86\x90 ^ ~") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_CHAR('^') PORT_CHAR('~') |
| 72 | 71 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xE2\x86\x93 _ }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR('_') PORT_CHAR('}') |
| 73 | 72 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 74 | 73 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DELETE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) |
| 75 | 74 | |
| 76 | | PORT_START("LINE2") /* Keyboard line 2 */ |
| 75 | PORT_START("LINE.2") |
| 77 | 76 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') |
| 78 | 77 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xE2\x86\x91 \xC2\xA3 {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CHAR('\xA3') PORT_CHAR('{') |
| 79 | 78 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*') |
| 80 | 79 | /* PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("<NONE>") PORT_CODE(KEYCODE_) */ |
| 81 | 80 | |
| 82 | | PORT_START("LINE3") /* Keyboard line 3 */ |
| 81 | PORT_START("LINE.3") |
| 83 | 82 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('@') |
| 84 | 83 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') |
| 85 | 84 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') |
| 86 | 85 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 87 | 86 | |
| 88 | | PORT_START("LINE4") /* Keyboard line 4 */ |
| 87 | PORT_START("LINE.4") |
| 89 | 88 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| 90 | 89 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') |
| 91 | 90 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') |
| 92 | 91 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') |
| 93 | 92 | |
| 94 | | PORT_START("LINE5") /* Keyboard line 5 */ |
| 93 | PORT_START("LINE.5") |
| 95 | 94 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') |
| 96 | 95 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') |
| 97 | 96 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') |
| 98 | 97 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') |
| 99 | 98 | |
| 100 | | PORT_START("LINE6") /* Keyboard line 6 */ |
| 99 | PORT_START("LINE.6") |
| 101 | 100 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') |
| 102 | 101 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') |
| 103 | 102 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') |
| 104 | 103 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') |
| 105 | 104 | |
| 106 | | PORT_START("LINE7") /* Keyboard line 7 */ |
| 105 | PORT_START("LINE.7") |
| 107 | 106 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') |
| 108 | 107 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') |
| 109 | 108 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') |
| 110 | 109 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') |
| 111 | 110 | |
| 112 | | PORT_START("LINE8") /* Keyboard line 8 */ |
| 111 | PORT_START("LINE.8") |
| 113 | 112 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 114 | 113 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') |
| 115 | 114 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') |
| 116 | 115 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') |
| 117 | 116 | |
| 118 | | PORT_START("LINE9") /* Keyboard line 9 */ |
| 117 | PORT_START("LINE.9") |
| 119 | 118 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') |
| 120 | 119 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') |
| 121 | 120 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') |
| 122 | 121 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') |
| 123 | 122 | |
| 124 | | PORT_START("LINE10") /* Keyboard line 10 */ |
| 123 | PORT_START("LINE.10") |
| 125 | 124 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') |
| 126 | 125 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') |
| 127 | 126 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') |
| 128 | 127 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') |
| 129 | 128 | |
| 130 | | PORT_START("LINE11") /* Keyboard line 11 */ |
| 129 | PORT_START("LINE.11") |
| 131 | 130 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') |
| 132 | 131 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') |
| 133 | 132 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') |
| 134 | 133 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') |
| 135 | 134 | |
| 136 | | PORT_START("LINE12") /* Keyboard line 12 */ |
| 135 | PORT_START("LINE.12") |
| 137 | 136 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') |
| 138 | 137 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') |
| 139 | 138 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') |
| 140 | 139 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') |
| 141 | 140 | |
| 142 | | PORT_START("LINE13") /* Keyboard line 13 */ |
| 141 | PORT_START("LINE.13") |
| 143 | 142 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ESCAPE") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
| 144 | 143 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("FUNC") PORT_CODE(KEYCODE_TAB) PORT_CHAR(UCHAR_MAMEKEY(LALT)) |
| 145 | 144 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) |
| r32600 | r32601 | |
| 147 | 146 | |
| 148 | 147 | INPUT_PORTS_END |
| 149 | 148 | |
| 150 | | /* Electron Rom Load */ |
| 151 | | ROM_START(electron) |
| 152 | | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 153 | | ROM_REGION( 0x44000, "user1", 0 ) /* OS Rom */ |
| 154 | | ROM_LOAD( "os.rom", 0x40000, 0x4000, CRC(bf63fb1f) SHA1(a48b8fa0cfb09140e808ac8a187316c605a0b32e) ) /* Os rom */ |
| 155 | | /* 00000 0 available for cartridges */ |
| 156 | | /* 04000 1 available for cartridges */ |
| 157 | | /* 08000 2 available for cartridges */ |
| 158 | | /* 0c000 3 available for cartridges */ |
| 159 | | /* 10000 4 available for cartridges */ |
| 160 | | /* 14000 5 available for cartridges */ |
| 161 | | /* 18000 6 available for cartridges */ |
| 162 | | /* 1c000 7 available for cartridges */ |
| 163 | | /* 20000 8 keyboard */ |
| 164 | | /* 24000 9 keyboard mirror */ |
| 165 | | /* 28000 10 Basic rom */ ROM_LOAD( "basic.rom", 0x28000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281) ) |
| 166 | | /* 2c000 11 Basic rom mirror */ ROM_COPY( "user1", 0x28000, 0x2c000, 0x4000 ) |
| 167 | | /* 30000 12 available for cartridges with a language ROM */ |
| 168 | | /* 34000 13 available for cartridges with a language ROM */ |
| 169 | | /* 38000 14 available for cartridges with a language ROM */ |
| 170 | | /* 3c000 15 available for cartridges with a language ROM */ |
| 171 | | ROM_END |
| 172 | | |
| 173 | 149 | static MACHINE_CONFIG_START( electron, electron_state ) |
| 174 | 150 | MCFG_CPU_ADD( "maincpu", M6502, 2000000 ) |
| 175 | 151 | MCFG_CPU_PROGRAM_MAP( electron_mem) |
| 176 | 152 | |
| 177 | | |
| 178 | 153 | MCFG_SCREEN_ADD("screen", RASTER) |
| 179 | 154 | MCFG_SCREEN_REFRESH_RATE( 50.08 ) |
| 180 | 155 | MCFG_SCREEN_SIZE( 640, 312 ) |
| r32600 | r32601 | |
| 186 | 161 | MCFG_PALETTE_ADD( "palette", 16 ) |
| 187 | 162 | MCFG_PALETTE_INIT_OWNER(electron_state, electron) |
| 188 | 163 | |
| 189 | | |
| 190 | 164 | MCFG_SPEAKER_STANDARD_MONO( "mono" ) |
| 191 | 165 | MCFG_SOUND_ADD( "beeper", BEEP, 0 ) |
| 192 | 166 | MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 ) |
| r32600 | r32601 | |
| 195 | 169 | MCFG_CASSETTE_FORMATS(uef_cassette_formats) |
| 196 | 170 | MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY) |
| 197 | 171 | |
| 198 | | MCFG_CARTSLOT_ADD("cart") |
| 199 | | MCFG_CARTSLOT_EXTENSION_LIST("bin") |
| 200 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 201 | | MCFG_CARTSLOT_LOAD(electron_state, electron_cart) |
| 202 | | MCFG_CARTSLOT_INTERFACE("electron_cart") |
| 172 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "electron_cart") |
| 173 | MCFG_GENERIC_LOAD(electron_state, electron_cart) |
| 174 | |
| 203 | 175 | /* software lists */ |
| 204 | 176 | MCFG_SOFTWARE_LIST_ADD("cart_list","electron_cart") |
| 205 | 177 | MACHINE_CONFIG_END |
| 206 | 178 | |
| 207 | 179 | |
| 180 | /* Electron Rom Load */ |
| 181 | ROM_START(electron) |
| 182 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 183 | ROM_REGION( 0x44000, "user1", 0 ) /* OS Rom */ |
| 184 | ROM_LOAD( "os.rom", 0x40000, 0x4000, CRC(bf63fb1f) SHA1(a48b8fa0cfb09140e808ac8a187316c605a0b32e) ) /* Os rom */ |
| 185 | /* 00000 0 available for cartridges */ |
| 186 | /* 04000 1 available for cartridges */ |
| 187 | /* 08000 2 available for cartridges */ |
| 188 | /* 0c000 3 available for cartridges */ |
| 189 | /* 10000 4 available for cartridges */ |
| 190 | /* 14000 5 available for cartridges */ |
| 191 | /* 18000 6 available for cartridges */ |
| 192 | /* 1c000 7 available for cartridges */ |
| 193 | /* 20000 8 keyboard */ |
| 194 | /* 24000 9 keyboard mirror */ |
| 195 | /* 28000 10 Basic rom */ |
| 196 | ROM_LOAD( "basic.rom", 0x28000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281) ) |
| 197 | /* 2c000 11 Basic rom mirror */ |
| 198 | ROM_COPY( "user1", 0x28000, 0x2c000, 0x4000 ) |
| 199 | /* 30000 12 available for cartridges with a language ROM */ |
| 200 | /* 34000 13 available for cartridges with a language ROM */ |
| 201 | /* 38000 14 available for cartridges with a language ROM */ |
| 202 | /* 3c000 15 available for cartridges with a language ROM */ |
| 203 | ROM_END |
| 204 | |
| 208 | 205 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
| 209 | 206 | COMP ( 1983, electron, 0, 0, electron, electron, driver_device, 0, "Acorn", "Acorn Electron", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) |
trunk/src/mess/drivers/primo.c
| r32600 | r32601 | |
| 217 | 217 | PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x80\x9D") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(UCHAR_MAMEKEY(F7)) |
| 218 | 218 | PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BRK") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
| 219 | 219 | |
| 220 | | PORT_START( "RESET" ) /* IN4 */ |
| 220 | PORT_START( "RESET" ) |
| 221 | 221 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Reset") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1)) |
| 222 | 222 | PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 223 | 223 | |
| 224 | | PORT_START( "CPU_CLOCK" ) /* IN5 */ |
| 224 | PORT_START( "CPU_CLOCK" ) |
| 225 | 225 | PORT_CONFNAME(0x01, 0x00, "CPU clock" ) |
| 226 | 226 | PORT_CONFSETTING( 0x00, "2.50 MHz" ) |
| 227 | 227 | PORT_CONFSETTING( 0x01, "3.75 MHz" ) |
| 228 | 228 | |
| 229 | | PORT_START( "MEMORY_EXPANSION" ) /* IN6 */ |
| 229 | PORT_START( "MEMORY_EXPANSION" ) |
| 230 | 230 | PORT_CONFNAME(0x01, 0x00, "EPROM+RAM Expansion" ) |
| 231 | 231 | PORT_CONFSETTING( 0x00, DEF_STR( On ) ) |
| 232 | 232 | PORT_CONFSETTING( 0x01, DEF_STR( Off ) ) |
| r32600 | r32601 | |
| 245 | 245 | MCFG_CPU_IO_MAP( primoa_port) |
| 246 | 246 | MCFG_CPU_VBLANK_INT_DRIVER("screen", primo_state, primo_vblank_interrupt) |
| 247 | 247 | |
| 248 | | |
| 249 | 248 | /* video hardware */ |
| 250 | 249 | MCFG_SCREEN_ADD("screen", RASTER) |
| 251 | 250 | MCFG_SCREEN_REFRESH_RATE( 50 ) |
| r32600 | r32601 | |
| 277 | 276 | MCFG_CBM_IEC_ADD(NULL) |
| 278 | 277 | |
| 279 | 278 | /* cartridge */ |
| 280 | | MCFG_CARTSLOT_ADD("cart1") |
| 281 | | MCFG_CARTSLOT_EXTENSION_LIST("rom") |
| 282 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 283 | | MCFG_CARTSLOT_ADD("cart2") |
| 284 | | MCFG_CARTSLOT_EXTENSION_LIST("rom") |
| 285 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 279 | MCFG_GENERIC_CARTSLOT_ADD("cartslot1", generic_plain_slot, NULL) |
| 280 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 281 | MCFG_GENERIC_CARTSLOT_ADD("cartslot2", generic_plain_slot, NULL) |
| 282 | MCFG_GENERIC_EXTENSIONS("bin,rom") |
| 286 | 283 | MACHINE_CONFIG_END |
| 287 | 284 | |
| 288 | 285 | static MACHINE_CONFIG_DERIVED( primoa48, primoa32 ) |
| 289 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 290 | | MCFG_CPU_PROGRAM_MAP( primo48_mem) |
| 286 | MCFG_CPU_MODIFY("maincpu") |
| 287 | MCFG_CPU_PROGRAM_MAP(primo48_mem) |
| 291 | 288 | MACHINE_CONFIG_END |
| 292 | 289 | |
| 293 | 290 | static MACHINE_CONFIG_DERIVED( primoa64, primoa32 ) |
| 294 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 295 | | MCFG_CPU_PROGRAM_MAP( primo64_mem) |
| 291 | MCFG_CPU_MODIFY("maincpu") |
| 292 | MCFG_CPU_PROGRAM_MAP(primo64_mem) |
| 296 | 293 | MACHINE_CONFIG_END |
| 297 | 294 | |
| 298 | 295 | static MACHINE_CONFIG_DERIVED( primob32, primoa32 ) |
| 299 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 300 | | MCFG_CPU_IO_MAP( primob_port) |
| 296 | MCFG_CPU_MODIFY("maincpu") |
| 297 | MCFG_CPU_IO_MAP(primob_port) |
| 301 | 298 | |
| 302 | | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob ) |
| 299 | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob) |
| 303 | 300 | MACHINE_CONFIG_END |
| 304 | 301 | |
| 305 | 302 | static MACHINE_CONFIG_DERIVED( primob48, primoa48 ) |
| 306 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 307 | | MCFG_CPU_IO_MAP( primob_port) |
| 303 | MCFG_CPU_MODIFY("maincpu") |
| 304 | MCFG_CPU_IO_MAP(primob_port) |
| 308 | 305 | |
| 309 | | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob ) |
| 306 | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob) |
| 310 | 307 | MACHINE_CONFIG_END |
| 311 | 308 | |
| 312 | 309 | static MACHINE_CONFIG_DERIVED( primob64, primoa64 ) |
| 313 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 314 | | MCFG_CPU_IO_MAP( primob_port) |
| 310 | MCFG_CPU_MODIFY("maincpu") |
| 311 | MCFG_CPU_IO_MAP(primob_port) |
| 315 | 312 | |
| 316 | | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob ) |
| 313 | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob) |
| 317 | 314 | MACHINE_CONFIG_END |
| 318 | 315 | |
| 319 | 316 | static MACHINE_CONFIG_DERIVED( primoc64, primoa64 ) |
| 320 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 321 | | MCFG_CPU_IO_MAP( primob_port) |
| 317 | MCFG_CPU_MODIFY("maincpu") |
| 318 | MCFG_CPU_IO_MAP(primob_port) |
| 322 | 319 | |
| 323 | | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob ) |
| 320 | MCFG_MACHINE_RESET_OVERRIDE(primo_state, primob) |
| 324 | 321 | MACHINE_CONFIG_END |
| 325 | 322 | |
| 326 | 323 | ROM_START( primoa32 ) |
| 327 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 324 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 328 | 325 | ROM_LOAD( "a32_1.rom", 0x10000, 0x1000, CRC(4e91c1a4) SHA1(bf6e41b6b36a2556a50065e9acfd8cd57968f039) ) |
| 329 | 326 | ROM_LOAD( "a32_2.rom", 0x11000, 0x1000, CRC(81a8a0fb) SHA1(df75bd7774969cabb062e50da6004f2efbde489e) ) |
| 330 | 327 | ROM_LOAD( "a32_3.rom", 0x12000, 0x1000, CRC(a97de2f5) SHA1(743c76121f5b9e1eab35c8c00797311f58da5243) ) |
| 331 | 328 | ROM_LOAD( "a32_4.rom", 0x13000, 0x1000, CRC(70f84bc8) SHA1(9ae1c06531edf20c14ba47e78c0747dd2a92612a) ) |
| 332 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 333 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 334 | 329 | ROM_END |
| 335 | 330 | |
| 336 | 331 | ROM_START( primoa48 ) |
| 337 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 332 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 338 | 333 | ROM_LOAD( "a48_1.rom", 0x10000, 0x1000, CRC(7de6ad6f) SHA1(f2fd6fac4f9bc57c646efe40281758bb7c3f56e1) ) |
| 339 | 334 | ROM_LOAD( "a48_2.rom", 0x11000, 0x1000, CRC(81a8a0fb) SHA1(df75bd7774969cabb062e50da6004f2efbde489e) ) |
| 340 | 335 | ROM_LOAD( "a48_3.rom", 0x12000, 0x1000, CRC(a97de2f5) SHA1(743c76121f5b9e1eab35c8c00797311f58da5243) ) |
| 341 | 336 | ROM_LOAD( "a48_4.rom", 0x13000, 0x1000, CRC(e4d0c452) SHA1(4a98ff7502f1236445250d6b4e1c34850734350e) ) |
| 342 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 343 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 344 | 337 | ROM_END |
| 345 | 338 | |
| 346 | 339 | ROM_START( primoa64 ) |
| 347 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 340 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 348 | 341 | ROM_SYSTEM_BIOS(0, "ver1", "ver 1") |
| 349 | 342 | ROM_LOAD( "a64_1.rom", 0x10000, 0x1000, CRC(6a7a9b9b) SHA1(e9ce16f90d9a799a26a9cef09d9ee6a6d7749484) ) |
| 350 | 343 | ROM_LOAD( "a64_2.rom", 0x11000, 0x1000, CRC(81a8a0fb) SHA1(df75bd7774969cabb062e50da6004f2efbde489e) ) |
| 351 | 344 | ROM_LOAD( "a64_3.rom", 0x12000, 0x1000, CRC(a97de2f5) SHA1(743c76121f5b9e1eab35c8c00797311f58da5243) ) |
| 352 | 345 | ROM_LOAD( "a64_4.rom", 0x13000, 0x1000, CRC(e4d0c452) SHA1(4a98ff7502f1236445250d6b4e1c34850734350e) ) |
| 353 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 354 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 355 | 346 | ROM_END |
| 356 | 347 | |
| 357 | 348 | ROM_START( primob32 ) |
| 358 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 349 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 359 | 350 | ROM_LOAD( "b32.rom", 0x10000, 0x4000, CRC(f594d2bb) SHA1(b74961dba008a1a6f15a22ddbd1b89acd7e286c2) ) |
| 360 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 361 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 362 | 351 | ROM_END |
| 363 | 352 | |
| 364 | 353 | ROM_START( primob48 ) |
| 365 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 354 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 366 | 355 | ROM_LOAD( "b48.rom", 0x10000, 0x4000, CRC(df3d2a57) SHA1(ab9413aa9d7749d30a486da00bc8c6d178a2172c) ) |
| 367 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 368 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 369 | 356 | ROM_END |
| 370 | 357 | |
| 371 | 358 | ROM_START( primob64 ) |
| 372 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 359 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 373 | 360 | ROM_SYSTEM_BIOS(0, "standart", "Standart") |
| 374 | 361 | ROMX_LOAD( "b64.rom", 0x10000, 0x4000, CRC(cea28188) SHA1(a77e42e97402e601b78ab3751eac1e85d0bbb4a0), ROM_BIOS(1) ) |
| 375 | 362 | ROM_SYSTEM_BIOS(1, "cdos", "CDOS") |
| 376 | 363 | ROMX_LOAD( "b64cdos.rom", 0x10000, 0x4000, CRC(73305e4d) SHA1(c090c3430cdf19eed8363377b981e1c21a4ed169), ROM_BIOS(2) ) |
| 377 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 378 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 379 | 364 | ROM_END |
| 380 | 365 | |
| 381 | 366 | ROM_START( primoc64 ) |
| 382 | | ROM_REGION( 0x1c000, "maincpu", ROMREGION_ERASEFF ) |
| 367 | ROM_REGION( 0x14000, "maincpu", ROMREGION_ERASEFF ) |
| 383 | 368 | ROM_LOAD( "c64_1.rom", 0x10000, 0x1000, CRC(c22290ea) SHA1(af5c73f6d0f7a987c4f082a5cb69e3f016127d57) ) |
| 384 | 369 | ROM_LOAD( "c64_2.rom", 0x11000, 0x1000, CRC(0756b56e) SHA1(589dbdb7c43ca7ca29ed1e56e080adf8c069e407) ) |
| 385 | 370 | ROM_LOAD( "c64_3.rom", 0x12000, 0x1000, CRC(fc56e0af) SHA1(b547fd270d3413400bc800f5b7ea9153b7a59bff) ) |
| 386 | 371 | ROM_LOAD( "c64_4.rom", 0x13000, 0x1000, CRC(3770e3e6) SHA1(792cc71d8f89eb447f94aded5afc70d626a26030) ) |
| 387 | | ROM_CART_LOAD("cart2", 0x14000, 0x4000, ROM_OPTIONAL) |
| 388 | | ROM_CART_LOAD("cart1", 0x18000, 0x4000, ROM_OPTIONAL) |
| 389 | 372 | ROM_END |
| 390 | 373 | |
| 391 | 374 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
trunk/src/mess/drivers/pb1000.c
| r32600 | r32601 | |
| 22 | 22 | #include "emu.h" |
| 23 | 23 | #include "cpu/hd61700/hd61700.h" |
| 24 | 24 | #include "video/hd44352.h" |
| 25 | | #include "imagedev/cartslot.h" |
| 26 | 25 | #include "machine/nvram.h" |
| 27 | 26 | #include "sound/beep.h" |
| 28 | 27 | #include "rendlay.h" |
| 29 | 28 | |
| 29 | #include "bus/generic/slot.h" |
| 30 | #include "bus/generic/carts.h" |
| 31 | |
| 32 | |
| 30 | 33 | class pb1000_state : public driver_device |
| 31 | 34 | { |
| 32 | 35 | public: |
| r32600 | r32601 | |
| 34 | 37 | : driver_device(mconfig, type, tag), |
| 35 | 38 | m_maincpu(*this, "maincpu"), |
| 36 | 39 | m_beeper(*this, "beeper"), |
| 37 | | m_hd44352(*this, "hd44352") |
| 40 | m_hd44352(*this, "hd44352"), |
| 41 | m_card1(*this, "cardslot1"), |
| 42 | m_card2(*this, "cardslot2") |
| 38 | 43 | { } |
| 39 | 44 | |
| 40 | 45 | required_device<hd61700_cpu_device> m_maincpu; |
| 41 | 46 | required_device<beep_device> m_beeper; |
| 42 | 47 | required_device<hd44352_device> m_hd44352; |
| 48 | optional_device<generic_slot_device> m_card1; |
| 49 | optional_device<generic_slot_device> m_card2; |
| 43 | 50 | |
| 44 | 51 | emu_timer *m_kb_timer; |
| 45 | 52 | UINT8 m_kb_matrix; |
| 46 | 53 | UINT8 m_gatearray[2]; |
| 47 | 54 | |
| 55 | memory_region *m_rom_reg; |
| 56 | memory_region *m_card1_reg; |
| 57 | memory_region *m_card2_reg; |
| 58 | |
| 48 | 59 | virtual void machine_start(); |
| 49 | 60 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 50 | 61 | DECLARE_WRITE16_MEMBER( gatearray_w ); |
| r32600 | r32601 | |
| 72 | 83 | AM_RANGE( 0x00c10, 0x00c11 ) AM_WRITE(gatearray_w) |
| 73 | 84 | AM_RANGE( 0x00000, 0x0ffff ) AM_ROMBANK("bank1") |
| 74 | 85 | AM_RANGE( 0x10000, 0x1ffff ) AM_RAM AM_SHARE("nvram1") |
| 75 | | AM_RANGE( 0x20000, 0x27fff ) AM_ROM AM_REGION("card1", 0) |
| 86 | AM_RANGE( 0x20000, 0x27fff ) AM_DEVREAD("cardslot1", generic_slot_device, read16_rom) |
| 76 | 87 | AM_RANGE( 0x28000, 0x2ffff ) AM_RAM AM_SHARE("nvram2") |
| 77 | 88 | ADDRESS_MAP_END |
| 78 | 89 | |
| r32600 | r32601 | |
| 306 | 317 | { |
| 307 | 318 | m_gatearray[offset] = data&0xff; |
| 308 | 319 | |
| 309 | | if (m_gatearray[0]) |
| 310 | | membank("bank1")->set_base(memregion("card1")->base()); |
| 311 | | else if (m_gatearray[1]) |
| 312 | | membank("bank1")->set_base(memregion("card2")->base()); |
| 320 | if (m_gatearray[0] && m_card1_reg) |
| 321 | membank("bank1")->set_base(m_card1_reg->base()); |
| 322 | else if (m_gatearray[1] && m_card2_reg) |
| 323 | membank("bank1")->set_base(m_card2_reg->base()); |
| 313 | 324 | else |
| 314 | | membank("bank1")->set_base(memregion("rom")->base()); |
| 325 | membank("bank1")->set_base(m_rom_reg->base()); |
| 315 | 326 | } |
| 316 | 327 | |
| 317 | 328 | static void lcd_control(hd61700_cpu_device &device, UINT8 data) |
| r32600 | r32601 | |
| 494 | 505 | |
| 495 | 506 | void pb1000_state::machine_start() |
| 496 | 507 | { |
| 497 | | membank("bank1")->set_base(memregion("rom")->base()); |
| 508 | astring region_tag; |
| 509 | m_card1_reg = memregion(region_tag.cpy(m_card1->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 510 | m_card2_reg = memregion(region_tag.cpy(m_card2->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 511 | m_rom_reg = memregion("rom"); |
| 498 | 512 | |
| 513 | membank("bank1")->set_base(m_rom_reg->base()); |
| 514 | |
| 499 | 515 | m_kb_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pb1000_state::keyboard_timer),this)); |
| 500 | 516 | m_kb_timer->adjust(attotime::from_hz(192), 0, attotime::from_hz(192)); |
| 501 | 517 | } |
| r32600 | r32601 | |
| 538 | 554 | MCFG_CPU_PROGRAM_MAP(pb2000c_mem) |
| 539 | 555 | MCFG_HD61700_CONFIG(pb2000c_config) |
| 540 | 556 | |
| 541 | | MCFG_CARTSLOT_ADD("card1") |
| 542 | | MCFG_CARTSLOT_EXTENSION_LIST("bin") |
| 543 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 544 | | MCFG_CARTSLOT_INTERFACE("pb2000c_card") |
| 557 | MCFG_GENERIC_CARTSLOT_ADD("cardslot1", generic_plain_slot, "pb2000c_card") |
| 558 | MCFG_GENERIC_CARTSLOT_ADD("cardslot2", generic_plain_slot, "pb2000c_card") |
| 545 | 559 | |
| 546 | | MCFG_CARTSLOT_ADD("card2") |
| 547 | | MCFG_CARTSLOT_EXTENSION_LIST("bin") |
| 548 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 549 | | MCFG_CARTSLOT_INTERFACE("pb2000c_card") |
| 550 | | |
| 551 | 560 | /* Software lists */ |
| 552 | 561 | MCFG_SOFTWARE_LIST_ADD("card_list", "pb2000c") |
| 553 | 562 | MACHINE_CONFIG_END |
| r32600 | r32601 | |
| 564 | 573 | ROM_SYSTEM_BIOS(1, "basicj", "BASIC Jap") |
| 565 | 574 | ROMX_LOAD( "pb1000j.bin", 0x0000, 0x8000, CRC(14a0df57) SHA1(ab47bb54eb2a24dcd9d2663462e9272d974fa7da), ROM_BIOS(2) | ROM_SKIP(1)) |
| 566 | 575 | |
| 567 | | |
| 568 | 576 | ROM_REGION( 0x0800, "hd44352", 0 ) |
| 569 | 577 | ROM_LOAD( "charset.bin", 0x0000, 0x0800, CRC(7f144716) SHA1(a02f1ecc6dc0ac55b94f00931d8f5cb6b9ffb7b4)) |
| 570 | 578 | ROM_END |
| 571 | 579 | |
| 580 | |
| 572 | 581 | ROM_START( pb2000c ) |
| 573 | 582 | ROM_REGION( 0x1800, "maincpu", ROMREGION_ERASEFF ) |
| 574 | 583 | ROM_LOAD( "hd61700.bin", 0x0000, 0x1800, CRC(25f9540c) SHA1(ecf98efadbdd4d1a74bc183eaf23f7113f2a12b1)) |
| r32600 | r32601 | |
| 578 | 587 | |
| 579 | 588 | ROM_REGION( 0x0800, "hd44352", 0 ) |
| 580 | 589 | ROM_LOAD( "charset.bin", 0x0000, 0x0800, CRC(7f144716) SHA1(a02f1ecc6dc0ac55b94f00931d8f5cb6b9ffb7b4)) |
| 581 | | |
| 582 | | ROM_REGION( 0x20000, "card1", ROMREGION_ERASEFF ) |
| 583 | | ROM_CART_LOAD( "card1", 0, 0x20000, 0 ) |
| 584 | | |
| 585 | | ROM_REGION( 0x20000, "card2", ROMREGION_ERASEFF ) |
| 586 | | ROM_CART_LOAD( "card2", 0, 0x20000, 0 ) |
| 587 | 590 | ROM_END |
| 588 | 591 | |
| 592 | |
| 589 | 593 | ROM_START( ai1000 ) |
| 590 | 594 | ROM_REGION( 0x1800, "maincpu", ROMREGION_ERASEFF ) |
| 591 | 595 | ROM_LOAD( "hd61700.bin", 0x0000, 0x1800, CRC(25f9540c) SHA1(ecf98efadbdd4d1a74bc183eaf23f7113f2a12b1)) |
| r32600 | r32601 | |
| 595 | 599 | |
| 596 | 600 | ROM_REGION( 0x0800, "hd44352", 0 ) |
| 597 | 601 | ROM_LOAD( "charset.bin", 0x0000, 0x0800, CRC(7f144716) SHA1(a02f1ecc6dc0ac55b94f00931d8f5cb6b9ffb7b4)) |
| 598 | | |
| 599 | | ROM_REGION( 0x20000, "card1", ROMREGION_ERASEFF ) |
| 600 | | ROM_CART_LOAD( "card1", 0, 0x20000, 0 ) |
| 601 | | |
| 602 | | ROM_REGION( 0x20000, "card2", ROMREGION_ERASEFF ) |
| 603 | | ROM_CART_LOAD( "card2", 0, 0x20000, 0 ) |
| 604 | 602 | ROM_END |
| 605 | 603 | |
| 606 | 604 | /* Driver */ |
trunk/src/mess/drivers/nc.c
| r32600 | r32601 | |
| 247 | 247 | |
| 248 | 248 | |
| 249 | 249 | |
| 250 | | /* this is not a real register, it is used to record card status */ |
| 251 | | /* ==0, card not inserted, !=0 card is inserted */ |
| 252 | | |
| 253 | | /* set pcmcia card present state */ |
| 254 | | void nc_state::nc_set_card_present_state(int state) |
| 255 | | { |
| 256 | | m_card_status = state; |
| 257 | | } |
| 258 | | |
| 259 | | |
| 260 | 250 | /* latched interrupts are interrupts that cannot be cleared by writing to the irq |
| 261 | 251 | mask. latched interrupts can only be cleared by accessing the interrupting |
| 262 | 252 | device e.g. serial chip, fdc */ |
| r32600 | r32601 | |
| 308 | 298 | void nc_state::nc_refresh_memory_bank_config(int bank) |
| 309 | 299 | { |
| 310 | 300 | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 301 | UINT8 *ptr; |
| 311 | 302 | int mem_type; |
| 312 | 303 | int mem_bank; |
| 313 | 304 | char bank1[10]; |
| r32600 | r32601 | |
| 326 | 317 | case 3: |
| 327 | 318 | case 0: |
| 328 | 319 | { |
| 329 | | unsigned char *addr; |
| 320 | mem_bank &= m_membank_rom_mask; |
| 321 | ptr = (memregion("maincpu")->base() + 0x010000) + (mem_bank << 14); |
| 330 | 322 | |
| 331 | | mem_bank = mem_bank & m_membank_rom_mask; |
| 323 | membank(bank1)->set_base(ptr); |
| 332 | 324 | |
| 333 | | addr = (memregion("maincpu")->base()+0x010000) + (mem_bank<<14); |
| 334 | | |
| 335 | | membank(bank1)->set_base(addr); |
| 336 | | |
| 337 | 325 | space.nop_write((bank * 0x4000), (bank * 0x4000) + 0x3fff); |
| 338 | 326 | LOG(("BANK %d: ROM %d\n",bank,mem_bank)); |
| 339 | 327 | } |
| r32600 | r32601 | |
| 342 | 330 | /* internal RAM */ |
| 343 | 331 | case 1: |
| 344 | 332 | { |
| 345 | | unsigned char *addr; |
| 333 | mem_bank &= m_membank_internal_ram_mask; |
| 334 | ptr = m_ram->pointer() + (mem_bank << 14); |
| 346 | 335 | |
| 347 | | mem_bank = mem_bank & m_membank_internal_ram_mask; |
| 336 | membank(bank1)->set_base(ptr); |
| 337 | membank(bank5)->set_base(ptr); |
| 348 | 338 | |
| 349 | | addr = m_ram->pointer() + (mem_bank<<14); |
| 350 | | |
| 351 | | membank(bank1)->set_base(addr); |
| 352 | | membank(bank5)->set_base(addr); |
| 353 | | |
| 354 | 339 | space.install_write_bank((bank * 0x4000), (bank * 0x4000) + 0x3fff, nc_bankhandler_w[bank]); |
| 355 | 340 | LOG(("BANK %d: RAM\n",bank)); |
| 356 | 341 | } |
| r32600 | r32601 | |
| 360 | 345 | case 2: |
| 361 | 346 | { |
| 362 | 347 | /* card connected? */ |
| 363 | | if ((m_card_status) && (m_card_ram!=NULL)) |
| 348 | if (m_card_status && m_card_ram) |
| 364 | 349 | { |
| 365 | | unsigned char *addr; |
| 350 | mem_bank &= m_membank_card_ram_mask; |
| 351 | ptr = m_card_ram->base() + (mem_bank << 14); |
| 366 | 352 | |
| 367 | | mem_bank = mem_bank & m_membank_card_ram_mask; |
| 368 | | addr = m_card_ram + (mem_bank<<14); |
| 353 | membank(bank1)->set_base(ptr); |
| 369 | 354 | |
| 370 | | membank(bank1)->set_base(addr); |
| 371 | | |
| 372 | 355 | /* write enabled? */ |
| 373 | 356 | if (ioport("EXTRA")->read() & 0x02) |
| 374 | 357 | { |
| 375 | 358 | /* yes */ |
| 376 | | membank(bank5)->set_base(addr); |
| 377 | | |
| 359 | membank(bank5)->set_base(ptr); |
| 378 | 360 | space.install_write_bank((bank * 0x4000), (bank * 0x4000) + 0x3fff, nc_bankhandler_w[bank]); |
| 379 | 361 | } |
| 380 | 362 | else |
| r32600 | r32601 | |
| 814 | 796 | { |
| 815 | 797 | m_type = NC_TYPE_1xx; |
| 816 | 798 | |
| 799 | astring region_tag; |
| 800 | m_card_ram = memregion(region_tag.cpy(m_card->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 801 | if (m_card_ram) |
| 802 | m_card_size = m_card_ram->bytes(); |
| 803 | else |
| 804 | m_card_size = 0; |
| 805 | |
| 817 | 806 | /* keyboard timer */ |
| 818 | 807 | m_keyboard_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nc_state::nc_keyboard_timer_callback),this)); |
| 819 | 808 | m_keyboard_timer->adjust(attotime::from_msec(10)); |
| r32600 | r32601 | |
| 1128 | 1117 | } |
| 1129 | 1118 | #endif |
| 1130 | 1119 | |
| 1131 | | MACHINE_RESET_MEMBER(nc_state,nc200) |
| 1120 | MACHINE_RESET_MEMBER(nc_state, nc200) |
| 1132 | 1121 | { |
| 1133 | 1122 | /* 512k of rom */ |
| 1134 | 1123 | m_membank_rom_mask = 0x1f; |
| r32600 | r32601 | |
| 1147 | 1136 | nc200_video_set_backlight(0); |
| 1148 | 1137 | } |
| 1149 | 1138 | |
| 1150 | | MACHINE_START_MEMBER(nc_state,nc200) |
| 1139 | MACHINE_START_MEMBER(nc_state, nc200) |
| 1151 | 1140 | { |
| 1152 | 1141 | m_type = NC_TYPE_200; |
| 1153 | | |
| 1142 | |
| 1143 | astring region_tag; |
| 1144 | m_card_ram = memregion(region_tag.cpy(m_card->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 1145 | if (m_card_ram) |
| 1146 | m_card_size = m_card_ram->bytes(); |
| 1147 | else |
| 1148 | m_card_size = 0; |
| 1149 | |
| 1154 | 1150 | /* keyboard timer */ |
| 1155 | 1151 | m_keyboard_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nc_state::nc_keyboard_timer_callback),this)); |
| 1156 | 1152 | m_keyboard_timer->adjust(attotime::from_msec(10)); |
| r32600 | r32601 | |
| 1447 | 1443 | MCFG_RP5C01_OUT_ALARM_CB(WRITELINE(nc_state, nc100_tc8521_alarm_callback)) |
| 1448 | 1444 | |
| 1449 | 1445 | /* cartridge */ |
| 1450 | | MCFG_CARTSLOT_ADD("cart") |
| 1451 | | MCFG_CARTSLOT_EXTENSION_LIST("crd,card") |
| 1452 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 1453 | | MCFG_CARTSLOT_LOAD(nc_state,nc_pcmcia_card) |
| 1454 | | MCFG_CARTSLOT_UNLOAD(nc_state,nc_pcmcia_card) |
| 1446 | MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_plain_slot, NULL) |
| 1447 | MCFG_GENERIC_LOAD(nc_state, nc_pcmcia_card) |
| 1448 | MCFG_GENERIC_UNLOAD(nc_state, nc_pcmcia_card) |
| 1455 | 1449 | |
| 1456 | 1450 | /* internal ram */ |
| 1457 | 1451 | MCFG_RAM_ADD(RAM_TAG) |
| r32600 | r32601 | |
| 1477 | 1471 | MCFG_CPU_MODIFY( "maincpu" ) |
| 1478 | 1472 | MCFG_CPU_IO_MAP(nc200_io) |
| 1479 | 1473 | |
| 1480 | | MCFG_MACHINE_START_OVERRIDE(nc_state, nc200 ) |
| 1481 | | MCFG_MACHINE_RESET_OVERRIDE(nc_state, nc200 ) |
| 1474 | MCFG_MACHINE_START_OVERRIDE(nc_state, nc200) |
| 1475 | MCFG_MACHINE_RESET_OVERRIDE(nc_state, nc200) |
| 1482 | 1476 | |
| 1483 | 1477 | /* video hardware */ |
| 1484 | 1478 | MCFG_SCREEN_MODIFY("screen") |