summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tandy1t.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tandy1t.cpp')
-rw-r--r--src/mame/drivers/tandy1t.cpp309
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)