1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-23 20:29:42 +00:00

Fixes various IIe video deficiencies.

Specifically:
* the double-high resolution switches should be read/write; and
* the other IIe-specific switches should cause a video update for real-time effect.
This commit is contained in:
Thomas Harte 2018-08-05 17:47:23 -04:00
parent e07447eb9a
commit de68e70246

View File

@ -519,10 +519,11 @@ template <bool is_iie> class ConcreteMachine:
// Write-only switches. All IIe as currently implemented.
if(is_iie) {
switch(address) {
default: break;
default: printf("Write %04x?\n", address); break;
case 0xc000:
case 0xc001:
update_video();
video_->set_80_store(!!(address&1));
set_main_paging();
break;
@ -561,13 +562,16 @@ template <bool is_iie> class ConcreteMachine:
break;
case 0xc00c:
case 0xc00d: video_->set_80_columns(!!(address&1)); break;
case 0xc00d:
update_video();
video_->set_80_columns(!!(address&1));
break;
case 0xc00e:
case 0xc00f: video_->set_alternative_character_set(!!(address&1)); break;
case 0xc05e:
case 0xc05f: video_->set_double_high_resolution(!(address&1)); break;
case 0xc00f:
update_video();
video_->set_alternative_character_set(!!(address&1));
break;
}
}
}
@ -606,6 +610,14 @@ template <bool is_iie> class ConcreteMachine:
set_main_paging();
break;
case 0xc05e:
case 0xc05f:
if(is_iie) {
update_video();
video_->set_double_high_resolution(!(address&1));
}
break;
case 0xc010:
keyboard_input_ &= 0x7f;
if(string_serialiser_) {