diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control.s b/src/kernal/screen_m65/mega65_chrout_screen_control.s index 28a1542b..48037810 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_control.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_control.s @@ -69,14 +69,3 @@ m65_chrout_try_color_loop: ; Unknown code, or key not requiring any handling jmp m65_chrout_screen_done - - - - -; XXX: implement screen routines below: - -m65_chrout_screen_TAB: - +nop -m65_chrout_screen_TAB_SET_CLR: - - jmp m65_chrout_screen_done diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control_2.s b/src/kernal/screen_m65/mega65_chrout_screen_control_2.s index 40e12247..96cb91b3 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_control_2.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_control_2.s @@ -191,63 +191,3 @@ m65_chrout_screen_INS_copy: bne m65_chrout_screen_INS_copy rts - -; Bell (jingle) - -m65_chrout_screen_BELL: - - lda M65_BELLDSBL - bmi m65_chrout_screen_BELL_done - - ; Play bell on both left&right secondary SIDs - first reset the SIDs - - ldx #$1F - lda #$00 -@1: - sta __SID_BASE + $20,x - sta __SID_BASE + $60,x - dex - bpl @1 - - lda #$0A ; volume - sta SID_SIGVOL + $20 - sta SID_SIGVOL + $60 - - lda #$23 ; channel 1 - attack/decay - sta SID_ATDCY1 + $20 - sta SID_ATDCY1 + $60 - - lda #$52 ; channel 1 - sustain/release - sta SID_SUREL1 + $20 - sta SID_SUREL1 + $60 - - lda #$1E ; channel 1 - frequency (HI) - sta SID_FREHI1 + $20 - sta SID_FREHI1 + $60 - - lda #$00 ; channel 1 - frequency (LO) - sta SID_FRELO1 + $20 - sta SID_FRELO1 + $60 - - lda #$11 ; channel 1 - waveform - sta SID_VCREG1 + $20 - sta SID_VCREG1 + $60 - - ldx #$0E ; wait loop -@2: - phx - ldx #$FF - jsr wait_x_bars - plx - dex - bne @2 - - lda #$10 ; stop the jingle - sta SID_VCREG1 + $20 - sta SID_VCREG1 + $60 - - ; FALLTROUGH - -m65_chrout_screen_BELL_done: - - jmp m65_chrout_screen_done diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s b/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s new file mode 100644 index 00000000..c4e5eedd --- /dev/null +++ b/src/kernal/screen_m65/mega65_chrout_screen_control_bell.s @@ -0,0 +1,74 @@ +;; #LAYOUT# M65 KERNAL_1 #TAKE +;; #LAYOUT# * * #IGNORE + + +m65_chrout_screen_BELL: ; play bell (jingle) + + lda M65_BELLDSBL + bmi m65_chrout_screen_BELL_done + + ; Play bell on both left&right secondary SIDs - first reset the SIDs + + ldx #$1F + lda #$00 +@1: + sta __SID_BASE + $20,x + sta __SID_BASE + $60,x + dex + bpl @1 + + lda #$0A ; volume + sta SID_SIGVOL + $20 + sta SID_SIGVOL + $60 + + lda #$23 ; channel 1 - attack/decay + sta SID_ATDCY1 + $20 + sta SID_ATDCY1 + $60 + + lda #$52 ; channel 1 - sustain/release + sta SID_SUREL1 + $20 + sta SID_SUREL1 + $60 + + lda #$1E ; channel 1 - frequency (HI) + sta SID_FREHI1 + $20 + sta SID_FREHI1 + $60 + + lda #$00 ; channel 1 - frequency (LO) + sta SID_FRELO1 + $20 + sta SID_FRELO1 + $60 + + lda #$11 ; channel 1 - waveform + sta SID_VCREG1 + $20 + sta SID_VCREG1 + $60 + + ldx #$0E ; wait loop +@2: + phx + ldx #$FF + jsr wait_x_bars + plx + dex + bne @2 + + lda #$10 ; stop the jingle + sta SID_VCREG1 + $20 + sta SID_VCREG1 + $60 + + ; FALLTROUGH + +m65_chrout_screen_BELL_done: + + jmp m65_chrout_screen_done + +m65_chrout_esc_G: ; enable bell + + lda #$00 + +skip_2_bytes_trash_nvz + + ; FALLTROUGH + +m65_chrout_esc_H: ; disable bell + + lda #$FF + sta M65_BELLDSBL + bra m65_chrout_screen_BELL_done diff --git a/src/kernal/screen_m65/mega65_chrout_screen_escmode.s b/src/kernal/screen_m65/mega65_chrout_screen_control_escmode.s similarity index 91% rename from src/kernal/screen_m65/mega65_chrout_screen_escmode.s rename to src/kernal/screen_m65/mega65_chrout_screen_control_escmode.s index 018ca11a..24a14d1a 100644 --- a/src/kernal/screen_m65/mega65_chrout_screen_escmode.s +++ b/src/kernal/screen_m65/mega65_chrout_screen_control_escmode.s @@ -25,8 +25,7 @@ m65_chrout_screen_escmode: cmp #$1B bcc @1 - - ; Check for fgew special shifted characters + ; Check for few special shifted characters cpx #$3A ; colon +beq m65_chrout_esc_LBR cpx #$3B ; semicolon @@ -40,19 +39,6 @@ m65_chrout_screen_escmode: tax jmp (m65_chrout_screen_jumptable_escape, x) -m65_chrout_esc_G: ; enable bell - - lda #$00 - +skip_2_bytes_trash_nvz - - ; FALLTROUGH - -m65_chrout_esc_H: ; disable bell - - lda #$FF - sta M65_BELLDSBL - bra m65_chrout_esc_done_1 - m65_chrout_esc_LBR: ; set monochrome display lda #$80 @@ -215,10 +201,5 @@ m65_chrout_esc_V: ; scroll screen up one line +nop m65_chrout_esc_W: ; scroll screen down one line +nop -m65_chrout_esc_Y: ; set default TAB stops - +nop -m65_chrout_esc_Z: ; clear all the TAB stops - +nop - jmp m65_chrout_screen_done diff --git a/src/kernal/screen_m65/mega65_chrout_screen_control_tab.s b/src/kernal/screen_m65/mega65_chrout_screen_control_tab.s new file mode 100644 index 00000000..d9d881ee --- /dev/null +++ b/src/kernal/screen_m65/mega65_chrout_screen_control_tab.s @@ -0,0 +1,15 @@ +;; #LAYOUT# M65 KERNAL_1 #TAKE +;; #LAYOUT# * * #IGNORE + + +; XXX: implement screen routines below: + +m65_chrout_esc_Y: ; set default TAB stops + +nop +m65_chrout_esc_Z: ; clear all the TAB stops + +nop +m65_chrout_screen_TAB: + +nop +m65_chrout_screen_TAB_SET_CLR: + + jmp m65_chrout_screen_done