diff options
Diffstat (limited to 'src/mame/drivers/octopus.c')
-rw-r--r-- | src/mame/drivers/octopus.c | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/src/mame/drivers/octopus.c b/src/mame/drivers/octopus.c new file mode 100644 index 00000000000..7e9ce91967e --- /dev/null +++ b/src/mame/drivers/octopus.c @@ -0,0 +1,198 @@ +// license:BSD-3-Clause +// copyright-holders:Robbbert +/*************************************************************************** + +Hilger Analytical AB6089 Mk. 1 (LSI Octopus) + +2013-07-26 Skeleton driver. + +http://computers.mcbx.netne.net/8bit/hilger/index.htm + +Below is an extract from the page: + +The computer has 2 CPUs: Z80 and 8088. Most circuits are dated 1985-1986, display circuitry is made by Signetics. +Mainboard was manufactured by LSI Computers Ltd. under part numbers: 15000SS100 and 15000P4100. All steel parts +of casing are grounded by wires. It's graphics card works in pass-through mode: It takes picture from mainboard's +TTL output and adds image to it, then it puts it to monitor. Its ROM is prepared for hard disk and some type of +network, yet no HDD controller nor network interfaces are present inside - it seems that they were added as +expansion cards. + +UPDATE: It's re-branded LSI Octopus computer, a very well-expandable machine which was designed to "grow with a +company". First stage was a computer which could be used even with TV set. As requirements increased, Octopus +could be equipped with hard disk controller, network adapter, multi-terminal serial port card to act as a terminal +server or even CPU cards to run concurrent systems. There were even tape backup devices for it. Octopus could run +CP/M, MP/M (concurrent - multitasking-like OS, even with terminals), or even MS-DOS - CP/M or MP/M could be used +with Z80 or 8080. There was also LSI ELSIE system, a concurrent DOS. Last British LSI machines were 386 computers +which could be used as servers for Octopus computers. + +Manufacturer Hilger Analytical / LSI Computers Ltd. + +Origin UK +Year of unit 1986? +Year of introduction 1985 +End of production ? +CPU Z80, 8088 +Speed ?? +RAM 256kB +ROM 16kB (Basic) +Colors: ?? +Sound: Speaker. Beeps :) +OS: CP/M 80 or 86 +MP/M 80 o 86 +Concurrent CP/M +LSI ELSIE +MS-DOS +Display modes: Text: ?? +Graphics: ?? + +Media: Two internal 5.25" floppy disk drives, DS DD, 96tpi. +Probably hard disk + +Power supply: +Built-in switching power supply. + +I/O: Serial port +2 parallel ports + +Video TTL Output +Composite video output + +Possible upgrades: Many + +Software accessibility: +Dedicated: Impossible. +CP/M - Good +DOS - Good. + +It won't take XT nor AT keyboard, but pinout is quite similar. UPDATE: I saw a few photos of keyboard. +It's another Z80 computer! It has an EPROM, simple memory and CPU. + +After powering on, it should perform POST writing: + +TESTING... + Main Processor + PROM + DMA Controllers + RAM + Interrupts + Floppy Discs + Hard Disc Controller (optionally - if installed) + +Waiting for hard Disc... (Optionally - if installed) + +Firmware versions: + +SYSTEM 18B (or other) +GRAPHICS 4 (if graphic card installed) + +And probably it should boot or display: + +Insert System Disk. + +Or maybe: + +Nowhere to boot from. + +Load options: + Floppy + Pro Network + Winchester +Enter selection: + +This information was gained by studying boot ROM of the machine. + +It's a very rare computer. It has 2 processors, Z80 and 8088, so it seems that it may run CP/M and DOS. +Its BIOS performs POST and halts as there's no keyboard. + +****************************************************************************/ + +#include "emu.h" +#include "cpu/i86/i86.h" + + +class octopus_state : public driver_device +{ +public: + octopus_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu") { } + + virtual void machine_reset(); + virtual void video_start(); + DECLARE_WRITE8_MEMBER(port_c9); + UINT32 screen_update_octopus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_device<cpu_device> m_maincpu; +}; + + +static ADDRESS_MAP_START( octopus_mem, AS_PROGRAM, 8, octopus_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x00000, 0x1ffff) AM_RAM + AM_RANGE(0xe4000, 0xe4fff) AM_RAM // character definitions + AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( octopus_io, AS_IO, 8, octopus_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xc5, 0xc9) AM_WRITE(port_c9) +ADDRESS_MAP_END + +WRITE8_MEMBER( octopus_state::port_c9 ) +{ + if (offset == 0) + printf("\n"); + if (offset == 4) + printf("%c",data); +} + + +/* Input ports */ +static INPUT_PORTS_START( octopus ) +INPUT_PORTS_END + + +void octopus_state::machine_reset() +{ +} + +void octopus_state::video_start() +{ +} + +UINT32 octopus_state::screen_update_octopus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +static MACHINE_CONFIG_START( octopus, octopus_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu",I8088, XTAL_9_8304MHz) // absolutely no idea what frequency + MCFG_CPU_PROGRAM_MAP(octopus_mem) + MCFG_CPU_IO_MAP(octopus_io) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(640, 480) + MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) + MCFG_SCREEN_UPDATE_DRIVER(octopus_state, screen_update_octopus) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") +MACHINE_CONFIG_END + +/* ROM definition */ +ROM_START( octopus ) + ROM_REGION( 0x4000, "user1", 0 ) + ROM_LOAD( "octopus_main_prom", 0x0000, 0x4000, CRC(b5b4518d) SHA1(41b8729c4c9074914fd4ea181c8b6d4805ee2b93) ) + + // This rom was on the graphics card (yes, it has slots) + ROM_REGION( 0x2000, "chargen", 0 ) + ROM_LOAD( "octopus_gfx_card", 0x0000, 0x2000, CRC(b2386534) SHA1(5e3c4682afb4eb222e48a7203269a16d26911836) ) +ROM_END + +/* Driver */ + +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +COMP( 1986, octopus, 0, 0, octopus, octopus, driver_device, 0, "Digital Microsystems", "LSI Octopus", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) |