mirror of
https://github.com/zellyn/a2audit.git
synced 2024-06-11 09:29:28 +00:00
add softswitch read test
This commit is contained in:
parent
f291ff20e2
commit
2158da2308
|
@ -23,9 +23,13 @@ Error messages can be viewed at
|
||||||
- [x] sha1sum assembly code (currently not used yet because it's slow)
|
- [x] sha1sum assembly code (currently not used yet because it's slow)
|
||||||
- [x] language card tests
|
- [x] language card tests
|
||||||
- [x] main/auxiliary memory softswitch behavior tests
|
- [x] main/auxiliary memory softswitch behavior tests
|
||||||
|
- [x] softswitch reading tests
|
||||||
|
|
||||||
### TODO
|
### TODO
|
||||||
|
|
||||||
|
- [ ] Incorporate Cxxx testing into data-driven test
|
||||||
|
- [ ] Add testcases for Cxxx testing
|
||||||
|
- [ ] weirder softswitch behavior corner cases
|
||||||
- [ ] floating-bus tests
|
- [ ] floating-bus tests
|
||||||
|
|
||||||
## Raison d'être
|
## Raison d'être
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
LCRESULT = $10
|
LCRESULT = $10
|
||||||
LCRESULT1 = $11
|
LCRESULT1 = $11
|
||||||
AUXRESULT = $12
|
AUXRESULT = $12
|
||||||
|
SOFTSWITCHRESULT = $13
|
||||||
|
|
||||||
CSW = $36
|
CSW = $36
|
||||||
KSW = $38
|
KSW = $38
|
||||||
|
@ -31,11 +32,13 @@
|
||||||
!addr DST = $08
|
!addr DST = $08
|
||||||
!addr SHAINPUT = $eb
|
!addr SHAINPUT = $eb
|
||||||
!addr SHALENGTH = $ee
|
!addr SHALENGTH = $ee
|
||||||
|
!addr tmp0 = $f9
|
||||||
!addr tmp1 = $fa
|
!addr tmp1 = $fa
|
||||||
!addr tmp2 = $fb
|
!addr tmp2 = $fb
|
||||||
!addr tmp3 = $fc
|
!addr tmp3 = $fc
|
||||||
!addr tmp4 = $fd
|
!addr tmp4 = $fd
|
||||||
!addr tmp5 = $fe
|
!addr tmp5 = $fe
|
||||||
|
!addr tmp6 = $ff
|
||||||
|
|
||||||
;; Softswitch locations.
|
;; Softswitch locations.
|
||||||
RESET_80STORE = $C000
|
RESET_80STORE = $C000
|
||||||
|
@ -62,6 +65,14 @@
|
||||||
SET_SLOTC3ROM = $C00B
|
SET_SLOTC3ROM = $C00B
|
||||||
READ_SLOTC3ROM = $C017
|
READ_SLOTC3ROM = $C017
|
||||||
|
|
||||||
|
RESET_80COL = $C00C
|
||||||
|
SET_80COL = $C00D
|
||||||
|
READ_80COL = $C01F
|
||||||
|
|
||||||
|
RESET_ALTCHRSET = $C00E
|
||||||
|
SET_ALTCHRSET = $C00F
|
||||||
|
READ_ALTCHRSET = $C01E
|
||||||
|
|
||||||
RESET_TEXT = $C050
|
RESET_TEXT = $C050
|
||||||
SET_TEXT = $C051
|
SET_TEXT = $C051
|
||||||
READ_TEXT = $C01A
|
READ_TEXT = $C01A
|
||||||
|
@ -77,9 +88,14 @@
|
||||||
RESET_HIRES = $C056
|
RESET_HIRES = $C056
|
||||||
SET_HIRES = $C057
|
SET_HIRES = $C057
|
||||||
READ_HIRES = $C01D
|
READ_HIRES = $C01D
|
||||||
|
|
||||||
RESET_INTC8ROM = $CFFF
|
RESET_INTC8ROM = $CFFF
|
||||||
|
|
||||||
|
;; Readable things without corresponding set/reset pairs.
|
||||||
|
READ_HRAM_BANK2 = $C011
|
||||||
|
READ_HRAMRD = $C012
|
||||||
|
READ_VBL = $C019
|
||||||
|
|
||||||
;; CXXX utility routine locations
|
;; CXXX utility routine locations
|
||||||
AUXMOVE = $C311
|
AUXMOVE = $C311
|
||||||
;; Monitor locations.
|
;; Monitor locations.
|
||||||
|
@ -118,6 +134,9 @@ main:
|
||||||
;; Auxiliary memory card tests.
|
;; Auxiliary memory card tests.
|
||||||
jsr AUXMEMTESTS
|
jsr AUXMEMTESTS
|
||||||
|
|
||||||
|
;; Tests of softswitch-reading
|
||||||
|
jsr SOFTSWITCHTESTS
|
||||||
|
|
||||||
;; ROM SHA-1 checks.
|
;; ROM SHA-1 checks.
|
||||||
;; jsr SHASUMTESTS - do this later, because it's SLOW!
|
;; jsr SHASUMTESTS - do this later, because it's SLOW!
|
||||||
|
|
||||||
|
@ -129,8 +148,9 @@ end:
|
||||||
|
|
||||||
!src "langcard.asm"
|
!src "langcard.asm"
|
||||||
!src "auxmem.asm"
|
!src "auxmem.asm"
|
||||||
;!src "shasumtests.asm"
|
!src "softswitch.asm"
|
||||||
!src "resetall.asm"
|
!src "resetall.asm"
|
||||||
|
;!src "shasumtests.asm"
|
||||||
|
|
||||||
print
|
print
|
||||||
lda $C081
|
lda $C081
|
||||||
|
|
BIN
audit/audit.dsk
BIN
audit/audit.dsk
Binary file not shown.
|
@ -63,13 +63,13 @@ AUXMEMTESTS
|
||||||
lda #$44
|
lda #$44
|
||||||
sta $D17B
|
sta $D17B
|
||||||
|
|
||||||
jsr .zptoaux
|
jsr zptoaux
|
||||||
|
|
||||||
sta SET_ALTZP
|
sta SET_ALTZP
|
||||||
jsr LANGCARDTESTS_NO_CHECK
|
jsr LANGCARDTESTS_NO_CHECK
|
||||||
sta RESET_ALTZP
|
sta RESET_ALTZP
|
||||||
|
|
||||||
jsr .zpfromaux
|
jsr zpfromaux
|
||||||
|
|
||||||
lda LCRESULT
|
lda LCRESULT
|
||||||
bne +
|
bne +
|
||||||
|
@ -374,7 +374,7 @@ AUXMEMTESTS
|
||||||
+++ rts
|
+++ rts
|
||||||
|
|
||||||
;;; Copy zero page to aux mem. Assumes zp pointing at main mem, and leaves it that way.
|
;;; Copy zero page to aux mem. Assumes zp pointing at main mem, and leaves it that way.
|
||||||
.zptoaux
|
zptoaux
|
||||||
ldx #0
|
ldx #0
|
||||||
- sta RESET_ALTZP
|
- sta RESET_ALTZP
|
||||||
lda 0,x
|
lda 0,x
|
||||||
|
@ -386,7 +386,7 @@ AUXMEMTESTS
|
||||||
rts
|
rts
|
||||||
|
|
||||||
;;; Copy zero page from aux mem. Assumes zp pointing at main mem, and leaves it that way.
|
;;; Copy zero page from aux mem. Assumes zp pointing at main mem, and leaves it that way.
|
||||||
.zpfromaux
|
zpfromaux
|
||||||
ldx #0
|
ldx #0
|
||||||
- sta SET_ALTZP
|
- sta SET_ALTZP
|
||||||
lda 0,x
|
lda 0,x
|
||||||
|
|
243
audit/softswitch.asm
Normal file
243
audit/softswitch.asm
Normal file
|
@ -0,0 +1,243 @@
|
||||||
|
;;; Apple IIe softswitch-reading tests
|
||||||
|
;;; Copyright © 2017 Zellyn Hunter <zellyn@gmail.com>
|
||||||
|
|
||||||
|
!zone softswitch {
|
||||||
|
|
||||||
|
.resetloc = tmp1
|
||||||
|
.setloc = tmp3
|
||||||
|
.readloc = tmp5
|
||||||
|
.loopcount = tmp0
|
||||||
|
.switch = SRC
|
||||||
|
.testtimes = 8
|
||||||
|
|
||||||
|
SOFTSWITCHTESTS
|
||||||
|
lda #1
|
||||||
|
sta SOFTSWITCHRESULT
|
||||||
|
|
||||||
|
lda MACHINE
|
||||||
|
cmp #4
|
||||||
|
bcs +
|
||||||
|
+print
|
||||||
|
!text "NOT IIE OR IIC:SKIPPING SOFTSWITCH TEST",$8D
|
||||||
|
+printed
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
+ +print
|
||||||
|
!text "TESTING SOFTSWITCHES",$8D
|
||||||
|
+printed
|
||||||
|
|
||||||
|
;; Test write-softswitches
|
||||||
|
lda #<.writeswitches
|
||||||
|
sta SRC
|
||||||
|
lda #>.writeswitches
|
||||||
|
sta SRC+1
|
||||||
|
lda #(.readswitches-.writeswitches)/6
|
||||||
|
sta .loopcount
|
||||||
|
|
||||||
|
.wrtloop
|
||||||
|
;; Copy reset/set/read locations to .resetloc, .setloc, .readloc
|
||||||
|
ldy #0
|
||||||
|
ldx #0
|
||||||
|
- lda (SRC),y
|
||||||
|
sta .resetloc,x
|
||||||
|
inc SRC
|
||||||
|
bne +
|
||||||
|
inc SRC+1
|
||||||
|
+ inx
|
||||||
|
cpx #6
|
||||||
|
bne -
|
||||||
|
|
||||||
|
jsr RESETALL
|
||||||
|
jsr zptoaux
|
||||||
|
|
||||||
|
;; Initial RESET
|
||||||
|
ldy #0
|
||||||
|
sta (.resetloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bpl + ;ok
|
||||||
|
ldx #$80
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;; Ensure that reading doesn't do anything.
|
||||||
|
ldy #0
|
||||||
|
lda (.setloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bpl + ;ok
|
||||||
|
ldx #$02 ;TODO: create "LEAVE" fail message
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;; Actual SET
|
||||||
|
ldy #0
|
||||||
|
sta (.setloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bmi + ;ok
|
||||||
|
ldx #$82
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;; RESET again
|
||||||
|
ldy #0
|
||||||
|
sta (.resetloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bpl + ;ok
|
||||||
|
ldx #$80
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
dec .loopcount
|
||||||
|
bne .wrtloop
|
||||||
|
|
||||||
|
lda #(.endswitches-.readswitches)/6
|
||||||
|
sta .loopcount
|
||||||
|
|
||||||
|
|
||||||
|
.readloop
|
||||||
|
;; Copy reset/set/read locations to .resetloc, .setloc, .readloc
|
||||||
|
ldy #0
|
||||||
|
ldx #0
|
||||||
|
- lda (SRC),y
|
||||||
|
sta .resetloc,x
|
||||||
|
inc SRC
|
||||||
|
bne +
|
||||||
|
inc SRC+1
|
||||||
|
+ inx
|
||||||
|
cpx #6
|
||||||
|
bne -
|
||||||
|
|
||||||
|
jsr RESETALL
|
||||||
|
jsr zptoaux
|
||||||
|
|
||||||
|
;; Initial RESET
|
||||||
|
ldy #0
|
||||||
|
lda (.resetloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bpl + ;ok
|
||||||
|
ldx #$00
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;; Actual SET
|
||||||
|
ldy #0
|
||||||
|
lda (.setloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bmi + ;ok
|
||||||
|
ldx #$02
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;; RESET again
|
||||||
|
ldy #0
|
||||||
|
lda (.resetloc),y
|
||||||
|
ldx #.testtimes ; test `.testtimes` times
|
||||||
|
- lda (.readloc),y
|
||||||
|
bpl + ;ok
|
||||||
|
ldx #$00
|
||||||
|
jsr RESETALL
|
||||||
|
jsr .fail
|
||||||
|
+ dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
dec .loopcount
|
||||||
|
bne .readloop
|
||||||
|
|
||||||
|
|
||||||
|
.end
|
||||||
|
jsr RESETALL
|
||||||
|
lda SOFTSWITCHRESULT
|
||||||
|
bne .success
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
.success
|
||||||
|
+print
|
||||||
|
!text "SOFTSWITCH TESTS SUCCEEDED",$8D
|
||||||
|
+printed
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
;;; Print failure message.
|
||||||
|
;;; High bit of X = write. Low two bits of X: 0 = .resetloc, 2 = .setloc
|
||||||
|
;;; A = actual value read (which tells what we expected: the opposite)
|
||||||
|
.fail
|
||||||
|
sta SCRATCH
|
||||||
|
txa
|
||||||
|
bmi +
|
||||||
|
+print
|
||||||
|
!text "READ"
|
||||||
|
+printed
|
||||||
|
beq ++
|
||||||
|
+ +print
|
||||||
|
!text "WRITE"
|
||||||
|
+printed
|
||||||
|
++ +print
|
||||||
|
!text " AT "
|
||||||
|
+printed
|
||||||
|
txa
|
||||||
|
and #$3
|
||||||
|
tax
|
||||||
|
ldy .resetloc+1,x
|
||||||
|
lda .resetloc,x
|
||||||
|
tax
|
||||||
|
jsr PRNTYX
|
||||||
|
+print
|
||||||
|
!text " SHOULD "
|
||||||
|
+printed
|
||||||
|
lda SCRATCH
|
||||||
|
bpl +
|
||||||
|
+print
|
||||||
|
!text "RE"
|
||||||
|
+printed
|
||||||
|
+ +print
|
||||||
|
!text "SET "
|
||||||
|
+printed
|
||||||
|
ldx .readloc
|
||||||
|
ldy .readloc+1
|
||||||
|
jsr PRNTYX
|
||||||
|
+print
|
||||||
|
!text ";GOT $"
|
||||||
|
+printed
|
||||||
|
lda SCRATCH
|
||||||
|
jsr PRBYTE
|
||||||
|
lda #$8D
|
||||||
|
jsr COUT
|
||||||
|
lda #0
|
||||||
|
sta SOFTSWITCHRESULT
|
||||||
|
ldx #1
|
||||||
|
rts
|
||||||
|
|
||||||
|
.writeswitches
|
||||||
|
!word RESET_80STORE, SET_80STORE, READ_80STORE
|
||||||
|
!word RESET_RAMRD, SET_RAMRD, READ_RAMRD
|
||||||
|
!word RESET_RAMWRT, SET_RAMWRT, READ_RAMWRT
|
||||||
|
!word RESET_INTCXROM, SET_INTCXROM, READ_INTCXROM
|
||||||
|
!word RESET_ALTZP, SET_ALTZP, READ_ALTZP
|
||||||
|
!word RESET_SLOTC3ROM, SET_SLOTC3ROM, READ_SLOTC3ROM
|
||||||
|
!word RESET_80COL, SET_80COL, READ_80COL
|
||||||
|
!word RESET_ALTCHRSET, SET_ALTCHRSET, READ_ALTCHRSET
|
||||||
|
.readswitches
|
||||||
|
!word RESET_TEXT, SET_TEXT, READ_TEXT
|
||||||
|
!word RESET_MIXED, SET_MIXED, READ_MIXED
|
||||||
|
!word RESET_PAGE2, SET_PAGE2, READ_PAGE2
|
||||||
|
!word RESET_HIRES, SET_HIRES, READ_HIRES
|
||||||
|
.endswitches
|
||||||
|
} ;softswitch
|
Loading…
Reference in New Issue
Block a user