mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
Merge pull request #1430 from rfka01/master
New skeleton Siemens Simatic PG-685
This commit is contained in:
commit
643b410291
@ -2740,6 +2740,7 @@ files {
|
||||
MAME_DIR .. "src/mame/machine/pcd_kbd.h",
|
||||
MAME_DIR .. "src/mame/video/pcd.cpp",
|
||||
MAME_DIR .. "src/mame/video/pcd.h",
|
||||
MAME_DIR .. "src/mame/drivers/pg685.cpp",
|
||||
}
|
||||
|
||||
createMESSProjects(_target, _subtarget, "slicer")
|
||||
|
209
src/mame/drivers/pg685.cpp
Normal file
209
src/mame/drivers/pg685.cpp
Normal file
@ -0,0 +1,209 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders: rfka01
|
||||
/***************************************************************************
|
||||
|
||||
Siemens Simatic PG-685
|
||||
|
||||
driver skeleton by rfka01
|
||||
|
||||
****************************************************************************
|
||||
|
||||
The Simatic PG-685 is a programming device for Siemens' S5 line of industrial
|
||||
controllers. They ran PCP/M-86 and MS-DOS specially adapted for the architecture.
|
||||
|
||||
http://oldcomputer.info/portables/pg685/index.htm
|
||||
|
||||
The portable case contains a monochrome monitor (with a socket provided to
|
||||
drive an external monitor), a 5,25" floppy drive with 720KB capacity (DS,80
|
||||
tracks, 9 sectors p.t., 512 Byters p.s.) and a MFM hard disk drive.
|
||||
The PC is made up of several boards on a non-ISA bus backplane.
|
||||
|
||||
There are at least two versions and several options. The PG-685's settings are
|
||||
contained in NVRAM, and have to be updated using a testdisk if the two AA
|
||||
batteries run out.
|
||||
|
||||
For this, a key switch with a reset setting plays a crucial role. Set the key
|
||||
to reset, insert disk in drive but don't close. Switch on machine, close drive
|
||||
and set the switch to normal operation to start the setup.
|
||||
|
||||
Backplane: SCN2661B, D8253C-2, SAB 8259AP
|
||||
|
||||
|
||||
6ES5685-OUA11
|
||||
|
||||
John Elliott's kindly analyzed the ROM of this machine, his findings are represented
|
||||
in this preliminary memory map. Olivier Galibert remarked that for a 16 bit memory
|
||||
map, the address ranges have to begin on even and end on odd addresses.
|
||||
|
||||
static ADDRESS_MAP_START(pg685_mem, AS_PROGRAM, 16, pg685_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000,0xbffff) AM_RAM
|
||||
AM_RANGE(0xf0000,0xf1fff) AM_RAM
|
||||
AM_RANGE(0xf9f00,0xf9f00) // Keyboard scancode
|
||||
AM_RANGE(0xf9f01,0xf9f01) // Keyboard status (read) Keyboard command (write)
|
||||
AM_RANGE(0xf9f02,0xf9f02) // 6845 Register select
|
||||
AM_RANGE(0xf9f03,0xf9f03) // 6845 Register value
|
||||
AM_RANGE(0xf9f04,0xf9f04) // PCP/M-86 keyboard handling code also checks a couple of bits read
|
||||
AM_RANGE(0xf9f20,0xf9f20) // WD 279x floppy controller
|
||||
AM_RANGE(0xf9f30,0xf9f30) // Printer data
|
||||
AM_RANGE(0xf9f31,0xf9f31) // Printer status read
|
||||
AM_RANGE(0xf9f33,0xf9f33) // Printer present?
|
||||
AM_RANGE(0xf9f42,0xf9f47) // RTC registers
|
||||
AM_RANGE(0xf9f48,0xf9f4c) // NVRAM
|
||||
AM_RANGE(0xf9f50,0xf9f50) // RTC Busy flag
|
||||
AM_RANGE(0xf9f70,0xf9f77) // WD 1010
|
||||
AM_RANGE(0xf9f78,0xf9f78) // WD 1010 separate drive/head select register
|
||||
AM_RANGE(0xf9f79,0xf9f79) // another write-only register (possibly reset or interrupt control)
|
||||
AM_RANGE(0xfa000,0xfa7ff) AM_RAM AM_SHARE ("charcopy")
|
||||
AM_RANGE(0xfb000,0xfb7ff) AM_RAM AM_SHARE ("framebuffer")
|
||||
AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("bios", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
This machine only has a textmode screen, Tandon TM262 hard disk drive on a WD1010 controller,
|
||||
Teac FD-55FV-13-U floppy drive on a Siemens (WD)-1797-02P controller, 768KB of RAM, HD68A45SP
|
||||
display controller, upd8279c-25 keyboard controller.
|
||||
Ports: Printer, V24, Module, AG-S5, Sinec H1, External Monitor
|
||||
|
||||
CPU/Video: 16KB BIOS/CHAR EPROM, NEC V20 CPU, SAB 8259AP, 12.288 MHz crystal, 2xHM6116LP-3,
|
||||
HD46505SP-1 (HD68A45SP), D8279C-2, D8251AFC
|
||||
Module/Floppy: 2xP8255A, 4xHM6116LP-3, D8251AFC, 4.000000 MHz crystal, SAB 1797-02P, MM58167AN
|
||||
HD: 4xD4016C, WD1010A-AL, 10,000000 MHz crystal
|
||||
Memory: 27xTMS27C256-15
|
||||
|
||||
|
||||
6ES5685-OUA12
|
||||
|
||||
This machine has the BMG (bit mapped graphics) option, that John Elliott described as a memory mapped
|
||||
hercules card. There is a GEM/3 display driver that was indeed derived from the Hercules one.
|
||||
The screen buffer starts at E000, he video card is at F9F0:80h, the beeper frequency at F9F0:36h,
|
||||
the serial port at F9F0:38h.
|
||||
|
||||
Graphics screen, MiniScribe 8425 hard disk drive on a WD2010B-AL controller, Teac FD-55FR 511-U floppy drive
|
||||
on a Siemens (WD)-1797-02P controller, 896KB of RAM, HD68A45SP display controller, upd8279c-25
|
||||
keyboard controller
|
||||
Ports: Printer, V24, Module, AG-S5, Sinec H1, External Monitor, E1
|
||||
|
||||
CPU/Mem.: iR80286-10 CPU, N82C288, 19,660800 MHz crystal, 2x16KB EPROM (BIOS/CHAR), 24MHz crystal
|
||||
18.189 MHz crystal, D71059L, HD46505SP-1 (HD68A45SP), D8279C-2, N8251A, 2xSRM20256LM,
|
||||
RAM daughterbd: 4x514256-10
|
||||
Module/Floppy: 2xi8255A, 4xHM6116LP-3, D8251AFC, 4.000000 MHz crystal, SAB 1797-02P, MM58167AN
|
||||
HD: SRM2064C-15, WD2010B-AL, 10,000000 MHz crystal
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/nec/nec.h"
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "cpu/i86/i286.h"
|
||||
#include "video/mc6845.h"
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
class pg685_state : public driver_device
|
||||
{
|
||||
public:
|
||||
pg685_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag) ,
|
||||
m_maincpu(*this, "maincpu") { }
|
||||
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
UINT32 screen_update_pg685(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
//**************************************************************************
|
||||
// ADDRESS MAPS
|
||||
//**************************************************************************
|
||||
|
||||
static ADDRESS_MAP_START(pg685_mem, AS_PROGRAM, 8, pg685_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000,0xbffff) AM_RAM
|
||||
AM_RANGE(0xf0000,0xf1fff) AM_RAM
|
||||
AM_RANGE(0xfa000,0xfa7ff) AM_RAM AM_SHARE ("charcopy")
|
||||
AM_RANGE(0xfb000,0xfb7ff) AM_RAM AM_SHARE ("framebuffer")
|
||||
AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("bios", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// I/O
|
||||
//*************************************************************************
|
||||
|
||||
static INPUT_PORTS_START( pg685 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
//**************************************************************************
|
||||
// FLOPPY
|
||||
//**************************************************************************
|
||||
|
||||
//**************************************************************************
|
||||
// HARDDISK
|
||||
//**************************************************************************
|
||||
|
||||
//**************************************************************************
|
||||
// MACHINE EMULATION
|
||||
//**************************************************************************
|
||||
|
||||
void pg685_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
void pg685_state::video_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
UINT32 pg685_state::screen_update_pg685(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// MACHINE DRIVERS
|
||||
//**************************************************************************
|
||||
|
||||
static MACHINE_CONFIG_START( pg685, pg685_state )
|
||||
// main cpu
|
||||
MCFG_CPU_ADD("maincpu", V20, XTAL_15MHz / 3)
|
||||
MCFG_CPU_PROGRAM_MAP(pg685_mem)
|
||||
|
||||
// i/o cpu
|
||||
|
||||
// ram
|
||||
|
||||
// video hardware
|
||||
|
||||
// sound hardware
|
||||
|
||||
// devices
|
||||
|
||||
// rs232 port
|
||||
|
||||
// keyboard
|
||||
|
||||
// printer
|
||||
|
||||
// floppy
|
||||
|
||||
// harddisk
|
||||
|
||||
//**************************************************************************
|
||||
// ROM DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( pg685 )
|
||||
ROM_REGION( 0x4000, "bios", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "pg685_oua11_s79200-g2_a901-03.bin", 0x0000, 0x4000, CRC(db13f2db) SHA1(5f65ab14d9c8acdcc5482b27e727ca43b1a7daf3))
|
||||
ROM_END
|
||||
|
||||
//**************************************************************************
|
||||
// ROM DEFINITIONS
|
||||
//**************************************************************************
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 198?, pg685, 0, 0, pg685, pg685, driver_device, 0, "Siemens", "Simatic PG685 OUA11", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
@ -30187,6 +30187,11 @@ sonstwar //
|
||||
sonstwr2 //
|
||||
wolfman //
|
||||
|
||||
@source:pg685.cpp
|
||||
pg685 //
|
||||
|
||||
|
||||
|
||||
@source:pgm.cpp
|
||||
ddp2 // (c) 2001 DoDonPachi 2 - Bee Storm
|
||||
ddp2100 //
|
||||
|
Loading…
Reference in New Issue
Block a user