diff options
Diffstat (limited to 'src/mame/drivers/tandy1t.cpp')
-rw-r--r-- | src/mame/drivers/tandy1t.cpp | 309 |
1 files changed, 182 insertions, 127 deletions
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp index 3ba893c7610..cf1aabfc0ed 100644 --- a/src/mame/drivers/tandy1t.cpp +++ b/src/mame/drivers/tandy1t.cpp @@ -36,35 +36,51 @@ Tandy 1000 (80386) variations: #include "machine/pckeybrd.h" #include "machine/nvram.h" #include "machine/pc_fdc.h" +#include "machine/bankdev.h" #include "video/pc_t1t.h" #include "sound/sn76496.h" #include "cpu/i86/i86.h" #include "cpu/i86/i286.h" -#include "bus/isa/isa.h" -#include "bus/isa/isa_cards.h" #include "softlist.h" +class t1000_mb_device : public pc_noppi_mb_device +{ +public: + // construction/destruction + t1000_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : pc_noppi_mb_device(mconfig, tag, owner, clock) { } +protected: + virtual void device_start() override; +}; + +void t1000_mb_device::device_start() +{ +} + +const device_type T1000_MOTHERBOARD = &device_creator<t1000_mb_device>; + class tandy1000_state : public driver_device { public: tandy1000_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - , m_romcs0(*this, "romcs0") - , m_romcs1(*this, "romcs1") , m_biosbank(*this, "biosbank") , m_keyboard(*this, "pc_keyboard") - , m_mb(*this, "mb") { } + , m_mb(*this, "mb") + , m_video(*this, "pcvideo_t1000") + , m_ram(*this, RAM_TAG) + , m_vram_bank(0) { } required_device<cpu_device> m_maincpu; // Memory regions for the machines that support rom banking - optional_memory_region m_romcs0; - optional_memory_region m_romcs1; - optional_memory_bank m_biosbank; + optional_device<address_map_bank_device> m_biosbank; required_device<pc_keyboard_device> m_keyboard; - required_device<pc_noppi_mb_device> m_mb; + required_device<t1000_mb_device> m_mb; + required_device<pcvideo_t1000_device> m_video; + required_device<ram_device> m_ram; DECLARE_WRITE8_MEMBER ( pc_t1t_p37x_w ); DECLARE_READ8_MEMBER ( pc_t1t_p37x_r ); @@ -73,13 +89,18 @@ public: DECLARE_READ8_MEMBER(tandy1000_pio_r); DECLARE_READ8_MEMBER( tandy1000_bank_r ); DECLARE_WRITE8_MEMBER( tandy1000_bank_w ); + DECLARE_WRITE8_MEMBER( nmi_vram_bank_w ); + DECLARE_WRITE8_MEMBER( vram_bank_w ); + DECLARE_READ8_MEMBER( vram_r ); + DECLARE_WRITE8_MEMBER( vram_w ); + DECLARE_WRITE8_MEMBER( devctrl_w ); + DECLARE_READ8_MEMBER( unk_r ); int tandy1000_read_eeprom(); void tandy1000_write_eeprom(UINT8 data); void tandy1000_set_bios_bank(); - DECLARE_DRIVER_INIT(t1000hx); - DECLARE_DRIVER_INIT(t1000sl); + void machine_start() override; DECLARE_MACHINE_RESET(tandy1000rl); @@ -97,6 +118,7 @@ public: UINT8 m_tandy_bios_bank; /* I/O port FFEAh */ UINT8 m_tandy_ppi_portb, m_tandy_ppi_portc; + UINT8 m_vram_bank; }; /* tandy 1000 eeprom @@ -294,39 +316,64 @@ READ8_MEMBER(tandy1000_state::tandy1000_pio_r) return data; } +WRITE8_MEMBER( tandy1000_state::nmi_vram_bank_w ) +{ + m_mb->nmi_enable_w(space, 0, data & 0x80); + vram_bank_w(space, 0, data & 0x1e); + m_video->disable_w((data & 1) ? ASSERT_LINE : CLEAR_LINE); +} -void tandy1000_state::tandy1000_set_bios_bank() +WRITE8_MEMBER( tandy1000_state::vram_bank_w ) { - UINT8 *p = nullptr; + m_vram_bank = (data >> 1) & 7; +} - assert( m_romcs0 != nullptr ); - assert( m_romcs1 != nullptr ); - assert( m_biosbank != nullptr ); +WRITE8_MEMBER( tandy1000_state::devctrl_w ) +{ + m_video->disable_w((data & 4) ? ASSERT_LINE : CLEAR_LINE); +} + +READ8_MEMBER( tandy1000_state::unk_r ) +{ + return 0; // status port? +} + +READ8_MEMBER( tandy1000_state::vram_r ) +{ + UINT8 vram_base = (m_ram->size() >> 17) - 1; + if((m_vram_bank - vram_base) == (offset >> 17)) + return m_ram->pointer()[offset & 0x1ffff]; + return 0xff; +} + +WRITE8_MEMBER( tandy1000_state::vram_w ) +{ + UINT8 vram_base = (m_ram->size() >> 17) - 1; + if((m_vram_bank - vram_base) == (offset >> 17)) + m_ram->pointer()[offset & 0x1ffff] = data; +} + +void tandy1000_state::tandy1000_set_bios_bank() +{ + int bank; if ( m_tandy_bios_bank & 0x10 ) { - if ( m_tandy_bios_bank & 0x04 ) + if (m_tandy_bios_bank & 0x04 ) { - p = m_romcs0->base() + ( m_tandy_bios_bank & 0x03 ) * 0x10000; + bank = (m_tandy_bios_bank & 3) + 8; } else { - p = m_romcs1->base() + ( m_tandy_bios_bank & 0x03 ) * 0x10000; + bank = m_tandy_bios_bank & 3; } } else { - if ( m_tandy_bios_bank & 0x08 ) - { - p = m_romcs0->base() + ( m_tandy_bios_bank & 0x07 ) * 0x10000; - } - else - { - p = m_romcs1->base() + ( m_tandy_bios_bank & 0x07 ) * 0x10000; - } + bank = m_tandy_bios_bank & 0x0f; } - m_biosbank->set_base( p ); + m_biosbank->set_bank( bank ); } MACHINE_RESET_MEMBER(tandy1000_state, tandy1000rl) @@ -335,28 +382,18 @@ MACHINE_RESET_MEMBER(tandy1000_state, tandy1000rl) tandy1000_set_bios_bank(); } -DRIVER_INIT_MEMBER(tandy1000_state,t1000hx) +void tandy1000_state::machine_start() { + m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - (128*1024) - 1, &m_ram->pointer()[128*1024]); + if(m_maincpu->space(AS_PROGRAM).data_width() == 8) + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(m_ram->size() - (128*1024), 640*1024 - 1, + read8_delegate(FUNC(tandy1000_state::vram_r), this), write8_delegate(FUNC(tandy1000_state::vram_w), this)); + else + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(m_ram->size() - (128*1024), 640*1024 - 1, + read8_delegate(FUNC(tandy1000_state::vram_r), this), write8_delegate(FUNC(tandy1000_state::vram_w), this), 0xffff); machine().device<nvram_device>("nvram")->set_base(m_eeprom_ee, sizeof(m_eeprom_ee)); } - -DRIVER_INIT_MEMBER(tandy1000_state,t1000sl) -{ - // Fix up memory region (highest address bit flipped??) - UINT8 *rom = memregion("romcs0")->base(); - - for( int i = 0; i < 0x40000; i++ ) - { - UINT8 d = rom[0x40000 + i]; - rom[0x40000 + i] = rom[i]; - rom[i] = d; - } - - DRIVER_INIT_NAME(t1000hx)(); -} - - READ8_MEMBER( tandy1000_state::tandy1000_bank_r ) { UINT8 data = 0xFF; @@ -467,61 +504,64 @@ static INPUT_PORTS_START( tandy1t ) INPUT_PORTS_END static ADDRESS_MAP_START(tandy1000_map, AS_PROGRAM, 8, tandy1000_state ) - AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10") - AM_RANGE(0xa0000, 0xaffff) AM_RAM - AM_RANGE(0xb0000, 0xb7fff) AM_NOP - AM_RANGE(0xb8000, 0xbffff) AM_DEVREADWRITE("pcvideo_t1000", pcvideo_t1000_device, videoram_r, videoram_w); - AM_RANGE(0xc0000, 0xc7fff) AM_NOP - AM_RANGE(0xc8000, 0xc9fff) AM_ROM - AM_RANGE(0xca000, 0xcffff) AM_NOP - AM_RANGE(0xd0000, 0xeffff) AM_NOP - AM_RANGE(0xf0000, 0xfffff) AM_ROM + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_t1000:vram", address_map_bank_device, amap8) + AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) ADDRESS_MAP_END static ADDRESS_MAP_START(tandy1000_io, AS_IO, 8, tandy1000_state ) - AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r, tandy1000_pio_w) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r, tandy1000_pio_w) + AM_RANGE(0x00a0, 0x00a0) AM_WRITE(nmi_vram_bank_w) AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", ncr7496_device, write) + AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", t1000_mb_device, map) AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w) - AM_RANGE(0x0378, 0x037f) AM_READWRITE(pc_t1t_p37x_r, pc_t1t_p37x_w) + AM_RANGE(0x0378, 0x037f) AM_READWRITE(pc_t1t_p37x_r, pc_t1t_p37x_w) AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE("pcvideo_t1000", pcvideo_t1000_device, read, write) ADDRESS_MAP_END -static ADDRESS_MAP_START(tandy1000_16_map, AS_PROGRAM, 16, tandy1000_state ) - AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10") - AM_RANGE(0xa0000, 0xaffff) AM_RAM - AM_RANGE(0xb0000, 0xb7fff) AM_NOP - AM_RANGE(0xb8000, 0xbffff) AM_DEVREADWRITE8("pcvideo_t1000", pcvideo_t1000_device, videoram_r, videoram_w, 0xffff) - AM_RANGE(0xc0000, 0xc7fff) AM_NOP - AM_RANGE(0xc8000, 0xc9fff) AM_ROM - AM_RANGE(0xca000, 0xcffff) AM_NOP - AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("biosbank") /* Banked part of the BIOS */ - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "romcs0", 0x70000 ) +static ADDRESS_MAP_START(tandy1000_bank_map, AS_PROGRAM, 16, tandy1000_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff) + AM_RANGE(0xe0000, 0xeffff) AM_DEVICE("biosbank", address_map_bank_device, amap16) + AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "rom", 0x70000 ) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(biosbank_map, AS_0, 16, tandy1000_state) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("rom", 0) ADDRESS_MAP_END static ADDRESS_MAP_START(tandy1000_16_io, AS_IO, 16, tandy1000_state ) - AM_RANGE(0x0060, 0x0063) AM_READWRITE8(tandy1000_pio_r, tandy1000_pio_w, 0xffff) - AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8("sn76496", ncr7496_device, write, 0xffff) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0060, 0x0063) AM_READWRITE8(tandy1000_pio_r, tandy1000_pio_w, 0xffff) + AM_RANGE(0x0064, 0x0065) AM_WRITE8(devctrl_w, 0xff00) + AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff) + AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8("sn76496", ncr7496_device, write, 0xffff) + AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", t1000_mb_device, map, 0xffff) AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff) - AM_RANGE(0x0378, 0x037f) AM_READWRITE8(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff) + AM_RANGE(0x0378, 0x037f) AM_READWRITE8(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff) AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("pcvideo_t1000", pcvideo_t1000_device, read, write, 0xffff) + AM_RANGE(0xffe8, 0xffe9) AM_WRITE8(vram_bank_w, 0x00ff) ADDRESS_MAP_END -static ADDRESS_MAP_START(tandy1000_16_bank_io, AS_IO, 16, tandy1000_state ) +static ADDRESS_MAP_START(tandy1000_bank_io, AS_IO, 16, tandy1000_state ) + ADDRESS_MAP_UNMAP_HIGH AM_IMPORT_FROM(tandy1000_16_io) AM_RANGE(0xffea, 0xffeb) AM_READWRITE8(tandy1000_bank_r, tandy1000_bank_w, 0xffff) ADDRESS_MAP_END +static ADDRESS_MAP_START(tandy1000tx_io, AS_IO, 16, tandy1000_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x00a0, 0x00a1) AM_WRITE8(nmi_vram_bank_w, 0x00ff) + AM_IMPORT_FROM(tandy1000_16_io) +ADDRESS_MAP_END + static ADDRESS_MAP_START(tandy1000_286_map, AS_PROGRAM, 16, tandy1000_state ) + ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x000fffff) - AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10") - AM_RANGE(0xa0000, 0xaffff) AM_RAM - AM_RANGE(0xb0000, 0xb7fff) AM_NOP - AM_RANGE(0xb8000, 0xbffff) AM_DEVREADWRITE8("pcvideo_t1000", pcvideo_t1000_device, videoram_r, videoram_w, 0xffff) - AM_RANGE(0xc0000, 0xc7fff) AM_NOP - AM_RANGE(0xc8000, 0xc9fff) AM_ROM - AM_RANGE(0xca000, 0xcffff) AM_NOP - AM_RANGE(0xe0000, 0xeffff) AM_NOP - AM_RANGE(0xf8000, 0xfffff) AM_ROM + AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff) + AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) ADDRESS_MAP_END static const gfx_layout t1000_charlayout = @@ -555,7 +595,8 @@ static GFXDECODE_START( t1000 ) GFXDECODE_END static MACHINE_CONFIG_FRAGMENT(tandy1000_common) - MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu") + MCFG_DEVICE_ADD("mb", T1000_MOTHERBOARD, 0) + t1000_mb_device::static_set_cputag(*device, "maincpu"); /* video hardware */ MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000") @@ -591,6 +632,8 @@ static MACHINE_CONFIG_START( t1000hx, tandy1000_state ) // plus cards are isa with a nonstandard conntector MCFG_ISA8_SLOT_ADD("mb:isa", "plus1", pc_isa8_cards, nullptr, false) + MCFG_DEVICE_MODIFY(RAM_TAG) + MCFG_RAM_EXTRA_OPTIONS("256K, 384K") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( t1000sx, t1000hx ) @@ -604,21 +647,31 @@ static MACHINE_CONFIG_DERIVED( t1000sx, t1000hx ) /* software lists */ MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150") + MCFG_DEVICE_MODIFY(RAM_TAG) + MCFG_RAM_EXTRA_OPTIONS("384K") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( t1000_16, tandy1000_state ) +static MACHINE_CONFIG_START( t1000rl, tandy1000_state ) MCFG_CPU_ADD("maincpu", I8086, XTAL_28_63636MHz / 3) - MCFG_CPU_PROGRAM_MAP(tandy1000_16_map) - MCFG_CPU_IO_MAP(tandy1000_16_bank_io) + MCFG_CPU_PROGRAM_MAP(tandy1000_bank_map) + MCFG_CPU_IO_MAP(tandy1000_bank_io) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb) MCFG_FRAGMENT_ADD(tandy1000_common) - MCFG_MACHINE_RESET_OVERRIDE(tandy1000_state,tandy1000rl) + MCFG_DEVICE_ADD("biosbank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(biosbank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000) + MCFG_MACHINE_RESET_OVERRIDE(tandy1000_state,tandy1000rl) + MCFG_DEVICE_MODIFY(RAM_TAG) + MCFG_RAM_EXTRA_OPTIONS("384K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( t1000_16_8, t1000_16 ) +static MACHINE_CONFIG_DERIVED( t1000sl2, t1000rl ) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_CLOCK( XTAL_24MHz / 3 ) @@ -628,7 +681,7 @@ static MACHINE_CONFIG_DERIVED( t1000_16_8, t1000_16 ) MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, nullptr, false) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( t1000_286, tandy1000_state ) +static MACHINE_CONFIG_START( t1000tl, tandy1000_state ) MCFG_CPU_ADD("maincpu", I80286, XTAL_28_63636MHz / 2) MCFG_CPU_PROGRAM_MAP(tandy1000_286_map) MCFG_CPU_IO_MAP(tandy1000_16_io) @@ -643,14 +696,19 @@ static MACHINE_CONFIG_START( t1000_286, tandy1000_state ) MCFG_ISA8_SLOT_ADD("mb:isa", "isa5", pc_isa8_cards, nullptr, false) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( t1000tx, t1000tl ) + MCFG_CPU_MODIFY( "maincpu" ) + MCFG_CPU_IO_MAP(tandy1000tx_io) +MACHINE_CONFIG_END + #ifdef UNUSED_DEFINITION ROM_START( t1000 ) // Schematics displays 2 32KB ROMs at U9 and U10 - ROM_REGION(0x100000,"maincpu", 0) + ROM_REGION(0x20000,"bios", 0) ROM_SYSTEM_BIOS( 0, "v010000", "v010000" ) - ROMX_LOAD("v010000.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(1)) + ROMX_LOAD("v010000.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(1)) ROM_SYSTEM_BIOS( 1, "v010100", "v010100" ) - ROMX_LOAD("v010100.f0", 0xf0000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9), ROM_BIOS(2)) + ROMX_LOAD("v010100.f0", 0x10000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9), ROM_BIOS(2)) // Part of video array at u76? ROM_REGION(0x08000,"gfx1", 0) @@ -658,21 +716,21 @@ ROM_START( t1000 ) ROM_END ROM_START( t1000a ) - ROM_REGION(0x100000,"maincpu", 0) + ROM_REGION(0x20000,"bios", 0) // partlist says it has 1 128kbyte rom - ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one - ROM_LOAD("v010100.f0", 0xf0000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9)) + ROM_LOAD("t1000hx.e0", 0x00000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one + ROM_LOAD("v010100.f0", 0x10000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9)) ROM_REGION(0x08000,"gfx1", 0) ROM_LOAD("8079027.u25", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450)) // TODO: Verify location ROM_END ROM_START( t1000ex ) - ROM_REGION(0x100000,"maincpu", 0) + ROM_REGION(0x20000,"bios", 0) // partlist says it has 1 128kb rom, schematics list a 32k x 8 rom // "8040328.u17" - ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one - ROM_LOAD("v010200.f0", 0xf0000, 0x10000, CRC(0e016ecf) SHA1(2f5ac8921b7cba56b02122ef772f5f11bbf6d8a2)) + ROM_LOAD("t1000hx.e0", 0x00000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one + ROM_LOAD("v010200.f0", 0x10000, 0x10000, CRC(0e016ecf) SHA1(2f5ac8921b7cba56b02122ef772f5f11bbf6d8a2)) // TODO: Add dump of the 8048 at u8 if it ever gets dumped ROM_REGION(0x400, "kbdc", 0) @@ -685,22 +743,22 @@ ROM_END // The T1000SL and T1000SL/2 only differ in amount of RAM installed and BIOS version (SL/2 has v01.04.04) ROM_START( t1000sl ) - ROM_REGION(0x100000,"maincpu", 0) + ROM_REGION(0x20000,"bios", 0) // 8076312.hu1 - most likely v01.04.00 // 8075312.hu2 // partlist says it has 1 128kbyte rom - ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one + ROM_LOAD("t1000hx.e0", 0x00000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one ROM_SYSTEM_BIOS( 0, "v010400", "v010400" ) - ROMX_LOAD("v010400.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(1) ) + ROMX_LOAD("v010400.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(1) ) ROM_SYSTEM_BIOS( 1, "v010401", "v010401" ) - ROMX_LOAD("v010401.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(2) ) + ROMX_LOAD("v010401.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(2) ) ROM_SYSTEM_BIOS( 2, "v010402", "v010402" ) - ROMX_LOAD("v010402.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(3) ) + ROMX_LOAD("v010402.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(3) ) ROM_SYSTEM_BIOS( 3, "v020001", "v020001" ) - ROMX_LOAD("v020001.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(4) ) + ROMX_LOAD("v020001.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(4) ) ROM_REGION(0x08000,"gfx1", 0) ROM_LOAD("8079027.u25", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450)) @@ -708,7 +766,7 @@ ROM_END ROM_START( t1000tl ) - ROM_REGIoN(0x100000, "maincpu", ROMREGION_ERASE00) + ROM_REGIoN(0x10000, "bios", ROMREGION_ERASE00) ROM_REGION(0x80000, "romcs0", 0) // These 2 sets most likely have the same contents @@ -731,8 +789,8 @@ ROM_END #endif ROM_START( t1000hx ) - ROM_REGION(0x100000,"maincpu", 0) - ROM_LOAD("v020000.u12", 0xe0000, 0x20000, CRC(6f3acd80) SHA1(976af8c04c3f6fde14d7047f6521d302bdc2d017)) // TODO: Rom label + ROM_REGION(0x20000,"bios", 0) + ROM_LOAD("v020000.u12", 0x00000, 0x20000, CRC(6f3acd80) SHA1(976af8c04c3f6fde14d7047f6521d302bdc2d017)) // TODO: Rom label // TODO: Add dump of the 8048 at u9 if it ever gets dumped ROM_REGION(0x400, "kbdc", 0) @@ -743,8 +801,8 @@ ROM_START( t1000hx ) ROM_END ROM_START( t1000sx ) - ROM_REGION(0x100000,"maincpu", 0) - ROM_LOAD("8040328.u41", 0xf8000, 0x8000, CRC(4e2b9f0b) SHA1(e79a9ed9e885736e30d9b135557f0e596ce5a70b)) + ROM_REGION(0x20000,"bios", 0) + ROM_LOAD("8040328.u41", 0x18000, 0x8000, CRC(4e2b9f0b) SHA1(e79a9ed9e885736e30d9b135557f0e596ce5a70b)) // No character rom is listed in the schematics? // But disabling it results in no text being printed @@ -755,10 +813,10 @@ ROM_END ROM_START( t1000tx ) - ROM_REGION(0x100000,"maincpu", 0) + ROM_REGION(0x20000,"bios", 0) // There should be 2 32KBx8 ROMs, one for odd at u38, one for even at u39 // The machine already boots up with just this one rom - ROM_LOAD("t1000tx.bin", 0xf8000, 0x8000, BAD_DUMP CRC(9b34765c) SHA1(0b07e87f6843393f7d4ca4634b832b0c0bec304e)) + ROM_LOAD("t1000tx.bin", 0x18000, 0x8000, BAD_DUMP CRC(9b34765c) SHA1(0b07e87f6843393f7d4ca4634b832b0c0bec304e)) // No character rom is listed in the schematics? // It is most likely part of the big blue chip at u36 @@ -768,14 +826,11 @@ ROM_END ROM_START( t1000rl ) - ROM_REGION(0x100000,"maincpu", ROMREGION_ERASE00) - // bankable ROM regions - ROM_REGION(0x80000, "romcs0", 0) + ROM_REGION(0x80000, "rom", 0) /* v2.0.0.1 */ /* Rom is labeled "(C) TANDY CORP. 1990 // 8079073 // LH534G70 JAPAN // 9034 D" */ ROM_LOAD("8079073.u23", 0x00000, 0x80000, CRC(6fab50f7) SHA1(2ccc02bee4c250dc1b7c17faef2590bc158860b0) ) - ROM_REGION(0x80000, "romcs1", ROMREGION_ERASEFF) ROM_REGION(0x08000,"gfx1", 0) /* Character rom located at U3 w/label "8079027 // NCR // 609-2495004 // F841030 A9025" */ @@ -784,14 +839,14 @@ ROM_END ROM_START( t1000sl2 ) - ROM_REGION(0x100000,"maincpu", ROMREGION_ERASE00) - // bankable ROM regions - ROM_REGION(0x80000, "romcs0", 0) + ROM_REGION(0x80000, "rom", 0) // v01.04.04 BIOS - ROM_LOAD16_BYTE("8079047.hu1", 0x00000, 0x40000, CRC(c773ec0e) SHA1(7deb71f14c2c418400b639d60066ab61b7e9df32)) - ROM_LOAD16_BYTE("8079048.hu2", 0x00001, 0x40000, CRC(0f3e6586) SHA1(10f1a7204f69b82a18bc94a3010c9660aec0c802)) - ROM_REGION(0x80000, "romcs1", ROMREGION_ERASEFF) + // Fix up memory region (highest address bit flipped??) + ROM_LOAD16_BYTE("8079047.hu1", 0x40000, 0x20000, CRC(c773ec0e) SHA1(7deb71f14c2c418400b639d60066ab61b7e9df32)) + ROM_CONTINUE(0x00000, 0x20000) + ROM_LOAD16_BYTE("8079048.hu2", 0x40001, 0x20000, CRC(0f3e6586) SHA1(10f1a7204f69b82a18bc94a3010c9660aec0c802)) + ROM_CONTINUE(0x00001, 0x20000) ROM_REGION(0x08000,"gfx1", 0) ROM_LOAD("8079027.u25", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450)) @@ -802,8 +857,8 @@ ROM_END ROM_START( t1000tl2 ) - ROM_REGION(0x100000, "maincpu", 0) - ROM_LOAD( "t10000tl2.bin", 0xf0000, 0x10000, CRC(e288f12c) SHA1(9d54ccf773cd7202c9906323f1b5a68b1b3a3a67)) + ROM_REGION(0x20000, "bios", 0) + ROM_LOAD( "t10000tl2.bin", 0x10000, 0x10000, CRC(e288f12c) SHA1(9d54ccf773cd7202c9906323f1b5a68b1b3a3a67)) ROM_REGION(0x08000,"gfx1", 0) ROM_LOAD("8079027.u24", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450)) // TODO: Verify location @@ -812,9 +867,9 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ // tandy 1000 -COMP( 1987, t1000hx, ibm5150, 0, t1000hx, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 HX", 0) -COMP( 1987, t1000sx, ibm5150, 0, t1000sx, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 SX", 0) -COMP( 1987, t1000tx, ibm5150, 0, t1000_286, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 TX", 0) -COMP( 1989, t1000rl, ibm5150, 0, t1000_16, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 RL", 0) -COMP( 1989, t1000tl2, ibm5150, 0, t1000_286, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 TL/2", 0) -COMP( 1988, t1000sl2, ibm5150, 0, t1000_16_8, tandy1t, tandy1000_state, t1000sl, "Tandy Radio Shack", "Tandy 1000 SL/2", 0) +COMP( 1987, t1000hx, ibm5150, 0, t1000hx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 HX", 0) +COMP( 1987, t1000sx, ibm5150, 0, t1000sx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SX", 0) +COMP( 1987, t1000tx, ibm5150, 0, t1000tx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TX", 0) +COMP( 1989, t1000rl, ibm5150, 0, t1000rl, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 RL", 0) +COMP( 1989, t1000tl2, ibm5150, 0, t1000tl, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TL/2", 0) +COMP( 1988, t1000sl2, ibm5150, 0, t1000sl2, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SL/2", 0) |