double: more mockingboard code

This commit is contained in:
Vince Weaver 2023-05-12 00:33:45 -04:00
parent 5211fd633a
commit 5d405c27cd
4 changed files with 100 additions and 1 deletions

View File

@ -28,6 +28,7 @@ double.o: double.s \
zx02_optim.s copy_400.s gr_offsets.s vblank.s \
lc_detect.s text_print.s title.s gr_fast_clear.s \
interrupt_handler.s pt3_lib_mockingboard_patch.s \
wait_a_bit.s wait.s \
graphics/sworg_hgr.hgr.zx02 \
graphics/sworg_dhgr.aux.zx02 \
graphics/sworg_dhgr.bin.zx02 \

View File

@ -192,7 +192,48 @@ mockingboard_notfound:
skip_all_checks:
jsr wait_until_keypress
;==================================
; load music into the language card
; into $D000 set 2
;==================================
; switch in language card
; read/write RAM, $d000 bank 2
; lda $C08b
; lda $C08b
jsr mockingboard_patch ; patch to work in slots other than 4?
;=======================
; Set up 50Hz interrupt
;========================
jsr mockingboard_init
jsr mockingboard_setup_interrupt
zurg:
;============================
; Init the Mockingboard
;============================
jsr reset_ay_both
jsr clear_ay_both
;=======================
; wait for keypress
;=======================
; jsr wait_until_keypress
lda #25
jsr wait_a_bit
; jsr wait_until_keypress
;================================
; Clear screen and setup graphics
@ -575,3 +616,5 @@ config_string:
.include "text_print.s"
.include "title.s"
.include "gr_fast_clear.s"
.include "wait_a_bit.s"
.include "wait.s"

View File

@ -0,0 +1,18 @@
; copy of ROM wait
; because we might disable ROM
wait:
sec
wait2:
pha
wait3:
sbc #$01
bne wait3
pla
sbc #$01
bne wait2
rts
wait_end:
.assert (>wait_end - >wait) < 1 , error, "wait crosses page boundary"

View File

@ -0,0 +1,37 @@
;====================================
; wait for keypress or a few seconds
;====================================
; A is length to wait
wait_a_bit:
bit KEYRESET
tax
keyloop:
lda #200 ; delay a bit
jsr wait
lda KEYBOARD
bmi done_keyloop
dex
bne keyloop
; beq no_escape
done_keyloop:
; and #$7f
; cmp #27
; bne no_escape
; inc ESC_PRESSED
;no_escape:
bit KEYRESET
rts