dos33fsprogs/bot_demo/botdemo.s

211 lines
2.8 KiB
ArmAsm
Raw Normal View History

2020-11-11 03:07:19 +00:00
; Play music while showing AppleIIbot programs
; by deater (Vince Weaver) <vince@deater.net>
; Zero Page
.include "zp.inc"
.include "hardware.inc"
2020-11-15 03:45:18 +00:00
STROUT = $db3a
2020-11-11 03:07:19 +00:00
DONE = 0
DO_LOAD = 1
DO_LIST = 2
DO_RUN = 3
bot_demo:
;===================
; init some stuff
; we have from $6000 to $9600 (DOS 3.3)
; which is $3600 = 12 + 1.5 = 13.5k
; we don't need to set HIMEM as we don't use many vars
; and variable memory starts right after the program it seems
;===================
; PT3 Setup
lda #0
sta DONE_PLAYING
lda #1
sta LOOP
jsr mockingboard_detect
bcc mockingboard_not_found
setup_interrupt:
jsr mockingboard_init
jsr mockingboard_setup_interrupt
jsr reset_ay_both
jsr clear_ay_both
jsr pt3_init_song
start_interrupts:
tsx
stx original_stack
cli
mockingboard_not_found:
;===================
; init screen
jsr TEXT
jsr HOME
2020-11-15 03:45:18 +00:00
bit SET_GR
bit TEXTGR
2020-11-11 03:07:19 +00:00
bit KEYRESET
;===================
; init vars
;=============================
2020-11-15 03:45:18 +00:00
; Load bg
lda #<bg_rle
sta GBASL
lda #>bg_rle
sta GBASH
lda #$c
jsr load_rle_gr
2020-11-11 03:07:19 +00:00
2020-11-15 03:45:18 +00:00
jsr do_wipe
2020-11-11 03:07:19 +00:00
; jsr gr_copy_to_current ; copy to page1
2020-11-15 03:45:18 +00:00
;=============================
; mockingboard where available
lda #5
sta CH
lda #21
sta CV
jsr VTAB
lda #<mock_string
ldy #>mock_string
jsr STROUT
2020-11-11 03:07:19 +00:00
2020-11-15 03:45:18 +00:00
lda #12
sta CH
lda #22
sta CV
jsr VTAB
lda #<mock2_string
ldy #>mock2_string
jsr STROUT
2020-11-11 03:07:19 +00:00
done:
lda trigger
beq not_trigger
lda #0
sta trigger
lda command
cmp #DONE
beq done
cmp #DO_LIST
bne not_do_list
jmp do_list
not_do_list:
cmp #DO_LOAD
bne not_do_load
jsr do_load
jmp not_trigger
not_do_load:
cmp #DO_RUN
bne not_trigger
jmp do_run
not_trigger:
jmp done
2020-11-15 03:45:18 +00:00
mock_string:
.byte ") ) ) MOCKINGBOARD SOUND ( ( (",0
mock2_string:
.byte "WHERE AVAILABLE",0
2020-11-11 03:07:19 +00:00
todo_list:
2020-11-15 03:45:18 +00:00
.byte DO_LOAD,1
.byte DO_LIST,5
.byte DO_RUN,15 ; a2
2020-11-11 03:07:19 +00:00
.byte DO_LOAD,1
.byte DO_LIST,4
.byte DO_RUN,10 ; flyer
2020-11-15 03:45:18 +00:00
2020-11-11 03:07:19 +00:00
.byte DO_LOAD,1
.byte DO_LIST,4
.byte DO_RUN,20 ; nyan
2020-11-15 03:45:18 +00:00
2020-11-11 03:07:19 +00:00
.byte DO_LOAD,1
.byte DO_LIST,5
.byte DO_RUN,15 ; qr
2020-11-15 03:45:18 +00:00
.byte DO_LOAD,1
.byte DO_LIST,5
.byte DO_RUN,15
.byte DO_LOAD,1
.byte DO_LIST,5
.byte DO_RUN,15
.byte DO_LOAD,1
.byte DO_LIST,5
.byte DO_RUN,15
.byte DO_LOAD,1
.byte DO_LIST,5
.byte DO_RUN,15
2020-11-11 03:07:19 +00:00
.byte DONE,$FF
command: .byte $00
which: .byte $00
2020-11-15 03:45:18 +00:00
timeout: .byte 10
2020-11-11 03:07:19 +00:00
trigger: .byte $00
original_stack: .byte $00
2020-11-15 03:45:18 +00:00
.include "gr_unrle.s"
.include "gr_offsets.s"
2020-11-11 03:07:19 +00:00
; .include "gr_copy.s"
2020-11-15 03:45:18 +00:00
.include "bg.inc"
2020-11-11 03:07:19 +00:00
.include "pt3_lib_core.s"
.include "pt3_lib_init.s"
.include "pt3_lib_mockingboard_setup.s"
.include "interrupt_handler.s"
; if you're self patching, detect has to be after interrupt_handler.s
.include "pt3_lib_mockingboard_detect.s"
2020-11-15 03:45:18 +00:00
.include "wipe.s"
2020-11-11 03:07:19 +00:00
.include "load.s"
.include "nozp.inc"
PT3_LOC = song
.align $100
song:
.incbin "../pt3_player/music/DF.PT3"