mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-29 12:50:28 +00:00
Flips conditionals to ensure 65802 safety.
This commit is contained in:
parent
4fdf01a1a8
commit
1e041f1adf
@ -413,7 +413,7 @@ template <Analyser::Static::Oric::Target::DiskInterface disk_interface, CPU::MOS
|
|||||||
// to satisfy CPU::MOS6502::BusHandler
|
// to satisfy CPU::MOS6502::BusHandler
|
||||||
forceinline Cycles perform_bus_operation(CPU::MOS6502::BusOperation operation, uint16_t address, uint8_t *value) {
|
forceinline Cycles perform_bus_operation(CPU::MOS6502::BusOperation operation, uint16_t address, uint8_t *value) {
|
||||||
if(address > ram_top_) {
|
if(address > ram_top_) {
|
||||||
if(isReadOperation(operation)) *value = paged_rom_[address - ram_top_ - 1];
|
if(!isWriteOperation(operation)) *value = paged_rom_[address - ram_top_ - 1];
|
||||||
|
|
||||||
// 024D = 0 => fast; otherwise slow
|
// 024D = 0 => fast; otherwise slow
|
||||||
// E6C9 = read byte: return byte in A
|
// E6C9 = read byte: return byte in A
|
||||||
@ -432,39 +432,39 @@ template <Analyser::Static::Oric::Target::DiskInterface disk_interface, CPU::MOS
|
|||||||
} else {
|
} else {
|
||||||
if((address & 0xff00) == 0x0300) {
|
if((address & 0xff00) == 0x0300) {
|
||||||
if(address < 0x0310 || (disk_interface == DiskInterface::None)) {
|
if(address < 0x0310 || (disk_interface == DiskInterface::None)) {
|
||||||
if(isReadOperation(operation)) *value = via_.read(address);
|
if(!isWriteOperation(operation)) *value = via_.read(address);
|
||||||
else via_.write(address, *value);
|
else via_.write(address, *value);
|
||||||
} else {
|
} else {
|
||||||
switch(disk_interface) {
|
switch(disk_interface) {
|
||||||
default: break;
|
default: break;
|
||||||
case DiskInterface::BD500:
|
case DiskInterface::BD500:
|
||||||
if(isReadOperation(operation)) *value = bd500_.read(address);
|
if(!isWriteOperation(operation)) *value = bd500_.read(address);
|
||||||
else bd500_.write(address, *value);
|
else bd500_.write(address, *value);
|
||||||
break;
|
break;
|
||||||
case DiskInterface::Jasmin:
|
case DiskInterface::Jasmin:
|
||||||
if(address >= 0x3f4) {
|
if(address >= 0x3f4) {
|
||||||
if(isReadOperation(operation)) *value = jasmin_.read(address);
|
if(!isWriteOperation(operation)) *value = jasmin_.read(address);
|
||||||
else jasmin_.write(address, *value);
|
else jasmin_.write(address, *value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DiskInterface::Microdisc:
|
case DiskInterface::Microdisc:
|
||||||
switch(address) {
|
switch(address) {
|
||||||
case 0x0310: case 0x0311: case 0x0312: case 0x0313:
|
case 0x0310: case 0x0311: case 0x0312: case 0x0313:
|
||||||
if(isReadOperation(operation)) *value = microdisc_.read(address);
|
if(!isWriteOperation(operation)) *value = microdisc_.read(address);
|
||||||
else microdisc_.write(address, *value);
|
else microdisc_.write(address, *value);
|
||||||
break;
|
break;
|
||||||
case 0x314: case 0x315: case 0x316: case 0x317:
|
case 0x314: case 0x315: case 0x316: case 0x317:
|
||||||
if(isReadOperation(operation)) *value = microdisc_.get_interrupt_request_register();
|
if(!isWriteOperation(operation)) *value = microdisc_.get_interrupt_request_register();
|
||||||
else microdisc_.set_control_register(*value);
|
else microdisc_.set_control_register(*value);
|
||||||
break;
|
break;
|
||||||
case 0x318: case 0x319: case 0x31a: case 0x31b:
|
case 0x318: case 0x319: case 0x31a: case 0x31b:
|
||||||
if(isReadOperation(operation)) *value = microdisc_.get_data_request_register();
|
if(!isWriteOperation(operation)) *value = microdisc_.get_data_request_register();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DiskInterface::Pravetz:
|
case DiskInterface::Pravetz:
|
||||||
if(address >= 0x0320) {
|
if(address >= 0x0320) {
|
||||||
if(isReadOperation(operation)) *value = pravetz_rom_[pravetz_rom_base_pointer_ + (address & 0xff)];
|
if(!isWriteOperation(operation)) *value = pravetz_rom_[pravetz_rom_base_pointer_ + (address & 0xff)];
|
||||||
else {
|
else {
|
||||||
switch(address) {
|
switch(address) {
|
||||||
case 0x380: case 0x381: case 0x382: case 0x383:
|
case 0x380: case 0x381: case 0x382: case 0x383:
|
||||||
@ -476,13 +476,13 @@ template <Analyser::Static::Oric::Target::DiskInterface disk_interface, CPU::MOS
|
|||||||
} else {
|
} else {
|
||||||
flush_diskii();
|
flush_diskii();
|
||||||
const int disk_value = diskii_.read_address(address);
|
const int disk_value = diskii_.read_address(address);
|
||||||
if(isReadOperation(operation) && disk_value != diskii_.DidNotLoad) *value = uint8_t(disk_value);
|
if(!isWriteOperation(operation) && disk_value != diskii_.DidNotLoad) *value = uint8_t(disk_value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(isReadOperation(operation))
|
if(!isWriteOperation(operation))
|
||||||
*value = ram_[address];
|
*value = ram_[address];
|
||||||
else {
|
else {
|
||||||
if(address >= 0x9800 && address <= 0xc000) update_video();
|
if(address >= 0x9800 && address <= 0xc000) update_video();
|
||||||
|
Loading…
Reference in New Issue
Block a user