RK05 serialization
This commit is contained in:
parent
ea57b04114
commit
5b50556273
3 changed files with 52 additions and 2 deletions
13
bus.cpp
13
bus.cpp
|
@ -66,7 +66,10 @@ json_t *bus::serialize() const
|
||||||
if (rl02_)
|
if (rl02_)
|
||||||
json_object_set(j_out, "rl02", rl02_->serialize());
|
json_object_set(j_out, "rl02", rl02_->serialize());
|
||||||
|
|
||||||
// TODO: rk05, tm11
|
if (rk05_)
|
||||||
|
json_object_set(j_out, "rk05", rk05_->serialize());
|
||||||
|
|
||||||
|
// TODO: tm11
|
||||||
|
|
||||||
return j_out;
|
return j_out;
|
||||||
}
|
}
|
||||||
|
@ -113,7 +116,13 @@ bus *bus::deserialize(const json_t *const j, console *const cnsl, std::atomic_ui
|
||||||
b->add_rl02(rl02_);
|
b->add_rl02(rl02_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: rk05, tm11
|
temp = json_object_get(j, "rk05");
|
||||||
|
if (temp) {
|
||||||
|
rk05 *rk05_ = rk05::deserialize(temp, b);
|
||||||
|
b->add_rk05(rk05_);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: tm11
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
35
rk05.cpp
35
rk05.cpp
|
@ -250,3 +250,38 @@ void rk05::writeWord(const uint16_t addr, const uint16_t v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IS_POSIX
|
||||||
|
json_t *rk05::serialize() const
|
||||||
|
{
|
||||||
|
json_t *j = json_object();
|
||||||
|
|
||||||
|
json_t *j_backends = json_array();
|
||||||
|
for(auto & dbe: fhs)
|
||||||
|
json_array_append(j_backends, dbe->serialize());
|
||||||
|
|
||||||
|
json_object_set(j, "backends", j_backends);
|
||||||
|
|
||||||
|
for(int regnr=0; regnr<7; regnr++)
|
||||||
|
json_object_set(j, format("register-%d", regnr).c_str(), json_integer(registers[regnr]));
|
||||||
|
|
||||||
|
return j;
|
||||||
|
}
|
||||||
|
|
||||||
|
rk05 *rk05::deserialize(const json_t *const j, bus *const b)
|
||||||
|
{
|
||||||
|
std::vector<disk_backend *> backends;
|
||||||
|
|
||||||
|
rk05 *r = new rk05(b, nullptr, nullptr);
|
||||||
|
r->begin();
|
||||||
|
|
||||||
|
json_t *j_backends = json_object_get(j, "backends");
|
||||||
|
for(size_t i=0; i<json_array_size(j_backends); i++)
|
||||||
|
r->access_disk_backends()->push_back(disk_backend::deserialize(json_array_get(j_backends, i)));
|
||||||
|
|
||||||
|
for(int regnr=0; regnr<7; regnr++)
|
||||||
|
r->registers[regnr] = json_integer_value(json_object_get(j, format("register-%d", regnr).c_str()));
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
6
rk05.h
6
rk05.h
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include "disk_device.h"
|
#include "disk_device.h"
|
||||||
#include "disk_backend.h"
|
#include "disk_backend.h"
|
||||||
|
#include "gen.h"
|
||||||
|
|
||||||
|
|
||||||
#define RK05_DS 0177400 // drive status
|
#define RK05_DS 0177400 // drive status
|
||||||
|
@ -45,6 +46,11 @@ public:
|
||||||
void begin() override;
|
void begin() override;
|
||||||
void reset() override;
|
void reset() override;
|
||||||
|
|
||||||
|
#if IS_POSIX
|
||||||
|
json_t *serialize() const;
|
||||||
|
static rk05 *deserialize(const json_t *const j, bus *const b);
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t readByte(const uint16_t addr) override;
|
uint8_t readByte(const uint16_t addr) override;
|
||||||
uint16_t readWord(const uint16_t addr) override;
|
uint16_t readWord(const uint16_t addr) override;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue