mirror of
https://github.com/mgcaret/davex-mg-utils.git
synced 2025-01-17 20:31:01 +00:00
fastchip functionality mostly complete
This commit is contained in:
parent
3f39f19255
commit
b9a7876f62
132
fastchip.s
132
fastchip.s
@ -5,11 +5,14 @@
|
|||||||
; -l List speeds and exit
|
; -l List speeds and exit
|
||||||
; -e <num> Enable FastChip, 1 = on, 0 = off (sync)
|
; -e <num> Enable FastChip, 1 = on, 0 = off (sync)
|
||||||
; -s <num> Set speed, 0-40, see -l for list of speed values
|
; -s <num> Set speed, 0-40, see -l for list of speed values
|
||||||
; -p <str> Set slot speeds, slot numbers in str are set to fast, rest slow.
|
; -p <str> Set slot speeds, slot numbers in str are set to fast, rest slow
|
||||||
|
; To set all slow, use -p 0
|
||||||
; -a <num> Set audio (speaker) delay, 0-4 (Off/Fast/Normal/Music/Hifi)
|
; -a <num> Set audio (speaker) delay, 0-4 (Off/Fast/Normal/Music/Hifi)
|
||||||
; -j <num> Set joystick delay, 0-2 (Off/Short/Long)
|
; -j <num> Set joystick delay, 0-2 (Off/Short/Long)
|
||||||
; -b <num> Set backlight, 0-5 (Off/Fade/Speed/R/G/B)
|
; -b <num> Set backlight, 0-5 (Off/Fade/Speed/R/G/B)
|
||||||
;
|
;
|
||||||
|
; Invalid values are silently ingored.
|
||||||
|
;
|
||||||
; No options: List current settings
|
; No options: List current settings
|
||||||
; %hend
|
; %hend
|
||||||
|
|
||||||
@ -43,6 +46,12 @@ prbyte = $fdda
|
|||||||
DX_info $01,$12,dx_cc_iie_or_iigs,$00
|
DX_info $01,$12,dx_cc_iie_or_iigs,$00
|
||||||
DX_ptab
|
DX_ptab
|
||||||
DX_parm 'l',t_nil ; list speeds
|
DX_parm 'l',t_nil ; list speeds
|
||||||
|
DX_parm 'e',t_int1 ; enable/disable
|
||||||
|
DX_parm 's',t_int1 ; speed
|
||||||
|
DX_parm 'p',t_string ; slot speeds
|
||||||
|
DX_parm 'a',t_int1 ; speaker delay
|
||||||
|
DX_parm 'j',t_int1 ; joystick delay
|
||||||
|
DX_parm 'b',t_int1 ; backlight
|
||||||
DX_end_ptab
|
DX_end_ptab
|
||||||
DX_desc "Control FastChip //e."
|
DX_desc "Control FastChip //e."
|
||||||
DX_main
|
DX_main
|
||||||
@ -83,11 +92,132 @@ doit: lda #$00
|
|||||||
bne :+
|
bne :+
|
||||||
jsr show_all
|
jsr show_all
|
||||||
: rts
|
: rts
|
||||||
|
|
||||||
; Try all config setting options
|
; Try all config setting options
|
||||||
.proc try_all
|
.proc try_all
|
||||||
|
jsr fcunlock
|
||||||
|
jsr try_state
|
||||||
|
jsr try_speed
|
||||||
|
jsr try_slots
|
||||||
|
jsr try_speaker
|
||||||
|
jsr try_joystick
|
||||||
|
jsr try_backlight
|
||||||
|
jsr fclock
|
||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
.proc try_state
|
||||||
|
lda #'e'|$80
|
||||||
|
jsr xgetparm_ch
|
||||||
|
bcs done
|
||||||
|
cpy #$02 ; too big?
|
||||||
|
bcs done
|
||||||
|
cpy #$01
|
||||||
|
bne :+ ; want disable
|
||||||
|
lda #$01
|
||||||
|
sta fcbase+1 ; enable
|
||||||
|
bne diddone
|
||||||
|
: lda #$01 ; anything but $a6 or $6a
|
||||||
|
sta fcbase ; disable
|
||||||
|
diddone: jsr show_state
|
||||||
|
inc showall
|
||||||
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.proc try_speed
|
||||||
|
lda #'s'|$80
|
||||||
|
jsr xgetparm_ch
|
||||||
|
bcs done
|
||||||
|
cpy #41 ; too big?
|
||||||
|
bcs done
|
||||||
|
lda #CFG_SPEED
|
||||||
|
sta fcbase+5 ; config reg
|
||||||
|
sty fcbase+6 ; value
|
||||||
|
jsr show_speed
|
||||||
|
inc showall
|
||||||
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.proc try_slots
|
||||||
|
lda #'p'|$80
|
||||||
|
jsr xgetparm_ch
|
||||||
|
bcs done
|
||||||
|
sta mytemp+1 ; save string pointer
|
||||||
|
sty mytemp
|
||||||
|
ldy #$00
|
||||||
|
sty myidx ; we'll keep calculated value here
|
||||||
|
lda (mytemp),y ; length of string
|
||||||
|
beq done ; empty
|
||||||
|
tay ; length into y
|
||||||
|
lp: lda (mytemp),y ; get char
|
||||||
|
and #$7f
|
||||||
|
cmp #'1'
|
||||||
|
bcc next
|
||||||
|
cmp #'7'+1
|
||||||
|
bcs next
|
||||||
|
and #$0f ; get the bits we need to shift
|
||||||
|
tax
|
||||||
|
lda #$01
|
||||||
|
: asl ; shift left for the slot
|
||||||
|
dex
|
||||||
|
bne :-
|
||||||
|
ora myidx ; combine with existing
|
||||||
|
sta myidx ; and save
|
||||||
|
next: dey
|
||||||
|
bne lp
|
||||||
|
ldy myidx ; get computed value
|
||||||
|
lda #CFG_SPEED
|
||||||
|
sta fcbase+5 ; config reg
|
||||||
|
sty fcbase+6 ; value
|
||||||
|
;lda #$00 ; DEBUG
|
||||||
|
;jsr xprdec_2 ; DEBUG
|
||||||
|
jsr show_slots
|
||||||
|
inc showall
|
||||||
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.proc try_speaker
|
||||||
|
lda #'a'|$80
|
||||||
|
jsr xgetparm_ch
|
||||||
|
bcs done
|
||||||
|
cpy #05 ; too big?
|
||||||
|
bcs done
|
||||||
|
lda #CFG_SPKR
|
||||||
|
sta fcbase+5 ; config reg
|
||||||
|
sty fcbase+6 ; value
|
||||||
|
jsr show_speaker
|
||||||
|
inc showall
|
||||||
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.proc try_joystick
|
||||||
|
lda #'j'|$80
|
||||||
|
jsr xgetparm_ch
|
||||||
|
bcs done
|
||||||
|
cpy #03 ; too big?
|
||||||
|
bcs done
|
||||||
|
lda #CFG_JSTCK
|
||||||
|
sta fcbase+5 ; config reg
|
||||||
|
sty fcbase+6 ; value
|
||||||
|
jsr show_joystick
|
||||||
|
inc showall
|
||||||
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
.proc try_backlight
|
||||||
|
lda #'b'|$80
|
||||||
|
jsr xgetparm_ch
|
||||||
|
bcs done
|
||||||
|
cpy #06 ; too big?
|
||||||
|
bcs done
|
||||||
|
lda #CFG_LIGHT
|
||||||
|
sta fcbase+5 ; config reg
|
||||||
|
sty fcbase+6 ; value
|
||||||
|
jsr show_backlight
|
||||||
|
inc showall
|
||||||
|
done: rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
; Show all current settings
|
; Show all current settings
|
||||||
.proc show_all
|
.proc show_all
|
||||||
jsr fcunlock
|
jsr fcunlock
|
||||||
|
Loading…
x
Reference in New Issue
Block a user