From e95e2a743dc303d4229d5204a9a3dff98bdab1fe Mon Sep 17 00:00:00 2001 From: arbee Date: Tue, 18 Feb 2020 22:51:46 -0500 Subject: apple2: figured out C800 banking on the Applesurance card, it now works 100% (nw) --- bgfx/chains/hlsl.json | 8 ++++---- src/devices/bus/a2bus/a2diskiing.cpp | 19 ++++++++++++++++++- src/devices/bus/a2bus/a2diskiing.h | 13 +++++++------ 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/bgfx/chains/hlsl.json b/bgfx/chains/hlsl.json index ee76366efaa..3bdddddf46c 100644 --- a/bgfx/chains/hlsl.json +++ b/bgfx/chains/hlsl.json @@ -58,12 +58,12 @@ { "type": "intenum", "name": "adjustments", "text": "Enable Adjustments", "default": 1, "max": 1, "min": 0, "step": 1, "format": "%s", "screen": "any", "strings": [ "Off", "On" ] }, { "type": "intenum", "name": "ntsc", "text": "Enable NTSC", "default": 0, "max": 1, "min": 0, "step": 1, "format": "%s", "screen": "any", "strings": [ "Off", "On" ] }, - { "type": "float", "name": "a_value", "text": "NTSC A Value", "default": 0.50, "max": 1.00, "min": 0.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, - { "type": "float", "name": "b_value", "text": "NTSC B Value", "default": 0.50, "max": 1.00, "min": 0.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, + { "type": "float", "name": "a_value", "text": "NTSC A Value", "default": 0.00, "max": 1.00, "min": 0.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, + { "type": "float", "name": "b_value", "text": "NTSC B Value", "default": 0.00, "max": 1.00, "min": 0.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, { "type": "float", "name": "cc_value", "text": "NTSC Color Carrier (Hz)", "default": 3.57954, "max": 3.67954, "min": 3.47954, "step": 0.00001, "format": "%1.5f", "screen": "raster" }, { "type": "float", "name": "o_value", "text": "NTSC Outgoing Phase Offset", "default": 0.00, "max": 1.00, "min": 0.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, { "type": "float", "name": "p_value", "text": "NTSC Incoming Phase Pixel Clock Scale", "default": 1.00, "max": 2.00, "min": 0.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, - { "type": "float", "name": "scan_time", "text": "NTSC Scanline Duration (uSec)", "default": 52.60, "max": 150.00, "min": 1.00, "step": 0.1, "format": "%3.1f", "screen": "raster" }, + { "type": "float", "name": "scan_time", "text": "NTSC Scanline Duration (uSec)", "default": 39.10, "max": 150.00, "min": 1.00, "step": 0.1, "format": "%3.1f", "screen": "raster" }, { "type": "float", "name": "notch_width", "text": "NTSC Color Notch Filter Width", "default": 2.00, "max": 4.00, "min": 1.00, "step": 0.01, "format": "%1.2f", "screen": "raster" }, { "type": "float", "name": "y_freq_response", "text": "NTSC Y Signal Bandwidth (Hz)", "default": 6.00, "max": 21.00, "min": 0.00, "step": 0.01, "format": "%2.2f", "screen": "raster" }, { "type": "float", "name": "i_freq_response", "text": "NTSC I Signal Bandwidth (Hz)", "default": 1.20, "max": 21.00, "min": 0.00, "step": 0.01, "format": "%2.2f", "screen": "raster" }, @@ -583,4 +583,4 @@ "output": "output" } ] -} \ No newline at end of file +} diff --git a/src/devices/bus/a2bus/a2diskiing.cpp b/src/devices/bus/a2bus/a2diskiing.cpp index 72051c191a9..9ce3a0df64c 100644 --- a/src/devices/bus/a2bus/a2diskiing.cpp +++ b/src/devices/bus/a2bus/a2diskiing.cpp @@ -117,7 +117,8 @@ a2bus_diskiing13_device::a2bus_diskiing13_device(const machine_config &mconfig, } a2bus_applesurance_device::a2bus_applesurance_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - diskiing_device(mconfig, A2BUS_APPLESURANCE, tag, owner, clock) + diskiing_device(mconfig, A2BUS_APPLESURANCE, tag, owner, clock), + m_c800_bank(1) { } @@ -170,5 +171,21 @@ uint8_t a2bus_applesurance_device::read_cnxx(uint8_t offset) uint8_t a2bus_applesurance_device::read_c800(uint16_t offset) { + if (offset == 0x7ff) + { + m_c800_bank = 1; + } + + if (!m_c800_bank) + { + return m_rom[offset]; + } + return m_rom[offset+0x800]; } + +void a2bus_applesurance_device::device_reset() +{ + m_c800_bank = 1; + diskiing_device::device_reset(); +} diff --git a/src/devices/bus/a2bus/a2diskiing.h b/src/devices/bus/a2bus/a2diskiing.h index 1e6e883258f..a282d75ea01 100644 --- a/src/devices/bus/a2bus/a2diskiing.h +++ b/src/devices/bus/a2bus/a2diskiing.h @@ -78,22 +78,23 @@ public: protected: virtual const tiny_rom_entry *device_rom_region() const override; + virtual void device_reset() override; + virtual uint8_t read_cnxx(uint8_t offset) override; virtual uint8_t read_c800(uint16_t offset) override; - virtual void write_cnxx(uint8_t offset, uint8_t data) override - { - printf("write %x to cn00 + %x\n", data, offset); - } - virtual void write_c800(uint16_t offset, uint8_t data) override { - printf("write %x to c800 + %x\n", data, offset); + if (offset == 0x7ff) + { + m_c800_bank = data & 1; + } } virtual bool take_c800() override { return true; } private: + int m_c800_bank; }; // device type definition -- cgit v1.2.3