auxmem: make sure LC test didn't touch main mem LC

This commit is contained in:
Zellyn Hunter 2017-01-18 20:57:26 -05:00
parent afda89a50d
commit 3fe7aa4e60
4 changed files with 65 additions and 6 deletions

View File

@ -11,7 +11,7 @@
KSW = $38
LCRESULT = $10
LCRESULT2 = $11
LCRESULT1 = $11
AUXRESULT = $12
;; AUXMOVE locations

Binary file not shown.

View File

@ -23,12 +23,12 @@ AUXMEMTESTS
+print
!text "LC FAILED BEFORE:SKIPPING AUXMEM LC",$8D
+printed
beq .skiplc
beq .afterlc
.auxlc ;; Run langcard tests in auxmem
lda LCRESULT
sta LCRESULT2
sta LCRESULT1
lda #0
sta LCRESULT
@ -37,11 +37,10 @@ AUXMEMTESTS
lda $C08B
lda #$44
sta $D17B ; $D17B is $53 in Apple II/plus/e/enhanced
lda #$55
sta $FE1F ; FE1F is $60 in Apple II/plus/e/enhanced
lda $C083 ; Read and write bank 2
lda $C083
lda #$66
lda #$44
sta $D17B
jsr .zptoaux
@ -51,8 +50,60 @@ AUXMEMTESTS
sta ALTZP_OFF_W
jsr .zpfromaux
lda LCRESULT
bne +
+prerr $0008 ;; E0008: We tried to run the langcard tests again with auxmem (ALTZP active), and they failed, so we're quitting the auxmem test.
!text "QUITTING AUXMEM TEST DUE TO LC FAIL",$8D
+prerred
sec
rts
.skiplc
;; Check that the stuff we stashed in main RAM was unaffected.
+
lda $C088 ; Read bank 1
lda $D17B
cmp #$44
beq +
pha
+print
!text "WANT BANK1 $D17B"
+printed
beq .lcerr
+ lda $C080 ; Read bank 2
lda $D17B
cmp #$44
beq +
pha
+print
!text "WANT BANK2 $D17B"
+printed
beq .lcerr
+
lda $FE1F
cmp #$44
beq .afterlc
pha
+print
!text "WANT RAM $FE1F"
+printed
.lcerr
+print
!text "=$44;GOT $"
+printed
pla
jsr PRBYTE
+prerr $0009 ;; E0009: We wrote $44 to main RAM in the three test locations used by the LC test. They should have been unaffected by the LC test while it was using auxmem, but at least one of them was modified.
!text ""
+prerred
sec
rts
.afterlc
;; Success
+print

View File

@ -27,3 +27,11 @@ We tried to put the language card into read bank 2, write bank 2, but failed to
## E0007
This is a data-driven test of Language Card operation. We initialize $D17B in RAM bank 1 to $11, $D17B in RAM bank 2 to $22, and $FE1F in RAM to $33. Then, we perform a testdata-driven sequence of LDA and STA to the $C08X range. Finally we (try to) increment $D17B and $FE1F. Then we test (a) the current live value in $D17B, (b) the current live value in $FE1F, (c) the RAM bank 1 value of $D17B, (d) the RAM bank 2 value of $D17B, and (e) the RAM value of $FE1F, to see whether they match expected values. $D17B is usually $53 in ROM, and $FE1F is usally $60. For more information on the operation of the language card soft-switches, see Understanding the Apple IIe, by James Fielding Sather, Pg 5-24.
## E0008
We tried to run the langcard tests again with auxmem (ALTZP active), and they failed, so we're quitting the auxmem test.
## E0009
We wrote $44 to main RAM in the three test locations used by the LC test. They should have been unaffected by the LC test while it was using auxmem, but at least one of them was modified.