mirror of
https://github.com/digarok/MiniMemoryTester.git
synced 2024-09-28 03:55:17 +00:00
memory detection all working and sets bank defaults
This commit is contained in:
parent
bbfc1a7a76
commit
c7c86025ab
@ -860,3 +860,4 @@ BINBCDVARDUMP
|
|||||||
jsr RDKEY
|
jsr RDKEY
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
157
src/mmt.s
157
src/mmt.s
@ -20,6 +20,12 @@ Init
|
|||||||
lda $C034 ; save border color
|
lda $C034 ; save border color
|
||||||
sta BorderColor
|
sta BorderColor
|
||||||
|
|
||||||
|
jsr DetectRam
|
||||||
|
lda BankExpansionLowest
|
||||||
|
sta StartBank
|
||||||
|
lda BankExpansionHighest
|
||||||
|
sta EndBank
|
||||||
|
|
||||||
lda #MainMenuDefs
|
lda #MainMenuDefs
|
||||||
ldx #>MainMenuDefs
|
ldx #>MainMenuDefs
|
||||||
jsr Menu_InitMenu
|
jsr Menu_InitMenu
|
||||||
@ -28,6 +34,7 @@ Init
|
|||||||
Main
|
Main
|
||||||
:menuLoop jsr DrawMenuBackground
|
:menuLoop jsr DrawMenuBackground
|
||||||
jsr DrawRomMessage
|
jsr DrawRomMessage
|
||||||
|
jsr DrawRamMessages
|
||||||
:menuDrawOptionsLoop jsr MenuUpdateWordSize ;always update this before draw in case of change
|
:menuDrawOptionsLoop jsr MenuUpdateWordSize ;always update this before draw in case of change
|
||||||
lda #MainMenuDefs
|
lda #MainMenuDefs
|
||||||
ldy #>MainMenuDefs
|
ldy #>MainMenuDefs
|
||||||
@ -49,8 +56,12 @@ Main
|
|||||||
beq :nextItem
|
beq :nextItem
|
||||||
:unknownKey bra :menuNoDrawLoop
|
:unknownKey bra :menuNoDrawLoop
|
||||||
:prevItem jsr Menu_PrevItem
|
:prevItem jsr Menu_PrevItem
|
||||||
|
jsr Menu_UndrawSelectedAll ;hack for blinky cursor
|
||||||
|
stz _ticker
|
||||||
bra :menuNoDrawLoop
|
bra :menuNoDrawLoop
|
||||||
:nextItem jsr Menu_NextItem
|
:nextItem jsr Menu_NextItem
|
||||||
|
jsr Menu_UndrawSelectedAll ;hack for blinky cursor
|
||||||
|
stz _ticker
|
||||||
bra :menuNoDrawLoop
|
bra :menuNoDrawLoop
|
||||||
* Main loop end ^^^
|
* Main loop end ^^^
|
||||||
|
|
||||||
@ -132,11 +143,46 @@ DrawMenuBackground jsr HOME
|
|||||||
|
|
||||||
|
|
||||||
DrawRomMessage
|
DrawRomMessage
|
||||||
PRINTXY #55;#05;Mesg_Rom
|
PRINTXY #55;#06;Mesg_Rom
|
||||||
lda GSROM
|
lda GSROM
|
||||||
jsr PRBYTE
|
jsr PRBYTE
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
DrawRamMessages
|
||||||
|
|
||||||
|
lda GSROM
|
||||||
|
cmp #3
|
||||||
|
bne :rom0or1
|
||||||
|
:rom3 PRINTXY #55;#07;Mesg_InternalRam1024
|
||||||
|
bra :drawExpansionMessage
|
||||||
|
:rom0or1 PRINTXY #55;#07;Mesg_InternalRam256
|
||||||
|
|
||||||
|
:drawExpansionMessage PRINTXY #55;#08;Mesg_ExpansionRam
|
||||||
|
lda BankExpansionRam ;number of banks
|
||||||
|
clc
|
||||||
|
xce
|
||||||
|
rep #$30
|
||||||
|
and #$00FF ;clear artifacts? can't remember state of B
|
||||||
|
asl ;*2
|
||||||
|
asl ;*4
|
||||||
|
asl ;*8
|
||||||
|
asl ;*16
|
||||||
|
asl ;*32
|
||||||
|
asl ;*64
|
||||||
|
sta _stash
|
||||||
|
sep #$30
|
||||||
|
ldx _stash
|
||||||
|
ldy _stash+1
|
||||||
|
jsr BINtoBCD
|
||||||
|
phx
|
||||||
|
tya
|
||||||
|
jsr PRBYTE
|
||||||
|
pla
|
||||||
|
jsr PRBYTE
|
||||||
|
lda #"K"
|
||||||
|
jsr COUT
|
||||||
|
rts
|
||||||
|
|
||||||
LOG MAC
|
LOG MAC
|
||||||
lda #]1
|
lda #]1
|
||||||
ldy #>]1
|
ldy #>]1
|
||||||
@ -238,7 +284,7 @@ BeginTestPass PRINTXY #38;#05;Mesg_TestPass
|
|||||||
clc ; WRITE START
|
clc ; WRITE START
|
||||||
xce
|
xce
|
||||||
rep $10 ; long x, short a
|
rep $10 ; long x, short a
|
||||||
lda TestStartBank
|
lda StartBank
|
||||||
sta CurBank
|
sta CurBank
|
||||||
ldy #0 ; update interval counter
|
ldy #0 ; update interval counter
|
||||||
:bankloop lda CurBank
|
:bankloop lda CurBank
|
||||||
@ -278,7 +324,7 @@ BeginTestPass PRINTXY #38;#05;Mesg_TestPass
|
|||||||
clc ; READ START
|
clc ; READ START
|
||||||
xce
|
xce
|
||||||
rep $10 ; long x, short a
|
rep $10 ; long x, short a
|
||||||
lda TestStartBank
|
lda StartBank
|
||||||
sta CurBank
|
sta CurBank
|
||||||
ldy #0 ; update interval counter
|
ldy #0 ; update interval counter
|
||||||
:bankrloop lda CurBank
|
:bankrloop lda CurBank
|
||||||
@ -328,6 +374,11 @@ BeginTestPass PRINTXY #38;#05;Mesg_TestPass
|
|||||||
_testIteration ds 8
|
_testIteration ds 8
|
||||||
_errorCounter ds 8
|
_errorCounter ds 8
|
||||||
UpdateScanInterval equ #$1000
|
UpdateScanInterval equ #$1000
|
||||||
|
|
||||||
|
Mesg_InternalRam256 asc "Built-In RAM 256K",00
|
||||||
|
Mesg_InternalRam1024 asc "Built-In RAM 1024K",00
|
||||||
|
Mesg_ExpansionRam asc "Expansion RAM ",00
|
||||||
|
|
||||||
Mesg_Rom asc "Apple IIgs ROM ",00
|
Mesg_Rom asc "Apple IIgs ROM ",00
|
||||||
Mesg_UserManual asc "USE ARROW KEYS TO MOVE - USE ENTER TO SELECT/EDIT",00
|
Mesg_UserManual asc "USE ARROW KEYS TO MOVE - USE ENTER TO SELECT/EDIT",00
|
||||||
Mesg_Starting asc $8D,"Starting Test",$8D,"Press P to pause, ESC to stop.",$8D,$8D,00
|
Mesg_Starting asc $8D,"Starting Test",$8D,"Press P to pause, ESC to stop.",$8D,$8D,00
|
||||||
@ -623,7 +674,7 @@ MenuStr_JSR da BeginTest ; MUST PRECEDE MENU S
|
|||||||
MenuStr_BeginTest asc " BEGIN TEST "
|
MenuStr_BeginTest asc " BEGIN TEST "
|
||||||
MenuStr_BeginTestL equ #*-MenuStr_BeginTest
|
MenuStr_BeginTestL equ #*-MenuStr_BeginTest
|
||||||
MenuStr_BeginTestE db 00
|
MenuStr_BeginTestE db 00
|
||||||
TestStartBank db #$06
|
StartBank db #$06
|
||||||
EndBank db #$1F
|
EndBank db #$1F
|
||||||
CurBank db #0
|
CurBank db #0
|
||||||
StartAddr dw #$0000
|
StartAddr dw #$0000
|
||||||
@ -653,7 +704,7 @@ MainMenuDefs
|
|||||||
:StartBank hex 19,05 ; x,y
|
:StartBank hex 19,05 ; x,y
|
||||||
db Menu_TypeHex ; 1=hex input
|
db Menu_TypeHex ; 1=hex input
|
||||||
db 01 ; memory size (bytes)
|
db 01 ; memory size (bytes)
|
||||||
da TestStartBank ; variable storage
|
da StartBank ; variable storage
|
||||||
:EndBank hex 22,05 ; x,y
|
:EndBank hex 22,05 ; x,y
|
||||||
db Menu_TypeHex ; 1=hex input
|
db Menu_TypeHex ; 1=hex input
|
||||||
db 01 ; memory size (bytes)
|
db 01 ; memory size (bytes)
|
||||||
@ -800,6 +851,7 @@ CheckKey lda KEY
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WaitKey
|
WaitKey
|
||||||
:kloop
|
:kloop
|
||||||
jsr ColorizeMenu
|
jsr ColorizeMenu
|
||||||
@ -819,3 +871,98 @@ BorderColor db 0
|
|||||||
_stash ds 255
|
_stash ds 255
|
||||||
ds \
|
ds \
|
||||||
|
|
||||||
|
* Creates a 256 byte map of each bank, "BankRam"
|
||||||
|
* The map shows whether it's Built-in RAM, ROM, Expansion RAM, etc.
|
||||||
|
DetectRam
|
||||||
|
lda #BankRAMFastBuiltIn ;these are universal to all IIgs
|
||||||
|
sta BankMap+$00 ;bank 00
|
||||||
|
sta BankMap+$01 ;bank 01
|
||||||
|
lda #BankRAMSlowBuiltIn ;
|
||||||
|
sta BankMap+$e0 ;bank e0
|
||||||
|
sta BankMap+$e1 ;bank e1
|
||||||
|
lda #BankROMUsed
|
||||||
|
sta BankMap+$FE ;bank FE
|
||||||
|
sta BankMap+$FF ;bank FF
|
||||||
|
|
||||||
|
lda GSROM
|
||||||
|
cmp #3 ;check for ROM3 IIgs
|
||||||
|
bne :rom0or1
|
||||||
|
:rom3 lda #BankRAMFastBuiltIn
|
||||||
|
ldx #$02 ;bank 02
|
||||||
|
:builtinram sta BankMap,x ;bank 02
|
||||||
|
inx
|
||||||
|
cpx #$10 ;stop after bank 0F
|
||||||
|
bcc :builtinram
|
||||||
|
lda #BankROMUsed ;ROM 3 is 256KB, so 4 banks (2 additional)
|
||||||
|
sta BankMap+$FC ;
|
||||||
|
sta BankMap+$FD ;
|
||||||
|
ldx #$10 ;ROM3 starts scan at bank 10
|
||||||
|
bra :detectloop
|
||||||
|
|
||||||
|
:rom0or1 ;no additional mappings
|
||||||
|
lda #$FE ;ROM1 end bank FE
|
||||||
|
sta :endbankscan+1 ;but change our max scan bank
|
||||||
|
ldx #$02 ;ROM0/1 starts scan at bank 02
|
||||||
|
|
||||||
|
:detectloop txa ;we'll store the bank number
|
||||||
|
sta :writer+3 ;overwrite bank address
|
||||||
|
sta :reader+3
|
||||||
|
sta :compare+1
|
||||||
|
:writer stal $000000 ;should overwrite first byte
|
||||||
|
:reader ldal $000000
|
||||||
|
:compare cmp #$00
|
||||||
|
bne :notused
|
||||||
|
inc BankExpansionRam ;TotalMB++
|
||||||
|
lda #BankRAMFastExpansion ;store mapping
|
||||||
|
sta BankMap,x
|
||||||
|
:continue inx
|
||||||
|
cpx #$E0 ;skip banks $E0-$EF
|
||||||
|
bcc :endbankscan ; <E0
|
||||||
|
cpx #$F0
|
||||||
|
bcs :endbankscan ; >= F0 (>EF)
|
||||||
|
ldx #$F0 ;skip to bank F0
|
||||||
|
bra :detectloop
|
||||||
|
:endbankscan cpx #$FC ;ROM3 end bank (default)
|
||||||
|
bcc :detectloop ;blt
|
||||||
|
|
||||||
|
;let's find low/high to simplify things
|
||||||
|
ldx #$ff
|
||||||
|
:lowloop lda BankMap,x
|
||||||
|
cmp #BankRAMFastExpansion
|
||||||
|
beq :isRam
|
||||||
|
dex
|
||||||
|
cpx #$ff
|
||||||
|
bne :lowloop
|
||||||
|
bra :checkhigh
|
||||||
|
:isRam stx BankExpansionLowest
|
||||||
|
dex
|
||||||
|
bra :lowloop
|
||||||
|
|
||||||
|
:checkhigh ldx #$00
|
||||||
|
:highloop lda BankMap,x
|
||||||
|
cmp #BankRAMFastExpansion
|
||||||
|
beq :isRam2
|
||||||
|
inx
|
||||||
|
bne :highloop
|
||||||
|
bra :done
|
||||||
|
:isRam2 stx BankExpansionHighest
|
||||||
|
inx
|
||||||
|
bra :highloop
|
||||||
|
|
||||||
|
:done rts
|
||||||
|
|
||||||
|
:notused lda #BankNoRAM
|
||||||
|
sta BankMap,x
|
||||||
|
bra :continue
|
||||||
|
|
||||||
|
BankExpansionRam ds 1
|
||||||
|
BankExpansionLowest ds 1
|
||||||
|
BankExpansionHighest ds 1
|
||||||
|
ds \
|
||||||
|
BankMap ds 256 ;
|
||||||
|
BankROMUsed = 1
|
||||||
|
BankROMReserved = 2
|
||||||
|
BankRAMSlowBuiltIn = 3
|
||||||
|
BankRAMFastBuiltIn = 4
|
||||||
|
BankRAMFastExpansion = 5
|
||||||
|
BankNoRAM = 0
|
||||||
|
Loading…
Reference in New Issue
Block a user