From 1a559ef16672b441c2ade7e381ad14bfe9ee5e7e Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 24 May 2018 09:48:48 -0400 Subject: [PATCH] sa: move lyrics printing out of interrupt handler file --- still_alive/display_lyrics.s | 75 +++++++++++++++++++++++++++++++++ still_alive/interrupt_handler.s | 67 ++--------------------------- 2 files changed, 78 insertions(+), 64 deletions(-) diff --git a/still_alive/display_lyrics.s b/still_alive/display_lyrics.s index a6c07441..121936ee 100644 --- a/still_alive/display_lyrics.s +++ b/still_alive/display_lyrics.s @@ -35,3 +35,78 @@ fortycol_word_bounds: sta WNDBTM rts + + + ;======================================================== + ; display lyrics + ;======================================================== + +display_lyrics: + + ;===================== + ; See if lyrics already printing + ;===================== + + lda LYRICS_ACTIVE ; see if lyric is ready + bne handle_lyrics ; if so handle it + + ;======================== + ; Check if new lyric ready + ;======================== + lda FRAME_COUNT ; get current frame count + cmp (LYRICSL),Y ; compare to next-trigger + bne all_done_lyrics ; not same, so skip + + lda #1 ; matches, set lyrics active + sta LYRICS_ACTIVE + + ; adjust pointer 16-bit + inc LYRICSL + bne lc_sb2 + inc LYRICSH +lc_sb2: + + ;================================== + ; Lyric active, print current char + ;================================== +handle_lyrics: + + lda (LYRICSL),Y ; load value + beq done_lyric ; if 0, done lyric + + cmp #11 ; check if in range 1-10 + bcs lyric_home ; if not, skip ahead + +go_draw_ascii: + jsr draw_ascii_art ; draw proper ascii art + + jmp lyric_continue ; and continue + +lyric_home: + cmp #12 ; check if form feed char + bne lyric_char ; if not skip ahead + + jsr HOME ; call HOME + + jmp lyric_continue ; continue + +lyric_char: + jsr COUT1 ; output the character + +lyric_continue: + + ; adjust pointer 16-bit + inc LYRICSL + bne lc_sb + inc LYRICSH +lc_sb: + jmp all_done_lyrics + + +done_lyric: + lda #0 + sta LYRICS_ACTIVE + jmp lyric_continue + +all_done_lyrics: + rts diff --git a/still_alive/interrupt_handler.s b/still_alive/interrupt_handler.s index 344fd17c..d937b996 100644 --- a/still_alive/interrupt_handler.s +++ b/still_alive/interrupt_handler.s @@ -254,11 +254,6 @@ update_r0_pointer: ;================================= done_interrupt: - ;=============================================================== - ; Handle Lyrics - ;=============================================================== - - ;===================== ; Increment Frame Count @@ -267,71 +262,15 @@ done_interrupt: inc FRAME_COUNT ; 5 ldy #$0 + ;===================== - ; See if lyrics already printing + ; print lyrics ;===================== - lda LYRICS_ACTIVE ; see if lyric is ready - bne handle_lyrics ; if so handle it + jsr display_lyrics - ;======================== - ; Check if new lyric ready - ;======================== - lda FRAME_COUNT ; get current frame count - cmp (LYRICSL),Y ; compare to next-trigger - bne exit_interrupt ; not same, so skip - - lda #1 ; matches, set lyrics active - sta LYRICS_ACTIVE - - ; adjust pointer 16-bit - inc LYRICSL - bne lc_sb2 - inc LYRICSH -lc_sb2: - - ;================================== - ; Lyric active, print current char - ;================================== -handle_lyrics: - - lda (LYRICSL),Y ; load value - beq done_lyric ; if 0, done lyric - - cmp #11 ; check if in range 1-10 - bcs lyric_home ; if not, skip ahead - -go_draw_ascii: - jsr draw_ascii_art ; draw proper ascii art - - jmp lyric_continue ; and continue - -lyric_home: - cmp #12 ; check if form feed char - bne lyric_char ; if not skip ahead - - jsr HOME ; call HOME - - jmp lyric_continue ; continue - -lyric_char: - jsr COUT1 ; output the character - -lyric_continue: - - ; adjust pointer 16-bit - inc LYRICSL - bne lc_sb - inc LYRICSH -lc_sb: jmp exit_interrupt - -done_lyric: - lda #0 - sta LYRICS_ACTIVE - jmp lyric_continue - quiet_exit: sta DONE_PLAYING jsr clear_ay_both