summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/miniforce.cpp
diff options
context:
space:
mode:
author Joakim Larsson Edstrom <joakimlarsson42@gmail.com>2017-01-06 00:18:04 +0100
committer Joakim Larsson Edstrom <joakimlarsson42@gmail.com>2017-01-06 00:18:04 +0100
commit9bd33d008230d80d06471b084bd11bc92c34002f (patch)
tree60cb4ad93c15a874aca772a8e6d70a1fe49b0e26 /src/mame/drivers/miniforce.cpp
parent983496ba03894a9b9d9b0207ecd852c345f58dc2 (diff)
WIP: miniFORCE 2P21 chassi
Diffstat (limited to 'src/mame/drivers/miniforce.cpp')
-rw-r--r--src/mame/drivers/miniforce.cpp164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/mame/drivers/miniforce.cpp b/src/mame/drivers/miniforce.cpp
new file mode 100644
index 00000000000..232019943eb
--- /dev/null
+++ b/src/mame/drivers/miniforce.cpp
@@ -0,0 +1,164 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstrom
+/***************************************************************************
+ *
+ * Force miniForce 2P/32 driver
+ *
+ * 24/12/2016
+ *
+ * Thanks to Al Kossow and his site http://www.bitsavers.org/ I got the information
+ * required to start the work with this driver.
+ *
+ * +=============================================================================================================================+
+ * | CPU-20 | | | | | | |WFC-1| | SYS68K/PWR-09A | SYS68K/WFMOD-50 |
+ * | | | | | | | | | | | |
+ * | RST | | | | | | |O RUN| | | |
+ * | ABT | | | | | | | R/L | |O +5v |+---------------------------------------------+|
+ * | | | | | | | |O LOC| |O +12v || ||
+ * |O RUN O RUN| | | | | | |O ERR| |O -12v || ||
+ * |O HLT | | | | | | |O BSY| |O ON || ||
+ * |O BM | | | | | | | | | || ||
+ * | | | | | | | | | | |+---------------------------------------------+|
+ * |O FLM O SL0| | | | | | | | | || FDD ||
+ * |O EPR O SL1| | | | | | | | | || ||
+ * |O 2WS | | | | | | | | | +-------+ || ||
+ * |O 4WS | | | | | | | | | | o |PWR || ||
+ * |O 6WS | | | | | | | | | | | |+---------------------------------------------+|
+ * |O 8WS | | | | | | | | | +-------+ | |
+ * |O12WS | | | | | | | | | | |
+ * |O14WS | | | | | | | | | |+---------------------------------------------+|
+ * | | | | | | | | | | || HDD ||
+ * | CSH | | | | | | | | | || ||
+ * | R/M | | | | | | | | | || ||
+ * | | | | | | | | | | || ||
+ * | o | | | | | | | | | |+---------------------------------------------+|
+ * | o | | | | | | | | | || ||
+ * | o | | | | | | | | | || ||
+ * | o | | | | | | | | | || ||
+ * | RS232/422 | | | | | | | | | || ||
+ * | P4 P3 | | | | | | | | | |+---------------------------------------------+|
+ * | | | | | | | | | | | |
+ * |SLOT1|SLOT2|SLOT3|SLOT4|SLOT5|SLOT6|SLOT7|SLOT7|SLOT9| | | |
+ * +=============================================================================================================================+
+ *
+ * History of Force Computers
+ *---------------------------
+ * See fccpu30.cpp
+ *
+ * Misc links about Force Computes and this board:
+ *------------------------------------------------
+ * http://bitsavers.trailing-edge.com/pdf/forceComputers/
+ *
+ * Description, from datasheets etc
+ * --------------------------------
+ * - Desktop station for 32 bit VMEbus environments
+ * - Two 9 slot motherboards for A32/D32 wide VMEbus (Pl,P2)
+ * - 280W power supply to drive VMEbus and mass storage memory
+ * - 7HE 19 inch metal chassis including modules for drives,
+ * power supply and connectors (344mm x 520mm x 400mm).
+ * - High modularity(!)
+ * - One 1HE fan module including 3 fans for optimal cooling
+ * - Flexible mounting and very little time expenditure for
+ * repairs through modularity
+ * - Status indicators and switches of the VME boards are
+ * directly accessible on the front of the system
+ * - One 5 1/4" full height space for the floppy drive
+ * - One 5 1/4" full height space for the winchester drive
+ * - Up to 6 free slots for system expansion
+ *
+ */
+#include "emu.h"
+#include "bus/vme/vme.h"
+#include "bus/vme/vme_fcisio.h"
+#include "bus/vme/vme_fcscsi.h"
+#include "machine/clock.h"
+
+#define LOG_GENERAL 0x01
+#define LOG_SETUP 0x02
+#define LOG_PRINTF 0x04
+
+#define VERBOSE 0 // (LOG_PRINTF | LOG_SETUP | LOG_GENERAL)
+
+#define LOGMASK(mask, ...) do { if (VERBOSE & mask) logerror(__VA_ARGS__); } while (0)
+#define LOGLEVEL(mask, level, ...) do { if ((VERBOSE & mask) >= level) logerror(__VA_ARGS__); } while (0)
+
+#define LOG(...) LOGMASK(LOG_GENERAL, __VA_ARGS__)
+#define LOGSETUP(...) LOGMASK(LOG_SETUP, __VA_ARGS__)
+
+#if VERBOSE & LOG_PRINTF
+#define logerror printf
+#endif
+
+#ifdef _MSC_VER
+#define FUNCNAME __func__
+#else
+#define FUNCNAME __PRETTY_FUNCTION__
+#endif
+
+class miniforce_state : public driver_device
+{
+public:
+miniforce_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device (mconfig, type, tag)
+ {
+ }
+ virtual void machine_start () override;
+ virtual void machine_reset () override;
+};
+
+#if 0
+static ADDRESS_MAP_START (miniforce_mem, AS_PROGRAM, 32, miniforce_state)
+ ADDRESS_MAP_UNMAP_HIGH
+/* The ROMs contains an OS9 bootloader. It is position independent but reset vector suggests that it sits flat on adress 0 (zero) */
+// AM_RANGE (0x000000, 0x003fff) AM_ROM AM_REGION("roms", 0x000000) /* System EPROM Area 16Kb OS9 DEBUG - not verified */
+// AM_RANGE (0x004000, 0x01ffff) AM_ROM AM_REGION("roms", 0x004000)/* System EPROM Area 112Kb for System ROM - not verified */
+// AM_RANGE (0x020000, 0x03ffff) AM_RAM /* Not verified */
+// AM_RANGE (0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */
+// AM_RANGE (0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */
+ADDRESS_MAP_END
+#endif
+
+/* Start it up */
+void miniforce_state::machine_start()
+{
+ LOG("%s\n", FUNCNAME);
+}
+
+/* Start it up */
+void miniforce_state::machine_reset()
+{
+ LOG("%s\n", FUNCNAME);
+}
+
+/* Input ports */
+static INPUT_PORTS_START (miniforce)
+INPUT_PORTS_END
+
+static SLOT_INTERFACE_START(miniforce_vme_cards)
+ SLOT_INTERFACE("fcisio", VME_FCISIO1)
+ SLOT_INTERFACE("fcscsi", VME_FCSCSI1)
+SLOT_INTERFACE_END
+
+/*
+ * Machine configuration
+ */
+MACHINE_CONFIG_START (miniforce, miniforce_state)
+// MCFG_CPU_PROGRAM_MAP (miniforce_mem)
+ MCFG_VME_DEVICE_ADD("vme")
+ MCFG_VME_SLOT_ADD ("vme", "slot1", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot2", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot3", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot4", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot5", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot6", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot7", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot8", miniforce_vme_cards, nullptr)
+ MCFG_VME_SLOT_ADD ("vme", "slot9", miniforce_vme_cards, nullptr)
+MACHINE_CONFIG_END
+
+ROM_START(miniforce)
+ROM_END
+
+/* Drivers TODO: setup distinct miniforce machine configurations */
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP (1987, miniforce, 0, 0, miniforce, miniforce, driver_device, 0, "Force Computers", "miniFORCE", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER )