mirror of
https://github.com/a2-4am/passport.git
synced 2024-05-28 06:41:28 +00:00
116 lines
2.7 KiB
Plaintext
116 lines
2.7 KiB
Plaintext
|
CURRENTVER = $30 ; ASCII "0"
|
||
|
DEFSLOT = $36 ; ASCII "6"
|
||
|
DEFDRIVE = $32 ; ASCII "2"
|
||
|
|
||
|
PREFSFILE !byte prefs_e-prefs_b
|
||
|
prefs_b
|
||
|
!text "PASSPORT.CONF"
|
||
|
prefs_e
|
||
|
PREFSBUFFER = $B000
|
||
|
PREFSREADLEN = $0003
|
||
|
|
||
|
PREFSVER !byte $FF
|
||
|
SLOT !byte $FF
|
||
|
DRIVE !byte $FF
|
||
|
!byte $8D
|
||
|
!ct "lcase.ct"
|
||
|
!text "|||",$8D
|
||
|
!text "||+---WRITE DRIVE (1-2)",$8D
|
||
|
!text "|+---WRITE SLOT (1-7)",$8D
|
||
|
!text "+---PREFS VERSION (DO NOT CHANGE)",$8D
|
||
|
PREFSWRITELEN = *-PREFSVER
|
||
|
|
||
|
;-------------------------------
|
||
|
; LoadPrefs
|
||
|
; load preferences from file
|
||
|
;
|
||
|
; in: ProDOS must be in memory
|
||
|
;-------------------------------
|
||
|
LoadPrefs
|
||
|
lda #$FF
|
||
|
sta PREFSVER
|
||
|
jsr LoadFile1Shot
|
||
|
!word PREFSFILE
|
||
|
!word PREFSVER
|
||
|
!word PREFSREADLEN
|
||
|
!word PREFSBUFFER
|
||
|
jmp ValidatePrefs
|
||
|
|
||
|
;-------------------------------
|
||
|
; SavePrefs
|
||
|
; save preferences to file
|
||
|
;
|
||
|
; in: ProDOS must be in memory
|
||
|
;-------------------------------
|
||
|
SavePrefs
|
||
|
jsr ValidatePrefs
|
||
|
jsr SaveFile1Shot
|
||
|
!word PREFSFILE
|
||
|
!byte 04 ; text file
|
||
|
!byte 00,00 ; no aux file type
|
||
|
!word PREFSVER
|
||
|
!word PREFSWRITELEN
|
||
|
!word PREFSBUFFER
|
||
|
rts
|
||
|
|
||
|
;-------------------------------
|
||
|
; ValidatePrefs
|
||
|
; Sanity-check preferences and reset to
|
||
|
; default values for any variables that
|
||
|
; are out of range.
|
||
|
; If the first value (PREFSVER) is
|
||
|
; not recognized, all other values are
|
||
|
; reset to defaults.
|
||
|
;
|
||
|
; in: none
|
||
|
; out: C set if any prefs were changed
|
||
|
; C clear if all prefs were valid
|
||
|
; A,X clobbered
|
||
|
;-------------------------------
|
||
|
ValidatePrefs
|
||
|
ldx #$00
|
||
|
lda PREFSVER
|
||
|
cmp #CURRENTVER
|
||
|
beq checkslot
|
||
|
lda #CURRENTVER
|
||
|
sta PREFSVER
|
||
|
lda #$FF
|
||
|
sta SLOT
|
||
|
sta DRIVE
|
||
|
inx
|
||
|
checkslot
|
||
|
lda SLOT
|
||
|
sec
|
||
|
sbc #$30
|
||
|
beq badslot
|
||
|
cmp #$08
|
||
|
bcc checkdrive
|
||
|
badslot
|
||
|
lda #DEFSLOT
|
||
|
sta SLOT
|
||
|
inx
|
||
|
checkdrive
|
||
|
lda DRIVE
|
||
|
sec
|
||
|
sbc #$30
|
||
|
beq baddrive
|
||
|
cmp #$03
|
||
|
bcc checks6d1
|
||
|
baddrive
|
||
|
lda #DEFDRIVE
|
||
|
sta DRIVE
|
||
|
inx
|
||
|
checks6d1
|
||
|
lda SLOT
|
||
|
cmp #$36
|
||
|
bne prefs_done
|
||
|
lda DRIVE
|
||
|
cmp #$31
|
||
|
bne prefs_done
|
||
|
lda #$32
|
||
|
sta DRIVE
|
||
|
inx
|
||
|
prefs_done
|
||
|
cpx #$01 ; set carry if anything changed
|
||
|
rts
|