tiny_tracker: trying to add another octave

This commit is contained in:
Vince Weaver 2021-11-04 20:27:29 -04:00
parent 5a6f6b9f40
commit 8d5f156498
6 changed files with 188 additions and 743 deletions

View File

@ -6,7 +6,7 @@ HGR2PNG = ../../utils/hgr-utils/png2hgr
LINKER_SCRIPTS = ../../linker_scripts
TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
all: tiny_tracker.dsk text_to_tiny
all: tiny_tracker.dsk text_to_tiny frequency
tiny_tracker.dsk: HELLO PEASANT
cp $(EMPTY_DISK)/empty.dsk ./tiny_tracker.dsk
@ -50,5 +50,13 @@ text_to_tiny.o: text_to_tiny.c
####
frequency: frequency.o
$(CC) -o frequency frequency.o -lm
frequency.o: frequency.c
$(CC) $(CFLAGS) -c frequency.c
####
clean:
rm -f *~ *.o *.lst YANKEE PEASANT HELLO text_to_tiny
rm -f *~ *.o *.lst YANKEE PEASANT HELLO text_to_tiny frequency

View File

@ -41,41 +41,33 @@ try_again:
ldy SONG_OFFSET
set_notes_loop:
; see if hit end
lda (SONG_L),Y
cmp #$FF
cmp #$C0
bne all_ok
; if at end, reset
lda #0
sta SONG_OFFSET
beq try_again
all_ok:
; if at end, loop
loop_forever:
jmp loop_forever
; lda #0
; sta SONG_OFFSET
; beq try_again
all_ok:
; see if note
tax
and #$C0
cmp #$C0
bne note_only
; was timing
txa
and #$3f
sta SONG_COUNTDOWN
iny
sty SONG_OFFSET
jmp done_update_song
beq handle_timing
note_only:
txa
; CCOONNNN -- c=channel, o=octave, n=note
; FIXME: OONNNNCC instead?
; TODO: OONNNNCC instead?
pha
lsr
lsr
lsr
@ -83,25 +75,52 @@ note_only:
lsr
and #$FE
sta out_smc+1
pla
txa
and #$3F
tax
lda frequency_lookup,X
lda frequency_lookup_high,X
sta out_smc2+1
lda frequency_lookup_low,X
sty y_smc+1
out_smc:
ldx #$00
jsr ay3_write_reg ; trashes A/X/Y
jsr ay3_write_reg ; trashes A/Y
; set coarse note A (assume 0)
; could get extra octave by putting 1 here
; set coarse note A
; hack: if octave=0 (C2) then coarse=1
; else coarse=0
inx
out_smc2:
lda #$dd
jsr ay3_write_reg ; trashes A/Y
y_smc:
ldy #0
iny
bne not_wrap2
inc SONG_H
not_wrap2:
jmp set_notes_loop
done_update_song:
handle_timing:
; was timing
txa
and #$3f
sta SONG_COUNTDOWN
iny
sty SONG_OFFSET
bne not_wrap1
inc SONG_H
not_wrap1:
done_update_song:
dec SONG_COUNTDOWN

View File

@ -180,11 +180,22 @@ no_oflo:
; create Frequency Table
ldx #12
make_freq_loop:
lda frequency_lookup,X
sec
lda frequency_lookup_low,X
ror
sta frequency_lookup_low+16,X
lsr
sta frequency_lookup+16,X
sta frequency_lookup_low+32,X
lsr
sta frequency_lookup+32,X
sta frequency_lookup_low+48,X
lda #1
sta frequency_lookup_high,X
lda #0
sta frequency_lookup_high+16,X
sta frequency_lookup_high+32,X
sta frequency_lookup_high+48,X
dex
bpl make_freq_loop
@ -235,9 +246,12 @@ ay3_write_reg:
; starts at C4
frequency_lookup:
.byte $F4,$E6,$D9,$CD,$C1,$B7,$AC,$A3,$99,$91,$89,$81,$00
frequency_lookup_low:
.byte $E8,$CD,$B3,$9B,$83,$6E,$59,$46,$33,$22,$12,$02,$00
;.byte $00,$00,$00,$00
;$1E8,$1CD,$1B3,$19B,$183,$16E,$159,$146,$133,$122,$112,$102,
;.byte $F4,$E6,$D9,$CD,$C1,$B7,$AC,$A3,$99,$91,$89,$81,$00,$00,$00,$00
;.byte $7A,$73,$6C,$66,$60,$5B,$56,$51,$4C,$48,$44,$40,$00,$00,$00,$00
;.byte $3D,$39,$36,$33,$30,$2D,$2B,$28,$26,$24,$22,$20,$00,$00,$00,$00
frequency_lookup_high = frequency_lookup_low+64

View File

@ -214,24 +214,24 @@ F R---- ----- -----
0 C 2 3 C 4 4 -----
1 ----- ----- -----
2 ----- ----- -----
3 ----- R---- -----
4 ----- C 4 4 -----
3 ----- ----- -----
4 ----- ----- -----
5 ----- ----- -----
6 ----- ----- -----
7 ----- R---- -----
8 ----- C 4 4 -----
7 ----- ----- -----
8 ----- ----- -----
9 ----- ----- -----
A ----- ----- -----
B R---- R---- -----
C C 2 3 C 4 4 -----
B R---- ----- -----
C C 2 3 ----- -----
D ----- ----- -----
E ----- ----- -----
F R---- R---- -----
10 C 2 3 C 4 4 -----
F R---- ----- -----
10 C 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 R---- R---- -----
14 C 2 3 C 4 4 -----
13 R---- ----- -----
14 C 2 3 ----- -----
15 ----- ----- -----
16 ----- ----- -----
17 R---- ----- -----
@ -268,15 +268,15 @@ F R---- R---- -----
5 ----- ----- -----
6 ----- ----- -----
7 ----- ----- -----
8 ----- G 4 3 -----
8 ----- G 4-- -----
9 ----- ----- -----
A ----- ----- -----
B R---- R---- -----
C C 2 3 G 4 4 -----
D ----- ----- -----
E ----- ----- -----
F R---- R---- -----
10 C 2 3 G 4 3 -----
F R---- ----- -----
10 C 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 R---- ----- -----
@ -287,11 +287,11 @@ F R---- R---- -----
18 C 2 3 F 4 4 -----
19 ----- ----- -----
1A ----- ----- -----
1B ----- R---- -----
1C ----- F 4 3 -----
1B ----- ----- -----
1C ----- ----- -----
1D ----- ----- -----
1E ----- ----- -----
1F ----- ----- -----
1F ----- R---- -----
20 ----- E 4 3 -----
21 ----- ----- -----
22 ----- ----- -----
@ -299,8 +299,8 @@ F R---- R---- -----
24 C 2 3 E 4 4 -----
25 ----- ----- -----
26 ----- ----- -----
27 R---- R---- -----
28 C 2 3 E 4 3 -----
27 R---- ----- -----
28 C 2 3 ----- -----
29 ----- ----- -----
2A ----- ----- -----
2B R---- ----- -----
@ -313,26 +313,26 @@ F R---- R---- -----
1 ----- ----- -----
2 ----- ----- -----
3 ----- ----- -----
4 ----- C 4 4 -----
4 ----- ----- -----
5 ----- ----- -----
6 ----- ----- -----
7 ----- ----- -----
8 ----- C 4 4 -----
8 ----- ----- -----
9 ----- ----- -----
A ----- ----- -----
B ----- ----- -----
C F 2 3 C 4 4 -----
B R---- ----- -----
C F 2 3 ----- -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
10 F 2 3 C 4 4 -----
F R---- ----- -----
10 F 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 ----- ----- -----
14 F 2 3 C 4 4 -----
13 R---- ----- -----
14 F 2 3 ----- -----
15 ----- ----- -----
16 ----- ----- -----
17 ----- ----- -----
17 R---- R---- -----
18 F 2 3 ----- -----
19 ----- ----- -----
1A ----- ----- -----
@ -348,11 +348,11 @@ F ----- ----- -----
24 F 2 3 ----- -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
27 R---- ----- -----
28 F 2 3 ----- -----
29 ----- ----- -----
2A ----- ----- -----
2B ----- ----- -----
2B R---- ----- -----
2C F 2 3 ----- -----
2D ----- ----- -----
2E ----- ----- -----
@ -369,39 +369,39 @@ F ----- ----- -----
8 ----- G 4 3 -----
9 ----- ----- -----
A ----- ----- -----
B ----- ----- -----
B ----- R---- -----
C G 2 3 G 4 4 -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
10 G 2 3 G 4 3 -----
F R---- ----- -----
10 G 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 ----- ----- -----
14 G 2 3 F 4 3 -----
13 R---- ----- -----
14 G 2 3 F 4-- -----
15 ----- ----- -----
16 ----- ----- -----
17 ----- ----- -----
17 R---- R---- -----
18 G 2 3 F 4 4 -----
19 ----- ----- -----
1A ----- ----- -----
1B ----- ----- -----
1C ----- F 4 3 -----
1C ----- ----- -----
1D ----- ----- -----
1E ----- ----- -----
1F ----- ----- -----
20 ----- E 4 3 -----
21 ----- ----- -----
22 ----- ----- -----
23 ----- ----- -----
23 ----- R---- -----
24 G 2 3 E 4 4 -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
28 G 2 3 E 4 3 -----
27 R---- ----- -----
28 G 2 3 ----- -----
29 ----- ----- -----
2A ----- ----- -----
2B ----- ----- -----
2B R---- ----- -----
2C G 2 3 F 4 3 -----
2D ----- ----- -----
2E ----- ----- -----
@ -409,126 +409,126 @@ F ----- ----- -----
' 7
0 C 2 3 D 4 3 -----
1 ----- ----- -----
2 ----- ----- -----
2 ----- R---- -----
3 ----- D 4 6 -----
4 ----- D 4 8 -----
5 ----- ----- -----
5 ----- R---- -----
6 ----- D 4 3 -----
7 ----- ----- -----
8 ----- ----- -----
8 ----- R---- -----
9 ----- D 4 3 -----
A ----- ----- -----
B ----- ----- -----
B R---- ----- -----
C C 2 3 A#4 4 -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
F R---- R---- -----
10 C 2 3 A#4 4 -----
11 ----- ----- -----
12 ----- ----- -----
13 ----- ----- -----
13 R---- R---- -----
14 C 2 3 A#4 3 -----
15 ----- ----- -----
16 ----- ----- -----
17 ----- ----- -----
17 R---- ----- -----
18 C 2 3 D 4 3 -----
19 ----- ----- -----
1A ----- ----- -----
1A ----- R---- -----
1B ----- D 4 6 -----
1C ----- D 4 8 -----
1D ----- ----- -----
1D ----- R---- -----
1E ----- D 4 4 -----
1F ----- ----- -----
20 ----- ----- -----
21 ----- ----- -----
22 ----- D 4 8 -----
23 ----- ----- -----
23 R---- ----- -----
24 C 2 3 G 4 4 -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
27 R---- R---- -----
28 C 2 3 G 4 4 -----
29 ----- ----- -----
2A ----- ----- -----
2B ----- ----- -----
2B R---- R---- -----
2C C 2 3 G 4 3 -----
2D ----- ----- -----
2E ----- ----- -----
2F ----- ----- -----
2F R---- ----- -----
' 8
0 C 2 3 D 4 3 -----
1 ----- ----- -----
2 ----- ----- -----
2 ----- R---- -----
3 ----- D 4 6 -----
4 ----- D 4 8 -----
5 ----- ----- -----
5 ----- R---- -----
6 ----- D 4 8 -----
7 ----- ----- -----
7 ----- R---- -----
8 ----- D 4 4 -----
9 ----- ----- -----
A ----- ----- -----
B ----- ----- -----
B R---- ----- -----
C C 2 3 A#4 4 -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
F R---- R---- -----
10 C 2 3 A#4 8 -----
11 ----- ----- -----
12 ----- D 4 4 -----
13 ----- ----- -----
13 R---- ----- -----
14 C 2 3 ----- -----
15 ----- ----- -----
15 ----- R---- -----
16 ----- D 4 8 -----
17 ----- ----- -----
17 R---- ----- -----
18 C 2 3 G 4 4 -----
19 ----- ----- -----
1A ----- ----- -----
1B ----- ----- -----
1B ----- R---- -----
1C ----- G 4 8 -----
1D ----- ----- -----
1E ----- D 4 4 -----
1F ----- ----- -----
20 ----- ----- -----
21 ----- ----- -----
21 ----- R---- -----
22 ----- D 4 8 -----
23 ----- ----- -----
23 R---- ----- -----
24 C 2 3 F 4 4 -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
27 R---- R---- -----
28 C 2 3 F 4 8 -----
29 ----- ----- -----
2A ----- G 4 4 -----
2B ----- ----- -----
2B R---- ----- -----
2C C 2 3 ----- -----
2D ----- ----- -----
2D ----- R---- -----
2E ----- G 4 8 -----
2F ----- ----- -----
2F R---- ----- -----
' 5
0 F 2 3 C 4 4 -----
1 ----- ----- -----
2 ----- ----- -----
3 ----- ----- -----
4 ----- C 4 4 -----
4 ----- ----- -----
5 ----- ----- -----
6 ----- ----- -----
7 ----- ----- -----
8 ----- C 4 4 -----
8 ----- ----- -----
9 ----- ----- -----
A ----- ----- -----
B ----- ----- -----
C F 2 3 C 4 4 -----
B R---- ----- -----
C F 2 3 ----- -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
10 F 2 3 C 4 4 -----
F R---- ----- -----
10 F 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 ----- ----- -----
14 F 2 3 C 4 4 -----
13 R---- ----- -----
14 F 2 3 ----- -----
15 ----- ----- -----
16 ----- ----- -----
17 ----- ----- -----
17 R---- R---- -----
18 F 2 3 ----- -----
19 ----- ----- -----
1A ----- ----- -----
@ -540,15 +540,15 @@ F ----- ----- -----
20 ----- ----- -----
21 ----- ----- -----
22 ----- ----- -----
23 ----- ----- -----
23 R---- ----- -----
24 F 2 3 ----- -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
27 R---- ----- -----
28 F 2 3 ----- -----
29 ----- ----- -----
2A ----- ----- -----
2B ----- ----- -----
2B R---- ----- -----
2C F 2 3 ----- -----
2D ----- ----- -----
2E ----- ----- -----
@ -565,23 +565,23 @@ F ----- ----- -----
8 ----- G 4 3 -----
9 ----- ----- -----
A ----- ----- -----
B ----- ----- -----
B R---- R---- -----
C G 2 3 G 4 4 -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
10 G 2 3 G 4 3 -----
F R---- ----- -----
10 G 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 ----- ----- -----
13 R---- ----- -----
14 G 2 3 F 4 3 -----
15 ----- ----- -----
16 ----- ----- -----
17 ----- ----- -----
17 R---- R---- -----
18 G 2 3 F 4 4 -----
19 ----- ----- -----
1A ----- ----- -----
1B ----- ----- -----
1B ----- R---- -----
1C ----- F 4 3 -----
1D ----- ----- -----
1E ----- ----- -----
@ -589,15 +589,15 @@ F ----- ----- -----
20 ----- E 4 3 -----
21 ----- ----- -----
22 ----- ----- -----
23 ----- ----- -----
24 G 2 3 E 4 4 -----
23 R---- ----- -----
24 G 2 3 ----- -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
27 R---- R---- -----
28 G 2 3 E 4 3 -----
29 ----- ----- -----
2A ----- ----- -----
2B ----- ----- -----
2B R---- R---- -----
2C G 2 3 F 4 3 -----
2D ----- ----- -----
2E ----- ----- -----
@ -607,27 +607,27 @@ F ----- ----- -----
1 ----- ----- -----
2 ----- ----- -----
3 ----- ----- -----
4 ----- G 4 4 -----
4 ----- ----- -----
5 ----- ----- -----
6 ----- ----- -----
7 ----- ----- -----
8 ----- G 4 3 -----
8 ----- ----- -----
9 ----- ----- -----
A ----- ----- -----
B ----- ----- -----
B R---- ----- -----
C C 2 3 ----- -----
D ----- ----- -----
E ----- ----- -----
F ----- ----- -----
F R---- ----- -----
10 C 2 3 ----- -----
11 ----- ----- -----
12 ----- ----- -----
13 ----- ----- -----
13 R---- ----- -----
14 C 2 3 ----- -----
15 ----- ----- -----
16 ----- ----- -----
17 ----- ----- -----
18 C 2 3 ----- -----
17 R---- ----- -----
18 C 2 3 R---- -----
19 ----- ----- -----
1A ----- ----- -----
1B ----- ----- -----
@ -638,17 +638,17 @@ F ----- ----- -----
20 ----- ----- -----
21 ----- ----- -----
22 ----- ----- -----
23 ----- ----- -----
23 R---- ----- -----
24 C 2 3 ----- -----
25 ----- ----- -----
26 ----- ----- -----
27 ----- ----- -----
27 R---- ----- -----
28 C 2 3 ----- -----
29 ----- ----- -----
2A ----- ----- -----
2B ----- ----- -----
2B R---- ----- -----
2C C 2 3 ----- -----
2D ----- ----- -----
2E ----- ----- -----
2F ----- ----- -----
2F R---- R---- R----
' LOOP TO FRAME 8

View File

@ -1,596 +0,0 @@
peasant_song:
; register init
.byte $00,$00,$00,$00,$00,$00 ; $00: A/B/C fine/coarse
.byte $00 ; $06
.byte $38 ; $07 mixer (ABC on)
.byte $0E,$0C,$0C ; $08 volume A/B/C
.byte $00,$00,$00,$00 ; $09
.byte $20 ; A = C 2
.byte $4C ; B = R--3
.byte $8C ; C = R--3
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $27 ; A = G 2
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $4C ; B = R--3
.byte $C4 ; L = 4
.byte $4C ; B = R--3
.byte $C4 ; L = 4
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $4C ; B = R--3
.byte $CB ; L = 11
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $C8 ; L = 8
.byte $47 ; B = G 4
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $45 ; B = F 4
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $45 ; B = F 4
.byte $C3 ; L = 3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $44 ; B = E 4
.byte $C3 ; L = 3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $44 ; B = E 4
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $4C ; B = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $44 ; B = E 4
.byte $C3 ; L = 3
.byte $0C ; A = R--3
.byte $C1 ; L = 1
.byte $20 ; A = C 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $CC ; L = 12
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $CC ; L = 12
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $C8 ; L = 8
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $44 ; B = E 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $44 ; B = E 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $44 ; B = E 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $42 ; B = D 4
.byte $C3 ; L = 3
.byte $42 ; B = D 4
.byte $C1 ; L = 1
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C3 ; L = 3
.byte $42 ; B = D 4
.byte $C3 ; L = 3
.byte $20 ; A = C 2
.byte $4A ; B = A#4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $4A ; B = A#4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $4A ; B = A#4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $42 ; B = D 4
.byte $C3 ; L = 3
.byte $42 ; B = D 4
.byte $C1 ; L = 1
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C4 ; L = 4
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $42 ; B = D 4
.byte $C3 ; L = 3
.byte $42 ; B = D 4
.byte $C1 ; L = 1
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $4A ; B = A#4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $4A ; B = A#4
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $20 ; A = C 2
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $47 ; B = G 4
.byte $C2 ; L = 2
.byte $42 ; B = D 4
.byte $C4 ; L = 4
.byte $42 ; B = D 4
.byte $C2 ; L = 2
.byte $20 ; A = C 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $45 ; B = F 4
.byte $C2 ; L = 2
.byte $47 ; B = G 4
.byte $C2 ; L = 2
.byte $20 ; A = C 2
.byte $C2 ; L = 2
.byte $47 ; B = G 4
.byte $C2 ; L = 2
.byte $25 ; A = F 2
.byte $CC ; L = 12
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $CC ; L = 12
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $25 ; A = F 2
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $C8 ; L = 8
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $44 ; B = E 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $44 ; B = E 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $44 ; B = E 4
.byte $C4 ; L = 4
.byte $27 ; A = G 2
.byte $45 ; B = F 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $47 ; B = G 4
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $CC ; L = 12
.byte $20 ; A = C 2
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $C4 ; L = 4
.byte $20 ; A = C 2
.byte $FF

View File

@ -13,6 +13,8 @@
#include <string.h>
#include <math.h>
static int octave_adjust=1;
// CCOONNNN -- c=channel, o=octave, n=note
int note_to_ed(char note, int flat, int sharp, int octave) {
@ -39,7 +41,7 @@ int note_to_ed(char note, int flat, int sharp, int octave) {
if (sharp==2) offset+=2;
offset=((octave&0x3)<<4)|offset;
offset=((((octave+octave_adjust)-3)&0x3)<<4)|offset;
return offset;
}
@ -48,8 +50,6 @@ int note_to_ed(char note, int flat, int sharp, int octave) {
static int debug=0;
static int octave_adjust=0;
static int line=0;
static int header_version=0;
@ -97,7 +97,7 @@ static int get_note(char *string, int sp, struct note_type *n, int line) {
/* get note info */
n->sharp=0;
n->flat=0;
n->ed_freq=0;
n->ed_freq=-1;
n->note=ch;
sp++;
if (string[sp]==' ') ;
@ -121,7 +121,7 @@ static int get_note(char *string, int sp, struct note_type *n, int line) {
if (n->note!='-') {
freq=note_to_ed(n->note,n->flat,n->sharp,
n->octave+octave_adjust);
n->octave);
n->enabled=1;
n->length=0;
@ -302,9 +302,9 @@ printf("\n");
if (result==NULL) break;
line++;
a.ed_freq=0;
b.ed_freq=0;
c.ed_freq=0;
a.ed_freq=-1;
b.ed_freq=-1;
c.ed_freq=-1;
a.length=0;
b.length=0;
c.length=0;
@ -324,7 +324,7 @@ printf("\n");
if (sp!=-1) sp=get_note(string,sp,&c,line);
if ((a.ed_freq!=0)||(b.ed_freq!=0)||(c.ed_freq!=0)) {
if ((a.ed_freq>=0)||(b.ed_freq>=0)||(c.ed_freq>=0)) {
if (!first) {
printf("\t.byte $%02X ; L = %d\n",
current_length|0xc0,current_length);
@ -337,19 +337,19 @@ printf("\n");
}
if (a.ed_freq!=0) {
if (a.ed_freq>=0) {
printf("\t.byte $%02X ; A = %c%c%d\n",
a.ed_freq,
a.note,sharp_char[a.sharp+2*a.flat],
a.octave);
}
if (b.ed_freq!=0) {
if (b.ed_freq>=0) {
printf("\t.byte $%02X ; B = %c%c%d\n",
b.ed_freq|0x40,
b.note,sharp_char[b.sharp+2*b.flat],
b.octave);
}
if (c.ed_freq!=0) {
if (c.ed_freq>=0) {
printf("\t.byte $%02X ; C = %c%c%d\n",
c.ed_freq|0x80,
c.note,sharp_char[c.sharp+2*c.flat],
@ -361,7 +361,7 @@ printf("\n");
}
printf("\t.byte $FF\n");
printf("\t.byte $C0 ; end\n");
(void) irq;
(void) loop;