summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/target/mame/mess.lua3
-rw-r--r--src/devices/bus/isa/isa_cards.cpp2
-rw-r--r--src/mame/drivers/amstr_pc.cpp123
-rw-r--r--src/mame/drivers/asst128.cpp59
-rw-r--r--src/mame/drivers/ec184x.cpp145
-rw-r--r--src/mame/drivers/europc.cpp25
-rw-r--r--src/mame/drivers/genpc.cpp186
-rw-r--r--src/mame/drivers/ibmpc.cpp105
-rw-r--r--src/mame/drivers/ibmpcjr.cpp40
-rw-r--r--src/mame/drivers/iskr103x.cpp65
-rw-r--r--src/mame/drivers/m24.cpp12
-rw-r--r--src/mame/drivers/mc1502.cpp69
-rw-r--r--src/mame/drivers/notetaker.cpp48
-rw-r--r--src/mame/drivers/pasogo.cpp8
-rw-r--r--src/mame/drivers/pc.cpp183
-rw-r--r--src/mame/drivers/poisk1.cpp398
-rw-r--r--src/mame/drivers/sprcros2.cpp486
-rw-r--r--src/mame/drivers/tandy1t.cpp309
-rw-r--r--src/mame/drivers/trackfld.cpp47
-rw-r--r--src/mame/includes/genpc.h37
-rw-r--r--src/mame/includes/poisk1.h101
-rw-r--r--src/mame/machine/genpc.cpp84
-rw-r--r--src/mame/machine/pcshare.cpp5
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/video/pc_t1t.cpp168
-rw-r--r--src/mame/video/pc_t1t.h14
-rw-r--r--src/mame/video/poisk1.cpp322
27 files changed, 1652 insertions, 1393 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 9a5a4489352..ab2dd075fe5 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2992,9 +2992,6 @@ files {
MAME_DIR .. "src/mame/includes/mc1502.h",
MAME_DIR .. "src/mame/drivers/poisk1.cpp",
MAME_DIR .. "src/mame/machine/kb_poisk1.h",
- MAME_DIR .. "src/mame/includes/poisk1.h",
- MAME_DIR .. "src/mame/video/poisk1.cpp",
- MAME_DIR .. "src/mame/video/poisk1.h",
}
createMESSProjects(_target, _subtarget, "yamaha")
diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp
index a9ab1b9dc8f..e2702a5598f 100644
--- a/src/devices/bus/isa/isa_cards.cpp
+++ b/src/devices/bus/isa/isa_cards.cpp
@@ -19,6 +19,7 @@ SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
SLOT_INTERFACE("ega", ISA8_EGA)
SLOT_INTERFACE("pgc", ISA8_PGC)
+ SLOT_INTERFACE("vga", ISA8_VGA)
SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
SLOT_INTERFACE("com", ISA8_COM)
@@ -40,6 +41,7 @@ SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("sblaster1_0", ISA8_SOUND_BLASTER_1_0)
SLOT_INTERFACE("sblaster1_5", ISA8_SOUND_BLASTER_1_5)
SLOT_INTERFACE("stereo_fx", ISA8_STEREO_FX)
+ SLOT_INTERFACE("ssi2001", ISA8_SSI2001)
SLOT_INTERFACE("mpu401", ISA8_MPU401)
SLOT_INTERFACE("ne1000", NE1000)
SLOT_INTERFACE("3c503", EL2_3C503)
diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp
index d33fa47a6b3..8b1558a4575 100644
--- a/src/mame/drivers/amstr_pc.cpp
+++ b/src/mame/drivers/amstr_pc.cpp
@@ -71,8 +71,6 @@ public:
DECLARE_READ8_MEMBER( pc1640_port4278_r );
DECLARE_READ8_MEMBER( pc1640_port278_r );
- DECLARE_DRIVER_INIT(pc1640);
-
struct {
UINT8 x,y; //byte clipping needed
} m_mouse;
@@ -86,45 +84,30 @@ public:
int m_dipstate;
};
-static ADDRESS_MAP_START( ppc512_map, AS_PROGRAM, 16, amstrad_pc_state )
- AM_RANGE(0x00000, 0x7ffff) AM_RAMBANK("bank10")
- AM_RANGE(0x80000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
static ADDRESS_MAP_START( ppc640_map, AS_PROGRAM, 16, amstrad_pc_state )
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(ppc512_io, AS_IO, 16, amstrad_pc_state )
- AM_RANGE(0x0060, 0x0065) AM_READWRITE8(pc1640_port60_r, pc1640_port60_w, 0xffff)
- AM_RANGE(0x0070, 0x0071) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0xffff)
- AM_RANGE(0x0078, 0x0079) AM_READWRITE8(pc1640_mouse_x_r, pc1640_mouse_x_w, 0xffff)
- AM_RANGE(0x007a, 0x007b) AM_READWRITE8(pc1640_mouse_y_r, pc1640_mouse_y_w, 0xffff)
- AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
- AM_RANGE(0x0278, 0x027b) AM_READ8(pc200_port278_r, 0xffff) AM_DEVWRITE8("lpt_2", pc_lpt_device, write, 0x00ff)
- AM_RANGE(0x0378, 0x037b) AM_READ8(pc200_port378_r, 0xffff) AM_DEVWRITE8("lpt_1", pc_lpt_device, write, 0x00ff)
- AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8("lpt_0", pc_lpt_device, read, write, 0x00ff)
+static ADDRESS_MAP_START( pc2086_map, AS_PROGRAM, 16, amstrad_pc_state )
+ AM_RANGE(0xc0000, 0xc9fff) AM_ROM AM_REGION("bios", 0)
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0x10000)
ADDRESS_MAP_END
static ADDRESS_MAP_START(pc200_io, AS_IO, 16, amstrad_pc_state )
AM_RANGE(0x0060, 0x0065) AM_READWRITE8(pc1640_port60_r, pc1640_port60_w, 0xffff)
AM_RANGE(0x0078, 0x0079) AM_READWRITE8(pc1640_mouse_x_r, pc1640_mouse_x_w, 0xffff)
AM_RANGE(0x007a, 0x007b) AM_READWRITE8(pc1640_mouse_y_r, pc1640_mouse_y_w, 0xffff)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", pc_noppi_mb_device, map, 0xffff)
AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
AM_RANGE(0x0278, 0x027b) AM_READ8(pc200_port278_r, 0xffff) AM_DEVWRITE8("lpt_2", pc_lpt_device, write, 0x00ff)
AM_RANGE(0x0378, 0x037b) AM_READ8(pc200_port378_r, 0xffff) AM_DEVWRITE8("lpt_1", pc_lpt_device, write, 0x00ff)
AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8("lpt_0", pc_lpt_device, read, write, 0x00ff)
ADDRESS_MAP_END
+static ADDRESS_MAP_START(ppc512_io, AS_IO, 16, amstrad_pc_state )
+ AM_RANGE(0x0070, 0x0071) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0xffff)
+ AM_IMPORT_FROM(pc200_io)
+ADDRESS_MAP_END
/* pc20 (v2)
fc078
@@ -250,14 +233,6 @@ port 03de write/read
7d 01 01 mouse button right
*/
-DRIVER_INIT_MEMBER(amstrad_pc_state,pc1640)
-{
- address_space &io_space = m_maincpu->space( AS_IO );
-
- io_space.install_read_handler(0x278, 0x27b, read8_delegate(FUNC(amstrad_pc_state::pc1640_port278_r),this), 0xffff);
- io_space.install_read_handler(0x4278, 0x427b, read8_delegate(FUNC(amstrad_pc_state::pc1640_port4278_r),this), 0xffff);
-}
-
WRITE8_MEMBER( amstrad_pc_state::pc1640_port60_w )
{
switch (offset) {
@@ -525,14 +500,17 @@ static MACHINE_CONFIG_START( pc200, amstrad_pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("512K")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( pc2086, pc200 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(pc2086_map)
+MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( ppc512, pc200 )
- MCFG_DEVICE_REMOVE("maincpu")
-
- MCFG_CPU_ADD("maincpu", V30, 8000000)
- MCFG_CPU_PROGRAM_MAP(ppc512_map)
+static MACHINE_CONFIG_DERIVED( ppc640, pc200 )
+ MCFG_CPU_REPLACE("maincpu", V30, 8000000)
+ MCFG_CPU_PROGRAM_MAP(ppc640_map)
MCFG_CPU_IO_MAP(ppc512_io)
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
@@ -542,9 +520,10 @@ static MACHINE_CONFIG_DERIVED( ppc512, pc200 )
MCFG_MC146818_ADD( "rtc", XTAL_32_768kHz )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( ppc640, ppc512 )
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_PROGRAM_MAP(ppc640_map)
+static MACHINE_CONFIG_DERIVED( ppc512, ppc640 )
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("512K")
+ MCFG_RAM_EXTRA_OPTIONS("640K")
MACHINE_CONFIG_END
/*
@@ -564,18 +543,18 @@ Sinclair PC200 ROMs (from a v1.2 PC200):
V1.2:5EA8 V1.2:A058
*/
ROM_START( pc200 )
-// ROM_REGION(0x100000,"maincpu", 0)
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+// ROM_REGION(0x100000,"bios", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
// special bios at 0xe0000 !?
ROM_SYSTEM_BIOS(0, "v15", "v1.5")
- ROMX_LOAD("40185-2.ic129", 0xfc001, 0x2000, CRC(41302eb8) SHA1(8b4b2afea543b96b45d6a30365281decc15f2932), ROM_SKIP(1) | ROM_BIOS(1)) // v2
- ROMX_LOAD("40184-2.ic132", 0xfc000, 0x2000, CRC(71b84616) SHA1(4135102a491b25fc659d70b957e07649f3eacf24), ROM_SKIP(1) | ROM_BIOS(1)) // v2
+ ROMX_LOAD("40185-2.ic129", 0xc001, 0x2000, CRC(41302eb8) SHA1(8b4b2afea543b96b45d6a30365281decc15f2932), ROM_SKIP(1) | ROM_BIOS(1)) // v2
+ ROMX_LOAD("40184-2.ic132", 0xc000, 0x2000, CRC(71b84616) SHA1(4135102a491b25fc659d70b957e07649f3eacf24), ROM_SKIP(1) | ROM_BIOS(1)) // v2
ROM_SYSTEM_BIOS(1, "v13", "v1.3")
- ROMX_LOAD("40185v13.ic129", 0xfc001, 0x2000, CRC(f082f08e) SHA1(b332db419033588a7380bfecdf46104974347341), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD("40184v13.ic132", 0xfc000, 0x2000, CRC(5daf6068) SHA1(93a2ccfb0e29c8f2c98f06c64bb0ea0b3acafb13), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD("40185v13.ic129", 0xc001, 0x2000, CRC(f082f08e) SHA1(b332db419033588a7380bfecdf46104974347341), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD("40184v13.ic132", 0xc000, 0x2000, CRC(5daf6068) SHA1(93a2ccfb0e29c8f2c98f06c64bb0ea0b3acafb13), ROM_SKIP(1) | ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v12", "v1.2")
- ROMX_LOAD("40185.ic129", 0xfc001, 0x2000, CRC(c2b4eeac) SHA1(f11015fadf0c16d86ce2c5047be3e6a4782044f7), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD("40184.ic132", 0xfc000, 0x2000, CRC(b22704a6) SHA1(dadd573db6cd34f339f2f0ae55b07537924c024a), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD("40185.ic129", 0xc001, 0x2000, CRC(c2b4eeac) SHA1(f11015fadf0c16d86ce2c5047be3e6a4782044f7), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD("40184.ic132", 0xc000, 0x2000, CRC(b22704a6) SHA1(dadd573db6cd34f339f2f0ae55b07537924c024a), ROM_SKIP(1) | ROM_BIOS(3))
// also mapped to f0000, f4000, f8000
ROM_REGION( 0x800, "keyboard", 0 )
ROM_LOAD( "40112.ic801", 0x000, 0x800, CRC(842a954c) SHA1(93ca6badf20e0215025fe109959eddead8c52f38) )
@@ -583,25 +562,25 @@ ROM_END
ROM_START( pc20 )
-// ROM_REGION(0x100000,"maincpu", 0)
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+// ROM_REGION(0x100000,"bios", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
// special bios at 0xe0000 !?
// This is probably referring to a check for the Amstrad RP5-2 diagnostic
// card, which can be plugged into an Amstrad XT for troubleshooting purposes.
// - John Elliott
- ROM_LOAD16_BYTE("pc20v2.0", 0xfc001, 0x2000, CRC(41302eb8) SHA1(8b4b2afea543b96b45d6a30365281decc15f2932)) // v2
- ROM_LOAD16_BYTE("pc20v2.1", 0xfc000, 0x2000, CRC(71b84616) SHA1(4135102a491b25fc659d70b957e07649f3eacf24)) // v2
+ ROM_LOAD16_BYTE("pc20v2.0", 0xc001, 0x2000, CRC(41302eb8) SHA1(8b4b2afea543b96b45d6a30365281decc15f2932)) // v2
+ ROM_LOAD16_BYTE("pc20v2.1", 0xc000, 0x2000, CRC(71b84616) SHA1(4135102a491b25fc659d70b957e07649f3eacf24)) // v2
// also mapped to f0000, f4000, f8000
ROM_END
ROM_START( ppc512 )
-// ROM_REGION(0x100000,"maincpu", 0)
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+// ROM_REGION(0x100000,"bios", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
// special bios at 0xe0000 !?
- ROM_LOAD16_BYTE("40107.v1", 0xfc000, 0x2000, CRC(4e37e769) SHA1(88be3d3375ec3b0a7041dbcea225b197e50d4bfe)) // v1.9
- ROM_LOAD16_BYTE("40108.v1", 0xfc001, 0x2000, CRC(4f0302d9) SHA1(e4d69ca98c3b98f3705a2902b16746360043f039)) // v1.9
+ ROM_LOAD16_BYTE("40107.v1", 0xc000, 0x2000, CRC(4e37e769) SHA1(88be3d3375ec3b0a7041dbcea225b197e50d4bfe)) // v1.9
+ ROM_LOAD16_BYTE("40108.v1", 0xc001, 0x2000, CRC(4f0302d9) SHA1(e4d69ca98c3b98f3705a2902b16746360043f039)) // v1.9
// also mapped to f0000, f4000, f8000
ROM_REGION( 0x800, "keyboard", 0 ) // PPC512 / PPC640 / PC200 102-key keyboard
ROM_LOAD( "40112.ic801", 0x000, 0x800, CRC(842a954c) SHA1(93ca6badf20e0215025fe109959eddead8c52f38) )
@@ -609,11 +588,11 @@ ROM_END
ROM_START( ppc640 )
-// ROM_REGION(0x100000,"maincpu", 0)
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+// ROM_REGION(0x100000,"bios", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
// special bios at 0xe0000 !?
- ROM_LOAD16_BYTE("40107.v2", 0xfc000, 0x2000, CRC(0785b63e) SHA1(4dbde6b9e9500298bb6241a8daefd85927f1ad28)) // v2.1
- ROM_LOAD16_BYTE("40108.v2", 0xfc001, 0x2000, CRC(5351cf8c) SHA1(b4dbf11b39378ab4afd2107d3fe54a99fffdedeb)) // v2.1
+ ROM_LOAD16_BYTE("40107.v2", 0xc000, 0x2000, CRC(0785b63e) SHA1(4dbde6b9e9500298bb6241a8daefd85927f1ad28)) // v2.1
+ ROM_LOAD16_BYTE("40108.v2", 0xc001, 0x2000, CRC(5351cf8c) SHA1(b4dbf11b39378ab4afd2107d3fe54a99fffdedeb)) // v2.1
// also mapped to f0000, f4000, f8000
ROM_REGION(0x2000,"subcpu", 0)
ROM_LOAD("40135.ic192", 0x00000, 0x2000, CRC(75d99199) SHA1(a76d39fda3d5140e1fb9ce70fcddbdfb8f891dc6))
@@ -624,10 +603,10 @@ ROM_END
ROM_START( pc2086 )
- ROM_REGION16_LE( 0x100000, "maincpu", 0 )
- ROM_LOAD( "40186.ic171", 0xc0000, 0x8000, CRC(959f00ba) SHA1(5df1efe4203cd076292a7713bd7ebd1196dca577) )
- ROM_LOAD16_BYTE( "40179.ic129", 0xfc000, 0x2000, CRC(003605e4) SHA1(b882e97ee81b9ba0e7d969c63da3f2052f23b4b9) )
- ROM_LOAD16_BYTE( "40180.ic132", 0xfc001, 0x2000, CRC(28ee5e58) SHA1(93e045609466fcec74e2bb72578bb7405281cf7b) )
+ ROM_REGION16_LE( 0x20000, "bios", 0 )
+ ROM_LOAD( "40186.ic171", 0x00000, 0x8000, CRC(959f00ba) SHA1(5df1efe4203cd076292a7713bd7ebd1196dca577) )
+ ROM_LOAD16_BYTE( "40179.ic129", 0x1c000, 0x2000, CRC(003605e4) SHA1(b882e97ee81b9ba0e7d969c63da3f2052f23b4b9) )
+ ROM_LOAD16_BYTE( "40180.ic132", 0x1c001, 0x2000, CRC(28ee5e58) SHA1(93e045609466fcec74e2bb72578bb7405281cf7b) )
ROM_REGION( 0x800, "keyboard", 0 ) // PC2086 / PC3086 102-key keyboard
ROM_LOAD( "40178.ic801", 0x000, 0x800, CRC(f72f1c2e) SHA1(34897e78b3d10f96b36d81778e97c4a9a1b8618b) )
@@ -635,10 +614,10 @@ ROM_END
ROM_START( pc3086 )
- ROM_REGION16_LE( 0x100000, "maincpu", 0 )
- ROM_LOAD( "c000.bin", 0xc0000, 0x8000, CRC(5a6c38e9) SHA1(382d2028e0dc5515a68843829563ce29018edb08) )
- ROM_LOAD( "c800.bin", 0xc8000, 0x2000, CRC(3329c6d5) SHA1(982e852278185d69acde47a4f3942bc09ed76777) )
- ROM_LOAD( "fc00.bin", 0xfc000, 0x4000, CRC(b5630753) SHA1(98c344831cc4dc59ebb39bbb1961964a8d39fe20) )
+ ROM_REGION16_LE( 0x20000, "bios", 0 )
+ ROM_LOAD( "c000.bin", 0x00000, 0x8000, CRC(5a6c38e9) SHA1(382d2028e0dc5515a68843829563ce29018edb08) )
+ ROM_LOAD( "c800.bin", 0x08000, 0x2000, CRC(3329c6d5) SHA1(982e852278185d69acde47a4f3942bc09ed76777) )
+ ROM_LOAD( "fc00.bin", 0x1c000, 0x4000, CRC(b5630753) SHA1(98c344831cc4dc59ebb39bbb1961964a8d39fe20) )
ROM_REGION( 0x800, "keyboard", 0 ) // PC2086 / PC3086 102-key keyboard
ROM_LOAD( "40178.ic801", 0x000, 0x800, CRC(f72f1c2e) SHA1(34897e78b3d10f96b36d81778e97c4a9a1b8618b) )
@@ -655,5 +634,5 @@ COMP( 1987, ppc512, ibm5150, 0, ppc512, pc200, driver_device,
COMP( 1987, ppc640, ibm5150, 0, ppc640, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC640", MACHINE_NOT_WORKING)
COMP( 1988, pc20, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC20" , MACHINE_NOT_WORKING)
COMP( 1988, pc200, ibm5150, 0, pc200, pc200, driver_device, 0, "Sinclair Research Ltd", "PC200 Professional Series", MACHINE_NOT_WORKING)
-COMP( 1988, pc2086, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC2086", MACHINE_NOT_WORKING )
-COMP( 1990, pc3086, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC3086", MACHINE_NOT_WORKING )
+COMP( 1988, pc2086, ibm5150, 0, pc2086, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC2086", MACHINE_NOT_WORKING )
+COMP( 1990, pc3086, ibm5150, 0, pc2086, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC3086", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp
index 7ee9e464a66..1f246a3fec5 100644
--- a/src/mame/drivers/asst128.cpp
+++ b/src/mame/drivers/asst128.cpp
@@ -2,12 +2,9 @@
// copyright-holders:Sergey Svishchev
#include "emu.h"
#include "includes/genpc.h"
+#include "bus/pc_kbd/keyboards.h"
#include "machine/pc_fdc.h"
-#include "cpu/i86/i86.h"
-#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
#include "formats/asst128_dsk.h"
-#include "bus/pc_kbd/keyboards.h"
class asst128_mb_device : public ibm5150_mb_device
{
@@ -16,22 +13,16 @@ public:
asst128_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: ibm5150_mb_device(mconfig, tag, owner, clock) { }
-protected:
- // device-level overrides
- void device_start() override;
+ DECLARE_ADDRESS_MAP(map, 8);
};
-void asst128_mb_device::device_start()
-{
- install_device(0x0020, 0x0021, 0, 0, read8_delegate(FUNC(pic8259_device::read), (pic8259_device*)m_pic8259), write8_delegate(FUNC(pic8259_device::write), (pic8259_device*)m_pic8259) );
- install_device(0x0040, 0x0043, 0, 0, read8_delegate(FUNC(pit8253_device::read), (pit8253_device*)m_pit8253), write8_delegate(FUNC(pit8253_device::write), (pit8253_device*)m_pit8253) );
- install_device(0x0060, 0x0063, 0, 0, read8_delegate(FUNC(i8255_device::read), (i8255_device*)m_ppi8255), write8_delegate(FUNC(i8255_device::write), (i8255_device*)m_ppi8255) );
- install_device(0x0080, 0x0087, 0, 0, read8_delegate(FUNC(ibm5160_mb_device::pc_page_r), this), write8_delegate(FUNC(ibm5160_mb_device::pc_page_w),this) );
- install_device(0x00a0, 0x00a1, 0, 0, read8_delegate(), write8_delegate(FUNC(ibm5160_mb_device::nmi_enable_w),this));
- /* MESS managed RAM */
- if ( m_ram->pointer() )
- membank( "bank10" )->set_base( m_ram->pointer() );
-}
+DEVICE_ADDRESS_MAP_START( map, 8, asst128_mb_device )
+ AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
+ AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+ AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x0080, 0x008f) AM_WRITE(pc_page_w)
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w)
+ADDRESS_MAP_END
const device_type ASST128_MOTHERBOARD = &device_creator<asst128_mb_device>;
@@ -42,12 +33,10 @@ public:
asst128_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_mb(*this, "mb")
, m_fdc(*this, "fdc")
{ }
- required_device<cpu_device> m_maincpu;
- required_device<asst128_mb_device> m_mb;
+ required_device<cpu_device> m_maincpu;
required_device<pc_fdc_xt_device> m_fdc;
DECLARE_FLOPPY_FORMATS( asst128_formats );
@@ -59,8 +48,8 @@ public:
void asst128_state::machine_start()
{
memory_region* font = memregion(":board0:cga_mc1502:gfx1");
- memcpy(font->base(), memregion("maincpu")->base()+0xffa6e, 0x0400);
- memcpy(font->base()+0x0400, memregion("maincpu")->base()+0xf4000, 0x0400);
+ memcpy(font->base(), memregion("bios")->base()+0xfa6e, 0x0400);
+ memcpy(font->base()+0x0400, memregion("bios")->base()+0x4000, 0x0400);
}
WRITE8_MEMBER(asst128_state::asst128_fdc_dor_w)
@@ -71,16 +60,12 @@ WRITE8_MEMBER(asst128_state::asst128_fdc_dor_w)
static ADDRESS_MAP_START( asst128_map, AS_PROGRAM, 16, asst128_state)
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x7ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(asst128_io, AS_IO, 16, asst128_state)
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", asst128_mb_device, map, 0xffff)
AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
AM_RANGE(0x03f2, 0x03f3) AM_WRITE8(asst128_fdc_dor_w, 0xffff)
AM_RANGE(0x03f4, 0x03f5) AM_DEVICE8("fdc:upd765", upd765a_device, map, 0xffff)
@@ -108,10 +93,7 @@ static MACHINE_CONFIG_START( asst128, asst128_state )
asst128_mb_device::static_set_cputag(*device, "maincpu");
MCFG_DEVICE_INPUT_DEFAULTS(asst128)
-// MCFG_DEVICE_REMOVE("mb:dma8237")
-
- MCFG_DEVICE_REMOVE("mb:cassette")
- MCFG_CASSETTE_ADD("mb:cassette")
+ MCFG_DEVICE_MODIFY("mb:cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
MCFG_ISA8_SLOT_ADD("mb:isa", "board0", pc_isa8_cards, "cga_mc1502", true)
@@ -127,14 +109,15 @@ static MACHINE_CONFIG_START( asst128, asst128_state )
MCFG_PC_JOY_ADD("pc_joy")
MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_DEFAULT_SIZE("512K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K")
MACHINE_CONFIG_END
ROM_START( asst128 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROM_LOAD( "extbios.bin", 0xf4000, 0x2000, CRC(e3bf22de) SHA1(d4319edc82c0015ca0adc6c8771e887659717e62))
- ROM_LOAD( "basic.bin", 0xf6000, 0x8000, CRC(a4ec66f6) SHA1(80e934986022681ccde180e92aa108e716c4f19b))
- ROM_LOAD( "mainbios.bin", 0xfe000, 0x2000, CRC(8426cbf5) SHA1(41d14137ffa651977041da22aa8071c0f7854158))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROM_LOAD( "extbios.bin", 0x4000, 0x2000, CRC(e3bf22de) SHA1(d4319edc82c0015ca0adc6c8771e887659717e62))
+ ROM_LOAD( "basic.bin", 0x6000, 0x8000, CRC(a4ec66f6) SHA1(80e934986022681ccde180e92aa108e716c4f19b))
+ ROM_LOAD( "mainbios.bin", 0xe000, 0x2000, CRC(8426cbf5) SHA1(41d14137ffa651977041da22aa8071c0f7854158))
// XXX needs dumping
ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
diff --git a/src/mame/drivers/ec184x.cpp b/src/mame/drivers/ec184x.cpp
index e0a1ed23348..bbad68d0c37 100644
--- a/src/mame/drivers/ec184x.cpp
+++ b/src/mame/drivers/ec184x.cpp
@@ -168,63 +168,37 @@ MACHINE_RESET_MEMBER( ec184x_state, ec1841 )
static ADDRESS_MAP_START( ec1840_map, AS_PROGRAM, 8, ec184x_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xdc000, 0xdffff) AM_RAM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ec1841_map, AS_PROGRAM, 16, ec184x_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ec1847_map, AS_PROGRAM, 8, ec184x_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xdc000, 0xdffff) AM_RAM
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ec1840_io, AS_IO, 8, ec184x_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5150_mb_device, map)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ec1841_io, AS_IO, 16, ec184x_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x02b0, 0x02b3) AM_READWRITE8(memboard_r, memboard_w, 0xffff);
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ec1841_mb_device, map, 0xffff)
+ AM_RANGE(0x02b0, 0x02b3) AM_READWRITE8(memboard_r, memboard_w, 0xffff)
ADDRESS_MAP_END
static ADDRESS_MAP_START( ec1847_io, AS_IO, 8, ec184x_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
// AM_RANGE(0x0210, 0x021f) AM_RAM // internal (non-standard?) bus extender
ADDRESS_MAP_END
-static INPUT_PORTS_START( ec1841 )
-INPUT_PORTS_END
-
-static DEVICE_INPUT_DEFAULTS_START( ec1840 )
- DEVICE_INPUT_DEFAULTS("DSW0", 0x31, 0x21)
-DEVICE_INPUT_DEFAULTS_END
-
-static DEVICE_INPUT_DEFAULTS_START( ec1841 )
- DEVICE_INPUT_DEFAULTS("DSW0", 0x31, 0x21)
-DEVICE_INPUT_DEFAULTS_END
-
-static DEVICE_INPUT_DEFAULTS_START( ec1847 )
- DEVICE_INPUT_DEFAULTS("DSW0", 0x31, 0x31)
-DEVICE_INPUT_DEFAULTS_END
-
// XXX verify everything
static MACHINE_CONFIG_START( ec1840, ec184x_state )
MCFG_CPU_ADD("maincpu", I8088, 4096000)
@@ -233,7 +207,6 @@ static MACHINE_CONFIG_START( ec1840, ec184x_state )
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
MCFG_IBM5150_MOTHERBOARD_ADD("mb","maincpu")
- MCFG_DEVICE_INPUT_DEFAULTS(ec1840)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", ec184x_isa8_cards, "ec1840.0002", false)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", ec184x_isa8_cards, "ec1841.0003", false) // actually ec1840.0003 -- w/o mouse port
@@ -259,7 +232,6 @@ static MACHINE_CONFIG_START( ec1841, ec184x_state )
MCFG_MACHINE_RESET_OVERRIDE(ec184x_state, ec1841)
MCFG_EC1841_MOTHERBOARD_ADD("mb", "maincpu")
- MCFG_DEVICE_INPUT_DEFAULTS(ec1841)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", ec184x_isa8_cards, "ec1841.0002", false) // cga
MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", ec184x_isa8_cards, "ec1841.0003", false) // fdc + mouse port
@@ -285,7 +257,6 @@ static MACHINE_CONFIG_START( ec1847, ec184x_state )
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
- MCFG_DEVICE_INPUT_DEFAULTS(ec1847)
MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", pc_isa8_cards, "hercules", false) // cga, ega and vga(?) are options too
MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", pc_isa8_cards, "fdc_xt", false)
@@ -301,83 +272,83 @@ static MACHINE_CONFIG_START( ec1847, ec184x_state )
MACHINE_CONFIG_END
ROM_START( ec1840 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_DEFAULT_BIOS("v4")
// supports MDA only
ROM_SYSTEM_BIOS(0, "v1", "EC-1840.01")
- ROMX_LOAD( "000-01.bin", 0xfe000, 0x0800, CRC(c3ab1fad) SHA1(8168bdee30698f4f9aa7bbb6dfabe62dd723cec5), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "001-01.bin", 0xff000, 0x0800, CRC(601d1155) SHA1(9684d33b92743749704587a48e679ef7a3b20f9c), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "002-01.bin", 0xfe001, 0x0800, CRC(ce4dddb7) SHA1(f9b1da60c848e68ff1c154d695a36a0833de4804), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "003-01.bin", 0xff001, 0x0800, CRC(14b40431) SHA1(ce7fffa41897405ee64fd4e86015e774f8bd108a), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "000-01.bin", 0xe000, 0x0800, CRC(c3ab1fad) SHA1(8168bdee30698f4f9aa7bbb6dfabe62dd723cec5), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "001-01.bin", 0xf000, 0x0800, CRC(601d1155) SHA1(9684d33b92743749704587a48e679ef7a3b20f9c), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "002-01.bin", 0xe001, 0x0800, CRC(ce4dddb7) SHA1(f9b1da60c848e68ff1c154d695a36a0833de4804), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "003-01.bin", 0xf001, 0x0800, CRC(14b40431) SHA1(ce7fffa41897405ee64fd4e86015e774f8bd108a), ROM_SKIP(1) | ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v4", "EC-1840.04")
- ROMX_LOAD( "000-04-971b.bin", 0xfe000, 0x0800, CRC(06aeaee8) SHA1(9f954e4c48156d573a8e0109e7ca652be9e6036a), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "001-04-92b7.bin", 0xff000, 0x0800, CRC(3fae650a) SHA1(c98b777fdeceadd72d6eb9465b3501b9ead55a08), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "002-04-9e17.bin", 0xfe001, 0x0800, CRC(d59712df) SHA1(02ea1b3ae9662f5c64c58920a32ca9db0f6fbd12), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "003-04-3ccb.bin", 0xff001, 0x0800, CRC(7fc362c7) SHA1(538e13639ad2b4c30bd72582e323181e63513306), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "000-04-971b.bin", 0xe000, 0x0800, CRC(06aeaee8) SHA1(9f954e4c48156d573a8e0109e7ca652be9e6036a), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "001-04-92b7.bin", 0xf000, 0x0800, CRC(3fae650a) SHA1(c98b777fdeceadd72d6eb9465b3501b9ead55a08), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "002-04-9e17.bin", 0xe001, 0x0800, CRC(d59712df) SHA1(02ea1b3ae9662f5c64c58920a32ca9db0f6fbd12), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "003-04-3ccb.bin", 0xf001, 0x0800, CRC(7fc362c7) SHA1(538e13639ad2b4c30bd72582e323181e63513306), ROM_SKIP(1) | ROM_BIOS(2))
ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
ROM_END
ROM_START( ec1841 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_DEFAULT_BIOS("v2")
ROM_SYSTEM_BIOS(0, "v1", "EC-1841.01")
- ROMX_LOAD( "012-01-3107.bin", 0xfc000, 0x0800, CRC(77957396) SHA1(785f1dceb6e2b4618f5c5f0af15eb74a8c951448), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "013-01-203f.bin", 0xfc001, 0x0800, CRC(768bd3d5) SHA1(2e948f2ad262de306d889b7964c3f1aad45ff5bc), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "014-01-fa40.bin", 0xfd000, 0x0800, CRC(47722b58) SHA1(a6339ee8af516f834826b7828a5cf79cb650480c), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "015-01-bf1d.bin", 0xfd001, 0x0800, CRC(b585b5ea) SHA1(d0ebed586eb13031477c2e071c50416682f80489), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "016-01-65f7.bin", 0xfe000, 0x0800, CRC(28a07db4) SHA1(17fbcd60dacd1d3f8d8355db429f97e4d1d1ac88), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "017-01-5be1.bin", 0xfe001, 0x0800, CRC(928bda26) SHA1(ee889184067e2680b29a8ef1c3a76cf5afd4c78d), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "018-01-7090.bin", 0xff000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "019-01-0492.bin", 0xff001, 0x0800, CRC(8a9d593e) SHA1(f3936d2cb4e6d130dd732973f126c3aa20612463), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "012-01-3107.bin", 0xc000, 0x0800, CRC(77957396) SHA1(785f1dceb6e2b4618f5c5f0af15eb74a8c951448), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "013-01-203f.bin", 0xc001, 0x0800, CRC(768bd3d5) SHA1(2e948f2ad262de306d889b7964c3f1aad45ff5bc), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "014-01-fa40.bin", 0xd000, 0x0800, CRC(47722b58) SHA1(a6339ee8af516f834826b7828a5cf79cb650480c), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "015-01-bf1d.bin", 0xd001, 0x0800, CRC(b585b5ea) SHA1(d0ebed586eb13031477c2e071c50416682f80489), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "016-01-65f7.bin", 0xe000, 0x0800, CRC(28a07db4) SHA1(17fbcd60dacd1d3f8d8355db429f97e4d1d1ac88), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "017-01-5be1.bin", 0xe001, 0x0800, CRC(928bda26) SHA1(ee889184067e2680b29a8ef1c3a76cf5afd4c78d), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "018-01-7090.bin", 0xf000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "019-01-0492.bin", 0xf001, 0x0800, CRC(8a9d593e) SHA1(f3936d2cb4e6d130dd732973f126c3aa20612463), ROM_SKIP(1) | ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v2", "EC-1841.02")
- ROMX_LOAD( "012-02-37f6.bin", 0xfc000, 0x0800, CRC(8f5c6a20) SHA1(874b62f9cee8d3b974f33732f94eff10fc002c44), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "013-02-2552.bin", 0xfc001, 0x0800, CRC(e3c10128) SHA1(d6ed743ebe9c130925c9f17aad1a45db9194c967), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "014-02-0fbe.bin", 0xfd000, 0x0800, CRC(f8517e5e) SHA1(8034cd6ff5778365dc9daa494524f1753a74f1ed), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "015-02-d736.bin", 0xfd001, 0x0800, CRC(8538c52a) SHA1(ee981ce90870b6546a18f2a2e64d71b0038ce0dd), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "016-02-5b2c.bin", 0xfe000, 0x0800, CRC(3d1d1e67) SHA1(c527e29796537787c0f6c329f3c203f6131ca77f), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "017-02-4b9d.bin", 0xfe001, 0x0800, CRC(1b985264) SHA1(5ddcb9c13564be208c5068c105444a87159c67ee), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "018-02-7090.bin", 0xff000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "019-02-0493.bin", 0xff001, 0x0800, CRC(61aae23d) SHA1(7b3aa24a63ee31b194297eb1e61c3827edfcb95a), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "012-02-37f6.bin", 0xc000, 0x0800, CRC(8f5c6a20) SHA1(874b62f9cee8d3b974f33732f94eff10fc002c44), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "013-02-2552.bin", 0xc001, 0x0800, CRC(e3c10128) SHA1(d6ed743ebe9c130925c9f17aad1a45db9194c967), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "014-02-0fbe.bin", 0xd000, 0x0800, CRC(f8517e5e) SHA1(8034cd6ff5778365dc9daa494524f1753a74f1ed), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "015-02-d736.bin", 0xd001, 0x0800, CRC(8538c52a) SHA1(ee981ce90870b6546a18f2a2e64d71b0038ce0dd), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "016-02-5b2c.bin", 0xe000, 0x0800, CRC(3d1d1e67) SHA1(c527e29796537787c0f6c329f3c203f6131ca77f), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "017-02-4b9d.bin", 0xe001, 0x0800, CRC(1b985264) SHA1(5ddcb9c13564be208c5068c105444a87159c67ee), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "018-02-7090.bin", 0xf000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "019-02-0493.bin", 0xf001, 0x0800, CRC(61aae23d) SHA1(7b3aa24a63ee31b194297eb1e61c3827edfcb95a), ROM_SKIP(1) | ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v3", "EC-1841.03")
- ROMX_LOAD( "012-03-37e7.bin", 0xfc000, 0x0800, CRC(49992bd5) SHA1(119121e1b4af1c44b9b8c2edabe7dc1d3019c4a6), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "013-03-2554.bin", 0xfc001, 0x0800, CRC(834bd7d7) SHA1(e37514fc4cb8a5cbe68e7564e0e07d5116c4021a), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "014-03-0fbe.bin", 0xfd000, 0x0800, CRC(f8517e5e) SHA1(8034cd6ff5778365dc9daa494524f1753a74f1ed), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "015-03-d736.bin", 0xfd001, 0x0800, CRC(8538c52a) SHA1(ee981ce90870b6546a18f2a2e64d71b0038ce0dd), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "016-03-5b2c.bin", 0xfe000, 0x0800, CRC(3d1d1e67) SHA1(c527e29796537787c0f6c329f3c203f6131ca77f), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "017-03-4b9d.bin", 0xfe001, 0x0800, CRC(1b985264) SHA1(5ddcb9c13564be208c5068c105444a87159c67ee), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "018-03-7090.bin", 0xff000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "019-03-0493.bin", 0xff001, 0x0800, CRC(61aae23d) SHA1(7b3aa24a63ee31b194297eb1e61c3827edfcb95a), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "012-03-37e7.bin", 0xc000, 0x0800, CRC(49992bd5) SHA1(119121e1b4af1c44b9b8c2edabe7dc1d3019c4a6), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "013-03-2554.bin", 0xc001, 0x0800, CRC(834bd7d7) SHA1(e37514fc4cb8a5cbe68e7564e0e07d5116c4021a), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "014-03-0fbe.bin", 0xd000, 0x0800, CRC(f8517e5e) SHA1(8034cd6ff5778365dc9daa494524f1753a74f1ed), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "015-03-d736.bin", 0xd001, 0x0800, CRC(8538c52a) SHA1(ee981ce90870b6546a18f2a2e64d71b0038ce0dd), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "016-03-5b2c.bin", 0xe000, 0x0800, CRC(3d1d1e67) SHA1(c527e29796537787c0f6c329f3c203f6131ca77f), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "017-03-4b9d.bin", 0xe001, 0x0800, CRC(1b985264) SHA1(5ddcb9c13564be208c5068c105444a87159c67ee), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "018-03-7090.bin", 0xf000, 0x0800, CRC(75ca7d7e) SHA1(6356426820c5326a7893a437d54b02f250ef8609), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "019-03-0493.bin", 0xf001, 0x0800, CRC(61aae23d) SHA1(7b3aa24a63ee31b194297eb1e61c3827edfcb95a), ROM_SKIP(1) | ROM_BIOS(3))
ROM_END
ROM_START( ec1845 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROMX_LOAD( "184500.bin", 0xfc000, 0x0800, CRC(7c472ef7) SHA1(3af53f27b49bbc731bf51f9300fbada23a1bfcfc), ROM_SKIP(1))
- ROMX_LOAD( "184501.bin", 0xfc001, 0x0800, CRC(db240dc6) SHA1(d7bb022213d09bbf2a8107fe4f1cd27b23939e18), ROM_SKIP(1))
- ROMX_LOAD( "184502.bin", 0xfd000, 0x0800, CRC(149e7e29) SHA1(7f2a297588fef1bc750c57e6ae0d5acf3d27c486), ROM_SKIP(1))
- ROMX_LOAD( "184503.bin", 0xfd001, 0x0800, CRC(e28cbd74) SHA1(cf1fba4e67c8e1dd8cdda547118e84b704029b03), ROM_SKIP(1))
- ROMX_LOAD( "184504.bin", 0xfe000, 0x0800, CRC(55fa7a1d) SHA1(58f7abab08b9d2f0a1c1636e11bb72af2694c95f), ROM_SKIP(1))
- ROMX_LOAD( "184505.bin", 0xfe001, 0x0800, CRC(c807e3f5) SHA1(08117e449f0d04f96041cff8d34893f500f3760d), ROM_SKIP(1))
- ROMX_LOAD( "184506.bin", 0xff000, 0x0800, CRC(24f5c27c) SHA1(7822dd7f715ef00ccf6d8408be8bbfe01c2eba20), ROM_SKIP(1))
- ROMX_LOAD( "184507.bin", 0xff001, 0x0800, CRC(75122203) SHA1(7b0fbdf1315230633e39574ac7360163bc7361e1), ROM_SKIP(1))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROMX_LOAD( "184500.bin", 0xc000, 0x0800, CRC(7c472ef7) SHA1(3af53f27b49bbc731bf51f9300fbada23a1bfcfc), ROM_SKIP(1))
+ ROMX_LOAD( "184501.bin", 0xc001, 0x0800, CRC(db240dc6) SHA1(d7bb022213d09bbf2a8107fe4f1cd27b23939e18), ROM_SKIP(1))
+ ROMX_LOAD( "184502.bin", 0xd000, 0x0800, CRC(149e7e29) SHA1(7f2a297588fef1bc750c57e6ae0d5acf3d27c486), ROM_SKIP(1))
+ ROMX_LOAD( "184503.bin", 0xd001, 0x0800, CRC(e28cbd74) SHA1(cf1fba4e67c8e1dd8cdda547118e84b704029b03), ROM_SKIP(1))
+ ROMX_LOAD( "184504.bin", 0xe000, 0x0800, CRC(55fa7a1d) SHA1(58f7abab08b9d2f0a1c1636e11bb72af2694c95f), ROM_SKIP(1))
+ ROMX_LOAD( "184505.bin", 0xe001, 0x0800, CRC(c807e3f5) SHA1(08117e449f0d04f96041cff8d34893f500f3760d), ROM_SKIP(1))
+ ROMX_LOAD( "184506.bin", 0xf000, 0x0800, CRC(24f5c27c) SHA1(7822dd7f715ef00ccf6d8408be8bbfe01c2eba20), ROM_SKIP(1))
+ ROMX_LOAD( "184507.bin", 0xf001, 0x0800, CRC(75122203) SHA1(7b0fbdf1315230633e39574ac7360163bc7361e1), ROM_SKIP(1))
ROM_END
ROM_START( ec1847 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x20000,"bios", 0)
ROM_SYSTEM_BIOS(0, "vXXX", "EC-1847.0x")
- ROMX_LOAD( "308_d47_2764.bin", 0xc8000, 0x2000, CRC(f06924f2) SHA1(83a5dedf1c06f875c598f087bbc087524bc9bfa3), ROM_BIOS(1))
- ROMX_LOAD( "188m_d47_2764.bin", 0xf4000, 0x2000, CRC(bc8742c7) SHA1(3af09d14e891e976b7a9a2a6e1af63f0eabe5426), ROM_BIOS(1))
- ROMX_LOAD( "188m_d48_2764.bin", 0xfe000, 0x2000, CRC(7d290e95) SHA1(e73e6c8e19477fce5de3f95b89693dc6ad6781ab), ROM_BIOS(1))
+ ROMX_LOAD( "308_d47_2764.bin", 0x08000, 0x2000, CRC(f06924f2) SHA1(83a5dedf1c06f875c598f087bbc087524bc9bfa3), ROM_BIOS(1))
+ ROMX_LOAD( "188m_d47_2764.bin", 0x14000, 0x2000, CRC(bc8742c7) SHA1(3af09d14e891e976b7a9a2a6e1af63f0eabe5426), ROM_BIOS(1))
+ ROMX_LOAD( "188m_d48_2764.bin", 0x1e000, 0x2000, CRC(7d290e95) SHA1(e73e6c8e19477fce5de3f95b89693dc6ad6781ab), ROM_BIOS(1))
ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
ROM_LOAD( "317_d28_2732.bin", 0x00000, 0x1000, CRC(8939599b) SHA1(53d02460cf93596882a96758ef4bac5fa1ce55b2)) // monochrome font
ROM_END
/* YEAR ROM NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP ( 1987, ec1840, ibm5150, 0, ec1840, ec1841, driver_device, 0, "<unknown>", "EC-1840", MACHINE_NOT_WORKING)
-COMP ( 1987, ec1841, ibm5150, 0, ec1841, ec1841, ec184x_state, ec1841, "<unknown>", "EC-1841", 0)
-COMP ( 1989, ec1845, ibm5150, 0, ec1841, ec1841, ec184x_state, ec1841, "<unknown>", "EC-1845", MACHINE_NOT_WORKING)
-COMP ( 1990, ec1847, ibm5150, 0, ec1847, ec1841, driver_device, 0, "<unknown>", "EC-1847", MACHINE_NOT_WORKING)
+COMP ( 1987, ec1840, ibm5150, 0, ec1840, 0, driver_device, 0, "<unknown>", "EC-1840", MACHINE_NOT_WORKING)
+COMP ( 1987, ec1841, ibm5150, 0, ec1841, 0, ec184x_state, ec1841, "<unknown>", "EC-1841", 0)
+COMP ( 1989, ec1845, ibm5150, 0, ec1841, 0, ec184x_state, ec1841, "<unknown>", "EC-1845", MACHINE_NOT_WORKING)
+COMP ( 1990, ec1847, ibm5150, 0, ec1847, 0, driver_device, 0, "<unknown>", "EC-1847", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp
index 8a1f92ecfb0..476d1b1fda6 100644
--- a/src/mame/drivers/europc.cpp
+++ b/src/mame/drivers/europc.cpp
@@ -5,8 +5,6 @@
#include "includes/genpc.h"
#include "machine/nvram.h"
#include "machine/pckeybrd.h"
-#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
class europc_pc_state : public driver_device
{
@@ -325,18 +323,18 @@ WRITE8_MEMBER( europc_pc_state::europc_rtc_w )
DRIVER_INIT_MEMBER(europc_pc_state,europc)
{
- UINT8 *rom = &memregion("maincpu")->base()[0];
+ UINT8 *rom = &memregion("bios")->base()[0];
int i;
/*
fix century rom bios bug !
if year <79 month (and not CENTURY) is loaded with 0x20
*/
- if (rom[0xff93e]==0xb6){ // mov dh,
+ if (rom[0xf93e]==0xb6){ // mov dh,
UINT8 a;
- rom[0xff93e]=0xb5; // mov ch,
- for (i=0xf8000, a=0; i<0xfffff; i++ ) a+=rom[i];
- rom[0xfffff]=256-a;
+ rom[0xf93e]=0xb5; // mov ch,
+ for (i=0x8000, a=0; i<0xffff; i++ ) a+=rom[i];
+ rom[0xffff]=256-a;
}
memset(&m_rtc_data,0,sizeof(m_rtc_data));
@@ -462,17 +460,13 @@ INPUT_PORTS_END
static ADDRESS_MAP_START( europc_map, AS_PROGRAM, 8, europc_pc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xaffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_NOP
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(europc_io, AS_IO, 8, europc_pc_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0060, 0x0063) AM_READWRITE(europc_pio_r, europc_pio_w)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map)
AM_RANGE(0x0250, 0x025f) AM_READWRITE(europc_jim_r, europc_jim_w)
AM_RANGE(0x02e0, 0x02e0) AM_READ(europc_jim2_r)
ADDRESS_MAP_END
@@ -497,12 +491,13 @@ static MACHINE_CONFIG_START( europc, europc_pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MACHINE_CONFIG_END
ROM_START( europc )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x10000,"bios", 0)
// hdd bios integrated!
- ROM_LOAD("50145", 0xf8000, 0x8000, CRC(1775a11d) SHA1(54430d4d0462860860397487c9c109e6f70db8e3)) // V2.07
+ ROM_LOAD("50145", 0x8000, 0x8000, CRC(1775a11d) SHA1(54430d4d0462860860397487c9c109e6f70db8e3)) // V2.07
ROM_END
COMP( 1988, europc, ibm5150, 0, europc, europc, europc_pc_state, europc, "Schneider Rdf. AG", "EURO PC", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/genpc.cpp b/src/mame/drivers/genpc.cpp
index 72d267b69af..857bac57eeb 100644
--- a/src/mame/drivers/genpc.cpp
+++ b/src/mame/drivers/genpc.cpp
@@ -15,7 +15,6 @@
#include "cpu/nec/nec.h"
#include "cpu/i86/i86.h"
-#include "machine/pc_lpt.h"
#include "bus/pc_kbd/keyboards.h"
#include "softlist.h"
@@ -31,37 +30,25 @@ public:
static ADDRESS_MAP_START( pc8_map, AS_PROGRAM, 8, genpc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( pc16_map, AS_PROGRAM, 16, genpc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
-
static ADDRESS_MAP_START(pc8_io, AS_IO, 8, genpc_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
ADDRESS_MAP_END
static ADDRESS_MAP_START(pc16_io, AS_IO, 16, genpc_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
ADDRESS_MAP_END
-static INPUT_PORTS_START( pcgen )
-INPUT_PORTS_END
-
static DEVICE_INPUT_DEFAULTS_START(cga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20)
DEVICE_INPUT_DEFAULTS_END
@@ -70,7 +57,6 @@ static DEVICE_INPUT_DEFAULTS_START(vga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x00)
DEVICE_INPUT_DEFAULTS_END
-
static MACHINE_CONFIG_START( pcmda, genpc_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", V20, 4772720)
@@ -93,147 +79,65 @@ static MACHINE_CONFIG_START( pcmda, genpc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( pcherc, genpc_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", V20, 4772720)
- MCFG_CPU_PROGRAM_MAP(pc8_map)
- MCFG_CPU_IO_MAP(pc8_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
-
- MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
-
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", pc_isa8_cards, "hercules", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", pc_isa8_cards, "com", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa3", pc_isa8_cards, "fdc_xt", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, "hdc", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa5", pc_isa8_cards, "adlib", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa6", pc_isa8_cards, nullptr, false)
-
- /* keyboard */
- MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
-
- /* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("640K")
-
- /* software lists */
- MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+static MACHINE_CONFIG_DERIVED( pcherc, pcmda )
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "hercules", false)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( pccga, genpc_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", I8086, 4772720)
+static MACHINE_CONFIG_DERIVED( pccga, pcmda )
+ MCFG_CPU_REPLACE("maincpu", I8086, 4772720)
MCFG_CPU_PROGRAM_MAP(pc16_map)
MCFG_CPU_IO_MAP(pc16_io)
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
-
- MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
+ MCFG_DEVICE_MODIFY("mb")
MCFG_DEVICE_INPUT_DEFAULTS(cga)
-
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", pc_isa8_cards, "cga", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", pc_isa8_cards, "com", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa3", pc_isa8_cards, "fdc_xt", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, "hdc", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa5", pc_isa8_cards, "sblaster1_0", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa6", pc_isa8_cards, nullptr, false)
-
- /* keyboard */
- MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
-
- /* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("640K")
-
- /* software lists */
- MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "cga", false)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( pcega, genpc_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", I8086, 4772720)
- MCFG_CPU_PROGRAM_MAP(pc16_map)
- MCFG_CPU_IO_MAP(pc16_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
-
- MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
+static MACHINE_CONFIG_DERIVED( pcega, pccga )
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "ega", false)
+ MCFG_DEVICE_MODIFY("mb")
MCFG_DEVICE_INPUT_DEFAULTS(vga)
-
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", pc_isa8_cards, "com", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", pc_isa8_cards, "fdc_xt", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa3", pc_isa8_cards, "hdc", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, "sblaster1_0", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa5", pc_isa8_cards, "ega", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa6", pc_isa8_cards, nullptr, false)
-
- /* keyboard */
- MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
-
- /* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("640K")
-
- /* software lists */
- MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( xtvga, genpc_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", I8086, 4772720)
- MCFG_CPU_PROGRAM_MAP(pc16_map)
- MCFG_CPU_IO_MAP(pc16_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
-
- MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
- MCFG_DEVICE_INPUT_DEFAULTS(vga)
-
- MCFG_ISA8_SLOT_ADD("mb:isa","isa1", pc_isa8_cards, "com", false)
- MCFG_ISA8_SLOT_ADD("mb:isa","isa2", pc_isa8_cards, "fdc_xt", false)
- MCFG_ISA8_SLOT_ADD("mb:isa","isa3", pc_isa8_cards, "hdc", false)
- MCFG_ISA8_SLOT_ADD("mb:isa","isa4", pc_isa8_cards, "sblaster1_0", false)
- MCFG_ISA8_SLOT_ADD("mb:isa","isa5", pc_isa8_cards, "svga_et4k", false)
- MCFG_ISA8_SLOT_ADD("mb:isa","isa6", pc_isa8_cards, nullptr, false)
-
- /* keyboard */
- MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
-
- /* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("640K")
-
- /* software lists */
- MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+static MACHINE_CONFIG_DERIVED( xtvga, pcega )
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(pc_isa8_cards, "svga_et4k", false)
MACHINE_CONFIG_END
ROM_START( pcmda )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x10000,"bios", 0)
ROM_SYSTEM_BIOS(0, "anon", "XT Anonymous Generic Turbo BIOS")
- ROMX_LOAD("pcxt.rom", 0xfe000, 0x02000, CRC(031aafad) SHA1(a641b505bbac97b8775f91fe9b83d9afdf4d038f),ROM_BIOS(1))
+ ROMX_LOAD("pcxt.rom", 0xe000, 0x02000, CRC(031aafad) SHA1(a641b505bbac97b8775f91fe9b83d9afdf4d038f),ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "anon2007", "XT Anonymous Generic Turbo BIOS 2007")
- ROMX_LOAD( "pcxt2007.bin", 0xfe000, 0x2000, CRC(1d7bd86c) SHA1(33a500f599b4dad2fe6d7a5c3e89b13bd5dd2987),ROM_BIOS(2))
+ ROMX_LOAD( "pcxt2007.bin", 0xe000, 0x2000, CRC(1d7bd86c) SHA1(33a500f599b4dad2fe6d7a5c3e89b13bd5dd2987),ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "ami", "XT AMI")
- ROMX_LOAD( "ami.bin", 0xfe000, 0x2000, CRC(b381eb22) SHA1(9735193de119270c946a17ed58c3ab9554e0852e),ROM_BIOS(3))
+ ROMX_LOAD( "ami.bin", 0xe000, 0x2000, CRC(b381eb22) SHA1(9735193de119270c946a17ed58c3ab9554e0852e),ROM_BIOS(3))
ROM_SYSTEM_BIOS(3, "award", "XT Award 2.05")
- ROMX_LOAD( "award2.05.bin", 0xfe000, 0x2000, CRC(5b3953e5) SHA1(4a36171aa8d993008187f39f732b9296401b7b6c),ROM_BIOS(4))
+ ROMX_LOAD( "award2.05.bin", 0xe000, 0x2000, CRC(5b3953e5) SHA1(4a36171aa8d993008187f39f732b9296401b7b6c),ROM_BIOS(4))
ROM_SYSTEM_BIOS(4, "dtk", "XT DTK Erso bios 2.42")
- ROMX_LOAD( "dtk2.42.bin", 0xfe000, 0x2000, CRC(3f2d2a76) SHA1(02fa057f2c22ab199a8d9795ab1ae570f2b13a36),ROM_BIOS(5))
+ ROMX_LOAD( "dtk2.42.bin", 0xe000, 0x2000, CRC(3f2d2a76) SHA1(02fa057f2c22ab199a8d9795ab1ae570f2b13a36),ROM_BIOS(5))
ROM_SYSTEM_BIOS(5, "peter", "XT Peter Kohlman 3.75") // V20 Rom only
- ROMX_LOAD( "peterv203.75.bin", 0xfe000, 0x2000, CRC(b053a6a4) SHA1(f53218ad3d725f12d9149b22d8afcf6a8869a3bd),ROM_BIOS(6))
+ ROMX_LOAD( "peterv203.75.bin", 0xe000, 0x2000, CRC(b053a6a4) SHA1(f53218ad3d725f12d9149b22d8afcf6a8869a3bd),ROM_BIOS(6))
ROM_SYSTEM_BIOS(6, "pho227", "XT Phoenix Bios 2.27")
- ROMX_LOAD( "phoenix2.27.bin", 0xfe000, 0x2000, CRC(168ffef0) SHA1(69465db2f9246a614044d1f433d374506a13a07f),ROM_BIOS(7))
+ ROMX_LOAD( "phoenix2.27.bin", 0xe000, 0x2000, CRC(168ffef0) SHA1(69465db2f9246a614044d1f433d374506a13a07f),ROM_BIOS(7))
ROM_SYSTEM_BIOS(7, "pho251", "XT Phoenix Bios 2.51")
- ROMX_LOAD( "phoenix2.51.bin", 0xfe000, 0x2000, CRC(9b7e9c40) SHA1(c948a8d3d715e469105c6e2acd8b46ec274b25a8),ROM_BIOS(8))
+ ROMX_LOAD( "phoenix2.51.bin", 0xe000, 0x2000, CRC(9b7e9c40) SHA1(c948a8d3d715e469105c6e2acd8b46ec274b25a8),ROM_BIOS(8))
ROM_SYSTEM_BIOS(8, "turbo", "XT Turbo Bios 3.10")
- ROMX_LOAD( "turbo3.10.bin", 0xfe000, 0x2000, CRC(8aaca1e3) SHA1(9c03da16713e08c0112a04c8bdfa394e7341c1fc),ROM_BIOS(9))
+ ROMX_LOAD( "turbo3.10.bin", 0xe000, 0x2000, CRC(8aaca1e3) SHA1(9c03da16713e08c0112a04c8bdfa394e7341c1fc),ROM_BIOS(9))
ROM_END
#define rom_pcherc rom_pcmda
@@ -241,25 +145,25 @@ ROM_END
#define rom_pcega rom_pcmda
ROM_START( pc )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x10000,"bios", 0)
ROM_SYSTEM_BIOS(0, "anon", "XT Anonymous Generic Turbo BIOS")
- ROMX_LOAD("pcxt.rom", 0xfe000, 0x02000, CRC(031aafad) SHA1(a641b505bbac97b8775f91fe9b83d9afdf4d038f),ROM_BIOS(1))
+ ROMX_LOAD("pcxt.rom", 0xe000, 0x02000, CRC(031aafad) SHA1(a641b505bbac97b8775f91fe9b83d9afdf4d038f),ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "anon2007", "XT Anonymous Generic Turbo BIOS 2007")
- ROMX_LOAD( "pcxt2007.bin", 0xfe000, 0x2000, CRC(1d7bd86c) SHA1(33a500f599b4dad2fe6d7a5c3e89b13bd5dd2987),ROM_BIOS(2))
+ ROMX_LOAD( "pcxt2007.bin", 0xe000, 0x2000, CRC(1d7bd86c) SHA1(33a500f599b4dad2fe6d7a5c3e89b13bd5dd2987),ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "ami", "XT AMI")
- ROMX_LOAD( "ami.bin", 0xfe000, 0x2000, CRC(b381eb22) SHA1(9735193de119270c946a17ed58c3ab9554e0852e),ROM_BIOS(3))
+ ROMX_LOAD( "ami.bin", 0xe000, 0x2000, CRC(b381eb22) SHA1(9735193de119270c946a17ed58c3ab9554e0852e),ROM_BIOS(3))
ROM_SYSTEM_BIOS(3, "award", "XT Award 2.05")
- ROMX_LOAD( "award2.05.bin", 0xfe000, 0x2000, CRC(5b3953e5) SHA1(4a36171aa8d993008187f39f732b9296401b7b6c),ROM_BIOS(4))
+ ROMX_LOAD( "award2.05.bin", 0xe000, 0x2000, CRC(5b3953e5) SHA1(4a36171aa8d993008187f39f732b9296401b7b6c),ROM_BIOS(4))
ROM_SYSTEM_BIOS(4, "dtk", "XT DTK Erso bios 2.42")
- ROMX_LOAD( "dtk2.42.bin", 0xfe000, 0x2000, CRC(3f2d2a76) SHA1(02fa057f2c22ab199a8d9795ab1ae570f2b13a36),ROM_BIOS(5))
+ ROMX_LOAD( "dtk2.42.bin", 0xe000, 0x2000, CRC(3f2d2a76) SHA1(02fa057f2c22ab199a8d9795ab1ae570f2b13a36),ROM_BIOS(5))
ROM_SYSTEM_BIOS(5, "peter", "XT Peter Kohlman 3.75")
- ROMX_LOAD( "peterv203.75.bin", 0xfe000, 0x2000, CRC(b053a6a4) SHA1(f53218ad3d725f12d9149b22d8afcf6a8869a3bd),ROM_BIOS(6))
+ ROMX_LOAD( "peterv203.75.bin", 0xe000, 0x2000, CRC(b053a6a4) SHA1(f53218ad3d725f12d9149b22d8afcf6a8869a3bd),ROM_BIOS(6))
ROM_SYSTEM_BIOS(6, "pho227", "XT Phoenix Bios 2.27")
- ROMX_LOAD( "phoenix2.27.bin", 0xfe000, 0x2000, CRC(168ffef0) SHA1(69465db2f9246a614044d1f433d374506a13a07f),ROM_BIOS(7))
+ ROMX_LOAD( "phoenix2.27.bin", 0xe000, 0x2000, CRC(168ffef0) SHA1(69465db2f9246a614044d1f433d374506a13a07f),ROM_BIOS(7))
ROM_SYSTEM_BIOS(7, "pho251", "XT Phoenix Bios 2.51")
- ROMX_LOAD( "phoenix2.51.bin", 0xfe000, 0x2000, CRC(9b7e9c40) SHA1(c948a8d3d715e469105c6e2acd8b46ec274b25a8),ROM_BIOS(8))
+ ROMX_LOAD( "phoenix2.51.bin", 0xe000, 0x2000, CRC(9b7e9c40) SHA1(c948a8d3d715e469105c6e2acd8b46ec274b25a8),ROM_BIOS(8))
ROM_SYSTEM_BIOS(8, "turbo", "XT Turbo Bios 3.10")
- ROMX_LOAD( "turbo3.10.bin", 0xfe000, 0x2000, CRC(8aaca1e3) SHA1(9c03da16713e08c0112a04c8bdfa394e7341c1fc),ROM_BIOS(9))
+ ROMX_LOAD( "turbo3.10.bin", 0xe000, 0x2000, CRC(8aaca1e3) SHA1(9c03da16713e08c0112a04c8bdfa394e7341c1fc),ROM_BIOS(9))
/* IBM 1501981(CGA) and 1501985(MDA) Character rom */
ROM_REGION(0x2000,"gfx1", 0)
ROM_LOAD("5788005.u33", 0x00000, 0x2000, CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
@@ -274,8 +178,8 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1987, pc, ibm5150, 0, pccga, pcgen, driver_device, 0, "<generic>", "PC (CGA)" , 0)
-COMP( 1987, pcega, ibm5150, 0, pcega, pcgen, driver_device, 0, "<generic>", "PC (EGA)" , 0)
-COMP ( 1987, pcmda, ibm5150, 0, pcmda, pcgen, driver_device, 0, "<generic>", "PC (MDA)" , 0)
-COMP ( 1987, pcherc, ibm5150, 0, pcherc, pcgen, driver_device, 0, "<generic>", "PC (Hercules)" , 0)
-COMP ( 1987, xtvga, ibm5150, 0, xtvga, pcgen, driver_device, 0, "<generic>", "PC (VGA)" , MACHINE_NOT_WORKING)
+COMP( 1987, pc, ibm5150, 0, pccga, 0, driver_device, 0, "<generic>", "PC (CGA)" , 0)
+COMP( 1987, pcega, ibm5150, 0, pcega, 0, driver_device, 0, "<generic>", "PC (EGA)" , 0)
+COMP ( 1987, pcmda, ibm5150, 0, pcmda, 0, driver_device, 0, "<generic>", "PC (MDA)" , 0)
+COMP ( 1987, pcherc, ibm5150, 0, pcherc, 0, driver_device, 0, "<generic>", "PC (Hercules)" , 0)
+COMP ( 1987, xtvga, ibm5150, 0, xtvga, 0, driver_device, 0, "<generic>", "PC (VGA)" , MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/ibmpc.cpp b/src/mame/drivers/ibmpc.cpp
index f49d500e829..3df1c92edaf 100644
--- a/src/mame/drivers/ibmpc.cpp
+++ b/src/mame/drivers/ibmpc.cpp
@@ -258,9 +258,6 @@ XT U44 IBM.bin: IBM 5160 PC/XT Bank-selection decoding ROM (256x4 bit). Not mapp
#include "emu.h"
#include "cpu/i86/i86.h"
#include "machine/ram.h"
-#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
-#include "machine/pc_lpt.h"
#include "bus/pc_kbd/keyboards.h"
#include "includes/genpc.h"
#include "softlist.h"
@@ -277,30 +274,18 @@ public:
static ADDRESS_MAP_START( pc8_map, AS_PROGRAM, 8, ibmpc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(pc8_io, AS_IO, 8, ibmpc_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
ADDRESS_MAP_END
-static INPUT_PORTS_START( ibm5150 )
-INPUT_PORTS_END
-
static DEVICE_INPUT_DEFAULTS_START(cga)
DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20)
DEVICE_INPUT_DEFAULTS_END
-//static DEVICE_INPUT_DEFAULTS_START(ega)
-// DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x00)
-//DEVICE_INPUT_DEFAULTS_END
-
-
static MACHINE_CONFIG_START( ibm5150, ibmpc_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", I8088, XTAL_14_31818MHz/3)
@@ -323,6 +308,7 @@ static MACHINE_CONFIG_START( ibm5150, ibmpc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
@@ -362,6 +348,7 @@ static MACHINE_CONFIG_START( ibm5160, ibmpc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
/* software lists */
MCFG_SOFTWARE_LIST_ADD("pc_disk_list","ibm5150")
@@ -370,7 +357,7 @@ MACHINE_CONFIG_END
ROM_START( ibm5150 )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x10000,"bios", 0)
// ROM_LOAD("600963.u12", 0xc8000, 0x02000, CRC(f3daf85f) SHA1(3bd29538832d3084cbddeec92593988772755283)) /* Tandon/Western Digital Fixed Disk Adapter 600963-001__TYPE_5.U12.2764.bin - Meant for an IBM PC or XT which lacked bios support for HDDs */
/* Xebec 1210 and 1220 Z80-based ST409/ST412 MFM controllers */
@@ -383,27 +370,27 @@ ROM_START( ibm5150 )
ROM_DEFAULT_BIOS( "rev3" )
ROM_SYSTEM_BIOS( 0, "rev3", "IBM PC 5150 1501476 10/27/82" )
- ROMX_LOAD("5000019.u29", 0xf6000, 0x2000, CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9), ROM_BIOS(1)) /* ROM Basic 1.1 F6000-F7FFF; IBM P/N: 5000019, FRU: 6359109 */
- ROMX_LOAD("5000021.u30", 0xf8000, 0x2000, CRC(673a4acc) SHA1(082ae803994048e225150f771794ca305f73d731), ROM_BIOS(1)) /* ROM Basic 1.1 F8000-F9FFF; IBM P/N: 5000021, FRU: 6359111 */
- ROMX_LOAD("5000022.u31", 0xfa000, 0x2000, CRC(aac3fc37) SHA1(c9e0529470edf04da093bb8c8ae2536c688c1a74), ROM_BIOS(1)) /* ROM Basic 1.1 FA000-FBFFF; IBM P/N: 5000022, FRU: 6359112 */
- ROMX_LOAD("5000023.u32", 0xfc000, 0x2000, CRC(3062b3fc) SHA1(5134dd64721cbf093d059ee5d3fd09c7f86604c7), ROM_BIOS(1)) /* ROM Basic 1.1 FC000-FDFFF; IBM P/N: 5000023, FRU: 6359113 */
- ROMX_LOAD("1501476.u33", 0xfe000, 0x2000, CRC(e88792b3) SHA1(40fce6a94dda4328a8b608c7ae2f39d1dc688af4), ROM_BIOS(1))
+ ROMX_LOAD("5000019.u29", 0x6000, 0x2000, CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9), ROM_BIOS(1)) /* ROM Basic 1.1 F6000-F7FFF; IBM P/N: 5000019, FRU: 6359109 */
+ ROMX_LOAD("5000021.u30", 0x8000, 0x2000, CRC(673a4acc) SHA1(082ae803994048e225150f771794ca305f73d731), ROM_BIOS(1)) /* ROM Basic 1.1 F8000-F9FFF; IBM P/N: 5000021, FRU: 6359111 */
+ ROMX_LOAD("5000022.u31", 0xa000, 0x2000, CRC(aac3fc37) SHA1(c9e0529470edf04da093bb8c8ae2536c688c1a74), ROM_BIOS(1)) /* ROM Basic 1.1 FA000-FBFFF; IBM P/N: 5000022, FRU: 6359112 */
+ ROMX_LOAD("5000023.u32", 0xc000, 0x2000, CRC(3062b3fc) SHA1(5134dd64721cbf093d059ee5d3fd09c7f86604c7), ROM_BIOS(1)) /* ROM Basic 1.1 FC000-FDFFF; IBM P/N: 5000023, FRU: 6359113 */
+ ROMX_LOAD("1501476.u33", 0xe000, 0x2000, CRC(e88792b3) SHA1(40fce6a94dda4328a8b608c7ae2f39d1dc688af4), ROM_BIOS(1))
/* IBM PC 5150 (rev 1: 04/24/81) 2-screw case 16-64k MB w/MDA Card, ROM Basic 1.0 */
ROM_SYSTEM_BIOS( 1, "rev1", "IBM PC 5150 5700051 04/24/81" )
- ROMX_LOAD("5700019.u29", 0xf6000, 0x2000, CRC(b59e8f6c) SHA1(7a5db95370194c73b7921f2d69267268c69d2511), ROM_BIOS(2)) /* ROM Basic 1.0 F6000-F7FFF */
- ROMX_LOAD("5700027.u30", 0xf8000, 0x2000, CRC(bfff99b8) SHA1(ca2f126ba69c1613b7b5a4137d8d8cf1db36a8e6), ROM_BIOS(2)) /* ROM Basic 1.0 F8000-F9FFF */
- ROMX_LOAD("5700035.u31", 0xfa000, 0x2000, CRC(9fe4ec11) SHA1(89af8138185938c3da3386f97d3b0549a51de5ef), ROM_BIOS(2)) /* ROM Basic 1.0 FA000-FBFFF */
- ROMX_LOAD("5700043.u32", 0xfc000, 0x2000, CRC(ea2794e6) SHA1(22fe58bc853ffd393d5e2f98defda7456924b04f), ROM_BIOS(2)) /* ROM Basic 1.0 FC000-FDFFF */
- ROMX_LOAD("5700051.u33", 0xfe000, 0x2000, CRC(12d33fb8) SHA1(f046058faa016ad13aed5a082a45b21dea43d346), ROM_BIOS(2))
+ ROMX_LOAD("5700019.u29", 0x6000, 0x2000, CRC(b59e8f6c) SHA1(7a5db95370194c73b7921f2d69267268c69d2511), ROM_BIOS(2)) /* ROM Basic 1.0 F6000-F7FFF */
+ ROMX_LOAD("5700027.u30", 0x8000, 0x2000, CRC(bfff99b8) SHA1(ca2f126ba69c1613b7b5a4137d8d8cf1db36a8e6), ROM_BIOS(2)) /* ROM Basic 1.0 F8000-F9FFF */
+ ROMX_LOAD("5700035.u31", 0xa000, 0x2000, CRC(9fe4ec11) SHA1(89af8138185938c3da3386f97d3b0549a51de5ef), ROM_BIOS(2)) /* ROM Basic 1.0 FA000-FBFFF */
+ ROMX_LOAD("5700043.u32", 0xc000, 0x2000, CRC(ea2794e6) SHA1(22fe58bc853ffd393d5e2f98defda7456924b04f), ROM_BIOS(2)) /* ROM Basic 1.0 FC000-FDFFF */
+ ROMX_LOAD("5700051.u33", 0xe000, 0x2000, CRC(12d33fb8) SHA1(f046058faa016ad13aed5a082a45b21dea43d346), ROM_BIOS(2))
/* IBM PC 5150 (rev 2: 10/19/81) 2-screw case, 16-64k MB w/MDA Card, ROM Basic 1.0 */
ROM_SYSTEM_BIOS( 2, "rev2", "IBM PC 5150 5700671 10/19/81" )
- ROMX_LOAD("5700019.u29", 0xf6000, 0x2000, CRC(b59e8f6c) SHA1(7a5db95370194c73b7921f2d69267268c69d2511), ROM_BIOS(3)) /* ROM Basic 1.0 F6000-F7FFF */
- ROMX_LOAD("5700027.u30", 0xf8000, 0x2000, CRC(bfff99b8) SHA1(ca2f126ba69c1613b7b5a4137d8d8cf1db36a8e6), ROM_BIOS(3)) /* ROM Basic 1.0 F8000-F9FFF */
- ROMX_LOAD("5700035.u31", 0xfa000, 0x2000, CRC(9fe4ec11) SHA1(89af8138185938c3da3386f97d3b0549a51de5ef), ROM_BIOS(3)) /* ROM Basic 1.0 FA000-FBFFF */
- ROMX_LOAD("5700043.u32", 0xfc000, 0x2000, CRC(ea2794e6) SHA1(22fe58bc853ffd393d5e2f98defda7456924b04f), ROM_BIOS(3)) /* ROM Basic 1.0 FC000-FDFFF */
- ROMX_LOAD("5700671.u33", 0xfe000, 0x2000, CRC(b7d4ec46) SHA1(bdb06f846c4768f39eeff7e16b6dbff8cd2117d2), ROM_BIOS(3))
+ ROMX_LOAD("5700019.u29", 0x6000, 0x2000, CRC(b59e8f6c) SHA1(7a5db95370194c73b7921f2d69267268c69d2511), ROM_BIOS(3)) /* ROM Basic 1.0 F6000-F7FFF */
+ ROMX_LOAD("5700027.u30", 0x8000, 0x2000, CRC(bfff99b8) SHA1(ca2f126ba69c1613b7b5a4137d8d8cf1db36a8e6), ROM_BIOS(3)) /* ROM Basic 1.0 F8000-F9FFF */
+ ROMX_LOAD("5700035.u31", 0xa000, 0x2000, CRC(9fe4ec11) SHA1(89af8138185938c3da3386f97d3b0549a51de5ef), ROM_BIOS(3)) /* ROM Basic 1.0 FA000-FBFFF */
+ ROMX_LOAD("5700043.u32", 0xc000, 0x2000, CRC(ea2794e6) SHA1(22fe58bc853ffd393d5e2f98defda7456924b04f), ROM_BIOS(3)) /* ROM Basic 1.0 FC000-FDFFF */
+ ROMX_LOAD("5700671.u33", 0xe000, 0x2000, CRC(b7d4ec46) SHA1(bdb06f846c4768f39eeff7e16b6dbff8cd2117d2), ROM_BIOS(3))
/* Z80 on the Xebec 1210 and 1220 Hard Disk Controllers */
// ROM_REGION(0x10000, "cpu1", 0)
@@ -415,29 +402,29 @@ ROM_START( ibm5150 )
ROM_LOAD("5788005.u33", 0x00000, 0x2000, CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
ROM_END
ROM_START( ibm5155 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("5000027.u19", 0xf0000, 0x8000, CRC(fc982309) SHA1(2aa781a698a21c332398d9bc8503d4f580df0a05))
- ROM_LOAD("1501512.u18", 0xf8000, 0x8000, CRC(79522c3d) SHA1(6bac726d8d033491d52507278aa388ec04cf8b7e))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD("5000027.u19", 0x0000, 0x8000, CRC(fc982309) SHA1(2aa781a698a21c332398d9bc8503d4f580df0a05))
+ ROM_LOAD("1501512.u18", 0x8000, 0x8000, CRC(79522c3d) SHA1(6bac726d8d033491d52507278aa388ec04cf8b7e))
/* IBM 1501981(CGA) and 1501985(MDA) Character rom */
ROM_REGION(0x2000,"gfx1", 0)
ROM_LOAD("5788005.u33", 0x00000, 0x2000, CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
ROM_END
ROM_START( ibm5140 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("7396917.bin", 0xf0000, 0x08000, CRC(95c35652) SHA1(2bdac30715dba114fbe0895b8b4723f8dc26a90d))
- ROM_LOAD("7396918.bin", 0xf8000, 0x08000, CRC(1b4202b0) SHA1(4797ff853ba1675860f293b6368832d05e2f3ea9))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD("7396917.bin", 0x0000, 0x08000, CRC(95c35652) SHA1(2bdac30715dba114fbe0895b8b4723f8dc26a90d))
+ ROM_LOAD("7396918.bin", 0x8000, 0x08000, CRC(1b4202b0) SHA1(4797ff853ba1675860f293b6368832d05e2f3ea9))
/* IBM 1501981(CGA) and 1501985(MDA) Character rom */
ROM_REGION(0x2000,"gfx1", 0)
ROM_LOAD("5788005.u33", 0x00000, 0x2000, CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
ROM_END
#ifdef UNUSED_DEFINITION
ROM_START( ibmpca )
- ROM_REGION(0x100000,"maincpu",0)
- ROM_LOAD("basicc11.f6", 0xf6000, 0x2000, CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9))
- ROM_LOAD("basicc11.f8", 0xf8000, 0x2000, CRC(673a4acc) SHA1(082ae803994048e225150f771794ca305f73d731))
- ROM_LOAD("basicc11.fa", 0xfa000, 0x2000, CRC(aac3fc37) SHA1(c9e0529470edf04da093bb8c8ae2536c688c1a74))
- ROM_LOAD("basicc11.fc", 0xfc000, 0x2000, CRC(3062b3fc) SHA1(5134dd64721cbf093d059ee5d3fd09c7f86604c7))
- ROM_LOAD("pc081682.bin", 0xfe000, 0x2000, CRC(5c3f0256) SHA1(b42c78abd0a9c630a2f972ad2bae46d83c3a2a09))
+ ROM_REGION(0x10000,"bios",0)
+ ROM_LOAD("basicc11.f6", 0x6000, 0x2000, CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9))
+ ROM_LOAD("basicc11.f8", 0x8000, 0x2000, CRC(673a4acc) SHA1(082ae803994048e225150f771794ca305f73d731))
+ ROM_LOAD("basicc11.fa", 0xa000, 0x2000, CRC(aac3fc37) SHA1(c9e0529470edf04da093bb8c8ae2536c688c1a74))
+ ROM_LOAD("basicc11.fc", 0xc000, 0x2000, CRC(3062b3fc) SHA1(5134dd64721cbf093d059ee5d3fd09c7f86604c7))
+ ROM_LOAD("pc081682.bin", 0xe000, 0x2000, CRC(5c3f0256) SHA1(b42c78abd0a9c630a2f972ad2bae46d83c3a2a09))
/* IBM 1501981(CGA) and 1501985(MDA) Character rom */
ROM_REGION(0x2000,"gfx1", 0)
@@ -447,7 +434,7 @@ ROM_END
ROM_START( ibm5160 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
// ROM_LOAD("600963.u12", 0xc8000, 0x02000, CRC(f3daf85f) SHA1(3bd29538832d3084cbddeec92593988772755283)) /* Tandon/Western Digital Fixed Disk Adapter 600963-001__TYPE_5.U12.2764.bin */
/* PC/3270 has a 3270 keyboard controller card, plus a rom on that card to tell the pc how to run it.
@@ -476,20 +463,20 @@ ROM_START( ibm5160 )
ROM_DEFAULT_BIOS( "rev4" )
ROM_SYSTEM_BIOS( 0, "rev1", "IBM XT 5160 08/16/82" ) /* ROM at u18 marked as BAD_DUMP for now, as current dump, while likely correct, was regenerated from a number of smaller dumps, and needs a proper redump. */
- ROMX_LOAD("5000027.u19", 0xf0000, 0x8000, CRC(fc982309) SHA1(2aa781a698a21c332398d9bc8503d4f580df0a05), ROM_BIOS(1) )
- ROMX_LOAD("5000026.u18", 0xf8000, 0x8000, BAD_DUMP CRC(3c9b0ac3) SHA1(271c9f4cef5029a1560075550b67c3395db09fef), ROM_BIOS(1) ) /* This is probably a good dump, and works fine, but as it was manually regenerated based on a partial dump, it needs to be reverified. It's a very rare rom revision and may have only appeared on XT prototypes. */
+ ROMX_LOAD("5000027.u19", 0x0000, 0x8000, CRC(fc982309) SHA1(2aa781a698a21c332398d9bc8503d4f580df0a05), ROM_BIOS(1) )
+ ROMX_LOAD("5000026.u18", 0x8000, 0x8000, BAD_DUMP CRC(3c9b0ac3) SHA1(271c9f4cef5029a1560075550b67c3395db09fef), ROM_BIOS(1) ) /* This is probably a good dump, and works fine, but as it was manually regenerated based on a partial dump, it needs to be reverified. It's a very rare rom revision and may have only appeared on XT prototypes. */
ROM_SYSTEM_BIOS( 1, "rev2", "IBM XT 5160 11/08/82" ) /* Same as PC 5155 BIOS and PC/3270 BIOS */
- ROMX_LOAD("5000027.u19", 0xf0000, 0x8000, CRC(fc982309) SHA1(2aa781a698a21c332398d9bc8503d4f580df0a05), ROM_BIOS(2) ) /* silkscreen "MK37050N-4 // 5000027" - FRU: 6359116 - Contents repeat 4 times; Alt Silkscreen (from yesterpc.com): "(M) // 5000027 // (C) 1983 IBM CORP // X E // 8425B NM"*/
- ROMX_LOAD("1501512.u18", 0xf8000, 0x8000, CRC(79522c3d) SHA1(6bac726d8d033491d52507278aa388ec04cf8b7e), ROM_BIOS(2) ) /* silkscreen "MK38036N-25 // 1501512 // ZA // (C)IBM CORP // 1981,1983 // D MALAYSIA // 8438 AP"*/
+ ROMX_LOAD("5000027.u19", 0x0000, 0x8000, CRC(fc982309) SHA1(2aa781a698a21c332398d9bc8503d4f580df0a05), ROM_BIOS(2) ) /* silkscreen "MK37050N-4 // 5000027" - FRU: 6359116 - Contents repeat 4 times; Alt Silkscreen (from yesterpc.com): "(M) // 5000027 // (C) 1983 IBM CORP // X E // 8425B NM"*/
+ ROMX_LOAD("1501512.u18", 0x8000, 0x8000, CRC(79522c3d) SHA1(6bac726d8d033491d52507278aa388ec04cf8b7e), ROM_BIOS(2) ) /* silkscreen "MK38036N-25 // 1501512 // ZA // (C)IBM CORP // 1981,1983 // D MALAYSIA // 8438 AP"*/
ROM_SYSTEM_BIOS( 2, "rev3", "IBM XT 5160 01/10/86" ) /* Has enhanced keyboard support and a 3.5" drive */
- ROMX_LOAD("62x0854.u19", 0xf0000, 0x8000, CRC(b5fb0e83) SHA1(937b43759ffd472da4fb0fe775b3842f5fb4c3b3), ROM_BIOS(3) )
- ROMX_LOAD("62x0851.u18", 0xf8000, 0x8000, CRC(1054f7bd) SHA1(e7d0155813e4c650085144327581f05486ed1484), ROM_BIOS(3) )
+ ROMX_LOAD("62x0854.u19", 0x0000, 0x8000, CRC(b5fb0e83) SHA1(937b43759ffd472da4fb0fe775b3842f5fb4c3b3), ROM_BIOS(3) )
+ ROMX_LOAD("62x0851.u18", 0x8000, 0x8000, CRC(1054f7bd) SHA1(e7d0155813e4c650085144327581f05486ed1484), ROM_BIOS(3) )
ROM_SYSTEM_BIOS( 3, "rev4", "IBM XT 5160 05/09/86" ) /* Minor bugfixes to keyboard code, supposedly */
- ROMX_LOAD("68x4370.u19", 0xf0000, 0x8000, CRC(758ff036) SHA1(045e27a70407d89b7956ecae4d275bd2f6b0f8e2), ROM_BIOS(4))
- ROMX_LOAD("62x0890.u18", 0xf8000, 0x8000, CRC(4f417635) SHA1(daa61762d3afdd7262e34edf1a3d2df9a05bcebb), ROM_BIOS(4))
+ ROMX_LOAD("68x4370.u19", 0x0000, 0x8000, CRC(758ff036) SHA1(045e27a70407d89b7956ecae4d275bd2f6b0f8e2), ROM_BIOS(4))
+ ROMX_LOAD("62x0890.u18", 0x8000, 0x8000, CRC(4f417635) SHA1(daa61762d3afdd7262e34edf1a3d2df9a05bcebb), ROM_BIOS(4))
// ROM_SYSTEM_BIOS( 4, "xtdiag", "IBM XT 5160 w/Supersoft Diagnostics" ) /* ROMs marked as BAD_DUMP for now. We expect the data to be in a different ROM chip layout */
// ROMX_LOAD("basicc11.f6", 0xf6000, 0x2000, BAD_DUMP CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9), ROM_BIOS(5) )
@@ -570,9 +557,7 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1981, ibm5150, 0, 0, ibm5150, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5150" , 0)
-COMP( 1982, ibm5155, ibm5150, 0, ibm5150, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5155" , 0)
-COMP( 1985, ibm5140, ibm5150, 0, ibm5140, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5140 Convertible" , MACHINE_NOT_WORKING)
-
-// xt class (pc but 8086)
-COMP( 1982, ibm5160, ibm5150, 0, ibm5160, ibm5150, driver_device, 0, "International Business Machines", "IBM XT 5160" , 0)
+COMP( 1981, ibm5150, 0, 0, ibm5150, 0, driver_device, 0, "International Business Machines", "IBM PC 5150" , 0)
+COMP( 1982, ibm5155, ibm5150, 0, ibm5150, 0, driver_device, 0, "International Business Machines", "IBM PC 5155" , 0)
+COMP( 1985, ibm5140, ibm5150, 0, ibm5140, 0, driver_device, 0, "International Business Machines", "IBM PC 5140 Convertible" , MACHINE_NOT_WORKING)
+COMP( 1982, ibm5160, ibm5150, 0, ibm5160, 0, driver_device, 0, "International Business Machines", "IBM XT 5160" , 0)
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index f67bc071494..c06ead888be 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -118,7 +118,7 @@ DRIVER_INIT_MEMBER(pcjr_state, pcjr)
m_pc_int_delay_timer = timer_alloc(TIMER_IRQ_DELAY);
m_pcjr_watchdog = timer_alloc(TIMER_WATCHDOG);
m_keyb_signal_timer = timer_alloc(TIMER_KB_SIGNAL);
- membank( "bank10" )->set_base( m_ram->pointer() );
+ m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - 1, m_ram->pointer());
}
void pcjr_state::machine_reset()
@@ -533,20 +533,16 @@ GFXDECODE_END
static ADDRESS_MAP_START(ibmpcjr_map, AS_PROGRAM, 8, pcjr_state)
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xaffff) AM_RAM
- AM_RANGE(0xb0000, 0xb7fff) AM_NOP
- AM_RANGE(0xb8000, 0xbffff) AM_RAMBANK("bank14")
- AM_RANGE(0xc0000, 0xc7fff) AM_NOP
- AM_RANGE(0xc8000, 0xc9fff) AM_ROM
- AM_RANGE(0xca000, 0xcffff) AM_NOP
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8)
AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot2", generic_slot_device, read_rom)
AM_RANGE(0xe0000, 0xeffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(ibmpcjr_io, AS_IO, 8, pcjr_state)
+ ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
@@ -561,11 +557,16 @@ static ADDRESS_MAP_START(ibmpcjr_io, AS_IO, 8, pcjr_state)
ADDRESS_MAP_END
static ADDRESS_MAP_START(ibmpcjx_map, AS_PROGRAM, 8, pcjr_state )
+ ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x80000, 0xb7fff) AM_ROM AM_REGION("kanji",0)
- AM_IMPORT_FROM( ibmpcjr_map )
+ AM_RANGE(0x80000, 0x9ffff) AM_RAM AM_SHARE("vram") // TODO: remove this part of vram hack
+ AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8)
+ AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom)
+ AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(ibmpcjx_io, AS_IO, 8, pcjr_state)
+ ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x01ff, 0x01ff) AM_READWRITE(pcjx_port_1ff_r, pcjx_port_1ff_w)
AM_IMPORT_FROM( ibmpcjr_io )
ADDRESS_MAP_END
@@ -650,6 +651,7 @@ static MACHINE_CONFIG_START( ibmpcjr, pcjr_state)
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("128K, 256K, 512K")
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list","ibmpcjr_cart")
@@ -673,26 +675,30 @@ static MACHINE_CONFIG_DERIVED( ibmpcjx, ibmpcjr )
MCFG_SLOT_FIXED(true)
MCFG_GFXDECODE_MODIFY("gfxdecode", ibmpcjx)
-MACHINE_CONFIG_END
+ /* internal ram */
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("512K")
+ MCFG_RAM_EXTRA_OPTIONS("") // only boots with 512k currently
+ MACHINE_CONFIG_END
ROM_START( ibmpcjr )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("bios.rom", 0xf0000, 0x10000,CRC(31e3a7aa) SHA1(1f5f7013f18c08ff50d7942e76c4fbd782412414))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD("bios.rom", 0x0000, 0x10000,CRC(31e3a7aa) SHA1(1f5f7013f18c08ff50d7942e76c4fbd782412414))
ROM_REGION(0x08100,"gfx1", 0)
ROM_LOAD("cga.chr", 0x00000, 0x01000, CRC(42009069) SHA1(ed08559ce2d7f97f68b9f540bddad5b6295294dd)) // from an unknown clone cga card
ROM_END
ROM_START( ibmpcjx )
- ROM_REGION(0x100000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x20000,"bios", ROMREGION_ERASEFF)
ROM_DEFAULT_BIOS("unk")
ROM_SYSTEM_BIOS( 0, "5601jda", "5601jda" )
- ROMX_LOAD("5601jda.bin", 0xf0000, 0x10000, CRC(b1e12366) SHA1(751feb16b985aa4f1ec1437493ff77e2ebd5e6a6), ROM_BIOS(1))
- ROMX_LOAD("basicjx.rom", 0xe8000, 0x08000, NO_DUMP, ROM_BIOS(1)) // boot fails due of this.
+ ROMX_LOAD("5601jda.bin", 0x10000, 0x10000, CRC(b1e12366) SHA1(751feb16b985aa4f1ec1437493ff77e2ebd5e6a6), ROM_BIOS(1))
+ ROMX_LOAD("basicjx.rom", 0x08000, 0x08000, NO_DUMP, ROM_BIOS(1)) // boot fails due of this.
ROM_SYSTEM_BIOS( 1, "unk", "unk" )
- ROMX_LOAD("ipljx.rom", 0xe0000, 0x20000, CRC(36a7b2de) SHA1(777db50c617725e149bca9b18cf51ce78f6dc548), ROM_BIOS(2))
+ ROMX_LOAD("ipljx.rom", 0x00000, 0x20000, CRC(36a7b2de) SHA1(777db50c617725e149bca9b18cf51ce78f6dc548), ROM_BIOS(2))
ROM_REGION(0x08100,"gfx1", 0) //TODO: needs a different charset
ROM_LOAD("cga.chr", 0x00000, 0x01000, BAD_DUMP CRC(42009069) SHA1(ed08559ce2d7f97f68b9f540bddad5b6295294dd)) // from an unknown clone cga card
diff --git a/src/mame/drivers/iskr103x.cpp b/src/mame/drivers/iskr103x.cpp
index 945415f676b..84273344fb5 100644
--- a/src/mame/drivers/iskr103x.cpp
+++ b/src/mame/drivers/iskr103x.cpp
@@ -41,28 +41,19 @@ public:
static ADDRESS_MAP_START( iskr1031_map, AS_PROGRAM, 16, iskr103x_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x7ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(iskr1031_io, AS_IO, 16, iskr103x_state)
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
ADDRESS_MAP_END
-static INPUT_PORTS_START( iskr1030m )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( iskr1031 )
-INPUT_PORTS_END
-
static DEVICE_INPUT_DEFAULTS_START(iskr1030m)
- DEVICE_INPUT_DEFAULTS("DSW0", 0x31, 0x21)
+ DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x20)
+ DEVICE_INPUT_DEFAULTS("DSW0", 0x01, 0x01)
DEVICE_INPUT_DEFAULTS_END
static DEVICE_INPUT_DEFAULTS_START(iskr1031)
@@ -92,48 +83,30 @@ static MACHINE_CONFIG_START( iskr1030m, iskr103x_state )
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( iskr1031, iskr103x_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", I8086, 4772720)
- MCFG_CPU_PROGRAM_MAP(iskr1031_map)
- MCFG_CPU_IO_MAP(iskr1031_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
-
- MCFG_IBM5160_MOTHERBOARD_ADD("mb","maincpu")
+static MACHINE_CONFIG_DERIVED( iskr1031, iskr1030m )
+ MCFG_DEVICE_MODIFY("mb")
MCFG_DEVICE_INPUT_DEFAULTS(iskr1031)
-
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa1", iskr103x_isa8_cards, "cga_iskr1031", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa2", iskr103x_isa8_cards, "fdc_xt", false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa3", iskr103x_isa8_cards, nullptr, false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", iskr103x_isa8_cards, nullptr, false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa5", iskr103x_isa8_cards, nullptr, false)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa6", iskr103x_isa8_cards, nullptr, false)
-
-// MCFG_SOFTWARE_LIST_ADD("flop_list", "iskr1031")
-
- MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_EC_1841)
-// MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_ISKR_1030)
-
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_DEVICE_MODIFY("isa1")
+ MCFG_DEVICE_SLOT_INTERFACE(iskr103x_isa8_cards, "cga_iskr1031", false)
MACHINE_CONFIG_END
ROM_START( iskr1030m )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROMX_LOAD( "iskra-1030m_0.rom", 0xfc000, 0x2000, CRC(0d698e19) SHA1(2fe117c9f4f8c4b59085d5a41f919d743c425fdd), ROM_SKIP(1))
- ROMX_LOAD( "iskra-1030m_1.rom", 0xfc001, 0x2000, CRC(fe808337) SHA1(b0b7ebe14324ada8aa9a6926a82b18e80f78a257), ROM_SKIP(1))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROMX_LOAD( "iskra-1030m_0.rom", 0xc000, 0x2000, CRC(0d698e19) SHA1(2fe117c9f4f8c4b59085d5a41f919d743c425fdd), ROM_SKIP(1))
+ ROMX_LOAD( "iskra-1030m_1.rom", 0xc001, 0x2000, CRC(fe808337) SHA1(b0b7ebe14324ada8aa9a6926a82b18e80f78a257), ROM_SKIP(1))
ROM_END
ROM_START( iskr1031 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_SYSTEM_BIOS(0, "v1", "v1")
- ROMX_LOAD( "150-02.bin", 0xfc000, 0x2000, CRC(e33fb974) SHA1(f5f3ece67c025c0033716ff516e1a34fbeb32749), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "150-03.bin", 0xfc001, 0x2000, CRC(8c482258) SHA1(90ef48955e0df556dc06a000a797ef42ccf430c5), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "150-02.bin", 0xc000, 0x2000, CRC(e33fb974) SHA1(f5f3ece67c025c0033716ff516e1a34fbeb32749), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "150-03.bin", 0xc001, 0x2000, CRC(8c482258) SHA1(90ef48955e0df556dc06a000a797ef42ccf430c5), ROM_SKIP(1) | ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v2", "v2")
- ROMX_LOAD( "150-06.bin", 0xfc000, 0x2000, CRC(1adbf969) SHA1(08c0a0fc50a75e6207b1987bae389cca60893eac), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "150-07.bin", 0xfc001, 0x2000, CRC(0dc4b65a) SHA1(c96f066251a7343eac8113ea9dcb2cb12d0334d5), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "150-06.bin", 0xc000, 0x2000, CRC(1adbf969) SHA1(08c0a0fc50a75e6207b1987bae389cca60893eac), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "150-07.bin", 0xc001, 0x2000, CRC(0dc4b65a) SHA1(c96f066251a7343eac8113ea9dcb2cb12d0334d5), ROM_SKIP(1) | ROM_BIOS(2))
ROM_END
/***************************************************************************
@@ -143,5 +116,5 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP ( 1989, iskr1030m, ibm5150, 0, iskr1030m, iskr1030m, driver_device, 0, "Schetmash", "Iskra 1030M", MACHINE_NOT_WORKING)
-COMP ( 1989, iskr1031, ibm5150, 0, iskr1031, iskr1031, driver_device, 0, "<unknown>", "Iskra 1031", 0)
+COMP ( 1989, iskr1030m, ibm5150, 0, iskr1030m, 0, driver_device, 0, "Schetmash", "Iskra 1030M", MACHINE_NOT_WORKING)
+COMP ( 1989, iskr1031, ibm5150, 0, iskr1031, 0, driver_device, 0, "<unknown>", "Iskra 1031", 0)
diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp
index a055e1df881..7e34eeaa16b 100644
--- a/src/mame/drivers/m24.cpp
+++ b/src/mame/drivers/m24.cpp
@@ -4,8 +4,6 @@
#include "cpu/i86/i86.h"
#include "cpu/tms7000/tms7000.h"
-#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
#include "machine/m24_kbd.h"
#include "machine/m24_z8000.h"
#include "machine/mm58274c.h"
@@ -165,9 +163,7 @@ WRITE_LINE_MEMBER(m24_state::halt_i86_w)
static ADDRESS_MAP_START( m24_map, AS_PROGRAM, 16, m24_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xeffff) AM_NOP
- AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("maincpu", 0)
+ AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(m24_io, AS_IO, 16, m24_state )
@@ -175,6 +171,7 @@ static ADDRESS_MAP_START(m24_io, AS_IO, 16, m24_state )
AM_RANGE(0x0060, 0x0065) AM_READWRITE8(keyboard_r, keyboard_w, 0xffff)
AM_RANGE(0x0066, 0x0067) AM_READ_PORT("DSW0")
AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("mm58174an", mm58274c_device, read, write, 0xffff)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", pc_noppi_mb_device, map, 0xffff)
AM_RANGE(0x80c0, 0x80c1) AM_DEVREADWRITE8("z8000_apb", m24_z8000_device, handshake_r, handshake_w, 0xff00)
ADDRESS_MAP_END
@@ -267,6 +264,7 @@ static MACHINE_CONFIG_START( olivetti, m24_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MCFG_CPU_ADD("kbc", TMS7000, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(kbc_map)
@@ -291,7 +289,7 @@ static MACHINE_CONFIG_START( olivetti, m24_state )
MACHINE_CONFIG_END
ROM_START( m24 )
- ROM_REGION16_LE(0x8000,"maincpu", 0)
+ ROM_REGION16_LE(0x8000,"bios", 0)
ROMX_LOAD("olivetti_m24_version_1.43_high.bin",0x4001, 0x2000, CRC(04e697ba) SHA1(1066dcc849e6289b5ac6372c84a590e456d497a6), ROM_SKIP(1))
ROMX_LOAD("olivetti_m24_version_1.43_low.bin", 0x4000, 0x2000, CRC(ff7e0f10) SHA1(13423011a9bae3f3193e8c199f98a496cab48c0f), ROM_SKIP(1))
@@ -300,7 +298,7 @@ ROM_START( m24 )
ROM_END
ROM_START( m240 )
- ROM_REGION16_LE(0x8000,"maincpu", 0)
+ ROM_REGION16_LE(0x8000,"bios", 0)
ROMX_LOAD("olivetti_m240_pch5_2.04_high.bin", 0x0001, 0x4000, CRC(ceb97b59) SHA1(84fabbeab355e0a4c9445910f2b7d1ec98886642), ROM_SKIP(1))
ROMX_LOAD("olivetti_m240_pch6_2.04_low.bin", 0x0000, 0x4000, CRC(c463aa94) SHA1(a30c763c1ace9f3ff79e7136b252d624108a50ae), ROM_SKIP(1))
diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp
index ade7c5accfc..9e014ebcf04 100644
--- a/src/mame/drivers/mc1502.cpp
+++ b/src/mame/drivers/mc1502.cpp
@@ -182,7 +182,6 @@ DRIVER_INIT_MEMBER( mc1502_state, mc1502 )
DBG_LOG(0,"init",("driver_init()\n"));
- program.unmap_readwrite(0, 0x7ffff);
program.install_readwrite_bank(0, m_ram->size()-1, "bank10");
membank( "bank10" )->set_base( m_ram->pointer() );
}
@@ -220,16 +219,7 @@ MACHINE_RESET_MEMBER( mc1502_state, mc1502 )
static ADDRESS_MAP_START( mc1502_map, AS_PROGRAM, 8, mc1502_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x97fff) AM_RAM /* 96K on mainboard + 512K on extension card */
- AM_RANGE(0xc0000, 0xfbfff) AM_NOP
- AM_RANGE(0xfc000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( pk88_map, AS_PROGRAM, 8, mc1502_state )
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x1ffff) AM_RAMBANK("bank10") /* 96K on mainboard */
- AM_RANGE(0xf0000, 0xf7fff) AM_ROM /* BASIC */
- AM_RANGE(0xfc000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(mc1502_io, AS_IO, 8, mc1502_state )
@@ -328,11 +318,6 @@ static MACHINE_CONFIG_START( mc1502, mc1502_state )
MCFG_RAM_EXTRA_OPTIONS("96K")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( pk88, mc1502 )
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_PROGRAM_MAP(pk88_map)
-MACHINE_CONFIG_END
-
/*
Apparently there was a hardware revision with built-in floppy
@@ -344,42 +329,42 @@ MACHINE_CONFIG_END
QWERTY).
*/
ROM_START( mc1502 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_DEFAULT_BIOS("v52")
ROM_SYSTEM_BIOS(0, "v50", "v5.0 10/05/89")
- ROMX_LOAD( "monitor_5_0.rom", 0xfc000, 0x4000, CRC(9e97c6a0) SHA1(16a304e8de69ec4d8b92acda6bf28454c361a24f),ROM_BIOS(1))
+ ROMX_LOAD( "monitor_5_0.rom", 0xc000, 0x4000, CRC(9e97c6a0) SHA1(16a304e8de69ec4d8b92acda6bf28454c361a24f),ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v52", "v5.2 22/03/91")
- ROMX_LOAD( "monitor_5_2.rom", 0xfc000, 0x4000, CRC(0e65491e) SHA1(8a4d556473b5e0e59b05fab77c79c29f4d562412),ROM_BIOS(2))
+ ROMX_LOAD( "monitor_5_2.rom", 0xc000, 0x4000, CRC(0e65491e) SHA1(8a4d556473b5e0e59b05fab77c79c29f4d562412),ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v521", "v5.21 12/10/92")
- ROMX_LOAD( "monitor_5_21.rom", 0xfc000, 0x4000, CRC(28c8f653) SHA1(04b0b09e0b86d9648a83352cc1590eb8963833e0),ROM_BIOS(3))
+ ROMX_LOAD( "monitor_5_21.rom", 0xc000, 0x4000, CRC(28c8f653) SHA1(04b0b09e0b86d9648a83352cc1590eb8963833e0),ROM_BIOS(3))
ROM_SYSTEM_BIOS(3, "v531", "v5.31 12/10/92")
- ROMX_LOAD( "monitor_5_31.rom", 0xfc000, 0x4000, CRC(a48295d5) SHA1(6f38977c22f9cc6c2bc6f6e53edc4048ca6b6721),ROM_BIOS(4))
+ ROMX_LOAD( "monitor_5_31.rom", 0xc000, 0x4000, CRC(a48295d5) SHA1(6f38977c22f9cc6c2bc6f6e53edc4048ca6b6721),ROM_BIOS(4))
ROM_SYSTEM_BIOS(4, "v533", "v5.33 01/08/93")
- ROMX_LOAD( "0_(cbc0).bin", 0xfc000, 0x2000, CRC(9a55bc4f) SHA1(81da44eec2e52cf04b1fc7053502270f51270590),ROM_BIOS(5))
- ROMX_LOAD( "1_(dfe2).bin", 0xfe000, 0x2000, CRC(8dec077a) SHA1(d6f6d7cc2183abc77fbd9cd59132de5766f7c458),ROM_BIOS(5))
+ ROMX_LOAD( "0_(cbc0).bin", 0xc000, 0x2000, CRC(9a55bc4f) SHA1(81da44eec2e52cf04b1fc7053502270f51270590),ROM_BIOS(5))
+ ROMX_LOAD( "1_(dfe2).bin", 0xe000, 0x2000, CRC(8dec077a) SHA1(d6f6d7cc2183abc77fbd9cd59132de5766f7c458),ROM_BIOS(5))
// 5.21 + 3rd party HDC support. fails checksum test so marked BAD_DUMP.
ROM_SYSTEM_BIOS(5, "v521h", "v5.21h 22/09/93")
- ROMX_LOAD( "mshbios0.pgm", 0xfc000, 0x2000, BAD_DUMP CRC(be447261) SHA1(b93c597c17dfa4b678f72c20a3f7119b73e6ba1c),ROM_BIOS(6))
- ROMX_LOAD( "mshbios1.pgm", 0xfe000, 0x2000, BAD_DUMP CRC(89e2eaf2) SHA1(37d6b225b5e35574fdac81219589407d925225be),ROM_BIOS(6))
+ ROMX_LOAD( "mshbios0.pgm", 0xc000, 0x2000, BAD_DUMP CRC(be447261) SHA1(b93c597c17dfa4b678f72c20a3f7119b73e6ba1c),ROM_BIOS(6))
+ ROMX_LOAD( "mshbios1.pgm", 0xe000, 0x2000, BAD_DUMP CRC(89e2eaf2) SHA1(37d6b225b5e35574fdac81219589407d925225be),ROM_BIOS(6))
// 5.3
ROM_SYSTEM_BIOS(6, "v53", "v5.3 10/11/91")
- ROMX_LOAD( "1502~3b0.pgm", 0xfc000, 0x2000, CRC(dc148763) SHA1(7a5e66438007b2de328ac680614f9c4ff60f6a75),ROM_BIOS(7))
- ROMX_LOAD( "1502~3b1.pgm", 0xfe000, 0x2000, CRC(17fc2af2) SHA1(a060d7b7302dfa639025f025106b50412cf26953),ROM_BIOS(7))
+ ROMX_LOAD( "1502~3b0.pgm", 0xc000, 0x2000, CRC(dc148763) SHA1(7a5e66438007b2de328ac680614f9c4ff60f6a75),ROM_BIOS(7))
+ ROMX_LOAD( "1502~3b1.pgm", 0xe000, 0x2000, CRC(17fc2af2) SHA1(a060d7b7302dfa639025f025106b50412cf26953),ROM_BIOS(7))
// 5.1 -- JCUKEN keyboard
ROM_SYSTEM_BIOS(7, "v51", "v5.1 10/12/90")
- ROMX_LOAD( "ms1502b0.pgm", 0xfc000, 0x2000, CRC(92fcc29a) SHA1(930a4cffcd6ec6110dd9a18bd389b78f0ccb110a),ROM_BIOS(8))
- ROMX_LOAD( "ms1502b1.pgm", 0xfe000, 0x2000, CRC(fe355a58) SHA1(b4ef7775045c6f2095e2b487fe19824986a4892c),ROM_BIOS(8))
+ ROMX_LOAD( "ms1502b0.pgm", 0xc000, 0x2000, CRC(92fcc29a) SHA1(930a4cffcd6ec6110dd9a18bd389b78f0ccb110a),ROM_BIOS(8))
+ ROMX_LOAD( "ms1502b1.pgm", 0xe000, 0x2000, CRC(fe355a58) SHA1(b4ef7775045c6f2095e2b487fe19824986a4892c),ROM_BIOS(8))
// 5.31
ROM_SYSTEM_BIOS(8, "v531_92", "v5.31 12/10/92")
- ROMX_LOAD( "ms531b0.pgm", 0xfc000, 0x2000, CRC(d97157d1) SHA1(cb1a1e0e2d9a0fcc78f9b09bfb4814d408ee4fae),ROM_BIOS(9))
- ROMX_LOAD( "ms531b1.pgm", 0xfe000, 0x2000, CRC(b1368e1a) SHA1(286496d25dc0ac2d8fe1802caffc6c37b236d105),ROM_BIOS(9))
+ ROMX_LOAD( "ms531b0.pgm", 0xc000, 0x2000, CRC(d97157d1) SHA1(cb1a1e0e2d9a0fcc78f9b09bfb4814d408ee4fae),ROM_BIOS(9))
+ ROMX_LOAD( "ms531b1.pgm", 0xe000, 0x2000, CRC(b1368e1a) SHA1(286496d25dc0ac2d8fe1802caffc6c37b236d105),ROM_BIOS(9))
// 5.2
ROM_SYSTEM_BIOS(9, "v52_91", "v5.2 10/11/91")
- ROMX_LOAD( "msv5~2b0.pgm", 0xfc000, 0x2000, CRC(f7f370e9) SHA1(e069a35005581a02856853b57dd511ab8e10054b),ROM_BIOS(10))
- ROMX_LOAD( "msv5~2b1.pgm", 0xfe000, 0x2000, CRC(d50e1c43) SHA1(22724dec0052ee9e52f44f5914f2f5f3fae14612),ROM_BIOS(10))
+ ROMX_LOAD( "msv5~2b0.pgm", 0xc000, 0x2000, CRC(f7f370e9) SHA1(e069a35005581a02856853b57dd511ab8e10054b),ROM_BIOS(10))
+ ROMX_LOAD( "msv5~2b1.pgm", 0xe000, 0x2000, CRC(d50e1c43) SHA1(22724dec0052ee9e52f44f5914f2f5f3fae14612),ROM_BIOS(10))
ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
ROM_LOAD( "symgen.rom", 0x0000, 0x2000, CRC(b2747a52) SHA1(6766d275467672436e91ac2997ac6b77700eba1e))
@@ -390,14 +375,14 @@ ROM_END
different video subsystem (not emulated).
*/
ROM_START( pk88 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
-
- ROM_LOAD( "b0.064", 0xf0000, 0x2000, CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9))
- ROM_LOAD( "b1.064", 0xf2000, 0x2000, CRC(673a4acc) SHA1(082ae803994048e225150f771794ca305f73d731))
- ROM_LOAD( "b2.064", 0xf4000, 0x2000, CRC(1ee66152) SHA1(7ed8c4c6c582487e802beabeca5b86702e5083e8))
- ROM_LOAD( "b3.064", 0xf6000, 0x2000, CRC(3062b3fc) SHA1(5134dd64721cbf093d059ee5d3fd09c7f86604c7))
- ROM_LOAD( "pk88-0.064", 0xfc000, 0x2000, CRC(1e4666cf) SHA1(6364c5241f2792909ff318194161eb2c29737546))
- ROM_LOAD( "pk88-1.064", 0xfe000, 0x2000, CRC(6fa7e7ef) SHA1(d68bc273baa46ba733ac6ad4df7569dd70cf60dd))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+
+ ROM_LOAD( "b0.064", 0x0000, 0x2000, CRC(80d3cf5d) SHA1(64769b7a8b60ffeefa04e4afbec778069a2840c9))
+ ROM_LOAD( "b1.064", 0x2000, 0x2000, CRC(673a4acc) SHA1(082ae803994048e225150f771794ca305f73d731))
+ ROM_LOAD( "b2.064", 0x4000, 0x2000, CRC(1ee66152) SHA1(7ed8c4c6c582487e802beabeca5b86702e5083e8))
+ ROM_LOAD( "b3.064", 0x6000, 0x2000, CRC(3062b3fc) SHA1(5134dd64721cbf093d059ee5d3fd09c7f86604c7))
+ ROM_LOAD( "pk88-0.064", 0xc000, 0x2000, CRC(1e4666cf) SHA1(6364c5241f2792909ff318194161eb2c29737546))
+ ROM_LOAD( "pk88-1.064", 0xe000, 0x2000, CRC(6fa7e7ef) SHA1(d68bc273baa46ba733ac6ad4df7569dd70cf60dd))
ROM_END
/***************************************************************************
@@ -408,4 +393,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
COMP ( 1989, mc1502, ibm5150, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika MC-1502", 0)
-COMP ( 1988, pk88, ibm5150, 0, pk88, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika PK-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP ( 1988, pk88, ibm5150, 0, mc1502, mc1502, mc1502_state, mc1502, "NPO Microprocessor", "Elektronika PK-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp
index 7fd3f9128bd..ff8ce2072e8 100644
--- a/src/mame/drivers/notetaker.cpp
+++ b/src/mame/drivers/notetaker.cpp
@@ -136,7 +136,7 @@ WRITE16_MEMBER(notetaker_state::IPConReg_w)
//m_ProcLock = (data&0x40)?1:0; // bus lock for this processor (hold other processor in wait state)
//m_CharCtr = (data&0x20)?1:0; // battery charge control
m_DisableROM = (data&0x10)?1:0; // disable rom at 0000-0fff
- //m_CorrOn = (data&0x08)?1:0; // corron (?) also LedInd5
+ //m_CorrOn = (data&0x08)?1:0; // CorrectionOn (ECC correction enabled); also LedInd5
//m_LedInd6 = (data&0x04)?1:0;
//m_LedInd7 = (data&0x02)?1:0;
//m_LedInd8 = (data&0x01)?1:0;
@@ -250,7 +250,9 @@ READ16_MEMBER(notetaker_state::iocpu_r)
}
else
{
- ram += (offset);
+ // are we in the FFFE8-FFFEF area where the parity/int/reset/etc stuff lives?
+ if (offset >= 0x7fff4) { logerror("attempt to read processor control regs at %d\n", offset<<1); return 0xFFFF; }
+ ram += offset;
return *ram;
}
}
@@ -260,9 +262,11 @@ WRITE16_MEMBER(notetaker_state::iocpu_w)
UINT16 *ram = (UINT16 *)(memregion("mainram")->base());
if ( (m_BootSeqDone == 0) || ((m_DisableROM == 0) && ((offset&0x7F800) == 0)) )
{
- logerror("attempt to write %04X to ROM-mapped area at %06X ignored\n", data, offset);
+ logerror("attempt to write %04X to ROM-mapped area at %06X ignored\n", data, offset<<1);
return;
}
+ // are we in the FFFE8-FFFEF area where the parity/int/reset/etc stuff lives?
+ if (offset >= 0x7fff4) { logerror("attempt to write processor control regs at %d with %02X ignored\n", offset<<1, data); }
ram += offset;
*ram = data;
}
@@ -277,21 +281,40 @@ mode 1: (during most of boot)
0 0 0 0 0 0 1 * * * * * * * * * * * * * 1 0 RW RAM
<anything not all zeroes>x x x x x x x x x x x x x x 1 0 . Open Bus
mode 2: (during load of the emulatorcpu's firmware to the first 4k of shared ram which is on the emulatorcpu board)
-0 0 0 0 0 0 * * * * * * * * * * * * * * 1 1 RW RAM
+0 0 * * * * * * * * * * * * * * * * * * 1 1 RW RAM
<anything not all zeroes>x x x x x x x x x x x x x x 1 1 . Open Bus
+ EXCEPT for the following, decoded by the memory address logic board:
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 x 1 x . Open Bus
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 x 1 x W FFFEA (Multiprocessor Control (reset/int/boot for each proc; data bits 3,2,1,0 = 0010 means IP, bits 3210 = 0111 means EP; all others ignored.))
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 x 1 x R FFFEC (Syndrome bits (gnd bit 15, parity bit 14, exp (ECC) bits 13-8, bits 7-0 are 'other' (?maybe highest address bits?)
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 x 1 x R FFFEE (Parity Error Address: row bits 15-8, column bits 7-0; reading this acknowledges a parity interrupt)
More or less:
BootSeqDone is 0, DisableROM is ignored, mem map is 0x00000-0xfffff reading is the 0x1000-long ROM, repeated every 0x1000 bytes. writing goes nowhere.
BootSeqDone is 1, DisableROM is 0, mem map is 0x00000-0x00fff reading is the 0x1000-long ROM, remainder of memory map goes to RAM or open bus. writing the ROM area goes nowhere, writing RAM goes to RAM.
BootSeqDone is 1, DisableROM is 1, mem map is entirely RAM or open bus for both reading and writing.
+
+
+Emulator cpu mem map:
+a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0 4KPage0'
+x x 0 0 0 0 0 0 * * * * * * * * * * * * 0 RW Local (fast) RAM
+x x 0 0 0 0 0 0 * * * * * * * * * * * * 1 RW System/Shared RAM
+x x * * * * * * * * * * * * * * * * * * x RW System/Shared RAM
+ EXCEPT for the following, decoded by the EP board and superseding above:
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 x x x x x x RW FFFC0-FFFDF (trigger ILLINST interrupt on EP, data ignored?)
+ And the following, decoded by the memory address logic board:
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 x x . Open Bus
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 x x W FFFEA (Multiprocessor Control (reset/int/boot for each proc; data bits 3,2,1,0 = 0010 means IP, bits 3210 = 0111 means EP; all others ignored.))
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 x x R FFFEC (Syndrome bits (gnd bit 15, parity bit 14, exp bits 13-8, bits 7-0 are 'other', maybe highest address bits)
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 x x R FFFEE (Parity Error Address: row bits 15-8, column bits 7-0; reading this acknowledges a parity interrupt)
*/
+
static ADDRESS_MAP_START(notetaker_iocpu_mem, AS_PROGRAM, 16, notetaker_state)
/*
- AM_RANGE(0x00000, 0x00fff) AM_ROM AM_REGION("iocpu", 0xFF000) // rom is here if either BootSeqDone OR DisableROM are zero. the 1.5 source code implies writes here are ignored
- AM_RANGE(0x01000, 0x01fff) AM_RAM // 4k of ram, local to the io processor
- AM_RANGE(0x02000, 0x3ffff) AM_RAM AM_BASE("mainram") // 256k of ram (less 8k), shared between both processors
+ AM_RANGE(0x00000, 0x00fff) AM_ROM AM_REGION("iocpu", 0xFF000) // rom is here if either BootSeqDone OR DisableROM are zero. the 1.5 source code and the schematics implies writes here are ignored while rom is enabled; if disablerom is 1 this goes to mainram
+ AM_RANGE(0x01000, 0x3ffff) AM_RAM AM_BASE("mainram") // 256k of ram (less 4k), shared between both processors. rom goes here if bootseqdone is 0
// note 4000-8fff? is the framebuffer for the screen?
- AM_RANGE(0xff000, 0xfffff) AM_ROM // rom is only banked in here if bootseqdone is 0, so the reset vector is in the proper place
+ AM_RANGE(0xff000, 0xfffff) AM_ROM // rom is only banked in here if bootseqdone is 0, so the reset vector is in the proper place. otherwise the memory control regs live at fffe8-fffef
*/
AM_RANGE(0x00000, 0xfffff) AM_READWRITE(iocpu_r, iocpu_w) // bypass MAME's memory map system as we need finer grained control
ADDRESS_MAP_END
@@ -398,6 +421,15 @@ read from 0x0002 (byte wide) (check interrupts) <looking for vblank int or odd/e
read from 0x44 (byte wide) in a loop forever (read keyboard fifo status)
*/
+/* Emulator CPU */
+/*
+static ADDRESS_MAP_START(notetaker_emulatorcpu_mem, AS_PROGRAM, 16, notetaker_state)
+ AM_RANGE(0x00000, 0x00fff) AM_RAM // actually a banked block of ram
+ AM_RANGE(0x01000, 0x3ffff) AM_MIRROR(0xC0000) AM_RAM AM_BASE("mainram") // 256k of ram (less 4k), shared between both processors, mirrored 4 times
+ AM_RANGE(0xFFFE0, 0xFFFEF) AM_READWRITE(proc_control_r, proc_control_w)
+ADDRESS_MAP_END
+*/
+
/* Machine Reset */
void notetaker_state::machine_reset()
{
diff --git a/src/mame/drivers/pasogo.cpp b/src/mame/drivers/pasogo.cpp
index d88f121264e..28e858e5b5b 100644
--- a/src/mame/drivers/pasogo.cpp
+++ b/src/mame/drivers/pasogo.cpp
@@ -442,7 +442,6 @@ static ADDRESS_MAP_START(emsbank_map, AS_PROGRAM, 16, pasogo_state)
ADDRESS_MAP_END
static ADDRESS_MAP_START(pasogo_mem, AS_PROGRAM, 16, pasogo_state)
- AM_RANGE(0x00000, 0x7ffff) AM_RAMBANK("bank10")
AM_RANGE(0xb8000, 0xbffff) AM_RAM AM_SHARE("vram")
AM_RANGE(0x80000, 0xeffff) AM_READWRITE(emsram_r, emsram_w)
AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("bank27")
@@ -452,6 +451,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(pasogo_io, AS_IO, 16, pasogo_state)
AM_RANGE(0x0026, 0x0027) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff)
AM_RANGE(0x006c, 0x006f) AM_READWRITE(ems_r, ems_w)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
ADDRESS_MAP_END
@@ -521,8 +521,8 @@ void pasogo_state::machine_reset()
std::string region_tag;
ioport_port *color = ioport("COLOR");
m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
- if (!m_cart_rom) // this should never happen, since we make carts mandatory!
- m_cart_rom = memregion("maincpu");
+ if (!m_cart_rom) // even with mandatory carts, debug will crash without anything at the boot vector
+ m_cart_rom = memregion("empty");
membank("bank27")->set_base(m_cart_rom->base());
m_ems_index = 0;
@@ -569,7 +569,7 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state )
MACHINE_CONFIG_END
ROM_START( pasogo )
- ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASEFF )
+ ROM_REGION( 0x10000, "empty", ROMREGION_ERASEFF )
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp
index b6836ab5f3a..22f14676a86 100644
--- a/src/mame/drivers/pc.cpp
+++ b/src/mame/drivers/pc.cpp
@@ -57,50 +57,29 @@ public:
static ADDRESS_MAP_START( pc8_map, AS_PROGRAM, 8, pc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( zenith_map, AS_PROGRAM, 8, pc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
AM_RANGE(0xf0000, 0xf7fff) AM_RAM
- AM_RANGE(0xf8000, 0xfffff) AM_ROM
+ AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0x8000)
ADDRESS_MAP_END
-
static ADDRESS_MAP_START( pc16_map, AS_PROGRAM, 16, pc_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xbffff) AM_NOP
- AM_RANGE(0xc0000, 0xc7fff) AM_ROM
- AM_RANGE(0xc8000, 0xcffff) AM_ROM
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( ibm5550_map, AS_PROGRAM, 16, pc_state )
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xeffff) AM_RAM
- AM_RANGE(0xfc000, 0xfffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(pc8_io, AS_IO, 8, pc_state )
ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map)
ADDRESS_MAP_END
static ADDRESS_MAP_START(pc16_io, AS_IO, 16, pc_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0070, 0x007f) AM_RAM // needed for Poisk-2
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
ADDRESS_MAP_END
READ8_MEMBER(pc_state::unk_r)
@@ -111,6 +90,7 @@ READ8_MEMBER(pc_state::unk_r)
static ADDRESS_MAP_START(ibm5550_io, AS_IO, 16, pc_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff )
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff)
ADDRESS_MAP_END
INPUT_CHANGED_MEMBER(pc_state::pc_turbo_callback)
@@ -201,6 +181,7 @@ static MACHINE_CONFIG_START( pccga, pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
@@ -229,6 +210,7 @@ static MACHINE_CONFIG_START( iskr3104, pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MACHINE_CONFIG_END
@@ -249,6 +231,7 @@ static MACHINE_CONFIG_START( poisk2, pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( zenith, pc_state )
@@ -268,6 +251,7 @@ static MACHINE_CONFIG_START( zenith, pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("128K, 256K, 512K")
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
@@ -294,12 +278,13 @@ static MACHINE_CONFIG_START( siemens, pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( ibm5550, pc_state )
/* basic machine hardware */
- MCFG_CPU_PC(ibm5550, ibm5550, I8086, 8000000)
+ MCFG_CPU_PC(pc16, ibm5550, I8086, 8000000)
MCFG_IBM5160_MOTHERBOARD_ADD("mb", "maincpu")
MCFG_DEVICE_INPUT_DEFAULTS(pccga)
@@ -314,6 +299,7 @@ static MACHINE_CONFIG_START( ibm5550, pc_state )
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("64K, 128K, 256K, 512K")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED(bondwell, pccga)
@@ -331,149 +317,162 @@ static MACHINE_CONFIG_DERIVED(eagle1600, pccga)
MCFG_CPU_PC(pc16, pc16, I8086, 8000000)
MACHINE_CONFIG_END
+static DEVICE_INPUT_DEFAULTS_START( m15 )
+ DEVICE_INPUT_DEFAULTS("DSW0", 0x30, 0x20) // TODO: document correct dip settings
+ DEVICE_INPUT_DEFAULTS("DSW0", 0x01, 0x00)
+DEVICE_INPUT_DEFAULTS_END
+
+static MACHINE_CONFIG_DERIVED(m15, pccga)
+ MCFG_DEVICE_MODIFY("mb")
+ MCFG_DEVICE_INPUT_DEFAULTS(m15)
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("448K")
+ MCFG_RAM_EXTRA_OPTIONS("16K, 160K, 304K")
+MACHINE_CONFIG_END
+
ROM_START( bw230 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("bondwell.bin", 0xfe000, 0x2000, CRC(d435a405) SHA1(a57c705d1144c7b61940b6f5c05d785c272fc9bb))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD("bondwell.bin", 0xe000, 0x2000, CRC(d435a405) SHA1(a57c705d1144c7b61940b6f5c05d785c272fc9bb))
ROM_END
ROM_START( sicpc1605 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("multitech pc-700 3.1.bin", 0xfe000, 0x2000, CRC(0ac7a2e1) SHA1(b9c8504e21213d81a068dde9f51f9c973d726e7b))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD("multitech pc-700 3.1.bin", 0xe000, 0x2000, CRC(0ac7a2e1) SHA1(b9c8504e21213d81a068dde9f51f9c973d726e7b))
ROM_END
ROM_START( zdsupers )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x10000,"bios", 0)
ROM_SYSTEM_BIOS( 0, "v31d", "v3.1d" )
- ROMX_LOAD( "z184m v3.1d.10d", 0xf8000, 0x8000, CRC(44012c3b) SHA1(f2f28979798874386ca8ba3dd3ead24ae7c2aeb4), ROM_BIOS(1))
+ ROMX_LOAD( "z184m v3.1d.10d", 0x8000, 0x8000, CRC(44012c3b) SHA1(f2f28979798874386ca8ba3dd3ead24ae7c2aeb4), ROM_BIOS(1))
ROM_SYSTEM_BIOS( 1, "v29e", "v2.9e" )
- ROMX_LOAD( "z184m v2.9e.10d", 0xf8000, 0x8000, CRC(de2f200b) SHA1(ad5ce601669a82351e412fc6c1c70c47779a1e55), ROM_BIOS(2))
+ ROMX_LOAD( "z184m v2.9e.10d", 0x8000, 0x8000, CRC(de2f200b) SHA1(ad5ce601669a82351e412fc6c1c70c47779a1e55), ROM_BIOS(2))
ROM_END
ROM_START( dgone )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD( "dgone.bin", 0xf8000, 0x08000, CRC(2c38c86e) SHA1(c0f85a000d1d13cd354965689e925d677822549e))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD( "dgone.bin", 0x8000, 0x08000, CRC(2c38c86e) SHA1(c0f85a000d1d13cd354965689e925d677822549e))
ROM_END
ROM_START( ssam88s )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD( "samsung_samtron_88s_vers_2.0a.bin", 0xf8000, 0x08000, CRC(d1252a91) SHA1(469d15b6ecd7b70234975dc12c6bda4212a66652))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD( "samsung_samtron_88s_vers_2.0a.bin", 0x8000, 0x08000, CRC(d1252a91) SHA1(469d15b6ecd7b70234975dc12c6bda4212a66652))
ROM_END
ROM_START( mk88 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_DEFAULT_BIOS("v392")
ROM_SYSTEM_BIOS(0, "v290", "v2.90")
- ROMX_LOAD( "mk88m.bin", 0xfc000, 0x2000, CRC(09c9da3b) SHA1(d1e7ad23b5f5b3576ad128c1198294129754f39f), ROM_BIOS(1))
- ROMX_LOAD( "mk88b.bin", 0xfe000, 0x2000, CRC(8a922476) SHA1(c19c3644ab92fd12e13f32b410cd26e3c844a03b), ROM_BIOS(1))
+ ROMX_LOAD( "mk88m.bin", 0xc000, 0x2000, CRC(09c9da3b) SHA1(d1e7ad23b5f5b3576ad128c1198294129754f39f), ROM_BIOS(1))
+ ROMX_LOAD( "mk88b.bin", 0xe000, 0x2000, CRC(8a922476) SHA1(c19c3644ab92fd12e13f32b410cd26e3c844a03b), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v391", "v3.91")
- ROMX_LOAD( "mkm.bin", 0xfc000, 0x2000, CRC(65f979e8) SHA1(13e85be9bc8ceb5ab9e559e7d0089e26fbbb84fc), ROM_BIOS(2))
- ROMX_LOAD( "mkb.bin", 0xfe000, 0x2000, CRC(830a0447) SHA1(11bc200fdbcfbbe335f4c282020750c0b5ca4167), ROM_BIOS(2))
+ ROMX_LOAD( "mkm.bin", 0xc000, 0x2000, CRC(65f979e8) SHA1(13e85be9bc8ceb5ab9e559e7d0089e26fbbb84fc), ROM_BIOS(2))
+ ROMX_LOAD( "mkb.bin", 0xe000, 0x2000, CRC(830a0447) SHA1(11bc200fdbcfbbe335f4c282020750c0b5ca4167), ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v392", "v3.92")
- ROMX_LOAD( "m88.bin", 0xfc000, 0x2000, CRC(fe1b4e36) SHA1(fcb420af0ff09a7d43fcb9b7d0b0233a2071c159), ROM_BIOS(3))
- ROMX_LOAD( "b88.bin", 0xfe000, 0x2000, CRC(58a418df) SHA1(216398d4e4302ee7efcc2c8f9ff9d8a1161229ea), ROM_BIOS(3))
+ ROMX_LOAD( "m88.bin", 0xc000, 0x2000, CRC(fe1b4e36) SHA1(fcb420af0ff09a7d43fcb9b7d0b0233a2071c159), ROM_BIOS(3))
+ ROMX_LOAD( "b88.bin", 0xe000, 0x2000, CRC(58a418df) SHA1(216398d4e4302ee7efcc2c8f9ff9d8a1161229ea), ROM_BIOS(3))
ROM_END
ROM_START( iskr3104 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROMX_LOAD( "198.bin", 0xfc000, 0x2000, CRC(bcfd8e41) SHA1(e21ddf78839aa51fa5feb23f511ff5e2da31b433),ROM_SKIP(1))
- ROMX_LOAD( "199.bin", 0xfc001, 0x2000, CRC(2da5fe79) SHA1(14d5dccc141a0b3367f7f8a7188306fdf03c2b6c),ROM_SKIP(1))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROMX_LOAD( "198.bin", 0xc000, 0x2000, CRC(bcfd8e41) SHA1(e21ddf78839aa51fa5feb23f511ff5e2da31b433),ROM_SKIP(1))
+ ROMX_LOAD( "199.bin", 0xc001, 0x2000, CRC(2da5fe79) SHA1(14d5dccc141a0b3367f7f8a7188306fdf03c2b6c),ROM_SKIP(1))
// EGA card from Iskra-3104
//ROMX_LOAD( "143-03.bin", 0xc0001, 0x2000, CRC(d0706345) SHA1(e04bb40d944426a4ae2e3a614d3f4953d7132ede),ROM_SKIP(1))
//ROMX_LOAD( "143-02.bin", 0xc0000, 0x2000, CRC(c8c18ebb) SHA1(fd6dac76d43ab8b582e70f1d5cc931d679036fb9),ROM_SKIP(1))
ROM_END
ROM_START( poisk2 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_SYSTEM_BIOS(0, "v20", "v2.0")
- ROMX_LOAD( "b_p2_20h.rf4", 0xfc001, 0x2000, CRC(d53189b7) SHA1(ace40f1a40642b51fe5d2874acef81e48768b23b), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "b_p2_20l.rf4", 0xfc000, 0x2000, CRC(2d61fcc9) SHA1(11873c8741ba37d6c2fe1f482296aece514b7618), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "b_p2_20h.rf4", 0xc001, 0x2000, CRC(d53189b7) SHA1(ace40f1a40642b51fe5d2874acef81e48768b23b), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "b_p2_20l.rf4", 0xc000, 0x2000, CRC(2d61fcc9) SHA1(11873c8741ba37d6c2fe1f482296aece514b7618), ROM_SKIP(1) | ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v21", "v2.1")
- ROMX_LOAD( "b_p2_21h.rf4", 0xfc001, 0x2000, CRC(22197297) SHA1(506c7e63027f734d62ef537f484024548546011f), ROM_SKIP(1) | ROM_BIOS(2))
- ROMX_LOAD( "b_p2_21l.rf4", 0xfc000, 0x2000, CRC(0eb2ea7f) SHA1(67bb5fec53ebfa2a5cad2a3d3d595678d6023024), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "b_p2_21h.rf4", 0xc001, 0x2000, CRC(22197297) SHA1(506c7e63027f734d62ef537f484024548546011f), ROM_SKIP(1) | ROM_BIOS(2))
+ ROMX_LOAD( "b_p2_21l.rf4", 0xc000, 0x2000, CRC(0eb2ea7f) SHA1(67bb5fec53ebfa2a5cad2a3d3d595678d6023024), ROM_SKIP(1) | ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v24", "v2.4")
- ROMX_LOAD( "b_p2_24h.rf4", 0xfc001, 0x2000, CRC(ea842c9e) SHA1(dcdbf27374149dae0ef76d410cc6c615d9b99372), ROM_SKIP(1) | ROM_BIOS(3))
- ROMX_LOAD( "b_p2_24l.rf4", 0xfc000, 0x2000, CRC(02f21250) SHA1(f0b133fb4470bddf2f7bf59688cf68198ed8ce55), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "b_p2_24h.rf4", 0xc001, 0x2000, CRC(ea842c9e) SHA1(dcdbf27374149dae0ef76d410cc6c615d9b99372), ROM_SKIP(1) | ROM_BIOS(3))
+ ROMX_LOAD( "b_p2_24l.rf4", 0xc000, 0x2000, CRC(02f21250) SHA1(f0b133fb4470bddf2f7bf59688cf68198ed8ce55), ROM_SKIP(1) | ROM_BIOS(3))
ROM_SYSTEM_BIOS(3, "v21d", "v2.1d")
- ROMX_LOAD( "opp2_1h.rf4", 0xfc001, 0x2000, CRC(b7cd7f4f) SHA1(ac473822fb44d7b898d628732cf0a27fcb4d26d6), ROM_SKIP(1) | ROM_BIOS(4))
- ROMX_LOAD( "opp2_1l.rf4", 0xfc000, 0x2000, CRC(1971dca3) SHA1(ecd61cc7952af834d8abc11db372c3e70775489d), ROM_SKIP(1) | ROM_BIOS(4))
+ ROMX_LOAD( "opp2_1h.rf4", 0xc001, 0x2000, CRC(b7cd7f4f) SHA1(ac473822fb44d7b898d628732cf0a27fcb4d26d6), ROM_SKIP(1) | ROM_BIOS(4))
+ ROMX_LOAD( "opp2_1l.rf4", 0xc000, 0x2000, CRC(1971dca3) SHA1(ecd61cc7952af834d8abc11db372c3e70775489d), ROM_SKIP(1) | ROM_BIOS(4))
ROM_SYSTEM_BIOS(4, "v22d", "v2.2d")
- ROMX_LOAD( "opp2_2h.rf4", 0xfc001, 0x2000, CRC(b9e3a5cc) SHA1(0a28afbff612471ee81d69a98789e75253c57a30), ROM_SKIP(1) | ROM_BIOS(5))
- ROMX_LOAD( "opp2_2l.rf4", 0xfc000, 0x2000, CRC(6877aad6) SHA1(1d0031d044beb4f9f321e3c8fdedf57467958900), ROM_SKIP(1) | ROM_BIOS(5))
+ ROMX_LOAD( "opp2_2h.rf4", 0xc001, 0x2000, CRC(b9e3a5cc) SHA1(0a28afbff612471ee81d69a98789e75253c57a30), ROM_SKIP(1) | ROM_BIOS(5))
+ ROMX_LOAD( "opp2_2l.rf4", 0xc000, 0x2000, CRC(6877aad6) SHA1(1d0031d044beb4f9f321e3c8fdedf57467958900), ROM_SKIP(1) | ROM_BIOS(5))
ROM_SYSTEM_BIOS(5, "v23d", "v2.3d")
- ROMX_LOAD( "opp2_3h.rf4", 0xfc001, 0x2000, CRC(ac7d4f06) SHA1(858d6e084a38814280b3e29fb54971f4f532e484), ROM_SKIP(1) | ROM_BIOS(6))
- ROMX_LOAD( "opp2_3l.rf4", 0xfc000, 0x2000, CRC(3c877ea1) SHA1(0753168659653538311c0ad1df851cbbdba426f4), ROM_SKIP(1) | ROM_BIOS(6))
+ ROMX_LOAD( "opp2_3h.rf4", 0xc001, 0x2000, CRC(ac7d4f06) SHA1(858d6e084a38814280b3e29fb54971f4f532e484), ROM_SKIP(1) | ROM_BIOS(6))
+ ROMX_LOAD( "opp2_3l.rf4", 0xc000, 0x2000, CRC(3c877ea1) SHA1(0753168659653538311c0ad1df851cbbdba426f4), ROM_SKIP(1) | ROM_BIOS(6))
ROM_END
ROM_START( mc1702 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROM_LOAD16_BYTE( "2764_2_(573rf4).rom", 0xfc000, 0x2000, CRC(34a0c8fb) SHA1(88dc247f2e417c2848a2fd3e9b52258ad22a2c07))
- ROM_LOAD16_BYTE( "2764_3_(573rf4).rom", 0xfc001, 0x2000, CRC(68ab212b) SHA1(f3313f77392877d28ce290ffa3432f0a32fc4619))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROM_LOAD16_BYTE( "2764_2_(573rf4).rom", 0xc000, 0x2000, CRC(34a0c8fb) SHA1(88dc247f2e417c2848a2fd3e9b52258ad22a2c07))
+ ROM_LOAD16_BYTE( "2764_3_(573rf4).rom", 0xc001, 0x2000, CRC(68ab212b) SHA1(f3313f77392877d28ce290ffa3432f0a32fc4619))
ROM_LOAD( "ba1m_(573rf5).rom", 0x0000, 0x0800, CRC(08d938e8) SHA1(957b6c691dbef75c1c735e8e4e81669d056971e4))
ROM_END
ROM_START( ibm5550 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROM_LOAD( "ipl5550.rom", 0xfc000, 0x4000, CRC(40cf34c9) SHA1(d41f77fdfa787b0e97ed311e1c084b8699a5b197))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROM_LOAD( "ipl5550.rom", 0xc000, 0x4000, CRC(40cf34c9) SHA1(d41f77fdfa787b0e97ed311e1c084b8699a5b197))
ROM_END
ROM_START( pc7000 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROMX_LOAD( "mitsubishi-m5l27128k-1.bin", 0xf8000, 0x4000, CRC(9683957f) SHA1(4569eab6d88eb1bba0d553d1358e593c326978aa), ROM_SKIP(1))
- ROMX_LOAD( "mitsubishi-m5l27128k-2.bin", 0xf8001, 0x4000, CRC(99b229a4) SHA1(5800c8bafed26873d8cfcc79a05f93a780a31c91), ROM_SKIP(1))
+ ROM_REGION16_LE(0x10000,"bios", 0)
+ ROMX_LOAD( "mitsubishi-m5l27128k-1.bin", 0x8000, 0x4000, CRC(9683957f) SHA1(4569eab6d88eb1bba0d553d1358e593c326978aa), ROM_SKIP(1))
+ ROMX_LOAD( "mitsubishi-m5l27128k-2.bin", 0x8001, 0x4000, CRC(99b229a4) SHA1(5800c8bafed26873d8cfcc79a05f93a780a31c91), ROM_SKIP(1))
ROM_END
ROM_START( olivm15 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD( "oliv_m15.bin",0xfc000, 0x04000, CRC(bf2ef795) SHA1(02d497131f5ca2c78f2accd38ab0eab6813e3ebf))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD( "oliv_m15.bin",0xc000, 0x04000, CRC(bf2ef795) SHA1(02d497131f5ca2c78f2accd38ab0eab6813e3ebf))
ROM_END
ROM_START( sx16 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD( "tmm27128ad.bin",0xfc000, 0x4000, CRC(f8543362) SHA1(fef625e260ca89ba02174584bdc12db609f0780e))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD( "tmm27128ad.bin",0xc000, 0x4000, CRC(f8543362) SHA1(fef625e260ca89ba02174584bdc12db609f0780e))
ROM_END
ROM_START( compc1 )
- ROM_REGION(0x100000, "maincpu", 0)
- ROM_LOAD("380270-01.bin", 0xfc000, 0x4000, BAD_DUMP CRC(75135d37) SHA1(177283642240fee191ba2d87e1d0c2a377c78ccb))
+ ROM_REGION(0x10000, "bios", 0)
+ ROM_LOAD("380270-01.bin", 0xc000, 0x4000, BAD_DUMP CRC(75135d37) SHA1(177283642240fee191ba2d87e1d0c2a377c78ccb))
ROM_REGION(0x8000, "gfx1", 0)
ROM_LOAD("pc1_char.bin", 0x0000, 0x8000, CRC(4773a945) SHA1(bcc38abecc75d3f641d42987cb0d2ed71d71bc4c))
ROM_END
// Note: Commodore PC20-III, PC10-III and COLT share the same BIOS
ROM_START( pc10iii )
- ROM_REGION(0x100000, "maincpu", 0)
+ ROM_REGION(0x10000, "bios", 0)
ROM_DEFAULT_BIOS("v441")
ROM_SYSTEM_BIOS(0, "v435", "v4.35")
- ROMX_LOAD("318085-01.u201", 0xf8000, 0x8000, NO_DUMP, ROM_BIOS(1))
+ ROMX_LOAD("318085-01.u201", 0x8000, 0x8000, NO_DUMP, ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v436", "v4.36")
- ROMX_LOAD("318085-02.u201", 0xf8000, 0x8000, NO_DUMP, ROM_BIOS(2))
+ ROMX_LOAD("318085-02.u201", 0x8000, 0x8000, NO_DUMP, ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v436c", "v4.36c")
- ROMX_LOAD("318085-04.u201", 0xf8000, 0x8000, NO_DUMP, ROM_BIOS(3))
+ ROMX_LOAD("318085-04.u201", 0x8000, 0x8000, NO_DUMP, ROM_BIOS(3))
ROM_SYSTEM_BIOS(3, "v438", "v4.38")
- ROMX_LOAD("318085-05.u201", 0xf8000, 0x8000, CRC(ae9e6a31) SHA1(853ee251cf230818c407a8d13ef060a21c90a8c1), ROM_BIOS(4))
+ ROMX_LOAD("318085-05.u201", 0x8000, 0x8000, CRC(ae9e6a31) SHA1(853ee251cf230818c407a8d13ef060a21c90a8c1), ROM_BIOS(4))
ROM_SYSTEM_BIOS(4, "v439", "v4.39")
- ROMX_LOAD("318085-06.u201", 0xf8000, 0x8000, NO_DUMP, ROM_BIOS(5))
+ ROMX_LOAD("318085-06.u201", 0x8000, 0x8000, NO_DUMP, ROM_BIOS(5))
ROM_SYSTEM_BIOS(5, "v440", "v4.40")
- ROMX_LOAD("318085-07.u201", 0xf8000, 0x8000, NO_DUMP, ROM_BIOS(6))
+ ROMX_LOAD("318085-07.u201", 0x8000, 0x8000, NO_DUMP, ROM_BIOS(6))
ROM_SYSTEM_BIOS(6, "v441", "v4.41")
- ROMX_LOAD("318085-08.u201", 0xf8000, 0x8000, CRC(7e228dc8) SHA1(958dfdd637bd31c01b949fac729d6973a7e630bc), ROM_BIOS(7))
+ ROMX_LOAD("318085-08.u201", 0x8000, 0x8000, CRC(7e228dc8) SHA1(958dfdd637bd31c01b949fac729d6973a7e630bc), ROM_BIOS(7))
ROM_REGION(0x8000, "gfx1", 0)
ROM_LOAD("318086-02.u607", 0x0000, 0x8000, CRC(b406651c) SHA1(856f58353391a74a06ebb8ec9f8333d7d69e5fd6))
//ROM_LOAD("5788005.u33", 0x00000, 0x2000, BAD_DUMP CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* temp so you can read the text */
ROM_END
ROM_START( mbc16 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD( "mbc16.bin", 0xfc000, 0x4000, CRC(f3e0934a) SHA1(e4b91c3d395be0414e20f23ad4919b8ac52639b2))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD( "mbc16.bin", 0xc000, 0x4000, CRC(f3e0934a) SHA1(e4b91c3d395be0414e20f23ad4919b8ac52639b2))
ROM_REGION(0x2000,"gfx1", 0)
//ATI Graphics Solution SR (graphics card, need to make it ISA card)
ROM_LOAD( "atigssr.bin", 0x0000, 0x2000, CRC(aca81498) SHA1(0d84c89487ee7a6ac4c9e73fdb30c5fd8aa595f8))
ROM_END
ROM_START( ataripc3 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD( "c101701-004 308.u61",0xf8000, 0x8000, CRC(929a2443) SHA1(8e98f3c9180c55b1f5521727779c016083d27960))
+ ROM_REGION(0x10000,"bios", 0)
+ ROM_LOAD( "c101701-004 308.u61",0x8000, 0x8000, CRC(929a2443) SHA1(8e98f3c9180c55b1f5521727779c016083d27960))
ROM_REGION(0x8000,"gfx1", 0)
ROM_LOAD("5788005.u33", 0x00000, 0x2000, BAD_DUMP CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) // not the real character ROM
@@ -483,9 +482,9 @@ ROM_START( ataripc3 )
ROM_END
ROM_START( eagle1600 )
- ROM_REGION(0x100000,"maincpu", 0)
- ROMX_LOAD( "eagle 1600 62-2732-001 rev e u403.bin",0xfe000, 0x1000, CRC(3da1e96a) SHA1(77861ba5ebd056da1daf048f5abd459e0528666d), ROM_SKIP(1))
- ROMX_LOAD( "eagle 1600 62-2732-002 rev e u404.bin",0xfe001, 0x1000, CRC(be6492d4) SHA1(ef25faf33e8336121d030e38e177be39be8afb7a), ROM_SKIP(1))
+ ROM_REGION(0x10000,"bios", 0)
+ ROMX_LOAD( "eagle 1600 62-2732-001 rev e u403.bin",0xe000, 0x1000, CRC(3da1e96a) SHA1(77861ba5ebd056da1daf048f5abd459e0528666d), ROM_SKIP(1))
+ ROMX_LOAD( "eagle 1600 62-2732-002 rev e u404.bin",0xe001, 0x1000, CRC(be6492d4) SHA1(ef25faf33e8336121d030e38e177be39be8afb7a), ROM_SKIP(1))
ROM_REGION(0x8000,"gfx1", 0)
ROM_LOAD("eagle 1600 video char gen u301.bin", 0x00000, 0x1000, CRC(1a7e552f) SHA1(749058783eec9d96a70dc5fdbfccb56196f889dc))
@@ -512,7 +511,7 @@ COMP( 1990, mc1702, ibm5150, 0, pccga, pccga, driver_device
COMP( 1987, zdsupers, ibm5150, 0, zenith, pccga, driver_device, 0, "Zenith Data Systems", "SuperSport", 0)
COMP( 1985, sicpc1605, ibm5150, 0, siemens, pccga, driver_device, 0, "Siemens", "Sicomp PC16-05", 0)
-COMP( 198?, olivm15, ibm5150, 0, pccga, pccga, driver_device, 0, "Olivetti", "M15", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // is this a pc clone or not?
+COMP( 198?, olivm15, ibm5150, 0, m15, pccga, driver_device, 0, "Olivetti", "M15", 0)
COMP( 1983, ibm5550, ibm5150, 0, ibm5550, pccga, driver_device, 0, "International Business Machines", "IBM 5550", MACHINE_NOT_WORKING)
@@ -521,6 +520,6 @@ COMP( 1985, pc7000, ibm5150, 0, pccga, pccga, driver_device
COMP( 1988, sx16, ibm5150, 0, pccga, pccga, driver_device, 0, "Sanyo", "SX-16", MACHINE_NOT_WORKING)
COMP( 198?, mbc16, ibm5150, 0, pccga, pccga, driver_device, 0, "Sanyo", "MBC-16" , MACHINE_NOT_WORKING)
-COMP( 198?, ataripc3, ibm5150, 0, pccga, pccga, driver_device, 0, "Atari", "PC-3" , MACHINE_NOT_WORKING)
+COMP( 198?, ataripc3, ibm5150, 0, pccga, pccga, driver_device, 0, "Atari", "PC-3" , 0)
COMP( 1989, ssam88s, ibm5150, 0, pccga, pccga, driver_device, 0, "Samsung", "Samtron 88S" , MACHINE_NOT_WORKING)
COMP( 1983, eagle1600, ibm5150, 0, eagle1600, pccga, driver_device, 0, "Eagle", "1600" , MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp
index 0ac808a8553..96381face12 100644
--- a/src/mame/drivers/poisk1.cpp
+++ b/src/mame/drivers/poisk1.cpp
@@ -10,14 +10,24 @@
#include "emu.h"
-#include "includes/poisk1.h"
#include "machine/kb_poisk1.h"
+#include "video/cgapal.h"
+#include "imagedev/cassette.h"
+#include "machine/i8255.h"
+#include "bus/isa/isa.h"
+#include "machine/pic8259.h"
+#include "machine/pit8253.h"
+#include "machine/ram.h"
+#include "bus/isa/xsu_cards.h"
+#include "sound/speaker.h"
#include "cpu/i86/i86.h"
#define CGA_PALETTE_SETS 83
/* one for colour, one for mono, 81 for colour composite */
+#define BG_COLOR(x) (((x) & 7)|(((x) & 0x10) >> 1))
+
#define VERBOSE_DBG 0
#define DBG_LOG(N,M,A) \
@@ -30,10 +40,380 @@
} \
} while (0)
+#define POISK1_UPDATE_ROW(name) \
+ void name(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *videoram, UINT16 ma, UINT8 ra, UINT8 stride)
+
+class p1_state : public driver_device
+{
+public:
+ p1_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_pic8259(*this, "pic8259"),
+ m_pit8253(*this, "pit8253"),
+ m_ppi8255n1(*this, "ppi8255n1"),
+ m_ppi8255n2(*this, "ppi8255n2"),
+ m_isabus(*this, "isa"),
+ m_speaker(*this, "speaker"),
+ m_cassette(*this, "cassette"),
+ m_ram(*this, RAM_TAG),
+ m_palette(*this, "palette") { }
+
+ required_device<cpu_device> m_maincpu;
+ required_device<pic8259_device> m_pic8259;
+ required_device<pit8253_device> m_pit8253;
+ required_device<i8255_device> m_ppi8255n1;
+ required_device<i8255_device> m_ppi8255n2;
+ required_device<isa8_device> m_isabus;
+ required_device<speaker_sound_device> m_speaker;
+ required_device<cassette_image_device> m_cassette;
+ required_device<ram_device> m_ram;
+ required_device<palette_device> m_palette;
+
+ DECLARE_DRIVER_INIT(poisk1);
+ DECLARE_MACHINE_START(poisk1);
+ DECLARE_MACHINE_RESET(poisk1);
+
+ DECLARE_PALETTE_INIT(p1);
+ virtual void video_start() override;
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ void set_palette_luts();
+ POISK1_UPDATE_ROW(cga_gfx_2bpp_update_row);
+ POISK1_UPDATE_ROW(cga_gfx_1bpp_update_row);
+ POISK1_UPDATE_ROW(poisk1_gfx_1bpp_update_row);
+
+ DECLARE_WRITE_LINE_MEMBER(p1_pit8253_out2_changed);
+ DECLARE_WRITE_LINE_MEMBER(p1_speaker_set_spkrdata);
+ UINT8 m_p1_spkrdata;
+ UINT8 m_p1_input;
+
+ UINT8 m_kbpoll_mask;
+
+ struct
+ {
+ UINT8 trap[4];
+ std::unique_ptr<UINT8[]> videoram_base;
+ UINT8 *videoram;
+ UINT8 mode_control_6a;
+ UINT8 color_select_68;
+ UINT8 palette_lut_2bpp[4];
+ int stride;
+ void *update_row(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *videoram, UINT16 ma, UINT8 ra, UINT8 stride);
+ } m_video;
+
+ DECLARE_READ8_MEMBER(p1_trap_r);
+ DECLARE_WRITE8_MEMBER(p1_trap_w);
+ DECLARE_READ8_MEMBER(p1_cga_r);
+ DECLARE_WRITE8_MEMBER(p1_cga_w);
+ DECLARE_WRITE8_MEMBER(p1_vram_w);
+
+ DECLARE_READ8_MEMBER(p1_ppi_r);
+ DECLARE_WRITE8_MEMBER(p1_ppi_w);
+ DECLARE_WRITE8_MEMBER(p1_ppi_porta_w);
+ DECLARE_READ8_MEMBER(p1_ppi_porta_r);
+ DECLARE_READ8_MEMBER(p1_ppi_portb_r);
+ DECLARE_READ8_MEMBER(p1_ppi_portc_r);
+ DECLARE_WRITE8_MEMBER(p1_ppi_portc_w);
+ DECLARE_WRITE8_MEMBER(p1_ppi2_porta_w);
+ DECLARE_WRITE8_MEMBER(p1_ppi2_portb_w);
+ DECLARE_READ8_MEMBER(p1_ppi2_portc_r);
+ const char *m_cputag;
+};
+
/*
* onboard devices:
*/
+/*
+ * Poisk-1 doesn't have a mc6845 and always runs in graphics mode. Text mode is emulated by BIOS;
+ * NMI is triggered on access to video memory and to mc6845 ports. Address and data are latched into:
+ *
+ * Port 28H (offset 0) -- lower 8 bits of address
+ * Port 29H (offset 1) -- high -//- and mode bits
+ * Port 2AH (offset 2) -- data
+ */
+
+READ8_MEMBER(p1_state::p1_trap_r)
+{
+ UINT8 data = m_video.trap[offset];
+ DBG_LOG(1,"trap",("R %.2x $%02x\n", 0x28+offset, data));
+ if (offset == 0)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+ return data;
+}
+
+WRITE8_MEMBER(p1_state::p1_trap_w)
+{
+ DBG_LOG(1,"trap",("W %.2x $%02x\n", 0x28+offset, data));
+}
+
+READ8_MEMBER(p1_state::p1_cga_r)
+{
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ return 0;
+}
+
+WRITE8_MEMBER(p1_state::p1_cga_w)
+{
+ UINT16 port = offset + 0x3d0;
+
+ DBG_LOG(1,"cga",("W %.4x $%02x\n", port, data));
+ m_video.trap[2] = data;
+ m_video.trap[1] = 0xC0 | ((port >> 8) & 0x3f);
+ m_video.trap[0] = port & 255;
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+}
+
+WRITE8_MEMBER(p1_state::p1_vram_w)
+{
+ DBG_LOG(1,"vram",("W %.4x $%02x\n", offset, data));
+ if (m_video.videoram_base)
+ m_video.videoram_base[offset] = data;
+ m_video.trap[2] = data;
+ m_video.trap[1] = 0x80 | ((offset >> 8) & 0x3f);
+ m_video.trap[0] = offset & 255;
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+}
+
+// CGA emulator
+/*
+068h D42 0..2 R, G, B XXX Foreground/Background color
+ 3 NMI DISABLE NMI trap 1: Disabled 0: Enabled
+ 4 PALETTE XXX Colour palette 0: XXX 1: XXX
+ 5 I (INTENS) XXX Foreground/Background color intensity
+ 6 DISPLAY BANK XXX Video RAM page
+ 7 HIRES 1: 640x200 0: 320x200
+*/
+
+WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
+{
+ address_space &space_prg = m_maincpu->space(AS_PROGRAM);
+
+ DBG_LOG(1,"color_select_68",("W $%02x\n", data));
+
+ // NMI DISABLE
+ if (BIT(data, 3) != BIT(m_video.color_select_68, 3)) {
+ if (BIT(data, 3)) {
+ space_prg.install_readwrite_bank( 0xb8000, 0xbbfff, "bank11" );
+ } else {
+ space_prg.install_read_bank( 0xb8000, 0xbbfff, "bank11" );
+ space_prg.install_write_handler( 0xb8000, 0xbbfff, WRITE8_DELEGATE(p1_state, p1_vram_w) );
+ }
+ }
+ // DISPLAY BANK
+ if (BIT(data, 6) != BIT(m_video.color_select_68, 6)) {
+ if (BIT(data, 6))
+ m_video.videoram = m_video.videoram_base.get() + 0x4000;
+ else
+ m_video.videoram = m_video.videoram_base.get();
+ }
+ // HIRES -- XXX
+ if (BIT(data, 7) != BIT(m_video.color_select_68, 7)) {
+ if (BIT(data, 7))
+ machine().first_screen()->set_visible_area(0, 640-1, 0, 200-1);
+ else
+ machine().first_screen()->set_visible_area(0, 320-1, 0, 200-1);
+ }
+ m_video.color_select_68 = data;
+ set_palette_luts();
+}
+
+/*
+06Ah Dxx 6 Enable/Disable color burst (?)
+ 7 Enable/Disable D7H/D7L
+*/
+
+WRITE8_MEMBER(p1_state::p1_ppi_portc_w)
+{
+ DBG_LOG(1,"mode_control_6a",("W $%02x\n", data));
+
+ m_video.mode_control_6a = data;
+ set_palette_luts();
+}
+
+void p1_state::set_palette_luts(void)
+{
+ /* Setup 2bpp palette lookup table */
+ // HIRES
+ if ( m_video.color_select_68 & 0x80 )
+ {
+ m_video.palette_lut_2bpp[0] = 0;
+ }
+ else
+ {
+ m_video.palette_lut_2bpp[0] = BG_COLOR(m_video.color_select_68);
+ }
+ // B&W -- XXX
+/*
+ if ( m_video.mode_control_6a & 0x40 )
+ {
+ m_video.palette_lut_2bpp[1] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 3;
+ m_video.palette_lut_2bpp[2] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 4;
+ m_video.palette_lut_2bpp[3] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 7;
+ }
+ else
+*/
+ {
+ // PALETTE
+ if ( m_video.color_select_68 & 0x20 )
+ {
+ m_video.palette_lut_2bpp[1] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 3;
+ m_video.palette_lut_2bpp[2] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 5;
+ m_video.palette_lut_2bpp[3] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 7;
+ }
+ else
+ {
+ m_video.palette_lut_2bpp[1] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 2;
+ m_video.palette_lut_2bpp[2] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 4;
+ m_video.palette_lut_2bpp[3] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 6;
+ }
+ }
+}
+
+/***************************************************************************
+ Draw graphics mode with 320x200 pixels (default) with 2 bits/pixel.
+ Even scanlines are from CGA_base + 0x0000, odd from CGA_base + 0x2000
+ cga fetches 2 byte per mc6845 access.
+***************************************************************************/
+
+POISK1_UPDATE_ROW( p1_state::cga_gfx_2bpp_update_row )
+{
+ const rgb_t *palette = m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(ra);
+ UINT16 odd, offset;
+ int i;
+
+ if ( ra == 0 ) DBG_LOG(1,"cga_gfx_2bpp_update_row",("\n"));
+ odd = ( ra & 1 ) << 13;
+ offset = ( ma & 0x1fff ) | odd;
+ for ( i = 0; i < stride; i++ )
+ {
+ UINT8 data = videoram[ offset++ ];
+
+ *p = palette[m_video.palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
+ *p = palette[m_video.palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
+ *p = palette[m_video.palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
+ *p = palette[m_video.palette_lut_2bpp[ data & 0x03 ]]; p++;
+ }
+}
+
+/***************************************************************************
+ Draw graphics mode with 640x200 pixels (default).
+ The cell size is 1x1 (1 scanline is the real default)
+ Even scanlines are from CGA_base + 0x0000, odd from CGA_base + 0x2000
+***************************************************************************/
+
+POISK1_UPDATE_ROW( p1_state::cga_gfx_1bpp_update_row )
+{
+ const rgb_t *palette = m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(ra);
+ UINT8 fg = 15, bg = BG_COLOR(m_video.color_select_68);
+ UINT16 odd, offset;
+ int i;
+
+ if ( ra == 0 ) DBG_LOG(1,"cga_gfx_1bpp_update_row",("bg %d\n", bg));
+ odd = ( ra & 1 ) << 13;
+ offset = ( ma & 0x1fff ) | odd;
+ for ( i = 0; i < stride; i++ )
+ {
+ UINT8 data = videoram[ offset++ ];
+
+ *p = palette[( data & 0x80 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg ]; p++;
+ }
+}
+
+/***************************************************************************
+ Draw graphics mode with 640x200 pixels + extra highlight color for text
+ mode emulation
+ Even scanlines are from CGA_base + 0x0000, odd from CGA_base + 0x2000
+***************************************************************************/
+
+POISK1_UPDATE_ROW( p1_state::poisk1_gfx_1bpp_update_row )
+{
+ const rgb_t *palette = m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(ra);
+ UINT8 fg, bg = BG_COLOR(m_video.color_select_68);
+ UINT16 odd, offset;
+ int i;
+
+ if ( ra == 0 ) DBG_LOG(1,"poisk1_gfx_1bpp_update_row",("bg %d\n", bg));
+ odd = ( ra & 1 ) << 13;
+ offset = ( ma & 0x1fff ) | odd;
+ for ( i = 0; i < stride; i++ )
+ {
+ UINT8 data = videoram[ offset++ ];
+
+ fg = (data & 0x80) ? ( (m_video.color_select_68 & 0x20) ? 10 : 11 ) : 15; // XXX
+ *p = palette[bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg ]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg ]; p++;
+ }
+}
+
+/* Initialise the cga palette */
+PALETTE_INIT_MEMBER(p1_state, p1)
+{
+ int i;
+
+ DBG_LOG(0,"init",("palette_init()\n"));
+
+ for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
+ {
+ palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
+ }
+}
+
+void p1_state::video_start()
+{
+ address_space &space = m_maincpu->space( AS_PROGRAM );
+
+ DBG_LOG(0,"init",("video_start()\n"));
+
+ memset(&m_video, 0, sizeof(m_video));
+ m_video.videoram_base = std::make_unique<UINT8[]>(0x8000);
+ m_video.videoram = m_video.videoram_base.get();
+ m_video.stride = 80;
+
+ space.install_readwrite_bank(0xb8000, 0xbffff, "bank11" );
+ machine().root_device().membank("bank11")->set_base(m_video.videoram);
+}
+
+UINT32 p1_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ UINT16 ra, ma = 0;
+
+ if (!m_video.stride || !m_video.videoram) return 0;
+
+ // bit 6 of 6Ah disables color burst -- not implemented
+ for (ra = cliprect.min_y; ra <= cliprect.max_y; ra++)
+ {
+ if (BIT(m_video.color_select_68, 7)) {
+ if (BIT(m_video.mode_control_6a, 7)) {
+ cga_gfx_1bpp_update_row(bitmap, cliprect, m_video.videoram, ma, ra, m_video.stride);
+ } else {
+ poisk1_gfx_1bpp_update_row(bitmap, cliprect, m_video.videoram, ma, ra, m_video.stride);
+ }
+ } else {
+ cga_gfx_2bpp_update_row(bitmap, cliprect, m_video.videoram, ma, ra, m_video.stride);
+ }
+ if (ra & 1) ma += m_video.stride;
+ }
+
+ return 0;
+}
+
// Timer. Poisk-1 uses single XTAL for everything? -- check
WRITE_LINE_MEMBER( p1_state::p1_speaker_set_spkrdata )
@@ -177,7 +557,6 @@ DRIVER_INIT_MEMBER( p1_state, poisk1 )
DBG_LOG(0,"init",("driver_init()\n"));
- program.unmap_readwrite(0, 0x7ffff);
program.install_readwrite_bank(0, m_ram->size()-1, "bank10");
membank( "bank10" )->set_base( m_ram->pointer() );
}
@@ -200,10 +579,7 @@ MACHINE_RESET_MEMBER( p1_state, poisk1 )
static ADDRESS_MAP_START( poisk1_map, AS_PROGRAM, 8, p1_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
- AM_RANGE(0xc0000, 0xc1fff) AM_ROM
- AM_RANGE(0xc0000, 0xfbfff) AM_NOP
- AM_RANGE(0xfc000, 0xfffff) AM_ROM
+ AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0xc000)
ADDRESS_MAP_END
static ADDRESS_MAP_START( poisk1_io, AS_IO, 8, p1_state )
@@ -238,7 +614,7 @@ static MACHINE_CONFIG_START( poisk1, p1_state )
MCFG_PIT8253_CLK2(XTAL_15MHz/12) /* pio port c pin 4, and speaker polling enough */
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(p1_state, p1_pit8253_out2_changed))
- MCFG_PIC8259_ADD( "pic8259", INPUTLINE(":maincpu", 0), VCC, NULL )
+ MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL )
MCFG_DEVICE_ADD("ppi8255n1", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(READ8(p1_state, p1_ppi_porta_r)) /*60H*/
@@ -285,15 +661,15 @@ static MACHINE_CONFIG_START( poisk1, p1_state )
MACHINE_CONFIG_END
ROM_START( poisk1 )
- ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_REGION16_LE(0x10000,"bios", 0)
ROM_DEFAULT_BIOS("v91")
ROM_SYSTEM_BIOS(0, "v89", "1989")
- ROMX_LOAD( "biosp1s.rf4", 0xfe000, 0x2000, CRC(1a85f671) SHA1(f0e59b2c4d92164abca55a96a58071ce869ff988), ROM_BIOS(1))
+ ROMX_LOAD( "biosp1s.rf4", 0xe000, 0x2000, CRC(1a85f671) SHA1(f0e59b2c4d92164abca55a96a58071ce869ff988), ROM_BIOS(1))
ROM_SYSTEM_BIOS(1, "v91", "1991")
- ROMX_LOAD( "poisk_1991.bin", 0xfe000, 0x2000, CRC(d61c56fd) SHA1(de202e1f7422d585a1385a002a4fcf9d756236e5), ROM_BIOS(2))
+ ROMX_LOAD( "poisk_1991.bin", 0xe000, 0x2000, CRC(d61c56fd) SHA1(de202e1f7422d585a1385a002a4fcf9d756236e5), ROM_BIOS(2))
ROM_SYSTEM_BIOS(2, "v91r2", "1991r2")
- ROMX_LOAD( "p_bios_nm.bin", 0xfe000, 0x2000, CRC(84430b4f) SHA1(3e477962be3cea09662cb2e3ad9966ad01c7455d), ROM_BIOS(3))
+ ROMX_LOAD( "p_bios_nm.bin", 0xe000, 0x2000, CRC(84430b4f) SHA1(3e477962be3cea09662cb2e3ad9966ad01c7455d), ROM_BIOS(3))
// 0xc0000, sets 80x25 text and loops asking for 'Boot from hard disk (Y or N)?'
ROM_LOAD( "boot_net.rf4", 0x00000, 0x2000, CRC(316c2030) SHA1(d043325596455772252e465b85321f1b5c529d0b)) // NET BIOS
diff --git a/src/mame/drivers/sprcros2.cpp b/src/mame/drivers/sprcros2.cpp
index 040b508ee5c..ad7c67dccef 100644
--- a/src/mame/drivers/sprcros2.cpp
+++ b/src/mame/drivers/sprcros2.cpp
@@ -1,9 +1,15 @@
// license:BSD-3-Clause
-// copyright-holders:David Haywood
+// copyright-holders:Angelo Salese
+/***************************************************************************
-// **** SKELETON DRIVER **** original removed due to unresolved licensing.
+TODO:
+- complete rewrite;
+- scanline renderer;
+- understand irq 0 source;
+- output bit 0 might be watchdog armed bit/sprite start DMA instead of irq enable;
+
+===================================
-/*
Super Cross II (JPN Ver.)
(c)1986 GM Shoji
@@ -39,47 +45,461 @@ SCM-23.5B
SC-60.4K
SC-61.5A
-*/
+***************************************************************************/
#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "sound/sn76496.h"
+
+#define MAIN_CLOCK XTAL_10MHz
class sprcros2_state : public driver_device
{
public:
sprcros2_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
+ : driver_device(mconfig, type, tag),
+ m_master_cpu(*this, "master_cpu"),
+ m_slave_cpu(*this, "slave_cpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_fgvram(*this, "fgvram"),
+ m_fgattr(*this, "fgattr"),
+ m_bgvram(*this, "bgvram"),
+ m_bgattr(*this, "bgattr"),
+ m_sprram(*this, "sprram")
{ }
+ // devices
+ required_device<cpu_device> m_master_cpu;
+ required_device<cpu_device> m_slave_cpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+
+ required_shared_ptr<UINT8> m_fgvram;
+ required_shared_ptr<UINT8> m_fgattr;
+ required_shared_ptr<UINT8> m_bgvram;
+ required_shared_ptr<UINT8> m_bgattr;
+ required_shared_ptr<UINT8> m_sprram;
+
+
+ // screen updates
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_PALETTE_INIT(sprcros2);
+ DECLARE_WRITE8_MEMBER(master_output_w);
+ DECLARE_WRITE8_MEMBER(slave_output_w);
+ DECLARE_WRITE8_MEMBER(bg_scrollx_w);
+ DECLARE_WRITE8_MEMBER(bg_scrolly_w);
+ INTERRUPT_GEN_MEMBER(master_vblank_irq);
+ INTERRUPT_GEN_MEMBER(slave_vblank_irq);
+ TIMER_DEVICE_CALLBACK_MEMBER(master_scanline);
+
+ bool m_master_nmi_enable;
+ bool m_master_irq_enable;
+ bool m_slave_nmi_enable;
+ UINT8 m_bg_scrollx, m_bg_scrolly;
+protected:
+ // driver_device overrides
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ virtual void video_start() override;
+
+private:
+ void legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect);
+ void legacy_fg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect);
+ void legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &cliprect);
};
+void sprcros2_state::video_start()
+{
+}
+
+void sprcros2_state::legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect)
+{
+ gfx_element *gfx_0 = m_gfxdecode->gfx(0);
+ int count = 0;
+
+ for (int y=0;y<32;y++)
+ {
+ for (int x=0;x<32;x++)
+ {
+ UINT16 tile = m_bgvram[count];
+ tile |= (m_bgattr[count] & 7) << 8;
+ bool flipx = bool(m_bgattr[count] & 0x08);
+ UINT8 color = (m_bgattr[count] & 0xf0) >> 4;
+
+ gfx_0->opaque(bitmap,cliprect,tile,color,flipx,0,x*8-m_bg_scrollx,y*8-m_bg_scrolly);
+ gfx_0->opaque(bitmap,cliprect,tile,color,flipx,0,x*8+256-m_bg_scrollx,y*8-m_bg_scrolly);
+ gfx_0->opaque(bitmap,cliprect,tile,color,flipx,0,x*8-m_bg_scrollx,y*8+256-m_bg_scrolly);
+ gfx_0->opaque(bitmap,cliprect,tile,color,flipx,0,x*8+256-m_bg_scrollx,y*8+256-m_bg_scrolly);
+
+ count++;
+ }
+ }
+
+}
+
+void sprcros2_state::legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &cliprect)
+{
+ gfx_element *gfx_1 = m_gfxdecode->gfx(1);
+
+ for(int count=0x40-4;count>-1;count-=4)
+ {
+ UINT8 x,y,tile,color;
+ bool flipx;
+
+ y = 224-m_sprram[count+2];
+ x = m_sprram[count+3];
+ tile = m_sprram[count+0];
+ flipx = bool(m_sprram[count+1] & 2);
+ color = (m_sprram[count+1] & 0x38) >> 3;
+ gfx_1->transpen(bitmap,cliprect,tile,color,flipx,0,x,y & 0xff,0);
+ }
+}
+
+void sprcros2_state::legacy_fg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect)
+{
+ gfx_element *gfx_2 = m_gfxdecode->gfx(2);
+ int count = 0;
+
+ for (int y=0;y<32;y++)
+ {
+ for (int x=0;x<32;x++)
+ {
+ UINT16 tile = m_fgvram[count];
+ tile |= (m_fgattr[count] & 3) << 8;
+ UINT8 color = (m_fgattr[count] & 0xfc) >> 2;
+
+ gfx_2->transpen(bitmap,cliprect,tile,color,0,0,x*8,y*8,0);
+
+ count++;
+ }
+ }
+}
+
+
+
+
+UINT32 sprcros2_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+ legacy_bg_draw(bitmap,cliprect);
+ legacy_obj_draw(bitmap,cliprect);
+ legacy_fg_draw(bitmap,cliprect);
+
+ return 0;
+}
+
+WRITE8_MEMBER(sprcros2_state::master_output_w)
+{
+ popmessage("%02x",data);
+ if(data & 0xbe)
+ printf("master 07 -> %02x\n",data);
+
+ membank("master_rombank")->set_entry((data&0x40)>>6);
+ m_master_nmi_enable = bool(data & 1);
+ m_master_irq_enable = bool(data & 8);
+// if(data & 0x80)
+// m_master_cpu->set_input_line(0,HOLD_LINE);
+}
+
+WRITE8_MEMBER(sprcros2_state::slave_output_w)
+{
+ if(data & 0xf6)
+ printf("slave 03 -> %02x\n",data);
+
+ m_slave_nmi_enable = bool(data & 1);
+ membank("slave_rombank")->set_entry((data&8)>>3);
+}
+
+WRITE8_MEMBER(sprcros2_state::bg_scrollx_w)
+{
+ m_bg_scrollx = data;
+}
+
+WRITE8_MEMBER(sprcros2_state::bg_scrolly_w)
+{
+ m_bg_scrolly = data;
+}
+
+static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, sprcros2_state )
+ AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("master", 0)
+ AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("master_rombank")
+ AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("fgvram")
+ AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("fgattr")
+ AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("sprram")
+ AM_RANGE(0xe840, 0xf7ff) AM_RAM
+ AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("shared_ram")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( master_io, AS_IO, 8, sprcros2_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write)
+ AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76489_device, write)
+ AM_RANGE(0x02, 0x02) AM_READ_PORT("EXTRA") AM_DEVWRITE("sn3", sn76489_device, write)
+ AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1")
+ AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW2")
+ AM_RANGE(0x07, 0x07) AM_WRITE(master_output_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, sprcros2_state )
+ AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("slave", 0)
+ AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("slave_rombank")
+ AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("bgvram")
+ AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("bgattr")
+ AM_RANGE(0xe800, 0xf7ff) AM_RAM
+ AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("shared_ram")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( slave_io, AS_IO, 8, sprcros2_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_WRITE(bg_scrollx_w)
+ AM_RANGE(0x01, 0x01) AM_WRITE(bg_scrolly_w)
+ AM_RANGE(0x03, 0x03) AM_WRITE(slave_output_w)
+ADDRESS_MAP_END
static INPUT_PORTS_START( sprcros2 )
+ PORT_START("P1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("P2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("EXTRA")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
+ PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x07, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_6C ) )
+ PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
+ PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_UNUSED ) //unused coinage bits
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
+static const gfx_layout sprite_layout =
+{
+ 32,32,
+ RGN_FRAC(1,3),
+ 3,
+ { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
+ { STEP8(0,1), STEP8(256,1), STEP8(512,1), STEP8(768,1) },
+ { STEP16(0,8), STEP16(128,8) },
+ 32*32
+};
+
+static const gfx_layout fg_layout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 2,
+ { 0, 4 },
+ { STEP4(64,1), STEP4(0,1) },
+ { STEP8(0,8) },
+ 8*8*2
+};
+
+static GFXDECODE_START( sprcros2 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, sprite_layout, 256, 32 )
+ GFXDECODE_ENTRY( "gfx3", 0, fg_layout, 512, 64 )
+GFXDECODE_END
+
+
+
+void sprcros2_state::machine_start()
+{
+ membank("master_rombank")->configure_entries(0, 2, memregion("master_bank")->base(), 0x2000);
+ membank("slave_rombank")->configure_entries(0, 2, memregion("slave_bank")->base(), 0x2000);
+
+}
+
+void sprcros2_state::machine_reset()
+{
+ m_master_nmi_enable = false;
+ m_slave_nmi_enable = false;
+}
+
+
+PALETTE_INIT_MEMBER(sprcros2_state, sprcros2)
+{
+ const UINT8 *color_prom = memregion("proms")->base();
+ int i;
+
+ /* create a lookup table for the palette */
+ for (i = 0; i < 0x20; i++)
+ {
+ int bit0, bit1, bit2;
+ int r, g, b;
+
+ /* red component */
+ bit0 = (color_prom[i] >> 0) & 0x01;
+ bit1 = (color_prom[i] >> 1) & 0x01;
+ bit2 = (color_prom[i] >> 2) & 0x01;
+ r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ /* green component */
+ bit0 = (color_prom[i] >> 3) & 0x01;
+ bit1 = (color_prom[i] >> 4) & 0x01;
+ bit2 = (color_prom[i] >> 5) & 0x01;
+ g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+
+ /* blue component */
+ bit0 = (color_prom[i] >> 6) & 0x01;
+ bit1 = (color_prom[i] >> 7) & 0x01;
+ b = 0x47 * bit0 + 0xb8 * bit1;
+ palette.set_pen_color(i,rgb_t(r,g,b));
+
+ palette.set_indirect_color(i, rgb_t(r, g, b));
+ }
+
+ /* color_prom now points to the beginning of the lookup table */
+ color_prom += 0x20;
+
+ /* bg */
+ for (i = 0; i < 0x100; i++)
+ {
+ UINT8 ctabentry = (color_prom[i] & 0x0f) | ((color_prom[i + 0x100] & 0x0f) << 4);
+ palette.set_pen_indirect(i, ctabentry);
+ }
+
+ /* sprites & fg */
+ for (i = 0x100; i < 0x300; i++)
+ {
+ UINT8 ctabentry = color_prom[i + 0x100];
+ palette.set_pen_indirect(i, ctabentry);
+ }
+}
+
+INTERRUPT_GEN_MEMBER(sprcros2_state::master_vblank_irq)
+{
+ if(m_master_nmi_enable == true)
+ device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+}
+
+INTERRUPT_GEN_MEMBER(sprcros2_state::slave_vblank_irq)
+{
+ if(m_slave_nmi_enable == true)
+ device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(sprcros2_state::master_scanline)
+{
+ int scanline = param;
+
+
+ if(scanline == 0 && m_master_irq_enable == true)
+ m_master_cpu->set_input_line(0, HOLD_LINE);
+}
static MACHINE_CONFIG_START( sprcros2, sprcros2_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("master_cpu",Z80,MAIN_CLOCK/4)
+ MCFG_CPU_PROGRAM_MAP(master_map)
+ MCFG_CPU_IO_MAP(master_io)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", sprcros2_state, master_vblank_irq)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sprcros2_state, master_scanline, "screen", 0, 1)
+
+ MCFG_CPU_ADD("slave_cpu",Z80,MAIN_CLOCK/4)
+ MCFG_CPU_PROGRAM_MAP(slave_map)
+ MCFG_CPU_IO_MAP(slave_io)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", sprcros2_state, slave_vblank_irq)
+
+ MCFG_QUANTUM_PERFECT_CPU("master_cpu")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(sprcros2_state, screen_update)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
+// MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 343, 0, 256, 262, 0, 256) // TODO: Wrong screen parameters
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", sprcros2)
+
+ MCFG_PALETTE_ADD("palette", 768)
+ MCFG_PALETTE_INDIRECT_ENTRIES(32)
+ MCFG_PALETTE_INIT_OWNER(sprcros2_state, sprcros2)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("sn1", SN76489, 10000000/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_SOUND_ADD("sn2", SN76489, 10000000/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ MCFG_SOUND_ADD("sn3", SN76489, 10000000/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
+
+/***************************************************************************
+
+ Machine driver(s)
+
+***************************************************************************/
+
+
+
ROM_START( sprcros2 )
- ROM_REGION( 0x14000, "master", 0 )
+ ROM_REGION( 0x0c000, "master", 0 )
ROM_LOAD( "scm-03.10g", 0x00000, 0x4000, CRC(b9757908) SHA1(d59cb2aac1b6268fc766306850f5711d4a12d897) )
ROM_LOAD( "scm-02.10j", 0x04000, 0x4000, CRC(849c5c87) SHA1(0e02c4990e371d6a290efa53301818e769648945) )
ROM_LOAD( "scm-01.10k", 0x08000, 0x4000, CRC(385a62de) SHA1(847bf9d97ab3fa8949d9198e4e509948a940d6aa) )
- ROM_LOAD( "scm-00.10l", 0x10000, 0x4000, CRC(13fa3684) SHA1(611b7a237e394f285dcc5beb027dacdbdd58a7a0) )
+
+ ROM_REGION( 0x4000, "master_bank", 0)
+ ROM_LOAD( "scm-00.10l", 0x00000, 0x4000, CRC(13fa3684) SHA1(611b7a237e394f285dcc5beb027dacdbdd58a7a0) )
- ROM_REGION( 0x14000, "slave", 0 )
+ ROM_REGION( 0xc000, "slave", 0 )
ROM_LOAD( "scs-30.5f", 0x00000, 0x4000, CRC(c0a40e41) SHA1(e74131b353855749258dffa45091c825ccdbf05a) )
ROM_LOAD( "scs-29.5h", 0x04000, 0x4000, CRC(83d49fa5) SHA1(7112110df2f382bbc0e651adcec975054a485b9b) )
ROM_LOAD( "scs-28.5j", 0x08000, 0x4000, CRC(480d351f) SHA1(d1b86f441ae0e58b30e0f089ab25de219d5f30e3) )
- ROM_LOAD( "scs-27.5k", 0x10000, 0x4000, CRC(2cf720cb) SHA1(a95c5b8c88371cf597bb7d80afeca6a48c7b74e6) )
+
+ ROM_REGION( 0x4000, "slave_bank", 0)
+ ROM_LOAD( "scs-27.5k", 0x00000, 0x4000, CRC(2cf720cb) SHA1(a95c5b8c88371cf597bb7d80afeca6a48c7b74e6) )
ROM_REGION( 0xc000, "gfx1", 0 ) //bg
- ROM_LOAD( "scs-26.4b", 0x0000, 0x4000, CRC(f958b56d) SHA1(a1973179d336d2ba57294155550515f2b8a33a09) )
+ ROM_LOAD( "scs-26.4b", 0x8000, 0x4000, CRC(f958b56d) SHA1(a1973179d336d2ba57294155550515f2b8a33a09) )
ROM_LOAD( "scs-25.4c", 0x4000, 0x4000, CRC(d6fd7ba5) SHA1(1c26c4c1655b2be9cb6103e75386cc2f0cf27fc5) )
- ROM_LOAD( "scs-24.4e", 0x8000, 0x4000, CRC(87783c36) SHA1(7102be795afcddd76b4d41823e95c65fe1ffbca0) )
+ ROM_LOAD( "scs-24.4e", 0x0000, 0x4000, CRC(87783c36) SHA1(7102be795afcddd76b4d41823e95c65fe1ffbca0) )
ROM_REGION( 0xc000, "gfx2", 0 )
- ROM_LOAD( "scm-23.5b", 0x0000, 0x4000, CRC(ab42f8e3) SHA1(8c2213b7c47a48e223fc3f7d323d16c0e4cd0457) )
+ ROM_LOAD( "scm-23.5b", 0x0000, 0x4000, CRC(ab42f8e3) SHA1(8c2213b7c47a48e223fc3f7d323d16c0e4cd0457) ) //sprites
ROM_LOAD( "scm-22.5e", 0x4000, 0x4000, CRC(0cad254c) SHA1(36e30e30b652b3a388a3c4a82251196f79368f59) )
ROM_LOAD( "scm-21.5g", 0x8000, 0x4000, CRC(b6b68998) SHA1(cc3c6d996beeedcc7e5199f10d65c5b1d3c6e666) )
@@ -87,33 +507,37 @@ ROM_START( sprcros2 )
ROM_LOAD( "scm-20.5k", 0x0000, 0x4000, CRC(67a099a6) SHA1(43981abdcaa0ff36183027a3c691ce2df7f06ec7) )
ROM_REGION( 0x0420, "proms", 0 )
- ROM_LOAD( "sc-64.6a", 0x0000, 0x0020, CRC(336dd1c0) SHA1(f0a0d2c13617fd84ee55c0cb96643761a8735147) )
- ROM_LOAD( "sc-63.3b", 0x0020, 0x0100, CRC(9034a059) SHA1(1801965b4f0f3e04ca4b3faf0ba3a27dbb008474) )
- ROM_LOAD( "sc-62.3a", 0x0120, 0x0100, CRC(3c78a14f) SHA1(8f9c196a3e18bdce2d4855bc285bd5bde534bf09) )
- ROM_LOAD( "sc-61.5a", 0x0220, 0x0100, CRC(2f71185d) SHA1(974fbb52285f01f4353e9acb1992dcd6fdefedcb) )
- ROM_LOAD( "sc-60.4k", 0x0320, 0x0100, CRC(d7a4e57d) SHA1(6db02ec6aa55b05422cb505e63c71e36b4b11b4a) )
+ ROM_LOAD( "sc-64.6a", 0x0000, 0x0020, CRC(336dd1c0) SHA1(f0a0d2c13617fd84ee55c0cb96643761a8735147) ) //palette
+ ROM_LOAD( "sc-63.3b", 0x0020, 0x0100, CRC(9034a059) SHA1(1801965b4f0f3e04ca4b3faf0ba3a27dbb008474) ) //bg clut lo nibble
+ ROM_LOAD( "sc-62.3a", 0x0120, 0x0100, CRC(3c78a14f) SHA1(8f9c196a3e18bdce2d4855bc285bd5bde534bf09) ) //bg clut hi nibble
+ ROM_LOAD( "sc-61.5a", 0x0220, 0x0100, CRC(2f71185d) SHA1(974fbb52285f01f4353e9acb1992dcd6fdefedcb) ) //sprite clut
+ ROM_LOAD( "sc-60.4k", 0x0320, 0x0100, CRC(d7a4e57d) SHA1(6db02ec6aa55b05422cb505e63c71e36b4b11b4a) ) //fg clut
ROM_END
ROM_START( sprcros2a )
- ROM_REGION( 0x14000, "master", 0 )
+ ROM_REGION( 0xc000, "master", 0 )
ROM_LOAD( "15.bin", 0x00000, 0x4000, CRC(b9d02558) SHA1(775404c6c7648d9dab02b496541739ea700cd481) )
ROM_LOAD( "scm-02.10j", 0x04000, 0x4000, CRC(849c5c87) SHA1(0e02c4990e371d6a290efa53301818e769648945) )
ROM_LOAD( "scm-01.10k", 0x08000, 0x4000, CRC(385a62de) SHA1(847bf9d97ab3fa8949d9198e4e509948a940d6aa) )
- ROM_LOAD( "scm-00.10l", 0x10000, 0x4000, CRC(13fa3684) SHA1(611b7a237e394f285dcc5beb027dacdbdd58a7a0) )
- ROM_REGION( 0x14000, "slave", 0 )
+ ROM_REGION( 0x4000, "master_bank", 0)
+ ROM_LOAD( "scm-00.10l", 0x00000, 0x4000, CRC(13fa3684) SHA1(611b7a237e394f285dcc5beb027dacdbdd58a7a0) )
+
+ ROM_REGION( 0xc000, "slave", 0 )
ROM_LOAD( "scs-30.5f", 0x00000, 0x4000, CRC(c0a40e41) SHA1(e74131b353855749258dffa45091c825ccdbf05a) )
ROM_LOAD( "scs-29.5h", 0x04000, 0x4000, CRC(83d49fa5) SHA1(7112110df2f382bbc0e651adcec975054a485b9b) )
ROM_LOAD( "scs-28.5j", 0x08000, 0x4000, CRC(480d351f) SHA1(d1b86f441ae0e58b30e0f089ab25de219d5f30e3) )
- ROM_LOAD( "scs-27.5k", 0x10000, 0x4000, CRC(2cf720cb) SHA1(a95c5b8c88371cf597bb7d80afeca6a48c7b74e6) )
+
+ ROM_REGION( 0x4000, "slave_bank", 0)
+ ROM_LOAD( "scs-27.5k", 0x00000, 0x4000, CRC(2cf720cb) SHA1(a95c5b8c88371cf597bb7d80afeca6a48c7b74e6) ) //banked into c000-dfff
ROM_REGION( 0xc000, "gfx1", 0 ) //bg
- ROM_LOAD( "scs-26.4b", 0x0000, 0x4000, CRC(f958b56d) SHA1(a1973179d336d2ba57294155550515f2b8a33a09) )
+ ROM_LOAD( "scs-26.4b", 0x8000, 0x4000, CRC(f958b56d) SHA1(a1973179d336d2ba57294155550515f2b8a33a09) )
ROM_LOAD( "scs-25.4c", 0x4000, 0x4000, CRC(d6fd7ba5) SHA1(1c26c4c1655b2be9cb6103e75386cc2f0cf27fc5) )
- ROM_LOAD( "scs-24.4e", 0x8000, 0x4000, CRC(87783c36) SHA1(7102be795afcddd76b4d41823e95c65fe1ffbca0) )
+ ROM_LOAD( "scs-24.4e", 0x0000, 0x4000, CRC(87783c36) SHA1(7102be795afcddd76b4d41823e95c65fe1ffbca0) )
ROM_REGION( 0xc000, "gfx2", 0 )
- ROM_LOAD( "scm-23.5b", 0x0000, 0x4000, CRC(ab42f8e3) SHA1(8c2213b7c47a48e223fc3f7d323d16c0e4cd0457) )
+ ROM_LOAD( "scm-23.5b", 0x0000, 0x4000, CRC(ab42f8e3) SHA1(8c2213b7c47a48e223fc3f7d323d16c0e4cd0457) ) //sprites
ROM_LOAD( "scm-22.5e", 0x4000, 0x4000, CRC(0cad254c) SHA1(36e30e30b652b3a388a3c4a82251196f79368f59) )
ROM_LOAD( "scm-21.5g", 0x8000, 0x4000, CRC(b6b68998) SHA1(cc3c6d996beeedcc7e5199f10d65c5b1d3c6e666) )
@@ -121,12 +545,12 @@ ROM_START( sprcros2a )
ROM_LOAD( "scm-20.5k", 0x0000, 0x4000, CRC(67a099a6) SHA1(43981abdcaa0ff36183027a3c691ce2df7f06ec7) )
ROM_REGION( 0x0420, "proms", 0 )
- ROM_LOAD( "sc-64.6a", 0x0000, 0x0020, CRC(336dd1c0) SHA1(f0a0d2c13617fd84ee55c0cb96643761a8735147) )
- ROM_LOAD( "sc-63.3b", 0x0020, 0x0100, CRC(9034a059) SHA1(1801965b4f0f3e04ca4b3faf0ba3a27dbb008474) )
- ROM_LOAD( "sc-62.3a", 0x0120, 0x0100, CRC(3c78a14f) SHA1(8f9c196a3e18bdce2d4855bc285bd5bde534bf09) )
- ROM_LOAD( "sc-61.5a", 0x0220, 0x0100, CRC(2f71185d) SHA1(974fbb52285f01f4353e9acb1992dcd6fdefedcb) )
- ROM_LOAD( "sc-60.4k", 0x0320, 0x0100, CRC(d7a4e57d) SHA1(6db02ec6aa55b05422cb505e63c71e36b4b11b4a) )
+ ROM_LOAD( "sc-64.6a", 0x0000, 0x0020, CRC(336dd1c0) SHA1(f0a0d2c13617fd84ee55c0cb96643761a8735147) ) //palette
+ ROM_LOAD( "sc-63.3b", 0x0020, 0x0100, CRC(9034a059) SHA1(1801965b4f0f3e04ca4b3faf0ba3a27dbb008474) ) //bg clut lo nibble
+ ROM_LOAD( "sc-62.3a", 0x0120, 0x0100, CRC(3c78a14f) SHA1(8f9c196a3e18bdce2d4855bc285bd5bde534bf09) ) //bg clut hi nibble
+ ROM_LOAD( "sc-61.5a", 0x0220, 0x0100, CRC(2f71185d) SHA1(974fbb52285f01f4353e9acb1992dcd6fdefedcb) ) //sprite clut
+ ROM_LOAD( "sc-60.4k", 0x0320, 0x0100, CRC(d7a4e57d) SHA1(6db02ec6aa55b05422cb505e63c71e36b4b11b4a) ) //fg clut
ROM_END
-GAME( 1986, sprcros2, 0, sprcros2, sprcros2, driver_device, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 1)", MACHINE_IS_SKELETON )
-GAME( 1986, sprcros2a,sprcros2, sprcros2, sprcros2, driver_device, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 2)", MACHINE_IS_SKELETON )
+GAME( 1986, sprcros2, 0, sprcros2, sprcros2, driver_device, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1986, sprcros2a,sprcros2, sprcros2, sprcros2, driver_device, 0, ROT0, "GM Shoji", "Super Cross II (Japan, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp
index 3ba893c7610..cf1aabfc0ed 100644
--- a/src/mame/drivers/tandy1t.cpp
+++ b/src/mame/drivers/tandy1t.cpp
@@ -36,35 +36,51 @@ Tandy 1000 (80386) variations:
#include "machine/pckeybrd.h"
#include "machine/nvram.h"
#include "machine/pc_fdc.h"
+#include "machine/bankdev.h"
#include "video/pc_t1t.h"
#include "sound/sn76496.h"
#include "cpu/i86/i86.h"
#include "cpu/i86/i286.h"
-#include "bus/isa/isa.h"
-#include "bus/isa/isa_cards.h"
#include "softlist.h"
+class t1000_mb_device : public pc_noppi_mb_device
+{
+public:
+ // construction/destruction
+ t1000_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : pc_noppi_mb_device(mconfig, tag, owner, clock) { }
+protected:
+ virtual void device_start() override;
+};
+
+void t1000_mb_device::device_start()
+{
+}
+
+const device_type T1000_MOTHERBOARD = &device_creator<t1000_mb_device>;
+
class tandy1000_state : public driver_device
{
public:
tandy1000_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_romcs0(*this, "romcs0")
- , m_romcs1(*this, "romcs1")
, m_biosbank(*this, "biosbank")
, m_keyboard(*this, "pc_keyboard")
- , m_mb(*this, "mb") { }
+ , m_mb(*this, "mb")
+ , m_video(*this, "pcvideo_t1000")
+ , m_ram(*this, RAM_TAG)
+ , m_vram_bank(0) { }
required_device<cpu_device> m_maincpu;
// Memory regions for the machines that support rom banking
- optional_memory_region m_romcs0;
- optional_memory_region m_romcs1;
- optional_memory_bank m_biosbank;
+ optional_device<address_map_bank_device> m_biosbank;
required_device<pc_keyboard_device> m_keyboard;
- required_device<pc_noppi_mb_device> m_mb;
+ required_device<t1000_mb_device> m_mb;
+ required_device<pcvideo_t1000_device> m_video;
+ required_device<ram_device> m_ram;
DECLARE_WRITE8_MEMBER ( pc_t1t_p37x_w );
DECLARE_READ8_MEMBER ( pc_t1t_p37x_r );
@@ -73,13 +89,18 @@ public:
DECLARE_READ8_MEMBER(tandy1000_pio_r);
DECLARE_READ8_MEMBER( tandy1000_bank_r );
DECLARE_WRITE8_MEMBER( tandy1000_bank_w );
+ DECLARE_WRITE8_MEMBER( nmi_vram_bank_w );
+ DECLARE_WRITE8_MEMBER( vram_bank_w );
+ DECLARE_READ8_MEMBER( vram_r );
+ DECLARE_WRITE8_MEMBER( vram_w );
+ DECLARE_WRITE8_MEMBER( devctrl_w );
+ DECLARE_READ8_MEMBER( unk_r );
int tandy1000_read_eeprom();
void tandy1000_write_eeprom(UINT8 data);
void tandy1000_set_bios_bank();
- DECLARE_DRIVER_INIT(t1000hx);
- DECLARE_DRIVER_INIT(t1000sl);
+ void machine_start() override;
DECLARE_MACHINE_RESET(tandy1000rl);
@@ -97,6 +118,7 @@ public:
UINT8 m_tandy_bios_bank; /* I/O port FFEAh */
UINT8 m_tandy_ppi_portb, m_tandy_ppi_portc;
+ UINT8 m_vram_bank;
};
/* tandy 1000 eeprom
@@ -294,39 +316,64 @@ READ8_MEMBER(tandy1000_state::tandy1000_pio_r)
return data;
}
+WRITE8_MEMBER( tandy1000_state::nmi_vram_bank_w )
+{
+ m_mb->nmi_enable_w(space, 0, data & 0x80);
+ vram_bank_w(space, 0, data & 0x1e);
+ m_video->disable_w((data & 1) ? ASSERT_LINE : CLEAR_LINE);
+}
-void tandy1000_state::tandy1000_set_bios_bank()
+WRITE8_MEMBER( tandy1000_state::vram_bank_w )
{
- UINT8 *p = nullptr;
+ m_vram_bank = (data >> 1) & 7;
+}
- assert( m_romcs0 != nullptr );
- assert( m_romcs1 != nullptr );
- assert( m_biosbank != nullptr );
+WRITE8_MEMBER( tandy1000_state::devctrl_w )
+{
+ m_video->disable_w((data & 4) ? ASSERT_LINE : CLEAR_LINE);
+}
+
+READ8_MEMBER( tandy1000_state::unk_r )
+{
+ return 0; // status port?
+}
+
+READ8_MEMBER( tandy1000_state::vram_r )
+{
+ UINT8 vram_base = (m_ram->size() >> 17) - 1;
+ if((m_vram_bank - vram_base) == (offset >> 17))
+ return m_ram->pointer()[offset & 0x1ffff];
+ return 0xff;
+}
+
+WRITE8_MEMBER( tandy1000_state::vram_w )
+{
+ UINT8 vram_base = (m_ram->size() >> 17) - 1;
+ if((m_vram_bank - vram_base) == (offset >> 17))
+ m_ram->pointer()[offset & 0x1ffff] = data;
+}
+
+void tandy1000_state::tandy1000_set_bios_bank()
+{
+ int bank;
if ( m_tandy_bios_bank & 0x10 )
{
- if ( m_tandy_bios_bank & 0x04 )
+ if (m_tandy_bios_bank & 0x04 )
{
- p = m_romcs0->base() + ( m_tandy_bios_bank & 0x03 ) * 0x10000;
+ bank = (m_tandy_bios_bank & 3) + 8;
}
else
{
- p = m_romcs1->base() + ( m_tandy_bios_bank & 0x03 ) * 0x10000;
+ bank = m_tandy_bios_bank & 3;
}
}
else
{
- if ( m_tandy_bios_bank & 0x08 )
- {
- p = m_romcs0->base() + ( m_tandy_bios_bank & 0x07 ) * 0x10000;
- }
- else
- {
- p = m_romcs1->base() + ( m_tandy_bios_bank & 0x07 ) * 0x10000;
- }
+ bank = m_tandy_bios_bank & 0x0f;
}
- m_biosbank->set_base( p );
+ m_biosbank->set_bank( bank );
}
MACHINE_RESET_MEMBER(tandy1000_state, tandy1000rl)
@@ -335,28 +382,18 @@ MACHINE_RESET_MEMBER(tandy1000_state, tandy1000rl)
tandy1000_set_bios_bank();
}
-DRIVER_INIT_MEMBER(tandy1000_state,t1000hx)
+void tandy1000_state::machine_start()
{
+ m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - (128*1024) - 1, &m_ram->pointer()[128*1024]);
+ if(m_maincpu->space(AS_PROGRAM).data_width() == 8)
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(m_ram->size() - (128*1024), 640*1024 - 1,
+ read8_delegate(FUNC(tandy1000_state::vram_r), this), write8_delegate(FUNC(tandy1000_state::vram_w), this));
+ else
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(m_ram->size() - (128*1024), 640*1024 - 1,
+ read8_delegate(FUNC(tandy1000_state::vram_r), this), write8_delegate(FUNC(tandy1000_state::vram_w), this), 0xffff);
machine().device<nvram_device>("nvram")->set_base(m_eeprom_ee, sizeof(m_eeprom_ee));
}
-
-DRIVER_INIT_MEMBER(tandy1000_state,t1000sl)
-{
- // Fix up memory region (highest address bit flipped??)
- UINT8 *rom = memregion("romcs0")->base();
-
- for( int i = 0; i < 0x40000; i++ )
- {
- UINT8 d = rom[0x40000 + i];
- rom[0x40000 + i] = rom[i];
- rom[i] = d;
- }
-
- DRIVER_INIT_NAME(t1000hx)();
-}
-
-
READ8_MEMBER( tandy1000_state::tandy1000_bank_r )
{
UINT8 data = 0xFF;
@@ -467,61 +504,64 @@ static INPUT_PORTS_START( tandy1t )
INPUT_PORTS_END
static ADDRESS_MAP_START(tandy1000_map, AS_PROGRAM, 8, tandy1000_state )
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xaffff) AM_RAM
- AM_RANGE(0xb0000, 0xb7fff) AM_NOP
- AM_RANGE(0xb8000, 0xbffff) AM_DEVREADWRITE("pcvideo_t1000", pcvideo_t1000_device, videoram_r, videoram_w);
- AM_RANGE(0xc0000, 0xc7fff) AM_NOP
- AM_RANGE(0xc8000, 0xc9fff) AM_ROM
- AM_RANGE(0xca000, 0xcffff) AM_NOP
- AM_RANGE(0xd0000, 0xeffff) AM_NOP
- AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_t1000:vram", address_map_bank_device, amap8)
+ AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(tandy1000_io, AS_IO, 8, tandy1000_state )
- AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r, tandy1000_pio_w)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r, tandy1000_pio_w)
+ AM_RANGE(0x00a0, 0x00a0) AM_WRITE(nmi_vram_bank_w)
AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", ncr7496_device, write)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", t1000_mb_device, map)
AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w)
- AM_RANGE(0x0378, 0x037f) AM_READWRITE(pc_t1t_p37x_r, pc_t1t_p37x_w)
+ AM_RANGE(0x0378, 0x037f) AM_READWRITE(pc_t1t_p37x_r, pc_t1t_p37x_w)
AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE("pcvideo_t1000", pcvideo_t1000_device, read, write)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(tandy1000_16_map, AS_PROGRAM, 16, tandy1000_state )
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xaffff) AM_RAM
- AM_RANGE(0xb0000, 0xb7fff) AM_NOP
- AM_RANGE(0xb8000, 0xbffff) AM_DEVREADWRITE8("pcvideo_t1000", pcvideo_t1000_device, videoram_r, videoram_w, 0xffff)
- AM_RANGE(0xc0000, 0xc7fff) AM_NOP
- AM_RANGE(0xc8000, 0xc9fff) AM_ROM
- AM_RANGE(0xca000, 0xcffff) AM_NOP
- AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("biosbank") /* Banked part of the BIOS */
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "romcs0", 0x70000 )
+static ADDRESS_MAP_START(tandy1000_bank_map, AS_PROGRAM, 16, tandy1000_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff)
+ AM_RANGE(0xe0000, 0xeffff) AM_DEVICE("biosbank", address_map_bank_device, amap16)
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "rom", 0x70000 )
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(biosbank_map, AS_0, 16, tandy1000_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("rom", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START(tandy1000_16_io, AS_IO, 16, tandy1000_state )
- AM_RANGE(0x0060, 0x0063) AM_READWRITE8(tandy1000_pio_r, tandy1000_pio_w, 0xffff)
- AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8("sn76496", ncr7496_device, write, 0xffff)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE8(tandy1000_pio_r, tandy1000_pio_w, 0xffff)
+ AM_RANGE(0x0064, 0x0065) AM_WRITE8(devctrl_w, 0xff00)
+ AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff)
+ AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8("sn76496", ncr7496_device, write, 0xffff)
+ AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", t1000_mb_device, map, 0xffff)
AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff)
- AM_RANGE(0x0378, 0x037f) AM_READWRITE8(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff)
+ AM_RANGE(0x0378, 0x037f) AM_READWRITE8(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff)
AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("pcvideo_t1000", pcvideo_t1000_device, read, write, 0xffff)
+ AM_RANGE(0xffe8, 0xffe9) AM_WRITE8(vram_bank_w, 0x00ff)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(tandy1000_16_bank_io, AS_IO, 16, tandy1000_state )
+static ADDRESS_MAP_START(tandy1000_bank_io, AS_IO, 16, tandy1000_state )
+ ADDRESS_MAP_UNMAP_HIGH
AM_IMPORT_FROM(tandy1000_16_io)
AM_RANGE(0xffea, 0xffeb) AM_READWRITE8(tandy1000_bank_r, tandy1000_bank_w, 0xffff)
ADDRESS_MAP_END
+static ADDRESS_MAP_START(tandy1000tx_io, AS_IO, 16, tandy1000_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE8(nmi_vram_bank_w, 0x00ff)
+ AM_IMPORT_FROM(tandy1000_16_io)
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START(tandy1000_286_map, AS_PROGRAM, 16, tandy1000_state )
+ ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x000fffff)
- AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
- AM_RANGE(0xa0000, 0xaffff) AM_RAM
- AM_RANGE(0xb0000, 0xb7fff) AM_NOP
- AM_RANGE(0xb8000, 0xbffff) AM_DEVREADWRITE8("pcvideo_t1000", pcvideo_t1000_device, videoram_r, videoram_w, 0xffff)
- AM_RANGE(0xc0000, 0xc7fff) AM_NOP
- AM_RANGE(0xc8000, 0xc9fff) AM_ROM
- AM_RANGE(0xca000, 0xcffff) AM_NOP
- AM_RANGE(0xe0000, 0xeffff) AM_NOP
- AM_RANGE(0xf8000, 0xfffff) AM_ROM
+ AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff)
+ AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0)
ADDRESS_MAP_END
static const gfx_layout t1000_charlayout =
@@ -555,7 +595,8 @@ static GFXDECODE_START( t1000 )
GFXDECODE_END
static MACHINE_CONFIG_FRAGMENT(tandy1000_common)
- MCFG_PCNOPPI_MOTHERBOARD_ADD("mb", "maincpu")
+ MCFG_DEVICE_ADD("mb", T1000_MOTHERBOARD, 0)
+ t1000_mb_device::static_set_cputag(*device, "maincpu");
/* video hardware */
MCFG_PCVIDEO_T1000_ADD("pcvideo_t1000")
@@ -591,6 +632,8 @@ static MACHINE_CONFIG_START( t1000hx, tandy1000_state )
// plus cards are isa with a nonstandard conntector
MCFG_ISA8_SLOT_ADD("mb:isa", "plus1", pc_isa8_cards, nullptr, false)
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_EXTRA_OPTIONS("256K, 384K")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( t1000sx, t1000hx )
@@ -604,21 +647,31 @@ static MACHINE_CONFIG_DERIVED( t1000sx, t1000hx )
/* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","ibm5150")
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_EXTRA_OPTIONS("384K")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( t1000_16, tandy1000_state )
+static MACHINE_CONFIG_START( t1000rl, tandy1000_state )
MCFG_CPU_ADD("maincpu", I8086, XTAL_28_63636MHz / 3)
- MCFG_CPU_PROGRAM_MAP(tandy1000_16_map)
- MCFG_CPU_IO_MAP(tandy1000_16_bank_io)
+ MCFG_CPU_PROGRAM_MAP(tandy1000_bank_map)
+ MCFG_CPU_IO_MAP(tandy1000_bank_io)
MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259", pic8259_device, inta_cb)
MCFG_FRAGMENT_ADD(tandy1000_common)
- MCFG_MACHINE_RESET_OVERRIDE(tandy1000_state,tandy1000rl)
+ MCFG_DEVICE_ADD("biosbank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(biosbank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
+ MCFG_MACHINE_RESET_OVERRIDE(tandy1000_state,tandy1000rl)
+ MCFG_DEVICE_MODIFY(RAM_TAG)
+ MCFG_RAM_EXTRA_OPTIONS("384K")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( t1000_16_8, t1000_16 )
+static MACHINE_CONFIG_DERIVED( t1000sl2, t1000rl )
MCFG_CPU_MODIFY( "maincpu" )
MCFG_CPU_CLOCK( XTAL_24MHz / 3 )
@@ -628,7 +681,7 @@ static MACHINE_CONFIG_DERIVED( t1000_16_8, t1000_16 )
MCFG_ISA8_SLOT_ADD("mb:isa", "isa4", pc_isa8_cards, nullptr, false)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( t1000_286, tandy1000_state )
+static MACHINE_CONFIG_START( t1000tl, tandy1000_state )
MCFG_CPU_ADD("maincpu", I80286, XTAL_28_63636MHz / 2)
MCFG_CPU_PROGRAM_MAP(tandy1000_286_map)
MCFG_CPU_IO_MAP(tandy1000_16_io)
@@ -643,14 +696,19 @@ static MACHINE_CONFIG_START( t1000_286, tandy1000_state )
MCFG_ISA8_SLOT_ADD("mb:isa", "isa5", pc_isa8_cards, nullptr, false)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( t1000tx, t1000tl )
+ MCFG_CPU_MODIFY( "maincpu" )
+ MCFG_CPU_IO_MAP(tandy1000tx_io)
+MACHINE_CONFIG_END
+
#ifdef UNUSED_DEFINITION
ROM_START( t1000 )
// Schematics displays 2 32KB ROMs at U9 and U10
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x20000,"bios", 0)
ROM_SYSTEM_BIOS( 0, "v010000", "v010000" )
- ROMX_LOAD("v010000.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(1))
+ ROMX_LOAD("v010000.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(1))
ROM_SYSTEM_BIOS( 1, "v010100", "v010100" )
- ROMX_LOAD("v010100.f0", 0xf0000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9), ROM_BIOS(2))
+ ROMX_LOAD("v010100.f0", 0x10000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9), ROM_BIOS(2))
// Part of video array at u76?
ROM_REGION(0x08000,"gfx1", 0)
@@ -658,21 +716,21 @@ ROM_START( t1000 )
ROM_END
ROM_START( t1000a )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x20000,"bios", 0)
// partlist says it has 1 128kbyte rom
- ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
- ROM_LOAD("v010100.f0", 0xf0000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9))
+ ROM_LOAD("t1000hx.e0", 0x00000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
+ ROM_LOAD("v010100.f0", 0x10000, 0x10000, CRC(b6760881) SHA1(8275e4c48ac09cf36685db227434ca438aebe0b9))
ROM_REGION(0x08000,"gfx1", 0)
ROM_LOAD("8079027.u25", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450)) // TODO: Verify location
ROM_END
ROM_START( t1000ex )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x20000,"bios", 0)
// partlist says it has 1 128kb rom, schematics list a 32k x 8 rom
// "8040328.u17"
- ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
- ROM_LOAD("v010200.f0", 0xf0000, 0x10000, CRC(0e016ecf) SHA1(2f5ac8921b7cba56b02122ef772f5f11bbf6d8a2))
+ ROM_LOAD("t1000hx.e0", 0x00000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
+ ROM_LOAD("v010200.f0", 0x10000, 0x10000, CRC(0e016ecf) SHA1(2f5ac8921b7cba56b02122ef772f5f11bbf6d8a2))
// TODO: Add dump of the 8048 at u8 if it ever gets dumped
ROM_REGION(0x400, "kbdc", 0)
@@ -685,22 +743,22 @@ ROM_END
// The T1000SL and T1000SL/2 only differ in amount of RAM installed and BIOS version (SL/2 has v01.04.04)
ROM_START( t1000sl )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x20000,"bios", 0)
// 8076312.hu1 - most likely v01.04.00
// 8075312.hu2
// partlist says it has 1 128kbyte rom
- ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
+ ROM_LOAD("t1000hx.e0", 0x00000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
ROM_SYSTEM_BIOS( 0, "v010400", "v010400" )
- ROMX_LOAD("v010400.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(1) )
+ ROMX_LOAD("v010400.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 1, "v010401", "v010401" )
- ROMX_LOAD("v010401.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(2) )
+ ROMX_LOAD("v010401.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(2) )
ROM_SYSTEM_BIOS( 2, "v010402", "v010402" )
- ROMX_LOAD("v010402.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(3) )
+ ROMX_LOAD("v010402.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(3) )
ROM_SYSTEM_BIOS( 3, "v020001", "v020001" )
- ROMX_LOAD("v020001.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(4) )
+ ROMX_LOAD("v020001.f0", 0x10000, 0x10000, NO_DUMP, ROM_BIOS(4) )
ROM_REGION(0x08000,"gfx1", 0)
ROM_LOAD("8079027.u25", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450))
@@ -708,7 +766,7 @@ ROM_END
ROM_START( t1000tl )
- ROM_REGIoN(0x100000, "maincpu", ROMREGION_ERASE00)
+ ROM_REGIoN(0x10000, "bios", ROMREGION_ERASE00)
ROM_REGION(0x80000, "romcs0", 0)
// These 2 sets most likely have the same contents
@@ -731,8 +789,8 @@ ROM_END
#endif
ROM_START( t1000hx )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("v020000.u12", 0xe0000, 0x20000, CRC(6f3acd80) SHA1(976af8c04c3f6fde14d7047f6521d302bdc2d017)) // TODO: Rom label
+ ROM_REGION(0x20000,"bios", 0)
+ ROM_LOAD("v020000.u12", 0x00000, 0x20000, CRC(6f3acd80) SHA1(976af8c04c3f6fde14d7047f6521d302bdc2d017)) // TODO: Rom label
// TODO: Add dump of the 8048 at u9 if it ever gets dumped
ROM_REGION(0x400, "kbdc", 0)
@@ -743,8 +801,8 @@ ROM_START( t1000hx )
ROM_END
ROM_START( t1000sx )
- ROM_REGION(0x100000,"maincpu", 0)
- ROM_LOAD("8040328.u41", 0xf8000, 0x8000, CRC(4e2b9f0b) SHA1(e79a9ed9e885736e30d9b135557f0e596ce5a70b))
+ ROM_REGION(0x20000,"bios", 0)
+ ROM_LOAD("8040328.u41", 0x18000, 0x8000, CRC(4e2b9f0b) SHA1(e79a9ed9e885736e30d9b135557f0e596ce5a70b))
// No character rom is listed in the schematics?
// But disabling it results in no text being printed
@@ -755,10 +813,10 @@ ROM_END
ROM_START( t1000tx )
- ROM_REGION(0x100000,"maincpu", 0)
+ ROM_REGION(0x20000,"bios", 0)
// There should be 2 32KBx8 ROMs, one for odd at u38, one for even at u39
// The machine already boots up with just this one rom
- ROM_LOAD("t1000tx.bin", 0xf8000, 0x8000, BAD_DUMP CRC(9b34765c) SHA1(0b07e87f6843393f7d4ca4634b832b0c0bec304e))
+ ROM_LOAD("t1000tx.bin", 0x18000, 0x8000, BAD_DUMP CRC(9b34765c) SHA1(0b07e87f6843393f7d4ca4634b832b0c0bec304e))
// No character rom is listed in the schematics?
// It is most likely part of the big blue chip at u36
@@ -768,14 +826,11 @@ ROM_END
ROM_START( t1000rl )
- ROM_REGION(0x100000,"maincpu", ROMREGION_ERASE00)
-
// bankable ROM regions
- ROM_REGION(0x80000, "romcs0", 0)
+ ROM_REGION(0x80000, "rom", 0)
/* v2.0.0.1 */
/* Rom is labeled "(C) TANDY CORP. 1990 // 8079073 // LH534G70 JAPAN // 9034 D" */
ROM_LOAD("8079073.u23", 0x00000, 0x80000, CRC(6fab50f7) SHA1(2ccc02bee4c250dc1b7c17faef2590bc158860b0) )
- ROM_REGION(0x80000, "romcs1", ROMREGION_ERASEFF)
ROM_REGION(0x08000,"gfx1", 0)
/* Character rom located at U3 w/label "8079027 // NCR // 609-2495004 // F841030 A9025" */
@@ -784,14 +839,14 @@ ROM_END
ROM_START( t1000sl2 )
- ROM_REGION(0x100000,"maincpu", ROMREGION_ERASE00)
-
// bankable ROM regions
- ROM_REGION(0x80000, "romcs0", 0)
+ ROM_REGION(0x80000, "rom", 0)
// v01.04.04 BIOS
- ROM_LOAD16_BYTE("8079047.hu1", 0x00000, 0x40000, CRC(c773ec0e) SHA1(7deb71f14c2c418400b639d60066ab61b7e9df32))
- ROM_LOAD16_BYTE("8079048.hu2", 0x00001, 0x40000, CRC(0f3e6586) SHA1(10f1a7204f69b82a18bc94a3010c9660aec0c802))
- ROM_REGION(0x80000, "romcs1", ROMREGION_ERASEFF)
+ // Fix up memory region (highest address bit flipped??)
+ ROM_LOAD16_BYTE("8079047.hu1", 0x40000, 0x20000, CRC(c773ec0e) SHA1(7deb71f14c2c418400b639d60066ab61b7e9df32))
+ ROM_CONTINUE(0x00000, 0x20000)
+ ROM_LOAD16_BYTE("8079048.hu2", 0x40001, 0x20000, CRC(0f3e6586) SHA1(10f1a7204f69b82a18bc94a3010c9660aec0c802))
+ ROM_CONTINUE(0x00001, 0x20000)
ROM_REGION(0x08000,"gfx1", 0)
ROM_LOAD("8079027.u25", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450))
@@ -802,8 +857,8 @@ ROM_END
ROM_START( t1000tl2 )
- ROM_REGION(0x100000, "maincpu", 0)
- ROM_LOAD( "t10000tl2.bin", 0xf0000, 0x10000, CRC(e288f12c) SHA1(9d54ccf773cd7202c9906323f1b5a68b1b3a3a67))
+ ROM_REGION(0x20000, "bios", 0)
+ ROM_LOAD( "t10000tl2.bin", 0x10000, 0x10000, CRC(e288f12c) SHA1(9d54ccf773cd7202c9906323f1b5a68b1b3a3a67))
ROM_REGION(0x08000,"gfx1", 0)
ROM_LOAD("8079027.u24", 0x00000, 0x04000, CRC(33d64a11) SHA1(b63da2a656b6c0a8a32f2be8bdcb51aed983a450)) // TODO: Verify location
@@ -812,9 +867,9 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
// tandy 1000
-COMP( 1987, t1000hx, ibm5150, 0, t1000hx, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 HX", 0)
-COMP( 1987, t1000sx, ibm5150, 0, t1000sx, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 SX", 0)
-COMP( 1987, t1000tx, ibm5150, 0, t1000_286, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 TX", 0)
-COMP( 1989, t1000rl, ibm5150, 0, t1000_16, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 RL", 0)
-COMP( 1989, t1000tl2, ibm5150, 0, t1000_286, tandy1t, tandy1000_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 TL/2", 0)
-COMP( 1988, t1000sl2, ibm5150, 0, t1000_16_8, tandy1t, tandy1000_state, t1000sl, "Tandy Radio Shack", "Tandy 1000 SL/2", 0)
+COMP( 1987, t1000hx, ibm5150, 0, t1000hx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 HX", 0)
+COMP( 1987, t1000sx, ibm5150, 0, t1000sx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SX", 0)
+COMP( 1987, t1000tx, ibm5150, 0, t1000tx, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TX", 0)
+COMP( 1989, t1000rl, ibm5150, 0, t1000rl, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 RL", 0)
+COMP( 1989, t1000tl2, ibm5150, 0, t1000tl, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 TL/2", 0)
+COMP( 1988, t1000sl2, ibm5150, 0, t1000sl2, tandy1t, driver_device, 0, "Tandy Radio Shack", "Tandy 1000 SL/2", 0)
diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp
index c898f8d4bde..4f8a41ef80a 100644
--- a/src/mame/drivers/trackfld.cpp
+++ b/src/mame/drivers/trackfld.cpp
@@ -1266,6 +1266,52 @@ ROM_START( hyprolymba )
ROM_LOAD( "pal16l8.e6", 0x0200, 0x0104, CRC(122f23e6) SHA1(d178510843a46f043ecafaa44d95bb590ad67fb0) )
ROM_END
+ROM_START( hipoly )
+ /* These ROM's are located on the CPU/Video Board */
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code + 64k for decrypted opcodes */
+ ROM_LOAD( "2.1a", 0x6000, 0x2000, CRC(82257fb7) SHA1(4a5038292e582d5c3b5f2d82b01c57ccb24f3095) ) // only one byte of difference with hyprolymba
+ ROM_LOAD( "2.2a", 0x8000, 0x2000, CRC(15b83099) SHA1(79827590d74f20c9a95723e06b05af2b15c34f5f) ) // ok
+ ROM_LOAD( "2.4a", 0xa000, 0x2000, CRC(93a32a97) SHA1(4fbb2fcdf9bc7a3d273dbc27b8157f163ff9bf11) ) // too different... maybe a bad dump?
+ ROM_LOAD( "2.5a", 0xc000, 0x2000, CRC(d099b1e8) SHA1(0472991ad6caef41ec6b8ec8bf3d9d07584a57cc) ) // ok
+ ROM_LOAD( "2.7a", 0xe000, 0x2000, CRC(974ff815) SHA1(11512df2008a79ba44bbb84bd70885f187113211) ) // ok
+
+ /* These ROM's are located on the Sound Board */
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "1.2c", 0x0000, 0x2000, CRC(95bf79b6) SHA1(ea9135acd7ad162c19c5cdde356e69792d61b675) )
+
+ /* These ROM's are located on the Sound Board */
+ ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for the 6802 which plays ADPCM samples */
+ ROM_LOAD( "1.11d", 0x8000, 0x2000, CRC(102d3a78) SHA1(0587e87c579f6d333fb1793d20eb7a3c769fbd11) )
+ ROM_LOAD( "1.10d", 0xa000, 0x2000, CRC(e9919365) SHA1(bd11d6e3ee2c6e698159c2768e315389d666107f) )
+ ROM_LOAD( "1.11c", 0xc000, 0x2000, CRC(c3ec42e1) SHA1(048a95726c4f031552e629c3788952c1bc5e7251) )
+ ROM_LOAD( "1.10c", 0xe000, 0x2000, CRC(76998389) SHA1(499189b0e20296af88712199b93b958655083608) )
+
+ /* These ROM's are located on the CPU/Video Board */
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD( "2.18a", 0x0000, 0x2000, CRC(8d28864f) SHA1(b6827592095543c92384a7e8b817a741d249cff8) )
+ ROM_LOAD( "2.19a", 0x2000, 0x2000, CRC(800ff1f1) SHA1(33d73b18903e3e6bfb30f1a06db4b8105d4040d8) )
+ ROM_LOAD( "2.21a", 0x4000, 0x2000, CRC(d9faf183) SHA1(4448b6242790783d37acf50704d597af5878c2ab) )
+ ROM_LOAD( "2.22a", 0x6000, 0x2000, CRC(5886c802) SHA1(884a12a8f63600da4f23b29be6dbaacef37add20) )
+
+ /* These ROM's are located on the CPU/Video Board */
+ ROM_REGION( 0x6000, "gfx2", 0 )
+ ROM_LOAD( "2.22h", 0x0000, 0x2000, CRC(6c107a9c) SHA1(139e99b126aad16223573ef987adc94d96d17857) )
+ ROM_LOAD( "2.21h", 0x2000, 0x2000, CRC(21847e56) SHA1(dcc4f6e85e7125a6dfa2de9874f6adf8382e019c) )
+ ROM_LOAD( "2.19h", 0x4000, 0x2000, CRC(c2166a5c) SHA1(5ba25900e653ce4edcf35f1fbce758a327a715ce) )
+
+ /* These PROM's are located on the CPU/Video Board, borrowed from other sets */
+ ROM_REGION( 0x0220, "proms", 0 )
+ ROM_LOAD( "361b16.e1", 0x0000, 0x0020, CRC(d55f30b5) SHA1(4d6a851f4886778307f75771645078b97ad55f5f) ) /* palette */
+ ROM_LOAD( "361b17.b15", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */
+ ROM_LOAD( "361b18.f22", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */
+
+ /* These PAL's are located on the CPU/Video Board */
+ ROM_REGION( 0x0400, "plds", 0 )
+ ROM_LOAD( "pal16l8.e4", 0x0000, 0x0104, NO_DUMP )
+ ROM_LOAD( "pal16l8.e6", 0x0200, 0x0104, NO_DUMP )
+ROM_END
+
+
ROM_START( atlantol )
ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code + 64k for decrypted opcodes */
ROM_LOAD( "atl37", 0x00000, 0x10000, CRC(aca8da51) SHA1(50e96fd8496ed32e11eb43bcbfd468ce566caa47) )
@@ -1556,6 +1602,7 @@ GAME( 1983, trackfldc, trackfld, trackfld, trackfld, trackfld_state, trackfld, R
GAME( 1983, hyprolym, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Hyper Olympic", MACHINE_SUPPORTS_SAVE )
GAME( 1983, hyprolymb, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1983, hyprolymba,trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, hipoly, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hipoly (bootleg of Hyper Olympic)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
GAME( 1996, atlantol, trackfld, atlantol, atlantol, trackfld_state, atlantol, ROT0, "bootleg", "Atlant Olimpic", MACHINE_SUPPORTS_SAVE )
GAME( 1982, trackfldnz,trackfld, trackfld, trackfld, trackfld_state, trackfldnz,ROT0, "bootleg? (Goldberg Enterprizes Inc.)", "Track & Field (NZ bootleg?)", MACHINE_SUPPORTS_SAVE) // bootleg of the Centuri version
diff --git a/src/mame/includes/genpc.h b/src/mame/includes/genpc.h
index b3353de35d6..13f00e8eac2 100644
--- a/src/mame/includes/genpc.h
+++ b/src/mame/includes/genpc.h
@@ -36,12 +36,12 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
+
+ DECLARE_ADDRESS_MAP(map, 8);
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
-
- void install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler);
public:
required_device<cpu_device> m_maincpu;
required_device<pic8259_device> m_pic8259;
@@ -76,12 +76,12 @@ public:
UINT8 m_ppi_shift_enable;
// interface to the keyboard
- virtual DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
+ DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
DECLARE_WRITE_LINE_MEMBER( keyboard_data_w );
- virtual DECLARE_READ8_MEMBER ( pc_ppi_porta_r );
- virtual DECLARE_READ8_MEMBER ( pc_ppi_portc_r );
- virtual DECLARE_WRITE8_MEMBER( pc_ppi_portb_w );
+ DECLARE_READ8_MEMBER ( pc_ppi_porta_r );
+ DECLARE_READ8_MEMBER ( pc_ppi_portc_r );
+ DECLARE_WRITE8_MEMBER( pc_ppi_portb_w );
DECLARE_WRITE_LINE_MEMBER( pc_pit8253_out1_changed );
DECLARE_WRITE_LINE_MEMBER( pc_pit8253_out2_changed );
@@ -104,7 +104,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( pc_speaker_set_spkrdata );
- DECLARE_READ8_MEMBER(pc_page_r);
DECLARE_WRITE8_MEMBER(pc_page_w);
DECLARE_WRITE8_MEMBER(nmi_enable_w);
@@ -133,18 +132,16 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
- virtual DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ) override;
+ DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
protected:
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
required_device<cassette_image_device> m_cassette;
public:
- virtual DECLARE_READ8_MEMBER ( pc_ppi_porta_r ) override;
- virtual DECLARE_READ8_MEMBER ( pc_ppi_portc_r ) override;
- virtual DECLARE_WRITE8_MEMBER( pc_ppi_portb_w ) override;
+ DECLARE_READ8_MEMBER ( pc_ppi_porta_r );
+ DECLARE_READ8_MEMBER ( pc_ppi_portc_r );
+ DECLARE_WRITE8_MEMBER( pc_ppi_portb_w );
};
@@ -165,17 +162,13 @@ public:
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
-
-protected:
- // device-level overrides
virtual void device_start() override;
- virtual void device_reset() override;
public:
- virtual DECLARE_READ8_MEMBER ( pc_ppi_portc_r ) override;
- virtual DECLARE_WRITE8_MEMBER( pc_ppi_portb_w ) override;
+ DECLARE_READ8_MEMBER ( pc_ppi_portc_r );
+ DECLARE_WRITE8_MEMBER( pc_ppi_portb_w );
- virtual DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w ) override;
+ DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
};
extern const device_type EC1841_MOTHERBOARD;
@@ -190,11 +183,11 @@ public:
// construction/destruction
pc_noppi_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ DECLARE_ADDRESS_MAP(map, 8);
+
virtual machine_config_constructor device_mconfig_additions() const override;
virtual ioport_constructor device_input_ports() const override;
protected:
- // device-level overrides
- void device_start() override;
};
extern const device_type PCNOPPI_MOTHERBOARD;
diff --git a/src/mame/includes/poisk1.h b/src/mame/includes/poisk1.h
deleted file mode 100644
index 57a24f0c052..00000000000
--- a/src/mame/includes/poisk1.h
+++ /dev/null
@@ -1,101 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sergey Svishchev
-/*****************************************************************************
- *
- * includes/poisk1.h
- *
- ****************************************************************************/
-
-#ifndef POISK1_H_
-#define POISK1_H_
-
-#include "imagedev/cassette.h"
-#include "machine/i8255.h"
-#include "bus/isa/isa.h"
-#include "machine/pic8259.h"
-#include "machine/pit8253.h"
-#include "machine/ram.h"
-#include "bus/isa/xsu_cards.h"
-#include "sound/speaker.h"
-
-#define POISK1_UPDATE_ROW(name) \
- void name(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *videoram, UINT16 ma, UINT8 ra, UINT8 stride)
-
-class p1_state : public driver_device
-{
-public:
- p1_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_pic8259(*this, "pic8259"),
- m_pit8253(*this, "pit8253"),
- m_ppi8255n1(*this, "ppi8255n1"),
- m_ppi8255n2(*this, "ppi8255n2"),
- m_isabus(*this, "isa"),
- m_speaker(*this, "speaker"),
- m_cassette(*this, "cassette"),
- m_ram(*this, RAM_TAG),
- m_palette(*this, "palette") { }
-
- required_device<cpu_device> m_maincpu;
- required_device<pic8259_device> m_pic8259;
- required_device<pit8253_device> m_pit8253;
- required_device<i8255_device> m_ppi8255n1;
- required_device<i8255_device> m_ppi8255n2;
- required_device<isa8_device> m_isabus;
- required_device<speaker_sound_device> m_speaker;
- required_device<cassette_image_device> m_cassette;
- required_device<ram_device> m_ram;
-
- DECLARE_DRIVER_INIT(poisk1);
- DECLARE_MACHINE_START(poisk1);
- DECLARE_MACHINE_RESET(poisk1);
-
- DECLARE_PALETTE_INIT(p1);
- virtual void video_start() override;
- UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- void set_palette_luts();
- POISK1_UPDATE_ROW(cga_gfx_2bpp_update_row);
- POISK1_UPDATE_ROW(cga_gfx_1bpp_update_row);
- POISK1_UPDATE_ROW(poisk1_gfx_1bpp_update_row);
-
- DECLARE_WRITE_LINE_MEMBER(p1_pit8253_out2_changed);
- DECLARE_WRITE_LINE_MEMBER(p1_speaker_set_spkrdata);
- UINT8 m_p1_spkrdata;
- UINT8 m_p1_input;
-
- UINT8 m_kbpoll_mask;
-
- struct
- {
- UINT8 trap[4];
- std::unique_ptr<UINT8[]> videoram_base;
- UINT8 *videoram;
- UINT8 mode_control_6a;
- UINT8 color_select_68;
- UINT8 palette_lut_2bpp[4];
- int stride;
- void *update_row(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *videoram, UINT16 ma, UINT8 ra, UINT8 stride);
- } m_video;
-
- DECLARE_READ8_MEMBER(p1_trap_r);
- DECLARE_WRITE8_MEMBER(p1_trap_w);
- DECLARE_READ8_MEMBER(p1_cga_r);
- DECLARE_WRITE8_MEMBER(p1_cga_w);
- DECLARE_WRITE8_MEMBER(p1_vram_w);
-
- DECLARE_READ8_MEMBER(p1_ppi_r);
- DECLARE_WRITE8_MEMBER(p1_ppi_w);
- DECLARE_WRITE8_MEMBER(p1_ppi_porta_w);
- DECLARE_READ8_MEMBER(p1_ppi_porta_r);
- DECLARE_READ8_MEMBER(p1_ppi_portb_r);
- DECLARE_READ8_MEMBER(p1_ppi_portc_r);
- DECLARE_WRITE8_MEMBER(p1_ppi_portc_w);
- DECLARE_WRITE8_MEMBER(p1_ppi2_porta_w);
- DECLARE_WRITE8_MEMBER(p1_ppi2_portb_w);
- DECLARE_READ8_MEMBER(p1_ppi2_portc_r);
- required_device<palette_device> m_palette;
- const char *m_cputag;
-};
-
-#endif /* POISK1_H_ */
diff --git a/src/mame/machine/genpc.cpp b/src/mame/machine/genpc.cpp
index 44dbcd00d20..a749180fd3a 100644
--- a/src/mame/machine/genpc.cpp
+++ b/src/mame/machine/genpc.cpp
@@ -36,12 +36,6 @@
*
*************************************************************************/
-READ8_MEMBER( ibm5160_mb_device::pc_page_r)
-{
- return 0xff;
-}
-
-
WRITE8_MEMBER( ibm5160_mb_device::pc_page_w)
{
switch(offset % 4)
@@ -528,24 +522,14 @@ ibm5160_mb_device::ibm5160_mb_device(const machine_config &mconfig, const char *
{
}
-void ibm5160_mb_device::install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler)
-{
- int buswidth = m_maincpu->space_config(AS_IO)->m_databus_width;
- switch(buswidth)
- {
- case 8:
- if(!rhandler.isnull()) m_maincpu->space(AS_IO).install_read_handler(start, end, mask, mirror, rhandler, 0);
- if(!whandler.isnull()) m_maincpu->space(AS_IO).install_write_handler(start, end, mask, mirror, whandler, 0);
- break;
- case 16:
- if(!rhandler.isnull()) m_maincpu->space(AS_IO).install_read_handler(start, end, mask, mirror, rhandler, 0xffff);
- if(!whandler.isnull()) m_maincpu->space(AS_IO).install_write_handler(start, end, mask, mirror, whandler, 0xffff);
- break;
- default:
- fatalerror("IBM5160_MOTHERBOARD: Bus width %d not supported\n", buswidth);
- }
-}
-
+DEVICE_ADDRESS_MAP_START( map, 8, ibm5160_mb_device )
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237", am9517a_device, read, write)
+ AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
+ AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+ AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x0080, 0x008f) AM_WRITE(pc_page_w)
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w)
+ADDRESS_MAP_END
//-------------------------------------------------
// device_start - device-specific startup
@@ -553,15 +537,9 @@ void ibm5160_mb_device::install_device(offs_t start, offs_t end, offs_t mask, of
void ibm5160_mb_device::device_start()
{
- install_device(0x0000, 0x000f, 0, 0, read8_delegate(FUNC(am9517a_device::read), (am9517a_device*)m_dma8237), write8_delegate(FUNC(am9517a_device::write), (am9517a_device*)m_dma8237) );
- install_device(0x0020, 0x0021, 0, 0, read8_delegate(FUNC(pic8259_device::read), (pic8259_device*)m_pic8259), write8_delegate(FUNC(pic8259_device::write), (pic8259_device*)m_pic8259) );
- install_device(0x0040, 0x0043, 0, 0, read8_delegate(FUNC(pit8253_device::read), (pit8253_device*)m_pit8253), write8_delegate(FUNC(pit8253_device::write), (pit8253_device*)m_pit8253) );
- install_device(0x0060, 0x0063, 0, 0, read8_delegate(FUNC(i8255_device::read), (i8255_device*)m_ppi8255), write8_delegate(FUNC(i8255_device::write), (i8255_device*)m_ppi8255) );
- install_device(0x0080, 0x0087, 0, 0, read8_delegate(FUNC(ibm5160_mb_device::pc_page_r), this), write8_delegate(FUNC(ibm5160_mb_device::pc_page_w),this) );
- install_device(0x00a0, 0x00a1, 0, 0, read8_delegate(), write8_delegate(FUNC(ibm5160_mb_device::nmi_enable_w),this));
- /* MESS managed RAM */
- if ( m_ram->pointer() )
- membank( "bank10" )->set_base( m_ram->pointer() );
+ if(!m_ram->started())
+ throw device_missing_dependencies();
+ m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - 1, m_ram->pointer());
}
@@ -607,6 +585,10 @@ static MACHINE_CONFIG_FRAGMENT( ibm5150_mb_config )
MCFG_DEVICE_MODIFY("pc_kbdc")
MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(ibm5150_mb_device, keyboard_clock_w))
+ MCFG_DEVICE_MODIFY("ppi8255")
+ MCFG_I8255_OUT_PORTB_CB(WRITE8(ibm5150_mb_device, pc_ppi_portb_w))
+ MCFG_I8255_IN_PORTC_CB(READ8(ibm5150_mb_device, pc_ppi_portc_r))
+
MCFG_CASSETTE_ADD( "cassette" )
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
MACHINE_CONFIG_END
@@ -636,15 +618,6 @@ ibm5150_mb_device::ibm5150_mb_device(const machine_config &mconfig, const char *
{
}
-void ibm5150_mb_device::device_start()
-{
- ibm5160_mb_device::device_start();
-}
-void ibm5150_mb_device::device_reset()
-{
- ibm5160_mb_device::device_reset();
-}
-
READ8_MEMBER (ibm5150_mb_device::pc_ppi_porta_r)
{
int data = 0xFF;
@@ -788,6 +761,10 @@ const device_type EC1841_MOTHERBOARD = &device_creator<ec1841_mb_device>;
static MACHINE_CONFIG_FRAGMENT( ec1841_mb_config )
MCFG_FRAGMENT_ADD(ibm5160_mb_config)
+ MCFG_DEVICE_MODIFY("ppi8255")
+ MCFG_I8255_OUT_PORTB_CB(WRITE8(ec1841_mb_device, pc_ppi_portb_w))
+ MCFG_I8255_IN_PORTC_CB(READ8(ec1841_mb_device, pc_ppi_portc_r))
+
MCFG_DEVICE_MODIFY("pc_kbdc")
MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(ec1841_mb_device, keyboard_clock_w))
MACHINE_CONFIG_END
@@ -857,11 +834,6 @@ ec1841_mb_device::ec1841_mb_device(const machine_config &mconfig, const char *ta
void ec1841_mb_device::device_start()
{
- ibm5160_mb_device::device_start();
-}
-void ec1841_mb_device::device_reset()
-{
- ibm5160_mb_device::device_reset();
}
// kbd interface is 5150-like but PB2 controls access to second bank of DIP switches (SA2).
@@ -939,16 +911,12 @@ ioport_constructor pc_noppi_mb_device::device_input_ports() const
return INPUT_PORTS_NAME( pc_noppi_mb );
}
-void pc_noppi_mb_device::device_start()
-{
- install_device(0x0000, 0x000f, 0, 0, read8_delegate(FUNC(am9517a_device::read), (am9517a_device*)m_dma8237), write8_delegate(FUNC(am9517a_device::write), (am9517a_device*)m_dma8237) );
- install_device(0x0020, 0x0021, 0, 0, read8_delegate(FUNC(pic8259_device::read), (pic8259_device*)m_pic8259), write8_delegate(FUNC(pic8259_device::write), (pic8259_device*)m_pic8259) );
- install_device(0x0040, 0x0043, 0, 0, read8_delegate(FUNC(pit8253_device::read), (pit8253_device*)m_pit8253), write8_delegate(FUNC(pit8253_device::write), (pit8253_device*)m_pit8253) );
- install_device(0x0080, 0x0087, 0, 0, read8_delegate(FUNC(ibm5160_mb_device::pc_page_r), this), write8_delegate(FUNC(ibm5160_mb_device::pc_page_w),this) );
- install_device(0x00a0, 0x00a1, 0, 0, read8_delegate(), write8_delegate(FUNC(ibm5160_mb_device::nmi_enable_w),this));
- /* MESS managed RAM */
- if ( m_ram->pointer() )
- membank( "bank10" )->set_base( m_ram->pointer() );
-}
+DEVICE_ADDRESS_MAP_START( map, 8, pc_noppi_mb_device )
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("dma8237", am9517a_device, read, write)
+ AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
+ AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+ AM_RANGE(0x0080, 0x008f) AM_WRITE(pc_page_w)
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w)
+ADDRESS_MAP_END
const device_type PCNOPPI_MOTHERBOARD = &device_creator<pc_noppi_mb_device>;
diff --git a/src/mame/machine/pcshare.cpp b/src/mame/machine/pcshare.cpp
index e6d3451c5c4..c93fc57338d 100644
--- a/src/mame/machine/pcshare.cpp
+++ b/src/mame/machine/pcshare.cpp
@@ -14,12 +14,7 @@
***************************************************************************/
#include "emu.h"
-#include "cpu/i386/i386.h"
#include "machine/pcshare.h"
-#include "machine/pckeybrd.h"
-#include "machine/mc146818.h"
-#include "machine/idectrl.h"
-
/******************
DMA8237 Controller
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index bd1d3bed189..310c0325d17 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -35064,6 +35064,7 @@ atlantol // bootleg
hyprolym // GX361 (c) 1983
hyprolymb // bootleg
hyprolymba // bootleg
+hipoly // bootleg
mastkin // (c) 1988 Du Tech
reaktor // (c) 1985 Zilec
trackfld // GX361 (c) 1983
diff --git a/src/mame/video/pc_t1t.cpp b/src/mame/video/pc_t1t.cpp
index b5931d4daba..8c7b2fafdfd 100644
--- a/src/mame/video/pc_t1t.cpp
+++ b/src/mame/video/pc_t1t.cpp
@@ -49,13 +49,14 @@ pc_t1t_device::pc_t1t_device(const machine_config &mconfig, device_type type, co
m_display_enable(0),
m_vsync(0),
m_palette_base(0),
- m_palette(*this,"palette")
+ m_palette(*this,"palette"),
+ m_ram(*this, ":" RAM_TAG),
+ m_vram(*this, "vram")
{
}
pcvideo_t1000_device::pcvideo_t1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : pc_t1t_device(mconfig, PCVIDEO_T1000, "Tandy 1000 Graphics Adapter", tag, owner, clock, "tandy_1000_graphics_adapter", __FILE__),
- m_t1_displayram(nullptr)
+ : pc_t1t_device(mconfig, PCVIDEO_T1000, "Tandy 1000 Graphics Adapter", tag, owner, clock, "tandy_1000_graphics_adapter", __FILE__)
{
}
@@ -68,24 +69,35 @@ pcvideo_pcjr_device::pcvideo_pcjr_device(const machine_config &mconfig, const ch
void pcvideo_t1000_device::device_start()
{
+ if(!m_ram->started())
+ throw device_missing_dependencies();
m_chr_gen = machine().root_device().memregion("gfx1")->base();
m_bank = 0;
m_chr_size = 1;
m_ra_offset = 256;
+ m_vram->space(AS_0).install_ram(0, 128*1024 - 1, m_ram->pointer());
}
void pcvideo_pcjr_device::device_start()
{
+ if(!m_ram->started())
+ throw device_missing_dependencies();
m_chr_gen = machine().root_device().memregion("gfx1")->base();
m_bank = 0;
m_mode_control = 0x08;
m_chr_size = 8;
m_ra_offset = 1;
if(!strncmp(machine().system().name, "ibmpcjx", 7))
+ {
m_jxkanji = machine().root_device().memregion("kanji")->base();
+ m_vram->space(AS_0).install_ram(0, 128*1024 - 1, memshare(":vram")->ptr()); // TODO: fix when this is really understood
+ }
else
+ {
m_jxkanji = nullptr;
+ m_vram->space(AS_0).install_ram(0, 128*1024 - 1, m_ram->pointer());
+ }
}
@@ -95,6 +107,11 @@ void pcvideo_pcjr_device::device_start()
***************************************************************************/
+static ADDRESS_MAP_START(vram_map, AS_0, 8, pcvideo_t1000_device)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x20000, 0x3ffff) AM_NOP
+ADDRESS_MAP_END
+
MACHINE_CONFIG_FRAGMENT( pcvideo_t1000 )
MCFG_SCREEN_ADD(T1000_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
@@ -109,6 +126,13 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_t1000 )
MCFG_MC6845_UPDATE_ROW_CB(pc_t1t_device, crtc_update_row)
MCFG_MC6845_OUT_DE_CB(WRITELINE(pc_t1t_device, t1000_de_changed))
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(pcvideo_t1000_device, t1000_vsync_changed))
+
+ MCFG_DEVICE_ADD("vram", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(vram_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(18)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000)
MACHINE_CONFIG_END
machine_config_constructor pcvideo_t1000_device::device_mconfig_additions() const
@@ -116,7 +140,6 @@ machine_config_constructor pcvideo_t1000_device::device_mconfig_additions() cons
return MACHINE_CONFIG_NAME( pcvideo_t1000 );
}
-
MACHINE_CONFIG_FRAGMENT( pcvideo_pcjr )
MCFG_SCREEN_ADD(T1000_SCREEN_NAME, RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz,912,0,640,262,0,200)
@@ -131,6 +154,12 @@ MACHINE_CONFIG_FRAGMENT( pcvideo_pcjr )
MCFG_MC6845_UPDATE_ROW_CB(pcvideo_pcjr_device, crtc_update_row)
MCFG_MC6845_OUT_DE_CB(WRITELINE(pc_t1t_device, t1000_de_changed))
MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(pcvideo_pcjr_device, pcjr_vsync_changed))
+ MCFG_DEVICE_ADD("vram", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(vram_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(18)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000)
MACHINE_CONFIG_END
machine_config_constructor pcvideo_pcjr_device::device_mconfig_additions() const
@@ -474,22 +503,6 @@ MC6845_UPDATE_ROW( pcvideo_pcjr_device::crtc_update_row )
}
-READ8_MEMBER( pcvideo_t1000_device::videoram_r )
-{
- UINT8 *videoram = m_t1_displayram;
- int data = 0xff;
- if( videoram )
- data = videoram[offset];
- return data;
-}
-
-WRITE8_MEMBER( pcvideo_t1000_device::videoram_w )
-{
- UINT8 *videoram = m_t1_displayram;
- if( videoram )
- videoram[offset] = data;
-}
-
void pcvideo_t1000_device::mode_switch( void )
{
switch( m_mode_control & 0x3B )
@@ -798,78 +811,66 @@ int pc_t1t_device::vga_data_r(void)
*/
void pcvideo_t1000_device::bank_w(int data)
{
- if (m_bank != data)
+ int dram, vram;
+ if ((data&0xc0)==0xc0) /* needed for lemmings */
{
- UINT8 *ram = machine().root_device().memregion("maincpu")->base();
- int dram, vram;
- m_bank = data;
- /* it seems the video ram is mapped to the last 128K of main memory */
-#if 1
- if ((data&0xc0)==0xc0) /* needed for lemmings */
- {
- dram = 0x80000 + ((data & 0x06) << 14);
- vram = 0x80000 + ((data & 0x30) << (14-3));
- }
- else
- {
- dram = 0x80000 + ((data & 0x07) << 14);
- vram = 0x80000 + ((data & 0x38) << (14-3));
- }
-#else
- dram = (data & 0x07) << 14;
- vram = (data & 0x38) << (14-3);
-#endif
- m_t1_displayram = &ram[vram];
- m_displayram = &ram[dram];
- mode_switch();
+ dram = (m_bank & 0x06);// | ((m_bank & 0x1800) >> 8);
+ vram = ((m_bank & 0x30) >> 3);// | ((m_bank & 0x6000) >> 10);
+ }
+ else
+ {
+ dram = (m_bank & 0x07);// | ((m_bank & 0x1800) >> 8);
+ vram = ((m_bank & 0x38) >> 3);// | ((m_bank & 0x6000) >> 10);
}
+ m_displayram = m_ram->pointer() + (dram << 14);
+ if(m_disable)
+ return;
+ m_vram->set_bank(vram);
+ if((m_bank & 0xc0) != (data & 0xc0))
+ mode_switch();
}
void pcvideo_pcjr_device::pc_pcjr_bank_w(int data)
{
- if (m_bank != data)
+ int dram, vram;
+ m_bank = data;
+ /* it seems the video ram is mapped to the last 128K of main memory */
+ if ((data&0xc0)==0xc0) /* needed for lemmings */
{
- int dram, vram;
- m_bank = data;
- /* it seems the video ram is mapped to the last 128K of main memory */
- if ((data&0xc0)==0xc0) /* needed for lemmings */
- {
- dram = ((data & 0x06) << 14);
- vram = ((data & 0x30) << (14-3));
- }
- else
- {
- dram = ((data & 0x07) << 14);
- vram = ((data & 0x38) << (14-3));
- }
- machine().root_device().membank( "bank14" )->set_base( machine().device<ram_device>(RAM_TAG)->pointer() + vram );
- m_displayram = machine().device<ram_device>(RAM_TAG)->pointer() + dram;
- pc_pcjr_mode_switch();
+ dram = (data & 0x06);
+ vram = (data & 0x30) >> 3;
}
+ else
+ {
+ dram = (data & 0x07);
+ vram = (data & 0x38) >> 3;
+ }
+ m_vram->set_bank(vram);
+ m_displayram = m_ram->pointer() + (dram << 14);
+ if((m_bank & 0xc0) != (data & 0xc0))
+ pc_pcjr_mode_switch();
}
void pcvideo_pcjr_device::pc_pcjx_bank_w(int data)
{
- if (m_bank != data)
+ int dram, vram;
+ m_bank = data;
+ if ((data&0xc0)==0xc0) /* needed for lemmings */
{
- int dram, vram;
- m_bank = data;
- /* this probably isn't right, but otherwise the memory test stomps on the vram */
- if ((data&0xc0)==0xc0) /* needed for lemmings */
- {
- dram = 0x80000 + ((data & 0x06) << 14);
- vram = 0x80000 + ((data & 0x30) << (14-3));
- }
- else
- {
- dram = 0x80000 + ((data & 0x07) << 14);
- vram = 0x80000 + ((data & 0x38) << (14-3));
- }
- machine().root_device().membank( "bank14" )->set_base( machine().device<ram_device>(RAM_TAG)->pointer() + vram );
- m_displayram = machine().device<ram_device>(RAM_TAG)->pointer() + dram;
- pc_pcjr_mode_switch();
+ dram = (data & 0x06);
+ vram = (data & 0x30) >> 3;
+ }
+ else
+ {
+ dram = (data & 0x07);
+ vram = (data & 0x38) >> 3;
}
+ m_vram->set_bank(vram);
+ /* this certainly isn't correct but otherwise the memory test stomps on the vram */
+ m_displayram = (UINT8 *)memshare(":vram")->ptr() + (dram << 14);
+ if((m_bank & 0xc0) != (data & 0xc0))
+ pc_pcjr_mode_switch();
}
int pc_t1t_device::bank_r(void)
@@ -909,17 +910,19 @@ WRITE8_MEMBER( pcvideo_t1000_device::write )
case 12:
break;
case 13:
+ m_bank = (data << 8) | (m_bank & 0xff);
+ bank_w(m_bank);
break;
case 14:
vga_data_w(data);
break;
case 15:
+ m_bank = (m_bank & 0xff00) | data;
bank_w(data);
break;
}
}
-
WRITE8_MEMBER( pcvideo_pcjr_device::write )
{
switch( offset )
@@ -1005,7 +1008,6 @@ READ8_MEMBER( pc_t1t_device::read )
return data;
}
-
WRITE_LINE_MEMBER( pc_t1t_device::t1000_de_changed )
{
m_display_enable = state ? 1 : 0;
@@ -1021,6 +1023,14 @@ WRITE_LINE_MEMBER( pcvideo_t1000_device::t1000_vsync_changed )
}
}
+WRITE_LINE_MEMBER( pcvideo_t1000_device::disable_w )
+{
+ if(state)
+ m_vram->set_bank(8);
+ else
+ bank_w(m_bank);
+ m_disable = state ? true : false;
+}
WRITE_LINE_MEMBER( pcvideo_pcjr_device::pcjr_vsync_changed )
{
diff --git a/src/mame/video/pc_t1t.h b/src/mame/video/pc_t1t.h
index 7dc6f981762..34839955b95 100644
--- a/src/mame/video/pc_t1t.h
+++ b/src/mame/video/pc_t1t.h
@@ -4,6 +4,8 @@
#define PC_T1T_H
#include "video/mc6845.h"
+#include "machine/ram.h"
+#include "machine/bankdev.h"
#define T1000_SCREEN_NAME "screen"
#define T1000_MC6845_NAME "mc6845_t1000"
@@ -39,6 +41,7 @@ public:
DECLARE_PALETTE_INIT( pcjr );
DECLARE_WRITE_LINE_MEMBER( t1000_de_changed );
+ DECLARE_READ8_MEMBER( read );
virtual MC6845_UPDATE_ROW( crtc_update_row );
MC6845_UPDATE_ROW( t1000_text_inten_update_row );
@@ -48,13 +51,14 @@ public:
MC6845_UPDATE_ROW( t1000_gfx_2bpp_tga_update_row );
MC6845_UPDATE_ROW( t1000_gfx_1bpp_update_row );
+protected:
required_device<mc6845_device> m_mc6845;
UINT8 m_mode_control, m_color_select;
UINT8 m_status;
struct reg m_reg;
- UINT8 m_bank;
+ UINT16 m_bank;
int m_pc_framecnt;
@@ -80,8 +84,9 @@ public:
int vga_data_r(void);
int bank_r(void);
- DECLARE_READ8_MEMBER( read );
required_device<palette_device> m_palette;
+ required_device<ram_device> m_ram;
+ required_device<address_map_bank_device> m_vram;
};
class pcvideo_t1000_device : public pc_t1t_device
@@ -91,20 +96,19 @@ public:
pcvideo_t1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
DECLARE_WRITE8_MEMBER( write );
- DECLARE_READ8_MEMBER( videoram_r );
- DECLARE_WRITE8_MEMBER( videoram_w );
DECLARE_WRITE_LINE_MEMBER( t1000_vsync_changed );
+ DECLARE_WRITE_LINE_MEMBER( disable_w );
protected:
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void device_start() override;
private:
- UINT8 *m_t1_displayram;
void mode_switch( void );
void vga_data_w(int data);
void bank_w(int data);
void mode_control_w(int data);
+ bool m_disable;
};
extern const device_type PCVIDEO_T1000;
diff --git a/src/mame/video/poisk1.cpp b/src/mame/video/poisk1.cpp
deleted file mode 100644
index 6f2a102bde4..00000000000
--- a/src/mame/video/poisk1.cpp
+++ /dev/null
@@ -1,322 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sergey Svishchev
-/*
- * Poisk-1 does not have a real mc6845 and always runs in graphics mode.
- * Text mode is emulated by BIOS.
- * Video RAM in native graphics mode starts at 0xB8000, in emulated text mode -- at 0xBC000.
- */
-
-#include "emu.h"
-
-#include "includes/poisk1.h"
-
-#define CGA_PALETTE_SETS 83
-/* one for colour, one for mono, 81 for colour composite */
-
-#include "video/cgapal.h"
-
-#define BG_COLOR(x) (((x) & 7)|(((x) & 0x10) >> 1))
-
-#define VERBOSE_DBG 0
-
-#define DBG_LOG(N,M,A) \
- do { \
- if(VERBOSE_DBG>=N) \
- { \
- if( M ) \
- logerror("%11.6f: %-24s",machine().time().as_double(),(char*)M ); \
- logerror A; \
- } \
- } while (0)
-
-//
-
-/*
- * Poisk-1 doesn't have a mc6845 and always runs in graphics mode. Text mode is emulated by BIOS;
- * NMI is triggered on access to video memory and to mc6845 ports. Address and data are latched into:
- *
- * Port 28H (offset 0) -- lower 8 bits of address
- * Port 29H (offset 1) -- high -//- and mode bits
- * Port 2AH (offset 2) -- data
- */
-
-READ8_MEMBER(p1_state::p1_trap_r)
-{
- UINT8 data = m_video.trap[offset];
- DBG_LOG(1,"trap",("R %.2x $%02x\n", 0x28+offset, data));
- if (offset == 0)
- m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
- return data;
-}
-
-WRITE8_MEMBER(p1_state::p1_trap_w)
-{
- DBG_LOG(1,"trap",("W %.2x $%02x\n", 0x28+offset, data));
-}
-
-READ8_MEMBER(p1_state::p1_cga_r)
-{
- m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
- return 0;
-}
-
-WRITE8_MEMBER(p1_state::p1_cga_w)
-{
- UINT16 port = offset + 0x3d0;
-
- DBG_LOG(1,"cga",("W %.4x $%02x\n", port, data));
- m_video.trap[2] = data;
- m_video.trap[1] = 0xC0 | ((port >> 8) & 0x3f);
- m_video.trap[0] = port & 255;
- m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
-}
-
-WRITE8_MEMBER(p1_state::p1_vram_w)
-{
- DBG_LOG(1,"vram",("W %.4x $%02x\n", offset, data));
- if (m_video.videoram_base)
- m_video.videoram_base[offset] = data;
- m_video.trap[2] = data;
- m_video.trap[1] = 0x80 | ((offset >> 8) & 0x3f);
- m_video.trap[0] = offset & 255;
- m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
-}
-
-// CGA emulator
-/*
-068h D42 0..2 R, G, B XXX Foreground/Background color
- 3 NMI DISABLE NMI trap 1: Disabled 0: Enabled
- 4 PALETTE XXX Colour palette 0: XXX 1: XXX
- 5 I (INTENS) XXX Foreground/Background color intensity
- 6 DISPLAY BANK XXX Video RAM page
- 7 HIRES 1: 640x200 0: 320x200
-*/
-
-WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
-{
- address_space &space_prg = m_maincpu->space(AS_PROGRAM);
-
- DBG_LOG(1,"color_select_68",("W $%02x\n", data));
-
- // NMI DISABLE
- if (BIT(data, 3) != BIT(m_video.color_select_68, 3)) {
- if (BIT(data, 3)) {
- space_prg.install_readwrite_bank( 0xb8000, 0xbbfff, "bank11" );
- } else {
- space_prg.install_read_bank( 0xb8000, 0xbbfff, "bank11" );
- space_prg.install_write_handler( 0xb8000, 0xbbfff, WRITE8_DELEGATE(p1_state, p1_vram_w) );
- }
- }
- // DISPLAY BANK
- if (BIT(data, 6) != BIT(m_video.color_select_68, 6)) {
- if (BIT(data, 6))
- m_video.videoram = m_video.videoram_base.get() + 0x4000;
- else
- m_video.videoram = m_video.videoram_base.get();
- }
- // HIRES -- XXX
- if (BIT(data, 7) != BIT(m_video.color_select_68, 7)) {
- if (BIT(data, 7))
- machine().first_screen()->set_visible_area(0, 640-1, 0, 200-1);
- else
- machine().first_screen()->set_visible_area(0, 320-1, 0, 200-1);
- }
- m_video.color_select_68 = data;
- set_palette_luts();
-}
-
-/*
-06Ah Dxx 6 Enable/Disable color burst (?)
- 7 Enable/Disable D7H/D7L
-*/
-
-WRITE8_MEMBER(p1_state::p1_ppi_portc_w)
-{
- DBG_LOG(1,"mode_control_6a",("W $%02x\n", data));
-
- m_video.mode_control_6a = data;
- set_palette_luts();
-}
-
-void p1_state::set_palette_luts(void)
-{
- /* Setup 2bpp palette lookup table */
- // HIRES
- if ( m_video.color_select_68 & 0x80 )
- {
- m_video.palette_lut_2bpp[0] = 0;
- }
- else
- {
- m_video.palette_lut_2bpp[0] = BG_COLOR(m_video.color_select_68);
- }
- // B&W -- XXX
-/*
- if ( m_video.mode_control_6a & 0x40 )
- {
- m_video.palette_lut_2bpp[1] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 3;
- m_video.palette_lut_2bpp[2] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 4;
- m_video.palette_lut_2bpp[3] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 7;
- }
- else
-*/
- {
- // PALETTE
- if ( m_video.color_select_68 & 0x20 )
- {
- m_video.palette_lut_2bpp[1] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 3;
- m_video.palette_lut_2bpp[2] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 5;
- m_video.palette_lut_2bpp[3] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 7;
- }
- else
- {
- m_video.palette_lut_2bpp[1] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 2;
- m_video.palette_lut_2bpp[2] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 4;
- m_video.palette_lut_2bpp[3] = ( ( m_video.color_select_68 & 0x20 ) >> 2 ) | 6;
- }
- }
-}
-
-/***************************************************************************
- Draw graphics mode with 320x200 pixels (default) with 2 bits/pixel.
- Even scanlines are from CGA_base + 0x0000, odd from CGA_base + 0x2000
- cga fetches 2 byte per mc6845 access.
-***************************************************************************/
-
-POISK1_UPDATE_ROW( p1_state::cga_gfx_2bpp_update_row )
-{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(ra);
- UINT16 odd, offset;
- int i;
-
- if ( ra == 0 ) DBG_LOG(1,"cga_gfx_2bpp_update_row",("\n"));
- odd = ( ra & 1 ) << 13;
- offset = ( ma & 0x1fff ) | odd;
- for ( i = 0; i < stride; i++ )
- {
- UINT8 data = videoram[ offset++ ];
-
- *p = palette[m_video.palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
- *p = palette[m_video.palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
- *p = palette[m_video.palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
- *p = palette[m_video.palette_lut_2bpp[ data & 0x03 ]]; p++;
- }
-}
-
-/***************************************************************************
- Draw graphics mode with 640x200 pixels (default).
- The cell size is 1x1 (1 scanline is the real default)
- Even scanlines are from CGA_base + 0x0000, odd from CGA_base + 0x2000
-***************************************************************************/
-
-POISK1_UPDATE_ROW( p1_state::cga_gfx_1bpp_update_row )
-{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(ra);
- UINT8 fg = 15, bg = BG_COLOR(m_video.color_select_68);
- UINT16 odd, offset;
- int i;
-
- if ( ra == 0 ) DBG_LOG(1,"cga_gfx_1bpp_update_row",("bg %d\n", bg));
- odd = ( ra & 1 ) << 13;
- offset = ( ma & 0x1fff ) | odd;
- for ( i = 0; i < stride; i++ )
- {
- UINT8 data = videoram[ offset++ ];
-
- *p = palette[( data & 0x80 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg ]; p++;
- }
-}
-
-/***************************************************************************
- Draw graphics mode with 640x200 pixels + extra highlight color for text
- mode emulation
- Even scanlines are from CGA_base + 0x0000, odd from CGA_base + 0x2000
-***************************************************************************/
-
-POISK1_UPDATE_ROW( p1_state::poisk1_gfx_1bpp_update_row )
-{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(ra);
- UINT8 fg, bg = BG_COLOR(m_video.color_select_68);
- UINT16 odd, offset;
- int i;
-
- if ( ra == 0 ) DBG_LOG(1,"poisk1_gfx_1bpp_update_row",("bg %d\n", bg));
- odd = ( ra & 1 ) << 13;
- offset = ( ma & 0x1fff ) | odd;
- for ( i = 0; i < stride; i++ )
- {
- UINT8 data = videoram[ offset++ ];
-
- fg = (data & 0x80) ? ( (m_video.color_select_68 & 0x20) ? 10 : 11 ) : 15; // XXX
- *p = palette[bg]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg ]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg ]; p++;
- }
-}
-
-/* Initialise the cga palette */
-PALETTE_INIT_MEMBER(p1_state, p1)
-{
- int i;
-
- DBG_LOG(0,"init",("palette_init()\n"));
-
- for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
- {
- palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
- }
-}
-
-void p1_state::video_start()
-{
- address_space &space = m_maincpu->space( AS_PROGRAM );
-
- DBG_LOG(0,"init",("video_start()\n"));
-
- memset(&m_video, 0, sizeof(m_video));
- m_video.videoram_base = std::make_unique<UINT8[]>(0x8000);
- m_video.videoram = m_video.videoram_base.get();
- m_video.stride = 80;
-
- space.install_readwrite_bank(0xb8000, 0xbffff, "bank11" );
- machine().root_device().membank("bank11")->set_base(m_video.videoram);
-}
-
-UINT32 p1_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- UINT16 ra, ma = 0;
-
- if (!m_video.stride || !m_video.videoram) return 0;
-
- // bit 6 of 6Ah disables color burst -- not implemented
- for (ra = cliprect.min_y; ra <= cliprect.max_y; ra++)
- {
- if (BIT(m_video.color_select_68, 7)) {
- if (BIT(m_video.mode_control_6a, 7)) {
- cga_gfx_1bpp_update_row(bitmap, cliprect, m_video.videoram, ma, ra, m_video.stride);
- } else {
- poisk1_gfx_1bpp_update_row(bitmap, cliprect, m_video.videoram, ma, ra, m_video.stride);
- }
- } else {
- cga_gfx_2bpp_update_row(bitmap, cliprect, m_video.videoram, ma, ra, m_video.stride);
- }
- if (ra & 1) ma += m_video.stride;
- }
-
- return 0;
-}