From 12243c40ad9a09b76a037a9cf95fe734c570179b Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 5 Jun 2016 09:06:59 -0400 Subject: [PATCH] Kicking the ball a little further down the road, ROMs and PRGs now reach the actual emulated machine. --- Machines/Vic-20/Vic20.cpp | 8 ++++++++ Machines/Vic-20/Vic20.hpp | 10 ++++++++++ OSBindings/Mac/Clock Signal/Wrappers/CSVic20.h | 2 +- OSBindings/Mac/Clock Signal/Wrappers/CSVic20.mm | 10 +++++++++- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Machines/Vic-20/Vic20.cpp b/Machines/Vic-20/Vic20.cpp index e3e3b5e2b..008fcf955 100644 --- a/Machines/Vic-20/Vic20.cpp +++ b/Machines/Vic-20/Vic20.cpp @@ -14,3 +14,11 @@ unsigned int Machine::perform_bus_operation(CPU6502::BusOperation operation, uin { return 1; } + +void Machine::set_rom(ROMSlot slot, size_t length, const uint8_t *data) +{ +} + +void Machine::add_prg(size_t length, const uint8_t *data) +{ +} diff --git a/Machines/Vic-20/Vic20.hpp b/Machines/Vic-20/Vic20.hpp index 03d79654b..e7a0ee4d0 100644 --- a/Machines/Vic-20/Vic20.hpp +++ b/Machines/Vic-20/Vic20.hpp @@ -14,8 +14,18 @@ namespace Vic20 { +enum ROMSlot { + ROMSlotKernel, + ROMSlotBASIC, + ROMSlotCharacters, +}; + class Machine: public CPU6502::Processor, public CRTMachine::Machine { public: + + void set_rom(ROMSlot slot, size_t length, const uint8_t *data); + void add_prg(size_t length, const uint8_t *data); + // to satisfy CPU6502::Processor unsigned int perform_bus_operation(CPU6502::BusOperation operation, uint16_t address, uint8_t *value); void synchronise() {} diff --git a/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.h b/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.h index 6e5446a40..3a8339dd6 100644 --- a/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.h +++ b/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.h @@ -14,6 +14,6 @@ - (void)setKernelROM:(nonnull NSData *)rom; - (void)setBASICROM:(nonnull NSData *)rom; - (void)setCharactersROM:(nonnull NSData *)rom; -- (void)setPRG:(nonnull NSData *)rom; +- (void)setPRG:(nonnull NSData *)prg; @end diff --git a/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.mm b/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.mm index 570ccb0a2..cee3469d3 100644 --- a/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.mm +++ b/OSBindings/Mac/Clock Signal/Wrappers/CSVic20.mm @@ -18,16 +18,24 @@ return &_vic20; } +- (void)setROM:(nonnull NSData *)rom slot:(Vic20::ROMSlot)slot { + _vic20.set_rom(slot, rom.length, (const uint8_t *)rom.bytes); +} + - (void)setKernelROM:(nonnull NSData *)rom { + [self setROM:rom slot:Vic20::ROMSlotKernel]; } - (void)setBASICROM:(nonnull NSData *)rom { + [self setROM:rom slot:Vic20::ROMSlotBASIC]; } - (void)setCharactersROM:(nonnull NSData *)rom { + [self setROM:rom slot:Vic20::ROMSlotCharacters]; } -- (void)setPRG:(nonnull NSData *)rom address:(uint16_t)address { +- (void)setPRG:(nonnull NSData *)prg { + _vic20.add_prg(prg.length, (const uint8_t *)prg.bytes); } - (void)setKey:(uint16_t)key isPressed:(BOOL)isPressed {