adding more menu types and clen up SOME functions

This commit is contained in:
Dagen Brock 2015-03-09 13:07:35 -05:00
parent 6a4133d6cc
commit 91bc3fd7d6

177
src/mt.s
View File

@ -364,7 +364,7 @@ PrintTestCurrent pha
inc _stash ; \ inc _stash ; \
beq :noroll ; |- INX beq :noroll ; |- INX
inc _stash+1 ; / inc _stash+1 ; /
:nocorrupt cmp #"p"A ; check lower p :nocorrupt cmp #"p" ; check lower p
* @TODO make tolower for the comparisons * @TODO make tolower for the comparisons
bne :nopause bne :nopause
sta STROBE sta STROBE
@ -475,6 +475,8 @@ Menu_DrawOptions sta $0
beq :hexItem beq :hexItem
cmp #2 cmp #2
beq :jsrItem beq :jsrItem
cmp #3
beq :listItem
:charItem :charItem
:hexItem iny :hexItem iny
lda ($0),y ; get len lda ($0),y ; get len
@ -492,6 +494,7 @@ Menu_DrawOptions sta $0
cpy _menuHexIdx cpy _menuHexIdx
bne :prloop bne :prloop
bra :nextMenuItem bra :nextMenuItem
:listItem bra :nextMenuItem
:jsrItem :jsrItem
iny iny
iny iny
@ -561,7 +564,7 @@ Menu_UndrawSelected
bra :rightBracket bra :rightBracket
:notHex cmp #2 :notHex cmp #2
bne :wtf bne :notAction
iny iny
lda ($0),y lda ($0),y
@ -572,6 +575,18 @@ Menu_UndrawSelected
bra :rightBracket bra :rightBracket
:notAction
cmp #3
bne :wtf
iny
lda ($0),y
inc
clc
adc _menuSelectedX1
tax
bra :rightBracket
:wtf :wtf
:rightBracket :rightBracket
@ -634,7 +649,7 @@ Menu_DrawSelected
bra :rightBracket bra :rightBracket
:notHex cmp #2 :notHex cmp #2
bne :wtf bne :notAction
iny iny
lda ($0),y lda ($0),y
@ -645,6 +660,18 @@ Menu_DrawSelected
bra :rightBracket bra :rightBracket
:notAction
cmp #3
bne :wtf
iny
lda ($0),y
inc
clc
adc _menuSelectedX1
tax
bra :rightBracket
:wtf :wtf
:rightBracket :rightBracket
@ -659,22 +686,47 @@ Menu_DrawSelected
jsr COUT jsr COUT
rts rts
_menuSelectedX1 db 0 ; no x2 cuz we be addin' _menuSelectedX1 db 0 ; no x2 cuz we be addin' dat offset
_menuSelectedY db 0 _menuSelectedY db 0
MenuOption_Char equ #0
MenuOption_Hex equ #1
MenuOption_Action equ #2
MenuOption_List equ #3
MenuOption_Bool equ #4
Menu_TypeTable da Menu_TypeChar,Menu_TypeHex,Menu_TypeAction,Menu_TypeList,Menu_TypeBool
* $0 = ptr->MenuDefs
Menu_HandleSelection Menu_HandleSelection
lda #MainMenuDefs lda #MainMenuDefs
ldy #>MainMenuDefs ldy #>MainMenuDefs
sta $0 sta $0
sty $1 sty $1
lda #0 lda #0
ldx Menu_ItemSelected ldx Menu_ItemSelected ; odd choice to load again, but preps flags (z) how i likes it
:check beq :foundIdx :check beq :foundIdx ; <- a=struct offset
clc clc
adc #6 ; "struct" size adc #6 ; "struct" size
dex dex
bra :check bra :check
:foundIdx sta _stash
:foundIdx pha
tay
iny ;\
iny ; \
lda ($0),y ; > get MenuOption_Type, set up for jmp table
asl ; /
tax ;/
pla
jmp (Menu_TypeTable,x)
Menu_TypeChar rts
Menu_TypeList rts
Menu_TypeBool rts
Menu_TypeHex
pha
tay tay
lda ($0),y lda ($0),y
tax tax
@ -682,17 +734,10 @@ Menu_HandleSelection
lda ($0),y lda ($0),y
tay tay
jsr GoXY jsr GoXY
*** HERE pla
ldy _stash clc
iny adc #3 ; ->memory size
iny tay
lda ($0),y
bne :notChar
*TODO
:notChar cmp #1
bne :notHex
iny
lda ($0),y lda ($0),y
asl ;*2 asl ;*2
pha pha
@ -707,10 +752,7 @@ Menu_HandleSelection
jsr GetHex jsr GetHex
rts rts
Menu_TypeAction iny ; skip len byte
:notHex cmp #2
bne :wtf
iny ; skip len byte
iny iny
lda ($0),y lda ($0),y
sta :ACTION+1 sta :ACTION+1
@ -735,9 +777,6 @@ Menu_HandleSelection
:wtf
rts
@ -751,8 +790,7 @@ Menu_PrevItem dec Menu_ItemSelected
:noflip rts :noflip rts
Menu_NextItem Menu_NextItem inc Menu_ItemSelected
inc Menu_ItemSelected
lda Menu_ItemSelected lda Menu_ItemSelected
cmp #MainMenuItems cmp #MainMenuItems
bcc :noflip bcc :noflip
@ -762,32 +800,36 @@ Menu_NextItem
MainMenuDefs MainMenuDefs
:StartBank hex 13,07 ; x,y :StartBank hex 13,06 ; x,y
db 01 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Hex ; 1=hex input
db 01 ; memory size (bytes), 0=char/1=hex input db 01 ; memory size (bytes)
da StartBank ; variable storage da StartBank ; variable storage
:EndBank hex 13,08 ; x,y :EndBank hex 13,07 ; x,y
db 01 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Hex ; 1=hex input
db 01 ; memory size (bytes), 0=char/1=hex input db 01 ; memory size (bytes)
da EndBank ; variable storage da EndBank ; variable storage
:StartAddr hex 13,0A ; x,y :StartAddr hex 13,09 ; x,y
db 01 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Hex ; 1=hex input
db 02 ; memory size (bytes), 0=char/1=hex input db 02 ; memory size (bytes)
da StartAddr ; variable storage da StartAddr ; variable storage
:EndAddr hex 13,0B ; x,y :EndAddr hex 13,0A ; x,y
db 01 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Hex ; 1=hex input
db 02 ; memory size (bytes), 0=char/1=hex input db 02 ; memory size (bytes)
da EndAddr ; variable storage da EndAddr ; variable storage
:TestType hex 13,0C ; x,y
db MenuOption_List ; 3=list input
db 08 ; max len size (bytes), 3=option list
da TestType ; params definition & storage
:TestByte hex 13,0D ; x,y :TestByte hex 13,0D ; x,y
db 01 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Hex ; 1=hex input
db 01 ; memory size (bytes), 0=char/1=hex input db 01 ; memory size (bytes)
da TestValue ; variable storage da TestValue ; variable storage
:TestDelay hex 13,0E ; x,y :TestDelay hex 13,0E ; x,y
db 01 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Hex ; 1=hex input
db 01 ; memory size (bytes), 0=char/1=hex input db 01 ; memory size (bytes)
da TestDelay ; variable storage da TestDelay ; variable storage
:BeginTest hex 13,11 ; x,y :BeginTest hex 0B,12 ; x,y
db 02 ; 0=char/1=hex input 2=Menu JSR db MenuOption_Action ; 2=action
db MenuStr_BeginTestL ; menu string length db MenuStr_BeginTestL ; menu string length
da MenuStr_BeginTest ; string storage da MenuStr_BeginTest ; string storage
MainMenuLen equ *-MainMenuDefs MainMenuLen equ *-MainMenuDefs
@ -795,7 +837,14 @@ MainMenuItems equ MainMenuLen/6
MainMenuEnd dw 0000 MainMenuEnd dw 0000
Menu_ItemSelected db 0 Menu_ItemSelected db 0
TestType db 00 ; actual CONST val
da _TestTypes
_TestTypes asc "BYTE",$00
asc "WORD",$00
asc "RANDBYTE",$00
asc "RANDBYTE",$00
asc "CHECKERS",$00
asc "BANK",$00
MenuStr_JSR da BeginTest ; MUST PRECEDE MENU STRING! Yes, it's magicly inferred. (-2) MenuStr_JSR da BeginTest ; MUST PRECEDE MENU STRING! Yes, it's magicly inferred. (-2)
MenuStr_BeginTest asc "BEGIN TEST" MenuStr_BeginTest asc "BEGIN TEST"
@ -806,25 +855,27 @@ MainMenuStrs
asc " ",$1B,'ZGGGGGGGGGGGGGGGGGGGGGGGGGGG\'," Mini Memory Tester ",'\GGGGGGGGGGGGG\'," ALPHA ",'\GGGGG_',$18,$8D,$00 asc " ",$1B,'ZGGGGGGGGGGGGGGGGGGGGGGGGGGG\'," Mini Memory Tester ",'\GGGGGGGGGGGGG\'," ALPHA ",'\GGGGG_',$18,$8D,$00
asc " ",$1B,'ZWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVW'," ReactiveMicro ",'VW_',$18,$8D,00 asc " ",$1B,'ZWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVW'," ReactiveMicro ",'VW_',$18,$8D,00
asc " ",$1B,'ZLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL_',$18,$8D,00 asc " ",$1B,'ZLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",' \GGG_',"Test Settings",'ZGGG\ '," ABCDEFGHIZKLMNOPQRSTUVWXYZ ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",' \G_',"Test Settings",'ZG\ '," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'ABCDEFGHIZKLMNOPQRSTUVWXYZ'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," Start BANK: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," Start BANK: ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," End BANK: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," End BANK: ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," Start ADDR: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," Start ADDR: ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," End ADDR: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," End ADDR: ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," Test Type: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," Test Byte: ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," Test Byte: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," Test Delay: ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," Test Delay: ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," USE ARROW KEYS TO MOVE - USE ENTER TO SELECT/EDIT ",'_',$18,$8D,00 asc " ",$1B,'Z'," ",'_'," ",'Z'," ",'_',$18,$8D,00
asc " ",$1B,'Z'," ",'LLLLLLLLLLLLLLLLLLLLLLLLL'," ",'_',$18,$8D,00
asc " ",$1B,'Z',"____________________________________________________________________________",'_',$18,$8D,00 asc " ",$1B,'Z',"____________________________________________________________________________",'_',$18,$8D,00
* asc " ",$1B,'Z'," USE ARROW KEYS TO MOVE - USE ENTER TO SELECT/EDIT ",'_',$18,$8D,00
* asc " ABCDEFGHIZKLMNOPQRSTUVWXYZ ",$8D,$00 * asc " ABCDEFGHIZKLMNOPQRSTUVWXYZ ",$8D,$00
* asc $1B,' ABCDEFGHIZKLMNOPQRSTUVWXYZ ',$1B,$8D,$00 * asc $1B,' ABCDEFGHIZKLMNOPQRSTUVWXYZ ',$1B,$8D,$00