summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2021-07-22 22:08:57 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2021-07-22 22:08:57 +1000
commit7fe01c8ff0dbf5c6c2539dc000b8ee9a498cd221 (patch)
treec4a12ea368158c92a4d1ce30202c3ecf27678b25
parente76c745eaacab98baa69052275d26c4f612639cd (diff)
New working software list additions
----------------------------------- pdp1_ptp: Spacewar!, Munching Squares, DDT [Robbbert]
-rw-r--r--hash/pdp1_ptp.xml78
-rw-r--r--src/mame/drivers/pdp1.cpp2
-rw-r--r--src/mame/includes/pdp1.h3
3 files changed, 83 insertions, 0 deletions
diff --git a/hash/pdp1_ptp.xml b/hash/pdp1_ptp.xml
new file mode 100644
index 00000000000..ec3bbf729c2
--- /dev/null
+++ b/hash/pdp1_ptp.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+<!--
+license:CC0
+
+Note that there are multiple versions of Spacewar and Munching. The ones used here were chosen at random after confirming they worked.
+
+-->
+<softwarelist name="pdp1_ptp" description="PDP-1 Paper Tape Reader images">
+
+<!-- Spacewar!
+
+Load with Ctrl-Enter
+
+
+Action Fat Ship Thin Ship
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Turn Left S Right-arrow
+Turn Right A Left-arrow
+Thrust D Up-arrow
+Fire F Down-arrow
+Hyperspace Z /
+
+
+Miscellaneous
+~~~~~~~~~~~~~
+Toggle on/off main star and its gravity: Num-6
+Toggle on/off background stars: Num-4 -->
+
+ <software name="spacewar">
+ <description>Spacewar!</description>
+ <year>1962</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <info name="usage" value="Hold Ctrl, hit Enter. Fat ship = S,A,D,F,Z. Thin ship = arrows and slash. See software list for more info." />
+ <part name="ptp" interface="pdp1_ptp">
+ <dataarea name="ptap" size="0x3b0c">
+ <rom name="spacewar.rim" size="0x3b0c" crc="dd16c4c9" sha1="7ab31f3330362b993097ed0d57ad0d6e83c17c6d"/>
+ </dataarea>
+ </part>
+ </software>
+
+
+<!-- Munching Squares
+
+Load with Ctrl-Enter
+
+
+At start, it will appear to do nothing. You need to adjust one or more
+of the test-word switches (Ctrl+A/S/D/F/G/H/J/K/L/;/\/Z/X/C/V/B/N).
+
+Ctrl+J,K or L will produce the "expected" square patterns. -->
+
+ <software name="munching">
+ <description>Munching Squares</description>
+ <year>1962</year>
+ <publisher>&lt;unknown&gt;</publisher>
+ <info name="usage" value="Hold Ctrl, hit Enter. Press Ctrl J to see patterns. See software list for more info." />
+ <part name="ptp" interface="pdp1_ptp">
+ <dataarea name="ptap" size="0x0036">
+ <rom name="munching.rim" size="0x0036" crc="f0c4436e" sha1="e0ca64612744470107ee3c4fb761a6c2ada96854"/>
+ </dataarea>
+ </part>
+ </software>
+
+<!-- World's first interactive debugger. Operation is quite complex, recommended to download the manual and go from there. -->
+ <software name="ddt">
+ <description>DDT debugger</description>
+ <year>1964</year>
+ <publisher>DEC</publisher>
+ <info name="usage" value="Hold Ctrl, hit Enter. Download and read the manual." />
+ <part name="ptp" interface="pdp1_ptp">
+ <dataarea name="ptap" size="0x1a6b">
+ <rom name="ddt.rim" size="0x1a6b" crc="1f63add7" sha1="ce6ec048a7523b49af3d59763a47cd6a84cc0d67"/>
+ </dataarea>
+ </part>
+ </software>
+
+</softwarelist>
diff --git a/src/mame/drivers/pdp1.cpp b/src/mame/drivers/pdp1.cpp
index 504bbbc7d62..980c6740601 100644
--- a/src/mame/drivers/pdp1.cpp
+++ b/src/mame/drivers/pdp1.cpp
@@ -1826,6 +1826,8 @@ void pdp1_state::pdp1(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pdp1);
PALETTE(config, m_palette, FUNC(pdp1_state::pdp1_palette), total_colors_needed + std::size(pdp1_pens), total_colors_needed);
+
+ SOFTWARE_LIST(config, "ptp_list").set_original("pdp1_ptp");
}
/*
diff --git a/src/mame/includes/pdp1.h b/src/mame/includes/pdp1.h
index c40d4fc739c..d96d7470381 100644
--- a/src/mame/includes/pdp1.h
+++ b/src/mame/includes/pdp1.h
@@ -12,6 +12,7 @@
#include "cpu/pdp1/pdp1.h"
#include "video/crt.h"
#include "emupal.h"
+#include "softlist_dev.h"
/* defines for each bit and mask in input port "CSW" */
enum
@@ -177,6 +178,7 @@ class pdp1_readtape_image_device : public device_t,
public:
// construction/destruction
pdp1_readtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0U);
+ virtual const char *image_interface() const noexcept override { return "pdp1_ptp"; }
auto st_ptr() { return m_st_ptr.bind(); }
@@ -201,6 +203,7 @@ protected:
virtual image_init_result call_load() override;
virtual void call_unload() override;
+ virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); }
public:
TIMER_CALLBACK_MEMBER(reader_callback);