restructured
This commit is contained in:
parent
9226f63eda
commit
fd95246f2f
2 changed files with 33 additions and 29 deletions
12
bus.cpp
12
bus.cpp
|
@ -313,11 +313,12 @@ uint16_t bus::read(const uint16_t a, const bool word_mode, const bool use_prev)
|
||||||
|
|
||||||
m_offset += p_offset;
|
m_offset += p_offset;
|
||||||
|
|
||||||
|
if (MMR0 & 1) {
|
||||||
uint16_t pdr_len = (((pages[run_mode][apf].pdr >> 8) & 127) + 1) * 64;
|
uint16_t pdr_len = (((pages[run_mode][apf].pdr >> 8) & 127) + 1) * 64;
|
||||||
|
|
||||||
bool direction = !!(pages[run_mode][apf].pdr & 8);
|
bool direction = pages[run_mode][apf].pdr & 8;
|
||||||
|
|
||||||
if ((p_offset >= pdr_len && (MMR0 & 1) && direction == false) || (p_offset < pdr_len && (MMR0 & 1) && direction == true)) {
|
if ((p_offset >= pdr_len && direction == false) || (p_offset < pdr_len && direction == true)) {
|
||||||
D(fprintf(stderr, "bus::read::p_offset %o >= %o\n", p_offset, pdr_len);)
|
D(fprintf(stderr, "bus::read::p_offset %o >= %o\n", p_offset, pdr_len);)
|
||||||
c->schedule_trap(0250); // invalid access
|
c->schedule_trap(0250); // invalid access
|
||||||
|
|
||||||
|
@ -333,6 +334,7 @@ uint16_t bus::read(const uint16_t a, const bool word_mode, const bool use_prev)
|
||||||
|
|
||||||
throw 1;
|
throw 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (word_mode)
|
if (word_mode)
|
||||||
temp = m -> readByte(m_offset);
|
temp = m -> readByte(m_offset);
|
||||||
|
@ -602,11 +604,12 @@ uint16_t bus::write(const uint16_t a, const bool word_mode, uint16_t value, cons
|
||||||
|
|
||||||
m_offset += p_offset;
|
m_offset += p_offset;
|
||||||
|
|
||||||
|
if (MMR0 & 1) {
|
||||||
uint16_t pdr_len = (((pages[run_mode][apf].pdr >> 8) & 127) + 1)* 64;
|
uint16_t pdr_len = (((pages[run_mode][apf].pdr >> 8) & 127) + 1)* 64;
|
||||||
|
|
||||||
bool direction = !!(pages[run_mode][apf].pdr & 8);
|
bool direction = pages[run_mode][apf].pdr & 8;
|
||||||
|
|
||||||
if ((p_offset >= pdr_len && (MMR0 & 1) && direction == false) || (p_offset < pdr_len && (MMR0 & 1) && direction == true)) {
|
if ((p_offset >= pdr_len && direction == false) || (p_offset < pdr_len && direction == true)) {
|
||||||
D(fprintf(stderr, "bus::write::p_offset %o >= %o\n", p_offset, pdr_len);)
|
D(fprintf(stderr, "bus::write::p_offset %o >= %o\n", p_offset, pdr_len);)
|
||||||
c->schedule_trap(0250); // invalid access
|
c->schedule_trap(0250); // invalid access
|
||||||
|
|
||||||
|
@ -622,6 +625,7 @@ uint16_t bus::write(const uint16_t a, const bool word_mode, uint16_t value, cons
|
||||||
|
|
||||||
throw 1;
|
throw 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
D(fprintf(stderr, "BUS write to %o (pages: %o/%o/%o, run mode %d, apf %d, PDR: %06o, b22: %d): %06o\n", m_offset, pages[run_mode][apf].par, pages[run_mode][apf].par * 64, n_pages * 8192, run_mode, apf, pages[run_mode][apf].pdr, MMR3 & 16, value);)
|
D(fprintf(stderr, "BUS write to %o (pages: %o/%o/%o, run mode %d, apf %d, PDR: %06o, b22: %d): %06o\n", m_offset, pages[run_mode][apf].par, pages[run_mode][apf].par * 64, n_pages * 8192, run_mode, apf, pages[run_mode][apf].pdr, MMR3 & 16, value);)
|
||||||
|
|
||||||
|
|
2
cpu.cpp
2
cpu.cpp
|
@ -1626,10 +1626,10 @@ void cpu::step()
|
||||||
if (temp_pc & 1)
|
if (temp_pc & 1)
|
||||||
busError();
|
busError();
|
||||||
|
|
||||||
|
try {
|
||||||
if (disas)
|
if (disas)
|
||||||
disassemble();
|
disassemble();
|
||||||
|
|
||||||
try {
|
|
||||||
uint16_t instr = b->readWord(temp_pc);
|
uint16_t instr = b->readWord(temp_pc);
|
||||||
|
|
||||||
addRegister(7, false, 2);
|
addRegister(7, false, 2);
|
||||||
|
|
Loading…
Add table
Reference in a new issue