diff options
author | 2020-02-18 22:51:46 -0500 | |
---|---|---|
committer | 2020-02-18 22:51:46 -0500 | |
commit | e95e2a743dc303d4229d5204a9a3dff98bdab1fe (patch) | |
tree | bf6392b525eda33afe4655845e154938f4526b91 /src | |
parent | 2c586719a2570fad5f85826f09c88031ac5f3fee (diff) |
apple2: figured out C800 banking on the Applesurance card, it now works 100% (nw)
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/bus/a2bus/a2diskiing.cpp | 19 | ||||
-rw-r--r-- | src/devices/bus/a2bus/a2diskiing.h | 13 |
2 files changed, 25 insertions, 7 deletions
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 |