to MUSIC ; ¤ TD '89
INIT M TX type [AGAIN? (y / n)] if rc = "y [MUSIC] erall fs
end
to INIT
ht cs TX
type [MUSIC] WHT setscrunch 0.468 make "C 0 make "q 0 make "NR 1 make "RNs [6 13 19 26]
label "x
TX type [NUMBER of STAVES ? (max. 4) :]
make "B rq if or (not numberp :B) (4 - :B < 0) [go "x]
Blk GS SYM pu setpos [-280 204]
end
to M
st make "a rc make "b ascii :a
if :a = 1 [HeN]
if :a = 2 [HaN]
if :a = 4 [KwN]
if :a = 8 [AcN]
if :a = ", [KM]
if :a = "# [KRS]
if :a = "b [ML]
if :a = "T [ht TEXT]
if :b = 240 [fd 6.5 make "C :C + 1]
if :b = 254 [SP -25]
if :b = 250 [SP 15]
if :b = 242 [bk 6.5 make "C :C - 1]
if :b = 243 [if :B = 2 [setpos [-280 -126]] if :B = 1 [setpos [-280 -14] make "B 2] if :B = 0 [setpos [-280 94] make "B 1] make "C 0]
if :b = 253 [exit]
if :q = 1 [stop]
if :b = 32 [SP 15] M
end
to Blk
pu ht setpos [-360 240] repeat :B [pd seth 90 repeat 5 [fd 720 bk 720 re pu fd 12 li pd] pu re fd 50]
end
to GS
setpos [-330 204] repeat :B [pd seth 0 repeat 6 [fd 7 rt 30] repeat 3 [fd 9 rt 32] repeat 4 [fd 11 rt 30] fd 40 repeat 7 [fd 3 lt 32] fd 50 rt 10 fd 25 rt 5 fd 10 repeat 6 [fd 2 rt 30] pu seth 0 bk 77] make "B 0
end
to NOOT
ht bk 6.5 make "x 1 make "b 5 label "b if :b = 1 [go "c]
fd :b pd fd 2 * :x pu bk :b + 2 * :x
re fd 1 li make "x :x + 1 make "b :b - 1 go "b
label "c
fd :b pd fd 2 * :x pu bk :b + 2 * :x
re fd 1 li
make "b :b + 1 make "x :x - 1 if :x = 0 [stop] go "c
end
to HeN
HL BG NT SP 50
end
to HaN
HL BG NT ^ SP 30
end
to SO
pu re fd 10 li pd fd 40 if :a = 8 [lt 20 bk 8 lt 30 bk 10 rt 60 bk 8 fd 8 lt 60 fd 10 rt 30 fd 8 rt 20] bk 40
end
to SU
pd bk 40 if :a = 8 [rt 20 fd 8 rt 30 fd 10 lt 60 fd 8 bk 8 rt 60 bk 10 lt 30 bk 8 lt 20]
fd 40
end
to LG
pu TX type [CLEAR SCREEN? (y)] if rc = "y [fs cs pu make "q 1 make "p 2 stop] SYM
end
to TX
setsplit 1 ct
end
to WHT
repeat 500 []
end
to re
rt 90
end
to li
lt 90
end
to BG
pd ht
end
to SP :x
pu re fd :x if :C > 1 [fd 12] li
end
to NT
rt 45 repeat 4 [fd 8.5 rt 90] lt 45
end
to KwN
HL NOOT fd 6.5 li fd 10 re ^ SP 20
end
to ^
if :C > 1 [SU stop] SO
end
to KM
ht repeat 4 - :C [fd 6.5] pd fd 9 bk 13 fd 4 pu repeat 4 - :C [bk 6.5] SP 10
end
to KRS
ht pd bk 6 fd 12 pu re fd 4 re pd fd 12 bk 4 re bk 2 fd 8 bk 2 re fd 4 re bk 2 fd 8 bk 2 li bk 2 SP 6
end
to ML
ht bk 6.5 pd fd 16 bk 16 rt 60 fd 6 repeat 3 [lt 60 fd 3] seth 0 fd 0.5 SP 10
end
to TEXT
if :NR = 5 [make "NR 1 SYM stop]
make "SC se 9 item :NR :RNs
setcursor :SC make "TXT rq
setcursor :SC type :TXT
make "NR :NR + 1
TEXT
end
to exit
TX type [EXIT: s = save, l = load, c = clear screen , q = quit :]
make "a rc
if :a = "s [SV]
if :a = "q [make "q 1 stop]
if :a = "c [LG]
if :a = "l [LD] ct SYM
end
to AcN
HL NOOT fd 6.5 li fd 10 re ^ SP 15
end
to SYM
TX type [SYMBOLS: 1 = 1 2 = © 4 = ¨ 8 = ¶ # = # b = flat , = , T = TEXT (EXIT = other options)]
end
to HL
if :C = -4 [hl]
if :C = -5 [fd 6.5 hl bk 6.5]
if :C = 8 [hl]
if :C = 9 [bk 6.5 hl fd 6.5]
if :C = 10 [bk 13 hl fd 6.5 hl]
end
to hl
li pd fd 5 bk 20 fd 15 pu re
end
to LD
NAAM if :nm = " [ct stop] if not emptyp dirpic :nm [loadpic :nm stop] DIR
end
to NAAM
ct type [NAME?] make "nm rq
end
to DIR
type [DIR:.] WHT ct type dirpic "A: WHT ct
end
to SV
NAAM if :nm = " [ct stop] if emptyp dirpic :nm [ct savepic :nm stop] type [EXISTS!!] DIR
end
 rt 60 fd 6 repeat 3 [lt 60 fd 3] seth 0 fd 0.5 SP 10
end
to T