summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2021-04-24 17:34:19 +0200
committer Dirk Best <mail@dirk-best.de>2021-04-24 17:35:04 +0200
commitc8a03b045786792d4173266fa5b7f74f605b3922 (patch)
tree4034e142d3d0db3c1fbe079926b216565f6517d1
parent61a464ce4188fcda8cd59999d3e34810578838d1 (diff)
basf7100: Add softlist, map more keys, mark working
-rw-r--r--hash/basf7100.xml31
-rw-r--r--src/mame/drivers/basf7100.cpp7
-rw-r--r--src/mame/machine/basf7100_kbd.cpp30
3 files changed, 51 insertions, 17 deletions
diff --git a/hash/basf7100.xml b/hash/basf7100.xml
new file mode 100644
index 00000000000..df77c551efd
--- /dev/null
+++ b/hash/basf7100.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+<!--
+license:CC0
+-->
+
+<softwarelist name="basf7100" description="BASF 7100 floppy disks">
+
+ <software name="bos93">
+ <description>BOS 9.3</description>
+ <year>198?</year>
+ <publisher>BASF</publisher>
+ <part name="flop1" interface="floppy_5_25">
+ <dataarea name="flop" size="819200">
+ <rom name="bos93.td0" size="99887" crc="8959f98a" sha1="5f81d4f1f1e1b5eaebf211c6a2738e895bcf1bec" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="bkurs">
+ <description>BASIC-Kurs</description>
+ <year>198?</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <part name="flop1" interface="floppy_5_25">
+ <dataarea name="flop" size="819200">
+ <rom name="bkurs.td0" size="81863" crc="2cea78e6" sha1="9a8efff663d4467e8198593d85db7dfd298bd98c" />
+ </dataarea>
+ </part>
+ </software>
+
+</softwarelist>
diff --git a/src/mame/drivers/basf7100.cpp b/src/mame/drivers/basf7100.cpp
index 21b929a0409..bef21fd0e44 100644
--- a/src/mame/drivers/basf7100.cpp
+++ b/src/mame/drivers/basf7100.cpp
@@ -40,7 +40,7 @@
TODO:
- Dump real character ROM
- Improve video emulation
- - Find documentation for switches S2, S3, S4 (might app. specific)
+ - Find documentation for switches S2, S3, S4 (might be app. specific)
- Serial interrupts, flags, control
Notes:
@@ -582,6 +582,7 @@ void basf7100_state::machine_start()
save_item(NAME(m_sod));
save_item(NAME(m_fdc_intrq_vector));
save_item(NAME(m_fdc_drq));
+ save_item(NAME(m_int_flags));
}
void basf7100_state::machine_reset()
@@ -693,6 +694,8 @@ void basf7100_state::basf7100(machine_config &config)
FLOPPY_CONNECTOR(config, "fdc:1", basf7100_floppies, "basf6106", floppy_image_device::default_mfm_floppy_formats);
FLOPPY_CONNECTOR(config, "fdc:2", basf7100_floppies, "basf6106", floppy_image_device::default_mfm_floppy_formats);
+ SOFTWARE_LIST(config, "floppy_list").set_original("basf7100");
+
// keyboard
basf7100_kbd_device &keyboard(BASF7100_KBD(config, "keyboard"));
keyboard.int_handler().set(m_ppi[0], FUNC(i8255_device::pc2_w));
@@ -730,4 +733,4 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1982, basf7120, 0, 0, basf7100, basf7100, basf7100_state, empty_init, "BASF", "7120", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1982, basf7120, 0, 0, basf7100, basf7100, basf7100_state, empty_init, "BASF", "7120", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/machine/basf7100_kbd.cpp b/src/mame/machine/basf7100_kbd.cpp
index bbca83c7f1a..8b893ee9f47 100644
--- a/src/mame/machine/basf7100_kbd.cpp
+++ b/src/mame/machine/basf7100_kbd.cpp
@@ -103,7 +103,7 @@ static INPUT_PORTS_START( keyboard )
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(UCHAR_MAMEKEY(ENTER)) PORT_NAME("RETURN")
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA_PAD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) PORT_NAME("Keypad .")
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LF")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10)) PORT_NAME("LF")
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_UNUSED) // sends keycode for "-", but not on keyboard
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
@@ -114,7 +114,7 @@ static INPUT_PORTS_START( keyboard )
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11)) PORT_NAME("DEL")
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -128,11 +128,11 @@ static INPUT_PORTS_START( keyboard )
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CANCEL) PORT_CHAR(UCHAR_MAMEKEY(CANCEL)) PORT_NAME("BREAK")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_NAME("BREAK")
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("FUNCT")
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("FUNCT")
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0xf800, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -142,9 +142,9 @@ static INPUT_PORTS_START( keyboard )
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CLEAR")
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9)) PORT_NAME("CLEAR")
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("INS CHAR")
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("INS LINE")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("INS LINE")
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME("\xe2\x86\x90") // ←
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_NAME("ENTER")
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
@@ -166,15 +166,15 @@ static INPUT_PORTS_START( keyboard )
PORT_BIT(0xf800, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("row_8")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
- PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
- PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CLR EOS")
- PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("DEL CHAR")
- PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL LINE")
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("\xe2\x86\x92") // →
- PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SOM EOM")
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
+ PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
+ PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8)) PORT_NAME("CLR EOS")
+ PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("DEL CHAR")
+ PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("DEL LINE")
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("\xe2\x86\x92") // →
+ PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("SOM EOM")
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0xf800, IP_ACTIVE_HIGH, IPT_UNUSED)