trap: read from D-space
This commit is contained in:
parent
37654c61a6
commit
81dc6d8924
3 changed files with 6 additions and 6 deletions
4
bus.cpp
4
bus.cpp
|
@ -707,9 +707,9 @@ uint16_t bus::write(const uint16_t a, const bool word_mode, uint16_t value, cons
|
|||
return value;
|
||||
}
|
||||
|
||||
uint16_t bus::readWord(const uint16_t a)
|
||||
uint16_t bus::readWord(const uint16_t a, const d_i_space_t s)
|
||||
{
|
||||
return read(a, false, false, false);
|
||||
return read(a, false, false, false, s);
|
||||
}
|
||||
|
||||
uint16_t bus::peekWord(const uint16_t a)
|
||||
|
|
4
bus.h
4
bus.h
|
@ -67,13 +67,13 @@ public:
|
|||
|
||||
uint16_t read(const uint16_t a, const bool word_mode, const bool use_prev, const bool peek_only=false, const d_i_space_t s = i_space);
|
||||
uint16_t readByte(const uint16_t a) { return read(a, true, false); }
|
||||
uint16_t readWord(const uint16_t a);
|
||||
uint16_t readWord(const uint16_t a, const d_i_space_t s = i_space);
|
||||
uint16_t peekWord(const uint16_t a);
|
||||
|
||||
uint16_t readUnibusByte(const uint16_t a);
|
||||
|
||||
uint16_t write(const uint16_t a, const bool word_mode, uint16_t value, const bool use_prev, const d_i_space_t s = i_space);
|
||||
uint8_t writeByte(const uint16_t a, const uint8_t value) { return write(a, true, value, false); }
|
||||
uint8_t writeByte(const uint16_t a, const uint8_t value) { return write(a, true, value, false); }
|
||||
uint16_t writeWord(const uint16_t a, const uint16_t value);
|
||||
|
||||
void writeUnibusByte(const uint16_t a, const uint8_t value);
|
||||
|
|
4
cpu.cpp
4
cpu.cpp
|
@ -1661,10 +1661,10 @@ void cpu::trap(const uint16_t vector, const int new_ipl)
|
|||
b->addToMMR1(-2, 6);
|
||||
}
|
||||
|
||||
setPC(b->readWord(vector + 0));
|
||||
setPC(b->readWord(vector + 0, d_space));
|
||||
|
||||
// switch to kernel mode & update 'previous mode'
|
||||
uint16_t new_psw = b->readWord(vector + 2) & 0147777; // mask off old 'previous mode'
|
||||
uint16_t new_psw = b->readWord(vector + 2, d_space) & 0147777; // mask off old 'previous mode'
|
||||
if (new_ipl != -1)
|
||||
new_psw = (new_psw & ~0xe0) | (new_ipl << 5);
|
||||
new_psw |= (before_psw >> 2) & 030000; // apply new 'previous mode'
|
||||
|
|
Loading…
Add table
Reference in a new issue