This commit is contained in:
4am 2018-04-17 16:08:32 -04:00
parent 4d50a6b717
commit 1b8d5076ec
3 changed files with 36 additions and 18 deletions

View File

@ -80,13 +80,5 @@ MainScreen
jsr HandleKey ; handle keypresses jsr HandleKey ; handle keypresses
bra .mainRunLoop bra .mainRunLoop
ExitWeeGUI
ldx #WGDisableMouse ; disable mouse support before quitting
jsr WeeGUI
ldx #WGClearScreen ; clear screen (HOME)
jsr WeeGUI
ldx #WGExit ; clean up WeeGUI
jmp WeeGUI
gGamesListStore gGamesListStore
!word *+2 ; address of first okvs store !word *+2 ; address of first okvs store

View File

@ -5,6 +5,7 @@
; ;
; Public functions ; Public functions
; - HardResetWeeGUI ; - HardResetWeeGUI
; - ExitWeeGUI
; - CreateRadio ; - CreateRadio
; - CreateCheckbox ; - CreateCheckbox
; - CreateButton ; - CreateButton
@ -35,6 +36,7 @@ kStringCancel
; out: PARAM0/PARAM1 clobbered ; out: PARAM0/PARAM1 clobbered
; all registers clobbered ; all registers clobbered
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
!zone {
HardResetWeeGUI HardResetWeeGUI
lda #15 ; highest possible WeeGUI view ID lda #15 ; highest possible WeeGUI view ID
sta kHardResetDummyView sta kHardResetDummyView
@ -49,6 +51,25 @@ HardResetWeeGUI
jmp WeeGUI jmp WeeGUI
kHardResetDummyView kHardResetDummyView
!byte 0,0,0,0,0,0,0,0 !byte 0,0,0,0,0,0,0,0
}
;------------------------------------------------------------------------------
; ExitWeeGUI
; clears the screen and safely shuts down WeeGUI
;
; in: WeeGUI initialized
; out: A,Y preserved
; X clobbered
;------------------------------------------------------------------------------
!zone {
ExitWeeGUI
ldx #WGDisableMouse ; disable mouse support before quitting
jsr WeeGUI
ldx #WGClearScreen ; clear screen (HOME)
jsr WeeGUI
ldx #WGExit ; clean up WeeGUI
jmp WeeGUI
}
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; CreateRadio/CreateCheckbox/CreateButton ; CreateRadio/CreateCheckbox/CreateButton

View File

@ -72,7 +72,7 @@ VersionsDialog
jsr okvs_len jsr okvs_len
!word gVersionsStore !word gVersionsStore
sta .numVersions sta iNumVersions
asl asl
inc inc
@ -80,7 +80,7 @@ VersionsDialog
sta kViewVersionsFrame+7 ; frame height sta kViewVersionsFrame+7 ; frame height
lda #12 lda #12
sec sec
sbc .numVersions sbc iNumVersions
sta kViewVersionsFrame+3 ; frame top = 12 - numVersions sta kViewVersionsFrame+3 ; frame top = 12 - numVersions
inc inc
sta kViewVersionsOK+2 ; OK top = frame top + 1 sta kViewVersionsOK+2 ; OK top = frame top + 1
@ -119,7 +119,7 @@ VersionsDialog
+ !word $FDFD ; SMC + !word $FDFD ; SMC
plx plx
inx inx
.numVersions=*+1 iNumVersions=*+1
cpx #$FD ; SMC cpx #$FD ; SMC
bne .createRadioLoop bne .createRadioLoop
@ -157,7 +157,7 @@ VersionsDialog
jsr WeeGUI jsr WeeGUI
lda #1 ; WeeGUI radio buttons are limited to 15 characters, so we have just the lda #1 ; WeeGUI radio buttons are limited to 15 characters, so we have just the
sta .vtab ; hotkeys (1-9) 'in' the radio button then print the labels separately sta iVersionsVTAB ; hotkeys (1-9) 'in' the radio button then print the labels separately
jsr okvs_iter_values jsr okvs_iter_values
!word gVersionsStore !word gVersionsStore
!word PrintVersionLabelCallback !word PrintVersionLabelCallback
@ -178,17 +178,22 @@ VersionsDialog
; internal functions ; internal functions
PrintVersionLabelCallback PrintVersionLabelCallback
; called via okvs_iter_values
; X = index (0-based) into gVersionsStore
; A/Y points to okvs record value, which we use to create a printable label
ldx #50 ldx #50
jsr CreateNullTerminatedString jsr CreateNullTerminatedString
jsr PrintAt jsr PrintAt
!byte 7 ; htab (constant) !byte 7 ; htab (constant)
.vtab !byte $FD ; SMC iVersionsVTAB
!byte $FD ; SMC
!word kNullTerminatedBuffer !word kNullTerminatedBuffer
inc .vtab inc iVersionsVTAB
inc .vtab inc iVersionsVTAB
rts rts
HandleVersionsKey HandleVersionsKey
; A = key code from $C000
ldx #.endkeys-.keys ldx #.endkeys-.keys
- cmp .keys,x - cmp .keys,x
beq .foundKey beq .foundKey
@ -215,7 +220,7 @@ HandleVersionsKey
lda #$FD ; SMC lda #$FD ; SMC
cmp #ID_VERSIONS_PREVIOUS cmp #ID_VERSIONS_PREVIOUS
beq .previous beq .previous
cpx .numVersions ; find 'next' view ID (wrapping around to 1) cpx iNumVersions ; find 'next' view ID (wrapping around to 1)
bcs + bcs +
inx inx
!byte $2C !byte $2C
@ -224,7 +229,7 @@ HandleVersionsKey
.previous .previous
dex dex
bne .gotNewID bne .gotNewID
ldx .numVersions ldx iNumVersions
.gotNewID .gotNewID
txa txa
ldx #WGSelectView ; check new radio button and repaint it ldx #WGSelectView ; check new radio button and repaint it
@ -250,7 +255,7 @@ GetCheckedVersion
lda #ID_VERSIONS_1 lda #ID_VERSIONS_1
pha pha
clc clc
adc .numVersions ; .numVersions was populated during VersionsDialog and hasn't changed since adc iNumVersions ; iNumVersions was populated during VersionsDialog and hasn't changed since
tay tay
pla pla
jmp GetCheckedRadioButton jmp GetCheckedRadioButton