lots of cleanup and finally adding in all other types

This commit is contained in:
Dagen Brock 2015-09-20 12:08:42 -05:00
parent 6a9a2190ce
commit 969d7fe971
1 changed files with 75 additions and 24 deletions

View File

@ -47,36 +47,85 @@ Menu_DrawOptions
iny iny
iny iny
lda ($F0),y lda ($F0),y
beq :charItem
cmp #1
beq :hexItem
cmp #2
beq :jsrItem
cmp #3
beq :listItem
cmp #4
beq :boolItem
:charItem
:boolItem
:hexItem jsr Menu_DrawOptionHex
bra :nextMenuItem
:listItem jsr Menu_DrawOptionList
bra :nextMenuItem
:jsrItem jsr Menu_DrawOptionAction
bra :nextMenuItem
:nextMenuItem asl ; *2 for table index
lda _menuOptionPtr tax
pea #:nextMenuItem-1 ; push this address to return from jmp tbl, yay 65816
jmp (Menu_DrawRoutinesTbl,x)
:nextMenuItem lda _menuOptionPtr
clc clc
adc #sizeof_ItemStruct ;len of "struct" adc #sizeof_ItemStruct ;len of "struct"
sta _menuOptionPtr sta _menuOptionPtr
bra :drawOption bra :drawOption
:menuDone :menuDone rts
Menu_DrawRoutinesTbl da Menu_DrawOptionHex ;char
da Menu_DrawOptionHex
da Menu_DrawOptionAction
da Menu_DrawOptionList
da Menu_DrawOptionBool
da Menu_DrawOptionBin
da Menu_DrawOptionInt
Menu_DrawOptionBin iny
lda ($F0),y ;get len
sta _menuOptionLen
iny
lda ($F0),y ;get da
sta $F2 ;storez
iny
lda ($F0),y ;get da
sta $F3 ;storez
ldy #0
:prloop lda ($F2),y
; print 4 bits
phy ; for safety. might not be needed
asl
jsr PRCARRYBIT
asl
jsr PRCARRYBIT
asl
jsr PRCARRYBIT
asl
jsr PRCARRYBIT
pha
lda #" "
jsr COUT
pla
asl
jsr PRCARRYBIT
asl
jsr PRCARRYBIT
asl
jsr PRCARRYBIT
asl
jsr PRCARRYBIT
ply
iny
cpy _menuOptionLen
beq :done
lda #" " ;print space between octets of bits
jsr COUT
bra :prloop
:done rts
PRCARRYBIT pha
bcs :is1
:is0 lda #"0"
bra :out
:is1 lda #"1"
:out jsr COUT
pla
rts rts
Menu_DrawOptionBool rts
Menu_DrawOptionInt rts
Menu_DrawOptionHex iny Menu_DrawOptionHex iny
lda ($F0),y ;get len lda ($F0),y ;get len
sta _menuHexIdx sta _menuOptionLen
iny iny
lda ($F0),y ;get da lda ($F0),y ;get da
sta $F2 ;storez sta $F2 ;storez
@ -87,7 +136,7 @@ Menu_DrawOptionHex iny
:prloop lda ($F2),y :prloop lda ($F2),y
jsr PRBYTE jsr PRBYTE
iny iny
cpy _menuHexIdx cpy _menuOptionLen
bne :prloop bne :prloop
rts rts
@ -125,7 +174,7 @@ Menu_DrawOptionList iny ;point to da
jsr PrintString jsr PrintString
rts rts
_menuHexIdx dw 0 _menuOptionLen dw 0
_menuOptionPtr dw 00 _menuOptionPtr dw 00
Menu_UndrawSelectedAll Menu_UndrawSelectedAll
stz _stash stz _stash
@ -205,6 +254,7 @@ Menu_GetItemScreenWidth
rts ;should be defined in param from string length rts ;should be defined in param from string length
:notList cpx MenuOption_Bool :notList cpx MenuOption_Bool
bne :notBool bne :notBool
lda #3 ;@todo: we'll use "off"/"on" for now.. revisit?
rts ;hmm.. undefined? @TODO!!! rts ;hmm.. undefined? @TODO!!!
:notBool :notBool
:wtf :wtf
@ -255,7 +305,7 @@ Menu_DrawBrackets ldx _menuRBracketX
rts rts
_menuLBracketX db 0 _menuLBracketX db 0
_menuRBracketX db 0 _menuRBracketX db 0
_menuSelectedX1 db 0 _menuSelectedX1 db 0
_menuSelectedY db 0 _menuSelectedY db 0
* THESE ARE ALL OF THE MENU INPUT TYPES * THESE ARE ALL OF THE MENU INPUT TYPES
@ -435,3 +485,4 @@ HexCharForByte
:alpha clc :alpha clc
adc #"A" adc #"A"
rts rts