From de68e70246eb4eb7b2899f83745584a20123d508 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 5 Aug 2018 17:47:23 -0400 Subject: [PATCH] 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. --- Machines/AppleII/AppleII.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/Machines/AppleII/AppleII.cpp b/Machines/AppleII/AppleII.cpp index 28dee33a1..e2c3c26f1 100644 --- a/Machines/AppleII/AppleII.cpp +++ b/Machines/AppleII/AppleII.cpp @@ -519,10 +519,11 @@ template 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 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 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_) {