src/mess/drivers/ql.c
| r3280 | r3281 | |
| 10 | 10 | |
| 11 | 11 | TODO: |
| 12 | 12 | |
| 13 | - Tyche bios is broken |
| 13 | 14 | - several disk interfaces (720K/1.44MB/3.2MB) |
| 14 | | - Trump Card missing extra 256K RAM |
| 15 | - discrete sound |
| 15 | 16 | - Gold Card (68000 @ 16MHz, 2MB RAM) |
| 16 | 17 | - Super Gold Card (68020 @ 24MHz, 4MB RAM) |
| 17 | 18 | - QLToolkit II ROM |
| r3280 | r3281 | |
| 19 | 20 | - natural keyboard SHIFT does not work, it causes characters to be skipped altogether |
| 20 | 21 | - get modified Danish version to boot (e.g. MD_DESEL was patched to jump to 0x1cd5e) |
| 21 | 22 | - ICL One Per Desk / British Telecom Merlin Tonto / Telecom Australia Computerphone / Mega OPD (US) |
| 23 | - OPD: 68008P8 @ 7.5MHz, ZX8301 @ 12MHz, CDP65C51E1 @ 1.8432MHz, 128K RAM, 2K NVRAM, 128K ROM (4x32), 16K speech ROM, ADM7910 modem, TMS5220 speech, 2x100K microdrives, RTC 1/1/1970, 1xRS-423 |
| 22 | 24 | - Sandy Q-XT 640 (original motherboard, Super QBoard 512KB, Centronics, Super Toolkit II, FDC, 1 or 2 3.5" 1MB drives, 3 expansion slots) |
| 23 | 25 | - CST Thor PC 1F (720K 3.5") |
| 24 | 26 | - CST Thor PC 2F (2x 720k 3.5") |
| r3280 | r3281 | |
| 214 | 216 | |
| 215 | 217 | UINT8 data = 0; |
| 216 | 218 | |
| 217 | | if (BIT(ipc.keylatch, 0)) data = input_port_read(machine, "ROW0") | input_port_read(machine, "JOY0"); |
| 218 | | if (BIT(ipc.keylatch, 1)) data = input_port_read(machine, "ROW1") | input_port_read(machine, "JOY1"); |
| 219 | | if (BIT(ipc.keylatch, 2)) data = input_port_read(machine, "ROW2"); |
| 220 | | if (BIT(ipc.keylatch, 3)) data = input_port_read(machine, "ROW3"); |
| 221 | | if (BIT(ipc.keylatch, 4)) data = input_port_read(machine, "ROW4"); |
| 222 | | if (BIT(ipc.keylatch, 5)) data = input_port_read(machine, "ROW5"); |
| 223 | | if (BIT(ipc.keylatch, 6)) data = input_port_read(machine, "ROW6"); |
| 224 | | if (BIT(ipc.keylatch, 7)) data = input_port_read(machine, "ROW7"); |
| 219 | if (BIT(ipc.keylatch, 0)) data |= input_port_read(machine, "ROW0") | input_port_read(machine, "JOY0"); |
| 220 | if (BIT(ipc.keylatch, 1)) data |= input_port_read(machine, "ROW1") | input_port_read(machine, "JOY1"); |
| 221 | if (BIT(ipc.keylatch, 2)) data |= input_port_read(machine, "ROW2"); |
| 222 | if (BIT(ipc.keylatch, 3)) data |= input_port_read(machine, "ROW3"); |
| 223 | if (BIT(ipc.keylatch, 4)) data |= input_port_read(machine, "ROW4"); |
| 224 | if (BIT(ipc.keylatch, 5)) data |= input_port_read(machine, "ROW5"); |
| 225 | if (BIT(ipc.keylatch, 6)) data |= input_port_read(machine, "ROW6"); |
| 226 | if (BIT(ipc.keylatch, 7)) data |= input_port_read(machine, "ROW7"); |
| 225 | 227 | |
| 226 | 228 | return data; |
| 227 | 229 | } |
| r3280 | r3281 | |
| 230 | 232 | |
| 231 | 233 | static ADDRESS_MAP_START( ql_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 232 | 234 | AM_RANGE(0x000000, 0x00bfff) AM_ROM // 48K System ROM |
| 233 | | AM_RANGE(0x00c000, 0x00ffff) AM_ROM // 16K Cartridge ROM |
| 234 | | AM_RANGE(0x010000, 0x017fff) AM_NOP // 32K Expansion I/O |
| 235 | AM_RANGE(0x00c000, 0x00ffff) AM_ROMBANK(1) // 16K Cartridge ROM |
| 236 | AM_RANGE(0x010000, 0x017fff) AM_UNMAP // 32K Expansion I/O |
| 235 | 237 | AM_RANGE(0x018000, 0x018003) AM_DEVREAD(ZX8302, ZX8302_TAG, zx8302_rtc_r) |
| 236 | 238 | AM_RANGE(0x018000, 0x018001) AM_DEVWRITE(ZX8302, ZX8302_TAG, zx8302_rtc_w) |
| 237 | 239 | AM_RANGE(0x018002, 0x018002) AM_DEVWRITE(ZX8302, ZX8302_TAG, zx8302_control_w) |
| r3280 | r3281 | |
| 241 | 243 | AM_RANGE(0x018022, 0x018022) AM_DEVREADWRITE(ZX8302, ZX8302_TAG, zx8302_mdv_track_r, zx8302_data_w) |
| 242 | 244 | AM_RANGE(0x018023, 0x018023) AM_DEVREAD(ZX8302, ZX8302_TAG, zx8302_mdv_track_r) AM_WRITENOP |
| 243 | 245 | AM_RANGE(0x018063, 0x018063) AM_DEVWRITE(ZX8301, ZX8301_TAG, zx8301_control_w) |
| 244 | | AM_RANGE(0x01c000, 0x01ffff) AM_ROM // 16K Expansion I/O |
| 246 | AM_RANGE(0x01c000, 0x01ffff) AM_UNMAP // 16K Expansion I/O |
| 245 | 247 | AM_RANGE(0x020000, 0x03ffff) AM_DEVREADWRITE(ZX8301, ZX8301_TAG, zx8301_ram_r, zx8301_ram_w) |
| 246 | | AM_RANGE(0x040000, 0x0bffff) AM_RAMBANK(1) // 512KB Expansion RAM |
| 247 | | AM_RANGE(0x0c0000, 0x0dffff) AM_NOP // 8x16KB device slots |
| 248 | | AM_RANGE(0x0e0000, 0x0fffff) AM_NOP // 128K Expansion I/O |
| 248 | AM_RANGE(0x040000, 0x0fffff) AM_RAMBANK(2) |
| 249 | 249 | ADDRESS_MAP_END |
| 250 | 250 | |
| 251 | | static ADDRESS_MAP_START( ipc_map, ADDRESS_SPACE_PROGRAM, 8 ) |
| 252 | | AM_RANGE(0x000, 0x7ff) AM_ROM |
| 253 | | ADDRESS_MAP_END |
| 254 | | |
| 255 | 251 | static ADDRESS_MAP_START( ipc_io_map, ADDRESS_SPACE_IO, 8 ) |
| 256 | 252 | AM_RANGE(0x00, 0x7f) AM_WRITE(ipc_w) |
| 257 | 253 | AM_RANGE(0x27, 0x28) AM_READNOP // IPC reads these to set P0 (bus) to Hi-Z mode |
| 258 | 254 | AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(ipc_port1_w) |
| 259 | 255 | AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(ipc_port2_r, ipc_port2_w) |
| 260 | 256 | AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(ipc_t1_r) |
| 261 | | AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(ipc_bus_r) |
| 257 | AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(ipc_bus_r) AM_WRITENOP |
| 262 | 258 | ADDRESS_MAP_END |
| 263 | 259 | |
| 264 | 260 | /* Input Ports */ |
| r3280 | r3281 | |
| 558 | 554 | |
| 559 | 555 | static MACHINE_START( ql ) |
| 560 | 556 | { |
| 557 | /* configure ROM cartridge */ |
| 558 | |
| 559 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x00c000, 0x00ffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 560 | memory_configure_bank(1, 0, 1, memory_region(machine, "main") + 0x00c000, 0); |
| 561 | memory_set_bank(1, 0); |
| 562 | |
| 563 | /* configure RAM */ |
| 564 | |
| 561 | 565 | switch (mess_ram_size) |
| 562 | 566 | { |
| 563 | 567 | case 128*1024: |
| 564 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x0bffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 568 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 565 | 569 | break; |
| 566 | 570 | |
| 567 | 571 | case 192*1024: |
| 568 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x04ffff, 0, 0, SMH_BANK1, SMH_BANK1); |
| 569 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x050000, 0x0bffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 570 | | memory_configure_bank(1, 0, 1, mess_ram + (128 * 1024), 0); |
| 571 | | memory_set_bank(1, 0); |
| 572 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x04ffff, 0, 0, SMH_BANK2, SMH_BANK2); |
| 573 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x050000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 572 | 574 | break; |
| 573 | 575 | |
| 574 | 576 | case 256*1024: |
| 575 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x05ffff, 0, 0, SMH_BANK1, SMH_BANK1); |
| 576 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x060000, 0x0bffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 577 | | memory_configure_bank(1, 0, 1, mess_ram + (128 * 1024), 0); |
| 578 | | memory_set_bank(1, 0); |
| 577 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x05ffff, 0, 0, SMH_BANK2, SMH_BANK2); |
| 578 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x060000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 579 | 579 | break; |
| 580 | 580 | |
| 581 | 581 | case 384*1024: |
| 582 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x07ffff, 0, 0, SMH_BANK1, SMH_BANK1); |
| 583 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x080000, 0x0bffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 584 | | memory_configure_bank(1, 0, 1, mess_ram + (128 * 1024), 0); |
| 585 | | memory_set_bank(1, 0); |
| 582 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x07ffff, 0, 0, SMH_BANK2, SMH_BANK2); |
| 583 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x080000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 586 | 584 | break; |
| 587 | 585 | |
| 588 | 586 | case 640*1024: |
| 589 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x0bffff, 0, 0, SMH_BANK1, SMH_BANK1); |
| 590 | | memory_configure_bank(1, 0, 1, mess_ram + (128 * 1024), 0); |
| 591 | | memory_set_bank(1, 0); |
| 587 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x0bffff, 0, 0, SMH_BANK2, SMH_BANK2); |
| 588 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0c0000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP); |
| 592 | 589 | break; |
| 593 | 590 | |
| 594 | 591 | case 896*1024: |
| 595 | | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x0bffff, 0, 0, SMH_BANK1, SMH_BANK1); |
| 596 | | memory_configure_bank(1, 0, 1, mess_ram + (128 * 1024), 0); |
| 597 | | memory_set_bank(1, 0); |
| 592 | memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x040000, 0x0fffff, 0, 0, SMH_BANK2, SMH_BANK2); |
| 598 | 593 | break; |
| 599 | 594 | } |
| 600 | 595 | |
| 596 | memory_configure_bank(2, 0, 1, memory_region(machine, "main") + 0x050000, 0); |
| 597 | memory_set_bank(2, 0); |
| 598 | |
| 601 | 599 | // IPC |
| 602 | 600 | |
| 603 | 601 | state_save_register_global(ipc.keylatch); |
| r3280 | r3281 | |
| 619 | 617 | MDRV_CPU_PROGRAM_MAP(ql_map, 0) |
| 620 | 618 | |
| 621 | 619 | MDRV_CPU_ADD("ipc", I8749, X4) |
| 622 | | MDRV_CPU_PROGRAM_MAP(ipc_map, 0) |
| 623 | 620 | MDRV_CPU_IO_MAP(ipc_io_map, 0) |
| 624 | 621 | |
| 625 | 622 | MDRV_MACHINE_START(ql) |
| r3280 | r3281 | |
| 655 | 652 | MDRV_QUICKLOAD_ADD(ql, "bas", 0) |
| 656 | 653 | MACHINE_DRIVER_END |
| 657 | 654 | |
| 655 | static MACHINE_DRIVER_START( opd ) |
| 656 | // basic machine hardware |
| 657 | MDRV_CPU_ADD("main", M68008, 7500000) |
| 658 | MDRV_CPU_PROGRAM_MAP(ql_map, 0) |
| 659 | |
| 660 | MDRV_CPU_ADD("ipc", I8051, X4) |
| 661 | MDRV_CPU_IO_MAP(ipc_io_map, 0) |
| 662 | MACHINE_DRIVER_END |
| 663 | |
| 658 | 664 | static MACHINE_DRIVER_START( ql_ntsc ) |
| 659 | 665 | MDRV_IMPORT_FROM(ql) |
| 660 | 666 | MDRV_SCREEN_MODIFY("main") |
| r3280 | r3281 | |
| 665 | 671 | |
| 666 | 672 | /* ROMs */ |
| 667 | 673 | |
| 674 | #define ROM_IPC \ |
| 675 | ROM_REGION( 0x800, "ipc", 0 )\ |
| 676 | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 677 | |
| 668 | 678 | ROM_START( ql ) |
| 669 | 679 | ROM_REGION( 0x400000, "main", 0 ) |
| 670 | 680 | ROM_SYSTEM_BIOS( 0, "default", "v1.10 (JS)" ) |
| r3280 | r3281 | |
| 698 | 708 | ROM_SYSTEM_BIOS( 7, "min189", "Minerva v1.89" ) |
| 699 | 709 | ROMX_LOAD( "minerva.rom", 0x000000, 0x00c000, BAD_DUMP CRC(930befe3) SHA1(84a99c4df13b97f90baf1ec8cb6c2e52e3e1bb4d), ROM_BIOS(8) ) |
| 700 | 710 | |
| 701 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 702 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 703 | | /* |
| 711 | ROM_IPC |
| 712 | /* |
| 704 | 713 | ROM_REGION( 0x400, "plds", 0 ) |
| 705 | 714 | ROM_LOAD( "hal16l8.ic38", 0x0000, 0x0400, NO_DUMP ) |
| 706 | 715 | */ |
| r3280 | r3281 | |
| 711 | 720 | ROM_LOAD( "jsu.ic33", 0x000000, 0x008000, BAD_DUMP CRC(e397f49f) SHA1(c06f92eabaf3e6dd298c51cb7f7535d8ef0ef9c5) ) |
| 712 | 721 | ROM_LOAD( "jsu.ic34", 0x008000, 0x004000, BAD_DUMP CRC(3debbacc) SHA1(9fbc3e42ec463fa42f9c535d63780ff53a9313ec) ) |
| 713 | 722 | |
| 714 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 715 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 723 | ROM_IPC |
| 716 | 724 | ROM_END |
| 717 | 725 | |
| 718 | 726 | ROM_START( ql_es ) |
| r3280 | r3281 | |
| 720 | 728 | ROM_LOAD( "mge.ic33", 0x000000, 0x008000, BAD_DUMP CRC(d5293bde) SHA1(bf5af7e53a472d4e9871f182210787d601db0634) ) |
| 721 | 729 | ROM_LOAD( "mge.ic34", 0x008000, 0x004000, BAD_DUMP CRC(a694f8d7) SHA1(bd2868656008de85d7c191598588017ae8aa3339) ) |
| 722 | 730 | |
| 723 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 724 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 731 | ROM_IPC |
| 725 | 732 | ROM_END |
| 726 | 733 | |
| 727 | 734 | ROM_START( ql_fr ) |
| r3280 | r3281 | |
| 729 | 736 | ROM_LOAD( "mgf.ic33", 0x000000, 0x008000, NO_DUMP ) |
| 730 | 737 | ROM_LOAD( "mgf.ic34", 0x008000, 0x004000, NO_DUMP ) |
| 731 | 738 | |
| 732 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 733 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 739 | ROM_IPC |
| 734 | 740 | ROM_END |
| 735 | 741 | |
| 736 | 742 | ROM_START( ql_de ) |
| r3280 | r3281 | |
| 746 | 752 | ROM_SYSTEM_BIOS( 2, "ultramg", "Ultrasoft" ) |
| 747 | 753 | ROMX_LOAD( "ultramg.rom", 0x000000, 0x00c000, BAD_DUMP CRC(ad12463b) SHA1(0561b3bc7ce090f3101b2142ee957c18c250eefa), ROM_BIOS(3) ) |
| 748 | 754 | |
| 749 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 750 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 755 | ROM_IPC |
| 751 | 756 | ROM_END |
| 752 | 757 | |
| 753 | 758 | ROM_START( ql_it ) |
| r3280 | r3281 | |
| 755 | 760 | ROM_LOAD( "mgi.ic33", 0x000000, 0x008000, BAD_DUMP CRC(d5293bde) SHA1(bf5af7e53a472d4e9871f182210787d601db0634) ) |
| 756 | 761 | ROM_LOAD( "mgi.ic34", 0x008000, 0x004000, BAD_DUMP CRC(a2fdfb83) SHA1(162b1052737500f3c13497cdf0f813ba006bdae9) ) |
| 757 | 762 | |
| 758 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 759 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 763 | ROM_IPC |
| 760 | 764 | ROM_END |
| 761 | 765 | |
| 762 | 766 | ROM_START( ql_se ) |
| r3280 | r3281 | |
| 764 | 768 | ROM_LOAD( "mgs.ic33", 0x000000, 0x008000, NO_DUMP ) |
| 765 | 769 | ROM_LOAD( "mgs.ic34", 0x008000, 0x004000, NO_DUMP ) |
| 766 | 770 | |
| 767 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 768 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 771 | ROM_IPC |
| 769 | 772 | ROM_END |
| 770 | 773 | |
| 771 | 774 | ROM_START( ql_gr ) |
| r3280 | r3281 | |
| 773 | 776 | ROM_LOAD( "efp.ic33", 0x000000, 0x008000, BAD_DUMP CRC(eb181641) SHA1(43c1e0215cf540cbbda240b1048910ff55681059) ) |
| 774 | 777 | ROM_LOAD( "efp.ic34", 0x008000, 0x004000, BAD_DUMP CRC(4c3b34b7) SHA1(f9dc571d2d4f68520b306ecc7516acaeea69ec0d) ) |
| 775 | 778 | |
| 776 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 777 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 779 | ROM_IPC |
| 778 | 780 | ROM_END |
| 779 | 781 | |
| 780 | 782 | ROM_START( ql_dk ) |
| 781 | 783 | ROM_REGION( 0x400000, "main", 0 ) |
| 782 | | ROM_LOAD( "mgd.ic33", 0x000000, 0x008000, BAD_DUMP CRC(f57755eb) SHA1(dc57939ffb8741e17967a1d2479c339750ec7ff6) ) |
| 783 | | ROM_LOAD( "mgd.ic34", 0x008000, 0x004000, BAD_DUMP CRC(1892465a) SHA1(0ff3046b5276da6639d3fe79b22ae25cc265d540) ) |
| 784 | ROM_LOAD( "mgd.ic33", 0x000000, 0x008000, BAD_DUMP CRC(f57755eb) SHA1(dc57939ffb8741e17967a1d2479c339750ec7ff6) ) |
| 785 | ROM_LOAD( "mgd.ic34", 0x008000, 0x004000, BAD_DUMP CRC(1892465a) SHA1(0ff3046b5276da6639d3fe79b22ae25cc265d540) ) |
| 784 | 786 | ROM_LOAD( "extra.rom", 0x01c000, 0x004000, NO_DUMP ) |
| 785 | 787 | |
| 786 | | ROM_REGION( 0x800, "ipc", 0 ) |
| 787 | | ROM_LOAD( "ipc8049.ic24", 0x0000, 0x0800, CRC(6a0d1f20) SHA1(fcb1c97ee7c66e5b6d8fbb57c06fd2f6509f2e1b) ) |
| 788 | ROM_IPC |
| 788 | 789 | ROM_END |
| 789 | 790 | |
| 791 | ROM_START( tonto ) |
| 792 | ROM_REGION( 0x400000, "main", 0 ) |
| 793 | ROM_LOAD( "bios-1.rom", 0x000000, 0x008000, NO_DUMP ) |
| 794 | ROM_LOAD( "bios-2.rom", 0x008000, 0x008000, NO_DUMP ) |
| 795 | ROM_LOAD( "bios-3.rom", 0x010000, 0x008000, NO_DUMP ) |
| 796 | ROM_LOAD( "bios-4.rom", 0x018000, 0x008000, NO_DUMP ) |
| 797 | |
| 798 | ROM_REGION( 0x10000, "i8051", 0 ) |
| 799 | ROM_LOAD( "8051-1.rom", 0x000000, 0x010000, NO_DUMP ) |
| 800 | |
| 801 | ROM_REGION( 0x10000, "tms5220", 0 ) |
| 802 | ROM_LOAD( "tms5220.rom", 0x000000, 0x004000, NO_DUMP ) |
| 803 | |
| 804 | ROM_REGION( 0x400000, "rompack", 0 ) |
| 805 | ROM_LOAD( "rompack-1.rom", 0x000000, 0x008000, NO_DUMP ) |
| 806 | ROM_LOAD( "rompack-2.rom", 0x008000, 0x008000, NO_DUMP ) |
| 807 | ROM_LOAD( "rompack-3.rom", 0x010000, 0x008000, NO_DUMP ) |
| 808 | ROM_LOAD( "rompack-4.rom", 0x018000, 0x008000, NO_DUMP ) |
| 809 | ROM_LOAD( "rompack-5.rom", 0x020000, 0x008000, NO_DUMP ) |
| 810 | ROM_END |
| 811 | |
| 812 | ROM_START( megaopd ) |
| 813 | ROM_REGION( 0x400000, "main", 0 ) |
| 814 | ROM_LOAD( "bios-1.rom", 0x000000, 0x008000, NO_DUMP ) |
| 815 | ROM_LOAD( "bios-2.rom", 0x008000, 0x008000, NO_DUMP ) |
| 816 | ROM_LOAD( "bios-3.rom", 0x010000, 0x008000, NO_DUMP ) |
| 817 | ROM_LOAD( "bios-4.rom", 0x018000, 0x008000, NO_DUMP ) |
| 818 | |
| 819 | ROM_REGION( 0x10000, "i8051", 0 ) |
| 820 | ROM_LOAD( "8051-1.rom", 0x000000, 0x010000, NO_DUMP ) |
| 821 | |
| 822 | ROM_REGION( 0x10000, "tms5220", 0 ) |
| 823 | ROM_LOAD( "tms5220.rom", 0x000000, 0x004000, NO_DUMP ) |
| 824 | |
| 825 | ROM_REGION( 0x400000, "rompack", 0 ) |
| 826 | ROM_LOAD( "rompack-1.rom", 0x000000, 0x008000, NO_DUMP ) |
| 827 | ROM_LOAD( "rompack-2.rom", 0x008000, 0x008000, NO_DUMP ) |
| 828 | ROM_LOAD( "rompack-3.rom", 0x010000, 0x008000, NO_DUMP ) |
| 829 | ROM_LOAD( "rompack-4.rom", 0x018000, 0x008000, NO_DUMP ) |
| 830 | ROM_LOAD( "rompack-5.rom", 0x020000, 0x008000, NO_DUMP ) |
| 831 | ROM_END |
| 832 | |
| 790 | 833 | /* System Configuration */ |
| 791 | 834 | |
| 792 | 835 | static QUICKLOAD_LOAD( ql ) |
| r3280 | r3281 | |
| 796 | 839 | return INIT_PASS; |
| 797 | 840 | } |
| 798 | 841 | |
| 799 | | static DEVICE_IMAGE_LOAD( ql_serial ) |
| 800 | | { |
| 801 | | /* filename specified */ |
| 802 | | if (device_load_serial_device(image)==INIT_PASS) |
| 803 | | { |
| 804 | | /* setup transmit parameters */ |
| 805 | | serial_device_setup(image, 9600, 8, 1, SERIAL_PARITY_NONE); |
| 806 | | |
| 807 | | serial_device_set_protocol(image, SERIAL_PROTOCOL_NONE); |
| 808 | | |
| 809 | | /* and start transmit */ |
| 810 | | serial_device_set_transmit_state(image, 1); |
| 811 | | |
| 812 | | return INIT_PASS; |
| 813 | | } |
| 814 | | |
| 815 | | return INIT_FAIL; |
| 816 | | } |
| 817 | | |
| 818 | 842 | static void ql_serial_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info) |
| 819 | 843 | { |
| 820 | 844 | /* serial */ |
| r3280 | r3281 | |
| 826 | 850 | |
| 827 | 851 | /* --- the following bits of info are returned as pointers to data or functions --- */ |
| 828 | 852 | case MESS_DEVINFO_PTR_START: info->start = DEVICE_START_NAME(serial_device); break; |
| 829 | | case MESS_DEVINFO_PTR_LOAD: info->load = DEVICE_IMAGE_LOAD_NAME(ql_serial); break; |
| 853 | case MESS_DEVINFO_PTR_LOAD: info->load = DEVICE_IMAGE_LOAD_NAME(serial_device); break; |
| 830 | 854 | case MESS_DEVINFO_PTR_UNLOAD: info->unload = DEVICE_IMAGE_UNLOAD_NAME(serial_device); break; |
| 831 | 855 | |
| 832 | 856 | /* --- the following bits of info are returned as NULL-terminated strings --- */ |
| r3280 | r3281 | |
| 843 | 867 | { |
| 844 | 868 | if (image_fread(image, ptr, filesize) == filesize) |
| 845 | 869 | { |
| 870 | memory_install_readwrite8_handler(image->machine, 0, ADDRESS_SPACE_PROGRAM, 0x00c000, 0x00ffff, 0, 0, SMH_BANK1, SMH_UNMAP); |
| 871 | |
| 846 | 872 | return INIT_PASS; |
| 847 | 873 | } |
| 848 | 874 | } |
| r3280 | r3281 | |
| 854 | 880 | { |
| 855 | 881 | switch( state ) |
| 856 | 882 | { |
| 857 | | case MESS_DEVINFO_INT_COUNT: |
| 858 | | info->i = 1; |
| 859 | | break; |
| 860 | | case MESS_DEVINFO_PTR_LOAD: |
| 861 | | info->load = DEVICE_IMAGE_LOAD_NAME(ql_cart); |
| 862 | | break; |
| 863 | | case MESS_DEVINFO_STR_FILE_EXTENSIONS: |
| 864 | | strcpy(info->s = device_temp_str(), "bin"); |
| 865 | | break; |
| 866 | | default: |
| 867 | | cartslot_device_getinfo( devclass, state, info ); |
| 868 | | break; |
| 883 | /* --- the following bits of info are returned as 64-bit signed integers --- */ |
| 884 | case MESS_DEVINFO_INT_COUNT: info->i = 1; break; |
| 885 | |
| 886 | /* --- the following bits of info are returned as pointers to data or functions --- */ |
| 887 | case MESS_DEVINFO_PTR_LOAD: info->load = DEVICE_IMAGE_LOAD_NAME(ql_cart); break; |
| 888 | |
| 889 | /* --- the following bits of info are returned as NULL-terminated strings --- */ |
| 890 | case MESS_DEVINFO_STR_FILE_EXTENSIONS: strcpy(info->s = device_temp_str(), "bin"); break; |
| 891 | |
| 892 | default: cartslot_device_getinfo( devclass, state, info ); break; |
| 869 | 893 | } |
| 870 | 894 | } |
| 871 | 895 | |
| r3280 | r3281 | |
| 902 | 926 | |
| 903 | 927 | static void ql_floppy_getinfo(const mess_device_class *devclass, UINT32 state, union devinfo *info) |
| 904 | 928 | { |
| 905 | | /* floppy */ |
| 906 | 929 | switch(state) |
| 907 | 930 | { |
| 908 | 931 | /* --- the following bits of info are returned as 64-bit signed integers --- */ |
| r3280 | r3281 | |
| 930 | 953 | CONFIG_DEVICE(ql_floppy_getinfo) |
| 931 | 954 | SYSTEM_CONFIG_END |
| 932 | 955 | |
| 956 | static SYSTEM_CONFIG_START( opd ) |
| 957 | CONFIG_RAM_DEFAULT (128 * 1024) |
| 958 | CONFIG_RAM (256 * 1024) // 128K expansion |
| 959 | SYSTEM_CONFIG_END |
| 960 | |
| 961 | static SYSTEM_CONFIG_START( megaopd ) |
| 962 | CONFIG_RAM_DEFAULT (256 * 1024) |
| 963 | SYSTEM_CONFIG_END |
| 964 | |
| 933 | 965 | /* Computer Drivers */ |
| 934 | 966 | |
| 935 | 967 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT CONFIG COMPANY FULLNAME FLAGS */ |
| r3280 | r3281 | |
| 942 | 974 | COMP( 1985, ql_se, ql, 0, ql, ql_se, 0, ql, "Sinclair Research Ltd", "QL (Sweden)", GAME_SUPPORTS_SAVE ) |
| 943 | 975 | COMP( 1985, ql_dk, ql, 0, ql, ql_dk, 0, ql, "Sinclair Research Ltd", "QL (Denmark)", GAME_NOT_WORKING ) |
| 944 | 976 | COMP( 1985, ql_gr, ql, 0, ql, ql, 0, ql, "Sinclair Research Ltd", "QL (Greece)", GAME_SUPPORTS_SAVE ) |
| 977 | COMP( 1984, tonto, 0, 0, ql, ql, 0, opd, "British Telecom Business Systems", "Merlin M1800 Tonto", GAME_NOT_WORKING ) |
| 978 | COMP( 1986, megaopd,tonto, 0, ql, ql, 0, megaopd,"International Computer Limited", "MegaOPD (USA)", GAME_NOT_WORKING ) |