This commit is contained in:
folkert van heusden 2024-05-16 09:50:36 +02:00
parent b2190b97c0
commit f2ac06b9db
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1
14 changed files with 37 additions and 25 deletions

24
bus.cpp
View file

@ -1,13 +1,13 @@
// (C) 2018-2024 by Folkert van Heusden
// Released under MIT license
#include "gen.h"
#include <ArduinoJson.h>
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "bus.h"
#include "gen.h"
#include "cpu.h"
#include "dc11.h"
#include "kw11-l.h"
@ -45,34 +45,48 @@ bus::~bus()
delete dc11_;
}
JsonVariant bus::serialize() const
void dump(JsonVariantConst j)
{
JsonVariant j_out;
std::string temp;
printf("%zu\n", serializeJson(j, temp));
printf("%s\r\n", temp.c_str());
}
JsonDocument bus::serialize() const
{
JsonDocument doc;
JsonVariant j_out = doc.to<JsonVariant>();
if (m)
j_out["memory"] = m->serialize();
if (kw11_l_)
j_out["kw11-l"] = kw11_l_->serialize();
dump(kw11_l_->serialize());
if (tty_)
j_out["tty"] = tty_->serialize();
dump(tty_->serialize());
if (mmu_)
j_out["mmu"] = mmu_->serialize();
dump(mmu_->serialize());
if (c)
j_out["cpu"] = c->serialize();
c->serialize(j_out["cpu"]);
if (rl02_)
j_out["rl02"] = rl02_->serialize();
dump(rl02_->serialize());
if (rk05_)
j_out["rk05"] = rk05_->serialize();
dump(rk05_->serialize());
// TODO: tm11, dc11
return j_out;
return doc;
}
bus *bus::deserialize(const JsonDocument j, console *const cnsl, std::atomic_uint32_t *const event)

4
bus.h
View file

@ -3,13 +3,13 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <assert.h>
#include <mutex>
#include <stdint.h>
#include <stdio.h>
#include "gen.h"
#include "device.h"
#include "dc11.h"
#include "mmu.h"
@ -80,7 +80,7 @@ public:
bus();
~bus();
JsonVariant serialize() const;
JsonDocument serialize() const;
static bus *deserialize(const JsonDocument j, console *const cnsl, std::atomic_uint32_t *const event);
void reset() override;

View file

@ -2434,9 +2434,9 @@ void cpu::step()
}
}
JsonVariant cpu::serialize()
void cpu::serialize(JsonVariant j_in)
{
JsonVariant j;
JsonVariant j = j_in["cpu"].to<JsonVariant>();
for(int set=0; set<2; set++) {
for(int regnr=0; regnr<6; regnr++)
@ -2473,8 +2473,6 @@ JsonVariant cpu::serialize()
j["queued_interrupts"] = j_queued_interrupts;
j["any_queued_interrupts"] = bool(any_queued_interrupts);
return j;
}
cpu *cpu::deserialize(const JsonVariantConst j, bus *const b, std::atomic_uint32_t *const event)

5
cpu.h
View file

@ -3,6 +3,7 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <atomic>
#include <cassert>
@ -14,8 +15,6 @@
#include <stdint.h>
#include <vector>
#include "gen.h"
class breakpoint;
class bus;
@ -115,7 +114,7 @@ public:
explicit cpu(bus *const b, std::atomic_uint32_t *const event);
~cpu();
JsonVariant serialize();
void serialize(JsonVariant j);
static cpu *deserialize(const JsonVariantConst j, bus *const b, std::atomic_uint32_t *const event);
std::optional<std::string> check_breakpoint();

View file

@ -550,7 +550,7 @@ struct state_writer {
void serialize_state(console *const cnsl, const bus *const b, const std::string & filename)
{
JsonVariant j = b->serialize();
JsonDocument j = b->serialize();
bool ok = false;

View file

@ -3,6 +3,7 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <map>
#include <optional>
@ -11,8 +12,6 @@
#include <vector>
#include <sys/types.h>
#include "gen.h"
class disk_backend
{

View file

@ -1,6 +1,7 @@
// (C) 2018-2024 by Folkert van Heusden
// Released under MIT license
#include "gen.h"
#include <ArduinoJson.h>
#include <string>

2
gen.h
View file

@ -3,6 +3,8 @@
#pragma once
#define ARDUINOJSON_DEBUG 1
// #define TURBO
typedef enum { EVENT_NONE = 0, EVENT_HALT, EVENT_INTERRUPT, EVENT_TERMINATE } stop_event_t;

View file

@ -1,6 +1,7 @@
// (C) 2018-2024 by Folkert van Heusden
// Released under MIT license
#include "gen.h"
#include <ArduinoJson.h>
#include <atomic>
#include <thread>
@ -8,7 +9,6 @@
#include "bus.h"
#include "console.h"
#include "device.h"
#include "gen.h"
class kw11_l: public device

View file

@ -2,10 +2,10 @@
// Released under MIT license
#pragma once
#include <ArduinoJson.h>
#include <cstdint>
#include "gen.h"
#include <ArduinoJson.h>
#include <cstdint>
class memory

3
mmu.h
View file

@ -1,10 +1,9 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <cstdint>
#include <string>
#include "gen.h"
#include "cpu.h"
#include "device.h"
#include "memory.h"

2
rk05.h
View file

@ -3,6 +3,7 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <atomic>
#include <stdint.h>
@ -12,7 +13,6 @@
#include "disk_device.h"
#include "disk_backend.h"
#include "gen.h"
#define RK05_DS 0177400 // drive status

2
rl02.h
View file

@ -3,6 +3,7 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <atomic>
#include <stdint.h>
@ -12,7 +13,6 @@
#include "disk_device.h"
#include "disk_backend.h"
#include "gen.h"
#define RL02_CSR 0174400 // control status register

2
tty.h
View file

@ -3,6 +3,7 @@
#pragma once
#include "gen.h"
#include <ArduinoJson.h>
#include <atomic>
#include <mutex>
@ -14,7 +15,6 @@
#include "bus.h"
#include "console.h"
#include "gen.h"
#define PDP11TTY_TKS 0177560 // reader status