summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/horizon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/horizon.cpp')
-rw-r--r--src/mame/drivers/horizon.cpp55
1 files changed, 40 insertions, 15 deletions
diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp
index c40e693cccd..bf9fc9ee6d0 100644
--- a/src/mame/drivers/horizon.cpp
+++ b/src/mame/drivers/horizon.cpp
@@ -2,15 +2,18 @@
// copyright-holders:Miodrag Milanovic
/***************************************************************************
- NorthStar Horizon
+NorthStar Horizon
- 07/12/2009 Skeleton driver.
+2009-12-07 Skeleton driver.
- It appears these machines say nothing until a floppy disk is
- succesfully loaded. The memory range EA00-EB40 appears to be
- used by devices, particularly the FDC.
+http://www.hartetechnologies.com/manuals/Northstar/
- http://www.hartetechnologies.com/manuals/Northstar/
+The tiny bios (only about 200 bytes) initialises nothing, but only loads the
+initial sector from the disk and transfers control to it. All the used memory
+locations in the EA00-EB40 range are listed in the memory map. It does not
+use the IO map, and has no text.
+
+Without schematics and technical manuals, it is not possible to progress.
****************************************************************************/
@@ -49,12 +52,16 @@ class horizon_state : public driver_device
{
public:
horizon_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, Z80_TAG),
- m_usart_l(*this, I8251_L_TAG),
- m_usart_r(*this, I8251_L_TAG)
- { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, Z80_TAG)
+ , m_usart_l(*this, I8251_L_TAG)
+ , m_usart_r(*this, I8251_L_TAG)
+ { }
+
+ DECLARE_READ8_MEMBER(ff_r);
+private:
+ virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
required_device<i8251_device> m_usart_l;
required_device<i8251_device> m_usart_r;
@@ -71,6 +78,16 @@ public:
//-------------------------------------------------
static ADDRESS_MAP_START( horizon_mem, AS_PROGRAM, 8, horizon_state )
+ AM_RANGE(0x0000, 0xe7ff) AM_RAM
+ AM_RANGE(0xe800, 0xe9ff) AM_ROM AM_REGION("roms", 0)
+ AM_RANGE(0xea01, 0xea01)
+ AM_RANGE(0xea11, 0xea11)
+ AM_RANGE(0xea21, 0xea21)
+ AM_RANGE(0xea31, 0xea31)
+ AM_RANGE(0xeb10, 0xeb17) AM_READ(ff_r)
+ AM_RANGE(0xeb20, 0xeb20)
+ AM_RANGE(0xeb35, 0xeb35)
+ AM_RANGE(0xeb40, 0xeb40)
ADDRESS_MAP_END
@@ -88,13 +105,21 @@ ADDRESS_MAP_END
//**************************************************************************
//-------------------------------------------------
-// INPUT_PORTS( sage2 )
+// INPUT_PORTS
//-------------------------------------------------
static INPUT_PORTS_START( horizon )
INPUT_PORTS_END
+void horizon_state::machine_reset()
+{
+ m_maincpu->set_pc(0xe800);
+}
+READ8_MEMBER( horizon_state::ff_r )
+{
+ return 0xff;
+}
//**************************************************************************
// DEVICE CONFIGURATION
@@ -198,7 +223,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
ROM_START( nshrz )
- ROM_REGION( 0x400, Z80_TAG, 0 )
+ ROM_REGION( 0x400, "roms", 0 )
ROM_LOAD( "option.prom", 0x000, 0x400, NO_DUMP )
ROM_END
@@ -208,8 +233,8 @@ ROM_END
//-------------------------------------------------
ROM_START( vector1 ) // This one have different I/O
- ROM_REGION( 0x10000, Z80_TAG, ROMREGION_ERASEFF )
- ROM_LOAD( "horizon.bin", 0xe800, 0x0100, CRC(7aafa134) SHA1(bf1552c4818f30473798af4f54e65e1957e0db48))
+ ROM_REGION( 0x400, "roms", ROMREGION_ERASEFF )
+ ROM_LOAD( "horizon.bin", 0x0000, 0x0100, CRC(7aafa134) SHA1(bf1552c4818f30473798af4f54e65e1957e0db48))
ROM_END