dos33fsprogs/still_alive/still_alive.s

121 lines
1.7 KiB
ArmAsm

; And Believe Me, I'm Still Alive
.include "zp.inc"
still_alive:
;=============================
; Clear screen
;=============================
jsr HOME
jsr TEXT
;=============================
; setup Lyrics
;=============================
lda #<(lyrics)
sta LYRICSL
lda #>(lyrics)
sta LYRICSH
;===========================
; setup text screens
;===========================
lda FORTYCOL
bne only_forty
switch_to_80:
; Initialize 80 column firmware
jsr $C300 ; same as PR#3
sta SET80COL ; 80store C001
; makes pageflip switch between
; regular/aux memory
only_forty:
; Clear text page0
jsr HOME
;============================
; Draw Lineart around edges
;============================
jsr setup_edges
jsr HOME
;=====================================
; See if Mockingboard or Electric Duet
;=====================================
lda USEMB
beq no_mockingboard
jsr still_alive_mb
jmp wait_for_keypress
no_mockingboard:
jsr still_alive_ed
wait_for_keypress:
lda KEYPRESS ; check if keypressed
bpl wait_for_keypress ; if not, loop
reset:
lda $AA6A ; current disk slot, dos 3.3
ora #$c0
sta $3F3
lda #0
sta $3F2
jmp ($3F2) ; warm-start?
; want reboot, not BASIC
;==========
; main code
;==========
.include "sa_mb.s"
.include "sa_ed.s"
;=========
;routines
;=========
.include "gr_offsets.s"
.include "mockingboard_a.s"
.include "lz4_decode.s"
.include "display_art.s"
.include "display_lyrics.s"
.include "interrupt_handler.s"
.include "duet.s"
;=========
; strings
;=========
lyrics:
.include "lyrics.inc"
art:
.include "ascii_art.inc"
LZ4_BUFFER:
music_address:
;.incbin "SA.KR4"
;.incbin "SA.ED"