mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-29 00:31:52 +00:00
506 lines
8.3 KiB
ArmAsm
506 lines
8.3 KiB
ArmAsm
|
|
; Tried only drawing if changed
|
|
; but page flipping means this can go wrong unless we draw to both
|
|
|
|
put_letters:
|
|
|
|
;================
|
|
; First -- Note A
|
|
;================
|
|
first_note_a:
|
|
lda #$bb
|
|
sta sprite_color_smc+1
|
|
|
|
ldx note_a+NOTE_NOTE
|
|
; cpx olda
|
|
; beq first_note_b
|
|
; stx olda
|
|
|
|
clc
|
|
|
|
lda note_lookup_letter,X
|
|
and #$7f
|
|
adc #<letter_a
|
|
sta INL
|
|
|
|
lda #>letter_a
|
|
adc #0
|
|
sta INH
|
|
|
|
lda #0
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
; second
|
|
clc
|
|
ldx note_a+NOTE_NOTE
|
|
lda note_lookup_letter,X
|
|
and #$80
|
|
|
|
bne sharp_a
|
|
|
|
lda #<letter_none
|
|
sta INL
|
|
lda #>letter_none
|
|
sta INH
|
|
bne do_sharp_a ; branch always
|
|
|
|
sharp_a:
|
|
lda #<letter_sharp
|
|
sta INL
|
|
lda #>letter_sharp
|
|
sta INH
|
|
|
|
do_sharp_a:
|
|
lda #4
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
; third
|
|
|
|
clc
|
|
ldx note_a+NOTE_NOTE
|
|
lda note_lookup_number,X
|
|
adc #<number_0
|
|
sta INL
|
|
|
|
lda #>number_0
|
|
adc #0
|
|
sta INH
|
|
|
|
lda #8
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
|
|
;================
|
|
; First -- Note B
|
|
;================
|
|
first_note_b:
|
|
|
|
lda #$22
|
|
sta sprite_color_smc+1
|
|
|
|
ldx note_b+NOTE_NOTE
|
|
; cpx oldb
|
|
; beq first_note_c
|
|
; stx oldb
|
|
clc
|
|
|
|
lda note_lookup_letter,X
|
|
and #$7f
|
|
adc #<letter_a
|
|
sta INL
|
|
|
|
lda #>letter_a
|
|
adc #0
|
|
sta INH
|
|
|
|
lda #14
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
; second
|
|
|
|
clc
|
|
ldx note_b+NOTE_NOTE
|
|
lda note_lookup_letter,X
|
|
and #$80
|
|
|
|
bne sharp_b
|
|
|
|
lda #<letter_none
|
|
sta INL
|
|
lda #>letter_none
|
|
sta INH
|
|
bne do_sharp_b ; branch always
|
|
|
|
sharp_b:
|
|
lda #<letter_sharp
|
|
sta INL
|
|
lda #>letter_sharp
|
|
sta INH
|
|
|
|
do_sharp_b:
|
|
lda #18
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
; third
|
|
|
|
clc
|
|
ldx note_b+NOTE_NOTE
|
|
lda note_lookup_number,X
|
|
adc #<number_0
|
|
sta INL
|
|
|
|
lda #>number_0
|
|
adc #0
|
|
sta INH
|
|
|
|
lda #22
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
|
|
|
|
;================
|
|
; First -- Note C
|
|
;================
|
|
first_note_c:
|
|
|
|
lda #$33
|
|
sta sprite_color_smc+1
|
|
|
|
ldx note_c+NOTE_NOTE
|
|
; cpx oldc
|
|
; beq done_print_note
|
|
; stx oldc
|
|
|
|
clc
|
|
lda note_lookup_letter,X
|
|
and #$7f
|
|
adc #<letter_a
|
|
sta INL
|
|
|
|
lda #>letter_a
|
|
adc #0
|
|
sta INH
|
|
|
|
lda #28
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
; second
|
|
|
|
clc
|
|
ldx note_c+NOTE_NOTE
|
|
lda note_lookup_letter,X
|
|
and #$80
|
|
|
|
bne sharp_c
|
|
|
|
lda #<letter_none
|
|
sta INL
|
|
lda #>letter_none
|
|
sta INH
|
|
bne do_sharp_c ; branch always
|
|
|
|
sharp_c:
|
|
lda #<letter_sharp
|
|
sta INL
|
|
lda #>letter_sharp
|
|
sta INH
|
|
|
|
do_sharp_c:
|
|
lda #32
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jsr put_sprite
|
|
|
|
; third
|
|
|
|
clc
|
|
ldx note_c+NOTE_NOTE
|
|
lda note_lookup_number,X
|
|
adc #<number_0
|
|
sta INL
|
|
|
|
lda #>number_0
|
|
adc #0
|
|
sta INH
|
|
|
|
lda #36
|
|
sta XPOS
|
|
lda #2
|
|
sta YPOS
|
|
|
|
jmp put_sprite
|
|
|
|
done_print_note:
|
|
|
|
;rts
|
|
|
|
olda: .byte $00
|
|
oldb: .byte $00
|
|
oldc: .byte $00
|
|
|
|
LETTER_A_OFFSET=0
|
|
LETTER_B_OFFSET=11
|
|
LETTER_C_OFFSET=22
|
|
LETTER_D_OFFSET=33
|
|
LETTER_E_OFFSET=44
|
|
LETTER_F_OFFSET=55
|
|
LETTER_G_OFFSET=66
|
|
SHARP=$80
|
|
|
|
NUMBER_0_OFFSET=0
|
|
NUMBER_1_OFFSET=11
|
|
NUMBER_2_OFFSET=22
|
|
NUMBER_3_OFFSET=33
|
|
NUMBER_4_OFFSET=44
|
|
NUMBER_5_OFFSET=55
|
|
NUMBER_6_OFFSET=66
|
|
NUMBER_7_OFFSET=77
|
|
NUMBER_8_OFFSET=88
|
|
NUMBER_9_OFFSET=99
|
|
|
|
|
|
letter_a:
|
|
.byte 3,3
|
|
.byte $f0,$0f,$f0
|
|
.byte $ff,$0f,$ff
|
|
.byte $ff,$00,$ff
|
|
|
|
letter_b:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$f0
|
|
.byte $ff,$0f,$f0
|
|
.byte $ff,$f0,$0f
|
|
|
|
letter_c:
|
|
.byte 3,3
|
|
.byte $f0,$0f,$0f
|
|
.byte $ff,$00,$00
|
|
.byte $0f,$f0,$f0
|
|
|
|
letter_d:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$f0
|
|
.byte $ff,$00,$ff
|
|
.byte $ff,$f0,$0f
|
|
|
|
letter_e:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$0f
|
|
.byte $ff,$0f,$00
|
|
.byte $ff,$f0,$f0
|
|
|
|
letter_f:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$0f
|
|
.byte $ff,$0f,$00
|
|
.byte $ff,$00,$00
|
|
|
|
letter_g:
|
|
.byte 3,3
|
|
.byte $f0,$0f,$0f
|
|
.byte $ff,$00,$f0
|
|
.byte $0f,$f0,$ff
|
|
|
|
letter_sharp:
|
|
.byte 3,3
|
|
.byte $ff,$f0,$ff
|
|
.byte $ff,$f0,$ff
|
|
.byte $0f,$00,$0f
|
|
|
|
letter_none:
|
|
.byte 3,3
|
|
.byte $00,$00,$00
|
|
.byte $00,$00,$00
|
|
.byte $00,$00,$00
|
|
|
|
number_0:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$ff
|
|
.byte $ff,$00,$ff
|
|
.byte $ff,$f0,$ff
|
|
|
|
number_1:
|
|
.byte 3,3
|
|
.byte $00,$ff,$00
|
|
.byte $00,$ff,$00
|
|
.byte $00,$ff,$00
|
|
|
|
number_2:
|
|
.byte 3,3
|
|
.byte $0f,$0f,$ff
|
|
.byte $ff,$0f,$0f
|
|
.byte $ff,$f0,$f0
|
|
|
|
number_3:
|
|
.byte 3,3
|
|
.byte $0f,$0f,$ff
|
|
.byte $0f,$0f,$ff
|
|
.byte $f0,$f0,$ff
|
|
|
|
number_4:
|
|
.byte 3,3
|
|
.byte $ff,$00,$ff
|
|
.byte $0f,$0f,$ff
|
|
.byte $00,$00,$ff
|
|
|
|
number_5:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$0f
|
|
.byte $0f,$0f,$ff
|
|
.byte $f0,$f0,$ff
|
|
|
|
|
|
number_6:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$0f
|
|
.byte $ff,$0f,$f0
|
|
.byte $ff,$f0,$ff
|
|
|
|
number_7:
|
|
.byte 3,3
|
|
.byte $0f,$0f,$ff
|
|
.byte $00,$00,$ff
|
|
.byte $00,$00,$ff
|
|
|
|
number_8:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$ff
|
|
.byte $ff,$0f,$ff
|
|
.byte $ff,$f0,$ff
|
|
|
|
number_9:
|
|
.byte 3,3
|
|
.byte $ff,$0f,$ff
|
|
.byte $0f,$0f,$ff
|
|
.byte $00,$00,$ff
|
|
|
|
|
|
|
|
note_lookup_letter:
|
|
|
|
; "C-1","C#1","D-1","D#1","E-1","F-1","F#1","G-1", // 50
|
|
; "G#1","A-1","A#1","B-1",
|
|
; 1
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 2
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 3
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 4
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 5
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 6
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 7
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
; 8
|
|
.byte LETTER_C_OFFSET,LETTER_C_OFFSET|SHARP
|
|
.byte LETTER_D_OFFSET,LETTER_D_OFFSET|SHARP
|
|
.byte LETTER_E_OFFSET
|
|
.byte LETTER_F_OFFSET,LETTER_F_OFFSET|SHARP
|
|
.byte LETTER_G_OFFSET,LETTER_G_OFFSET|SHARP
|
|
.byte LETTER_A_OFFSET,LETTER_A_OFFSET|SHARP
|
|
.byte LETTER_B_OFFSET
|
|
|
|
note_lookup_number:
|
|
; 1
|
|
.byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET
|
|
.byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET
|
|
.byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET
|
|
.byte NUMBER_1_OFFSET,NUMBER_1_OFFSET,NUMBER_1_OFFSET
|
|
; 2
|
|
.byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET
|
|
.byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET
|
|
.byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET
|
|
.byte NUMBER_2_OFFSET,NUMBER_2_OFFSET,NUMBER_2_OFFSET
|
|
; 3
|
|
.byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET
|
|
.byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET
|
|
.byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET
|
|
.byte NUMBER_3_OFFSET,NUMBER_3_OFFSET,NUMBER_3_OFFSET
|
|
; 4
|
|
.byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET
|
|
.byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET
|
|
.byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET
|
|
.byte NUMBER_4_OFFSET,NUMBER_4_OFFSET,NUMBER_4_OFFSET
|
|
; 5
|
|
.byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET
|
|
.byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET
|
|
.byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET
|
|
.byte NUMBER_5_OFFSET,NUMBER_5_OFFSET,NUMBER_5_OFFSET
|
|
; 6
|
|
.byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET
|
|
.byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET
|
|
.byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET
|
|
.byte NUMBER_6_OFFSET,NUMBER_6_OFFSET,NUMBER_6_OFFSET
|
|
; 7
|
|
.byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET
|
|
.byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET
|
|
.byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET
|
|
.byte NUMBER_7_OFFSET,NUMBER_7_OFFSET,NUMBER_7_OFFSET
|
|
; 8
|
|
.byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET
|
|
.byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET
|
|
.byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET
|
|
.byte NUMBER_8_OFFSET,NUMBER_8_OFFSET,NUMBER_8_OFFSET
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|