This commit is contained in:
folkert van heusden 2024-04-25 01:39:42 +02:00
parent 2c107865c0
commit 54836067b5
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1
6 changed files with 46 additions and 20 deletions

1
ESP32/device.h Symbolic link
View file

@ -0,0 +1 @@
../device.h

20
device.h Normal file
View file

@ -0,0 +1,20 @@
#pragma once
class device
{
public:
device() {
}
virtual ~device() {
}
virtual void reset() = 0;
virtual uint8_t readByte(const uint16_t addr) = 0;
virtual uint16_t readWord(const uint16_t addr) = 0;
virtual void writeByte(const uint16_t addr, const uint8_t v) = 0;
virtual void writeWord(const uint16_t addr, const uint16_t v) = 0;
};

View file

@ -109,7 +109,7 @@ void rk05::writeByte(const uint16_t addr, const uint8_t v)
writeWord(addr, vtemp); writeWord(addr, vtemp);
} }
void rk05::writeWord(const uint16_t addr, uint16_t v) void rk05::writeWord(const uint16_t addr, const uint16_t v)
{ {
const int reg = (addr - RK05_BASE) / 2; const int reg = (addr - RK05_BASE) / 2;

13
rk05.h
View file

@ -9,6 +9,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "device.h"
#include "disk_backend.h" #include "disk_backend.h"
@ -24,7 +25,7 @@
class bus; class bus;
class rk05 class rk05 : public device
{ {
private: private:
bus *const b { nullptr }; bus *const b { nullptr };
@ -42,11 +43,11 @@ public:
rk05(const std::vector<disk_backend *> & files, bus *const b, std::atomic_bool *const disk_read_acitivity, std::atomic_bool *const disk_write_acitivity); rk05(const std::vector<disk_backend *> & files, bus *const b, std::atomic_bool *const disk_read_acitivity, std::atomic_bool *const disk_write_acitivity);
virtual ~rk05(); virtual ~rk05();
void reset(); void reset() override;
uint8_t readByte(const uint16_t addr); uint8_t readByte(const uint16_t addr) override;
uint16_t readWord(const uint16_t addr); uint16_t readWord(const uint16_t addr) override;
void writeByte(const uint16_t addr, const uint8_t v); void writeByte(const uint16_t addr, const uint8_t v) override;
void writeWord(const uint16_t addr, uint16_t v); void writeWord(const uint16_t addr, const uint16_t v) override;
}; };

13
rl02.h
View file

@ -9,6 +9,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "device.h"
#include "disk_backend.h" #include "disk_backend.h"
@ -25,7 +26,7 @@ constexpr const int rl02_bytes_per_sector = 256;
class bus; class bus;
class rl02 class rl02 : public device
{ {
private: private:
bus *const b; bus *const b;
@ -49,11 +50,11 @@ public:
rl02(const std::vector<disk_backend *> & files, bus *const b, std::atomic_bool *const disk_read_acitivity, std::atomic_bool *const disk_write_acitivity); rl02(const std::vector<disk_backend *> & files, bus *const b, std::atomic_bool *const disk_read_acitivity, std::atomic_bool *const disk_write_acitivity);
virtual ~rl02(); virtual ~rl02();
void reset(); void reset() override;
uint8_t readByte(const uint16_t addr); uint8_t readByte(const uint16_t addr) override;
uint16_t readWord(const uint16_t addr); uint16_t readWord(const uint16_t addr) override;
void writeByte(const uint16_t addr, const uint8_t v); void writeByte(const uint16_t addr, const uint8_t v) override;
void writeWord(const uint16_t addr, const uint16_t v); void writeWord(const uint16_t addr, const uint16_t v) override;
}; };

17
tm-11.h
View file

@ -1,4 +1,4 @@
// (C) 2018-2023 by Folkert van Heusden // (C) 2018-2024 by Folkert van Heusden
// Released under MIT license // Released under MIT license
#pragma once #pragma once
@ -7,6 +7,8 @@
#include <stdio.h> #include <stdio.h>
#include <string> #include <string>
#include "device.h"
#define TM_11_MTS 0172520 // status register #define TM_11_MTS 0172520 // status register
#define TM_11_MTC 0172522 // command register #define TM_11_MTC 0172522 // command register
#define TM_11_MTBRC 0172524 // byte record counter #define TM_11_MTBRC 0172524 // byte record counter
@ -16,9 +18,10 @@
#define TM_11_BASE TM_11_MTS #define TM_11_BASE TM_11_MTS
#define TM_11_END (TM_11_MTRD + 2) #define TM_11_END (TM_11_MTRD + 2)
class memory; class memory;
class tm_11 class tm_11 : public device
{ {
private: private:
memory *const m { nullptr }; memory *const m { nullptr };
@ -31,11 +34,11 @@ public:
tm_11(const std::string & file, memory *const m); tm_11(const std::string & file, memory *const m);
virtual ~tm_11(); virtual ~tm_11();
void reset(); void reset() override;
uint8_t readByte(const uint16_t addr); uint8_t readByte(const uint16_t addr) override;
uint16_t readWord(const uint16_t addr); uint16_t readWord(const uint16_t addr) override;
void writeByte(const uint16_t addr, const uint8_t v); void writeByte(const uint16_t addr, const uint8_t v) override;
void writeWord(const uint16_t addr, uint16_t v); void writeWord(const uint16_t addr, uint16_t v) override;
}; };