mirror of
https://github.com/zellyn/a2audit.git
synced 2024-06-03 04:29:28 +00:00
Skip RAMRD softswitch on <128K, broken emu check
This commit is contained in:
parent
d96d081c9a
commit
215f4cb391
BIN
audit/audit.dsk
BIN
audit/audit.dsk
Binary file not shown.
|
@ -5,7 +5,59 @@
|
||||||
jsr IDENTIFY
|
jsr IDENTIFY
|
||||||
lda $C082 ; Put ROM back in place.
|
lda $C082 ; Put ROM back in place.
|
||||||
|
|
||||||
+print
|
;; Fix up possibly broken MEMORY count on IIe machines.
|
||||||
|
;; See UtAIIe: 5-38
|
||||||
|
lda MACHINE
|
||||||
|
cmp #IIe
|
||||||
|
bne +++
|
||||||
|
|
||||||
|
jsr RESETALL
|
||||||
|
sta SET_80STORE
|
||||||
|
lda SET_HIRES
|
||||||
|
lda SET_PAGE2
|
||||||
|
lda #$00
|
||||||
|
sta $400
|
||||||
|
lda #$88
|
||||||
|
sta $2000
|
||||||
|
cmp $400
|
||||||
|
beq .has65k
|
||||||
|
cmp $2000
|
||||||
|
bne .has64k
|
||||||
|
cmp $2000
|
||||||
|
bne .has64k
|
||||||
|
|
||||||
|
;; Okay, it looks like we have 128K. But what if our emulator
|
||||||
|
;; is just broken, and we're reading and writing the same bank of
|
||||||
|
;; RAM for both main and aux mem? Let's check for that explicitly.
|
||||||
|
jsr RESETALL
|
||||||
|
lda #$88
|
||||||
|
sta $400
|
||||||
|
lda #$89
|
||||||
|
sta SET_RAMWRT
|
||||||
|
sta $400
|
||||||
|
lda #$88
|
||||||
|
sta RESET_RAMWRT
|
||||||
|
cmp $400
|
||||||
|
bne +
|
||||||
|
cmp $400
|
||||||
|
beq ++
|
||||||
|
|
||||||
|
+ +prerr $000C ;; E000C: $400 main memory and $300 aux memory seem to write to the same place, which is probably an emulator bug.
|
||||||
|
!text "MAIN AND AUX ARE SAME RAM"
|
||||||
|
+prerred
|
||||||
|
jmp end
|
||||||
|
|
||||||
|
.has64k
|
||||||
|
lda #64
|
||||||
|
!byte $2C
|
||||||
|
.has65k lda #65
|
||||||
|
sta MEMORY
|
||||||
|
|
||||||
|
++ jsr RESETALL
|
||||||
|
lda #'A'
|
||||||
|
sta $400
|
||||||
|
|
||||||
|
+++ +print
|
||||||
!text "MEMORY:"
|
!text "MEMORY:"
|
||||||
+printed
|
+printed
|
||||||
lda MEMORY
|
lda MEMORY
|
||||||
|
|
|
@ -35,6 +35,21 @@ SOFTSWITCHTESTS
|
||||||
lda #(.readswitches-.writeswitches)/6
|
lda #(.readswitches-.writeswitches)/6
|
||||||
sta .loopcount
|
sta .loopcount
|
||||||
|
|
||||||
|
;; Check memory: <= 65K: don't test RAMRD
|
||||||
|
lda MEMORY
|
||||||
|
cmp #66
|
||||||
|
bcs .wrtloop ; Enough memory: continue
|
||||||
|
|
||||||
|
;; Not enough: skip one loop iteration, and increment SRC past RAMRD addresses
|
||||||
|
dec .loopcount
|
||||||
|
clc
|
||||||
|
lda SRC
|
||||||
|
adc #6
|
||||||
|
sta SRC
|
||||||
|
lda SRC+1
|
||||||
|
adc #0
|
||||||
|
sta SRC+1
|
||||||
|
|
||||||
.wrtloop
|
.wrtloop
|
||||||
;; Copy reset/set/read locations to .resetloc, .setloc, .readloc
|
;; Copy reset/set/read locations to .resetloc, .setloc, .readloc
|
||||||
ldy #0
|
ldy #0
|
||||||
|
@ -242,11 +257,11 @@ SOFTSWITCHTESTS
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.writeswitches
|
.writeswitches
|
||||||
!word RESET_80STORE, SET_80STORE, READ_80STORE
|
|
||||||
!word RESET_RAMRD, SET_RAMRD, READ_RAMRD
|
!word RESET_RAMRD, SET_RAMRD, READ_RAMRD
|
||||||
!word RESET_RAMWRT, SET_RAMWRT, READ_RAMWRT
|
!word RESET_RAMWRT, SET_RAMWRT, READ_RAMWRT
|
||||||
!word RESET_INTCXROM, SET_INTCXROM, READ_INTCXROM
|
!word RESET_80STORE, SET_80STORE, READ_80STORE
|
||||||
!word RESET_ALTZP, SET_ALTZP, READ_ALTZP
|
!word RESET_ALTZP, SET_ALTZP, READ_ALTZP
|
||||||
|
!word RESET_INTCXROM, SET_INTCXROM, READ_INTCXROM
|
||||||
!word RESET_SLOTC3ROM, SET_SLOTC3ROM, READ_SLOTC3ROM
|
!word RESET_SLOTC3ROM, SET_SLOTC3ROM, READ_SLOTC3ROM
|
||||||
!word RESET_80COL, SET_80COL, READ_80COL
|
!word RESET_80COL, SET_80COL, READ_80COL
|
||||||
!word RESET_ALTCHRSET, SET_ALTCHRSET, READ_ALTCHRSET
|
!word RESET_ALTCHRSET, SET_ALTCHRSET, READ_ALTCHRSET
|
||||||
|
|
|
@ -43,3 +43,7 @@ This is a data-driven test of main and auxiliary memory softswitch operation. We
|
||||||
## E000B
|
## E000B
|
||||||
|
|
||||||
This is a the Cxxx-ROM check part of the auxiliary memory data-driven test (see E000A for a description of the other part). After a full reset, we perform a testdata-driven sequence of instructions. Finally we check which parts of Cxxx ROM seem to be visible. We check C100-C2FF, C300-C3FF, C400-C7FF (which should be the same as C100-C2FF), and C800-CFFE. For more details, see Understanding the Apple IIe, by James Fielding Sather, Pg 5-28.
|
This is a the Cxxx-ROM check part of the auxiliary memory data-driven test (see E000A for a description of the other part). After a full reset, we perform a testdata-driven sequence of instructions. Finally we check which parts of Cxxx ROM seem to be visible. We check C100-C2FF, C300-C3FF, C400-C7FF (which should be the same as C100-C2FF), and C800-CFFE. For more details, see Understanding the Apple IIe, by James Fielding Sather, Pg 5-28.
|
||||||
|
|
||||||
|
## E000C
|
||||||
|
|
||||||
|
$400 main memory and $300 aux memory seem to write to the same place, which is probably an emulator bug.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user