summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/pc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/pc.c')
-rw-r--r--src/mess/drivers/pc.c2275
1 files changed, 2275 insertions, 0 deletions
diff --git a/src/mess/drivers/pc.c b/src/mess/drivers/pc.c
new file mode 100644
index 00000000000..b3b11328c9e
--- /dev/null
+++ b/src/mess/drivers/pc.c
@@ -0,0 +1,2275 @@
+/***************************************************************************
+
+ drivers/pc.c
+
+Driver file for IBM PC, IBM PC XT, and related machines.
+
+ PC-XT memory map
+
+ 00000-9FFFF RAM
+ A0000-AFFFF NOP or videoram EGA/VGA
+ B0000-B7FFF videoram MDA, page #0
+ B8000-BFFFF videoram CGA and/or MDA page #1, T1T mapped RAM
+ C0000-C7FFF NOP or ROM EGA/VGA
+ C8000-C9FFF ROM XT HDC #1
+ CA000-CBFFF ROM XT HDC #2
+ D0000-EFFFF NOP or 'adapter RAM'
+ F0000-FDFFF NOP or ROM Basic + other Extensions
+ FE000-FFFFF ROM
+
+Tandy 1000
+==========
+
+Tandy 1000 machines are similar to the IBM 5160s with CGA graphics. Tandy
+added some additional graphic capabilities similar, but not equal, to
+those added for the IBM PC Jr.
+
+Tandy 1000 (8088) variations:
+1000 128KB-640KB RAM 4.77 MHz v01.00.00, v01.01.00
+1000A/1000HD 128KB-640KB RAM 4.77 MHz v01.01.00
+1000SX/1000AX 384KB-640KB RAM 7.16/4.77 MHz v01.02.00
+1000EX 256KB-640KB RAM 7.16/4.77 MHz v01.02.00
+1000HX 256KB-640KB RAM 7.16/4.77 MHz v02.00.00
+
+Tandy 1000 (8086) variations:
+1000RL/1000RL-HD 512KB-768KB RAM 9.44/4.77 MHz v02.00.00, v02.00.01
+1000SL/1000PC 384KB-640KB RAM 8.0/4.77 MHz v01.04.00, v01.04.01, v01.04.02, v02.00.01
+1000SL/2 512KB-640KB RAM 8.0/4.77 MHz v01.04.04
+
+Tandy 1000 (80286) variations:
+1000TX 640KB-768KB RAM 8.0/4.77 MHz v01.03.00
+1000TL 640KB-768KB RAM 8.0/4.77 MHz v01.04.00, v01.04.01, v01.04.02
+1000TL/2 640KB-768KB RAM 8.0/4.77 MHz v02.00.00
+1000TL/3 640KB-768KB RAM 10.0/5.0 MHz v02.00.00
+1000RLX 512KB-1024KB RAM 10.0/5.0 MHz v02.00.00
+1000RLX-HD 1024MB RAM 10.0/5.0 MHz v02.00.00
+
+Tandy 1000 (80386) variations:
+1000RSX/1000RSX-HD 1M-9M RAM 25.0/8.0 MHz v01.10.00
+
+
+IBM5550
+=======
+Information can be found at http://homepage3.nifty.com/ibm5550/index-e.html
+It's an heavily modified IBM PC-XT machine, with a completely different
+video HW too.
+
+***************************************************************************/
+
+
+#include "emu.h"
+#include "cpu/nec/nec.h"
+#include "cpu/i86/i86.h"
+#include "cpu/i86/i286.h"
+#include "sound/speaker.h"
+
+#include "machine/i8255.h"
+#include "machine/ins8250.h"
+#include "machine/i8251.h"
+#include "machine/mc146818.h"
+#include "machine/pic8259.h"
+
+#include "machine/pit8253.h"
+#include "video/pc_vga.h"
+#include "video/pc_cga.h"
+#include "video/pc_aga.h"
+#include "video/pc_t1t.h"
+
+#include "machine/pc_fdc.h"
+#include "machine/pc_joy.h"
+#include "machine/pckeybrd.h"
+#include "machine/pc_lpt.h"
+#include "machine/serial.h"
+
+#include "includes/europc.h"
+#include "includes/tandy1t.h"
+
+#include "machine/pcshare.h"
+#include "includes/pc.h"
+
+#include "imagedev/flopdrv.h"
+#include "imagedev/harddriv.h"
+#include "imagedev/cassette.h"
+#include "imagedev/cartslot.h"
+#include "formats/pc_dsk.h"
+
+#include "machine/8237dma.h"
+#include "sound/sn76496.h"
+
+#include "machine/wd17xx.h"
+#include "machine/kb_7007_3.h"
+
+#include "machine/ram.h"
+#include "machine/pc_keyboards.h"
+
+
+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
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( oliv_map, AS_PROGRAM, 8, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00000, 0x9ffff) AM_RAM
+ 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( iskr1031_map, AS_PROGRAM, 16, pc_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
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( ec1841_map, AS_PROGRAM, 16, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00000, 0x7ffff) AM_RAMBANK("bank10") // up to 4 banks
+ AM_RANGE(0xa0000, 0xbffff) AM_NOP
+ AM_RANGE(0xc0000, 0xc7fff) AM_ROM
+ AM_RANGE(0xc8000, 0xcffff) AM_ROM
+ AM_RANGE(0xdc000, 0xdffff) AM_RAM // monochrome chargen
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mc1502_map, AS_PROGRAM, 8, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00000, 0x97fff) AM_RAMBANK("bank10") /* 96K on mainboard + 512K on extension card */
+ AM_RANGE(0xe8000, 0xeffff) AM_ROM /* BASIC */
+ AM_RANGE(0xfc000, 0xfffff) AM_ROM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(mc1502_io, AS_IO, 8, pc_state )
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE_LEGACY("pic8259", pic8259_r, pic8259_w)
+ AM_RANGE(0x0028, 0x0028) AM_DEVREADWRITE("upd8251", i8251_device, data_r, data_w) // not working yet
+ AM_RANGE(0x0029, 0x0029) AM_DEVREADWRITE("upd8251", i8251_device, status_r, control_w)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE_LEGACY("pit8253", pit8253_r, pit8253_w)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x0068, 0x006B) AM_DEVREADWRITE("ppi8255n2", i8255_device, read, write) // keyboard poll
+ AM_RANGE(0x0100, 0x0100) AM_DEVREADWRITE_LEGACY("vg93", mc1502_wd17xx_aux_r, mc1502_wd17xx_aux_w)
+ AM_RANGE(0x0108, 0x0108) AM_DEVREAD_LEGACY("vg93", mc1502_wd17xx_drq_r) // blocking read!
+ AM_RANGE(0x010a, 0x010a) AM_DEVREAD_LEGACY("vg93", mc1502_wd17xx_motor_r)
+ AM_RANGE(0x010c, 0x010c) AM_DEVREADWRITE_LEGACY("vg93", wd17xx_status_r, wd17xx_command_w)
+ AM_RANGE(0x010d, 0x010d) AM_DEVREADWRITE_LEGACY("vg93", wd17xx_track_r, wd17xx_track_w)
+ AM_RANGE(0x010e, 0x010e) AM_DEVREADWRITE_LEGACY("vg93", wd17xx_sector_r, wd17xx_sector_w)
+ AM_RANGE(0x010f, 0x010f) AM_DEVREADWRITE_LEGACY("vg93", wd17xx_data_r, wd17xx_data_w)
+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
+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(pc8_io, AS_IO, 8, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE_LEGACY("dma8237", i8237_r, i8237_w)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE_LEGACY("pic8259", pic8259_r, pic8259_w)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE_LEGACY("pit8253", pit8253_r, pit8253_w)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE(pc_page_r, pc_page_w)
+ AM_RANGE(0x00a0, 0x00a0) AM_WRITE(pc_nmi_enable_w )
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE_LEGACY(pc_JOY_r, pc_JOY_w)
+ AM_RANGE(0x0240, 0x0257) AM_READWRITE(pc_rtc_r, pc_rtc_w)
+ AM_RANGE(0x0278, 0x027b) AM_DEVREADWRITE_LEGACY("lpt_2", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE("ins8250_3", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250_1", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x0340, 0x0357) AM_NOP /* anonymous bios should not recogniced realtimeclock */
+ AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE_LEGACY("lpt_1", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x03bc, 0x03be) AM_DEVREADWRITE_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE("ins8250_2", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE_LEGACY(pc_fdc_r, pc_fdc_w)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE("ins8250_0", ins8250_device, ins8250_r, ins8250_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(oliv_io, AS_IO, 8, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(pc16_io, AS_IO, 16, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE8_LEGACY("dma8237", i8237_r, i8237_w, 0xffff)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259", pic8259_r, pic8259_w, 0xffff)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8253", pit8253_r, pit8253_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff)
+ AM_RANGE(0x0070, 0x007f) AM_RAM // needed for Poisk-2
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r, pc_page_w, 0xffff)
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE8(pc_nmi_enable_w, 0x00ff )
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r, pc_JOY_w, 0xffff)
+ AM_RANGE(0x0240, 0x0257) AM_READWRITE8(pc_rtc_r, pc_rtc_w, 0xffff)
+ AM_RANGE(0x0278, 0x027b) AM_DEVREADWRITE8_LEGACY("lpt_2", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE8("ins8250_3", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x0340, 0x0357) AM_NOP /* anonymous bios should not recogniced realtimeclock */
+ AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE8_LEGACY("lpt_1", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE8("ins8250_2", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r, pc_fdc_w, 0xffff)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ins8250_0", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START(ec1841_io, AS_IO, 16, pc_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE8_LEGACY("dma8237", i8237_r, i8237_w, 0xffff)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259", pic8259_r, pic8259_w, 0xffff)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8253", pit8253_r, pit8253_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r, pc_page_w, 0xffff)
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE8( pc_nmi_enable_w, 0x00ff )
+ AM_RANGE(0x0210, 0x0217) AM_NOP // expansion chassis interface
+// AM_RANGE(0x0230, 0x021f) // mouse
+ AM_RANGE(0x0240, 0x0257) AM_READWRITE8(pc_rtc_r, pc_rtc_w, 0xffff)
+ AM_RANGE(0x02b0, 0x02b3) AM_READWRITE8(ec1841_memboard_r, ec1841_memboard_w, 0xffff);
+// AM_RANGE(0x02f8, 0x02f8) AM_DEVREADWRITE8_LEGACY("upd8251_1", i8251_device, data_r, data_w, 0x00ff)
+// AM_RANGE(0x02f9, 0x02f9) AM_DEVREADWRITE8_LEGACY("upd8251_1", i8251_device, status_r, control_w, 0xff00)
+ AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r, pc_fdc_w, 0xffff)
+// AM_RANGE(0x03f8, 0x03f9) AM_DEVREADWRITE8_LEGACY("upd8251_0", i8251_device, data_r, data_w, 0x00ff)
+// AM_RANGE(0x03f8, 0x03f9) AM_DEVREADWRITE8_LEGACY("upd8251_0", i8251_device, status_r, control_w, 0xff00)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START(iskr1031_io, AS_IO, 16, pc_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE8_LEGACY("dma8237", i8237_r, i8237_w, 0xffff)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259", pic8259_r, pic8259_w, 0xffff)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8253", pit8253_r, pit8253_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r, pc_page_w, 0xffff)
+ AM_RANGE(0x00a0, 0x00a1) AM_WRITE8( pc_nmi_enable_w, 0x00ff )
+// AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r, pc_JOY_w, 0xffff)
+ AM_RANGE(0x0240, 0x0257) AM_READWRITE8(pc_rtc_r, pc_rtc_w, 0xffff)
+// AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE8("ins8250_3", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x0340, 0x0357) AM_NOP /* anonymous bios should not recogniced realtimeclock */
+ AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
+// AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE8("ins8250_2", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r, pc_fdc_w, 0xffff)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ins8250_0", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+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
+ADDRESS_MAP_END
+
+READ8_MEMBER(pc_state::unk_r)
+{
+ return 0;
+}
+
+static ADDRESS_MAP_START(ibm5550_io, AS_IO, 16, pc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE8_LEGACY("dma8237", i8237_r, i8237_w, 0xffff)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259", pic8259_r, pic8259_w, 0xffff)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8253", pit8253_r, pit8253_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r, pc_page_w, 0xffff)
+ AM_RANGE(0x00a0, 0x00a1) AM_READWRITE8(unk_r, pc_nmi_enable_w, 0x00ff )
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r, pc_JOY_w, 0xffff)
+ AM_RANGE(0x0240, 0x0257) AM_READWRITE8(pc_rtc_r, pc_rtc_w, 0xffff)
+ AM_RANGE(0x0278, 0x027b) AM_DEVREADWRITE8_LEGACY("lpt_2", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE8("ins8250_3", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x0340, 0x0357) AM_NOP /* anonymous bios should not recogniced realtimeclock */
+ AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE8_LEGACY("lpt_1", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE8("ins8250_2", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r, pc_fdc_w, 0xffff)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ins8250_0", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( europc_map, AS_PROGRAM, 8, pc_state )
+ 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
+ADDRESS_MAP_END
+
+
+
+static ADDRESS_MAP_START(europc_io, AS_IO, 8, pc_state )
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE_LEGACY("dma8237", i8237_r, i8237_w)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE_LEGACY("pic8259", pic8259_r, pic8259_w)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE_LEGACY("pit8253", pit8253_r, pit8253_w)
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE_LEGACY(europc_pio_r, europc_pio_w)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE(pc_page_r, pc_page_w)
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE_LEGACY(pc_JOY_r, pc_JOY_w)
+ AM_RANGE(0x0250, 0x025f) AM_READWRITE_LEGACY(europc_jim_r, europc_jim_w)
+ AM_RANGE(0x0278, 0x027b) AM_DEVREADWRITE_LEGACY("lpt_2", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x02e0, 0x02e0) AM_READ_LEGACY(europc_jim2_r)
+ AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE("ins8250_3", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250_1", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x0378, 0x037b) AM_DEVREADWRITE_LEGACY("lpt_1", pc_lpt_r, pc_lpt_w)
+// AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE("ins8250_2", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE_LEGACY(pc_fdc_r, pc_fdc_w)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE("ins8250_0", ins8250_device, ins8250_r, ins8250_w)
+ADDRESS_MAP_END
+
+
+
+static ADDRESS_MAP_START(tandy1000_map, AS_PROGRAM, 8, pc_state )
+ AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
+ AM_RANGE(0xa0000, 0xaffff) AM_RAM
+ AM_RANGE(0xb0000, 0xb7fff) AM_NOP
+ 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_END
+
+
+
+static ADDRESS_MAP_START(tandy1000_io, AS_IO, 8, pc_state )
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE_LEGACY("dma8237", i8237_r, i8237_w)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE_LEGACY("pic8259", pic8259_r, pic8259_w)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE_LEGACY("pit8253", pit8253_r, pit8253_w)
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE_LEGACY(tandy1000_pio_r, tandy1000_pio_w)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE(pc_page_r, pc_page_w)
+ AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE_LEGACY("sn76496", sn76496_w)
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE_LEGACY(pc_JOY_r, pc_JOY_w)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250_1", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x0378, 0x037f) AM_READWRITE_LEGACY(pc_t1t_p37x_r, pc_t1t_p37x_w)
+ AM_RANGE(0x03bc, 0x03be) AM_DEVREADWRITE_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE_LEGACY(pc_fdc_r, pc_fdc_w)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE("ins8250_0", ins8250_device, ins8250_r, ins8250_w)
+ADDRESS_MAP_END
+
+
+
+static ADDRESS_MAP_START(tandy1000_16_map, AS_PROGRAM, 16, pc_state )
+ AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
+ AM_RANGE(0xa0000, 0xaffff) AM_RAM
+ AM_RANGE(0xb0000, 0xb7fff) AM_NOP
+ AM_RANGE(0xc0000, 0xc7fff) AM_NOP
+ AM_RANGE(0xc8000, 0xc9fff) AM_ROM
+ AM_RANGE(0xca000, 0xcffff) AM_NOP
+ AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("bank11") /* Banked part of the BIOS */
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x70000)
+ADDRESS_MAP_END
+
+
+
+static ADDRESS_MAP_START(tandy1000_16_io, AS_IO, 16, pc_state )
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE8_LEGACY("dma8237", i8237_r, i8237_w, 0xffff)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259", pic8259_r, pic8259_w, 0xffff)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8253", pit8253_r, pit8253_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE8_LEGACY(tandy1000_pio_r, tandy1000_pio_w, 0xffff)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r, pc_page_w, 0xffff)
+ AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8_LEGACY("sn76496", sn76496_w, 0xffff)
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r, pc_JOY_w, 0xffff)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x0378, 0x037f) AM_READWRITE8_LEGACY(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff)
+ AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r, pc_fdc_w, 0xffff)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ins8250_0", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0xffea, 0xffeb) AM_READWRITE8_LEGACY(tandy1000_bank_r, tandy1000_bank_w, 0xffff)
+ADDRESS_MAP_END
+
+
+
+static ADDRESS_MAP_START(tandy1000_286_map, AS_PROGRAM, 16, pc_state )
+ AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
+ AM_RANGE(0xa0000, 0xaffff) AM_RAM
+ AM_RANGE(0xb0000, 0xb7fff) AM_NOP
+ 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
+ADDRESS_MAP_END
+
+
+
+static ADDRESS_MAP_START(tandy1000_286_io, AS_IO, 16, pc_state )
+ AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE8_LEGACY("dma8237", i8237_r, i8237_w, 0xffff)
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8_LEGACY("pic8259", pic8259_r, pic8259_w, 0xffff)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8_LEGACY("pit8253", pit8253_r, pit8253_w, 0xffff)
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE8_LEGACY(tandy1000_pio_r, tandy1000_pio_w, 0xffff)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r, pc_page_w, 0xffff)
+ AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8_LEGACY("sn76496", sn76496_w, 0xffff)
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r, pc_JOY_w, 0xffff)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ AM_RANGE(0x0378, 0x037f) AM_READWRITE8_LEGACY(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff)
+ AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
+ AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r, pc_fdc_w, 0xffff)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ins8250_0", ins8250_device, ins8250_r, ins8250_w, 0xffff)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START(ibmpcjr_map, AS_PROGRAM, 8, pc_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
+ AM_RANGE(0xd0000, 0xdffff) AM_ROM
+ AM_RANGE(0xe0000, 0xeffff) AM_ROM
+ AM_RANGE(0xf0000, 0xfffff) AM_ROM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START(ibmpcjr_io, AS_IO, 8, pc_state )
+ AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE_LEGACY("pic8259", pic8259_r, pic8259_w)
+ AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE_LEGACY("pit8253", pit8253_r, pit8253_w)
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x0080, 0x0087) AM_READWRITE(pc_page_r, pc_page_w)
+ AM_RANGE(0x00a0, 0x00a0) AM_READWRITE(pcjr_nmi_enable_r, pc_nmi_enable_w )
+ AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE_LEGACY("sn76496", sn76496_w)
+ AM_RANGE(0x00f0, 0x00f7) AM_READWRITE_LEGACY(pc_fdc_r, pcjr_fdc_w)
+ AM_RANGE(0x0200, 0x0207) AM_READWRITE_LEGACY(pc_JOY_r, pc_JOY_w)
+ AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250_1", ins8250_device, ins8250_r, ins8250_w)
+ AM_RANGE(0x0378, 0x037f) AM_READWRITE_LEGACY(pc_t1t_p37x_r, pc_t1t_p37x_w)
+ AM_RANGE(0x03bc, 0x03be) AM_DEVREADWRITE_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w)
+ AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE("ins8250_0", ins8250_device, ins8250_r, ins8250_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(ibmpcjx_map, AS_PROGRAM, 8, pc_state )
+ AM_RANGE(0x80000, 0x9ffff) AM_ROM AM_REGION("kanji",0)
+ AM_IMPORT_FROM( ibmpcjr_map )
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(ibmpcjx_io, AS_IO, 8, pc_state )
+ AM_IMPORT_FROM( ibmpcjr_io )
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( pccga )
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
+ PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
+
+ PORT_START("DSW0") /* IN1 */
+ PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x40, "2" )
+ PORT_DIPSETTING( 0x80, "3" )
+ PORT_DIPSETTING( 0xc0, "4" )
+ PORT_DIPNAME( 0x30, 0x20, "Graphics adapter")
+ PORT_DIPSETTING( 0x00, "EGA/VGA" )
+ PORT_DIPSETTING( 0x10, "Color 40x25" )
+ PORT_DIPSETTING( 0x20, "Color 80x25" )
+ PORT_DIPSETTING( 0x30, "Monochrome" )
+ PORT_DIPNAME( 0x0c, 0x0c, "RAM banks")
+ PORT_DIPSETTING( 0x00, "1 - 16 64 256K" )
+ PORT_DIPSETTING( 0x04, "2 - 32 128 512K" )
+ PORT_DIPSETTING( 0x08, "3 - 48 192 576K" )
+ PORT_DIPSETTING( 0x0c, "4 - 64 256 640K" )
+ PORT_DIPNAME( 0x02, 0x00, "80387 installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW1") /* IN2 */
+ PORT_DIPNAME( 0x80, 0x80, "COM1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "COM2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x00, "COM3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x00, "COM4: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "LPT1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x00, "LPT2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x00, "LPT3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x00, "Game port enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") /* IN3 */
+ PORT_DIPNAME( 0x08, 0x08, "HDC1 (C800:0 port 320-323)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "HDC2 (CA00:0 port 324-327)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_BIT( 0x02, 0x02, IPT_UNUSED ) /* no turbo switch */
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
+
+ PORT_INCLUDE( pc_joystick ) /* IN15 - IN19 */
+ PORT_INCLUDE( pcvideo_cga )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( pcega )
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
+ PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
+
+ PORT_START("DSW0") /* IN1 */
+ PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x40, "2" )
+ PORT_DIPSETTING( 0x80, "3" )
+ PORT_DIPSETTING( 0xc0, "4" )
+ PORT_DIPNAME( 0x00, 0x20, "Graphics adapter")
+ PORT_DIPSETTING( 0x00, "EGA/VGA" )
+ PORT_DIPSETTING( 0x10, "Color 40x25" )
+ PORT_DIPSETTING( 0x20, "Color 80x25" )
+ PORT_DIPSETTING( 0x30, "Monochrome" )
+ PORT_DIPNAME( 0x0c, 0x0c, "RAM banks")
+ PORT_DIPSETTING( 0x00, "1 - 16 64 256K" )
+ PORT_DIPSETTING( 0x04, "2 - 32 128 512K" )
+ PORT_DIPSETTING( 0x08, "3 - 48 192 576K" )
+ PORT_DIPSETTING( 0x0c, "4 - 64 256 640K" )
+ PORT_DIPNAME( 0x02, 0x00, "80387 installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW1") /* IN2 */
+ PORT_DIPNAME( 0x80, 0x80, "COM1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "COM2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x00, "COM3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x00, "COM4: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "LPT1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x00, "LPT2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x00, "LPT3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x00, "Game port enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") /* IN3 */
+ PORT_DIPNAME( 0x08, 0x08, "HDC1 (C800:0 port 320-323)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "HDC2 (CA00:0 port 324-327)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_BIT( 0x02, 0x02, IPT_UNUSED ) /* no turbo switch */
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
+
+ PORT_INCLUDE( pc_joystick ) /* IN15 - IN19 */
+ PORT_INCLUDE( pcvideo_cga )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( europc )
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
+ PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
+
+ PORT_START("DSW0") /* IN1 */
+
+ PORT_START("DSW1") /* IN2 */
+ PORT_DIPNAME( 0x80, 0x80, "COM1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "COM2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x00, "COM3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x00, "COM4: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "LPT1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x00, "LPT2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x00, "LPT3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x00, "Game port enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") /* IN3 */
+ PORT_DIPNAME( 0x08, 0x08, "HDC1 (C800:0 port 320-323)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "HDC2 (CA00:0 port 324-327)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_BIT( 0x02, 0x02, IPT_UNUSED ) /* no turbo switch */
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
+
+ EUROPC_KEYBOARD
+
+ PORT_INCLUDE( pc_joystick ) /* IN15 - IN19 */
+ PORT_INCLUDE( pcvideo_cga )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( bondwell )
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
+ PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
+
+ PORT_START("DSW0") /* IN1 */
+ PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x40, "2" )
+ PORT_DIPSETTING( 0x80, "3" )
+ PORT_DIPSETTING( 0xc0, "4" )
+ PORT_DIPNAME( 0x30, 0x20, "Graphics adapter")
+ PORT_DIPSETTING( 0x00, "EGA/VGA" )
+ PORT_DIPSETTING( 0x10, "Color 40x25" )
+ PORT_DIPSETTING( 0x20, "Color 80x25" )
+ PORT_DIPSETTING( 0x30, "Monochrome" )
+ PORT_DIPNAME( 0x0c, 0x0c, "RAM banks")
+ PORT_DIPSETTING( 0x00, "1 - 16 64 256K" )
+ PORT_DIPSETTING( 0x04, "2 - 32 128 512K" )
+ PORT_DIPSETTING( 0x08, "3 - 48 192 576K" )
+ PORT_DIPSETTING( 0x0c, "4 - 64 256 640K" )
+ PORT_DIPNAME( 0x02, 0x00, "80387 installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW1") /* IN2 */
+ PORT_DIPNAME( 0x80, 0x80, "COM1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "COM2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x00, "COM3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x00, "COM4: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "LPT1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x00, "LPT2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x00, "LPT3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x00, "Game port enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") /* IN3 */
+ PORT_DIPNAME( 0x08, 0x08, "HDC1 (C800:0 port 320-323)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "HDC2 (CA00:0 port 324-327)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x02, "Turbo Switch" )
+ PORT_DIPSETTING( 0x00, "Off (4.77 MHz)" )
+ PORT_DIPSETTING( 0x02, "On (12 MHz)" )
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
+
+// PORT_INCLUDE( at_keyboard ) /* IN4 - IN11 */
+ PORT_INCLUDE( pc_joystick ) /* IN15 - IN19 */
+ PORT_INCLUDE( pcvideo_cga )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( tandy1t )
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
+ PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
+
+ PORT_START("DSW0") /* IN1 */
+ PORT_BIT ( 0xff, 0xff, IPT_UNUSED )
+
+ PORT_START("DSW1") /* IN2 */
+ PORT_DIPNAME( 0x80, 0x80, "COM1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "COM2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_BIT ( 0x30, 0x00, IPT_UNUSED )
+ PORT_DIPNAME( 0x08, 0x08, "LPT1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_BIT ( 0x06, 0x00, IPT_UNUSED )
+ PORT_DIPNAME( 0x01, 0x00, "Game port enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") /* IN3 */
+ PORT_DIPNAME( 0x08, 0x08, "HDC1 (C800:0 port 320-323)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "HDC2 (CA00:0 port 324-327)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_BIT( 0x02, 0x02, IPT_UNUSED ) /* no turbo switch */
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
+
+ PORT_INCLUDE( t1000_keyboard )
+ PORT_INCLUDE( pc_joystick ) /* IN15 - IN19 */
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( mc1502 ) /* fix */
+ PORT_START("IN0") /* IN0 */
+ PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
+ PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
+
+ PORT_START("DSW0") /* IN1 */
+ PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x40, "2" )
+ PORT_DIPSETTING( 0x80, "3" )
+ PORT_DIPSETTING( 0xc0, "4" )
+ PORT_DIPNAME( 0x30, 0x20, "Graphics adapter")
+ PORT_DIPSETTING( 0x00, "EGA/VGA" )
+ PORT_DIPSETTING( 0x10, "Color 40x25" )
+ PORT_DIPSETTING( 0x20, "Color 80x25" )
+ PORT_DIPSETTING( 0x30, "Monochrome" )
+ PORT_DIPNAME( 0x0c, 0x0c, "RAM banks")
+ PORT_DIPSETTING( 0x00, "1 - 16 64 256K" )
+ PORT_DIPSETTING( 0x04, "2 - 32 128 512K" )
+ PORT_DIPSETTING( 0x08, "3 - 48 192 576K" )
+ PORT_DIPSETTING( 0x0c, "4 - 64 256 640K" )
+ PORT_DIPNAME( 0x02, 0x00, "80387 installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW1") /* IN2 */
+ PORT_DIPNAME( 0x80, 0x80, "COM1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "COM2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x00, "COM3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x00, "COM4: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "LPT1: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x00, "LPT2: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x00, "LPT3: enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x00, "Game port enable")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+
+ PORT_START("DSW2") /* IN3 */
+ PORT_DIPNAME( 0xf0, 0x80, "Serial mouse")
+ PORT_DIPSETTING( 0x80, "COM1" )
+ PORT_DIPSETTING( 0x40, "COM2" )
+ PORT_DIPSETTING( 0x20, "COM3" )
+ PORT_DIPSETTING( 0x10, "COM4" )
+ PORT_DIPSETTING( 0x00, DEF_STR( None ) )
+ PORT_DIPNAME( 0x08, 0x08, "HDC1 (C800:0 port 320-323)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "HDC2 (CA00:0 port 324-327)")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_BIT( 0x02, 0x02, IPT_UNUSED ) /* no turbo switch */
+ PORT_BIT( 0x01, 0x01, IPT_UNUSED )
+
+ PORT_INCLUDE( mc7007_3_keyboard )
+ PORT_INCLUDE( pcvideo_mc1502 )
+INPUT_PORTS_END
+
+
+static const unsigned i86_address_mask = 0x000fffff;
+
+static const pc_lpt_interface pc_lpt_config =
+{
+ DEVCB_CPU_INPUT_LINE("maincpu", 0)
+};
+
+static const floppy_interface ibmpc_floppy_interface =
+{
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ FLOPPY_STANDARD_5_25_DSHD,
+ LEGACY_FLOPPY_OPTIONS_NAME(pc),
+ "floppy_5_25",
+ NULL
+};
+
+SLOT_INTERFACE_START(ibm5150_com)
+ SLOT_INTERFACE("microsoft_mouse", MSFT_SERIAL_MOUSE)
+ SLOT_INTERFACE("mouse_systems_mouse", MSYSTEM_SERIAL_MOUSE)
+SLOT_INTERFACE_END
+
+#define MCFG_CPU_PC(mem, port, type, clock, vblankfunc) \
+ MCFG_CPU_ADD("maincpu", type, clock) \
+ MCFG_CPU_PROGRAM_MAP(mem##_map) \
+ MCFG_CPU_IO_MAP(port##_io) \
+ MCFG_TIMER_ADD_SCANLINE("scantimer", vblankfunc, "screen", 0, 1) \
+ MCFG_CPU_CONFIG(i86_address_mask)
+
+
+/* F4 Character Displayer */
+static const gfx_layout pc_16_charlayout =
+{
+ 8, 16, /* 8 x 16 characters */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 2048*8, 2049*8, 2050*8, 2051*8, 2052*8, 2053*8, 2054*8, 2055*8 },
+ 8*8 /* every char takes 2 x 8 bytes */
+};
+
+static const gfx_layout pc_8_charlayout =
+{
+ 8, 8, /* 8 x 8 characters */
+ 512, /* 512 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8 /* every char takes 8 bytes */
+};
+
+static const gfx_layout kanji_layout =
+{
+ 16, 16, /* 8 x 8 characters */
+ RGN_FRAC(1,1), /* 512 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { STEP16(0,1) },
+ /* y offsets */
+ { STEP16(0,16) },
+ 16*16 /* every char takes 8 bytes */
+};
+
+static GFXDECODE_START( ibm5150 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, pc_16_charlayout, 3, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0x1000, pc_8_charlayout, 3, 1 )
+GFXDECODE_END
+
+
+static const pc_kbdc_interface pc_kbdc_intf =
+{
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, pc_state, keyboard_clock_w),
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, pc_state, keyboard_data_w)
+};
+
+
+static MACHINE_CONFIG_START( pccga, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(pc8, pc8, I8088, 4772720, pc_frame_interrupt) /* 4,77 MHz */
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+static const gfx_layout europc_8_charlayout =
+{
+ 8, 8, /* 8 x 8 characters */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*16 /* every char takes 16 bytes */
+};
+
+static const gfx_layout europc_16_charlayout =
+{
+ 8, 16, /* 8 x 16 characters */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
+ 8*16 /* every char takes 16 bytes */
+};
+
+static GFXDECODE_START( europc )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, europc_8_charlayout, 3, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0x0800, europc_16_charlayout, 3, 1 )
+GFXDECODE_END
+
+static MACHINE_CONFIG_START( europc, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(europc, europc, I8088, 4772720*2, pc_frame_interrupt)
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_aga )
+ MCFG_GFXDECODE(europc)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_NVRAM_HANDLER( europc_rtc )
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( t1000hx, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(tandy1000, tandy1000, I8088, 8000000, pc_frame_interrupt)
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_t1000 )
+ MCFG_GFXDECODE(europc)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ MCFG_SOUND_ADD("sn76496", NCR7496, XTAL_14_31818MHz/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_NVRAM_HANDLER( tandy1000 )
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( t1000_16, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(tandy1000_16, tandy1000_16, I8086, XTAL_28_63636MHz / 3, pc_frame_interrupt)
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(tandy1000rl)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_t1000 )
+ MCFG_GFXDECODE(europc)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ MCFG_SOUND_ADD("sn76496", NCR7496, XTAL_14_31818MHz/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_NVRAM_HANDLER( tandy1000 )
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( t1000_286, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(tandy1000_286, tandy1000_286, I80286, XTAL_28_63636MHz / 2, pc_frame_interrupt)
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_t1000 )
+ MCFG_GFXDECODE(europc)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ MCFG_SOUND_ADD("sn76496", NCR7496, XTAL_14_31818MHz/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_NVRAM_HANDLER( tandy1000 )
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+
+static GFXDECODE_START( ibmpcjr )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, pc_8_charlayout, 3, 1 )
+GFXDECODE_END
+
+static const cassette_interface ibm5150_cassette_interface =
+{
+ cassette_default_formats,
+ NULL,
+ (cassette_state)(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED),
+ NULL,
+ NULL
+};
+
+static const cassette_interface mc1502_cassette_interface =
+{
+ cassette_default_formats,
+ NULL,
+ (cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED),
+ NULL,
+ NULL
+};
+
+static MACHINE_CONFIG_START( ibmpcjr, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(ibmpcjr, ibmpcjr, I8088, 4900000, pcjr_frame_interrupt) /* TODO: Get correct cpu frequency, probably XTAL_14_31818MHz/3 */
+
+ MCFG_MACHINE_START(pcjr)
+ MCFG_MACHINE_RESET(pcjr)
+
+ MCFG_PIT8253_ADD( "pit8253", pcjr_pit8253_config )
+
+ MCFG_PIC8259_ADD( "pic8259", pcjr_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", pcjr_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_pcjr )
+ MCFG_GFXDECODE(ibmpcjr)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ MCFG_SOUND_ADD("sn76496", SN76496, XTAL_14_31818MHz/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_NVRAM_HANDLER( tandy1000 )
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ /* cassette */
+ MCFG_CASSETTE_ADD( CASSETTE_TAG, ibm5150_cassette_interface )
+
+ MCFG_UPD765A_ADD("upd765", pcjr_fdc_upd765_interface)
+
+ MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, ibmpc_floppy_interface)
+
+ /* cartridge */
+ MCFG_CARTSLOT_ADD("cart1")
+ MCFG_CARTSLOT_INTERFACE("ibmpcjr_cart")
+ MCFG_CARTSLOT_EXTENSION_LIST("jrc")
+ MCFG_CARTSLOT_NOT_MANDATORY
+ MCFG_CARTSLOT_LOAD(pcjr_cartridge)
+ MCFG_CARTSLOT_ADD("cart2")
+ MCFG_CARTSLOT_INTERFACE("ibmpcjr_cart")
+ MCFG_CARTSLOT_EXTENSION_LIST("jrc")
+ MCFG_CARTSLOT_NOT_MANDATORY
+ MCFG_CARTSLOT_LOAD(pcjr_cartridge)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+
+ /* Software lists */
+ MCFG_SOFTWARE_LIST_ADD("cart_list","ibmpcjr_cart")
+ MCFG_SOFTWARE_LIST_ADD("flop_list","ibmpcjr_flop")
+MACHINE_CONFIG_END
+
+static GFXDECODE_START( ibmpcjx )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, pc_8_charlayout, 3, 1 )
+ GFXDECODE_ENTRY( "kanji", 0x0000, kanji_layout, 3, 1 )
+GFXDECODE_END
+
+
+static MACHINE_CONFIG_DERIVED( ibmpcjx, ibmpcjr )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(ibmpcjx_map)
+ MCFG_CPU_IO_MAP(ibmpcjx_io)
+
+ MCFG_GFXDECODE(ibmpcjx)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( mc1502, pc_state )
+ /* basic machine hardware */
+// MCFG_CPU_PC(mc1502, mc1502, I8088, XTAL_16MHz/3, pcjr_frame_interrupt) /* check frame_interrupt */
+ MCFG_CPU_ADD("maincpu", I8088, XTAL_16MHz/3)
+ MCFG_CPU_PROGRAM_MAP(mc1502_map)
+ MCFG_CPU_IO_MAP(mc1502_io)
+ MCFG_CPU_CONFIG(i86_address_mask)
+
+ MCFG_MACHINE_START(mc1502)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", mc1502_pit8253_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", mc1502_ppi8255_interface ) /* not complete */
+ MCFG_I8255_ADD( "ppi8255n2", mc1502_ppi8255_interface_2 ) /* not complete */
+
+ MCFG_I8251_ADD( "upd8251", default_i8251_interface )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_mc1502 ) /* only 1 chargen, CGA_FONT dip always 1 */
+ MCFG_GFXDECODE(ibmpcjr)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* printer */
+// MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config) /* TODO: non-standard */
+
+ /* cassette */
+ MCFG_CASSETTE_ADD( CASSETTE_TAG, mc1502_cassette_interface ) // has no motor control
+
+ MCFG_FD1793_ADD( "vg93", default_wd17xx_interface_2_drives )
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("608K") /* 96 base + 512 on expansion card */
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( ec1841, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(ec1841, ec1841, I8086, 4096000, pc_frame_interrupt) // correct but slow
+// MCFG_CPU_PC(ec1841, ec1841, I8086, 4772720, pc_frame_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ // maybe XTAL_12_288MHz
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+// MCFG_I8251_ADD( "upd8251_0", default_i8251_interface ) // modeled after BSC adapter?
+// MCFG_I8251_ADD( "upd8251_1", default_i8251_interface )
+
+ /* video hardware -- supports font uploads */
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* keyboard -- needs dump */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* internal ram -- up to 4 banks of 512K */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("512K")
+// MCFG_RAM_EXTRA_OPTIONS("640K,1024K,1576K,2048K")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( iskr1031, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(iskr1031, iskr1031, I8086, 4772720, pc_frame_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( iskr3104, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(pc16, pc16, I8086, 4772720, pc_frame_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+// MCFG_FRAGMENT_ADD( pcvideo_ega ) // Put this back after ISA are added to this driver
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( poisk2, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(pc16, pc16, I8086, 4772720, pc_frame_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_poisk2 )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( zenith, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(zenith, pc8, I8088, XTAL_14_31818MHz/3, pc_frame_interrupt) /* 4,77 MHz */
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( olivetti, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(pc16, pc16, I8086, 8000000, pc_vga_frame_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( ibm5550, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_PC(ibm5550, ibm5550, I8086, 8000000, pc_vga_frame_interrupt)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ MCFG_MACHINE_START(pc)
+ MCFG_MACHINE_RESET(pc)
+
+ MCFG_PIT8253_ADD( "pit8253", ibm5150_pit8253_config )
+
+ MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config )
+
+ MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config )
+
+ MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
+
+ MCFG_INS8250_ADD( "ins8250_0", ibm5150_com_interface[0], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_1", ibm5150_com_interface[1], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_2", ibm5150_com_interface[2], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_INS8250_ADD( "ins8250_3", ibm5150_com_interface[3], XTAL_1_8432MHz ) /* TODO: Verify model */
+ MCFG_RS232_PORT_ADD( "serport0", ibm5150_serport_config[0], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport1", ibm5150_serport_config[1], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport2", ibm5150_serport_config[2], ibm5150_com, NULL, NULL )
+ MCFG_RS232_PORT_ADD( "serport3", ibm5150_serport_config[3], ibm5150_com, NULL, NULL )
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD( pcvideo_cga )
+ MCFG_GFXDECODE(ibm5150)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEAKER_TAG, SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* keyboard */
+ MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
+
+ /* printer */
+ MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_1", pc_lpt_config)
+ MCFG_PC_LPT_ADD("lpt_2", pc_lpt_config)
+
+ MCFG_UPD765A_ADD("upd765", pc_fdc_upd765_not_connected_interface)
+
+ MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(ibmpc_floppy_interface)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("640K")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( olivm15, pc_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", I8088, 4772720)
+ MCFG_CPU_PROGRAM_MAP(oliv_map)
+ MCFG_CPU_IO_MAP(oliv_io)
+MACHINE_CONFIG_END
+
+
+#if 0
+ //pcjr roms? (incomplete dump, most likely 64 kbyte)
+ // basic c1.20
+ ROM_LOAD("basic.rom", 0xf6000, 0x8000, CRC(0c19c1a8))
+ // ???
+ ROM_LOAD("bios.rom", 0x??000, 0x2000, CRC(98463f95))
+
+ /* turbo xt */
+ /* basic c1.10 */
+ ROM_LOAD("rom05.bin", 0xf6000, 0x2000, CRC(80d3cf5d))
+ ROM_LOAD("rom04.bin", 0xf8000, 0x2000, CRC(673a4acc))
+ ROM_LOAD("rom03.bin", 0xfa000, 0x2000, CRC(aac3fc37))
+ ROM_LOAD("rom02.bin", 0xfc000, 0x2000, CRC(3062b3fc))
+ /* sw1 0x60 readback fails write 301 to screen fe3b7 */
+ /* disk problems no disk gives 601 */
+ /* 5000-026 08/16/82 */
+ ROM_LOAD("rom01.bin", 0xfe000, 0x2000, CRC(5c3f0256))
+
+ /* anonymous works nice */
+ ROM_LOAD("pcxt.rom", 0xfe000, 0x02000, CRC(031aafad))
+
+ ROM_LOAD("bondwell.bin", 0xfe000, 0x2000, CRC(d435a405))
+
+ /* europc */
+ ROM_LOAD("50145", 0xf8000, 0x8000, CRC(1775a11d)) // V2.07
+// ROM_LOAD("eurobios.bin", 0xf8000, 0x8000, CRC(52185223)) scrap
+ /* cga, hercules character set */
+ ROM_LOAD("50146", 0x00000, 0x02000, CRC(1305dcf5)) //D1.0
+
+ // ibm pc
+ // most likely 8 kbyte chips
+ ROM_LOAD("basicpc.bin", 0xf6000, 0x8000, CRC(ebacb791)) // IBM C1.1
+ // split into 8 kbyte parts
+ // the same as in the basic c1.10 as in the turboxt
+ // 1501-476 10/27/82
+ ROM_LOAD("biospc.bin", 0xfe000, 0x2000, CRC(e88792b3))
+
+ /* tandy 1000 hx */
+ ROM_LOAD("tandy1t.rom", 0xf0000, 0x10000, CRC(d37a1d5f))
+
+ // ibm xt
+ ROM_LOAD("xthdd.c8", 0xc8000, 0x2000, CRC(a96317da))
+ ROM_LOAD("biosxt.bin", 0xf0000, 0x10000, CRC(36c32fde)) // BASIC C1.1
+ // split into 2 chips for 16 bit access
+ ROM_LOAD_EVEN("ibmxt.0", 0xf0000, 0x8000, CRC(83727c42))
+ ROM_LOAD_ODD("ibmxt.1", 0xf0000, 0x8000, CRC(2a629953))
+
+ /* pc xt mfm controller
+ 2 harddisks 17 sectors, 4 head, 613 tracks
+ serves 2 controllers? 0x320-3, 0x324-7, dma 3, irq5
+ movable, works at 0xee000 */
+ /* western digital 06/28/89 */
+ ROM_LOAD("wdbios.rom", 0xc8000, 0x02000, CRC(8e9e2bd4) SHA1(601d7ceab282394ebab50763c267e915a6a2166a)) /* WDC IDE Superbios 2.0 (06/28/89) Expansion Rom C8000-C9FFF */
+
+ /* lcs 6210d asic i2.1 09/01/1988 */
+ /* problematic, currently showing menu and calls int21 (hangs)! */
+ ROM_LOAD("xthdd.rom", 0xc8000, 0x02000, CRC(a96317da))
+#endif
+
+
+ROM_START( bw230 )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD("bondwell.bin", 0xfe000, 0x2000, CRC(d435a405) SHA1(a57c705d1144c7b61940b6f5c05d785c272fc9bb))
+
+ /* 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( zdsupers )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_SYSTEM_BIOS( 0, "v31d", "v3.1d" )
+ ROMX_LOAD( "z184m v3.1d.10d", 0xf8000, 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))
+ /* 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( europc )
+ ROM_REGION(0x100000,"maincpu", 0)
+ // hdd bios integrated!
+ ROM_LOAD("50145", 0xf8000, 0x8000, CRC(1775a11d) SHA1(54430d4d0462860860397487c9c109e6f70db8e3)) // V2.07
+ ROM_REGION(0x08100,"gfx1", 0)
+ ROM_LOAD("50146 char d1.0 euro.u16", 0x00000, 0x02000, CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //D1.0
+ROM_END
+
+
+ROM_START( ibmpcjr )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD("bios.rom", 0xf0000, 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_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.
+ ROM_SYSTEM_BIOS( 1, "unk", "unk" )
+ ROMX_LOAD("ipljx.rom", 0xe0000, 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
+
+ ROM_REGION(0x20000,"kanji", 0)
+ ROM_LOAD("kanji.rom", 0x00000, 0x20000, BAD_DUMP CRC(a313f241) SHA1(c2a4ea7eb38c5ad51e6482abca8f836a2c06e17a)) // hand-made rom
+ROM_END
+
+#ifdef UNUSED_DEFINITION
+ROM_START( t1000 )
+ ROM_REGION(0x100000,"maincpu", 0)
+ // partlist says it has 1 128kbyte rom
+ ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef)) // not sure about this one
+ ROM_SYSTEM_BIOS( 0, "v010000", "v010000" )
+ ROMX_LOAD("v010000.f0", 0xf0000, 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))
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+ROM_START( t1000a )
+ ROM_REGION(0x100000,"maincpu", 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_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+ROM_START( t1000ex )
+ ROM_REGION(0x100000,"maincpu", 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("v010200.f0", 0xf0000, 0x10000, CRC(0e016ecf) SHA1(2f5ac8921b7cba56b02122ef772f5f11bbf6d8a2))
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+#endif
+
+ROM_START( t1000hx )
+ ROM_REGION(0x100000,"maincpu", 0)
+ // partlist says it has 1 128kbyte rom
+ ROM_LOAD("t1000hx.e0", 0xe0000, 0x10000, CRC(61dbf242) SHA1(555b58d8aa8e0b0839259621c44b832d993beaef))
+ ROM_LOAD("v020000.f0", 0xf0000, 0x10000, CRC(d37a1d5f) SHA1(5ec031c31a7967cc3fd53a535d81833e4a1c385e))
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+#ifdef UNUSED_DEFINITION
+ROM_START( t1000sl )
+ ROM_REGION(0x100000,"maincpu", 0)
+ // partlist says it has 1 128kbyte rom
+ ROM_LOAD("t1000hx.e0", 0xe0000, 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) )
+ ROM_SYSTEM_BIOS( 1, "v010401", "v010401" )
+ ROMX_LOAD("v010401.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(2) )
+ ROM_SYSTEM_BIOS( 2, "v010402", "v010402" )
+ ROMX_LOAD("v010402.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(3) )
+ ROM_SYSTEM_BIOS( 3, "v020001", "v020001" )
+ ROMX_LOAD("v020001.f0", 0xf0000, 0x10000, NO_DUMP, ROM_BIOS(4) )
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+ROM_START( t1000sl2 )
+ ROM_REGION(0x100000,"maincpu", 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("v010404.f0", 0xf0000, 0x10000, NO_DUMP )
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+#endif
+
+ROM_START( t1000sx )
+ ROM_REGION(0x100000,"maincpu", 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("v010200.f0", 0xf0000, 0x10000, CRC(0e016ecf) SHA1(2f5ac8921b7cba56b02122ef772f5f11bbf6d8a2))
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+
+ROM_START( t1000tx )
+ ROM_REGION(0x100000,"maincpu", 0)
+ /* There might be a second 32KB rom, but it seems to work fine with just this one */
+ ROM_LOAD("t1000tx.bin", 0xf8000, 0x8000, CRC(9b34765c) SHA1(0b07e87f6843393f7d4ca4634b832b0c0bec304e))
+
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+
+ROM_START( t1000rl )
+ ROM_REGION(0x100000,"maincpu", 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(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ /* Character rom located at U3 w/label "8079027 // NCR // 609-2495004 // F841030 A9025" */
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+ROM_START( t1000tl2 )
+ ROM_REGION(0x100000, "maincpu", 0)
+ ROM_LOAD( "t10000tl2.bin", 0xf0000, 0x10000, CRC(e288f12c) SHA1(9d54ccf773cd7202c9906323f1b5a68b1b3a3a67))
+
+ ROM_REGION(0x08000,"gfx1", 0)
+ // expects 8x9 charset!
+ /* Character rom located at U3 w/label "8079027 // NCR // 609-2495004 // F841030 A9025" */
+ ROM_LOAD("50146", 0x00000, 0x02000, BAD_DUMP CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //taken from europc, 9th blank
+ROM_END
+
+ROM_START( dgone )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD( "dgone.bin", 0xf8000, 0x08000, CRC(2c38c86e) SHA1(c0f85a000d1d13cd354965689e925d677822549e))
+
+ /* 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( iskr1031 )
+ ROM_REGION16_LE(0x100000,"maincpu", 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))
+ 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))
+
+ ROM_REGION(0x2000,"gfx1", 0)
+ ROM_LOAD( "iskra-1031_font.bin", 0x0000, 0x2000, CRC(f4d62e80) SHA1(ad7e81a0c9abc224671422bbcf6f6262da92b510))
+ROM_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_REGION(0x2000,"gfx1", 0)
+ ROM_LOAD( "iskra-1030m.chr", 0x0000, 0x2000, CRC(50b162eb) SHA1(5bd7cb1705a69bd16115a4c9ed1c2748a5c8ad51))
+ROM_END
+
+ROM_START( ec1840 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_SYSTEM_BIOS(0, "v4", "EC-1840.04")
+ ROMX_LOAD( "000-04-971b.bin", 0xfe000, 0x0800, CRC(06aeaee8) SHA1(9f954e4c48156d573a8e0109e7ca652be9e6036a), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "001-04-92b7.bin", 0xff000, 0x0800, CRC(3fae650a) SHA1(c98b777fdeceadd72d6eb9465b3501b9ead55a08), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "002-04-9e17.bin", 0xfe001, 0x0800, CRC(d59712df) SHA1(02ea1b3ae9662f5c64c58920a32ca9db0f6fbd12), ROM_SKIP(1) | ROM_BIOS(1))
+ ROMX_LOAD( "003-04-3ccb.bin", 0xff001, 0x0800, CRC(7fc362c7) SHA1(538e13639ad2b4c30bd72582e323181e63513306), ROM_SKIP(1) | ROM_BIOS(1))
+
+ ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ROM_END
+
+ROM_START( ec1841 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ 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))
+
+ 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))
+
+ 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))
+
+ ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+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_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ROM_END
+
+
+ROM_START( mk88 )
+ ROM_REGION16_LE(0x100000,"maincpu", 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))
+ 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))
+ 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))
+ ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ // Here CGA rom with cyrillic support should be added
+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))
+ // 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_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ROM_END
+
+ROM_START( poisk1 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_LOAD( "b_hd_v11.rf2", 0xc8000, 0x0800, CRC(a19c39b2) SHA1(57faa56b320abf801fedbed578cf97d253e5b777)) // HDD controller ver 1.1
+ ROM_LOAD( "b942_5mb.bin", 0x00000, 0x0800, CRC(a3cfa240) SHA1(0b0aa1ce839a957153bfbbe70310480ca9fe21b6)) // HDD controller ver 1.4
+
+ ROM_LOAD( "b_ngmd_n.rf2", 0x0000, 0x0800, CRC(967e172a) SHA1(95117c40fd9f624fee08ccf37f615b16ff249688)) // Floppy
+ ROM_LOAD( "b_ngmd_t.rf2", 0x0000, 0x0800, CRC(630010b1) SHA1(50876fe4f5f4f32a242faa70f9154574cd315ec4)) // Floppy
+ ROM_SYSTEM_BIOS(0, "v89", "1989")
+ ROMX_LOAD( "biosp1s.rf4", 0xfe000, 0x2000, CRC(1a85f671) SHA1(f0e59b2c4d92164abca55a96a58071ce869ff988), ROM_BIOS(1)) // Main BIOS
+ ROM_SYSTEM_BIOS(1, "v91", "1991")
+ ROMX_LOAD( "poisk_1991.bin", 0xfe000, 0x2000, CRC(d61c56fd) SHA1(de202e1f7422d585a1385a002a4fcf9d756236e5), ROM_BIOS(2))
+ ROM_SYSTEM_BIOS(2, "t1", "Test I/O")
+ ROMX_LOAD( "p1_t_i_o.rf4", 0xfe000, 0x2000, CRC(18a781de) SHA1(7267970ee27e3ea1d972bee8e74b17bac1051619), ROM_BIOS(3))
+ ROM_SYSTEM_BIOS(3, "t2", "Test MB")
+ ROMX_LOAD( "p1_t_pls.rf4", 0xfe000, 0x2000, CRC(c8210ffb) SHA1(f2d1a6c90e4708bcc56186b2fb906fa852667084), ROM_BIOS(4))
+ ROM_SYSTEM_BIOS(4, "t3", "Test RAM")
+ ROMX_LOAD( "p1_t_ram.rf4", 0xfe000, 0x2000, CRC(e42f5a61) SHA1(ce2554eae8f0d2b6d482890dd198cf7e2d29c655), ROM_BIOS(5))
+
+ ROM_LOAD( "boot_net.rf4", 0x0000, 0x2000, CRC(316c2030) SHA1(d043325596455772252e465b85321f1b5c529d0b)) // NET BUIS
+ ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ ROM_LOAD( "poisk.cga", 0x0000, 0x0800, CRC(f6eb39f0) SHA1(0b788d8d7a8e92cc612d044abcb2523ad964c200))
+ROM_END
+
+ROM_START( poisk2 )
+ ROM_REGION16_LE(0x100000,"maincpu", 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))
+ 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))
+ 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))
+ 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))
+ 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))
+ 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))
+ ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ ROM_LOAD( "p2_ecga.rf4", 0x0000, 0x2000, CRC(d537f665) SHA1(d70f085b9b0cbd53df7c3122fbe7592998ba8fed))
+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_LOAD( "ba1m_(573rf5).rom", 0x0000, 0x0800, CRC(08d938e8) SHA1(957b6c691dbef75c1c735e8e4e81669d056971e4))
+
+ /* 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( mc1502 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_DEFAULT_BIOS("v52")
+ ROM_LOAD( "basic.rom", 0xe8000, 0x8000, CRC(173d69fa) SHA1(003f872e12f00800e22ab6bbc009d36bfde67b9d))
+ ROM_SYSTEM_BIOS(0, "v50", "v5.0")
+ ROMX_LOAD( "monitor_5_0.rom", 0xfc000, 0x4000, CRC(9e97c6a0) SHA1(16a304e8de69ec4d8b92acda6bf28454c361a24f),ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(1, "v52", "v5.2")
+ ROMX_LOAD( "monitor_5_2.rom", 0xfc000, 0x4000, CRC(0e65491e) SHA1(8a4d556473b5e0e59b05fab77c79c29f4d562412),ROM_BIOS(2))
+ ROM_SYSTEM_BIOS(2, "v531", "v5.31")
+ ROMX_LOAD( "monitor_5_31.rom", 0xfc000, 0x4000, CRC(a48295d5) SHA1(6f38977c22f9cc6c2bc6f6e53edc4048ca6b6721),ROM_BIOS(3))
+ ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
+ ROM_LOAD( "symgen.rom", 0x0000, 0x2000, CRC(b2747a52) SHA1(6766d275467672436e91ac2997ac6b77700eba1e))
+ROM_END
+
+ROM_START( m24 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROMX_LOAD("olivetti_m24_version_1.43_high.bin",0xfc001, 0x2000, CRC(04e697ba) SHA1(1066dcc849e6289b5ac6372c84a590e456d497a6), ROM_SKIP(1))
+ ROMX_LOAD("olivetti_m24_version_1.43_low.bin", 0xfc000, 0x2000, CRC(ff7e0f10) SHA1(13423011a9bae3f3193e8c199f98a496cab48c0f), ROM_SKIP(1))
+
+ /* 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( m240 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROMX_LOAD("olivetti_m240_pch5_2.04_high.bin", 0xf8001, 0x4000, CRC(ceb97b59) SHA1(84fabbeab355e0a4c9445910f2b7d1ec98886642), ROM_SKIP(1))
+ ROMX_LOAD("olivetti_m240_pch6_2.04_low.bin", 0xf8000, 0x4000, CRC(c463aa94) SHA1(a30c763c1ace9f3ff79e7136b252d624108a50ae), ROM_SKIP(1))
+
+ /* 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( ibm5550 )
+ ROM_REGION16_LE(0x100000,"maincpu", 0)
+ ROM_LOAD( "ipl5550.rom", 0xfc000, 0x4000, CRC(40cf34c9) SHA1(d41f77fdfa787b0e97ed311e1c084b8699a5b197))
+
+ /* IBM 1501981(CGA) and 1501985(MDA) Character rom */
+ ROM_REGION(0x2000,"gfx1", 0) /* original font rom is undumped */
+ ROM_LOAD("5788005.u33", 0x00000, 0x2000, BAD_DUMP CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
+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))
+
+ /* 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( olivm15 )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD( "oliv_m15.bin",0xfc000, 0x04000, CRC(bf2ef795) SHA1(02d497131f5ca2c78f2accd38ab0eab6813e3ebf))
+ROM_END
+
+// Siemens PC-D (80186)
+ROM_START( pcd )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD16_BYTE( "sni_pcd1.bin", 0xfc001, 0x2000, CRC(e20244dd) SHA1(0ebc5ddb93baacd9106f1917380de58aac64fe73))
+ ROM_LOAD16_BYTE( "sni_pcd2.bin", 0xfc000, 0x2000, CRC(e03db2ec) SHA1(fcae8b0c9e7543706817b0a53872826633361fda))
+ /* IBM 1501981(CGA) and 1501985(MDA) Character rom */
+ ROM_REGION(0x2000,"gfx1", 0) /* original font rom is undumped */
+ ROM_LOAD("5788005.u33", 0x00000, 0x2000, BAD_DUMP CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
+ROM_END
+
+ROM_START( olypeopl )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD16_BYTE( "uo1271c0.bin", 0xfe000, 0x1000, CRC(c9187bce) SHA1(464e1f96046657b49afa4223ede1040650643d58))
+ ROM_LOAD16_BYTE( "uo1271d0.bin", 0xfe001, 0x1000, CRC(10e6437b) SHA1(0b77bb7a62f0a8240602f4cdcc3d6765e62894f4))
+ /* IBM 1501981(CGA) and 1501985(MDA) Character rom */
+ ROM_REGION(0x2000,"gfx1", 0) /* original font rom is undumped */
+ ROM_LOAD("5788005.u33", 0x00000, 0x2000, BAD_DUMP CRC(0bf56d70) SHA1(c2a8b10808bf51a3c123ba3eb1e9dd608231916f)) /* "AMI 8412PI // 5788005 // (C) IBM CORP. 1981 // KOREA" */
+ROM_END
+
+ROM_START( sx16 )
+ ROM_REGION(0x100000,"maincpu", 0)
+ ROM_LOAD( "tmm27128ad.bin",0xfc000, 0x4000, CRC(f8543362) SHA1(fef625e260ca89ba02174584bdc12db609f0780e))
+ /* 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
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
+COMP( 1984, dgone, ibm5150, 0, pccga, pccga, pc_state, pccga, "Data General", "Data General/One" , GAME_NOT_WORKING)/* CGA, 2x 3.5" disk drives */
+COMP( 1985, bw230, ibm5150, 0, pccga, bondwell, pc_state, bondwell, "Bondwell Holding", "BW230 (PRO28 Series)", 0 )
+COMP( 1988, europc, ibm5150, 0, europc, europc, pc_state, europc, "Schneider Rdf. AG", "EURO PC", GAME_NOT_WORKING)
+
+// pcjr (better graphics, better sound)
+COMP( 1983, ibmpcjr, ibm5150, 0, ibmpcjr, tandy1t, pc_state, pcjr, "International Business Machines", "IBM PC Jr", GAME_IMPERFECT_COLORS )
+COMP( 1985, ibmpcjx, ibm5150, 0, ibmpcjx, tandy1t, pc_state, pcjr, "International Business Machines", "IBM PC JX", GAME_IMPERFECT_COLORS | GAME_NOT_WORKING)
+
+// tandy 1000
+COMP( 1987, t1000hx, ibm5150, 0, t1000hx, tandy1t, pc_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 HX", 0)
+COMP( 1987, t1000sx, ibm5150, 0, t1000hx, tandy1t, pc_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 SX", GAME_NOT_WORKING)
+COMP( 1987, t1000tx, ibm5150, 0, t1000_286, tandy1t, pc_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 TX", 0)
+COMP( 1989, t1000rl, ibm5150, 0, t1000_16, tandy1t, pc_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 RL", 0)
+COMP( 1989, t1000tl2, ibm5150, 0, t1000_286, tandy1t, pc_state, t1000hx, "Tandy Radio Shack", "Tandy 1000 TL/2", 0)
+
+COMP( 1989, iskr1031, ibm5150, 0, iskr1031, pccga, pc_state, pccga, "Schetmash", "Iskra 1031", GAME_NOT_WORKING)
+COMP( 1989, iskr1030m, ibm5150, 0, iskr1031, pccga, pc_state, pccga, "Schetmash", "Iskra 1030M", GAME_NOT_WORKING)
+COMP( 1992, iskr3104, ibm5150, 0, iskr3104, pcega, pc_state, pccga, "Schetmash", "Iskra 3104", GAME_NOT_WORKING)
+COMP( 1987, ec1840, ibm5150, 0, iskr1031, pccga, pc_state, pccga, "<unknown>", "EC-1840", GAME_NOT_WORKING)
+COMP( 1987, ec1841, ibm5150, 0, ec1841, pccga, pc_state, pccga, "<unknown>", "EC-1841", GAME_NOT_WORKING)
+COMP( 1989, ec1845, ibm5150, 0, iskr1031, pccga, pc_state, pccga, "<unknown>", "EC-1845", GAME_NOT_WORKING)
+COMP( 1989, mk88, ibm5150, 0, iskr1031, pccga, pc_state, pccga, "<unknown>", "MK-88", GAME_NOT_WORKING)
+COMP( 1990, poisk1, ibm5150, 0, iskr1031, pccga, pc_state, pccga, "<unknown>", "Poisk-1", GAME_NOT_WORKING)
+COMP( 1991, poisk2, ibm5150, 0, poisk2, pccga, pc_state, pccga, "<unknown>", "Poisk-2", GAME_NOT_WORKING)
+COMP( 1990, mc1702, ibm5150, 0, pccga, pccga, pc_state, pccga, "<unknown>", "Elektronika MC-1702", GAME_NOT_WORKING)
+COMP( 1989, mc1502, ibm5150, 0, mc1502, mc1502, pc_state, mc1502, "NPO Microprocessor", "Elektronika MC-1502", GAME_NOT_WORKING | GAME_NO_SOUND)
+
+COMP( 1987, zdsupers, ibm5150, 0, zenith, pccga, pc_state, pccga, "Zenith Data Systems", "SuperSport", 0)
+
+COMP( 1983, m24, ibm5150, 0, olivetti, pccga, pc_state, pccga, "Olivetti", "M24", GAME_NOT_WORKING)
+COMP( 1987, m240, ibm5150, 0, olivetti, pccga, pc_state, pccga, "Olivetti", "M240", GAME_NOT_WORKING)
+COMP( 198?, olivm15, ibm5150, 0, olivm15, 0, driver_device, 0, "Olivetti", "M15", GAME_NOT_WORKING | GAME_NO_SOUND)
+
+COMP( 1983, ibm5550, ibm5150, 0, ibm5550, pccga, pc_state, pccga, "International Business Machines", "IBM 5550", GAME_NOT_WORKING)
+
+COMP( 1985, pc7000, ibm5150, 0, pccga, pccga, pc_state, pccga, "Sharp", "PC-7000", GAME_NOT_WORKING)
+
+COMP( 198?, pcd, ibm5150, 0, pccga, pccga, pc_state, pccga, "Siemens", "PC-D", GAME_NOT_WORKING)
+COMP( 198?, olypeopl, ibm5150, 0, pccga, pccga, pc_state, pccga, "Olympia", "People PC", GAME_NOT_WORKING)
+COMP( 1988, sx16, ibm5150, 0, pccga, pccga, pc_state, pccga, "Sanyo", "SX-16", GAME_NOT_WORKING)