This commit is contained in:
folkert van heusden 2024-04-12 22:47:16 +02:00
parent 773d2f4e94
commit f4e515ba44
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1
2 changed files with 13 additions and 13 deletions

View file

@ -504,7 +504,7 @@ void bus::check_odd_addressing(const uint16_t a, const int run_mode, const d_i_s
} }
} }
memory_addresses_t bus::calculate_physical_address(const int run_mode, const uint16_t a) memory_addresses_t bus::calculate_physical_address(const int run_mode, const uint16_t a) const
{ {
const uint8_t apf = a >> 13; // active page field const uint8_t apf = a >> 13; // active page field
@ -536,7 +536,7 @@ memory_addresses_t bus::calculate_physical_address(const int run_mode, const uin
return { a, apf, physical_instruction, physical_instruction_is_psw, physical_data, physical_data_is_psw }; return { a, apf, physical_instruction, physical_instruction_is_psw, physical_data, physical_data_is_psw };
} }
bool bus::is_psw(const uint16_t addr, const int run_mode, const d_i_space_t space) bool bus::is_psw(const uint16_t addr, const int run_mode, const d_i_space_t space) const
{ {
auto meta = calculate_physical_address(run_mode, addr); auto meta = calculate_physical_address(run_mode, addr);
@ -558,7 +558,7 @@ void bus::mmudebug(const uint16_t a)
} }
} }
bool bus::get_use_data_space(const int run_mode) bool bus::get_use_data_space(const int run_mode) const
{ {
return !!(MMR3 & di_ena_mask[run_mode]); return !!(MMR3 & di_ena_mask[run_mode]);
} }

20
bus.h
View file

@ -165,12 +165,12 @@ public:
void writeUnibusByte(const uint16_t a, const uint8_t value); void writeUnibusByte(const uint16_t a, const uint8_t value);
uint16_t getMMR0() { return MMR0; } uint16_t getMMR0() const { return MMR0; }
uint16_t getMMR1() { return MMR1; } uint16_t getMMR1() const { return MMR1; }
uint16_t getMMR2() { return MMR2; } uint16_t getMMR2() const { return MMR2; }
uint16_t getMMR3() { return MMR3; } uint16_t getMMR3() const { return MMR3; }
uint16_t getMMR(int nr) { uint16_t *mmrs[] { &MMR0, &MMR1, &MMR2, &MMR3 }; return *mmrs[nr]; } uint16_t getMMR(int nr) const { const uint16_t *const mmrs[] { &MMR0, &MMR1, &MMR2, &MMR3 }; return *mmrs[nr]; }
bool isMMR1Locked() { return !!(getMMR0() & 0160000); } bool isMMR1Locked() const { return !!(getMMR0() & 0160000); }
void clearMMR1(); void clearMMR1();
void addToMMR1(const int8_t delta, const uint8_t reg); void addToMMR1(const int8_t delta, const uint8_t reg);
void setMMR0(const uint16_t value); void setMMR0(const uint16_t value);
@ -181,12 +181,12 @@ public:
void check_odd_addressing(const uint16_t a, const int run_mode, const d_i_space_t space, const bool is_write); void check_odd_addressing(const uint16_t a, const int run_mode, const d_i_space_t space, const bool is_write);
void trap_odd(const uint16_t a); void trap_odd(const uint16_t a);
uint32_t get_io_base() { return MMR0 & 1 ? (MMR3 & 16 ? 017760000 : 0760000) : 0160000; } uint32_t get_io_base() const { return MMR0 & 1 ? (MMR3 & 16 ? 017760000 : 0760000) : 0160000; }
bool is_psw(const uint16_t addr, const int run_mode, const d_i_space_t space); bool is_psw(const uint16_t addr, const int run_mode, const d_i_space_t space) const;
uint32_t calculate_physical_address(const int run_mode, const uint16_t a, const bool trap_on_failure, const bool is_write, const bool peek_only, const d_i_space_t space); uint32_t calculate_physical_address(const int run_mode, const uint16_t a, const bool trap_on_failure, const bool is_write, const bool peek_only, const d_i_space_t space);
bool get_use_data_space(const int run_mode); bool get_use_data_space(const int run_mode) const;
memory_addresses_t calculate_physical_address(const int run_mode, const uint16_t a); memory_addresses_t calculate_physical_address(const int run_mode, const uint16_t a) const;
void check_address(const bool trap_on_failure, const bool is_write, const memory_addresses_t & addr, const word_mode_t word_mode, const bool is_data, const int run_mode); void check_address(const bool trap_on_failure, const bool is_write, const memory_addresses_t & addr, const word_mode_t word_mode, const bool is_data, const int run_mode);
}; };