From 352183cbeb47335aa0ef3e28c3958796988e87cd Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Sat, 26 Apr 2014 13:35:09 -0700 Subject: [PATCH] beginning of softswitch tests --- disks/testvm1.dsk.gz | Bin 9891 -> 9931 bytes src/test/testvm.c | 103 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/disks/testvm1.dsk.gz b/disks/testvm1.dsk.gz index d95e0f75c69d0a96c6219ab5f828365ffcd503bf..adad0f6a60aa5b259a8554b181e257abcb601ffe 100644 GIT binary patch literal 9931 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 BH)sF= diff --git a/src/test/testvm.c b/src/test/testvm.c index b0427217..36254d12 100644 --- a/src/test/testvm.c +++ b/src/test/testvm.c @@ -189,6 +189,104 @@ TEST test_read_random() { PASS(); } +// ---------------------------------------------------------------------------- +// Softswitch tests + +#define SS_MASK 0x3ffff + +#define TYPE_PAGE2_OFF() \ + strcat(input_str, "POKE49236,0\r") /* C054 */ + +#define TYPE_PAGE2_ON() \ + strcat(input_str, "POKE49237,0\r") /* C055 */ + +#define TYPE_80STORE_OFF() \ + strcat(input_str, "POKE49152,0\r") /* C000 */ + +#define TYPE_80STORE_ON() \ + strcat(input_str, "POKE49153,0\r") /* C001 */ + +#define TYPE_HIRES_OFF() \ + strcat(input_str, "POKE49238,0\r") /* C056 */ + +#define TYPE_HIRES_ON() \ + strcat(input_str, "POKE49239,0\r") /* C057 */ + +#define TYPE_TRIGGER_WATCHPT() \ + strcat(input_str, "POKE7987,255\r") + +TEST test_PAGE2_on(bool ss_80store, bool ss_hires) { + BOOT_TO_DOS(); + + // setup for testing ... + + TYPE_PAGE2_OFF(); + + ASSERT(apple_ii_64k[0][WATCHPOINT_ADDR] != TEST_FINISHED); + + if (ss_80store) { + TYPE_80STORE_ON(); + } else { + TYPE_80STORE_OFF(); + } + + if (ss_hires) { + TYPE_HIRES_ON(); + } else { + TYPE_HIRES_OFF(); + } + + TYPE_TRIGGER_WATCHPT(); + + c_debugger_go(); + + ASSERT(apple_ii_64k[0][WATCHPOINT_ADDR] == TEST_FINISHED); + ASSERT(!(softswitches & SS_PAGE2)); + ASSERT( (ss_80store ? (softswitches & SS_80STORE) : !(softswitches & SS_80STORE)) ); + ASSERT( (ss_hires ? (softswitches & SS_HIRES) : !(softswitches & SS_HIRES)) ); + + uint32_t ss_save = softswitches; + + // run actual test ... + + RESET_INPUT(); + apple_ii_64k[0][WATCHPOINT_ADDR] = 0x00; + TYPE_PAGE2_ON(); + TYPE_TRIGGER_WATCHPT(); + + c_debugger_go(); + + ASSERT(apple_ii_64k[0][WATCHPOINT_ADDR] == TEST_FINISHED); + ASSERT((softswitches & SS_PAGE2)); + ASSERT( (ss_80store ? (softswitches & SS_80STORE) : !(softswitches & SS_80STORE)) ); + ASSERT( (ss_hires ? (softswitches & SS_HIRES) : !(softswitches & SS_HIRES)) ); + + if (ss_80store) { + ASSERT(video__current_page == 0); + ASSERT((softswitches & (SS_TEXTRD|SS_TEXTWRT))); + ASSERT((void *)base_textrd == (void *)(apple_ii_64k[1])); + ASSERT((void *)base_textwrt == (void *)(apple_ii_64k[1])); + if (ss_hires) { + ASSERT((softswitches & (SS_HGRRD|SS_HGRWRT))); + ASSERT((void *)base_hgrrd == (void *)(apple_ii_64k[1])); + ASSERT((void *)base_hgrwrt == (void *)(apple_ii_64k[1])); + } else { + ASSERT((void *)base_hgrrd == (void *)(apple_ii_64k)); + ASSERT((void *)base_hgrwrt == (void *)(apple_ii_64k)); + } + } else { + ss_save = (ss_save | SS_PAGE2); + ASSERT(((softswitches & SS_MASK) == ss_save)); + ASSERT(video__current_page = 1); + ASSERT((void *)base_textrd == (void *)(apple_ii_64k)); + ASSERT((void *)base_textwrt == (void *)(apple_ii_64k)); + ASSERT((void *)base_hgrrd == (void *)(apple_ii_64k)); + ASSERT((void *)base_hgrwrt == (void *)(apple_ii_64k)); + } + + PASS(); +} + // ---------------------------------------------------------------------------- // Test Suite @@ -238,6 +336,11 @@ GREATEST_SUITE(test_suite_vm) { RUN_TESTp(test_read_random); + RUN_TESTp(test_PAGE2_on, /*80STORE*/0, /*HIRES*/0); + RUN_TESTp(test_PAGE2_on, /*80STORE*/0, /*HIRES*/1); + RUN_TESTp(test_PAGE2_on, /*80STORE*/1, /*HIRES*/0); + RUN_TESTp(test_PAGE2_on, /*80STORE*/1, /*HIRES*/1); + // ... c_eject_6(0); pthread_mutex_unlock(&interface_mutex);