summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/sys2900.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/sys2900.cpp')
-rw-r--r--src/mame/drivers/sys2900.cpp75
1 files changed, 48 insertions, 27 deletions
diff --git a/src/mame/drivers/sys2900.cpp b/src/mame/drivers/sys2900.cpp
index 1f26f87244a..2693762f1c8 100644
--- a/src/mame/drivers/sys2900.cpp
+++ b/src/mame/drivers/sys2900.cpp
@@ -1,42 +1,52 @@
// license:BSD-3-Clause
// copyright-holders:Robbbert
-/***************************************************************************
+/******************************************************************************************
- System 2900
+Systems Group (a division of Measurement Systems and Controls) System 2900 S100 computer
- 12/05/2009 Skeleton driver.
+2009-05-12 Skeleton driver.
- The system contains 4 S100 boards, 2 8" floppies, enormous power supply,
- 1/4" thick mother board, 4 RS232 I/F boards, and an Australian made
- "Computer Patch Board".
- The S100 boards that make up the unit are:
+Photos: https://www.vintagecomputer.net/Systems-Group/2900/
+
+The system contains 4 S100 boards, 2 8" floppies, enormous power supply,
+1/4" thick mother board, 4 RS232 I/F boards, and an Australian made
+"Computer Patch Board".
+
+The S100 boards that make up the unit are:
CPU board - Model CPC2810 Rev D
- The board has a Z80A CPU, CTC, PIO, DART and SIO.
- U16 (24 pin) is missing (boot EPROM?).
+ The board has a MK3880N-4 (Z80A CPU), CTC, 2x MK3884N-4 (Z80SIO), PIO.
It has a lot of jumpers and an 8 way DIP switch.
+ Crystals: 8.0000MHz, 4.91520MHz
Memory board - Model HDM2800 Rev B
This contains 18 4164's and a lot of logic.
Again, a lot of jumpers, and several banks of links.
- Also contains 2 Motorola chips I cannot identify,
- MC3480P (24 pin) and MC3242AP (28 pin).
- (I have searched the Motorola site and the Chip
- Directory; nothing even close.)
+ Also contains 2 large Motorola chips:
+ MC3480P (dynamic memory controller) and
+ MC3242AP (memory address multiplexer).
+ Dips: 2x 8-sw, 2x 4-sw, 1x 2-sw.
Disk Controller board - Model FDC2800 Rev D
This board is damaged. The small voltage regulators
for +/- 12V have been fried.
Also, 3 sockets are empty - U1 and U38 (16 pin)
appear to be spares, and U10 (14 pin).
8 port Serial I/O board - Model INO2808 Rev C
- Room for 8 8251 USART's.
+ Room for 8 8251 USARTs.
I have traced out this board and managed to get it
working in another S100 system.
- The "Computer Patch Board" seems to provide some sort of watch dog
- facility.
-****************************************************************************/
+The "Computer Patch Board" seems to provide some sort of watch dog facility.
+
+Status:
+- Appears to be looping waiting for a disk
+
+*****************************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
+#include "machine/z80ctc.h"
+#include "machine/z80pio.h"
+#include "machine/z80sio.h"
+//#include "bus/s100/s100.h"
#include "screen.h"
@@ -49,13 +59,14 @@ public:
};
sys2900_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) ,
- m_maincpu(*this, "maincpu") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu") { }
DECLARE_DRIVER_INIT(sys2900);
+ uint32_t screen_update_sys2900(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+private:
virtual void machine_reset() override;
virtual void video_start() override;
- uint32_t screen_update_sys2900(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
protected:
@@ -63,7 +74,7 @@ protected:
};
-static ADDRESS_MAP_START(sys2900_mem, AS_PROGRAM, 8, sys2900_state)
+static ADDRESS_MAP_START(mem_map, AS_PROGRAM, 8, sys2900_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("boot")
AM_RANGE( 0x0800, 0xefff ) AM_RAM
@@ -71,9 +82,16 @@ static ADDRESS_MAP_START(sys2900_mem, AS_PROGRAM, 8, sys2900_state)
AM_RANGE( 0xf800, 0xffff ) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START(sys2900_io, AS_IO, 8, sys2900_state)
+static ADDRESS_MAP_START(io_map, AS_IO, 8, sys2900_state)
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w)
+ AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt)
+ AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio2", z80sio_device, ba_cd_r, ba_cd_w)
+ AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
+ AM_RANGE(0x80, 0x83) // unknown device, disk related?
+ AM_RANGE(0xa0, 0xaf) // unknown device
+ AM_RANGE(0xc0, 0xc3) // unknown device
ADDRESS_MAP_END
/* Input ports */
@@ -117,10 +135,9 @@ uint32_t sys2900_state::screen_update_sys2900(screen_device &screen, bitmap_ind1
static MACHINE_CONFIG_START( sys2900 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
- MCFG_CPU_PROGRAM_MAP(sys2900_mem)
- MCFG_CPU_IO_MAP(sys2900_io)
-
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_8MHz / 2)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+ MCFG_CPU_IO_MAP(io_map)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -133,12 +150,16 @@ static MACHINE_CONFIG_START( sys2900 )
MCFG_PALETTE_ADD_MONOCHROME("palette")
+ MCFG_DEVICE_ADD("ctc", Z80CTC, 0)
+ MCFG_DEVICE_ADD("pio", Z80PIO, 0)
+ MCFG_DEVICE_ADD("sio1", Z80SIO, 0)
+ MCFG_DEVICE_ADD("sio2", Z80SIO, 0)
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( sys2900 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
- ROM_LOAD( "104401cpc.bin", 0xf000, 0x0800, CRC(6c8848bc) SHA1(890e0578e5cb0e3433b4b173e5ed71d72a92af26))
+ ROM_LOAD( "104401cpc.bin", 0xf000, 0x0800, CRC(6c8848bc) SHA1(890e0578e5cb0e3433b4b173e5ed71d72a92af26)) // label says BE 5 1/4 107701
ROM_END
/* Driver */