Merge branch 'master' of ssh://172.29.0.8/home/folkert/git/PDP-11
This commit is contained in:
commit
52e1224e7d
9 changed files with 31 additions and 27 deletions
|
@ -25,7 +25,7 @@ std::optional<std::string> breakpoint_memory::is_triggered() const
|
|||
if (is_virtual)
|
||||
v = b->read(addr, word_mode, rm_cur, true, i_space);
|
||||
else
|
||||
v = b->readPhysical(addr);
|
||||
v = b->read_physical(addr);
|
||||
|
||||
auto it = values.find(v);
|
||||
if (it == values.end())
|
||||
|
|
20
bus.cpp
20
bus.cpp
|
@ -827,7 +827,7 @@ write_rc_t bus::write(const uint16_t addr_in, const word_mode_t word_mode, uint1
|
|||
return { false };
|
||||
}
|
||||
|
||||
void bus::writePhysical(const uint32_t a, const uint16_t value)
|
||||
void bus::write_physical(const uint32_t a, const uint16_t value)
|
||||
{
|
||||
TRACE("physicalWRITE %06o to %o", value, a);
|
||||
|
||||
|
@ -841,7 +841,7 @@ void bus::writePhysical(const uint32_t a, const uint16_t value)
|
|||
}
|
||||
}
|
||||
|
||||
uint16_t bus::readPhysical(const uint32_t a)
|
||||
uint16_t bus::read_physical(const uint32_t a)
|
||||
{
|
||||
if (a >= m->get_memory_size()) {
|
||||
TRACE("physicalREAD from %o: trap 004", a);
|
||||
|
@ -871,15 +871,19 @@ void bus::write_word(const uint16_t a, const uint16_t value, const d_i_space_t s
|
|||
write(a, wm_word, value, rm_cur, s);
|
||||
}
|
||||
|
||||
uint8_t bus::readUnibusByte(const uint32_t a)
|
||||
uint8_t bus::read_unibus_byte(const uint32_t a)
|
||||
{
|
||||
uint8_t v = m->read_byte(a);
|
||||
TRACE("readUnibusByte[%08o]=%03o", a, v);
|
||||
uint8_t v = 0;
|
||||
if (a < m->get_memory_size())
|
||||
v = m->read_byte(a);
|
||||
TRACE("read_unibus_byte[%08o]=%03o", a, v);
|
||||
return v;
|
||||
}
|
||||
|
||||
void bus::writeUnibusByte(const uint32_t a, const uint8_t v)
|
||||
void bus::write_unibus_byte(const uint32_t a, const uint8_t v)
|
||||
{
|
||||
TRACE("writeUnibusByte[%08o]=%03o", a, v);
|
||||
m->write_byte(a, v);
|
||||
TRACE("write_unibus_byte[%08o]=%03o", a, v);
|
||||
|
||||
if (a < m->get_memory_size())
|
||||
m->write_byte(a, v);
|
||||
}
|
||||
|
|
8
bus.h
8
bus.h
|
@ -127,15 +127,15 @@ public:
|
|||
uint16_t read_word(const uint16_t a, const d_i_space_t s);
|
||||
uint16_t read_word(const uint16_t a) override { return read_word(a, i_space); }
|
||||
uint16_t peek_word(const uint16_t a);
|
||||
uint8_t readUnibusByte(const uint32_t a);
|
||||
uint16_t readPhysical(const uint32_t a);
|
||||
uint8_t read_unibus_byte(const uint32_t a);
|
||||
uint16_t read_physical(const uint32_t a);
|
||||
|
||||
write_rc_t write(const uint16_t a, const word_mode_t word_mode, uint16_t value, const rm_selection_t mode_selection, const d_i_space_t s = i_space);
|
||||
void writeUnibusByte(const uint32_t a, const uint8_t value);
|
||||
void write_unibus_byte(const uint32_t a, const uint8_t value);
|
||||
void write_byte(const uint16_t a, const uint8_t value) override { write(a, wm_byte, value, rm_cur); }
|
||||
void write_word(const uint16_t a, const uint16_t value, const d_i_space_t s);
|
||||
void write_word(const uint16_t a, const uint16_t value) override { write_word(a, value, i_space); }
|
||||
void writePhysical(const uint32_t a, const uint16_t value);
|
||||
void write_physical(const uint32_t a, const uint16_t value);
|
||||
|
||||
bool is_psw(const uint16_t addr, const int run_mode, const d_i_space_t space) const;
|
||||
};
|
||||
|
|
|
@ -933,7 +933,7 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto
|
|||
|
||||
for(int i=0; i<n; i++) {
|
||||
uint32_t cur_addr = addr + i * 2;
|
||||
int val = parts[2] == "v" ? b->read(cur_addr, wm_word, rm_cur, true) : b->readPhysical(cur_addr);
|
||||
int val = parts[2] == "v" ? b->read(cur_addr, wm_word, rm_cur, true) : b->read_physical(cur_addr);
|
||||
|
||||
if (val == -1) {
|
||||
cnsl->put_string_lf(format("Can't read from %06o\n", cur_addr));
|
||||
|
|
6
main.cpp
6
main.cpp
|
@ -84,7 +84,7 @@ int run_cpu_validation(const std::string & filename)
|
|||
const char *key = nullptr;
|
||||
json_t *value = nullptr;
|
||||
json_object_foreach(memory_before, key, value) {
|
||||
b->writePhysical(atoi(key), json_integer_value(value));
|
||||
b->write_physical(atoi(key), json_integer_value(value));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,7 @@ int run_cpu_validation(const std::string & filename)
|
|||
json_t *value = nullptr;
|
||||
json_object_foreach(memory_after, key, value) {
|
||||
int key_v = atoi(key);
|
||||
uint16_t mem_contains = b->readPhysical(key_v);
|
||||
uint16_t mem_contains = b->read_physical(key_v);
|
||||
uint16_t should_be = json_integer_value(value);
|
||||
|
||||
if (mem_contains != should_be) {
|
||||
|
@ -193,7 +193,7 @@ int run_cpu_validation(const std::string & filename)
|
|||
json_t *temp = json_array_get(a_sp, i);
|
||||
uint16_t sp = c->lowlevel_register_sp_get(i);
|
||||
if (json_integer_value(temp) != sp) {
|
||||
DOLOG(warning, true, "SP[%d] register mismatch (is: %06o (%d), should be: %06o (%d)) for %06o", i, sp, sp, json_integer_value(temp), json_integer_value(temp), b->readPhysical(start_pc));
|
||||
DOLOG(warning, true, "SP[%d] register mismatch (is: %06o (%d), should be: %06o (%d)) for %06o", i, sp, sp, json_integer_value(temp), json_integer_value(temp), b->read_physical(start_pc));
|
||||
err = true;
|
||||
}
|
||||
}
|
||||
|
|
4
memory.h
4
memory.h
|
@ -26,8 +26,8 @@ public:
|
|||
static memory *deserialize(const JsonVariantConst j);
|
||||
|
||||
uint16_t read_byte(const uint32_t a) const { return m[a]; }
|
||||
void write_byte(const uint32_t a, const uint16_t v) { if (a < size) m[a] = v; }
|
||||
void write_byte(const uint32_t a, const uint16_t v) { m[a] = v; }
|
||||
|
||||
uint16_t read_word(const uint32_t a) const { return m[a] | (m[a + 1] << 8); }
|
||||
void write_word(const uint32_t a, const uint16_t v) { if(a < size - 1) { m[a] = v; m[a + 1] = v >> 8; } }
|
||||
void write_word(const uint32_t a, const uint16_t v) { m[a] = v; m[a + 1] = v >> 8; }
|
||||
};
|
||||
|
|
4
rk05.cpp
4
rk05.cpp
|
@ -173,7 +173,7 @@ void rk05::write_word(const uint16_t addr, const uint16_t v)
|
|||
work_reclen -= cur;
|
||||
|
||||
for(size_t i=0; i<cur; i++)
|
||||
xfer_buffer[i] = b->readUnibusByte(work_memoff++);
|
||||
xfer_buffer[i] = b->read_unibus_byte(work_memoff++);
|
||||
|
||||
if (!fhs.at(device)->write(work_diskoffb, cur, xfer_buffer, 512)) {
|
||||
DOLOG(ll_error, true, "RK05(%d) write error %s to %u len %u", device, strerror(errno), work_diskoffb, cur);
|
||||
|
@ -230,7 +230,7 @@ void rk05::write_word(const uint16_t addr, const uint16_t v)
|
|||
temp_diskoffb += cur;
|
||||
|
||||
for(uint32_t i=0; i<cur; i++) {
|
||||
b->writeUnibusByte(p++, xfer_buffer[i]);
|
||||
b->write_unibus_byte(p++, xfer_buffer[i]);
|
||||
|
||||
if ((v & 2048) == 0)
|
||||
update_bus_address(2);
|
||||
|
|
8
rl02.cpp
8
rl02.cpp
|
@ -275,8 +275,8 @@ void rl02::write_word(const uint16_t addr, uint16_t v)
|
|||
|
||||
for(uint32_t i=0; i<cur;) {
|
||||
// BA and MPR are increased by 2
|
||||
xfer_buffer[i++] = b->readUnibusByte(memory_address++);
|
||||
xfer_buffer[i++] = b->readUnibusByte(memory_address++);
|
||||
xfer_buffer[i++] = b->read_unibus_byte(memory_address++);
|
||||
xfer_buffer[i++] = b->read_unibus_byte(memory_address++);
|
||||
|
||||
// update_bus_address(memory_address);
|
||||
mpr[0]++;
|
||||
|
@ -343,8 +343,8 @@ void rl02::write_word(const uint16_t addr, uint16_t v)
|
|||
|
||||
for(uint32_t i=0; i<cur;) {
|
||||
// BA and MPR are increased by 2
|
||||
b->writeUnibusByte(memory_address++, xfer_buffer[i++]);
|
||||
b->writeUnibusByte(memory_address++, xfer_buffer[i++]);
|
||||
b->write_unibus_byte(memory_address++, xfer_buffer[i++]);
|
||||
b->write_unibus_byte(memory_address++, xfer_buffer[i++]);
|
||||
|
||||
// update_bus_address(memory_address);
|
||||
|
||||
|
|
4
rp06.cpp
4
rp06.cpp
|
@ -201,13 +201,13 @@ void rp06::write_word(const uint16_t addr, uint16_t v)
|
|||
}
|
||||
|
||||
for(uint32_t i=0; i<cur_n; i++)
|
||||
b->writeUnibusByte(addr++, xfer_buffer[i]);
|
||||
b->write_unibus_byte(addr++, xfer_buffer[i]);
|
||||
}
|
||||
else {
|
||||
DOLOG(debug, false, "RP06: writing %u bytes to %u (dec) from %06o (oct)", cur_n, offs, addr);
|
||||
|
||||
for(uint32_t i=0; i<cur_n; i++)
|
||||
xfer_buffer[i] = b->readUnibusByte(addr++);
|
||||
xfer_buffer[i] = b->read_unibus_byte(addr++);
|
||||
|
||||
if (!fhs.at(0)->write(cur_offset, cur_n, xfer_buffer, SECTOR_SIZE)) {
|
||||
DOLOG(ll_error, true, "RP06 write error %s from %u", strerror(errno), cur_offset);
|
||||
|
|
Loading…
Add table
Reference in a new issue