From 91bb0eb6e049d1a785b04ae64f8c9c4ef63b2257 Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Tue, 25 Apr 2017 03:04:17 -0400 Subject: New NOT_WORKING driver added --------- BPM Microsystems BP-1200 [Lord Nightmare] --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/bpmmicro.cpp | 214 ++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + src/mame/mess.flt | 1 + 4 files changed, 219 insertions(+) create mode 100644 src/mame/drivers/bpmmicro.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index b8acc949870..b42fb7e3c69 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3335,6 +3335,7 @@ files { MAME_DIR .. "src/mame/drivers/binbug.cpp", MAME_DIR .. "src/mame/drivers/besta.cpp", MAME_DIR .. "src/mame/drivers/bitgraph.cpp", + MAME_DIR .. "src/mame/drivers/bpmmicro.cpp", MAME_DIR .. "src/mame/drivers/br8641.cpp", MAME_DIR .. "src/mame/drivers/busicom.cpp", MAME_DIR .. "src/mame/includes/busicom.h", diff --git a/src/mame/drivers/bpmmicro.cpp b/src/mame/drivers/bpmmicro.cpp new file mode 100644 index 00000000000..37ce58ddc8d --- /dev/null +++ b/src/mame/drivers/bpmmicro.cpp @@ -0,0 +1,214 @@ +// license:BSD-3-Clause +// copyright-holders:Jonathan Gevaryahu +/****************************************************************************** +* BPMMicro (formerly BPMicro) universal device programmers +* Models supported in this driver: (BP=1148) BP-1200 +* +* All models: +* Legacy: +* EP-series (pre-bp-1148) +* 286 based: +* BP-1148 - fixed 512k? ram +* BP-1200 - fixed 512k ram, (different tech adapter from 1148) +* BP-2000, BP-2100, BP-2500, BP-2510, BP-2600M - ganged/bulk/autofeed programmers? +* 286 expandable: +* BP-1400 - uses a 30? pin SIMM for up to 8MB? of ram +* 486 based: +* BP-1600 - 486DX based, uses a 72 pin SIMM for up to 16MB of ram (does NOT support 32MB SIMMs!) +* Silicon Sculptor - same as above, custom firmware locked to Actel devices, has an extra button +* Silicon Sculptor 6X - as above but 6 programmers ganged together +* 486+USB expansion pcb: +* Silicon Sculptor II - same as silicon sculptor but has a parallel-to-USB board +* 486+USB 2nd gen 'universal platform': +* BP-1610 - 486DX2 based, uses a laptop SODIMM for up to 512MB? of ram?, has USB +* BP-1410 - 486DX2 based, uses a laptop SODIMM for up to 512MB? of ram?, has USB +* BP-1710 - same as BP1610, but two programmers ganged together in a single case +* Silicon Sculptor III and IV? +* +****************************************************************************** +* TODO: +* Everything! +* status LEDs +* 8-pin pin driver boards +* tech adapter relays +* Parallel port interface +* Serial EEPROM (93c46) at U26 on BP1200 mainboard +* Serial EEPROM (93c46) at (U1? U7? U12?) on TA-84 tech adapter +* Serial EEPROM (93c46a) at ? on SM48D socket adapter +* other socket adapters other than sm48d +* DONE: +* hardware pictures, cpu documentation, crystal, ram size +****************************************************************************** +* Links: +* http://www3.bpmmicro.com/web/helpandsupport.nsf/69f301ee4e15195486256fcf0062c2eb/8194a48179484c9f862573220065d38e!OpenDocument +* ftp://ftp.bpmmicro.com/Dnload/ +******************************************************************************/ + +/* Core includes */ +#include "emu.h" +#include "cpu/i86/i286.h" + +class bpmmicro_state : public driver_device +{ +public: + bpmmicro_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { + } + + DECLARE_DRIVER_INIT(bp1200); +private: + required_device m_maincpu; +}; + +/****************************************************************************** + Driver Init +******************************************************************************/ + +DRIVER_INIT_MEMBER(bpmmicro_state,bp1200) +{ +} + +/****************************************************************************** + Read/Write handlers +******************************************************************************/ + + +/* todo (v1.24 rom) +from boot (2 digit hex offsets have 0x84000 added to them): +0x0a00 -> 0x82200 +0x0001 -> 18 +0x0003 -> 1a +0x0001 -> 0e +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 +read <- 00 + +0x0001 -> 18 +0x0002 -> 1a +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 + +0x0000 -> 18 +0x0003 -> 1a +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 +read <- 00 +read <- 00 + +0x0000 -> 18 +0x0001 -> 1a +{lots of data banged to 1c} +0x0001 -> 02 +0x0000 -> 02 + +0x0000 -> 0e +0x0001 -> 0e +0x0000 -> 0e +0x0001 -> 0e +0x0000 -> 0e +0x0001 -> 0e +read <- 00 + +0x0a00 -> 0x82200 +0x0112 -> 0x82200 + +0x0000 -> 06 +0x0000 -> 04 +0x0000 -> 00 + +*/ + + +/****************************************************************************** + Address Maps +******************************************************************************/ + +static ADDRESS_MAP_START(i286_mem, AS_PROGRAM, 16, bpmmicro_state) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000000, 0x07ffff) AM_RAM + // 82200 w + // 84000 r + // 8400e w + // 84018 w + // 8401a w - gets written with 3, then 2, then.. + // 8401c w - bits 0 and 1 are serial data and clock respectively, either for serial over the parallel port, or they connect to one of the 93c46s (probably the one on the mainboard @ U26?) + AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0) + AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(i286_io, AS_IO, 16, bpmmicro_state) + ADDRESS_MAP_UNMAP_HIGH +ADDRESS_MAP_END + + +/****************************************************************************** + Input Ports +******************************************************************************/ +static INPUT_PORTS_START( bpmmicro ) +INPUT_PORTS_END + +/****************************************************************************** + Machine Drivers +******************************************************************************/ + +static MACHINE_CONFIG_START( bpmmicro, bpmmicro_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", I80286, XTAL_32MHz/4) /* divider is guessed, cpu is an AMD N80L286-16/S part */ + MCFG_CPU_PROGRAM_MAP(i286_mem) + MCFG_CPU_IO_MAP(i286_io) +MACHINE_CONFIG_END + + + +/****************************************************************************** + ROM Definitions +******************************************************************************/ + +ROM_START(bp1200) + ROM_REGION(0x20000, "bios", 0) + // note about roms: the BP-1200 has two jumpers controlling what type of rom is installed; + // it needs 120ns or faster roms + // the "W1" and "W2" labels are next to pins A on the pcb + // for 2764 roms: + // W1 [A B]C + // W2 [A B]C + // for 27256 roms: + // W1 [A B]C + // W2 A[B C] + ROM_DEFAULT_BIOS("v124") + ROM_SYSTEM_BIOS( 0, "v124", "BP-1200 V1.24") + ROMX_LOAD("version_1.24_u8.st_m27c256b-12f1l.u8", 0x10001, 0x8000, CRC(86d46d76) SHA1(4733b03a28689a3d2c58278495fbf31d0c74ac01), ROM_SKIP(1) | ROM_BIOS(1)) // "bios1200.v124a.u8" on bpmmicro site + ROMX_LOAD("version_1.24_u9.st_m27c256b-12f1l.u9", 0x10000, 0x8000, CRC(3bcc5c72) SHA1(3b281f2b464d8a4e366f8e2f0a8fa6dfd0a8f28c), ROM_SKIP(1) | ROM_BIOS(1)) // "bios1200.v124a.u9" on bpmmicro site + ROM_SYSTEM_BIOS( 1, "v118", "BP-1200 V1.18") + ROMX_LOAD("version_1.18_u8_2000.am27c256.u8", 0x10001, 0x8000, CRC(f8afa614) SHA1(a372bc35aea30595ab8f05c5e641021b45043ed3), ROM_SKIP(1) | ROM_BIOS(2)) + ROMX_LOAD("version_1.18_u9_2000.am27c256.u9", 0x10000, 0x8000, CRC(049b2ad1) SHA1(c9405ff805f3814493ad007bae7a8cb6a12aeb32), ROM_SKIP(1) | ROM_BIOS(2)) + ROM_SYSTEM_BIOS( 2, "v113", "BP-1200 V1.13") + ROMX_LOAD("bp-1200_v1.13_u8_1992_1997.at27c256r-12pc.u8", 0x10001, 0x8000, CRC(ec61dcad) SHA1(dbfee285456d24b93c1fa6e8557b13ab80c3c877), ROM_SKIP(1) | ROM_BIOS(3)) + ROMX_LOAD("bp-1200_v1.13_u9_1992_1995.at27c256r-12pc.u9", 0x10000, 0x8000, CRC(91ca5e70) SHA1(4a8c1894a67dfd5e0db088519a3ee4edaafdef58), ROM_SKIP(1) | ROM_BIOS(3)) + ROM_SYSTEM_BIOS( 3, "v111", "BP-1200 V1.11") + ROMX_LOAD("bp-1200_version_1.11_u8_1992_1995.at27c256r-12pc.u8", 0x10001, 0x8000, CRC(d1c051e4) SHA1(b27007a931b0662b3dc7e2d41c6ec5ed0cd49308), ROM_SKIP(1) | ROM_BIOS(4)) + ROMX_LOAD("bp-1200_version_1.11_u9_1992_1995.at27c256r-12pc.u9", 0x10000, 0x8000, CRC(99d46ba1) SHA1(144dbe6ed989ea88cfc1f6d1142508bb92519f87), ROM_SKIP(1) | ROM_BIOS(4)) + ROM_SYSTEM_BIOS( 4, "v105", "BP-1200 V1.05") + ROMX_LOAD("bp-1200_1.05_u8__(c)_1993_rev_c__bp_microsystems.27c64-12pc.u8", 0x1c001, 0x2000, CRC(2c13a43c) SHA1(5dd67a09f72f693c085160b9beedd2454ba4ec37), ROM_SKIP(1) | ROM_BIOS(5)) // "BP-1200 1.05 U8 // (C) 1993 REV C // BP Microsystems" 27C64-12PC @U8 + ROMX_LOAD("bp-1200_1.05_u9__(c)_1993_rev_c__bp_microsystems.27c64-12pc.u9", 0x1c000, 0x2000, CRC(b88a311c) SHA1(fb5e0543c811cbbf8f24d1de204b4c0c1bd2f485), ROM_SKIP(1) | ROM_BIOS(5)) // "BP-1200 1.05 U9 // (C) 1993 REV C // BP Microsystems" 27C64-12PC @U9 + ROM_SYSTEM_BIOS( 5, "v104", "BP-1200 V1.04") + ROMX_LOAD("bp-1200_1.04_u8__(c)_1992_rev_c__bp_microsystems.27c64.u8", 0x1c001, 0x2000, CRC(2ab47324) SHA1(052e578dae5db023f94b35d686a5352ffceec414), ROM_SKIP(1) | ROM_BIOS(6)) // "BP-1200 1.04 U8 // (C) 1992 REV C // BP Microsystems" OTP 27C64 @ U8 + ROMX_LOAD("bp-1200_1.04_u9__(c)_1993_rev_c__bp_microsystems.27c64.u9", 0x1c000, 0x2000, CRC(17b94d7a) SHA1(7ceed660dbdc638ac86ca8ba7fa456c297d88766), ROM_SKIP(1) | ROM_BIOS(6)) // "BP-1200 1.04 U9 // (C) 1993 REV C // BP Microsystems" OTP 27C64 @ U9 + ROM_SYSTEM_BIOS( 6, "v103", "BP-1200 V1.03") + ROMX_LOAD("bp-1200_1.03_u8__(c)_1992_rev_c__bp_microsystems.27c64a-12.u8", 0x1c001, 0x2000, CRC(b01968b6) SHA1(d0c6aa0f0fe47b0915658e8c27286ab6ea90972e), ROM_SKIP(1) | ROM_BIOS(7)) // "BP-1200 1.03 U8 // (C) 1992 REV C // BP Microsystems" 27C64A-12 @ U8 + ROMX_LOAD("bp-1200_1.03_u9__(c)_1992_rev_c__bp_microsystems.27c64a-12.u9", 0x1c000, 0x2000, CRC(f58ffebb) SHA1(700d3ffed269fff6dc1cf2190bde8b989715c22a), ROM_SKIP(1) | ROM_BIOS(7)) // "BP-1200 1.03 U9 // (C) 1992 REV C // BP Microsystems" 27C64A-12 @ U9 +ROM_END + + + +/****************************************************************************** + Drivers +******************************************************************************/ + +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1991, bp1200, 0, 0, bpmmicro, bpmmicro, bpmmicro_state, bp1200, "BP Microsystems", "BP-1200", MACHINE_IS_SKELETON | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a05ecb72428..e9c35aa1f4a 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -8771,6 +8771,9 @@ bowltry // (c) 200? Atlus @source:boxer.cpp boxer // ?????? prototype 1978 [6502] +@source:bpmmicro.cpp +bp1200 // (c) 1991 BP Microsystems + @source:br8641.cpp br8641 // diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 1d3d60e48e7..bb63f8c8776 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -85,6 +85,7 @@ bk.cpp bmjr.cpp bml3.cpp bob85.cpp +bpmmicro.cpp br8641.cpp bullet.cpp busicom.cpp -- cgit v1.2.3