if (word_mode) => if (word_mode == wm_byte)
This commit is contained in:
parent
ecbe3f5f84
commit
31f1af4a7b
1 changed files with 6 additions and 14 deletions
20
bus.cpp
20
bus.cpp
|
@ -259,7 +259,7 @@ uint16_t bus::read_io(const uint16_t addr_in, const word_mode_t word_mode, const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (word_mode) {
|
if (word_mode == wm_byte) {
|
||||||
if (addr_in == ADDR_PSW) { // PSW
|
if (addr_in == ADDR_PSW) { // PSW
|
||||||
uint8_t temp = c->getPSW();
|
uint8_t temp = c->getPSW();
|
||||||
if (!peek_only) DOLOG(debug, false, "READ-I/O PSW LSB: %03o", temp);
|
if (!peek_only) DOLOG(debug, false, "READ-I/O PSW LSB: %03o", temp);
|
||||||
|
@ -430,7 +430,7 @@ uint16_t bus::read(const uint16_t addr_in, const word_mode_t word_mode, const rm
|
||||||
|
|
||||||
uint16_t temp = 0;
|
uint16_t temp = 0;
|
||||||
|
|
||||||
if (word_mode)
|
if (word_mode == wm_byte)
|
||||||
temp = m->readByte(m_offset);
|
temp = m->readByte(m_offset);
|
||||||
else
|
else
|
||||||
temp = m->readWord(m_offset);
|
temp = m->readWord(m_offset);
|
||||||
|
@ -702,22 +702,14 @@ void bus::write_pdr(const uint32_t a, const int run_mode, const uint16_t value,
|
||||||
bool is_d = a & 16;
|
bool is_d = a & 16;
|
||||||
int page = (a >> 1) & 7;
|
int page = (a >> 1) & 7;
|
||||||
|
|
||||||
if (word_mode) {
|
if (word_mode == wm_byte) {
|
||||||
assert(a != 0 || value < 256);
|
assert(a != 0 || value < 256);
|
||||||
|
|
||||||
a & 1 ? (pages[run_mode][is_d][page].pdr &= 0x00ff, pages[run_mode][is_d][page].pdr |= value << 8) :
|
a & 1 ? (pages[run_mode][is_d][page].pdr &= 0x00ff, pages[run_mode][is_d][page].pdr |= value << 8) :
|
||||||
#ifdef SYSTEM_11_44
|
|
||||||
(pages[run_mode][is_d][page].pdr &= 0xff00, pages[run_mode][is_d][page].pdr |= value & ~0361);
|
|
||||||
#else
|
|
||||||
(pages[run_mode][is_d][page].pdr &= 0xff00, pages[run_mode][is_d][page].pdr |= value );
|
(pages[run_mode][is_d][page].pdr &= 0xff00, pages[run_mode][is_d][page].pdr |= value );
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#ifdef SYSTEM_11_44
|
|
||||||
pages[run_mode][is_d][page].pdr = value & ~0361;
|
|
||||||
#else
|
|
||||||
pages[run_mode][is_d][page].pdr = value;
|
pages[run_mode][is_d][page].pdr = value;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pages[run_mode][is_d][page].pdr &= ~(32768 + 128 /*A*/ + 64 /*W*/ + 32 + 16); // set bit 4, 5 & 15 to 0 as they are unused and A/W are set to 0 by writes
|
pages[run_mode][is_d][page].pdr &= ~(32768 + 128 /*A*/ + 64 /*W*/ + 32 + 16); // set bit 4, 5 & 15 to 0 as they are unused and A/W are set to 0 by writes
|
||||||
|
@ -730,7 +722,7 @@ void bus::write_par(const uint32_t a, const int run_mode, const uint16_t value,
|
||||||
bool is_d = a & 16;
|
bool is_d = a & 16;
|
||||||
int page = (a >> 1) & 7;
|
int page = (a >> 1) & 7;
|
||||||
|
|
||||||
if (word_mode) {
|
if (word_mode == wm_byte) {
|
||||||
a & 1 ? (pages[run_mode][is_d][page].par &= 0x00ff, pages[run_mode][is_d][page].par |= value << 8) :
|
a & 1 ? (pages[run_mode][is_d][page].par &= 0x00ff, pages[run_mode][is_d][page].par |= value << 8) :
|
||||||
(pages[run_mode][is_d][page].par &= 0xff00, pages[run_mode][is_d][page].par |= value );
|
(pages[run_mode][is_d][page].par &= 0xff00, pages[run_mode][is_d][page].par |= value );
|
||||||
}
|
}
|
||||||
|
@ -747,7 +739,7 @@ void bus::write_io(const uint16_t addr_in, const word_mode_t word_mode, const ui
|
||||||
{
|
{
|
||||||
uint16_t value = value_in;
|
uint16_t value = value_in;
|
||||||
|
|
||||||
if (word_mode) {
|
if (word_mode == wm_byte) {
|
||||||
if (addr_in == ADDR_PSW || addr_in == ADDR_PSW + 1) { // PSW
|
if (addr_in == ADDR_PSW || addr_in == ADDR_PSW + 1) { // PSW
|
||||||
DOLOG(debug, true, "WRITE-I/O PSW %s: %03o", addr_in & 1 ? "MSB" : "LSB", value);
|
DOLOG(debug, true, "WRITE-I/O PSW %s: %03o", addr_in & 1 ? "MSB" : "LSB", value);
|
||||||
|
|
||||||
|
@ -1034,7 +1026,7 @@ void bus::write(const uint16_t addr_in, const word_mode_t word_mode, uint16_t va
|
||||||
|
|
||||||
DOLOG(debug, true, "WRITE to %06o/%07o %c %c: %06o", addr_in, m_offset, space == d_space ? 'D' : 'I', word_mode ? 'B' : 'W', value);
|
DOLOG(debug, true, "WRITE to %06o/%07o %c %c: %06o", addr_in, m_offset, space == d_space ? 'D' : 'I', word_mode ? 'B' : 'W', value);
|
||||||
|
|
||||||
if (word_mode)
|
if (word_mode == wm_byte)
|
||||||
m->writeByte(m_offset, value);
|
m->writeByte(m_offset, value);
|
||||||
else
|
else
|
||||||
m->writeWord(m_offset, value);
|
m->writeWord(m_offset, value);
|
||||||
|
|
Loading…
Add table
Reference in a new issue