PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #322)

[PCjs Machine "ibm5160"]

Waiting for machine "ibm5160" to load....

Information about “MUSIC COLLECTION”

Play your PC like a piano.  See a representation of the keyboard of your
computer on the screen of your PC. The musical notes are displayed and
when you press that key, the note sounds.  Although you cannot play
chords, since the PC only plays one note at a time, you can change the
pitch and duration of the notes.  Do you take requests?
File Descriptions:

PIANO COM Turns keyboard into piano keys to play music on.

A diverse collection of musical programs.  Play pre-recorded music,
compose new songs, enter old favorites and incorporate any or all of
them into your BASIC programs.

The two main menus are jukebox and classics.  Select from more than a
dozen choices of old favorites such as Arkansas Traveler, Baby Elephant
Walk, Hungarian Rhapsody, Messiah, a Bach Minuet and the Nutcracker
Suite.  Compose something new and different on the keyboard of your PC.
Play your choice or include appropriate music and sound effects in your
BASIC programs to add interest and fun!
File Descriptions:

PIANO    COM  Turns keyboard into piano keys for playing music.
MINWALTZ EXE  Minute Waltz.
ANT2     BAS  Anteater Music II demo.
ANVIL    BAS  A song.
ARKTRAV  BAS  Arkansas Traveler.
BACH     BAS  Classic: A song by Bach.
BLUESBOX BAS  Part of MUSICBOX.BAS.
BOUREE   BAS  A song.
CHOPIN1  BAS  Classic: A song by Chopin.
CLASSICS BAS  Menu for the selection of CLASSIC songs.
DANCE    BAS  Dance of the Watchacallit.
ELEPHANT TUN  Baby Elephant Walk song that is part of TUNE.BAS.
HAPPYB   BAS  Happy Birthday song.
HEARING  BAS  Hearing test.
HUNGRHAP BAS  Hungarian Rapsody.
IBMSONG  BAS  IBM fight song.
JSB      BAS  Sonata VI in E Major, 1st Movement. by J.S. Bach.
JSB      MUS  Same as JSB.BAS.
JUKEBOX  BAS  Music menu program with a colection of songs.
LIEBESTR BAS  Franz Liszt.
LUDWIG   BAS  Classic: Song by Bach [Ludwig].
MAGDALEN BAS  Classic: From The Little Notebook For Anna Magdalena Bach.
MESSIAH  BAS  Messiah.
MINUET   BAS  Classic: Minuet by J.S. Bach.
MTN-KING BAS  A song.
MUSICBOX BAS  Compose your song and save to disk [requires graphics].
NUTCRAKR BAS  Nutcracker Suite.
NYLOGO   BAS  New York PC Users Group song and graphics demo [graphics].
PRAELUD1 BAS  A song.
PRAELUD2 BAS  A song.
RAIL     BAS  Classic: I've Been Working On The Railroad.
SCALES   BAS  Plays different music scales.
SFG-BACH BAS  Classic: Solfeggietto by Bach.
SIREN    BAS  Alarm Siren.
SOUNDS   BAS  Different sounds.
SYMPH-5  BAS  A symphony.
SYNTH    BAS  Demo.
TRAUMERI BAS  Traumerei.
TUNE     BAS  Plays music files [ELEPHANT.TUN].
WILLTELL BAS  Classic: William Tell Overture.
XMAS     BAS  Collection of Xmas songs.

ANT2.BAS

1 '
2 ' AnteaterMusic II: Classical
3 '
4 ' Hope you like it!
5 '
6 ' Programmed by Tina Anameier (alias the Tiny Anteater)
7 '
8 ' ...The Philharmonic it ain't, though...
9 '
10 KEY OFF:COLOR 7,0:WIDTH 80:SCREEN 0,0,0:CLS
11 A=1
20 LOCATE 10,1:PRINT "AnteaterMusic II"
30 LOCATE 12,11:PRINT "by the anteater"
40 GOSUB 1800
45 A=1
50 CLS
60 Z$=" AnteaterMusic II "
70 PRINT STRING$(80,196);
80 COLOR 8,7:PRINT SPC(31);" AnteaterMusic II ";SPC(31)
90 COLOR 7,0:PRINT STRING$(80,196)
99 COLOR 8,7
100 FOR Z=1 TO 12 STEP 2
110     LOCATE Z+5,18
120     PRINT "";A;""
125     A=A+1
130 NEXT Z
140 COLOR 7,0
145 L=6
150 FOR S=1 TO 6
160     READ SONG$(S)
170     LOCATE L,23:PRINT SONG$(S)
180     L=L+2
190 NEXT S
200 LOCATE 18,1:PRINT STRING$(80,196)
210 LOCATE 20,1:PRINT "Enter selection";
220 X$=INKEY$:IF X$="" THEN 220
230 IF VAL(X$)<1 OR VAL(X$)>6 THEN GOTO 220
240 X=VAL(X$)
250 ON X GOSUB 300,800,1400,1700,2000,3000
260 ERASE SONG$:CLEAR:A=1:GOTO 50
270 DATA Funeral March (Chopin),Symphony #40 (Mozart)
280 DATA Sleeping Beauty Waltz (Tschaikowsky),Romeo and Juliet - Theme (Tschaikowsky),Prelude in C Major (Bach),Quit
289 STOP
290 '
291 ' Songs
292 '
300 COLOR 7:CLS:COLOR 1
310 LOCATE 10,1:PRINT " Funeral March - Chopin ";:COLOR 7
320 PLAY "t90 l16 o1 mn"
330 PLAY "a4a8.aa2"
340 PLAY "a4a8.aa2"
350 PLAY "a4a8.aa4o2c8.o1bb8.aa8.aa2"
360 PLAY "o2c4c8.cc4mle8.mndd8.cc8.cc2"
370 PLAY "a8g8f8.ee4c4a8g8f8.ee8.c4"
380 PLAY "o1a4a8.aa4o2c8.o1bb8.aa8.aa2"
390 PLAY "o2a8g8f8.ee4c4a8g8f8.ee8.c4"
400 PLAY "o1a4a8.aa4o2c8.o1bb8.aa8.aa4b4o2 c4"
420 PLAY "t90 l16 o1 mn"
430 PLAY "o2e8.fg8.ab8.o3c"
440 FOR CH=1 TO 16:PLAY "t255o2g64o3c64e64":NEXT CH
450 FOR CH=1 TO 12:PLAY "o2g64b64o3d64":NEXT CH
460 PLAY "t90p64 o2f64e4e8.f+g+8.ab8.o3c"
470 FOR CH=1 TO 16:PLAY "t255o2e64a64o3c64":NEXT CH
480 FOR CH=1 TO 8:PLAY "t255o2e64g+64b64":NEXT CH
490 PLAY "t90 l16 p4"
500 FOR CH=1 TO 12:PLAY "o2t255e64g64":NEXT CH
510 FOR CH=1 TO 12:PLAY "o2t255d64g64":NEXT CH
520 FOR CH=1 TO 12:PLAY "o2t255c64g64":NEXT CH
530 PLAY "t90 l16 p4"
540 FOR CH=1 TO 12:PLAY "o2t255c64e64":NEXT CH
550 FOR CH=1 TO 12:PLAY "o2t255o1b64e64":NEXT CH
560 PLAY "t90 l16 o1 a2"
580 PLAY "t90 l16 o1 mn"
590 PLAY "a4a8.aa4o2c8.o1bb8.aa8.aa2"
600 PLAY "t90 l16 o1 mn"
610 PLAY "o2c8.de8.fg8.ab8.o3c"
620 FOR CH=1 TO 16:PLAY "t255o2g64o3c64e64":NEXT CH
630 FOR CH=1 TO 12:PLAY "o2g64b64o3d64":NEXT CH
640 PLAY "t90p64 o2f64e4e8.f+g+8.ab8.o3c"
650 FOR CH=1 TO 16:PLAY "t255o2e64a64o3c64":NEXT CH
660 FOR CH=1 TO 8:PLAY "t255o2e64g+64b64":NEXT CH
670 PLAY "t90 l16 p4"
680 FOR CH=1 TO 12:PLAY "o2t255e64g64":NEXT CH
690 FOR CH=1 TO 12:PLAY "o2t255d64g64":NEXT CH
700 FOR CH=1 TO 12:PLAY "o2t255c64g64":NEXT CH
710 PLAY "t90 l16 p4"
720 FOR CH=1 TO 12:PLAY "o2t255c64e64":NEXT CH
730 FOR CH=1 TO 12:PLAY "o2t255o1b64e64":NEXT CH
740 PLAY "t90 l16 o1 a2"
760 PLAY "t90 l16 o1 mn"
770 PLAY "a4a8.aa4o2c8.o1bb8.aa8.aa2"
780 PLAY "t90 l16 o1 mn"
790 CLS:RETURN
798 '
799 '
800 COLOR 7:CLS:COLOR 1
810 LOCATE 10,1:PRINT " Symphony No. 40 - Mozart ";
820 COLOR 7
830 PLAY "t200 l8 mn o4"
840 PLAY "e-dd4e-dd4e-dd4b-4p4b-ag4gfe-4e-dc4c4p4"
850 PLAY "dcc4dcc4dcc4a4p4agf+4f+e-d4dco3b-4b-4p4"
860 PLAY "o4b-aa4o5c4o4f+4a4g4d4p4b-aa4o5c4o4f+4a4"
870 PLAY "g4b-4agfe-"
880 FOR CH=1 TO 14:PLAY "t255o3b-64o4d64":NEXT CH
890 FOR CH=1 TO 14:PLAY "t255o3g64o4d-64":NEXT CH
900 FOR CH=1 TO 3:PLAY "o3t255f+64a64o4d64":NEXT CH
910 PLAY "t200l8mnp4"
920 FOR CH=1 TO 6:PLAY "t255o3g64b-64o4d-64":NEXT CH
930 FOR CH=1 TO 3:PLAY "o3t255f+64a64o4d64":NEXT CH
940 PLAY "t200l8mnp4"
950 FOR CH=1 TO 6:PLAY "t255o3g64b-64o4d-64":NEXT CH
960 FOR CH=1 TO 3:PLAY "o3t255f+64a64o4d64":NEXT CH
970 PLAY "t200l8mnp4"
980 FOR CH=1 TO 6:PLAY "t255o3g64b-64o4d-64":NEXT CH
990 FOR CH=1 TO 3:PLAY "o3t255f+64a64o4d64":NEXT CH
1000 FOR CH=1 TO 3:PLAY "t255o3g64b-64o4d-64":NEXT CH
1010 FOR CH=1 TO 3:PLAY "o3t255f+64a64o4d64":NEXT CH
1020 FOR CH=1 TO 3:PLAY "t255o3g64b-64o4d-64":NEXT CH
1030 FOR CH=1 TO 3:PLAY "o3t255f+64a64o4d64":NEXT CH
1040 PLAY "t200l8mnp4p4o4"
1050 PLAY "e-dd4e-dd4e-dd4b-4p4b-ag4gfe-4e-dc4c4p4"
1060 PLAY "fe-e-4fe-e-4fe-e-4o5c4p4co4b-a4agf4fe-d2p4"
1070 PLAY "gff4gff4 o3 gff4gff4"
1080 PLAY "o4 gff4gff4 o3 gff4gff4"
1090 PLAY "o4e-dd4e-de-4dcd2e-4.co3b-4.o4dc4.o3amlb-2b-mn"
1100 PLAY "p8 o4 gff4gff4 o3 gff4gff4"
1110 PLAY "o4 gff4gff4 o3 gff4gff4"
1120 PLAY "o4e-dd4e-dd4e-dd2e-4.co3b-4.o4dc4.o3ab-4"
1130 PLAY "o5dco4b-agfe-dco3b-agfe-d4"
1140 FOR CH=1 TO 3:PLAY "t255o3b-64o4d64f64":NEXT CH
1150 FOR CH=1 TO 3:PLAY "    o3b-64o4e-64g64":NEXT CH
1160 FOR CH=1 TO 3:PLAY "    o4c64f64a64":NEXT CH
1170 PLAY "o4t200l8mn"
1180 PLAY "b-ao5dco4b-agfe-dco3b-agfe-d4"
1190 FOR CH=1 TO 4:PLAY "t255o3b-64o4d64f64":NEXT CH
1200 FOR CH=1 TO 4:PLAY "    o3b-64o4e-64g64":NEXT CH
1210 FOR CH=1 TO 4:PLAY "    o4c64f64a64":NEXT CH
1220 FOR CH=1 TO 4:PLAY "    o4d64g64b-64":NEXT CH
1230 FOR CH=1 TO 4:PLAY "    o3b-64o4e-64g64":NEXT CH
1240 FOR CH=1 TO 4:PLAY "    o3b-64o4d64f64":NEXT CH
1250 FOR CH=1 TO 4:PLAY "    o4c64e-64a64":NEXT CH
1260 PLAY "o4t200l8mn"
1270 PLAY "b-dfb-afo5co4ab-dfb-afo5co4ab-dfb-afo5co4a"
1280 PLAY "o4b-o5dco4ab-o5dco4ab-4p4p2"
1290 PLAY "o5 d4p2"
1300 FOR CH=1 TO 3:PLAY "t255l64o4dfb-":NEXT CH
1310 FOR CH=1 TO 12:PLAY "o4dfb-":NEXT CH
1320 CLS:RETURN
1398 '
1399 '
1400 COLOR 7:CLS:COLOR 1
1410 LOCATE 11,1:PRINT " The Sleeping Beauty Waltz - Tschaikowsky "
1420 COLOR 7
1430 PLAY "t230 l4 o3 ml"
1440 PLAY "c2.o2b2.o3c2o2abo3co2ab2o3de2c+d2.d2."
1450 PLAY "g2.f+2.f2dfeda2gf2mnemledc+dabo4c2.o3b2.o4c2o3a"
1460 PLAY "bo4co3ab2o4mndmld2c+d2.d2.e2f2f+2a2g2b2o5c2o4b2a2g"
1470 PLAY "l8f+gbagededo3bgp8o4g2a2b4o5cp8o4d+efegp8c+dedep8"
1480 PLAY "o3bo4cdcedco3bo4co3agp8o4f+gagbagf+gd+ep8g2a2bo5cp8"
1490 PLAY "o4d+efegp8c+dedep8o3bo4cdcedco3bagf+p8"
1500 PLAY "o4ff+gf+bagf+edgfededco3bo4co3bag"
1520 PLAY "o4l4c2.o3b2.o4c2o3abo4co3ab2o4de2c+d2.d2.g2.f+2."
1530 PLAY "f2dfeda2gf2mnemledc+do3ab"
1540 PLAY "t230 l4 o3 ml"
1550 PLAY "o4c2.o3b2.o4c2o3abo4cc+d2o3ao4e2c+f8p8"
1570 PLAY "o2l8ao3c+dfag+ao4c+dfl4g+2a2b2o5d2c2e2f2e2d2c4"
1580 PLAY "p4o3l8d+ef+gbo4ce2"
1590 FOR CH=1 TO 28
1600     PLAY "o3e32o4c32"
1610 NEXT CH
1620 CLS:RETURN
1698 '
1699 '
1700 COLOR 7:CLS:COLOR 1
1710 LOCATE 11,1:PRINT " Romeo and Juliet (Theme) - Tschaikowsky "
1720 COLOR 7
1730 PLAY "t160l4ml"
1740 PLAY "p2o4g2go3bo4cdo3ago4c2c2o3abg+2o4e2eo3gab-efa-2a-2g2"
1750 PLAY "dmnd+mld+ea2.efmnb-mlb-mnamla2.efmng+mlg+ab2.f+go4"
1760 PLAY "mncmlco3mnbmlb2.f+gmnb-mlb-bo4 e2.o3bo4cdd+ea2.e"
1770 PLAY "fgg+ab2.aa-2mlg2mlg4o3bo4cdo3ago4mlc2c2o3ab"
1780 PLAY "o3g+2o4e2eo3gab-efa-2a-2g2o4d2c2p4o3go4cec1c1p1"
1790 CLS:RETURN
1798 '
1799 '
1800 ' Bach: Toccata and Fugue in D Minor (partial)
1810 PLAY "l16 ml t39"
1820 PLAY "o4 a64  g64 a8 p32 l64 gfedc+32 d16. p16.p8. "
1830 PLAY "l16 o3 a64 g64 a8 p64 l32 efc+d16. p16.p8."
1840 PLAY "l16 o2 a64  g64 a8 p64 l64 gfedc+32 d16. p16.p8."
1850 PLAY "l8 o1 d o2 c+ e g b- o3 c+ e "
1860 FOR A=1 TO 4
1870   PLAY "t150 l64 o2 dga o3 d o2 dga o3 d o2 dga o3 d "
1880 NEXT A
1890 FOR A=1 TO 4
1900  PLAY "l64 o2 dea o3 d o2 dea o3 d o2 dea o3 d"
1910 NEXT A
1920 FOR A=1 TO 4
1930  PLAY "l64 o2 df+a o3 d o2 df+a o3 d o2 df+a o3 d"
1940 NEXT A
1950 RETURN
1951 '
1952 '
2000 COLOR 7:CLS:COLOR 1
2010 LOCATE 11,1:PRINT " Prelude in C Major - Bach "
2020 COLOR 7
2030 PLAY "t100 l16 o4 ml"
2040 PLAY "co3bo4co3go4co3bo4co3eco2bo3co2go3co2bo3co2go4co3bo4c"
2050 PLAY "o3go4co3bo4co3afefcfefdo4dcdo3ao4dcdo3bgf+gdgf+ge"
2060 PLAY "o4 edeo3bo4edeco3ag+aeag+ao4co3f+ef+o4co3f+ef+bgfgbgfg"
2070 PLAY "o3bedebedeaf+ef+af+ef+adcdadcdgedegedegc+o2bo3c+gc+o2bo3c+"
2080 PLAY "o3f+dc+dfdc+dgf+gdagadbabdo4co3bo4co3d"
2090 PLAY "o4do3f+gabo4degdgcgo3bo4go3agf+ef+8b8o4cdo3bco3 a32b32a8 mng.mlg4p4"
2100 PLAY "p2l16p16o4co3bo4co3go4co3bo4co3ao2fefcfeffo3babfbabg+o2edeo1bo2ede"
2110 PLAY "o3aedeaedeg+dcdg+dcdaedeaedebg+f+g+bg+f+g+"
2120 PLAY "o4co3ebeo4co3eo4do3dbdadbdo4co3c"
2130 PLAY "o3acg+cacbo2bo3geo4c8o3ab8a8g+8.mnamlao2ag+aeag+ao3eo4edeo3bo4ede"
2140 PLAY "o4co2ag+aeag+ao3do4gfgdgfgeco3bo4co3go4co3bo4co3eco2bo3co2go3co2bo3c"
2150 PLAY "o3co4co3bo4co3go4co3bo4co3afefafefdo4dcdo3ao4dcdo3bgf+gbgf+geo4"
2160 PLAY "edeo3bo4edeco3ag+ao4co3ag+ago4gfgdgfgegegfafadfdfegegcecedfdf"
2170 PLAY "o3bgabo4co3edcdgo4co3gdb4f8"
2180 FOR CH=1 TO 12:PLAY "t255l32mlo3eo4c":NEXT CH
2190 RETURN
3000 CLS
3010 PLAY "t120 l16 ml o2b-.ab-.ab-.fg.e-.....o3e-"
3020 LOCATE 5,14:PRINT "*This has been an Anteater Inc. production*"
3030 COLOR 15
3040 LOCATE 10,10:PRINT "                    AnteaterWare"
3050 COLOR 7:PRINT
3060 PRINT "AnteaterMusic is the product of hours of eye-straining, headache-causing work."
3070 PRINT "Therefore, any contributions of comments, recognition, and/or aspirin will be"
3080 PRINT "greatly appreciated. Thank you."
3090 PRINT
3100 PRINT "                    \       /"
3110 PRINT "                     \     / "
3120 PRINT "                      \   /"
3130 PRINT "                       \ /"
3140 PRINT "                       OO"
3150 PRINT "                       c"
3160 PRINT "                     \___/"
3170 PRINT "                      ' '"
3180 FOR A=1 TO 70:LOCATE 21,24:PRINT "C":LOCATE 21,24:PRINT "c":NEXT A
3190 LOCATE 19,50:PRINT "the anteater (Tina Anameier)"
3200 LOCATE 23,60:PRINT "p.s. But it's fun"
3210 LOCATE 25,1:PRINT "Press any key to continue...";
3220 IF INKEY$="" THEN 3220 ELSE CLS:END

ANVIL.BAS

10 CLS:KEY OFF
20 PLAY"T200"
25 FOR J=1 TO 2
30 FOR I=1 TO 4
40  READ M$
60  PLAY M$
70 NEXT I
75 RESTORE 100
80 NEXT
100 DATA "O3 E2 E4. E8 E4. D8 C4. O2 A8 G4. B8 O3 D4. F8 E2 C2"
110 DATA "E2 E4. E8 E4. D8 C4. O2 A8 G4. B8 O3 D4. F8 E4 C4 E2"
120 DATA "C4 P4 D4 P4 O2 B4 O3 C4 O2 A4 B4 E4 P4 P8 G+8 A8 B8"
130 DATA "O3 C4 C4 P8 O2B8 O3C8 D8 E4 E4 P8 D8 E8 F8 G2. F8 G16 F16 E4 P4 P2"

ARKTRAV.BAS

10 PLAY"l4o2go3l8cedcl4o2aaggo3ccddeel8dedco2l4ago3cedcl4o2aaggo3cco4l8co3bo4co3gao4co3bagfedl4c

BACH.BAS

5 T$="l12t140"
10 A$="mln42mso3db-mln23mso3db-mln11mso3db-mln42msdb-"
15 B$="mln44mso3e-b-mla-mse-b-mlgmse-b-mln44mso3e-b-"
20 C$="mlo4cmso3e-amlg-mse-amlfmse-amlo4cmso3e-a"
25 D$="mlo4dmso3fb-mlo2b-mso3fb-mlo1b-mso3fb-o4mldmso3fb-"
30 E$="mlo4gmso3b-o4dmlo3amsb-o4dmlo3gmsb-o4do3mlfmsb-o4d"
35 F$="mlo3emsb-o4cmlo3gmsb-o4cmlo3cmsb-o4cmlemso3b-o4c"
40 G$="mlfmso3ao4cmlo3gmsao4cmlo3fmsao4cmlo3emsao4c"
45 H$="mlo3dmsab-mlfmsab-mlo2b-mso3ab-mlo4dmso3ab-"
65 L$="mlo4emso3gb-mlo3d-msgb-mlcmsgb-mlo4emso3gb-"
70 M$="mlo4fmso3fa-mld-msfa-mlcmsfa-mlo4fmso3fa-"
75 N$="mlo4gmso3egmld-msegmlcmsegmlo4gmso3eg"
80 O$="mlo4a-mso3efmld-msefmlcmsefmlo4a-mso3ef"
85 P$="mlbmsdfmlo2a-mso3dfmlo2gmso3dfmlbmsdf"
90 Q$="mlo4cmso3egmlo2d-msegmlo2cmso3egmlb-mseg"
95 R$="mla-msefmlo2bmso3efmlcmsefmlo2cmso3ef"
97 S$="mlo1fmso2ao3cmlfmsao4cl2f"
100 AA$="l12mlo4amso3fo4cmlo3e-msfo4cmlo2fmso3fo4cmlo4amso3fo4c"
105  AB$="mlo4b-mso3fo4dmlo3a-msfo4dmlo2b-mso3fo4dmlb-mso3fo4dmlgmso3e-o4dmlo3b-mso3e-o4dmlo3amse-o4cmlo4gmso3e-o4cmlf+mso3do4cmlo3gmseo4cmlo3amsf+o4cmlf+mso3ao4c"
115 AC$="mlgmso3gb-mle-msgb-mldmsgb-mlo4gmso3gb-mlo4amso3f+amle-msf+amldmsf+amlo4amso3f+amlo4b-mso3f+gmle-msf+gmldmsf+gmlo4b-mso3f+gmlo4cmso3f+amle-msf+amldmsf+amlo4cmso3f+a"
125 AD$="mlo4b-mso3gb-mlo4f+mso3ao4cmlgmso3b-o4dmlo4c+mso3go4emldmso3ao4f+mlo3gmsb-o4gmlo3f+mso4camlo3e-mso4cf+mlo3dmsbo4gmlo3c+msb-o4emlo3dmsao4f+mlo2dmso4cf+"
135 AE$="mlo1gmso3b-o4gmlo2dmso3b-o4gmlo2gmso3b-o4gmlo2b-mso3b-o4gmlo3dmsa-o4fmlo3fmsa-o4fmlo3b-msa-o4fmldmso3a-o4fmlo3e-msgo4e-mlo3b-msgo4e-mlgmso3go4e-mlo3dmsgo4e-"
145 AF$="mlo3cmsao4e-mlo3fmsao4e-mlo2b-mso3b-o4dmlemso3b-o4d-mlfmso3ao4cmlo3fmsao4cmlfmso3ao4cmlo3fmsao4cmlo4e-mso3ao4cmlo3fmsao4cmlo4e-mso3ao4cmlo3fmsao4c"
155 AG$="mlo4dmso3a-bmlfmsa-bmlo4dmso3a-bmlfmsa-bmlo4d-mso3gb-mlemsgb-mlo4d-mso3gb-mlemsgb-mlo4cmso3g-amle-msg-amlo4cmso3g-amle-msg-a"
165 AH$="mlo4bmso3fa-mldmsfa-mlo4bmso3fa-mldmsfa-mlb-msegmld-msegmlb-msegmld-msegmlamse-g-mlcmse-g-mlamse-g-mlcmse-g-mlgmsd-emlo2b-mso3d-emlgmsd-emlo2b-mso3d-e"
170 AI$="mlo3amsce-mlo2g-mso3ce-mlo2amso3ce-mlamsce-"
175 AJ$="mlo3b-mso2b-o3d-mlo2g-msb-o3d-mlo2fmsb-o3d-mlo3b-mso2b-o3d-mlo4cmso2ao3cmlo2g-msao3cmlo2fmsao3cmlo4cmso2ao3cmlo4d-mso2ab-mlg-msab-mlfmsab-mlo4d-mso2ab-"
185 AK$="mlo4emso2ab-mld-msab-mlcmsab-mlo4emso2ab-mlo4fmso2ao3cmlo1g-mso2ao3cmlo1fmso2ao3cmlo4e-mso2ao3cmlo4d-mso2ab-mlemsab-mlfmsab-mlo1fmso2ab-mlo1b-mso3dfmlb-mso4dfmll2b-"
200 PLAY "xt$;xa$;xb$;xc$;xd$;xe$;xf$;xg$;xh$;xl$;xm$;xn$;xo$;xp$;xq$;xr$;xs$;xaa$;xab$;xac$;xad$;xae$;xaf$;xag$;xah$;xai$;xaj$;xak$;"
210 FOR I=1 TO 1000:NEXT I
220 CHAIN"A:CLASSICS.BAS"

BLUESBOX.BAS

10 ON ERROR GOTO 30000:CLS:OPTION BASE 1:KEY OFF:DEFINT A-Z:MAX=&H29A
50 DEF FNL2!(X)=LOG(X)/LOG(2):DEF FNS$(N$)=RIGHT$(N$,LEN(N$)-1):TRUE=-1:FALSE=0:FLAT=FALSE:SHARP=FALSE:OC=3:CN$="C":SCALE$="CDEFGAB":NN=7*OC-6
70 STAFFX=6:STAFFY=55:PTN$="":X$="C C#D E-E F F#G A-A B-B ":FOR X=1 TO 5:PTN$=PTN$+X$:NEXT:PSCALE$="C.D.EF.G.A.B":PTNPTR=(12*(OC-1)+INSTR(PSCALE$,CN$)-SHARP+FLAT)*2-1
90 KBX=123:KBY=6:NX=6:NY=160:RX=6:RY=180:MIDC=30:NDX=STAFFX+49:RDX=NDX-2:RDY=STAFFY:IBL=0:R=0:BS=0
100 TEMPO=100:DOTTED=FALSE:NOTE=TRUE:PREVNOTE=NOTE:TIME=4:PREVTIME=TIME:PREVDOT=DOTTED:PREVPTR=PTNPTR:BCOUNT=0:BPOS=0:NCOUNT=1:NPOS=1:INSERTING=FALSE
110 DIM NCURS(38),SHARP(38),FLAT(38),STAFF(1884),NOTE1(38),NOTE2(38),NOTE4(38),NOTE8(38),NOTE16(38),NOTE32(38),NOTE64(38),BLOCK(31,2),M$(MAX),IB$(99),PCL(104),PCC(104),PCR(104)
120 DIM REST1(38),REST2(38),REST4(38),REST8(38),REST16(38),REST32(38),REST64(38),PIANOL(104),PIANOR(104),PIANOC(104),DOT(38),NDY(35),BK(5):DEF FNU$(A$)=CHR$(ASC(A$+CHR$(13))+32*(LEFT$(A$,1)>"Z"))
140 GOSUB 13000:CLS:LOCATE 12,20-LEN(X$)/2:X$="Just a moment...":PRINT X$:X!=FRE(A$):GOSUB 16170:GOSUB 2000:GOSUB 15000:GOSUB 14000
1000 GOSUB 24000:IN$=AZ$
1010 IF IN$="S" AND INSERTING=0 THEN GOSUB 18000:GOTO 1150
1020 IF IN$="L" AND INSERTING=0 THEN GOSUB 17000:GOTO 1150
1025 IF IN$="I" THEN GOSUB 25000:GOSUB 27300:GOTO 1150
1030 IF IN$="P" AND INSERTING=0 THEN GOSUB 19000:GOTO 1150
1035 IF IN$="D" AND INSERTING=0 THEN GOSUB 26000:GOSUB 27300:GOTO 1150
1040 IF IN$="T" THEN GOSUB 20000:GOTO 1150
1045 IF IN$=" " THEN GOSUB 11000:NOTE=NOT NOTE:GOTO 1150
1050 IF IN$="N" AND INSERTING=0 THEN GOSUB 21000:GOSUB 27300:GOTO 1150
1055 IF IN$="C" AND INSERTING=0 THEN GOSUB 22000:GOTO 1150
1060 IF IN$=CHR$(13) THEN GOSUB 16000:GOTO 1150
1065 IF IN$=CHR$(3) AND INSERTING=0 THEN GOSUB 23000:GOTO 1150
1070 IF ASC(LEFT$(IN$,1))<>0 THEN GOSUB 50000:GOTO 1000 ELSE IN=ASC(RIGHT$(IN$,1))
1080 IF IN<59 OR (IN>68 AND IN<72) OR IN=73 OR IN=79 OR IN>80 THEN GOSUB 50000:GOTO 1000
1090 IF IN=72 THEN ON NOTE+2 GOSUB 3000,50000:GOTO 1150
1100 IF IN=75 THEN GOSUB 6000:GOTO 1150
1110 IF IN=77 THEN GOSUB 5000:GOTO 1150
1120 IF IN=80 THEN ON NOTE+2 GOSUB 4000,50000:GOTO 1150
1130 IF IN>60 AND IN<>63 AND (INSERTING OR NCOUNT=1) THEN GOSUB 50000:GOTO 1000
1140 ON IN-58 GOSUB 8000,7000,27000,27100,27200,27700,27500,27600,9000,10000
1150 GOSUB 2000
1160 GOSUB 12000:IF IN$<>"" THEN IF ASC(LEFT$(IN$,1))=0 AND NOTE AND TEMPO>31 THEN PLAY "MB T255 L64 O=OC;"+N$
1170 GOTO 1000
2000 N$=MID$(PTN$,PTNPTR,2):CN$=LEFT$(N$,1):AC$=RIGHT$(N$,1):IF AC$=" " THEN SHARP=FALSE:FLAT=FALSE
2030 IF AC$="#" THEN SHARP=TRUE:FLAT=FALSE
2040 IF AC$="-" THEN SHARP=FALSE:FLAT=TRUE
2060 OC=((PTNPTR-1)/2-INSTR(PSCALE$,CN$))/12+1:NN=7*OC+INSTR(SCALE$,CN$)-7:RETURN
3000 GOSUB 11000:PTNPTR=PTNPTR+2:IF PTNPTR>119 THEN PTNPTR=1
3010 RETURN
4000 GOSUB 11000:PTNPTR=PTNPTR-2:IF PTNPTR<1 THEN PTNPTR=119
4010 RETURN
5000 GOSUB 11000:IF NOTE THEN 5050
5020 IF TIME=64 THEN TIME=1 ELSE TIME=TIME*2
5030 RETURN
5050 IF DOTTED THEN DOTTED=FALSE:RETURN
5060 DOTTED=TRUE:IF TIME=64 THEN TIME=1 ELSE TIME=TIME*2
5070 RETURN
6000 GOSUB 11000:IF NOTE THEN 6040
6010 IF TIME=1 THEN TIME=64 ELSE TIME=TIME/2
6020 RETURN
6040 IF NOT DOTTED THEN DOTTED=TRUE:RETURN
6050 DOTTED=FALSE:IF TIME=1 THEN TIME=64 ELSE TIME=TIME/2
6060 RETURN
7000 GOSUB 11000:PTNPTR=PTNPTR+24:IF PTNPTR>119 THEN PTNPTR=PTNPTR-120
7010 RETURN
8000 GOSUB 11000:PTNPTR=PTNPTR-24:IF PTNPTR<1 THEN PTNPTR=PTNPTR+120
8010 RETURN:GOSUB 11000:IF NPOS=1 THEN RETURN
9000 :GOSUB 11000
9010 IF NPOS=1 THEN GOSUB 50000:RETURN
9020 NPOS=NPOS-1
9060 GOTO 27300
10000 GOSUB 11000
10010 IF NPOS=NCOUNT THEN GOSUB 50000:RETURN
10020 NPOS=NPOS+1
10060 GOTO 27300
11000 PREVTIME=TIME:PREVDOT=DOTTED:PREVNOTE=NOTE:PREVPTR=PTNPTR:RETURN
12000 PREVN$=MID$(PTN$,PREVPTR,2):PREVAC$=RIGHT$(PREVN$,1):PREVOC=((PREVPTR-1)/2-INSTR(PSCALE$,LEFT$(PREVN$,1)))/12+1:PREVNN=7*PREVOC+INSTR(SCALE$,LEFT$(PREVN$,1))-7:N2$=N$:IF AC$="-" THEN MID$(N2$,2,1)="b"
12010 LOCATE 2,2:IF NPOS<NCOUNT THEN IF INSERTING THEN PRINT "Inserting ..." ELSE PRINT "Editing ...  " ELSE PRINT SPC(13)
12020 IF MID$(M$(NPOS),10,1)="P" OR NOT NOTE THEN N2$="RST"
12030 IF NPOS=NCOUNT AND TEMPO<32 THEN TEMPO=100
12040 FOR X=BCOUNT TO 1 STEP -1:IF NPOS=>BLOCK(X,1) AND NPOS<=BLOCK(X,2) THEN LOCATE 19,2:PRINT SPC(13):LOCATE 19,2:PRINT "#";FNS$(STR$(X));" [";FNS$(STR$(BLOCK(X,1)));":";FNS$(STR$(BLOCK(X,2)));"]":X=0
12045 NEXT X:IF X<>-1 THEN LOCATE 19,2:PRINT SPC(13)
12050 LOCATE 2,31:IF DOTTED OR LEFT$(N2$,1)="R" THEN PRINT USING "Tone  \ \";N2$+"." ELSE PRINT USING "Tone   \\";N2$
12060 LOCATE 5,31:PRINT USING "Octave  #";OC:LOCATE 3,31:PRINT USING "Note  ###";NPOS:LOCATE 4,31:IF TEMPO>31 THEN PRINT USING "Tempo ###";TEMPO ELSE PRINT USING "REPEAT ##";TEMPO
12070 LOCATE 7,31:PRINT USING "Blocks ##";BCOUNT:LOCATE 6,31:PRINT USING "Length ##";TIME
12100 OLDTX=FNL2!(PREVTIME)*15+RX:IF PREVNOTE AND PREVDOT THEN PUT (OLDTX,NY),DOT
12110 PUT (OLDTX,RY+20*PREVNOTE),NCURS:TX=RX+15*FNL2!(TIME):PUT (TX,RY+20*NOTE),NCURS:IF NOTE AND DOTTED THEN PUT (TX,RY+20*NOTE),DOT
12160 X=INSTR(SCALE$,LEFT$(PREVN$,1)):XQ=INT(X-X/3+0.5):IF PREVAC$<>" " THEN PAINT (KBX+BK(XQ),KBY+5),0,2 ELSE IF X=2 OR X=5 OR X=6 THEN PUT (KBX+15*(X-1),KBY),PCC ELSE IF X=1 OR X=4 THEN PUT (KBX+15*(X-1),KBY),PCL ELSE PUT (KBX+15*(X-1),KBY),PCR
12180 X=INSTR(SCALE$,LEFT$(N$,1)):XQ=INT(X-X/3+0.5):IF AC$<>" " THEN PAINT (KBX+BK(XQ),KBY+5),1,2 ELSE IF X=2 OR X=5 OR X=6 THEN PUT (KBX+15*(X-1),KBY),PCC ELSE IF X=1 OR X=4 THEN PUT (KBX+15*(X-1),KBY),PCL ELSE PUT (KBX+15*(X-1),KBY),PCR
12190 KLUGE=TRUE
12210 IF NOT PREVNOTE THEN 12440
12220 ON FNL2!(PREVTIME)+1 GOTO 12230,12240,12250,12260,12270,12280,12290
12230 PUT (NDX,NDY(PREVNN)),NOTE1:GOTO 12300
12240 PUT (NDX,NDY(PREVNN)),NOTE2:GOTO 12300
12250 PUT (NDX,NDY(PREVNN)),NOTE4:GOTO 12300
12260 PUT (NDX,NDY(PREVNN)),NOTE8:GOTO 12300
12270 PUT (NDX,NDY(PREVNN)),NOTE16:GOTO 12300
12280 PUT (NDX,NDY(PREVNN)),NOTE32:GOTO 12300
12290 PUT (NDX,NDY(PREVNN)),NOTE64
12300 IF PREVDOT THEN PUT (NDX,NDY(PREVNN)),DOT
12310 IF PREVAC$="-" THEN PUT (NDX-2,NDY(PREVNN)),FLAT ELSE IF PREVAC$="#" THEN PUT (NDX-2,NDY(PREVNN)),SHARP
12320 IF NOT NOTE THEN 12520 ELSE ON FNL2!(TIME)+1 GOTO 12330,12340,12350,12360,12370,12380,12390
12330 PUT (NDX,NDY(NN)),NOTE1:GOTO 12400
12340 PUT (NDX,NDY(NN)),NOTE2:GOTO 12400
12350 PUT (NDX,NDY(NN)),NOTE4:GOTO 12400
12360 PUT (NDX,NDY(NN)),NOTE8:GOTO 12400
12370 PUT (NDX,NDY(NN)),NOTE16:GOTO 12400
12380 PUT (NDX,NDY(NN)),NOTE32:GOTO 12400
12390 PUT (NDX,NDY(NN)),NOTE64
12400 IF DOTTED THEN PUT (NDX,NDY(NN)),DOT
12410 IF AC$="-" THEN PUT (NDX-2,NDY(NN)),FLAT ELSE IF AC$="#" THEN PUT (NDX-2,NDY(NN)),SHARP
12420 RETURN
12440 IF PREVNOTE THEN 12320 ELSE ON FNL2!(PREVTIME)+1 GOTO 12450,12460,12470,12480,12490,12500,12510
12450 PUT (RDX,RDY),REST1:GOTO 12320
12460 PUT (RDX,RDY),REST2:GOTO 12320
12470 PUT (RDX,RDY),REST4:GOTO 12320
12480 PUT (RDX,RDY),REST8:GOTO 12320
12490 PUT (RDX,RDY),REST16:GOTO 12320
12500 PUT (RDX,RDY),REST32:GOTO 12320
12510 PUT (RDX,RDY),REST64:GOTO 12320
12520 ON FNL2!(TIME)+1 GOTO 12530,12540,12550,12560,12570,12580,12590
12530 PUT (RDX,RDY),REST1:RETURN
12540 PUT (RDX,RDY),REST2:RETURN
12550 PUT (RDX,RDY),REST4:RETURN
12560 PUT (RDX,RDY),REST8:RETURN
12570 PUT (RDX,RDY),REST16:RETURN
12580 PUT (RDX,RDY),REST32:RETURN
12590 PUT (RDX,RDY),REST64:RETURN
13000 SCREEN 1:CLS:COLOR 0,1:STAFF$="S10 A000 BM000,000 C2 D8 R1 U8 L1 R1 BR40 D8 R1 U8 L1 L40 D2 R40 D2 L40 D2 R40 D2 L40":STAFF$=STAFF$+" L1 D16 R1 U8 L1 R1 BR40 D8 R1 U8 L1 L40 D2 R40 D2 L40 D2 R40 D2 L40":DRAW STAFF$:STAFF$=""
13030 GET (0,0)-(104,70),STAFF:CLS
13050 CIRCLE (4,13),3,3,,,0.55:GET (0,0)-(13,17),NOTE1:LINE (7,12)-(6,1),3,B:GET (0,0)-(13,17),NOTE2:PAINT (4,13),3,3:GET (0,0)-(13,17),NOTE4:LINE (7,1)-(12,3),3:GET (0,0)-(13,17),NOTE8:LINE (7,3)-(12,5),3:GET (0,0)-(13,17),NOTE16
13060 LINE (7,5)-(12,7),3:GET (0,0)-(13,17),NOTE32:LINE (7,7)-(12,9),3:GET (0,0)-(13,17),NOTE64:CLS
13080 LINE(2,0)-(2,6),3:LINE (4,0)-(4,6),3:LINE (1,2)-(5,2),3:LINE (1,4)-(5,4),3:GET (0,0)-(13,17),SHARP:CLS:LINE (2,0)-(2,6),3:LINE (2,6)-(6,4),3:LINE (6,4)-(2,2),3:GET (0,0)-(13,17),FLAT
13100 CLS:LINE (3,11)-(9,13),3,BF:GET (0,0)-(13,17),REST1:CLS:LINE (3,9)-(9,7),3,BF:GET (0,0)-(13,17),REST2:CLS:LINE (6,3)-(8,5),3:LINE (8,5)-(6,8),3:LINE (6,8)-(8,10),3:LINE (8,10)-(5,13),3:LINE (5,13)-(6,15),3:GET (0,0)-(13,17),REST4
13110 PUT (1,0),REST4:GET (0,0)-(13,17),REST4:CLS:LINE (6,14)-(9,3),3:LINE (7,14)-(10,3),3:LINE (9,4)-(3,6),3:GET (0,0)-(13,17),REST8:LINE (9,6)-(3,8),3:GET (0,0)-(13,17),REST16:LINE (7,8)-(3,10),3:GET (0,0)-(13,17),REST32
13130 LINE (7,10)-(3,12),3:GET (0,0)-(13,17),REST64:CLS:LINE (0,0)-(9,30),3,BF:LINE (0,30)-(12,50),3,BF:GET (0,0)-(12,50),PIANOL
13131 PAINT (5,5),2,0:GET (0,0)-(12,50),PCL
13132 CLS:LINE (4,0)-(9,30),3,BF:LINE(0,30)-(12,50),3,BF:GET (0,0)-(12,50),PIANOC
13133 PAINT (5,5),2,0:GET (0,0)-(12,50),PCC
13134 CLS:LINE (4,0)-(12,30),3,BF:LINE (0,30)-(12,50),3,BF:GET (0,0)-(12,50),PIANOR
13135 PAINT (5,5),2,0:GET (0,0)-(12,50),PCR
13140 CLS:LINE (0,0)-(13,17),3,BF:GET (0,0)-(13,17),NCURS:CLS:LINE (10,14)-(11,15),3,B:GET (0,0)-(13,17),DOT:RETURN
14000 CLS:LINE (0,0)-(319,199),3,B:LINE (1,1)-(318,198),3,B:LINE (114,0)-(115,199),3,B:LINE (115,62)-(319,63),3,B:LINE (234,0)-(235,63),3,B
14030 PUT (KBX,KBY),PIANOL:PUT (KBX+15,KBY),PIANOC:PUT (KBX+30,KBY),PIANOR:PUT (KBX+45,KBY),PIANOL:PUT (KBX+60,KBY),PIANOC:PUT (KBX+75,KBY),PIANOC:PUT (KBX+90,KBY),PIANOR:LINE (KBX-3,KBY-2)-(KBX+105,KBY+52),3,B:PAINT (KBX+11,KBY+1),2,3
14050 FOR X=KBX+10 TO KBX+25 STEP 15:LINE (X+1,KBY)-(X+7,KBY+28),0,BF:NEXT X:FOR X=KBX+55 TO KBX+55+30 STEP 15:LINE (X+1,KBY)-(X+7,KBY+28),0,BF:NEXT X
14060 PUT (KBX,KBY),PCL
14070 LINE (0,NY-1)-(115,NY-2),3,B:PUT (NX,NY),NOTE1:PUT (NX+15,NY),NOTE2:PUT (NX+30,NY),NOTE4:PUT (NX+45,NY),NOTE8:PUT (NX+60,NY),NOTE16:PUT (NX+75,NY),NOTE32:PUT (NX+90,NY),NOTE64:TX=RX+15*FNL2!(TIME):PUT (TX,NY),NCURS
14090 LINE (0,RY-1)-(115,RY-2),3,B:PUT (RX,RY),REST1:PUT (RX+15,RY),REST2:PUT (RX+30,RY),REST4:PUT (RX+45,RY),REST8:PUT (RX+60,RY),REST16:PUT (RX+75,RY),REST32:PUT (RX+90,RY),REST64:PUT (STAFFX,STAFFY),STAFF
14120 FOR X=1 TO 5:LINE (STAFFX+46,STAFFY-X*5)-(STAFFX+60,STAFFY-X*5),2:LINE (STAFFX+46,STAFFY+X*5+45)-(STAFFX+60,STAFFY+X*5+45),2:NEXT X:LINE (STAFFX+46,STAFFY+MIDC)-(STAFFX+60,STAFFY+MIDC),2:PUT (NDX,NDY(NN)),NOTE4
14160 GOSUB 12000:LOCATE 13,21:DEF SEG:POKE 78,1:PRINT"PC Blues Box 2":LOCATE 15,21:POKE 78,2:PRINT "A Music Editor":LOCATE 16,21:PRINT "For The IBM PC"
14162 POKE 78,3:LOCATE 18,20:PRINT "by Fred J. Condo":LOCATE 19,20:PRINT "and Alan J. Zett":ERASE STAFF,PIANOL,PIANOC,PIANOR
14165 PLAY "MBT105O2L16C#FA-B-BB-A-FC#FA-B-BB-A-FF#B-O3C#E-EE-C#O2B-C#FA-B-BB-A-FA-O1A-O2A-GF#O1F#O2F#EC#.O3P8P32.C#":FOR X=19 TO 13 STEP -1:LOCATE X,16:PRINT SPC(24):NEXT
14170 LOCATE 10,16:PRINT "F1 DOWN   Octave   UP F2"
14190 LOCATE 11,16:PRINT "F3 START  Block   END F4"
14200 LOCATE 12,16:PRINT "F5 REPT.  BlocK   DEL F6"
14210 LOCATE 13,16:PRINT "F7 PREV.  Block  NEXT F8"
14220 LOCATE 14,16:PRINT "F9 PREV.  Note   NEXT F0"
14230 LOCATE 15,16:PRINT "I  INSRT  Note    DEL  D"
14240 LOCATE 16,16:PRINT "N  NOTE   Edit  TEMPO  T"
14250 LOCATE 17,16:PRINT "S  SAVE   File   LOAD  L"
14260 LOCATE 18,16:PRINT "C  CLEAR  Music  PLAY  P"
14265 LOCATE 19,16:PRINT "[Esc] Stop / Quit Ctrl-C"
14270 RETURN
15000 RESTORE:FOR X=1 TO 35:READ NDY(X):NDY(X)=NDY(X)+STAFFY:NEXT
15002 DATA 57,55,52,50,47,45,42,40,37,35,32,30,27,25,17,10,7,5,2,0,-3,-5,-8,-10,-13,-15,-18,-20,-23,-25,-28,-30,-33,-35,-38
15004 FOR X=1 TO 5:READ BK(X):NEXT:RETURN
15006 DATA 15,30,60,75,90,
16000 GOSUB 11000:IF NCOUNT=MAX THEN GOSUB 50000:RETURN ELSE M$="T000O0L00Na ":LZ=-((TEMPO<10)+(TEMPO<100)):MID$(M$,2+LZ)=FNS$(STR$(TEMPO)):MID$(M$,6)=FNS$(STR$(OC)):LZ=-(TIME<10):MID$(M$,8+LZ)=FNS$(STR$(TIME))
16060 IF NOT NOTE THEN MID$(M$,10)="P"+FNS$(STR$(TIME)) ELSE MID$(M$,10)=N$:IF DOTTED THEN MID$(M$,12)="."
16070 IF NOTE AND TEMPO>31 THEN PLAY M$
16080 IF INSERTING THEN IBL=IBL+1:IB$(IBL)=M$:RETURN ELSE M$(NPOS)=M$
16090 NPOS=NPOS+1
16110 IF NPOS>NCOUNT THEN NCOUNT=NCOUNT+1
16120 IF NPOS=NCOUNT THEN IF TEMPO<32 THEN TEMPO=100:RETURN ELSE RETURN
16160 GOTO 27310
16170 FOR X=1 TO 10:KEY X, "":NEXT X:RETURN
17000 :GOSUB 11000:LOCATE 22,16:PRINT "File? ";:AZ=14:GOSUB 24010:F$=AZ$:LOCATE 22,16:PRINT SPC(24):IF F$<"A" THEN RETURN ELSE OPEN F$ FOR INPUT AS #1:INPUT #1,X,X:IF X=0 THEN 17120 ELSE CLOSE #1:OPEN F$ FOR INPUT AS #1
17010 IF NCOUNT>1 THEN LOCATE 22,16:PRINT "Append? (Y/N)";:GOSUB 24000:X$=AZ$:IF X$="Y" THEN 17050
17020 INPUT #1,BCOUNT:INPUT #1,NCOUNT:NPOS=NCOUNT:IF BCOUNT<>0 THEN FOR X=1 TO BCOUNT:INPUT #1,BLOCK(X,1):INPUT #1,BLOCK(X,2):NEXT X
17030 BPOS=BCOUNT:FOR X=1 TO NCOUNT-1:INPUT #1,M$(X):NEXT X:GOTO 17100
17050 INPUT #1,AZ:INPUT #1,ZA:NPOS=NCOUNT+ZA-1:IF BCOUNT+AZ>29 OR NCOUNT+ZA>MAX-1 THEN GOSUB 50000:GOTO 17110 ELSE IF AZ<>0 THEN FOR X=1 TO AZ:INPUT #1,BLOCK(BCOUNT+X,1):INPUT #1,BLOCK(BCOUNT+X,2):NEXT X
17060 FOR X=1 TO AZ:BLOCK(BCOUNT+X,1)=BLOCK(BCOUNT+X,1)+NCOUNT-1:BLOCK(BCOUNT+X,2)=BLOCK(BCOUNT+X,2)+NCOUNT-1:NEXT X:BPOS=BCOUNT+AZ:FOR X=0 TO AZ-2:INPUT #1,M$(NCOUNT+X):NEXT X
17070 FOR X=NCOUNT TO NPOS-1:R=VAL(MID$(M$(X),2,3)):IF R<32 THEN R=R+BCOUNT
17080 MID$(M$(X),2,3)=RIGHT$("00"+FNS$(STR$(R)),3):NEXT X
17100 LOCATE 22,16:PRINT "Adjusting buffer ...":X!=FRE(A$):BCOUNT=BPOS:NCOUNT=NPOS:TIME=4:DOTTED=FALSE:NOTE=TRUE:PTNPTR=49
17110 LOCATE 22,16:PRINT SPC(24):CLOSE #1:RETURN
17120 LOCATE 22,16:BEEP:PRINT "NOT A MUSIC FILE":FOR X=1 TO 1000:NEXT X:GOTO 17110
18000 IF NCOUNT<2 THEN GOSUB 50000:RETURN ELSE GOSUB 11000:LOCATE 22,16:PRINT "File? ";:AZ=14:GOSUB 24010:F$=AZ$:LOCATE 22,16:PRINT SPC(24):IF F$<"A" THEN RETURN ELSE OPEN F$ FOR OUTPUT AS #1
18010 PRINT #1,BCOUNT:PRINT #1,NCOUNT:IF BCOUNT<>0 THEN FOR X=1 TO BCOUNT:PRINT #1,BLOCK(X,1):PRINT #1,BLOCK(X,2):NEXT X
18060 BPOS=BCOUNT:FOR X=1 TO NCOUNT-1:PRINT #1,M$(X):NEXT X:CLOSE #1:NPOS=NCOUNT:TIME=4:DOTTED=FALSE:NOTE=TRUE:PTNPTR=49:RETURN
19000 GOSUB 11000:R=O:IF NCOUNT=1 THEN GOSUB 50000:RETURN ELSE PLAY "MB":LOCATE 22,16:PRINT "Start? ";:AZ=4:GOSUB 24010:X$=AZ$:IF VAL(X$)<1 OR VAL(X$)>NCOUNT-1 THEN X$="1"
19010 LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "End? ";:AZ=3:GOSUB 24010:IF VAL(AZ$)<VAL(X$) OR VAL(AZ$)>NCOUNT-1 THEN AZ$=STR$(NCOUNT-1)
19020 LOCATE 22,16:PRINT "Now playing ...":FOR X=VAL(X$) TO VAL(AZ$):IF INKEY$=CHR$(27) THEN 25100
19030 IF VAL(MID$(M$(X),2,3))<32 THEN 19050 ELSE PLAY M$(X)
19040 NEXT:GOTO 25100
19050 R=VAL(MID$(M$(X),2,3)):IF R<1 OR R>BCOUNT THEN 19100
19060 FOR AZ=BLOCK(R,1) TO BLOCK(R,2):IF INKEY$=CHR$(27) THEN 25100
19070 IF VAL(MID$(M$(AZ),2,3))<32 THEN 19100 ELSE PLAY M$(AZ)
19080 NEXT:GOTO 19040
19100 GOSUB 11000:LOCATE 22,16:PRINT "Repeat Error !!":FOR X=1 TO 1000:NEXT X:GOTO 25100
20000 GOSUB 11000:LOCATE 22,16:PRINT "Tempo (32-255)? ";:AZ=3:GOSUB 24010:X$=AZ$:IF VAL(X$)<32 OR VAL(X$)>255 THEN 20050 ELSE TEMPO=VAL(X$):LOCATE 22,16:PRINT SPC(24):IF INSERTING THEN RETURN
20010 LOCATE 22,16:PRINT "Global? (Y/N)":GOSUB 24000:X$=AZ$:IF X$<>"Y" THEN 20050 ELSE LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "Start? ";:AZ=4:GOSUB 24010:X$=AZ$:IF VAL(X$)<1 OR VAL(X$)>NCOUNT-1 THEN X$="1"
20020 LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "End? ";:AZ=4:GOSUB 24010:IF VAL(AZ$)<VAL(X$) OR VAL(AZ$)>NCOUNT-1 THEN AZ$=STR$(NCOUNT-1)
20030 LOCATE 22,16:PRINT SPC(24):LOCATE 22,16:PRINT "Adjusting Tempo ...":FOR X=VAL(X$) TO VAL(AZ$):IF MID$(M$(X),2,3)>"031" THEN MID$(M$(X),2)=RIGHT$("00"+FNS$(STR$(TEMPO)),3)
20040 NEXT X
20050 LOCATE 22,16:PRINT SPC(24):RETURN
21000 GOSUB 11000:IF NCOUNT=1 THEN GOSUB 50000:RETURN ELSE LOCATE 22,16:PRINT "Edit Note? ";:AZ=3:GOSUB 24010:X$=AZ$:LOCATE 22,16:PRINT SPC(24):IF VAL(X$)<1 THEN RETURN ELSE IF VAL(X$)>NCOUNT-1 THEN NPOS=NCOUNT:RETURN
21010 NPOS=VAL(X$):C7$=MID$(M$(NPOS),10,2):N7$=LEFT$(C7$,1):OC7=VAL(MID$(M$(NPOS),6,1)):DOTTED=(RIGHT$(M$(NPOS),1)="."):TIME=VAL(MID$(M$(NPOS),8,2)):NOTE=NOT (ASC(N7$)=80)
21060 TEMPO=VAL(MID$(M$(NPOS),2,3)):SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
22000 GOSUB 11000:LOCATE 22,16:PRINT "Sure? (Y/N) ";:GOSUB 24000:X$=AZ$:LOCATE 22,16:PRINT SPC(24)
22010 IF X$=CHR$(13) THEN RETURN
22020 IF X$<>"Y" THEN RETURN
22030 BCOUNT=0:NCOUNT=1:NPOS=1:TIME=4:NOTE=TRUE:DOTTED=FALSE:PTNPTR=49:TIME=4:LOCATE 22,16:PRINT "Clearing ...":ERASE M$:DIM M$(MAX):X!=FRE(A$):LOCATE 22,16:PRINT SPC(24):RETURN
23000 LOCATE 22,16:PRINT "Sure? (Y/N)";:GOSUB 24000:X$=AZ$:LOCATE 22,16:PRINT STRING$(24,32):IF X$=CHR$(13) THEN RETURN
23010 IF X$<>"Y" THEN RETURN ELSE SCREEN 0,0,0:WIDTH 40:COLOR 11,0:CLS:END
24000 AZ$=INKEY$:IF AZ$="" THEN 24000 ELSE IF LEFT$(AZ$,1)=CHR$(0) THEN RETURN ELSE AZ$=FNU$(AZ$):RETURN
24010 AZ$="":ZA$="":PRINT CHR$(95+63*(ZA>10));:IF AZ=0 THEN AZ=255
24020 ZA$=INKEY$:IF ZA$>CHR$(31) AND ZA$<CHR$(123) AND AZ>0 THEN PRINT CHR$(29);ZA$;CHR$(95+63*(ZA>10));:AZ$=AZ$+ZA$:AZ=AZ-1
24030 IF ZA$<>"" AND ZA$<>CHR$(8) THEN SOUND 1100,0.1
24040 IF ZA$=CHR$(13) THEN PRINT CHR$(29);" ";:RETURN
24050 IF ZA$=CHR$(8) THEN SOUND 1600,0.1:IF LEN(AZ$)>0 THEN PRINT CHR$(29);CHR$(29);CHR$(95+63*(ZA>10));" ";CHR$(29);:AZ=AZ+1:IF LEN(AZ$)>1 THEN AZ$=LEFT$(AZ$,LEN(AZ$)-1) ELSE PRINT CHR$(29);:GOTO 24010
24060 ZA=ZA+4:PRINT CHR$(29);CHR$(95+63*(ZA>10));:IF ZA>20 THEN ZA=0
24070 GOTO 24020
25000 GOSUB 11000:IF NPOS=NCOUNT THEN GOSUB 50000:RETURN ELSE IF INSERTING=0 THEN INSERTING=NPOS:IBL=0:RETURN ELSE IF IBL=0 THEN INSERTING=0:RETURN
25010 LOCATE 22,16:PRINT "Adjusting buffer ...":FOR X=NCOUNT-1 TO INSERTING STEP -1:M$(X+IBL)=M$(X):NEXT X:NCOUNT=NCOUNT+IBL:NPOS=NPOS+IBL:FOR X=0 TO IBL-1:M$(X+INSERTING)=IB$(X+1):NEXT X
25020 IF BCOUNT=0 THEN 25100 ELSE FOR X=1 TO BCOUNT:IF BLOCK(X,1)=>INSERTING THEN BLOCK(X,1)=BLOCK(X,1)+IBL
25030 IF BLOCK(X,2)=>INSERTING THEN BLOCK(X,2)=BLOCK(X,2)+IBL
25040 NEXT X:X!=FRE(A$)
25100 LOCATE 22,16:PRINT SPC(24):INSERTING=0:RETURN
26000 GOSUB 11000:IF NPOS=NCOUNT THEN GOSUB 50000:RETURN ELSE LOCATE 22,16:PRINT "How many? ";:AZ=3:GOSUB 24010:X$=AZ$
26010 IF VAL(X$)=0 THEN 25100 ELSE IF NPOS+VAL(X$)=>NCOUNT THEN NCOUNT=NPOS:IF NPOS=1 THEN 22030 ELSE 25100
26020 IF BCOUNT=0 THEN 25100 ELSE AZ=31:BLOCK(AZ,1)=NPOS:BLOCK(AZ,2)=NPOS+VAL(X$)-1:X$="D":GOTO 27715
27000 GOSUB 11000:IF BS OR BCOUNT=30 THEN GOSUB 50000:RETURN ELSE FOR X=1 TO BCOUNT:IF NPOS=BLOCK(X,1) THEN GOSUB 50000:RETURN ELSE NEXT X:BCOUNT=BCOUNT+1:BS=-1:IF BCOUNT=1 THEN BLOCK(1,1)=NPOS:BLOCK(1,2)=0:BPOS=1:RETURN
27010 LOCATE 22,16:PRINT "Adjust Repeats? (Y/N)":GOSUB 24000:X$=AZ$:LOCATE 22,16:PRINT "Adjusting buffer ...";SPC(4):BPOS=0:FOR X=1 TO BCOUNT-1:IF NPOS<BLOCK(X,1) THEN BPOS=X
27020 NEXT X:IF BPOS=0 THEN BLOCK(BCOUNT,1)=NPOS:BLOCK(BCOUNT,2)=0:BPOS=BCOUNT:GOTO 25100
27030 FOR X=BCOUNT-1 TO BPOS STEP -1:BLOCK(X+1,1)=BLOCK(X,1):BLOCK(X+1,2)=BLOCK(X,2):NEXT:BLOCK(BPOS,1)=NPOS:BLOCK(BPOS,2)=0:IF X$="N" THEN 25100
27040 FOR X=1 TO NCOUNT-1:R=VAL(MID$(M$(X),2,3)):IF R<32 AND R=>BPOS THEN R=R+1
27050 MID$(M$(X),2,3)=RIGHT$("00"+FNS$(STR$(R)),3):NEXT X:GOTO 25100
27100 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE IF BS=0 OR BLOCK(BPOS,1)=>NPOS THEN GOSUB 50000:RETURN ELSE BLOCK(BPOS,2)=NPOS:BS=0:RETURN
27200 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN
27210 LOCATE 22,16:PRINT "Repeat Block? ";:AZ=2:GOSUB 24010:X$=AZ$:LOCATE 22,16:PRINT SPC(24):IF VAL(X$)<1 OR VAL(X$)>31 THEN RETURN ELSE IF VAL(X$)>BCOUNT THEN GOSUB 50000:RETURN
27220 AZ$="T"+RIGHT$("00"+X$,3)+"O3L04C ";:IF INSERTING THEN IB$(NPOS)=AZ$:IBL=IBL+1 ELSE M$(NPOS)=AZ$
27230 GOTO 16090
27300 IF NPOS>=NCOUNT THEN NPOS=NCOUNT:PTNPTR=49:TIME=4:DOTTED=FALSE:NOTE=TRUE:RETURN
27310 C7$=MID$(M$(NPOS),10,2):N7$=LEFT$(C7$,1):OC7=VAL(MID$(M$(NPOS),6,1)):DOTTED=(RIGHT$(M$(NPOS),1)="."):TIME=VAL(MID$(M$(NPOS),8,2)):NOTE=NOT (ASC(N7$)=80)
27320 TEMPO=VAL(MID$(M$(NPOS),2,3)):SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
27500 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE AZ=0:FOR X=1 TO BCOUNT:IF BLOCK(X,1)<NPOS THEN AZ=X
27510 NEXT X:IF AZ=0 THEN GOSUB 50000:RETURN ELSE NPOS=BLOCK(AZ,1):GOTO 27300
27600 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE AZ=0:FOR X=BCOUNT TO 1 STEP -1:IF BLOCK(X,1)>NPOS THEN AZ=X
27610 NEXT X:IF AZ=0 THEN GOSUB 50000:RETURN ELSE NPOS=BLOCK(AZ,1):GOTO 27300
27700 GOSUB 11000:IF BCOUNT=0 THEN GOSUB 50000:RETURN ELSE AZ=0:FOR X=1 TO BCOUNT:IF BLOCK(X,1)=NPOS THEN AZ=X
27710 NEXT X:IF AZ=0 THEN GOSUB 50000:RETURN ELSE LOCATE 22,16:PRINT "Unmark or Delete? (U/D)":GOSUB 24000:X$=AZ$:LOCATE 22,16:PRINT SPC(24):IF X$<>"U" AND X$<>"D" THEN RETURN
27715 LOCATE 22,16:PRINT "Delete Repeats? (Y/N)":GOSUB 24000
27720 LOCATE 22,16:PRINT "Adjusting buffer ...";SPC(4):IF X$="D" THEN FOR X=1 TO NCOUNT-BLOCK(AZ,2)-1:M$(BLOCK(AZ,1)+X-1)=M$(BLOCK(AZ,2)+X):NEXT X:R=BLOCK(AZ,2)-BLOCK(AZ,1)+1:NCOUNT=NCOUNT-R
27730 FOR X=1 TO BCOUNT:IF ((BLOCK(X,1)=>BLOCK(AZ,1) AND BLOCK(X,1)<=BLOCK(AZ,2)) OR (BLOCK(X,2)=>BLOCK(AZ,1) AND BLOCK(X,2)<=BLOCK(AZ,2))) AND X$="D" AND X<>AZ THEN BLOCK(X,1)=-1:BLOCK(X,2)=-1
27740 NEXT X:FOR X=1 TO BCOUNT:IF X$="D" AND BLOCK(X,1)>BLOCK(AZ,1) AND X<>AZ THEN BLOCK(X,1)=BLOCK(X,1)-R:BLOCK(X,2)=BLOCK(X,2)-R
27745 NEXT X:BLOCK(AZ,1)=-1:BLOCK(AZ,2)=-1:AZ=0
27750 AZ=AZ+1:IF AZ>BCOUNT THEN X!=FRE(A$):GOTO 25100 ELSE IF BLOCK(AZ,1)>0 THEN 27750
27760 FOR X=AZ TO BCOUNT:BLOCK(X,1)=BLOCK(X+1,1):BLOCK(X,2)=BLOCK(X+1,2):NEXT X:BCOUNT=BCOUNT-1:IF AZ$="N" THEN AZ=0:GOTO 27750 ELSE FOR X=1 TO NCOUNT-1:R=VAL(MID$(M$(X),2,3))
27770 IF R=AZ THEN M$(X)="X" ELSE IF R<32 AND R>AZ THEN MID$(M$(X),2,3)=RIGHTS("00"+FNS$(STR$(R-1)),3)
27780 NEXT X:FOR X=1 TO NCOUNT-1:IF M$(X)<>"X" THEN 27810 ELSE FOR R=X TO NCOUNT-1:M$(R)=M$(R+1):NEXT R:NCOUNT=NCOUNT-1:FOR R=1 TO BCOUNT:IF AZ=>BLOCK(R,1) AND X<=BLOCK(R,2) THEN BLOCK(R,2)=BLOCK(R,2)-1
27790 NEXT R:FOR R=1 TO BCOUNT:IF BLOCK(R,1)>=BLOCK(R,2) THEN BLOCK(R,1)=-1:BLOCK(R,2)=-1
27800 NEXT R:X=X-1
27810 NEXT X:AZ=0:GOTO 27750
30000 BEEP:X=ERR:LOCATE 22,16:IF X=53 THEN PRINT "FILE NOT FOUND":RESUME 30020 ELSE IF X=57 OR X>64 THEN PRINT "DISK ERROR":RESUME 30020 ELSE IF X=61 THEN PRINT "DISK FULL":RESUME 30020
30010 SCREEN 0,0,0:WIDTH 40:CLS:LOCATE 10,1:IF X>30 THEN PRINT "UNKNOWN ERROR";:RESUME 30030 ELSE PRINT "PROGRAM ERROR";:RESUME 30030
30020 FOR X=1 TO 2000:NEXT X:LOCATE 22,16:PRINT SPC(24):GOTO 1000
30030 PRINT X;"IN";ERL;"... BUG?":PRINT:PRINT "TO SAVE ANY CURRENT WORK, GOSUB 18000":PRINT:ON ERROR GOTO 0:END
50000 GOSUB 11000:LOCATE 22,16:PRINT "Invalid command ...":FOR X=1 TO 1000:NEXT X:LOCATE 22,16:PRINT SPC(24):RETURN

BOUREE.BAS

10 'bouree - with comments describing the strings
20 A$ = "MB ML L8 T150"
30 ' MB = music background - notes are kept in a buffer
35 ' that plays in the background while program does other
40 ' things
50 ' ML = music legato - each note plays full len of time
60 ' L8 = default length of note, in this case an 8th
70 ' T150 = sets tempo by specifying the number of quarter
75 ' notes in a minute
80 '
90 B$ = "O4 D E F4 E D C+4 D E O3 A4 B O4 C+ D P10"
100 ' O4 sets the current octave to 4 (octaves numbered
105 ' from 0 to 6)
110 ' D and E are eighth notes (the default length), F4
115 ' is a quarter note
120 ' C+4 is a C sharp quarter note, O3 changes the octave
125 ' to 3
130 ' P10 is a pause with a length of 10
140 '
150 C$ = "C O3 B- A4 G F E4 F G A P16 G F16 E16 D8 P10"
160 ' B- is B flat, F16 and E16 are sixteenth notes
170 '
180 D$ = "O4 D E F4 E D A4 F A O3 A4 B O4 C+ D P10"
190 E$ = "C O3 B- A4 G F P32 F16 G16 F16 E16 F16. P32  F2"
200 ' a . following a note acts just like it does in music,
210 ' it plays the note 3/2 times the length indicated.
220 '
230 ' the following statements "play" the strings defined
235 ' above
240 '
250 PLAY A$
260 PLAY B$
270 PLAY C$
280 PLAY D$
290 PLAY E$
300 '
310 ' if i had used MF (music foreground) instead of MB
315 ' (music background),
320 ' i wouldn't need the "if inkey$..." statement.  with
325 ' MB, though, continued next message...
330 ' the program ends before the music gets a chance
335 ' to play.  MB is useful
340 ' when you want to set graphics to music.
350 IF INKEY$ = "" THEN 350
360 '
370 ' i like to leave basica at the end of the program,
375 ' but left it
380 ' commented out.
390 'SYSTEM
400 END

CHOPIN1.BAS

10 T$="t92"
11 AA$= "l1mlo1g+l12c+o2g+o3c+ec+o2g+c+g+o3c+ec+o2g+"
12 AB$= "l12c+g+o3c+ec+o2g+c+g+o3c+ec+o2g+"
15 A$="l16o2c+o3g+ag+gg+o4c+ed+c+d+c+cc+eg+"
30 C$="o3p16ao4c+d+f+ao5c+d+bag+f+ed+f+c+cd+o4ag+f+aed+f+c+cd+o3ag+ba"
40 D$= "o4d+ed+dd+ba+g+go5ed+c+o4ba+g+ga+g+bded+g+o3a+o4c+o3bo4d+o3ga+g+gg+"
45 E$= "o3mlg+mso4g+cc+mlo3f+mso4f+cc+mlo3fmso4fcc+o3mlf+o4msf+cc+"
50 F$= "o3mlc+mso4c+o3f+amld+o4msd+o3f+amlemso4eo3g+bmlg+mso4g+o3bo4e"
55 G$= "o3mlfmso4fo3bo4d+mlo3f+mso4f+o3bo4d+mlo3amso4ao3bo4emlo3g+mso4g+o3bo4e"
60 H$= "o3mlg+mso4g+cc+mlo3f+mso4f+cc+mld+mso5d+o4f+amlo4c+o5msc+o4f+a"
65 I$=  "o4msc+o5mlc+mso4d+f+o4co5mlcmso4d+f+co5mlcmso4d+f+cmlo5cmso4d+f+"
66 J$=  "o4msco5mlcmso4d+f+o3bo4mlbmso4d+f+o3bo4mlbmso4d+f+o3a+mlo4a+mso4d+f+"
67 JJ$=  "o4msco5co4d+f+o3bo4bo4d+f+o3bo4bo4d+f+o3a+o4a+o4d+f+"
68 K$=  "o3msa+mlo4a+mso4d+f+o3amlo4amso4d+f+o3amlo4msao4d+f+o3ao4mlamso4d+f+"
69 KK$=  "o3msa+o4a+o4d+f+o3ao4ao4d+f+o3ao4ao4d+f+o3g+o4g+o4d+f+"
100 PLAY "xt$;xaa$;xab$;xA$;xA$;xC$;xa$;xa$;xd$;"
105 PLAY "xe$;xf$;xe$;xg$;xe$;xf$;xh$;xi$;xj$;xk$;xjj$;xkk$;"
110 FOR I=1 TO 1000:NEXT I
120 CHAIN"A:CLASSICS.BAS"

CLASSICS.BAS

10 CLS :PRINT "CLASSICS":PRINT
20 PRINT " 1 - FROM `THE LITTLE NOTEBOOK FOR ANNA MAGDALENA BACH' BY J. S. BACH"
30 PRINT " 2 - SOLFEGGIETTO BY C. P. E. BACH"
40 PRINT " 3 - WILLIAM TELL OVERTURE"
50 PRINT " 4 - I'VE BEEN WORKING ON THE RAILROAD (OUTSTANDING)"
60 PRINT " 5 - UNKNOWN BACH"
70 PRINT " 6 - UNKNOWN CHOPIN"
80 PRINT " 7 - UNKNOWN BACH (LUDWIG)"
90 PRINT " 8 - MINUET BY J. S. BACH"
100 PRINT " 0 - QUIT
110 PRINT :INPUT "PLEASE MAKE YOUR SELECTION: ",N
120 IF N=0 THEN END
130 IF N>8 THEN 110
140 ON N GOTO 150,160,170,180,190,200,210,220
150 CHAIN "A:MAGDALEN.BAS"
160 CHAIN "A:SOLFE.BAS"
170 CHAIN "A:WILLTELL.BAS"
180 CHAIN "A:RAIL.BAS"
190 CHAIN "A:BACH.BAS"
200 CHAIN "A:CHOPIN1.BAS"
210 CHAIN "A:LUDWIG.BAS"
220 CHAIN "A:MINUET.BAS"

DANCE.BAS

1 ' ANITRA = Music          from  P. Fraundorf         2/83
10    ' anitra.bas: Anitra's Dance from "Peer Gynt" by Edvard Grieg
11     ' adapted for the IBM PC; (c) P. Fraundorf 1982
15 CLS:LOCATE 12,30:PRINT "A N I T R A ' S   D A N C E":PRINT:PRINT:PRINT
20    ' ----------------------define manuscript phrases----------------------
30      A$="MLO5e2. e4p2 MSO1a4O3c4dd O1a4O3e4ff O1a4O3e4dd O1a4O3c4"
40      B1$="O3e4 MLa64b64a16.MSg#abO4cd MLeae4Xtd$; cac4O3Xtb$; MNa2p4"
50      B2$="MLaO4cO3a4Xtg$; f#O4cO3MNf#2 MLfO4cO3f4Xte$; d#bMNd#2"
60      B3$="MSba#f#baf bg#ebgd# bf#dbfc# becbd#O2b"
70      B4$="MLO3e64f#64e16.MSd#ef#ga bO4eO3bagf# ef#gab4 O4e4p4"
80      B$=B1$+B2$+B3$+B4$
90      C1$="MLf4.MNeMLeMNd MLd4.MNeMLeMNf f2. MSe4p2 p8O3fdcO2bMLO3f"
100     C2$="MSdcO2bO3dO2ba g#MLO3dMSO2bag#b g#fedcO1b"
110     C3$="O4MLb-4.MNaMLaMNg MLg4.MNaMLaMNb- b-2. MSa4p2 p8O3b-gfeMLb-"
120     C4$="MSgfeged c#MLgMSedc#e c#O2b-agfe"
130     C$=C1$+C2$+C3$+C4$
140     D1$="MSO2d4O3f#4g4 O2d4O3a4b4 O2d4O3a4a4 O4d64e64d16.c#def#g"
150     D2$="MLaO5dO4a4Xtg$; f#O5dO4f#4Xte$; MNd2."
160     D3$="MSO2d4O3f4g4 O2d4O3a4b-4 O2d4O3a4a4 O4d64e64d16.c#defg"
170     D4$="MLaO5dO4a4Xtg$; fO5dO4f4Xte$; MNd2."
180     D$=D1$+D2$+D3$+D4$
190     E1$="MSO1d-O2e-aO3cfO4c MLf64g64f16.MSefgab- MLO5cfcMSO3gab-"
200     E2$="MLO4cfc2 MSO1fO2f#aO3ceO4e MLa64b64a16.MSg#abO5cd"
210     E3$="MLeaeMSO3bO4cd MLeae2 MSO1bO2bO3d#f#ab MLO4f#64g64f#16.MSff#gab"
220     E$=E1$+E2$+E3$
230     F1$="MLO5cO4cf#MSO3g#ab MLO4cO3cf#2 MSO1eO2eg#bO3de"
240     F2$="T=T2; MLb64O4c64O3b16.MSa#bO4cde"
250     F3$="T=T3; MLfO3fbMScde T=T4; MLfO2fb4MNO3e4"
260     F$=F1$+F2$+F3$
270     G1$="T=T1; MLa64b64a16.MSg#abO4cd MLeae4Xtd$; cec4O3Xtb$; MNa2."
280     G2$="MLO4aO5cO4a4Xtg$; f#O5cO4f#2 fO5cO4f4Xte$; d#bd#2 dfd4Xtc$;"
290     G3$="O3bO4fO3b2 b-O4fo3b-4Xta$; g#O4eO3g#2 MSO4ed#O3bO4edO3b-"
300     G4$="O4ec#O3aO4ecO3g# O4eO3bgO4eO3a#f# O4eO3afO4eO3g#e
310     G$=G1$+G2$+G3$+G4$
320     H$="MLa64b64a16.MSg#abO4cd eaedcO3b abO4cde4 a4p4"
330   ' -------------------define qtr-note trill substrings------------------
340     TA$="a16b32a32b32a32b32a32"
350     TB$="b16O4c32O3b32O4c32O3b32O4c32O3b32"
360     TC$="c16d32c32d32c32d32c32"
370     TD$="d16e32d32e32d32e32d32"
380     TE$="e16f32e32f32e32f32e32"
390     TG$="g16a32g32a32g32a32g32"
400   ' ----------------------------determine tempo--------------------------
410     INPUT "tempo (80-255 qtr notes/min, rtn=160)";T1: IF T1=0 THEN T1=160
420     T2=0.8*T1: T3=0.6*T1: T4=0.4*T1
430   ' ----------------------------play the dance---------------------------
440     I$="p4": PLAY "T=T1; L8": PLAY A$: PLAY B$: PLAY B$+"p4"
450     FOR I=1 TO 2
460             PLAY C$: PLAY D$: PLAY E$: PLAY F$: PLAY G$: PLAY H$: PLAY I$
470             I$="O1E4 O0A4P2 MLO4A2. A4"
480             NEXT
490     PRINT " Play it again? (Y/N) ";:ANS$=INPUT$(1)
491     IF ANS$="Y" OR ANS$="y" THEN GOTO 410 ELSE GOTO 65000
65000 ' Return to Magazette
65001 LOCATE 24,1:PRINT SPACE$(79);:LOCATE 24,1:PRINT "  Press ESC key to continue ";:ANS$=INPUT$(1):IF ASC(ANS$)<>27 THEN 65001
65005 END

FILES322.TXT

Disk No  322
Program Title: MORE MUSIC
PC-SIG version 1.1

A really fine collection of songs that will bring hours of fun. You can
compose and save, or play different songs. Some of the songs require a
version of BASIC to make them run.

Usage:  Entertainment.

System Requirements: A version of BASIC.

How to Start: Enter PIANO to start PIANO.COM; Enter MINWALTZ to start
MINWALTZ.EXE; To run the programs written in BASIC, please consult your
BASIC language manual for the commands needed for your specific machine
type.

File Descriptions:

PIANO    COM  Turns keyboard into piano keys to play music on
MINWALTZ EXE  Minute Waltz
ANT2     BAS  Anteater Music II demo
ANVIL    BAS  A song
ARKTRAV  BAS  Arkansas Traveler
BACH     BAS  Classic: A song by Bach
BLUESBOX BAS  Part of MUSICBOX.BAS
BOUREE   BAS  A song
CHOPIN1  BAS  Classic: A song by Chopin
CLASSICS BAS  Menu for the selection of CLASSIC songs
DANCE    BAS  Dance of the Watchacallit
ELEPHANT TUN  Baby Elephant Walk song that is part of TUNE.BAS
HAPPYB   BAS  Happy Birthday song
HEARING  BAS  Hearing test
HUNGRHAP BAS  Hungarian Rapsody
IBMSONG  BAS  IBM fight song
JSB      BAS  Sonata VI in E Major, 1st Movement. by J.S. Bach
JSB      MUS  Same as JSB.BAS
JUKEBOX  BAS  Music menu program with a colection of songs
LIEBESTR BAS  Franz Liszt
LUDWIG   BAS  Classic: Song by Bach [Ludwig]
MAGDALEN BAS  Classic: From The Little Notebook For Anna Magdalena Bach
MESSIAH  BAS  Messiah
MINUET   BAS  Classic: Minuet by J.S. Bach
MTN-KING BAS  A song
MUSICBOX BAS  Compose your song and save to disk [requires graphics]
NUTCRAKR BAS  Nutcracker Suite
NYLOGO   BAS  New York PC Users Group song and graphics demo [graphics]
PRAELUD1 BAS  A song
PRAELUD2 BAS  A song
RAIL     BAS  Classic: I've Been Working On The Railroad
SCALES   BAS  Plays different music scales
SFG-BACH BAS  Classic: Solfeggietto by Bach
SIREN    BAS  Alarm Siren
SOUNDS   BAS  Different sounds
SYMPH-5  BAS  A symphony
SYNTH    BAS  Demo
TRAUMERI BAS  Traumerei
TUNE     BAS  Plays music files [ELEPHANT.TUN]
WILLTELL BAS  Classic: William Tell Overture
XMAS     BAS  Collection of Xmas songs

PC-SIG
1030D E Duane Avenue
Sunnyvale Ca. 94086
(408) 730-9291
(c) Copyright 1987,88 PC-SIG, Inc.


GO.TXT

╔═════════════════════════════════════════════════════════════════════════╗
║                    <<<< Disk No 322  More Music >>>>                    ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║   To run the program PIANO.COM, type:                                   ║
║                  PIANO (press enter)                                    ║
║                                                                         ║
║   To run the program MINWALTZ.EXE, type:                                ║
║                  MINWALTZ (press enter)                                 ║
║                                                                         ║
║ To run the programs written in BASIC, please consult your BASIC         ║
║ language manual for the commands needed for your specific machine type. ║
║                                                                         ║
╚═════════════════════════════════════════════════════════════════════════╝

HAPPYB.BAS

5 FOR X%=1 TO 15:Y$=INKEY$:NEXT X%
6 IF INKEY$="" THEN 6
10 PLAY "t120 l4 mfmn"
20 PLAY "o4 c8 c8 d c f e2"
30 PLAY "   c8 c8 d c g f2"
40 PLAY "   c8 c8 o5 c o4 a f e d2"
50 PLAY "t90 b-8 b-8 a f g f2"
58 FOR X%=1 TO 15:Y$=INKEY$:NEXT X%
59 IF INKEY$="" THEN 59
60 CHAIN "A:PLOTTER

HEARING.BAS

10 KEY OFF: CLS: LOCATE 1,22: PRINT "HEARING EVALUATION"
20  LOCATE 2,24: PRINT "E. WEISSBERGER"
30 LOCATE 3,24: PRINT "version 6-15-82"
40 COLOR 0,7,0
50 PRINT " While this evaluation may be interesting, it is not a medically "
60 PRINT "                   sound evaluation.                             "
70 COLOR 7,0,0
80 PRINT
90 PRINT "You will hear a tone (or not hear it) depending on your hearing."
100 PRINT "Your response will be monitored to control tone frequency."
110 COLOR 0,7,0
120 PRINT " Indicate that you hear the tone by typing Y "
130 COLOR 7,0,0
140 LOCATE 15,15: PRINT "Type any key to continue"
150 A$ = INKEY$: IF A$ = "" THEN 150 ELSE 160
160 CLS: INPUT "What is your first name? ",N$
170 FOR I = 1 TO 1000: NEXT I
180 R = 1000: S = 125
190 FOR I = 5 TO 30 STEP 1
200 TIME$ = "00:00:00"
210 SOUND I*R,50
220 A$ = INKEY$: IF A$ = "" AND TIME$ < "00:00:05" THEN 220 ELSE IF A$ = "Y" OR A$ = "y" GOTO 240 ELSE IF TIME$ => "00:00:05" THEN GOTO 230
230 F1 = I - 1: I = 30
240 NEXT I
250 FOR J = 1 TO 7
260 TIME$ = "00:00:00"
270 SOUND (F1*R + J*S),50
280 A$ = INKEY$: IF A$ = "" AND TIME$ < "00:00:05" THEN 280 ELSE IF A$ = "Y" OR A$ = "y" GOTO 300 ELSE IF TIME$ => "00:00:05" THEN GOTO 290
290 F2 = J - 1: J = 7
300 NEXT J
310 FR = R*F1 + S*F2
320 PRINT USING "&, your upper hearing limit is ##### hertz ";N$,FR
330 PRINT
340 PRINT "Will you run this program again (Y/N)?"
350 A$ = INKEY$: IF A$ = "" THEN 350 ELSE IF A$ = "Y" OR A$ = "y" THEN CLS: GOTO 190 ELSE CLS: KEY ON: END

HUNGRHAP.BAS

1 'HUNGARIAN RHAPSODIE #2  BY FRANZ LISZT   TRANSCRIBED BY NELSON FORD
10 'CLS:KEY OFF
20 PLAY"L8 T150 MN"
25 FOR J=1 TO 2
30 FOR I=1 TO 12
40  READ M$
50 'PRINT M$
60  PLAY M$
65 'INPUT X$
70 NEXT I
75 RESTORE 100
80 NEXT
100 'NOTES:
110 DATA "O4C32"
120 DATA "MS O3B O4C O3B-. O4C+16  O3B O4C O3B-. O4C16"
130 DATA "O3B O4C O3A. O4C16 O3B O4C O3A. O4C16"
140 DATA "O3B O4C E. C16 O3B O4C E. C16"
150 DATA "O3B O4C F. C16 O3B O4C F. C16"
160 DATA "MS O3B O4C O3B-. O4C+16  O3B O4C O3B-. O4C16"
170 DATA "O3B O4C O3A. O4C16 O3B O4C O3A. O4C16"
180 DATA "O3B O4C E. C16 O3B O4C E. C16"
190 DATA "O3B O4C F. C16 O3B O4C F4"
200 DATA "O2C D E F G F+ G E F G A B-"
210 DATA "O3C O2B O3C O2A O3C D E F G F+ G E"
220 DATA "F G A B- O4C O3B O4C O3A O4D2 MN E2 F2 O3 MS F4 F4 O1F4 P4"

IBMSONG.BAS

4 WIDTH 80
5 ON ERROR GOTO 9500
6 PLAY ("P64")
10 GOSUB 9000
30 B$=CHR$(2)
40 DIM N$(165)
50 DIM L$(15)
60 DIM B%(253)
70 X% = 165
80 FOR I% = 1 TO X%
90 READ N$(I%)
100 NEXT I%
110 RESTORE 790
120 FOR I% = 1 TO 15
130 READ L$(I%)
140 NEXT I%
150 RESTORE 960
160 FOR I% = 1 TO 253
170 READ B%(I%)
180 NEXT I%
181 PRINT "(Press any key to begin.)";
183 IF INKEY$ = "" THEN 183
190 CLS
200 FOR I% = 1 TO 9
210 PRINT : PRINT L$(I%)
220 NEXT I%
230 R% = 1
240 S% = 1
250 B1% = 0
260 FOR I% = S% TO 165
270 C% = B%(I%+B1%)
280 IF C% > 0 THEN GOTO 310
290 C% = -C%
300 R% = R% + 2
310 LOCATE R%,C%
320 PRINT B$
330 PLAY N$(I%)
340 LOCATE  R%,C%
350 PRINT " "
360 NEXT I%
370 IF B1% = 0 THEN 380
371 LOCATE 21,1
372 PRINT "Transcription of music and lyrics from a copy of a copy... of 'Ever Onward,'"
373 PRINT "and program written by Alden B. Johnson."
374 CHAIN "jukebox"
380 B1% = 88
390 S% = 78
400 CLS
410 COLOR 0,7
420 LOCATE 1,30
430 PRINT "Second Chorus"
440 COLOR 7,0
450 LOCATE 3,1
460 FOR I% = 10 TO 15
470 PRINT L$(I%)
480 PRINT
490 NEXT I%
500 R% = 2
510 GOTO 260
520 END
530 DATA MF T170 L8 MN O3 B4,B8,O4 D4,D8,O3 G4,G8,B4,B8,E4,E8,E4,E8
540 DATA ML E4.E4 MN P64,E8,F#4,E8,D4,E8,F#4,G8,A4,A#8,ML B4.B4.B4. MN P64
550 DATA D4.,B4,B8,O4 D4,D8,O3 G4,G8,B4,B8,E4,E8,E4,E8,ML E4.E4 MN P64
570 DATA F8,F#4,E8,D4,E8,F#4,G8,A4,B8,ML G4.P64,G4.P64,G4.G4 P64 MN,G8
590 DATA F#4,F#8,A4,A8,O4 D4,D8,O3 A4,A8,F#4,F#8,A4,A8,ML O4 D4.D4 P64 MN,D8
610 DATA D4,D8,D4,D8,D4,D8,D4,D8,D4,C8,O3 A4,F#8,D4.
630 DATA O3 D4.,E4.,F#4.,G4.,F#4.,G4.,G#4.,A4.,G4,A8,B4,G8
650 DATA A4,B8,A4,G8,E4.,ML E4.E4 P64 MN,E8,D#4,E8,G4,F#8,F#4,F8
670 DATA F#4.,F4,F#8,A4,G8,G4,F#8,G4.,F#4,G8,B4,A8,A4,G#8
690 DATA A4,E8,F#4,G8,A4.,ML A4.A4 P64 MN,D8,C#4,D8,G4.,G4.
710 DATA ML G4.G4 P64 MN,D8,E4.,F4.,ML G4.G4 P64 MN,G#8,A4,A8,A4,B8
730 DATA O4 C#4,C#8,O3 B4,A8,O4 ML D4.D4.D4 P64 MN,C8,O3 A4,F#8,D4.,E4.,F#4.,G4.
750 DATA F#4,F#8,G4,G8,G#4,G#8,A8,G#8,A8,B4,O4 C8,D4,E8,O3 B4.,A4.
770 DATA ML G4.G4.G4 MN
790 DATA"There's a feel-ing ev'ry where of big-ger things in store. Of new hor-i-zons"
800 DATA"com-ing in-to view. Our aim is clear: To make each year ex-ceed the one be-fore"
810 DATA"Stay-ing in the lead in ev'ry-thing we do. The will to win is built right in."
820 DATA"It will not be de-nied. And we will go a-head we know by work-ing side by side."
830 DATA"Ev-er On-ward, Ev-er On-ward That's the spir-it that has brought us fame."
840 DATA"We're big but big-ger we will be. We can't fail for all can see that to serve"
850 DATA"hu-man-i-ty has been our aim; Our pro-ducts now are known in ev'ry zone."
860 DATA"Our rep-u-ta-tion spark-les like a gem, We've fought our way thru and new"
870 DATA"Fields we're sure to con-quer too for the Ev-er On-ward  I B M"
880 DATA"Ev-er On-ward, Ev-er On-ward We're bound for the top to nev-er fall."
890 DATA"Right here and now we thank-ful-ly pledge sin-cer-est loy-al-ty to the"
900 DATA"cor-por-a-tion that's the best of all. Our lead-ers we re-vere,"
910 DATA"and while we're here, Let's show the world just what we think of them!"
920 DATA"So let us sing men, sing men, once or twice then sing a-gain for the"
930 DATA"                              Ev-er On-ward  I B M"
960 DATA 3,9,12,17,21,23,28,32,36,39,45,50,55,60,64,68,71,74
980 DATA -2,6,9,12,17,22,26,29,34,39,43,48,53,57,61,66,70,73,78
1000 DATA -2,3,7,10,14,18,22,26,28,32,37,40,45,49,53,57,60,65,71,75
1020 DATA -1,6,10,13,16,20,26,29,33,37,40,43,47,51,55,59,64,68,72,77
1040 DATA -1,4,7,11,16,19,22,26,32,38,43,46,50,55,61,66,70,70
1060 DATA -3,8,12,16,20,23,27,31,35,40,45,50,54,58,62,66,70,75
1080 DATA -1,5,8,10,14,18,23,27,27,32,36,40,46,50,55,59,63,65,70
1100 DATA -2,6,9,11,15,21,26,30,34,37,43,49,55,59,63,68,72
1120 DATA -3,10,15,19,23,27,32,36,40,44,46,49,53,58,60,62
1140 DATA 1,4,7,11,16,19,22,26,32,38,43,47,51,54,58,61,66,66
1160 DATA -3,8,13,17,20,25,30,33,38,44,48,52,56,59,62,65,69
1180 DATA -2,6,9,12,18,24,28,32,36,36,41,46,50,53,56,60
1200 DATA -2,7,13,18,24,30,35,40,45,50,54,59,63,68
1220 DATA -1,5,8,12,17,22,27,32,36,41,46,51,55,58,63,67
1240 DATA -31,34,37,41,46,48,50
1250 END
9000 COLOR 7,0
9010 KEY OFF
9020 CLS:SCREEN 0,1,0,0
9030 DIM H$(9)
9040 H$(1)="In the legend of IBM, there are tales of a ritual frequently performed"
9050 H$(2)="long, long ago in sales meetings, far, far away.  This ritual involved"
9060 H$(3)="young salesmen and centered around a small book of chants, or songs.  It is"
9070 H$(4)="said that these songs were a source of great inspiration to the salesforce"
9080 H$(5)="as it prepared to go out into the world. Although this ritual is no longer"
9090 H$(6)="practiced, one of the songs has nevertheless survived, being copied and"
9100 H$(7)="passed down through generation after generation of IBMers."
9110 H$(8)="The IBM Philharmonic Computer presents:"
9120 FOR I% = 1 TO 8
9130 PRINT H$(I%)
9140 NEXT I%
9150 COLOR 0,7
9160 LOCATE 9,25
9170 PRINT CHR$(201);:FOR I% = 1 TO 30:PRINT CHR$(205);:NEXT I%:PRINT CHR$(187)
9180 L$ = CHR$(186)
9190 L1$ = L$ + SPACE$(30) + L$
9200 LOCATE 10,25:PRINT L$+"       IBM Rally Song         "+L$
9210 LOCATE 11,25:PRINT L1$
9220 LOCATE 12,25:PRINT L$+"         ";
9230 COLOR 15,0:PRINT"EVER ONWARD";:COLOR 0,7
9240 PRINT "          "+L$
9250 FOR I% = 13 TO 20: LOCATE I%,25: PRINT L1$: NEXT I%
9260 LOCATE 21,25:PRINT L$+"    Written especially for    "+L$
9270 LOCATE 22,25:PRINT L$+"       IBM Corporation        "+L$
9280 LOCATE 23,25
9290 PRINT CHR$(200);:FOR I% = 1 TO 30:PRINT CHR$(205);:NEXT I%:PRINT CHR$(188)
9300 COLOR 7,0
9340 RETURN
9500 CLS
9510 PRINT "This program requires ADVANCED BASIC; Please reload, using BASICA"
9520 END

JSB.BAS

10 REM
20 REM
30 REM The unaccompanied violin sonata No. 6 in E major, 1st movement,
40 REM			by Johann Sebastian Bach,
50 REM	faithfully transcribed by Michael Baum for the IBM-PC
60 REM
70 REM Runs 4:06 minutes
80 REM
90 CLS:KEY OFF:SCREEN 0:WIDTH 80
100 COLOR 12:LOCATE 12,23:PRINT"SONATA VI in E Major, 1st Movement
110 COLOR 9: LOCATE 14,35,0:PRINT"J.S. BACH
120 A$="g#eg#e":B$="g#eg#d#":C$="g#eg#d":D$="o4aeac#":E$="o4aeao3b"
130 F$="o4g#eg#o3b":G$="o4g#eg#o3a":H$="o4f#ef#o3a":I$="o4f#ef#o3g#"
140 J$="o4eeeo3g#":K$="o4eeeo3f#":L$="o4d#ed#o3f#"
150 M$="o4c#o3ao4c#o3a":N$="o4c#o3ao4c#o3g#":O$="o4c#o3ao4c#o3g"
160 P$="o4do3ao4do3f#":Q$="o4do3ao4do3e":R$="O4C#O3AO4C#O3E"
170 S$="o4c#o3ao4c#o3d":T$="o3babd":U$="o3babc#":V$="o3aaac#"
180 W$="o3aaao2b":X$="o3g#ag#o2b"
190 PLAY "t100msp8o5l16ED#l8eo4bg#b l16ef#ed#l8eo3bg#b mll16ebf#bg#babg#bf#b eo4ed#c#o3bo4ed#c#o3bag#f#
200 PLAY "msl16ebf#bg#babg#bf#b eo4ed#c#o3bo4ed#c#o3bag#f#
210 PLAY"mlef#g#abo4c#d#ef#g#af# g#bef#g#abo5c#d#ec#d# eo4babg#babg#bf#b eo5ed#c#o4beo5c#o4ebeae
220 PLAY"ms g#bf#bg#babg#bf#b eo5ed#c#o4beo5c#o4ebeae
230 PLAY "mn g#eeed#eeef#ed#e eeg#ef#eg#eaef#e
240 PLAY "ms g#eeed#eeef#ed#e eeg#ef#eg#eaef#e
250 A$="g#eg#e
260 PLAY "xa$;xa$;xa$;xb$;xb$;xb$;xc$;xc$;xc$;xd$;xd$;xd$;xe$;xe$;xe$;
270 PLAY "xf$;xf$;xf$;xg$;xg$;xg$;xh$;xh$;xh$;xi$;xi$;xi$;xj$;xj$;xj$;
280 PLAY "xk$;xk$;xk$;xl$;xl$;xl$;
290 PLAY "mlef#ef#g#bef#g#bef# g#ag#abo4eo3g#abo4eo3g#a bo4c#o3bo4c#dg#o3bo4c#dg#o3bo4c#
300 PLAY "dbg#edo3bg#edc#do2b
310 PLAY "o3c#d#c#d#fg#c#d#fg#c#d# ff#ff#g#o4c#o3ff#g#o4c#o3ff#
320 PLAY "g#ag#abo4fo3g#abo4fo3g#a bo4g#fc#bg#af#fg#c#o3b
330 PLAY "ao4c#o3af#o4f#d#ec#cd#o3g#f# eg#ec#eg#o4c#o3g#o4ec#g#c#
340 PLAY"cd#co3g#o4g#gg#gg#d#ec# cd#co3g#o4f#ff#ff#d#ec#
350 PLAY "cd#co3g#ag#ag#ad#ec# cf#c#f#d#f#c#f#cf#d#f# o2g#o3f#o4d#o3f#o4co3f#o4d#o3f#o4co3f#o4d#o3f#
360 PLAY "o2g#o3eo4c#o3eo4eo3eo4c#o3eo4eo3eo4c#o3e
370 PLAY "o2g#o3f#o4d#o3f#o4co3f#o4d#o3f#o4co3f#o4d#o3f#
380 PLAY "o2g#o3eo4c#o3eo4eo3eo4c#o3eo4eo3eo4c#o3e
390 PLAY "o2g#o3go4c#o3go4eo3go4c#o3go4eo3go4c#o3g
400 PLAY "o2g#o3go4c#o3go4eo3go4c#o3go4eo3go4c#o3g
410 PLAY "o2g#o3g#o4c#o3g#o4d#o3g#o4c#o3g#o4d#o3g#o4c#o3g#
420 PLAY "o2g#o3f#o4co3f#o4d#o3f#o4co3f#o4d#o3f#o4co3f#
430 PLAY "c#o4c#o3bag#o4c#o3g#f#eg#ed# c#o4c#o3g#f#eg#ed#c#ec#o2b
440 PLAY "o2a#o3f#o4c#o3f#o4eo3f#o4c#o3f#o4eo3f#o4c#o3f#
450 PLAY "o2a#o3f#o4eo3f#o4c#o3f#o4eo3f#o4c#o3f#o4eo3f#
460 PLAY "o2bo4ba#g#f#bf#ed#f#d#c# o3bo4bf#ed#f#d#c#o3bo4d#o3ba
470 PLAY "o3g#o4dedg#dbdg#ded o3g#o4dedo3g#o4do3f#o4do3g#o4do3eo4d
480 PLAY "o4c#eag#aedec#eo3bo4e o3ao4ag#f#eo3ao4f#o3ao4eo3ao4do3a
490 PLAY "mso4c#eo3bo4ec#edec#eo3bo4e o3ao4ag#f#eo3ao4f#o3ao4eo3ao4do3a
500 PLAY "mno4c#o3aaag#aaabag#a aao4c#o3abao4c#o3ao4do3aba
510 PLAY "mso4c#o3aaag#aaabag#a aao4c#o3abao4c#o3ao4do3aba
520 '
530 PLAY "xm$;xm$;xm$;xn$;xn$;xn$;xo$;xo$;xo$;xp$;xp$;xp$;
540 PLAY "xq$;xq$;xq$;xr$;xr$;xr$;xs$;xs$;xs$;xt$;xt$;xt$;
550 PLAY "xu$;xu$;xu$;xv$;xv$;xv$;xw$;xw$;xw$;xx$;xx$;xx$;
560 PLAY "ml ababo3c#eo2abo3c#eo2ab o3c#dc#deac#deac#d ef#ef#go4c#o3ef#go4c#o3ef#
570 PLAY "go4ec#dec#o3a#bo4c#o3a#f#e dc#o2bo3c#df#o2bo3c#df#o2bo3c#
580 PLAY "dedef#bdef#bde f#g#f#g#ao4d#o3f#g#ao4d#o3f#g#
590 PLAY "ao4f#d#ef#d#cc#d#co3g#f# fo4bg#abg#ff#g#fc#o3b ao5c#o4abo5c#o4af#g#af#dc#
600 PLAY "o3bo5do4bo5c#do4bg#abg#fg# c#d#c#d#fg#c#d#fg#c#d# ff#ff#g#bff#g#bff#
610 PLAY "g#ag#abo5do4g#abo5do4g#a bo5do4bg#fbg#fc#bag# f#g#af#o3bo4ag#f#c#g#f#f
620 PLAY "def#do3g#o4f#edo3a#o4edc# o3bo4c#do3bfo4dc#o3bf#o4c#o3ba
630 PLAY "g#abag#babg#bf#b ff#g#abfo4do3fo4c#o3fbf f#af#c#o2ao3c#f#c#ac#f#c#
640 PLAY "fg#fc#fg#o4c#o3g#o4fc#g#o3b ao4c#o3af#ao4c#f#c#af#o5c#o4f#
650 PLAY "fg#fc#o5c#cc#cc#o4g#af# fg#fc#ba#ba#bg#af#
660 PLAY "fg#fc#dc#dc#do3g#af# fg#o4c#mnbbmlg#af#fg#c#o3b ao4c#f#o5mnc#c#mlo4abg#f#adc#
670 PLAY "o3bo4do3gf#fg#c#o2bao3c#f#g# af#bf#o4c#o3f#o4do3f#c#f#g#f
680 PLAY "f#ag#mnaaamlg#af#aea d#aeaf#ag#mnaaamlf#a g#ag#f#eo4ed#ec#eo3bo4e
690 PLAY "o3a#o4eo3bo4ec#ed#mneeemlc#e d#ed#c#o3bo4c#d#ef#g#af#
700 PLAY "bo3babg#bf#bebdb c#ef#g#abo4c#def#g#e o4ao3ag#af#aead#ac#a
710 PLAY "o2bo3d#ef#g#abo4c#d#ef#d# g#o3edec#eo2bo3eo2ao3eo2g#o3e
720 PLAY "o2ao3eo4c#o3bo4c#eag#af#c#e o2bo3f#o4d#c#d#f#ag#af#d#f#
730 PLAY "o2bo3g#babo4eg#f#g#eo3bo4e o2bo3a#o4c#o3bo4c#ea#g#a#ec#e
740 PLAY "d#ba#g#f#bf#ed#f#d#c# o3bo4bag#f#af#ed#f#d#c# o3bo4ag#f#eg#ed#c#ec#o3b
750 PLAY "ao4g#f#ed#f#d#c#o3bo4d#o3ba g#o4ec#o3bao4c#o3ag#f#af#e
760 PLAY "d#f#ao4c#o3bo4d#f#g#ag#af# g#eg#bo5eo4bg#eo3bo4eo5ed#
770 PLAY "eo4bg#edec#edeo3bo4e c#eaec#eo3bo4ec#eo3ao4e
780 PLAY "o3bo4eg#eo3bo4eo3ao4eo3bo4eo3g#o4e o3ao4ef#ed#mneeemlf#eg#e
790 PLAY "a4.b8g#4
800 PLAY "mno2l16ao4ag#l32af#f#g#f#g#f#g#f#g#f#g#f#g#l8e
810 PLAY "l16eo5ed#c#o4bo5eo4ao5eo4g#o5eo4f#o5e o4eed#c#o3bo4eo3ao4eo3g#o4eo3f#o4e
820 PLAY" mbmlt90o3eg#bo4d#t80eg#t70bo5d#t60l8e
830  PI=3.14159
840 SCREEN 1,0:COLOR 0,1
850 FOR I=50 TO 130 STEP 20
860 LINE(20,I)-(300,I)
870 NEXT
880 CIRCLE(32,70),4,2,,,1:PAINT(32,70),2
890 CIRCLE(48,70),20,2,0,PI,1
900 CIRCLE(48,70),19,2,0,PI,1
910 CIRCLE(25,70),53,2,3*PI/2,0,1.2
920 CIRCLE(25,70),52,2,3*PI/2,0,1.2
930 CIRCLE(74,60),2,2,,,1
940 CIRCLE(74,80),2,2,,,1
950 PAINT(74,80),2:PAINT(74,60),2
960 LINE(82,75)-(82,120),2
970 DRAW "bm82,107"
980 DRAW "e3rer3f3d6g4lglglgl
990 PAINT (84,115),2
1000 LINE(105,90)-(118,84),2,BF
1010 CIRCLE(140,40),11,1
1020 LINE(129,40)-(129,110),1
1030 LINE(160,50)-(160,130),3
1040 CIRCLE(183,50),11,1
1050 LINE(172,50)-(172,120),1
1060 CIRCLE(220,30),11,1:LINE(200,30)-(240,30),3
1070 LINE(209,30)-(209,100),1
1080 LINE(230,50)-(230,130)
1090 LINE(246,30)-(246,50),2
1100 LINE(246,40)-(256,36),2:LINE-(256,60),2
1110 LINE(246,50)-(256,46),2
1120 CIRCLE(275,40),11,1:LINE(264,40)-(264,110),1
1130 CIRCLE(294,40),2,1
1140 PAINT(275,40),1:PAINT(294,40),1
1150 LOCATE 18,10:PRINT"A Musical Riddle from "
1160 LOCATE 20,10:PRINT"The Art of the Fugue!"
1170 LOCATE 22,9:PRINT"(Sprechen zie Deutsch?)

JUKEBOX.BAS

10 ' LIST OF SONGS  SAVE "A:jukebox.bas"
20 CLS
25 LOCATE ,,0
30 PRINT
40 PRINT
41 PRINT "                   JUKEBOX"
50 PRINT
60 PRINT "         Choose a song from the list below:"
70 PRINT
80 PRINT "           1. America"
90 PRINT "           2. While strolling thru the park one day"
100 PRINT "           3. The Star-Spangled Banner"
110 PRINT "           4. Flight of the Bumblebee"
120 PRINT "           5. The Entertainer"
130 PRINT "           6. Do you know the way to San Jose"
140 PRINT "           7. Alfie
150 PRINT "           8. Dixie
155 PRINT "           9. The IBM Song
160 '
170 '
180 '
190 PRINT " "
200 INPUT;"         Enter your choice: (99 to End) ",TUNE
205 LOCATE ,,1
210 IF TUNE=99 THEN SYSTEM
215 IF TUNE=9 THEN CHAIN "ibmsong"
220 ON TUNE GOSUB 270,340,450,560,850,1100,1260,1430
230 GOTO 20
240 '
250 '
260 '
270 ' SONG: AMERICA
280 A$="O3L4FFGE.L8FL4GAAB-A.L8GL4F"
290 B$="GFEL1F.L4O4CCCC.O3L8B-L4AB-B-B-"
300 C$="B-.L8AL4GAL8B-AGFL4A.L8B-O4L4CL8DL16CO3B-L4AGL1F."
310 PLAY "T175XA$;XB$;XC$;"
320 RETURN
330 '
340 ' SONG: WHILE STROLLING THRU THE PARK ONE DAY
350 A$="O3L8D.L16E-L8F.L16FL8E.L16FL4B-FGEFFL8G.L16GL8F+.L16GL4O4CO3B-AEE-L8D.L16E-"
360 B$="L8F.L16FL8E.L16FL4B-L8F.L16F+L8G.L16GL8F+.L16GL4O4CL8C.O3L16B-L8A.L16G+L8A.L16GL8FL16F+L8G.L16A"
370 C$="L1B-L4B-."
380 D$="L8O4CL4D.O3FL8AL4O4D.O3AL8O4CL4B-AL1G"
390 PLAY "T150XA$;XB$;XC$;"
400 RETURN
410 '
420 '
430 '
440 ' SONG: THE STAR-SPANGLED BANNER
450 A$="O3L8E-.L16CL4O2A-O3CE-A-..O4L8C.O3L16B-L4A-CDL2E-L8E-E-O4L4C.O3L8B-L4A-L2GL8FG"
460 B$="L4A-A-E-CO2A-O3L8E-.L16CL4O2A-O3CE-L2A-O4L8C.L16O3B-L4A-CDL2E-L8E-E-"
470 C$="L4O4C.O3L8B-L4A-L2GL8FGL4A-A-E-CO2A-O4L8CCL4CD-E-L2E-L8D-C"
480 D$="O3L4B-O4CD-L2D-L8D-D-L4C.O3L8B-L4A-GGL8FGL4A-CDL2E-"
490 E$="L8E-E-L4A-A-L8A-G"    ' CHORUS
500 F$="L4FFFB-O4L8D-CO3B-A-L4A-G..L8E-E-L4A-.L8B-O4CD-L2E-O3L8A-B-O4L4C.L8D-L4O3B-L2A-"
510 PLAY "T104XA$;XB$;XC$;XD$;T96XE$;XF$;"
520 RETURN
530 '
540 '
550 ' SONG: FLIGHT OF THE BUMBLE BEE
560 A$="O4L16ED+DC+CFED+ED+DC+CC+DD+ED+DC+CFED+"
570 B$="ED+DC+CC+DD+ED+DC+DC+CO3BO4CC+DD+EFED+ED+DC+DC+CO3BO4CC+DD+EF+GG+"
580 C$="AG+GF+FB-AG+AG+GF+FF+GG+AG+GF+FB-AG+AG+GF+FF+GG+AG+GF+GF+FE"
590 D$="FF+GG+AB-AG+AG+GF+GF+FEFF+GG+AB-AG+L8AL16O3AAAAAAB-B-O4CO3B-O4B-O3B-O4CO3B-"
600 F$="L8O3AL16AAAAAAB-B-O4CO3B-O4B-O3B-O4CO3B-AB-AG+AB-AG+AB-AG+AB-AG+"
610 G$="AB-BO4CC+CO3BB-AB-BO4CC+CO3BB-L8AL16O4DDDDDDE-E-FE-O5E-O4E-FE-"
620 H$="L8DL16DDDDDDE-E-FE-O5E-O4E-FE-DE-DC+DE-DC+DE-DC+DEDC+"
630 I$="DE-EFF+FEE-DE-EFF+FEE-DC+CO3BB-O4E-DC+DC+CO3BB-BO4CC+DC+CO3BO4CO3BB-A"
640 J$="B-BO4CC+CC+DD+ED+DC+DC+CO3BO4CO3BB-AG+GF+FEFED+EFED+EFED+EFED+"
650 K$="EFED+EFED+EFED+EFED+L8EP8P4P4O5E8L32C.D.C."
660 L$="MSO4A8L32MNF.G.F.MSL8AO5CEP8L16O5EECCO4AAFFAAO5CCE8P8MLO4L64EFEFEFEFEFEFEFEEFEFEFEFEFEFEFE"
670 M$="O5EFEFEFEFEFEFEFEEFEFEFEFEFEFEFEO4EFEFEFEFEFEFEFEEFEFEFEFEFEFEFEEFEFEFEFP8"
680 N$="MNL16O4ED+DC+CFED+ED+DC+CC+DD+"
690 O$="ED+DC+CFED+ED+DC+CC+DD+ED+DC+DC+CO3BO4CC+DD+EFED+ED+DC+DC+CO3B"
700 P$="O4CC+DD+EF+GG+AG+GF+FB-AG+AG+GF+FF+GG+AG+GF+FB-AG+AG+GF+FF+GG+"
710 Q$="AG+GF+GF+FEFF+GG+AB-AG+AG+GF+FF+GG+ABO5CDEFED+ED+DC+CFED+"
720 R$="ED+DC+CC+DD+ED+DC+CFED+ED+DC+CC+DD+EP16O3G+AB-BO4CC+DC+CO3BO4CO3BB-A"
730 S$="G+AA+BO4CC+DD+EFED+EFED+EP16G+AB-BO5CC+DC+CO4BO5CO4BB-AG+AA+BO5CC+DD+"
740 T$="EFED+EF+GG+AG+GF+GF+FEFED+DC+CO4BB-AG+GF+GF+FEFED+DC+CO3BB-"
750 U$="AB-AG+AB-AG+AB-AG+ABO4CDEFED+EFED+EFED+EF+GG+A8P8O3EFF+G"
760 V$="G+AB-BO4CC+DD+EFF+GG+AB-BO5CC+DD+EF+GG+A8P8P4MSO4A4P4O3A4"
770 '
780 '
790 PLAY "T144XA$;XB$;XC$;XD$;XF$;XG$;XH$;XI$;XJ$;XK$;XL$;XM$;XN$;XO$;XP$;XQ$;XR$;XS$;XT$;XU$;XV$;"
800 RETURN     ' WHEW!
810 '
820 '
830 '
840 'SONGS:  THE ENTERTAINER
850 A$="O5L8DECO4L4AL8BL4GL8DECO3L4AL8BL4G"
860 B$="O3L8DECO2AABAA-G2O3L4GL8DD+"
870 C$="O3L8EL4O4CO3L8EO4L4CO3L4EO4L2C.O4L8CDD+ECDL4EO3L8BO4L4D"
880 D$="L2C.O3L8DD+EO4L4CO3L8EO4L4CO3L4EO4L2C.O3L8AG"
890 E$="O3L8F+AO4CL4EL8DCO3AO4L2D.O3L8DD+EO4L4CO3L8EO4L4CO3L4E"
900 F$="O4L2C.L8CDD+ECDL4EO3L8BO4L4DL2C.L8CD"
910 G$="O4L8ECDL4EL8CDCECDL4EL8CDCECDL4EO3L8BO4L4D"
920 H$="O4L2C.O3L8DD+"
930 H1$="O4L2C.L8EFF+"
940 I$="O4L4GL8AL4GL8EFF+G4AG4ECO3G"
950 J$="O3L8ABO4CDEDCDO3GO4EFGAGEF"
960 K$="O4L8G4AGGEFF+G4AG4GAA+"
970 L$="O4L8BB4B4AF+DG2.EFF+G4AG4EFF+"
980 M$="O4L8G4AG4ECO3GABO4CDEDCD"
990 N$="O4L8C2.O3GF+GO4C4O3AO4C4O3AO4CO3AGO4CEG4ECO3G"
1000 O$="O3L4AO4CE8DC2."
1010 O1$="O4L8EFF+"
1020 O2$="O3L8DD+"
1030 O3$="O4L2CL4C"
1040 PLAY "mnt130XA$;XB$;XC$;XD$;XE$;XF$;XG$;XH$;XC$;XD$;XE$;XF$;XG$;XH1$;XI$;XJ$;XK$;XL$;XM$;XN$;XO$;XO1$;XI$;XJ$;XK$;XL$;XM$;XN$;XO$;XO2$;XC$;XD$;XE$;XF$;XG$;XO3$;"
1050 RETURN
1060 '
1070 '
1080 '
1090 'SONG: DO YOU KNOW THE WAY TO SAN JOSE?
1100 A$="O3L4AGAO4CDO3G8GF8GGF8G8AF"
1110 B$="O3L4G.CCC8CC8CC8CAGAO4C"
1120 C$="O4L4DO3G8GF8GGF8G8AFG.CCC8"
1130 D$="O3L4CC8CC8CP4O4E8D8C8O3BABO4CD."
1140 E$="P4O4L4E8D8C8O3BA.O4D8O3BG8A1P2"
1150 F$="O3L4A8A8AA8A8AB8O4DD8FE1"
1160 G$="O3L4AB8O4FD.EC8DO3B8O4C2P8O3A8B8AO4C2"
1170 H$="O3L4A8B8AO4C2O3A8B8AO4C.O3A8BA8G1P4"
1180 I$="O3L4AGAO4CDO3G8GF8GP1"
1190 J$="O3L4AGAO4CDO3G8GF8GP1O3AGAO4CDO3G8GF8G"
1200 PLAY "MNT180XA$;XB$;XC$;XD$;XE$;XF$;XG$;XH$;XI$;XJ$;"
1210 RETURN
1220 '
1230 '
1240 '
1250 'SONG: ALFIE
1260 A$="O3L16GFEFG2.L8FO4C2P8O3GAG4CBAO2D4O3C"
1270 B$="O3L8D2P4EGO4ECC4.L16DCO3BO4CD8.O3GG4.P2"
1280 C$="O3L8ADE4FGA4AO4DO3B2O4C4O3ADE4FGA2"
1290 D$="O3L16A4A2GFEFG2.F8O4C2.O3G8A8"
1300 E$="O3L8G4CBAO2D4O3CD2P4EGO4ECC4.L16DCO3BO4CD8."
1310 F$="O3L8G16G4.P4.O4CO3ADE4FGA4AO4DO3B2P8O4C"
1320 G$="O4L8D4.O3BF+4G4E-2DEGBO4DE4.O3BB2"
1330 H$="P2P4P8O3L8DO4D4.O3BF+AGE-2DEGBO4C4.O3BO4C4O3B"
1340 I$="O3L16B4.A8B4A4GFEFG2.F8O4C2.P8"
1350 J$="P8L8O3ABO4CO3DCO4DCO3G2P8O4DC4P8O3ABO4CO3DCO4DA"
1360 K$="O3L8G4.ABO4C4.D4E2.O3ADE4FGA4AO4DO3B2O4C4"
1370 L$="O3L8ADE4FGA4AGG2.P1AGG2."
1380 PLAY "MLT90XA$;XB$;XC$;XD$;XE$;XF$;XG$;XH$;XI$;XJ$;XK$;XL$;"
1390 RETURN
1400 '
1410 '
1420 '
1430 ' SONG: DIXIE
1440 A0$="t255 o3g8e8 c4c4l8cdef l4ggge"
1450 A1$="t255 o3aaa3g8 a3l8gabo4cde2p8 c8o3g8o4c2p8 o3g8e8g2p8 d8e8c2p6"
1460 A2$="t255 l4o3go4ce dco3ao4c o3ao4d2o3ao4d2 o3go4cedc o3abo4c"
1470 A3$="t255 l4o3ageo4c o3eed ec2ed2 feg o4cedc o3ec2ed2 feg o4c2e2d2c1"
1480 PLAY A0$+A1$+A2$+A3$
1490 RETURN
1500 '
1510 '
1520 ' SONG: ????

LIEBESTR.BAS

1 'LIEBESTRAUM  BY FRANZ LISZT   TRANSCRIBED BY NELSON FORD
10 'CLS:KEY OFF
20 PLAY"L8 T180 MN"
25 FOR J=1 TO 2
30 FOR I=1 TO 8
40  READ M$
50 'PRINT M$
60  PLAY M$
65 'INPUT X$
70 NEXT I
75 RESTORE 100
80 NEXT
100 DATA "O2D B O3D G B G D O2B O3D G B G D
110 DATA "O2B O3D+ F+ B F+ D+ O2B O3D+ F+ B O2B16. O3F+32 D+ O2B O3D G+ B O2B16. O3G+32 D
120 DATA "C D G+ O4C O2B16. O3G+32 D O2B O3C+ E A E C+ O2E O3C+ E A O2E16. O3E32 C+
130 DATA "O2E O3E16 C+16 O2F+ O3F+16 C+16 O2G O3G16 C+16 O2B O3D F+ B O2A16. O3F+32 D O2G B O3D G D O2B
140 DATA "G B O3D G O2D16. O3D32 O2B B O3D G B G D O2B O3D G B G D"
150 DATA "O2B O3D+ F+ B F+ D+ O2B O3D+ F+ B O2B16. O3F+32 D+ O2B O3D G+ B O2B16. O3G+32 D C D G+ O4D O2B16. O3G+32 D"
160 DATA "E A O4C+ E C+ O3A O2E O3C+ E A O2E16. O3E32 C+ O2E O3C+ O2F+ O3C+ O2G O3C+"
170 DATA "O2B O3D F+ B O2A16. O3F+32 D O2G B O3D G D O2B G B O3D G D O2B O3G2."

LUDWIG.BAS

10 A$="o4ed#ed#eo3bo4dco3ao2eao3ceabo2eg#o3eg#bo4co2eao3eo4ed#ed#eo3bo4dco3ao2eao3ceabo2eg#o3do4co3ba"
20 A1$="o2ea"
30 B$="o3ceabo2eg#o3do4co3bao2eao3bo4cdeo2go3cgo4fedo2gbo3fo4edco2eao3go4dco3bo2eo3ep64eo4e"
40 C$="o3eo4ep64eo5eo4d#ed#ed#ed#"
50 D$="o3bo4cdeo2go3cgo4fedo2gbo3fo4edco2eao3eo4dco3bo2eo3eo4e"
60 E$="l6mso4cp64cp64cmll24o3fao4cl12o2ao3co2ao4fep64edb-ap64agfedco3b-al24bagabl12o4co2ao3co2ao4dd#eo2ao3co4efo3ao4co3e"
61 G$="mnl12o1aaaaao4c#.o1aaaaao4do1aaao4efp64fo1aaao4fo1ao4e.o1aaaaao4do1aaao4co3bao1aaao3ao1ao3ao1ao4co1ao3bo1g#o3ao1aaaaao4c#.o1aaaaao4do1aaao4efp64fo1aaao4fo1ao4f.o1b-b-b-b-b-o4e-o1b-b-b-o4dco3b-o1b-b-b-o3ao1b-o3g#o1bbbo3g#o1bmlo3a4p4b8p8"
70 F$="l16o4cdco3bo4cdo3bo4cgo3bo4go3ao4go3bo4gcgdgego5co4bagfedgfdcgo3bo4go3cao4go3bo4gcgdgego5co4bagfedgfdeged#eo3bo4edeo3bo4edeo3bo4ed#e.l6o3bo4ed#ed#ed#el12"
80 G$="mnl12o1aaaaao4c#.o1aaaaao4do1aaao4efp64fo1aaao4fo1ao4e.o1aaaaao4do1aaao4co3bao1aaao3ao1ao3ao1ao4co1ao3bo1g#o3ao1aaaaao4c#.o1aaaaao4do1aaao4efp64fo1aaao4fo1ao4f.o1b-b-b-b-b-o4e-o1b-b-b-o4dco3b-o1b-b-b-o3ao1b-o3g#o1bbbo3g#o1bo3a4p4b8p8"
90 H$="o2ao3ceao4cedco3bao4ceao5cedco4bao5ceao6cedco5bb-ag#gf#fed#dc#co4bb-ag#gf#fed#eo3bo4dco3ao2eao3ceabo2eg#o3eg#bo4co2eao3e"
95 PLAY"t110"
100 PLAY "mll12xa$;xa1$;p32xa$;xa1$;xb$;xc$;xa$;xa1$;p32xd$;xc$;xa$;xa1$;p32xe$;"
110 PLAY "xf$;p32xa$;xa1$;xd$;xc$;xa$;"
120 PLAY "xg$;xh$;xa$;xa1$;xd$;xc$;xa$;"
130 FOR I=1 TO 1000:NEXT I
140 CHAIN"A:CLASSICS.BAS"

MAGDALEN.BAS

2 CLS:ZA$="From 'The Little Notebook for"
3 ZB$="Anna Magdalena Bach'"
4 ZC$="by J. S. Bach"
6 LOCATE 10,40-LEN(ZA$)/2:PRINT ZA$
7 LOCATE 11,40-LEN(ZB$)/2:PRINT ZB$
8 LOCATE 12,40-LEN(ZC$)/2:PRINT ZC$
10 A$="o3D..o2GABo3CD..o2Gp8Gp8"
20 B$="o3E..CDEF#G..o2Gp8Gp8"
30 C$="o3C..DCo2BAB..o3Co2BAGF#..GABGBA...p4"
35 C1$="o3C..DCo2BAB..o3Co2BAGF#..GABGA....p4"
40 D$="o3C..DCo2BAB..o3Co2BAGA..BAGF#G....p4"
50 E$="mlo3B..GABGA..DEF#DG..EF#GDC#..o2Bo3C#o2Ap8ABo3C#DEF#G..F#..E..F#..o2A..o3C#..D....p4mn"
60 F$="D..o2GF#Gp8o3E..o2GF#Gp8o3D..C..o2B..AGF#GAp8DEF#GABo3C..o2B..A..Bo3Do2G..F#..G....p4"
70 G$="o3A...p8GF#EDp64A...p8GF#EDp64"
80 H$="o2F#GA..G..F#..E..A..F#..D.."
90 I$="o2F#GA..G..F#..E..A..D..p4"
100 J$="o3C#DEp8C#DEp8A..Ep8Ep8E..A..Ep8A..Ep8DC#o2BAB..Ep8"
110 K$="o3E..D#p9o2E..l10o3D....l8C#..o3A..G#..E..D#p9o2E..l10o3D....l8C#..A..G#..ED#C#D#ED#C#D#E.p16mno2G#..A..o3D..C#DE..o2A..D..C#DE..o1A..p4"
120 L$="o2F#GA..G..F#..p2E..A..o3D.."
130 PLAY"mbmnt195l8"
140 PLAY G$:PLAY H$
150 PLAY G$:PLAY I$
160 PLAY G$:PLAY H$
170 PLAY G$:PLAY I$
180 PLAY J$:PLAY K$
190 PLAY G$:PLAY H$
200 PLAY G$:PLAY L$
205 PLAY "p1p1p1"
210 PLAY"mbmnt150l8"
220 PLAY A$:PLAY B$:PLAY C1$
230 PLAY A$:PLAY B$:PLAY D$
250 PLAY A$:PLAY B$:PLAY C$
260 PLAY A$:PLAY B$:PLAY D$
270 PLAY E$:PLAY F$
280 PLAY A$:PLAY B$:PLAY C1$
290 PLAY A$:PLAY B$:MID$(D$,LEN(D$)-1,2)=". ":PLAY D$
295 FOR I=1 TO 1000:NEXT I
300 CHAIN "A:CLASSICS.BAS"

MESSIAH.BAS

1 'MESSIAH
10 'CLS:KEY OFF
20 PLAY"L4 T180 MN"
25 FOR J=1 TO 2
30 FOR I=1 TO 5
40  READ M$
50 'PRINT M$
60  PLAY M$
65 'INPUT X$
70 NEXT I
75 RESTORE 100
80 NEXT
100 'NOTES:
110 DATA "O3E F G E  A G2.  E F G E  AG2 G8 G8
120 DATA "A G2 G8 G8  A G2 G8 G8  A G F E
130 DATA "D2 C2  G2 A B  O4C8 O3C8 O4C C8 C8 O3B
140 DATA "A G2 G8 G8  A G2 G8 G8  A G2 G8 G8
150 DATA "A G F E  D. C8 C2 C1

MINUET.BAS

10 DIM TUNE$(4)
20 CLS:WIDTH 40:KEY OFF
30 LOCATE 11,17:PRINT "Minuet"
40 LOCATE 12,15:PRINT "J.S. Bach"
90 REM '--Read music from data-------------------------------------------
100 FOR MEASURE=1 TO 32
110 READ NOTES$
120 TUNE$(MEASURE\8)=DUNE$(MEASURE\8)+NOTES$
130 NEXT MEASURE
190 '--Play the tune-----------------------------------------------------
200 PLAY "xTUNE$(0); xTUNE$(1); xTUNE$(2); xTUNE$(3); xTUNE$(4);"
300 FOR I=1 TO 1000:NEXT I
400 CHAIN"A:CLASSICS.BAS"
1000 '--Music, measure by measure----------------------------------------
1010 DATA T110 L8 MS D4 MN O3 G A B O4 C
1020 DATA D4 O3 MS G4 MN G4
1030 DATA O4 MS E4 MN C D E F#
1040 DATA G4 O3 MS G4 MN G4
1050 DATA MS O4 C4 MN D C O3 B A
1060 DATA MS B4 MN O4 C O3 B A G
1070 DATA MS F#4 MN G A B G
1080 DATA B4 A2
1090 DATA O4 MS D4 MN O3 G A B O4 C
1100 DATA D4 O3 MS G4 G4
1110 DATA O4 E4 MN C D E F#
1120 DATA G4 O3 MS G4 G4
1130 DATA O4 C4 MN D C O3 B A
1140 DATA B4 O4 C O3 B A G
1150 DATA A4 B A G F#
1160 DATA G2.
1170 DATA O4 B4 G A B G
1180 DATA A4 D E F# D
1190 DATA G4 E F# G D
1200 DATA C#4 O3 B O4 C# O3 A4
1210 DATA A B O4 C# D E F#
1220 DATA MS G4 MN F#4 E4
1230 DATA MS F#4 O3 A4 O4 C#4
1240 DATA MN D2.
1250 DATA D4 O3 G F# G4
1260 DATA O4 E4 O3 G F# G4
1270 DATA O4 D4 C4 O3 B4
1280 DATA A G F# G A4
1290 DATA D E F# G A B
1300 DATA O4 C4 O3 B4 A4
1310 DATA B O4 D O3 G4 F#4
1320 DATA G2.

MTN-KING.BAS

10 'CLS:KEY OFF
20 PLAY"L8 T150 MS"
25 FOR J=1 TO 1
30 FOR I=1 TO 10
40  READ M$
50 'PRINT M$
60  PLAY M$
65 'INPUT X$
70 NEXT I
75 RESTORE 100
80 NEXT
100 DATA "O3D E F G A F A4 G+ E G+4 G E- G4"
110 DATA "D E F G A F A O4D C O3A F A O4C2"
120 DATA "O3D E F G A F A4 G+ E G+4 G E- G4"
130 DATA "D E F G A F A O4D O3A F A O4D O3D2"
140 DATA "A B O4C+ D E C+ E4 F C+ F4 E C+ E4 O3A B O4C+ D E C E4 F C+ F4 E2"
150 DATA "O3A B O4C+ D E C+ E4 F C+ F4 E C+ E4 O3A B O4C+ D E C E4 F C+ F4 E2"
160 DATA "O3D E F G A F A4 G+ E G+4 G E- G4"
170 DATA "D E F G A F A O4D C O3A F A O4C2"
180 DATA "O3D E F G A F A4 G+ E G+4 G E- G4"
190 DATA "D E F G A F A O4D O3A F A O4D O3D2"

MUSICBOX.BAS

100 REM         ----- BLUES -----
101 '           TYPED IN WITH MODIFICATIONS BY D.G. PATTERSON
102 '           SEE SOFTSIDE MAGAZINE FOR INSTRUCTIONS
106 '           PROGRAM TO WRITE MUSIC.---TAKEN FROM SOFTSIDE #34  NOV 1982
107 '           SOME FUNCTIONS NOT ACTIVATED - THEY WILL BE ADDED IN FUTURE
108 '           ISSUES OF SOFTSIDE AND POSTED TO PCanada....
116 CLS:KEY OFF:DEFINT A-Z:MAX=2000:DIM NCURS(38),SHARP(38),FLAT(38),STAFF(1884),NOTE1(38),NOTE2(38),NOTE4(38),NOTE8(38),NOTE16(38),NOTE32(38),NOTE64(38),BLOCK(99,2),M$(2000),PCL(154),PCC(154),PCR(154)
118 DIM FU$(10)
120 DIM REST1(38),REST2(38),REST4(38),REST8(38),REST16(38),REST32(38),REST64(38),PIANOL(104),PIANOR(104),PIANOC(104),DOT(38),NDY(35),BK(5):DEF FNU$(A$)=CHR$(ASC(LEFT$(A$,1))+32*(LEFT$(A$,1)>"Z"))
124 DEF FNL2!(X)=LOG(X)/LOG(2):DEF FNS$(N$)=RIGHT$(N$,LEN(N$)-1):TRUE=-1:FALSE=0:FLAT=FALSE:SHARP=FALSE:OC=3:CN$="C":SCALE$="CDEFGAB":NN=7*OC-6
128 STAFFX=5:STAFFY=55:PTN$="":X$="C C#D E-E F F#G A-A B-B ":FOR X=1 TO 5:PTN$=PTN$+X$:NEXT:PSCALE$="C.D.EF.G.A.B":PTNPTR=(12*(OC-1)+INSTR(PSCALE$,CN$)-SHARP+FLAT)*2-1
132 KBX=123:KBY=6:NX=6:NY=160:RX=6:RY=180:MIDC=30:NDX=STAFFX+49:RDX=NDX-2:RDY=STAFFY
135 NCOUNT=0:TEMPO=100:BCOUNT=0:DOTTED=FALSE:NOTE=TRUE:PREVNOTE=NOTE:TIME=4:PREVTIME=TIME:PREVDOT=DOTTED:PREVPTR=PTNPTR:BCOUNT=0:BPOS=0:NCOUNT=1:NPOS=1:INSERTING=FALSE:GOSUB 13000:CLS:X$="Just a moment...":LOCATE 12,20-LEN(X$)/2:PRINT X$
140 GOSUB 16170:GOSUB 2000:GOSUB 15000:GOSUB 14000
141 '
142 '           ***** MAIN INPUT LOOP:ACCEPT VALID CHARACTERS;REJECT  *****
143 '           ***** INVALID ONES;BRANCH TO APPROPRIATE SUBROUTINES. *****
144 '
1000 IN$=INKEY$:IF IN$="" THEN 1000
1010 IF FNU$(IN$)="S" THEN GOSUB 18000:GOTO 1150
1020 IF FNU$(IN$)="L" THEN GOSUB 17000:GOTO 1150
1030 IF FNU$(IN$)="P" THEN GOSUB 19000:GOTO 1150
1040 IF FNU$(IN$)="T" THEN GOSUB 20000:GOTO 1150
1045 IF FNU$(IN$)=" " THEN GOSUB 11000:NOTE=NOT NOTE:GOTO 1150
1050 IF FNU$(IN$)="N" THEN GOSUB 21000:GOTO 1150
1055 IF FNU$(IN$)="C" THEN GOSUB 22000:GOTO 1150
1060 IF FNU$(IN$)=CHR$(13) THEN GOSUB 16000:GOTO 1150
1065 IF FNU$(IN$)=CHR$(3) THEN GOSUB 23000:GOTO 1150
1067 IF FNU$(IN$)="M" THEN RUN "MENU"
1070 IF ASC(LEFT$(IN$,1))<>0 THEN 1000 ELSE IN=ASC(RIGHT$(IN$,1))
1080 IF IN<59 OR (IN>68 AND IN<72) OR IN=73 OR IN=79 OR IN>80 THEN 1000
1090 IF IN=72 THEN GOSUB 3000:GOTO 1150
1100 IF IN=75 THEN GOSUB 6000:GOTO 1150
1110 IF IN=77 THEN GOSUB 5000:GOTO 1150
1120 IF IN=80 THEN GOSUB 4000:GOTO 1150
1140 ON IN-58 GOSUB 8000,7000,50000,50000,50000,50000,50000,50000,9000,10000
1150 GOSUB 2000
1160 GOSUB 12000:GOTO 1000
1989 END
1990 '
1992 '          ***** CALCULATIONS OF NEW VALUES FOR OC     *****
1993 '          ***** SHARP,FLAT,NN,N$, AND AC$. THE        *****
1994 '          ***** VALUE OF PTNPTR IS THE SOLE PARAMETER *****
1995 '          ***** OF THIS ROUTINE.                      *****
1998 '
2000 N$=MID$(PTN$,PTNPTR,2):CN$=LEFT$(N$,1):AC$=RIGHT$(N$,1):IF AC$=" " THEN SHARP=FALSE:FLAT=FALSE
2030 IF AC$="#" THEN SHARP=TRUE:FLAT=FALSE
2040 IF AC$="-" THEN SHARP=FALSE:FLAT=TRUE
2060 OC=((PTNPTR-1)/2-INSTR(PSCALE$,CN$))/12+1:NN=7*OC+INSTR(SCALE$,CN$)-7:RETURN
2990 '
2992 '          ***** INCREMENT PITCH OF NOTE ONE HALF-STEP *****
2998 '
3000 GOSUB 11000:PTNPTR=PTNPTR+2:IF PTNPTR>119 THEN PTNPTR=1
3010 RETURN
3990 '
3992 '          ***** DECREMENT PITCH ONE HALF-STEP. *****
3998 '
4000 GOSUB 11000:PTNPTR=PTNPTR-2:IF PTNPTR<1 THEN PTNPTR=119
4010 RETURN
4990 '
4992 '          ***** MOVE TIME INDICATOR TO THE RIGHT. THIS   *****
4994 '          ***** SHORTENS THE LENGTH OF THE NOTE OR REST. *****
5000 GOSUB 11000:IF NOTE THEN 5050
5020 IF TIME=64 THEN TIME=1 ELSE TIME=TIME*2
5030 RETURN
5050 IF DOTTED THEN DOTTED=FALSE:RETURN
5060 DOTTED=TRUE:IF TIME=64 THEN TIME=1 ELSE TIME=TIME*2
5070 RETURN
5990 '
5992 '          ***** MOVE TIME INDICATOR TO THE LEFT. *****
5998 '
6000 GOSUB 11000:IF NOTE THEN 6040
6010 IF TIME=1 THEN TIME=64 ELSE TIME=TIME/2
6020 RETURN
6040 IF NOT DOTTED THEN DOTTED=TRUE:RETURN
6050 DOTTED=FALSE:IF TIME=1 THEN TIME=64 ELSE TIME=TIME/2
6060 RETURN
6990 '
6992 '          ***** MOVE UP AN OCTAVE *****
6998 '
7000 GOSUB 11000:PTNPTR=PTNPTR+24:IF PTNPTR>119 THEN PTNPTR=PTNPTR-120
7010 RETURN
7990 '
7992 '          ***** MOVE DOWN AN OCTAVE. *****
7998 '
8000 GOSUB 11000:PTNPTR=PTNPTR-24:IF PTNPTR<1 THEN PTNPTR=PTNPTR+120
8010 RETURN:GOSUB 11000 :IF NPOS=1 THEN RETURN
8990 '
8992 '          ***** MOVE TO THE PREVIOUS NOTE IN THE BUFFER *****
8998 '
9000 GOSUB 11000:IF NPOS=1 THEN RETURN
9010 NPOS=NPOS-1:IF BPOS>1 THEN IF NPOS=BLOCK(BPOS-1,2) THEN BPOS=BPOS-1
9020 C7$=MID$(M$(NPOS),10,2):N7$=LEFT$(C7$,1):TEMPO=VAL(MID$(M$(NPOS),2,3)):OC7=VAL(MID$(M$(NPOS),6,1)):DOTTED=(RIGHT$(M$(NPOS),1)="."):TIME=VAL(MID$(M$(NPOS),8,2)):NOTE=NOT (ASC(N7$)=80)
9060 SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
9990 '
9992 '          ***** MOVE TO THE NEXT NOTE IN THE BUFFER. *****
9998 '
10000 GOSUB 11000:IF NPOS>=NCOUNT-1 THEN NPOS=NCOUNT:PTNPTR=49:TIME=4:DOTTED=FALSE:NOTE=TRUE:RETURN
10010 NPOS=NPOS+1:IF NPOS=BLOCK(BPOS+1,1) THEN BPOS=BPOS+1
10020 C7$=MID$(M$(NPOS),10,2):N7$=LEFT$(C7$,1):TEMPO=VAL(MID$(M$(NPOS),2,3)):OC7=VAL(MID$(M$(NPOS),6,1)):DOTTED=(RIGHT$(M$(NPOS),1)="."):TIME=VAL(MID$(M$(NPOS),8,2)):NOTE=NOT (ASC(N7$)=80)
10060 SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
10090 '
10092 '         ***** SAVE THE PREVIOUS STATE OF THE SCREEN FOR *****
10094 '         ***** PROPER ERASURE OF SYMBOLS. *****
11000 PREVTIME=TIME:PREVDOT=DOTTED:PREVNOTE=NOTE:PREVPTR=PTNPTR:RETURN
11990 '
11992 '         ***** DISPLAY ROUTINE.RE-CREATE THE DATA OF   *****
11993 '         ***** THE PREVIOUS NOTE,USING THE INFORMATION *****
11994 '         ***** PRESERVED IN LINE 11000.                *****
11995 '
12000 PREVN$=MID$(PTN$,PREVPTR,2):PREVAC$=RIGHT$(PREVN$,1):PREVOC=((PREVPTR-1)/2-INSTR(PSCALE$,LEFT$(PREVN$,1)))/12+1:PREVNN=7*PREVOC+INSTR(SCALE$,LEFT$(PREVN$,1))-7:N2$=N$:IF AC$="-" THEN MID$(N2$,2,1)="b"
12040 '
12042 '         ***** UPDATE THE INFORMATION SQUARE. *****
12048 '
12050 LOCATE 3,31:IF DOTTED THEN PRINT USING "Tone  \ \";N2$+"." ELSE PRINT USING "Tone   \\";N2$
12060 LOCATE 2,31:PRINT USING "Octave  #";OC:LOCATE 6,31:PRINT USING "Note ####";NPOS:LOCATE 5,31:PRINT USING "Tempo ###";TEMPO:LOCATE 7,31:PRINT USING "Blocks ##";BCOUNT:LOCATE 4,31:PRINT USING "Length ##";TIME
12090 '
12092 '         ***** UPDATE THE TIME INDICATOR. *****
12098 '
12100 OLDTX=FNL2!(PREVTIME)*15+RX:IF PREVNOTE AND PREVDOT THEN PUT (OLDTX,NY),DOT
12110 PUT (OLDTX,RY+20*PREVNOTE),NCURS:TX=RX+15*FNL2!(TIME):PUT (TX,RY+20*NOTE),NCURS:IF NOTE AND DOTTED THEN PUT (TX,RY+20*NOTE),DOT
12150 '
12152 '         ***** UPDATE THE PIANO KEYS *****
12158 '
12160 X=INSTR(SCALE$,LEFT$(PREVN$,1)):XQ=INT(X-X/3+0.5):IF PREVAC$<>" " THEN PAINT (KBX+BK(XQ),KBY+5),0,2 ELSE IF X=2 OR X=5 OR X=6 THEN PUT (KBX+15*(X-1),KBY),PCC ELSE IF X=1 OR X=4 THEN PUT (KBX+15*(X-1),KBY),PCL ELSE PUT (KBX+15*(X-1),KBY),PCR
12180 X=INSTR(SCALE$,LEFT$(N$,1)):XQ=INT(X-X/3+0.5):IF AC$<>" " THEN PAINT (KBX+BK(XQ),KBY+5),1,2 ELSE IF X=2 OR X=5 OR X=6 THEN PUT (KBX+15*(X-1),KBY),PCC ELSE IF X=1 OR X=4 THEN PUT (KBX+15*(X-1),KBY),PCL ELSE PUT (KBX+15*(X-1),KBY),PCR
12190 LINE (0,0)-(319,199),3,B
12200 '
12202 '         ***** UPDATE THE STAFF *****
12208 '
12210 IF NOT PREVNOTE THEN 12440
12220 ON FNL2!(PREVTIME)+1 GOTO 12230,12240,12250,12260,12270,12280,12290
12230 PUT (NDX,NDY(PREVNN)),NOTE1:GOTO 12300
12240 PUT (NDX,NDY(PREVNN)),NOTE2:GOTO 12300
12250 PUT (NDX,NDY(PREVNN)),NOTE4:GOTO 12300
12260 PUT (NDX,NDY(PREVNN)),NOTE8:GOTO 12300
12270 PUT (NDX,NDY(PREVNN)),NOTE16:GOTO 12300
12280 PUT (NDX,NDY(PREVNN)),NOTE32:GOTO 12300
12290 PUT (NDX,NDY(PREVNN)),NOTE64
12300 IF PREVDOT THEN PUT (NDX,NDY(PREVNN)),DOT
12310 IF PREVAC$="-" THEN PUT (NDX-2,NDY(PREVNN)),FLAT ELSE IF PREVAC$="#" THEN PUT (NDX-2,NDY(PREVNN)),SHARP
12320 IF NOT NOTE THEN 12520 ELSE ON FNL2!(TIME)+1 GOTO 12330,12340,12350,12360,12370,12380,12390
12330 PUT (NDX,NDY(NN)),NOTE1:GOTO 12400
12340 PUT (NDX,NDY(NN)),NOTE2:GOTO 12400
12350 PUT (NDX,NDY(NN)),NOTE4:GOTO 12400
12360 PUT (NDX,NDY(NN)),NOTE8:GOTO 12400
12370 PUT (NDX,NDY(NN)),NOTE16:GOTO 12400
12380 PUT (NDX,NDY(NN)),NOTE32:GOTO 12400
12390 PUT (NDX,NDY(NN)),NOTE64
12400 IF DOTTED THEN PUT (NDX,NDY(NN)),DOT
12410 IF AC$="-" THEN PUT (NDX-2,NDY(NN)),FLAT ELSE IF AC$="#" THEN PUT (NDX-2,NDY(NN)),SHARP
12420 RETURN
12440 IF PREVNOTE THEN 12320 ELSE ON FNL2!(PREVTIME)+1 GOTO 12450,12460,12470,12480,12490,12500,12510
12450 PUT (RDX,RDY),REST1:GOTO 12320
12460 PUT (RDX,RDY),REST2:GOTO 12320
12470 PUT (RDX,RDY),REST4:GOTO 12320
12480 PUT (RDX,RDY),REST8:GOTO 12320
12490 PUT (RDX,RDY),REST16:GOTO 12320
12500 PUT (RDX,RDY),REST32:GOTO 12320
12510 PUT (RDX,RDY),REST64:GOTO 12320
12520 ON FNL2!(TIME)+1 GOTO 12530,12540,12550,12560,12570,12580,12590
12530 PUT (RDX,RDY),REST1:RETURN
12540 PUT (RDX,RDY),REST2:RETURN
12550 PUT (RDX,RDY),REST4:RETURN
12560 PUT (RDX,RDY),REST8:RETURN
12570 PUT (RDX,RDY),REST16:RETURN
12580 PUT (RDX,RDY),REST32:RETURN
12590 PUT (RDX,RDY),REST64:RETURN
12997 '
12998 '         ***** SET UP THE SHAPE TABLES *****
12999 '
13000 SCREEN 1:CLS:COLOR 0,1:STAFF$="S10 A000 BM000,000 C1 D8 R1 U8 L1 R1 BR40 D8 R1 U8 L1 L40 D2 R40 D2 L40 D2 R40 D2 L40":STAFF$=STAFF$+" L1 D16 R1 U8 L1 R1 BR40 D8 R1 U8 L1 L40 D2 R40 D2 L40 D2 R40 D2 L40":DRAW STAFF$:STAFF$=""
13030 GET (0,0)-(104,70),STAFF:CLS
13050 CIRCLE (4,13),3,2,,,0.55:GET (0,0)-(13,17),NOTE1:LINE (7,13)-(7,1),2:GET (0,0)-(13,17),NOTE2:PAINT (4,13),2,2:GET (0,0)-(13,17),NOTE4:LINE (7,1)-(12,3),2:GET (0,0)-(13,17),NOTE8:LINE (7,3)-(12,5),2:GET (0,0)-(13,17),NOTE16
13060 LINE (7,5)-(12,7),2:GET (0,0)-(13,17),NOTE32:LINE (7,7)-(12,9),2:GET (0,0)-(13,17),NOTE64:CLS
13080 LINE(2,0)-(2,6),2:LINE (4,0)-(4,6),2:LINE (1,2)-(5,2),2:LINE (1,4)-(5,4),2:GET (0,0)-(13,17),SHARP:CLS:LINE (2,0)-(2,6),2:LINE (2,6)-(6,4),2:LINE (6,4)-(2,2),2:GET (0,0)-(13,17),FLAT
13100 CLS:LINE (3,11)-(9,13),2,BF:GET (0,0)-(13,17),REST1:CLS:LINE (3,9)-(9,7),2,BF:GET (0,0)-(13,17),REST2:CLS:LINE (6,3)-(8,5),2:LINE (8,5)-(6,8),2:LINE (6,8)-(8,10),2:LINE (8,10)-(5,13),2:LINE (5,13)-(6,15),2:GET (0,0)-(13,17),REST4
13110 CLS:LINE (6,14)-(9,3),2:LINE (9,4)-(3,6),2:GET (0,0)-(13,17),REST8:LINE (9,6)-(3,8),2:GET (0,0)-(13,17),REST16:LINE (7,8)-(3,10),2:GET (0,0)-(8,16),REST32:LINE (7,10)-(3,12),2:GET (0,0)-(13,17),REST64
13130 CLS:LINE (0,0)-(9,30),3,BF:LINE (0,30)-(12,50),3,BF:GET (0,0)-(12,50),PIANOL
13131 PAINT (5,5),2,0:GET (0,0)-(12,50),PCL
13132 CLS:LINE (4,0)-(9,30),3,BF:LINE(0,30)-(12,50),3,BF:GET (0,0)-(12,50),PIANOC
13133 PAINT (5,5),2,0:GET (0,0)-(12,50),PCC
13134 CLS:LINE (4,0)-(12,30),3,BF:LINE (0,30)-(12,50),3,BF:GET (0,0)-(12,50),PIANOR
13135 PAINT (5,5),2,0:GET (0,0)-(12,50),PCR
13140 CLS:LINE (0,0)-(13,17),2,BF:GET (0,0)-(13,17),NCURS:CLS:PSET (10,14),2:PSET (10,15),2:PSET (11,14),2:PSET (11,15),2:GET (0,0)-(13,17),DOT:RETURN
13990 '
13992 '         ***** DRAW THE INITIAL SCREEN *****
14000 CLS:LINE (0,0)-(319,199),3,B:LINE (115,0)-(115,199),3:LINE (115,63)-(319,199),3,B:LINE (234,0)-(234,63),3
14030 PUT (KBX,KBY),PIANOL:PUT (KBX+15,KBY),PIANOC:PUT (KBX+30,KBY),PIANOR:PUT (KBX+45,KBY),PIANOL:PUT (KBX+60,KBY),PIANOC:PUT (KBX+75,KBY),PIANOC:PUT (KBX+90,KBY),PIANOR:LINE (KBX-3,KBY-2)-(KBX+105,KBY+52),3,B:PAINT (KBX+11,KBY+1),2,3
14050 FOR X=KBX+10 TO KBX+25 STEP 15:LINE (X+1,KBY)-(X+7,KBY+28),0,BF:NEXT X:FOR X=KBX+55 TO KBX+55+30 STEP 15:LINE (X+1,KBY)-(X+7,KBY+28),0,BF:NEXT X
14060 PUT (KBX,KBY),PCL
14070 LINE (0,NY-2)-(115,NY-2),3:PUT (NX,NY),NOTE1:PUT (NX+15,NY),NOTE2:PUT (NX+30,NY),NOTE4:PUT (NX+45,NY),NOTE8:PUT (NX+60,NY),NOTE16:PUT (NX+75,NY),NOTE32:PUT (NX+90,NY),NOTE64:TX=RX+15*FNL2!(TIME):PUT (TX,NY),NCURS
14090 LINE (0,RY-2)-(115,RY-2),3:PUT (RX,RY),REST1:PUT (RX+15,RY),REST2:PUT (RX+30,RY),REST4:PUT (RX+45,RY),REST8:PUT (RX+60,RY),REST16:PUT (RX+75,RY),REST32:PUT (RX+90,RY),REST64:PUT (STAFFX,STAFFY),STAFF
14120 FOR X=1 TO 5:LINE (STAFFX+46,STAFFY-X*5)-(STAFFX+60,STAFFY-X*5),1:LINE (STAFFX+46,STAFFY+X*5+45)-(STAFFX+60,STAFFY+X*5+45),1:NEXT X:LINE (STAFFX+46,STAFFY+MIDC)-(STAFFX+60,STAFFY+MIDC),1:PUT (NDX,NDY(NN)),NOTE4
14160 GOSUB 12000:LOCATE 12,22:DEF SEG:POKE 78,1:PRINT"PC Blues Box":LOCATE 14,21:DEF SEG:POKE 78,2:PRINT "A Music Editor":LOCATE 15,21:PRINT "For The IBM PC"
14165 X$="CDEFGAB":FOR X=0 TO 6:PLAY "MB O="+VARPTR$(X)+"T100 L32 X" +VARPTR$(X$)+"X"+VARPTR$(X$):NEXT :FOR X=18 TO 12 STEP -1:LOCATE X,16:PRINT STRING$(24,32):NEXT
14170 LOCATE 10,16:PRINT "F1 DOWN   Octave   UP F2"
14190 LOCATE 11,16:PRINT "F3 START  Block   END F4"
14200 LOCATE 12,16:PRINT "F5 INSRT  Block   DEL F6"
14210 LOCATE 13,16:PRINT "F7 PREV.  Block  NEXT F8"
14220 LOCATE 14,16:PRINT "F9 PREV.  Note   NEXT F0"
14230 LOCATE 15,16:PRINT "S  SAVE   File   LOAD  L"
14240 LOCATE 16,16:PRINT "C  CLEAR  Music  PLAY  P"
14250 LOCATE 17,16:PRINT "N  NOTE   Edit  TEMPO  T"
14260 LOCATE 18,16:PRINT "[Esc]   Stop Play  [Esc]"
14265 LOCATE 19,16:PRINT "Ctrl-C  Quit     Menu  M"
14270 RETURN
14990 '
14992 '         ***** SET UP Y COORDINATES FOR DRAWING        *****
14993 '         ***** NOTES AND THE X COORDINATES FOR DRAWING *****
14994 '         ***** PIANO KEYS.                             *****
15000 RESTORE:FOR X=1 TO 35:READ NDY(X):NDY(X)=NDY(X)+STAFFY:NEXT:FOR X=1 TO 5:READ BK(X):NEXT:RETURN
15010 DATA 57,55,52,50,47,45,42,40,37,35,32,30,27,25,17,10,7,5,2,0,-3,-5,-8,-10,-13,-15,-18,-20,-23,-25,-28,-30,-33,-35,-38,15,30,60,75,90
15990 '
15992 '         ***** ACCEPT A NOTE INTO THE BUFFER. *****
15998 '
16000 GOSUB 11000:M$="T000O0L00Na ":LZ=-((TEMPO<10)+(TEMPO<100)):MID$(M$,2+LZ)=FNS$(STR$(TEMPO)):MID$(M$,6)=FNS$(STR$(OC)):LZ=-(TIME<10):MID$(M$,8+LZ)=FNS$(STR$(TIME))
16060 IF NOT NOTE THEN MID$(M$,10)="P"+FNS$(STR$(TIME)) ELSE MID$(M$,10)=N$:IF DOTTED THEN MID$(M$,12)="."
16070 M$(NPOS)=M$:IF NOTE THEN PLAY M$
16090 NPOS=NPOS+1:IF NPOS>NCOUNT THEN NCOUNT=NCOUNT+1
16110 IF NPOS=NCOUNT THEN RETURN
16120 C7$=MID$(M$(NPOS),10,2):N7$=LEFT$(C7$,1):OC7=VAL(MID$(M$(NPOS),6,1)):DOTTED=(RIGHT$(M$(NPOS),1)="."):TIME=VAL(MID$(M$(NPOS),8,2)):NOTE=NOT (ASC(N7$)=80)
16160 SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
16167 '
16168 '         ***** UN-DEFINE THE FUNCTION KEYS *****
16169 '
16170 FOR X=1 TO 10:KEY X, "":NEXT X
16171 RETURN
16990 '
16992 '         ***** FILE OPERATIONS(LOAD AND SAVE). *****
16998 '
17000 ON ERROR GOTO 17500
17010 GOSUB 11000:LOCATE 22,16:LINE INPUT "File >";F$:LOCATE 22,16:PRINT STRING$(24,32):OPEN F$ FOR INPUT AS #1:INPUT #1,BCOUNT:INPUT #1,NCOUNT:IF BCOUNT<>0 THEN FOR X=1 TO BCOUNT:INPUT #1,BLOCK(X,1):INPUT #1,BLOCK(X,2):NEXT X
17060 BPOS=BCOUNT:FOR X=1 TO NCOUNT-1:INPUT #1,M$(X):NEXT X:CLOSE #1:NPOS=NCOUNT:TIME=4:DOTTED=FALSE:NOTE=TRUE:PTNPTR=49:TEMPO=VAL(MID$(M$(1),2,3))
17065 RETURN
17070 ON ERROR GOTO 0
17490 '
17492 '         ***** RETURN IF NO DATA FILE *****
17498 '
17500 IF ERR=53 THEN LOCATE 22,16:PRINT STRING$(24,32):LOCATE 22,16:PRINT "NO FILE CALLED ";F$:FOR X=1 TO 5000:NEXT X:LOCATE 22,16:PRINT STRING$(24,32):GOSUB 22030:RESUME 17065
17520 END
18000 GOSUB 11000:LOCATE 22,16:LINE INPUT "FILE >";F$:LOCATE 22,16:PRINT STRING$(24,32):OPEN F$ FOR OUTPUT AS #1:PRINT #1,BCOUNT:PRINT #1,NCOUNT:IF BCOUNT<>0 THEN FOR X=1 TO BCOUNT:PRINT #1,BLOCK(X,1):PRINT #1,BLOCK(X,2):NEXT X
18060 BPOS=BCOUNT:FOR X=1 TO NCOUNT-1:PRINT #1,M$(X):NEXT X:CLOSE #1:NPOS=NCOUNT:TIME=4:DOTTED=FALSE:NOTE=TRUE:PTNPTR=49:RETURN
18990 '
18992 '         ***** PLAY THE MUSIC *****
18998 '
19000 GOSUB 11000:PLAY "MB":FOR X=1 TO NCOUNT-1:IF INKEY$=CHR$(27) THEN RETURN ELSE PLAY M$(X)
19020 NEXT :RETURN
19990 '
19992 '         ***** SET TEMPO *****
19998 '
20000 GOSUB 11000:LOCATE 22,16:LINE INPUT "Tempo (32-255) >";X$:TEMPO=VAL(X$):IF TEMPO<32 OR TEMPO>255 THEN TEMPO=100
20010 LOCATE 22,16:PRINT STRING$(24,32):RETURN
20990 '
20992 '         ***** MOVE NOTE TO EDIT *****
20998 '
21000 GOSUB 11000:LOCATE 22,16:LINE INPUT "Edit Which Note # >";X$:LOCATE 22,16:PRINT STRING$(24,32):IF VAL(X$)<1 OR VAL(X$)>=NCOUNT THEN RETURN
21010 NPOS=VAL(X$):C7$=MID$(M$(NPOS),10,2):N7$=LEFT$(C7$,1):OC7=VAL(MID$(M$(NPOS),6,1)):DOTTED=(RIGHT$(M$(NPOS),1)="."):TIME=VAL(MID$(M$(NPOS),8,2)):NOTE=NOT (ASC(N7$)=80)
21020 TEMPO=VAL(MID$(M$(NPOS),2,3))
21060 SH7=(RIGHT$(C7$,1)="#"):FL7=(RIGHT$(C7$,1)="-"):IF NOTE THEN PTNPTR=(12*(OC7-1)+INSTR(PSCALE$,N7$)-SH7+FL7)*2-1:RETURN ELSE PTNPTR=49:RETURN
21990 '
21992 '         ***** CLEAR THE MUSIC BUFFER *****
21998 '
22000 GOSUB 11000:LOCATE 22,16:LINE INPUT "Are You Sure >";X$:LOCATE 22,16:PRINT STRING$(24,32)
22010 IF X$="" THEN RETURN
22020 IF FNU$(X$)<>"Y" THEN RETURN
22030 BCOUNT=0:NCOUNT=1:NPOS=1:TIME=4:NOTE=TRUE:DOTTED=FAFSE:PTNPTR=49:TIME=4:TEMPO=100:RETURN
22990 '
22992 '         ***** QUIT *****
22998 '
23000 GOTO 51000
49990 '
49992 '         ***** TEMPORARY LINE TO HANDLE UNIMPLEMENTED COMMANDS *****
49998 '
50000 GOSUB 11000:LOCATE 22,16:PRINT "Not yet implemented.":FOR X=1 TO 1000:NEXT X:LOCATE 22,16:PRINT STRING$(24,32):RETURN
51000 CLS:FU$(1)=CHR$(12)+"LIST "
51010 FU$(2)="RUN"+CHR$(13)
51020 FU$(3)="LOAD"+CHR$(34)
51030 FU$(4)="SAVE"+CHR$(34)
51040 FU$(5)="RUN"+CHR$(34)+"MENU"+CHR$(13)
51050 FU$(6)=","+CHR$(34)+"LPT1:"+CHR$(34)+CHR$(13)
51060 FU$(7)="TRON"+CHR$(13)
51070 FU$(8)="WIDTH 80"+CHR$(13)+"CLS"+CHR$(13)
51080 FU$(9)="COLOR 2,0,0"+CHR$(13)
51090 FU$(10)="SCREEN 0,0,0"+CHR$(13)
51110 FOR X=1 TO 10:KEY X,FU$(X):NEXT X
51120 SCREEN 0,0,0:CLS:COLOR 2,0,0:WIDTH 80

NUTCRAKR.BAS

10 'CLS:KEY OFF
20 PLAY"L4 T250 MS"
25 FOR J=1 TO 2
30 FOR I=1 TO 4
40  READ M$
50 'PRINT M$
60  PLAY M$
65 'INPUT X$
70 NEXT I
75 RESTORE 100
80 NEXT
100 DATA "O4G G8 F+8 G G E D C E D D8 C+8 D D O3B A G B"
110 DATA "A O4D O3G O4D O3F+ O4D O3A O4D O3B O4D O3G O4D O3A G A P4"
120 DATA "O4G G8 F+8 G G E D C E D D8 C+8 D D O3B A G B"
130 DATA "A O4D O3G O4D O3F+ O4D O3A O4D O3B O4D O3A O4D O3G E G P4"

NYLOGO.BAS

10 '                     *****************************************
20 '                     *                                       *
30 '                     *               NYPC LOGO               *
40 '                     *                                       *
50 '                     *   by John Schnell and Paul Somerson   *
60 '                     *                                       *
70 '                     *****************************************
80 '
90 SCREEN 0,1:COLOR 7,0,0:WIDTH 80:CLS:ND=0
100 KEY OFF:LOCATE ,,0
110 DEFINT A-Z
120 DIM A$(20)
130 M$="New York IBM Personal Computer Users Group"
140 N$="Disks #3-6 <public domain> Featuring Games"
150 SS$=STRING$(80,32)
160 '
170 '                    *** outsides of letters ***
180 '
189 Z$=CHR$(32):Z1$=CHR$(205):Z2$=CHR$(186):Z3$=CHR$(200)+CHR$(187):Z4$=CHR$(201)+CHR$(188):Z5$=CHR$(201):Z6$=CHR$(187):Z7$=CHR$(188):Z8$=CHR$(200)
190 A$(0)=Z5$+STRING$(4,205)+Z6$+STRING$(5,32)+Z5$+STRING$(4,205)+Z6$+Z$+STRING$(3,205)+Z6$+STRING$(10,32)+Z5$+STRING$(5,205)+Z6$+STRING$(16,205)+Z6$+Z$+Z5$+STRING$(15,205)+Z6$+Z$+Z$
200 A$(1)=Z2$+STRING$(4,32)+Z3$+STRING$(4,32)+Z2$+STRING$(4,32)+Z2$+STRING$(4,32)+Z3$+STRING$(8,32)+Z4$+STRING$(4,32)+Z4$+STRING$(16,32)+Z3$+STRING$(16,32)+Z3$
210 A$(2)=Z2$+STRING$(5,32)+Z3$+STRING$(3,32)+Z2$+STRING$(4,32)+STRING$(2,186)+STRING$(4,32)+Z3$+STRING$(6,32)+Z4$+STRING$(4,32)+Z4$+STRING$(4,32)+Z5$+STRING$(8,205)+Z6$+STRING$(4,32)+Z3$+STRING$(3,32)+Z5$+STRING$(8,205)+Z6$+STRING$(3,32)+Z3$
220 A$(3)=Z2$+STRING$(6,32)+Z3$+Z$+Z$+Z2$+STRING$(4,32)+Z2$+Z3$+STRING$(4,32)+Z3$+STRING$(4,32)+Z4$+STRING$(4,32)+Z4$+Z2$+STRING$(4,32)+Z2$+STRING$(8,32)+Z3$+STRING$(4,32)+Z3$+Z$+Z4$+STRING$(8,32)+Z3$+STRING$(3,32)+Z2$
230 A$(4)=Z2$+STRING$(7,32)+Z3$+Z$+Z2$+STRING$(4,32)+Z2$+Z$+Z3$+STRING$(4,32)+Z3$+STRING$(2,32)+Z4$+STRING$(4,32)+Z4$+Z$+Z2$+STRING$(4,32)+Z2$+STRING$(9,32)+Z3$+STRING$(4,32)+Z2$+Z$+Z2$+STRING$(10,32)+Z8$+STRING$(3,205)+Z7$
240 A$(5)=Z2$+STRING$(8,32)+Z3$+Z2$+STRING$(4,32)+Z2$+STRING$(2,32)+Z3$+STRING$(4,32)+Z3$+Z4$+STRING$(4,32)+Z4$+STRING$(2,32)+Z2$+STRING$(4,32)+Z2$+STRING$(9,32)+Z4$+STRING$(4,32)+Z2$+Z$+Z2$+STRING$(17,32)
250 A$(6)=Z2$+STRING$(9,32)+Z8$+Z7$+STRING$(4,32)+Z2$+STRING$(3,32)+Z3$+STRING$(4,32)+Z8$+Z7$+STRING$(4,32)+Z4$+STRING$(3,32)+Z2$+STRING$(4,32)+Z2$+STRING$(8,32)+Z4$+STRING$(4,32)+Z4$+Z$+Z2$+STRING$(17,32)
260 A$(7)=Z2$+STRING$(15,32)+Z2$+STRING$(4,32)+Z3$+STRING$(8,32)+Z4$+STRING$(4,32)+Z2$+STRING$(4,32)+Z8$+STRING$(8,205)+Z7$+STRING$(4,32)+Z4$+STRING$(2,32)+Z2$+STRING$(16,32)
270 A$(8)=Z2$+STRING$(15,32)+Z2$+STRING$(5,32)+Z3$+STRING$(6,32)+Z4$+STRING$(5,32)+Z2$+STRING$(17,32)+Z4$+STRING$(3,32)+Z2$+STRING$(16,32)
280 A$(9)=Z2$+STRING$(4,32)+Z5$+Z6$+STRING$(9,32)+Z2$+STRING$(6,32)+Z3$+STRING$(4,32)+Z4$+STRING$(6,32)+Z2$+STRING$(4,32)+Z5$+STRING$(12,205)+Z7$+STRING$(4,32)+Z2$+STRING$(16,32)
290 A$(10)=Z2$+STRING$(4,32)+Z2$+Z3$+STRING$(8,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(12,32)+Z2$+STRING$(4,32)+Z2$+STRING$(16,32)
300 A$(11)=Z2$+STRING$(4,32)+Z2$+Z$+Z3$+STRING$(7,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(12,32)+Z2$+STRING$(4,32)+Z2$+STRING$(10,32)+Z5$+STRING$(3,205)+Z6$
310 A$(12)=Z2$+STRING$(4,32)+Z2$+STRING$(2,32)+Z3$+STRING$(6,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(12,32)+Z2$+STRING$(4,32)+Z3$+STRING$(8,32)+Z4$+STRING$(3,32)+Z2$
320 A$(13)=Z2$+STRING$(4,32)+Z2$+STRING$(3,32)+Z3$+STRING$(5,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(7,32)+Z2$+STRING$(4,32)+Z2$+STRING$(12,32)+Z3$+STRING$(4,32)+Z8$+STRING$(8,205)+Z7$+STRING$(3,32)+Z4$
330 A$(14)=Z2$+STRING$(4,32)+Z2$+STRING$(4,32)+Z3$+STRING$(4,32)+Z2$+STRING$(2,32)+Z5$+Z1$+Z6$+Z$+Z$+Z2$+STRING$(4,32)+Z2$+Z$+Z$+Z5$+Z1$+Z6$+Z$+Z$+Z2$+STRING$(4,32)+Z2$+Z$+Z$+Z5$+Z1$+Z6$+STRING$(8,32)+Z3$+STRING$(15,32)+Z4$+Z$+Z5$+Z1$+Z6$
340 A$(15)=Z8$+STRING$(4,205)+Z7$+STRING$(5,32)+Z8$+STRING$(4,205)+Z7$+Z$+Z$+Z8$+Z1$+Z7$+Z$+Z$+Z8$+STRING$(4,205)+Z7$+Z$+Z$+Z8$+Z1$+Z7$+Z$+Z$+Z8$+STRING$(4,205)+Z7$+Z$+Z$+Z8$+Z1$+Z7$+STRING$(9,32)+Z8$+STRING$(15,205)+Z7$+Z$+Z$+Z8$+Z1$+Z7$
350 CLS
360 GOSUB 4160
370 FOR X= 15 TO 0 STEP-1
380   S=X * RND(1) : LOCATE S+5,1
390   PRINT A$(X-S);
400   LOCATE X+5,1 : PRINT A$(X);
410 NEXT X
420 '
430 '           *** print insides of letters first time ***
440 '
450 FOR Z=176 TO 217
460 IF Z=180 THEN GOSUB 4210
470 IF Z=194 THEN GOSUB 4250
480 IF Z=204 THEN GOSUB 4300
490 A$=CHR$(Z):B$=STRING$(2,Z):C$=STRING$(3,Z):D$=STRING$(4,Z):E$=STRING$(5,Z):F$=STRING$(6,Z):G$=STRING$(7,Z):H$=STRING$(8,Z):I$=STRING$(9,Z):O$=STRING$(15,Z):P$=STRING$(16,Z):Q$=STRING$(17,Z)
500 GOSUB 3990
510 LOCATE 22,Z-156:PRINT MID$(M$,Z-175,1)
520 LOCATE 23,237-Z:PRINT MID$(N$,218-Z,1)
530 NEXT
540 '
550 '           *** movement of two title lines ***
560 '
570 FOR Y=5 TO 13
580 SOUND Y*75,0.05
590 LOCATE Y,1:PRINT SS$;
600 LOCATE 25-Y,1:PRINT SS$;
610 FOR T=1 TO 99:NEXT
620 NEXT
630 FOR X=21 TO 11 STEP -1
640 SOUND X*75,0.05
650 LOCATE X,20:PRINT M$
660 NEXT
670 FOR X=22 TO 12 STEP -1
680 SOUND X*175,0.05
690 LOCATE X,20:PRINT N$
700 NEXT
710 FOR X=23 TO 13 STEP -1
720 SOUND X*200,0.05
730 LOCATE X,20:PRINT STRING$(42,32)
740 NEXT
750 MM$=CHR$(32)+M$+STRING$(19,32):NN$=STRING$(19,32)+N$+STRING$(42,32)
760 FOR W=1 TO 62
770 SOUND (W+36)*1,0.95
780 LOCATE 11,W+18:PRINT MID$(MM$,1,63-W)
790 LOCATE 12,1:PRINT MID$(NN$,W,63)
800 NEXT
810 '
820 '                   *** four walking letters ***
830 '
840 COLOR 0,7,7:CLS
850 IF ND=1 THEN GOSUB 4300
860 FOR T=1 TO 8
870 IF ND<>1 THEN SOUND T*1200,0.05
880 IF T>1 THEN LOCATE 11,T-1:PRINT " "
890 LOCATE 11,T:PRINT "N"
900 FOR DLY=1 TO 25:NEXT
910 NEXT
920 FOR T=1 TO 27
930 IF ND<>1 THEN SOUND (28-T)*500,0.05
940 IF T>1 THEN LOCATE 10,T-1:PRINT " "
950 LOCATE 10,T:PRINT "Y"
960 FOR DLY=1 TO 25:NEXT
970 NEXT
980 LOCATE 11,27:PRINT "Y":LOCATE 10,27:PRINT " "
990 FOR T=1 TO 46
1000 IF ND<>1 THEN SOUND T*250,0.05
1010 IF T>1 THEN LOCATE 10,T-1:PRINT " "
1020 LOCATE 10,T:PRINT "P"
1030 FOR DLY=1 TO 25:NEXT
1040 NEXT
1050 LOCATE 11,46:PRINT "P":LOCATE 10,46:PRINT " "
1060 FOR T=1 TO 65
1070 IF ND<>1 THEN SOUND (66-T)*150,0.05
1080 IF T>1 THEN LOCATE 10,T-1:PRINT " "
1090 LOCATE 10,T:PRINT "C"
1100 FOR DLY=1 TO 25:NEXT
1110 NEXT
1120 LOCATE 11,65:PRINT "C":LOCATE 10,65:PRINT " "
1130 '
1140 '                  *** changing outline of large letters ***
1150 '
1160 LOCATE 5,1
1170 FOR U=0 TO 15
1180 IF ND<>1 THEN SOUND 37+U,1
1190 PRINT A$(U);
1200 NEXT
1210 IF ND=1 THEN 1440
1220 '
1230 FOR T=20 TO 5 STEP -1
1240 FOR S=1 TO 80
1250 IF T MOD 2=0 THEN 1260 ELSE 1280
1260 IF SCREEN(T,S)>32 THEN 1270 ELSE 1290
1270 LOCATE T,S:PRINT CHR$(250):SOUND (T+S+37)*50,0.05:GOTO 1290
1280 IF SCREEN(T,81-S)>32 THEN LOCATE T,81-S:PRINT CHR$(250):SOUND (T+81-S+100)*20,0.05
1290 NEXT:NEXT
1300 '
1310 FOR T=5 TO 20
1320 SOUND (21-T)+36,1
1330 LOCATE T,1:PRINT SS$
1340 NEXT
1350 '
1360 GOSUB 4160
1370 COLOR 7,0,0:CLS
1380 FOR S=1 TO 80
1390 FOR T=0 TO 16
1400 IF S=48 AND T=0 THEN GOSUB 4210
1410 LOCATE T+5,S:PRINT MID$(A$(T),S,1)
1420 NEXT:NEXT
1430 '
1440 Z=177
1450 A$=CHR$(Z):B$=STRING$(2,Z):C$=STRING$(3,Z):D$=STRING$(4,Z):E$=STRING$(5,Z):F$=STRING$(6,Z):G$=STRING$(7,Z):H$=STRING$(8,Z):I$=STRING$(9,Z):O$=STRING$(15,Z):P$=STRING$(16,Z):Q$=STRING$(17,Z)
1460 GOSUB 3990
1470 IF Z=177 THEN Z=32:GOTO 1450 ELSE 1480
1480 IF ND=1 THEN 1490 ELSE 1510
1490 FINI=FINI+1:Z=177:IF FINI<5 THEN Z=Z+FINI*7:GOTO 1450 ELSE CLS:RUN "MENU.PGM"
1500 '
1510 FOR S=1 TO 80
1520 FOR T=4 TO 21
1530 IF S=5 AND T=4 THEN GOSUB 4250
1540 IF S=43 AND T=4 THEN GOSUB 4300
1550 IF SCREEN(T,S)>32 THEN LOCATE T,S:PRINT CHR$(250) ELSE LOCATE T,S:PRINT "*"
1560 NEXT:NEXT
1570 '
1580 Z=196
1590 A$=CHR$(Z):B$=STRING$(2,Z):C$=STRING$(3,Z):D$=STRING$(4,Z):E$=STRING$(5,Z):F$=STRING$(6,Z):G$=STRING$(7,Z):H$=STRING$(8,Z):I$=STRING$(9,Z):O$=STRING$(15,Z):P$=STRING$(16,Z):Q$=STRING$(17,Z)
1600 GOSUB 3990
1610 '
1620 COLOR 7,0,0
1630 GOSUB 4160
1640 FOR S=80 TO 1 STEP -1
1650 FOR T=22 TO 3 STEP -1
1660 IF S=53 AND T=22 THEN GOSUB 4210
1670 IF S=25 AND T=22 THEN GOSUB 4250
1680 IF SCREEN(T,S)=42 OR SCREEN(T,S)=196 THEN LOCATE T,S:PRINT " " ELSE LOCATE T,S:PRINT "Z"
1690 NEXT:NEXT
1700 '
1710 Z=178
1720 A$=CHR$(Z):B$=STRING$(2,Z):C$=STRING$(3,Z):D$=STRING$(4,Z):E$=STRING$(5,Z):F$=STRING$(6,Z):G$=STRING$(7,Z):H$=STRING$(8,Z):I$=STRING$(9,Z):O$=STRING$(15,Z):P$=STRING$(16,Z):Q$=STRING$(17,Z)
1730 GOSUB 3990
1740 IF Z=178 THEN Z=1:GOTO 1720 ELSE 1760
1750 '
1760 COLOR 7,0,0
1770 GOSUB 4300
1780 FOR S=80 TO 1 STEP -1
1790 FOR T=0 TO 16
1800 LOCATE T+5,S:PRINT MID$(A$(T),S,1)
1810 NEXT:NEXT
1820 '
1830 COLOR 0,7,7:CLS
1840 LS$=STRING$(80,45):LT$=STRING$(80,196):DT$=CHR$(249):K=1
1850 PLAY "MBo5c16d16e16f16g16a16b16o6c16"
1860 LOCATE 8,1:PRINT LT$:LOCATE 9,1:PRINT LS$:LOCATE 11,1:PRINT LS$:LOCATE 14,1:PRINT LS$:LOCATE 18,1:PRINT LS$:LOCATE 23,1:PRINT LS$;
1870 FOR U=8 TO 23
1880 IF U=8 THEN 1930
1890 FOR V=-7 TO 7
1900 SOUND U*250+V,0.05
1910 LOCU=40+V*(U-8):IF LOCU<1 OR LOCU>80 THEN 1920 ELSE LOCATE U,LOCU:PRINT DT$;
1920 NEXT
1930 NEXT
1940 FOR W=1 TO 8
1950 SOUND (9-W)*1000,1
1960 LOCATE W,38-(4*(8-W)):PRINT "N":LOCATE W,39-(8-W):PRINT "Y":LOCATE W,40+(8-W):PRINT "P":LOCATE W,41+(4*(8-W)):PRINT "C"
1970 FOR DY=1 TO 50:NEXT
1980 IF W<8 THEN LOCATE W,38-(4*(8-W)):PRINT " ":LOCATE W,39-(8-W):PRINT " ":LOCATE W,40+(8-W):PRINT " ":LOCATE W,41+(4*(8-W)):PRINT " "
1990 NEXT
2000 '
2010 F1$=CHR$(247)+CHR$(247)+"NYPC"+CHR$(247)+CHR$(247):F2$=CHR$(32)+CHR$(174)+"NYPC"+CHR$(175)+CHR$(32):F3$=STRING$(8,32)
2020 EGG$=CHR$(40)+STRING$(2,95)+CHR$(41)+CHR$(30)+STRING$(3,29)+STRING$(2,95)+CHR$(31)+CHR$(28):HOR$=CHR$(30)+CHR$(29)+STRING$(3,32)+CHR$(31)+STRING$(2,29)+STRING$(2,196)+CHR$(30)+STRING$(2,32)+CHR$(31)+STRING$(2,29)
2030 FOR J=7 TO 1 STEP -1
2040 SOUND 15000,0.01
2050 LOCATE 8,38:PRINT EGG$:LOCATE 8,42:PRINT HOR$
2060 FOR I=1 TO 3
2070 LOCATE J,(J*4)+2:PRINT F1$
2080 FOR T=1 TO 99:NEXT
2090 LOCATE J,(J*4)+2:PRINT F3$
2100 LOCATE J,(J*4)+2:PRINT F2$
2110 FOR T=1 TO 99:NEXT
2120 LOCATE J,(J*4)+2:PRINT F3$
2130 NEXT:NEXT
2140 '
2150 FOR E=1 TO 11
2160 SOUND 37,0.05
2170 IF E MOD 2=0 THEN 2180 ELSE 2190
2180 LOCATE 8,38:PRINT HOR$:LOCATE 8,40:PRINT EGG$:FOR LDY=1 TO 200:NEXT:GOTO 2210
2190 LOCATE 8,38:PRINT EGG$:LOCATE 8,42:PRINT HOR$
2200 FOR YLD=1 TO 999:NEXT
2210 NEXT
2220 '
2230 LOCATE 8,38:PRINT CHR$(40)+CHR$(95)+CHR$(30)+CHR$(29)+CHR$(95)
2240 LOCATE 8,40:PRINT CHR$(32)+CHR$(30)+CHR$(29)+CHR$(32)
2250 LOCATE 8,41:PRINT CHR$(95)+CHR$(41)+CHR$(30)+STRING$(2,29)+CHR$(95)
2260 '
2270 MSK$="mbmso6f32g32f32f32e32g32f32f32g32f32f32g32f32e32f32g32e32f32e32f32e32f32g32e32g32f32e32g32f32e32g32":PLAY MSK$
2280 LOCATE 8,40:PRINT "n":FOR TT=1 TO 50:NEXT:LOCATE 8,40:PRINT " "
2290 LOCATE 6,39:PRINT "n":FOR TT=1 TO 50:NEXT:LOCATE 6,39:PRINT " "
2300 LOCATE 6,38:PRINT "n":FOR TT=1 TO 50:NEXT:LOCATE 6,38:PRINT " "
2310 LOCATE 6,37:PRINT "n":FOR TT=1 TO 50:NEXT:LOCATE 6,37:PRINT " "
2320 LOCATE 7,36:PRINT "n":FOR TT=1 TO 50:NEXT:LOCATE 7,36:PRINT " "
2330 LOCATE 8,35:PRINT "n"
2340 LOCATE 8,40:PRINT "c":FOR TT=1 TO 50:NEXT:LOCATE 8,40:PRINT " "
2350 LOCATE 6,41:PRINT "c":FOR TT=1 TO 50:NEXT:LOCATE 6,41:PRINT " "
2360 LOCATE 6,42:PRINT "c":FOR TT=1 TO 50:NEXT:LOCATE 6,42:PRINT " "
2370 LOCATE 6,43:PRINT "c":FOR TT=1 TO 50:NEXT:LOCATE 6,43:PRINT " "
2380 LOCATE 7,44:PRINT "c":FOR TT=1 TO 50:NEXT:LOCATE 7,44:PRINT " "
2390 LOCATE 8,45:PRINT "c"
2400 LOCATE 8,40:PRINT "y":FOR TT=1 TO 50:NEXT:LOCATE 8,40:PRINT " "
2410 LOCATE 6,40:PRINT "y":FOR TT=1 TO 50:NEXT:LOCATE 6,40:PRINT " "
2420 LOCATE 5,38:PRINT "y":FOR TT=1 TO 50:NEXT:LOCATE 5,38:PRINT " "
2430 LOCATE 6,37:PRINT "y":FOR TT=1 TO 50:NEXT:LOCATE 6,37:PRINT " "
2440 LOCATE 7,36:PRINT "y":FOR TT=1 TO 50:NEXT:LOCATE 7,36:PRINT " "
2450 LOCATE 8,36:PRINT "y"
2460 LOCATE 8,40:PRINT "p":FOR TT=1 TO 50:NEXT:LOCATE 8,40:PRINT " "
2470 LOCATE 5,42:PRINT "p":FOR TT=1 TO 50:NEXT:LOCATE 5,42:PRINT " "
2480 LOCATE 6,43:PRINT "p":FOR TT=1 TO 50:NEXT:LOCATE 6,43:PRINT " "
2490 LOCATE 7,43:PRINT "p":FOR TT=1 TO 50:NEXT:LOCATE 7,43:PRINT " "
2500 LOCATE 8,44:PRINT "p"
2510 FOR HH=1 TO 2000:NEXT:LOCATE 8,35:PRINT CHR$(196)
2520 PLAY MSK$
2530 LOCATE 6,35:PRINT "n":FOR TT=1 TO 150:NEXT:LOCATE 6,35:PRINT " "
2540 LOCATE 7,35:PRINT "n":FOR TT=1 TO 150:NEXT:LOCATE 7,35:PRINT " "
2550 LOCATE 6,35:PRINT "n":FOR TT=1 TO 150:NEXT:LOCATE 6,35:PRINT " "
2560 LOCATE 7,35:PRINT "n":FOR TT=1 TO 150:NEXT:LOCATE 7,35:PRINT " "
2570 LOCATE 6,35:PRINT "n":FOR TT=1 TO 150:NEXT:LOCATE 6,35:PRINT " "
2580 LOCATE 8,35:PRINT "N"
2590 FOR HH=1 TO 1000:NEXT:LOCATE 8,44:PRINT CHR$(196)
2600 PLAY MSK$
2610 LOCATE 5,44:PRINT "p":FOR TT=1 TO 150:NEXT:LOCATE 5,44:PRINT " "
2620 LOCATE 6,44:PRINT "p":FOR TT=1 TO 150:NEXT:LOCATE 6,44:PRINT " "
2630 LOCATE 5,44:PRINT "p":FOR TT=1 TO 150:NEXT:LOCATE 5,44:PRINT " "
2640 LOCATE 7,44:PRINT "p":FOR TT=1 TO 150:NEXT:LOCATE 7,44:PRINT " "
2650 LOCATE 8,44:PRINT "P"
2660 FOR HH=1 TO 1000:NEXT:LOCATE 8,36:PRINT CHR$(196)
2670 PLAY MSK$
2680 LOCATE 3,36:PRINT "y":FOR TT=1 TO 150:NEXT:LOCATE 3,36:PRINT " "
2690 LOCATE 4,36:PRINT "y":FOR TT=1 TO 150:NEXT:LOCATE 4,36:PRINT " "
2700 LOCATE 6,36:PRINT "y":FOR TT=1 TO 150:NEXT:LOCATE 6,36:PRINT " "
2710 LOCATE 3,36:PRINT "y":FOR TT=1 TO 150:NEXT:LOCATE 3,36:PRINT " "
2720 LOCATE 7,36:PRINT "y":FOR TT=1 TO 150:NEXT:LOCATE 7,36:PRINT " "
2730 LOCATE 8,36:PRINT "Y"
2740 FOR HH=1 TO 2000:NEXT:LOCATE 8,45:PRINT CHR$(196)
2750 FOR G=1 TO 2
2760 PLAY "mbo6e16p1e16"
2770 FOR F=1 TO 4
2780 FOR EE=1 TO 5
2790 LOCATE 8,45:PRINT CHR$(196)
2800 LOCATE 7,45:PRINT "c":FOR TT=1 TO 150:NEXT:LOCATE 7,45:PRINT " "
2810 LOCATE 8,45:PRINT "c"
2820 NEXT:NEXT
2830 FOR TT=1 TO 500:NEXT
2840 NEXT
2850 LOCATE 8,45:PRINT CHR$(196)
2860 LOCATE 7,45:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 7,45:PRINT " "
2870 LOCATE 6,46:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 6,46:PRINT " "
2880 LOCATE 5,47:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 5,47:PRINT " "
2890 MSL$="mbmso1f32g32f32f32e32g32f32f32g32f32f32g32f32e32f32g32e32f32e32f32e32f32g32e32g32f32e32g32f32e32g32":PLAY MSL$+MSL$
2900 LOCATE 6,46:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 6,46:PRINT " "
2910 LOCATE 4,45:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 4,45:PRINT " "
2920 LOCATE 6,44:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 6,44:PRINT " "
2930 LOCATE 7,43:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 7,43:PRINT " "
2940 LOCATE 6,44:PRINT "c":FOR TT=1 TO 250:NEXT:LOCATE 6,44:PRINT " "
2950 LOCATE 7,44:PRINT "C":FOR TT=1 TO 1500:NEXT:LOCATE 7,44:PRINT " "
2960 LOCATE 7,45:PRINT "C":FOR TT=1 TO 250:NEXT:LOCATE 7,45:PRINT " "
2970 LOCATE 8,45:PRINT "C":FOR TT=1 TO 250:NEXT:LOCATE 8,45:PRINT " "
2980 LOCATE 8,45:PRINT "C"
2990 LOCATE 8,35:PRINT STRING$(12,196)
3000 '
3010 FOR J=7 TO 1 STEP -1
3020 SOUND 15000,0.01
3030 FOR I=1 TO 3
3040 LOCATE J,((8-J)*4)+32:PRINT F1$
3050 FOR T=1 TO 99:NEXT
3060 LOCATE J,((8-J)*4)+34:PRINT F3$
3070 LOCATE J,((8-J)*4)+32:PRINT F2$
3080 FOR T=1 TO 99:NEXT
3090 LOCATE J,((8-J)*4)+32:PRINT F3$
3100 NEXT:NEXT
3110 '
3120 COLOR 7,0,0:CLS
3130 FOR AA=2 TO 11
3140 SOUND (12-AA)*1000,0.25
3150 LOCATE AA,38:PRINT "N":LOCATE AA-1,38:PRINT " "
3160 FOR DLY=1 TO 125:NEXT
3170 NEXT
3180 FOR AA=24 TO 11 STEP -1
3190 SOUND (25-AA)*300,0.5
3200 LOCATE AA,39:PRINT "Y";:LOCATE AA+1,39:PRINT " ";
3210 FOR DLY=1 TO 125:NEXT
3220 NEXT
3230 FOR AA=79 TO 40 STEP -1
3240 SOUND AA*RND*135,0.25
3250 LOCATE 11,AA:PRINT "P";:LOCATE 11,AA+1:PRINT " ";
3260 FOR DLY=1 TO 75:NEXT
3270 NEXT
3280 FOR T= 1 TO 2
3290 FOR AA=2 TO 38
3300 SOUND (42-AA)*21,1
3310 LOCATE 11,AA:PRINT "C":LOCATE 11,AA-1:PRINT " "
3320 NEXT
3330 LOCATE 11,39:PRINT "=========NYP":LOCATE 11,39:PRINT "             NYP"
3340 FOR GG=1 TO 75:NEXT
3350 SOUND 37,3
3360 FOR AA=48 TO 39 STEP -1
3370 LOCATE 11,AA:PRINT "NYP    "
3380 NEXT
3390 FOR AA=38 TO 1 STEP -1
3400 LOCATE 11,AA:PRINT "C";:LOCATE 11,AA:PRINT " ";
3410 NEXT
3420 FOR DLY=1 TO 600:NEXT:NEXT
3430 XX$=CHR$(31):ZZ$=CHR$(29):CC$=CHR$(25)
3440 FOR AA=2 TO 10
3450 SOUND (13-AA)*210,1
3460 LOCATE AA,40:PRINT "C":FOR DLY=1 TO 25:NEXT:LOCATE AA,40:PRINT " "
3470 NEXT
3480 LOCATE 11,39:PRINT " C "
3490 LOCATE 12,40:PRINT CC$+ZZ$+XX$+CC$+XX$+ZZ$+CC$+XX$+ZZ$+CC$+XX$+ZZ$+CC$+XX$+ZZ$+"NYP"
3500 FOR FF=12 TO 16
3510 LOCATE FF,40:PRINT " "
3520 NEXT
3530 FOR K=17 TO 11 STEP -1
3540 SOUND 3*K+4,1
3550 LOCATE K,38:PRINT "NYP":FOR DLY=1 TO 5:NEXT:LOCATE K+1,38:PRINT "     "
3560 NEXT
3570 FOR V=10 TO 1 STEP -1
3580 LOCATE V,40:PRINT "C":FOR DLY=1 TO 20:NEXT:LOCATE V,40:PRINT " "
3590 NEXT:FOR DLY=1 TO 1000:NEXT
3600 FOR B=80 TO 1 STEP -1
3610 FOR C=8 TO 14
3620 SOUND (23-C)^2,0.05
3630 LOCATE C,B:PRINT "C"
3640 IF B=40 THEN LOCATE 11,40:PRINT "P"
3650 IF B=39 THEN LOCATE 11,39:PRINT "Y"
3660 IF B=38 THEN LOCATE 11,38:PRINT "N"
3670 NEXT:NEXT
3680 FOR B=80 TO 1 STEP -1
3690 FOR C=8 TO 14
3700 SOUND (123-C)^2,0.05
3710 LOCATE C,B:PRINT " "
3720 IF B=41 THEN LOCATE 11,41:PRINT "C"
3730 IF B=40 THEN LOCATE 11,40:PRINT "P"
3740 IF B=39 THEN LOCATE 11,39:PRINT "Y"
3750 IF B=38 THEN LOCATE 11,38:PRINT "N"
3760 NEXT:NEXT:CLS
3770 '
3780 FOR S=1 TO 10
3790 LOCATE 11,38:COLOR 15:PRINT "N":LOCATE 11,39:COLOR 7:PRINT "YPC"
3800 PLAY "o3b32"
3810 LOCATE 11,38:COLOR 7:PRINT "N":LOCATE 11,39:COLOR 15:PRINT "Y":LOCATE 11,40:COLOR 7:PRINT "PC"
3820 PLAY "o4b32"
3830 LOCATE 11,38:COLOR 7:PRINT "NY":LOCATE 11,40:COLOR 15:PRINT "P":LOCATE 11,41:COLOR 7:PRINT "C"
3840 PLAY "o5b32"
3850 LOCATE 11,38:COLOR 7:PRINT "NYP":LOCATE 11,41:COLOR 15:PRINT "C":COLOR 7
3860 PLAY "o6b32"
3870 NEXT:CLS
3880 '
3890 FOR D=1 TO 20
3900 SOUND D*500,0.05
3910 COLOR 0,7,7:LOCATE 11,37:PRINT "NYPC":FOR DLY=1 TO 50:NEXT
3920 COLOR 7,0,0:LOCATE 11,37:PRINT "NYPC":FOR DLY=1 TO 50:NEXT
3930 NEXT
3940 ND=1:GOTO 840
3950 '
3960 '          *** insides of letters sub ***
3970 '
3980 CLS: RUN "MENU.PGM"
3990 LOCATE 6,2:PRINT D$:LOCATE 6,13:PRINT D$:LOCATE 6,18:PRINT D$:LOCATE 6,34:PRINT D$:LOCATE 6,40:PRINT P$:LOCATE 6,59:PRINT O$
4000 LOCATE 7,2:PRINT E$:LOCATE 7,13:PRINT D$:LOCATE 7,19:PRINT D$:LOCATE 7,33:PRINT D$:LOCATE 7,39:PRINT D$:LOCATE 7,53:PRINT D$:LOCATE 7,59:PRINT C$:LOCATE 7,72:PRINT C$
4010 LOCATE 8,2:PRINT F$:LOCATE 8,13:PRINT D$:LOCATE 8,20:PRINT D$:LOCATE 8,32:PRINT D$:LOCATE 8,39:PRINT D$:LOCATE 8,54:PRINT D$:LOCATE 8,60:PRINT A$:LOCATE 8,73:PRINT C$
4020 LOCATE 9,2:PRINT G$:LOCATE 9,13:PRINT D$:LOCATE 9,21:PRINT D$:LOCATE 9,31:PRINT D$:LOCATE 9,39:PRINT D$:LOCATE 9,55:PRINT D$:LOCATE 9,60:PRINT A$
4030 LOCATE 10,2:PRINT H$:LOCATE 10,13:PRINT D$:LOCATE 10,22:PRINT D$:LOCATE 10,30:PRINT D$:LOCATE 10,39:PRINT D$:LOCATE 10,55:PRINT D$:LOCATE 10,60:PRINT A$
4040 LOCATE 11,2:PRINT I$:LOCATE 11,13:PRINT D$:LOCATE 11,23:PRINT D$:LOCATE 11,29:PRINT D$:LOCATE 11,39:PRINT D$:LOCATE 11,54:PRINT D$:LOCATE 11,60:PRINT A$
4050 LOCATE 12,2:PRINT O$:LOCATE 12,24:PRINT H$:LOCATE 12,39:PRINT D$:LOCATE 12,53:PRINT D$:LOCATE 12,59:PRINT B$
4060 LOCATE 13,2:PRINT O$:LOCATE 13,25:PRINT F$:LOCATE 13,39:PRINT Q$:LOCATE 13,58:PRINT C$
4070 LOCATE 14,2:PRINT D$:LOCATE 14,8:PRINT I$:LOCATE 14,26:PRINT D$:LOCATE 14,39:PRINT D$:LOCATE 14,57:PRINT D$
4080 LOCATE 15,2:PRINT D$:LOCATE 15,9:PRINT H$:LOCATE 15,26:PRINT D$:LOCATE 15,39:PRINT D$:LOCATE 15,57:PRINT D$
4090 LOCATE 16,2:PRINT D$:LOCATE 16,10:PRINT G$:LOCATE 16,26:PRINT D$:LOCATE 16,39:PRINT D$:LOCATE 16,57:PRINT D$
4100 LOCATE 17,2:PRINT D$:LOCATE 17,11:PRINT F$:LOCATE 17,26:PRINT D$:LOCATE 17,39:PRINT D$:LOCATE 17,57:PRINT D$:LOCATE 17,73:PRINT C$
4110 LOCATE 18,2:PRINT D$:LOCATE 18,12:PRINT E$:LOCATE 18,26:PRINT D$:LOCATE 18,39:PRINT D$:LOCATE 18,58:PRINT D$:LOCATE 18,72:PRINT C$
4120 LOCATE 19,2:PRINT D$:LOCATE 19,13:PRINT D$:LOCATE 19,26:PRINT D$:LOCATE 19,39:PRINT D$:LOCATE 19,59:PRINT O$
4130 RETURN
4140 LOCATE 6,40:PRINT "p":FOR TT=1 TO 50:NEXT:LOCATE 6,40:PRINT " "
4150 'NYPC.MUS
4160 PLAY "mbmlo3c4o2b8o3c8o2a4o2g1
4170 PLAY "o3c4o2b8o3c8.o2a8o2g1
4180 PLAY "o2bo3c4d4e4e-8e4e-8e2g4e4g4e2.p32
4190 RETURN
4200 '
4210 PLAY "mbo3e4f4g4a4f4e4d4g16.p64g8e4d4c4e1p32
4220 PLAY "o3g4a4b-4b8a8g8b1p64a8g8f8a1p32
4230 RETURN
4240 '
4250 PLAY "mbo3c4o2b8o3c8o2a4o2g1
4260 PLAY "o3c4o2b8o3c8.o2a8o2g1
4270 PLAY "o3g4f+4f4e4e-8e4e-8e2p32g4e4g4a2.p32
4280 RETURN
4290 '
4300 PLAY "mbmlo3g4f4eo4c2o3a4g2p32f4e4d4o4c2o3g4f2p32
4310 PLAY "o3e4f4g4a2p32g2a2p32o4c4o3o3a4o4c1
4320 RETURN

PRAELUD1.BAS

100 ' PRAELUDIUM I FROM THE WELL-TEMPERED CLAVIER BY J. S. BACH
110 ' REALIZED BY JOHN D. BRINK, RIVER FOREST, IL. 0CTOBER 1983
120 '
130 SCREEN 0,1: WIDTH 80: COLOR 5,1,2: KEY OFF: CLS
140 PLAY "MB L16 T132 MS"
150 FOR I=1 TO 35
160     READ M$
170     PRINT I;" ";M$
180     PLAY M$
190     NEXT I
200 FOR I = 1 TO 1500: NEXT I
210 COLOR 7,0,0: KEY ON: CLS: END
220 '
230 DATA " O2 C E G O3 C E O2 G O3 C E   O2 C E G O3 C E O2 G O3 C E "
240 DATA " O2 C D A O3 D F O2 A O3 D F   O2 C D A O3 D F O2 A O3 D F "
250 DATA " O1BO2D G O3 D F O2 G O3 D F   O1BO2D G O3 D F O2 G O3 D F "
260 DATA " O2 C E G O3 C E O2 G O3 C E   O2 C E G O3 C E O2 G O3 C E "
270 DATA " O2 C E A O3 E A O2 A O3 E A   O2 C E A O3 E A O2 A O3 E A "
280 DATA " O2 C D F#A O3 D O2 F#A O3 D   O2 C D F#A O3 D O2 F#A O3 D "
290 DATA " O1BO2D G O3 D G O2 G O3 D G   O1BO2D G O3 D G O2 G O3 D G "
300 DATA " O1BO2C E G O3 C O2 E G O3 C   O1BO2C E G O3 C O2 E G O3 C "
310 '
320 DATA " O1AO2C E G O3 C O2 E G O3 C   O1AO2C E G O3 C O2 E G O3 C "
330 DATA "O1D AO2D F#O3 C O2 D F#O3 C   O1D AO2D F#O3 C O2 D F#O3 C "
340 DATA "O1 G B O2 D G B D G B         O1 G B O2 D G B D G B "
350 DATA "O1GA#O2E G O3 C#O2 E G O3 C#  O1GA#O2E G O3 C#O2 E G O3 C#"
360 DATA "O1F AO2D A O3 D O2 D A O3 D   O1F AO2D A O3 D O2 D A O3 D "
370 DATA "O1 F G#O2 D F B D F B         O1 F G#O2 D F B D F B "
380 DATA "O1EG O2C G O3 C O2 C G O3 C   O1EG O2C G O3 C O2 C G O3 C "
390 DATA "O1 E F A O2 C F O1 A O2 C F   O1 E F A O2 C F O1 A O2 C F "
400 '
410 DATA "O1 D F A O2 C F O1 A O2 C F   O1 D F A O2 C F O1 A O2 C F "
420 DATA "O0GO1D G B O2 F O1 G B O2 F   O0GO1D G B O2 F O1 G B O2 F "
430 DATA "O1 C E G O2 C E O1 G O2 C E   O1 C E G O2 C E O1 G O2 C E "
440 DATA "O1 C G A#O2 C E O1 A#O2 C E   O1 C G A#O2 C E O1 A#O2 C E "
450 DATA "O0FO1F A O2 C E O1 A O2 C E   O0FO1F A O2 C E O1 A O2 C E "
460 DATA "O0F#O1CA O2 C D#O1 A O2 C D#  O0F#O1CA O2 C D#O1 A O2 C D#"
470 DATA "O0G O1D#B O2C D#O1 B O2 C D#  O0G O1D#B O2C D#O1 B O2 C D#"
480 DATA "O0G#O1FB O2 C D O1 B O2 C D   O0G#O1FB O2 C D O1 B O2 C D "
490 '
500 DATA "O0G O1FG B O2 D O1 G B O2 D   O0G O1FG B O2 D O1 G B O2 D "
510 DATA "O0G O1EG O2 C E O1 G O2 C E   O0G O1EG O2 C E O1 G O2 C E "
520 DATA "O0G O1DG O2 C F O1 G O2 C F   O0G O1DG O2 C F O1 G O2 C F "
530 DATA "O0G O1DG B O2 F O1 G B O2 F   O0G O1DG B O2 F O1 G B O2 F "
540 DATA "O0G O1D#A O2C F#O1 A O2 C F#  O0G O1D#A O2C F#O1 A O2 C F#"
550 DATA "O0G O1E G O2C G O1 G O2 C G   O0G O1E G O2C G O1 G O2 C G "
560 DATA "O0G O1D G O2C F O1 G O2 C F   O0G O1D G O2C F O1 G O2 C F "
570 DATA "O0G O1DG B O2 F O1 G B O2 F   O0G O1DG B O2 F O1 G B O2 F "
580 '
590 DATA "O0C O1CG A#O2 E O1 G A#O2 E   O0C O1CG A#O2 E O1 G A#O2 E "
600 DATA "T105 O0C O1C F A O2C F C O1A  O2C O1A F A F D F D "
610 DATA "T090 O0C B O2G B O3D F D O2B  O3D O2B G B D F E D C1"
620 '   THAT'S ALL, FOLKS!

PRAELUD2.BAS

100 ' PRAELUDIUM II FROM THE WELL-TEMPERED CLAVIER BY J. S. BACH
110 ' REALIZED AND TRANSCRIBED FOR PC BY JOHN D. BRINK, OCTOBER 1983
120 SCREEN 0,1:    WIDTH 80: COLOR 5,1,2: KEY OFF: CLS: PLAY "MB L32 T096 MS"
130 FOR I=1 TO 74: READ M$:  PRINT I;" ";M$:            PLAY M$:  NEXT I
140 FOR I = 1 TO 1500:       NEXT I:      COLOR 7,0,0:  KEY ON:   CLS:  END
150 DATA " O3C O1C O2D#O1G O2D O1F O2D#O1G   O2C O1D#O2D#O1G O2D O1F O2D#O1G "
160 DATA " O3C O1C O2D#O1G O2D O1F O2D#O1G   O2C O1D#O2D#O1G O2D O1F O2D#O1G "
170 DATA " O2G#O1C O2F O1G#O2E O1G O2F O1G#  O2C O1F O2F O1G#O2E O1G O2F O1G#"
180 DATA " O2G#O1C O2F O1G#O2E O1G O2F O1G#  O2C O1F O2F O1G#O2E O1G O2F O1G#"
190 DATA " O2B O1C O2F O1G#O2D#O1G O2F O1G#  O2D O1F O2F O1G#O2D#O1G O2F O1G#"
200 DATA " O2B O1C O2F O1G#O2D#O1G O2F O1G#  O2D O1F O2F O1G#O2D#O1G O2F O1G#"
210 DATA " O3C O1C O2G O1D#O2F O1D O2G O1D#  O2D#O1G O2G O1D#O2F O1D O2G O1D#"
220 DATA " O3C O1C O2G O1D#O2F O1D O2G O1D#  O2D#O1G O2G O1D#O2F O1D O2G O1D#"
230 '
240 DATA " O3D#O1C O2G#  C   G O1A#O2G#  C   O2D#O1G#O2G#  C   G O1A#O2G#  C "
250 DATA "O3D#O1C O2G#  C   G O1A#O2G#  C   O2D#O1G#O2G#  C   G O1A#O2G#  C "
260 DATA "O3D O1C O2F#O1A O2E O1G O2F#O1A   O2D O1F#O2F#O1A O2E O1G O2F#O1A "
270 DATA "O3D O1C O2F#O1A O2E O1G O2F#O1A   O2D O1F#O2F#O1A O2E O1G O2F#O1A "
280 DATA "O3D O0A#O2G O1A#O2F#O1A O2G O1A#  O2D O1G O2G O1A#O2F#O1A O2G O1A#"
290 DATA "O3D O0A#O2G O1A#O2F#O1A O2G O1A#  O2D O1G O2G O1A#O2F#O1A O2G O1A#"
300 DATA "O3C O0A#O2E O1G O2D O1F O2E O1G   O2C O1E O2E O1G O2D O1F O2E O1G "
310 DATA "O3C O0A#O2E O1G O2D O1F O2E O1G   O2C O1E O2E O1G O2D O1F O2E O1G "
320 '
330 DATA "O3C O0G#O2F O1G#O2E O1G O2F O1G#  O2C O1F O2F O1G#O2E O1G O2F O1G#"
340 DATA "O3C O0G#O2F O1G#O2E O1G O2F O1G#  O2C O1F O2F O1G#O2E O1G O2F O1G#"
350 DATA "O2A#O0G#O2F O1D O2D#O1C O2F O1D   O2D O1F O2F O1D O2D#O1C O2F O1D "
360 DATA "O2A#O0G#O2F O1D O2D#O1C O2F O1D   O2D O1F O2F O1D O2D#O1C O2F O1D "
370 DATA "O2A#O0G O2G O1D#O2F O1D O2G O1D#  O2D#O1G O2G O1D#O2F O1D O2G O1D#"
380 DATA "O2A#O0G O2G O1D#O2F O1D O2G O1D#  O2D#O1G O2G O1D#O2F O1D O2G O1D#"
390 DATA "O2G#O1C O2G O1D#O2F O1D O2G O1D#  O2D#O1G#O2G O1D#O2F O1D O2G O1D#"
400 DATA "O2G#O1C O2G O1D#O2F O1D O2G O1D#  O2D#O1G#O2G O1D#O2F O1D O2G O1D#"
410 '
420 DATA "O2G#O1D O2D O1F O2C O1D#O2D O1F     A#  G#O2D O1F O2C O1D#O2D O1F "
430 DATA "O2G#O1D O2D O1F O2C O1D#O2D O1F     A#  G#O2D O1F O2C O1D#O2D O1F "
440 DATA "O2G O1D#  A#  G   G#  F   A#  G   O2D#O1G#  A#  G   G#  G   A#  G "
450 DATA "O2G O1D#  A#  G   G#  F   A#  G   O2D#O1G#  A#  G   G#  G   A#  G "
460 DATA "O2F O1D#O2C O1A   A#  G O2C O1G     A   F O2C O1A   A#  G O2C O1A "
470 DATA "O2F O1D#O2C O1A   A#  G O2C O1G     A   F O2C O1A   A#  G O2C O1A "
480 DATA "O2F O1D O2D O1F O2C O1D#O2D O1F     B   G#O2D O1F O2C O1D#O2D O1F "
490 DATA "O2F O1D O2D O1F O2C O1D#O2D O1F     B   G#O2D O1F O2C O1D#O2D O1F "
500 '
510 DATA "O2F O1C O2D O1F O2C O1E O2D O1F     B   G#O2D O1F O2C O1E O2D O1F "
520 DATA "O2F O1C O2D O1F O2C O1E O2D O1F     B   G#O2D O1F O2C O1E O2D O1F "
530 DATA "O2D#O1C O2C O1D#  B O1D O2C O1D#    G   F O2C O1D#  B O1D O2C O1D#"
540 DATA "O2D#O1C O2C O1D#  B O1D O2C O1D#    G   F O2C O1D#  B O1D O2C O1D#"
550 DATA "O1F O0G#O2D#O1C O2D O0B O2D#O1C   O2F O1F O2D#O1C O2D O0B O2D#O1C "
560 DATA "O1F O0G#O2D#O1C O2D O0B O2D#O1C   O2F O1F O2D#O1C O2D O0B O2D#O1C "
570 DATA "O1F#O0A O2C O1D#  B   D O2C O1D#  O2D#O1C O2C O1D#  B O1D O2C O1D#"
580 DATA "O1F#O0A O2C O1D#  B   D O2C O1D#  O2D#O1C O2C O1D#  B O1D O2C O1D#"
590 '
600 DATA "O2D#O0G O2C O1D#  B   D O2C O1D#    G   F O2C O1D#  B O1D O2C O1D#"
610 DATA "O2D#O0G O2C O1D#  B   D O2C O1D#    G   F O2C O1D#  B O1D O2C O1D#"
620 DATA "O2F#O0G O2C O1D#  B   D O2C O1D#    A   C O2C O1D#  B O1D O2C O1D#"
630 DATA "O2F#O0G O2C O1D#  B   D O2C O1D#    A   C O2C O1D#  B O1D O2C O1D#"
640 DATA "O2G O0G O2C O1D#  B   D O2C O1D#  O2D O1F O2C O1D#  B O1D O2C O1D#"
650 DATA "O2G O0G O2C O1D#  B   D O2C O1D#  O2D O1F O2C O1D#  B O1D O2C O1D#"
660 DATA "O2G#O0G O2C O1D#  B   D O2C O1D#  O2D O1F O2C O1D#  B O1D O2C O1D#"
670 DATA "O2G#O0G O2C O1D#  B   D O2C O1D#  O2D O1F O2C O1D#  B O1D O2C O1D#"
680 '
690 DATA "O0G   G   B   B O1D   D   F   F     G#  G#  F   F   E   E   F   F "
700 DATA "O1B   B   F   F O2D   D O1B   B     G#  G#  F   F   E   E   F   F "
710 DATA "O0G   G O1C   C   D#  D#  G   G   O2C   C O1G   G   F#  F#  G   G "
720 DATA "O2D#  D#  C   C   G   G   D#  D#    C   C O1G#  G#  G   G   G#  G#"
730 DATA "O0G   G   A   A O1F#  F#O2C   C     D#  D#  C   C O1B   B O2C   C "
740 DATA "O2F#  F#  C   C   A   A   F#  F#    D#  D#  C   C O1B   B O2C   C "
750 '
760 DATA "O0G   G O3D O0G O3C O0G O3D O0G   O3D#O0G O3C O0G O2B O0G O3C O0G "
770 DATA "O2A O0G O3C O0G O2B O0G O3C O0G   O3D O0G O2B O0G O2A O0G O2B O0G "
780 DATA "O2G O0G O2B   D   A   C   B   D   O3C O2D#  A   C O1B O2G O2A   C "
790 DATA "O2F#O1A O2A   C   G O1B O2A   C   O2B   D   G O1B O2F#O1A O2G O1B "
800 DATA "O2D O1G O3G O1B O3F O1A O3G O1B   O3G#O2C O3F O1G#O3D#O1G O3F O1G#"
810 DATA "O3D O1F O3F O1A O3D#O1G O3F O1A   O3G O1B O3D#O1G O3D O1F O3D#O1G "
820 '
830 DATA "O3C O1D#O3D#O2G O3D O2F O3D#O2G   O3F O2G#O3D O2F O3C O2D#O3D O2F "
840 DATA "O2B   D O3D O2F O3C O2D#O3D O2F   O3D#O2G O3C O2D#  B O2D O3C O2D#"
850 DATA "O2G   C O3C O2D#  B   D O3C O2D#    G#  F O3F O2D O3D#O2C O3F O2D "
860 DATA "O2G   D#O3D#O2C O3D O1B O3D#O2C     F   D O3D O1B O3C O1A O3D O1B "
870 DATA "O2D#  C O3C O2D#  B   D O3C O2D#    G#O1F O2F   D   D#  C   F   D "
880 DATA "O2G O1D#O2D#  C   D O1B O2D#  C     F O1D O2D O1B O2C O1A O2D O1B "
890 '
900 DATA "O2 ML E8 MS ECDE FGG#A# O3C O2 A#G#GF16 L32 GE "
910 DATA "O2 ML F8 MS FGFEFGG#G FD#DD#FDD#F"
920 DATA "L16 O1 B O0 C B O1 D F G#G F B F O2 D O1F B G#G F "
930 DATA "T88 O1 E O2 C# O1 A#G O2 C O1 G#F G#G A#G E G#F D F "
940 DATA "T80 O1 E G E C F D O0 B O1 D O0 C G O1 C D E G A# G"
950 DATA "T72 O1 G# O2 C F D F G# O3 C O2 B O3 C. O2 G. F. D. L32"
960 DATA "O2EO1CO0C O2EO1CO0C O2EO1CO0C O2EO1CO0C O2EO0CO1C"
970 DATA "O2EO1CO0C O2EO1CO0C O2EO1CO0C O2E4."
980 '   THAT'S ALL, FOLKS!

RAIL.BAS

10 PLAY "O1F4O2A64O3C64F64P64P8P16"
20 PLAY "O1C4O2A64O3C64F64P64P8P16"
30 PLAY "O1F4O2A64O3C64F64P64P8P16"
40 PLAY "O1C4O2A64O3C64F64P64P8O4F16"
50 PLAY "O1F4O2A64O3C64F64P64P8P16"
60 PLAY "O1C8O4C8O2C64O3C64F64P64P8O4F16"
70 PLAY "O1F8O4C8O2A64O3C64F64P64P8O4F16"
80 PLAY "O1C8O4G8O2C64O3C64F64P64P8O4A16"
90 PLAY "O1F4O2C64O3C64F64P64P8P16"
100 PLAY "O1C4O2A64O3C64F64P64P8O4F16"
110 PLAY "O1F4O2A64O3C64F64P64P8P16"
120 PLAY "O2A64O3C64E64P64P8P16"
130 PLAY "O2A64O3C64E-64P64P8O4B-16"
140 PLAY "O0B-4O2F64B-64O3D64P64P8P16"
150 PLAY "O0F8O4B-8O2F64B-64O3D64P64P8O4F16"
160 PLAY "O0B-4O2F64B-64O3D64P64P8O4G16"
170 PLAY "O1C4G64O2E64O3C64P64P8O4A16"
180 PLAY "O1F4O2A64O3C64F64P64P8P16"
190 PLAY "O1C4O2A64O3C64F64P64P8P16"
200 PLAY "O1F4C4D4E8O4F8"
210 PLAY "o1f4o2a64o3c64f64p64p8p16"
220 PLAY "o1c8o4c8o2a64o3c64f64p64p8o4f16"
230 PLAY "o1f8o4c8o2a64o3c64f64p64p8o4f16"
240 PLAY "o1c8o4g8o2a64o3c64f64p64p8o4a16"
250 PLAY "o1f4o2a64o3c64f64p64p8p16"
260 PLAY "o1c4o2a64o3c64f64p64p8o4f16"
280 PLAY "o1f4o2a64o3c64f64p64p8o4a16"
290 PLAY "o1f8o4a8o2a64o3c64f64p64p8o4a16"
300 PLAY "o1g4o2g64b64o3d64f64p8o4g16"
310 PLAY "o1d4o2g64b64o3d64f64p8o4g16"
320 PLAY "o1g4o2g64b64o3d64f64p8o4a16"
330 PLAY "o1d4d-8p16o4g16"
340 PLAY "o1c4o2g64o3c64e64p64p8p16"
350 PLAY "o1g4o2g64o3c64e64p64p8p16"
360 PLAY "o1c4o2g64o3c64e64p64p8p16"
370 PLAY "o0g4o2g64o3c64e64p64p8o4g16"
380 PLAY "o1c4 o2g64o3c64e64p64p8p16"
390 PLAY "o1g8o4g8o2g64o3c64e64p64p8o4g-16"
400 PLAY "o1c8o4g8o2g64o3c64e64p64p8o4a16"
410 PLAY "o1d8o4g8o1e8o4f8"
420 PLAY "o1f4o2a64o3c64f64p64p8p16"
430 PLAY "o1c4o2a64o3c64f64p64p8o4c16"
440 PLAY "o1f4g4a-4a8o4b-8"
460 PLAY "o0b-4o2f64b-64o3d64f64p8p16o4b-16"
470 PLAY "o1f8o4b-8o2f64b-64o3d64f64p8p16o4f16"
480 PLAY "o0b-8o4f8o2f64b-64o3d64f64p8p16o4g16"
490 PLAY "o1c8o4g8o0b-8o4a8"
500 PLAY "o0a4o2e64a64o3c#64p64p8p16"
510 PLAY "o1e4o2e64a64o3c#64p64p8p16"
520 PLAY "o1a4o2e64a64o3c#64p64p8p16"
530 PLAY "o0a4o2e64a64o3c#64p64p8o4d16"
540 PLAY "o0b-4o2f64b-64o3d64f64p8p16"
550 PLAY "o1f8o4e8o2f64b-64o3d64f64p8o4f16"
560 PLAY "o0b-8o4e8o2f64b-64o3d64f64p8o4f16"
570 PLAY "o1f8o4d8o2f64b-64o3d64f64p8o4c16"
580 PLAY "o1f4o2a64o3c64f64p64p8p16"
590 PLAY "o1c4o2a64o3c64f64p64p8o4f16"
600 PLAY "o1d4o2f64a64o3d64p64p8p16"
610 PLAY "o1d-4o2f64a64o3d-64p64p8o4a16"
620 PLAY "o1c4o2a64o3c64f64p64p8o4b-16"
630 PLAY "o1d4o2a64o3c64f64p64p8o4a16"
640 PLAY "o1e4o2g64b-64o3c64e64p8o4g16"
650 PLAY "o1c4o2g64b-64o3c64e64p8o4f16"
660 PLAY "t140o2f4c4f4c8o4a8"
670 PLAY "o2f16o4a16a16a32f32o2c16o4f16f16c16"
680 PLAY "o2f8o4f8o2c8o4a8"
690 PLAY "o2f16o4a16a16a32f32o2c16o4f16f16g16"
700 PLAY "o2c8d8e-8e16o4a32"
710 PLAY "o2f4o4a16a16a32f32o2c16o4f16f16b-16"
720 PLAY "o0b-8a8o5d8o0g2o5c16"
730 PLAY "o1c16o5c16c16c32o4b-32o1e8o4g16p32f32"
740 PLAY "o1f8c16o4d16o1d16o4f16o1e8"
750 PLAY "o4a4o4f4o4c16c16c16p16o4f4o4a8a8"
760 PLAY "o4f16f16f16p16o4g2o4a4o4f4o4b-16b-16b-16p16"
770 PLAY "o5d4o5c16c16c16c16o4b-8o4g8o4f4p4o4c32d32e32o4f8p8o1f4"
780 FOR I=1 TO 3000:NEXT I
790 CHAIN"A:CLASSICS.BAS"

SCALES.BAS

10 REM - This is SCALES
20 CLS: KEY OFF: COLOR 0,7,0
30 PRINT " Musical Scales "
40 REM - By Robert Braunwart
50 COLOR 7,0,0
60 DEF SEG = &H40 : POKE &H17, PEEK (&H17) AND 139
70 DIM I(15): DIM R$(15): DIM A(15)
80 PRINT: PRINT
90 PRINT "SEVENTEEN SCALE TYPES -- Major, Minor, Modal, Whole Tone and Pentatonic"
100 PRINT
110 PRINT "This program prints in letter names one octave upward, the major, the"
120 PRINT "natural, harmonic, melodic, and Hungarian minors, the Dorian, Phrygian,"
130 PRINT "Lydian, Mixolydian, and Locrian modes, and the whole tone, chromatic and"
140 PRINT "pentatonic scales.": PRINT
150 PRINT "Use a 3- or 4-character input:  the first 2 characters are the scale type,"
160 PRINT "and the 3rd character is the single letter tonic, or the last two char-"
170 PRINT "acters are the tonic degree or the key signature (for diatonic scales)."
180 PRINT
190 PRINT "SCALE TYPES -- ma na ha me do ph ly mi lo hu wh ch p1 p2 p3 p4 p5": PRINT
200 PRINT "EXAMPLES:  madb lyfb mieb phgb huf# hag# mea# whc# chc p3d lo0 do3# na6b"
210 A$="C C#D D#E F F#G G#A A#B C C#D D#E F F#G G#A A#B "
220 B$="B#C#D D#E E#F#G G#A A#B B#C#D D#E E#F#G G#A A#B "
230 C$="B#BxCxD#DxE#ExFxG#GxA#AxB#BxCxD#DxE#ExFxG#GxA#Ax"
240 D$="B#C#CxD#DxE#F#FxG#GxA#AxB#C#CxD#DxE#F#FxG#GxA#Ax"
250 E$="B#C#CxD#E E#F#FxG#A A#B B#C#CxD#E E#F#FxG#A A#B "
260 F$="C C#CxD#E E#F#FxG#GxA#B C C#CxD#E E#F#FxG#GxA#B "
270 G$="C DbD EbE F GbG AbA BbB C DbD EbE F GbG AbA BbB "
280 H$="C DbD EbFbF GbG AbA BbCbC DbD EbFbF GbG AbA BbCb"
290 I$="DdDbEdFdFbGdGbAdAbBdCdCbDdDbEdFdFbGdGbAdAbBdCdCb"
300 J$="C DbEdEbFbF GbG AbBdBbCbC DbEdEbFbF GbG AbBdBbCb"
310 K$="DdDbEdEbFbF GbAdAbBdBbCbDdDbEdEbFbF GbAdAbBdBbCb"
320 L$="C C#D EbE F F#G G#A BbB C C#D EbE F F#G G#A BbB "
330 M$="C C#D EbE F F#G AbA BbB C C#D EbE F F#G AbA BbB "
340 GOTO 360
350 PRINT: PRINT "No such scale."
360 PRINT: PRINT: PRINT TAB(8);"Which type of scale is wanted ('x' to end)";
370 INPUT N$
380 IF N$="" THEN PRINT: GOTO 190
390 IF N$="x" THEN 3510
400 O$="manahamedophlymilohuwhchp1p2p3p4p5"
410 FOR X=1 TO 34 STEP 2
420 IF LEFT$(N$,2)=MID$(O$,X,2) THEN 440
430 NEXT X
440 Q=(X+1)/2
450 IF ASC(MID$(N$,3,1))>96 THEN P$=CHR$(ASC(MID$(N$,3,1))-32): GOTO 470
460 P$=MID$(N$,3,1)
470 IF P$="H" THEN P$="B"
480 IF ASC(P$)>73 GOTO 350
490 Q$=MID$(N$,4,1)
500 IF Q$="" THEN Q$=" "
510 R$(1)=P$+Q$: GOTO 570
520 FOR X=1 TO 150 STEP 2
530 IF R$(1)=MID$(A$,X,2) THEN 550
540 NEXT X
550 R=X
560 RETURN
570 N=7: PRINT
580 ON Q GOTO 590, 840, 1100, 1230, 1360, 1620, 1870, 2110, 2370, 2610, 2770, 2830, 2900, 2960, 3020, 3080, 3140, 350
590 IF R$(1)="0 " THEN R$(1)="C ":
600 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="G "
610 IF R$(1)="2#" THEN R$(1)="D "
620 IF R$(1)="3#" THEN R$(1)="A "
630 IF R$(1)="4#" THEN R$(1)="E "
640 IF R$(1)="5#" THEN R$(1)="B "
650 IF R$(1)="6#" THEN R$(1)="F#"
660 IF R$(1)="7#" THEN R$(1)="C#"
670 IF R$(1)="1b" THEN R$(1)="F "
680 IF R$(1)="2b" THEN R$(1)="Bb"
690 IF R$(1)="3b" THEN R$(1)="Eb"
700 IF R$(1)="4b" THEN R$(1)="Ab"
710 IF R$(1)="5b" THEN R$(1)="Db"
720 IF R$(1)="6b" THEN R$(1)="Gb"
730 IF R$(1)="7b" THEN R$(1)="Cb"
740 PRINT: PRINT "Major (Ionian) Scale on ";R$(1)
750 IF R$(1)="G#" THEN A$=D$: GOTO 810
760 IF R$(1)="C#" OR R$(1)="F#" THEN A$=B$: GOTO 810
770 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=C$: GOTO 810
780 IF R$(1)="Gb" OR R$(1)="Cb" THEN A$=H$: GOTO 810
790 IF R$(1)="Fb" THEN A$=J$: GOTO 810
800 IF R$(1)="F " OR Q$="b" THEN A$=G$
810 GOSUB 520
820 I(1)=2: I(2)=4: I(3)=5: I(4)=7: I(5)=9: I(6)=11: I(7)=12
830 GOTO 3190
840 IF R$(1)="0 " THEN R$(1)="A ":
850 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="E "
860 IF R$(1)="2#" THEN R$(1)="B "
870 IF R$(1)="3#" THEN R$(1)="F#"
880 IF R$(1)="4#" THEN R$(1)="C#"
890 IF R$(1)="5#" THEN R$(1)="G#"
900 IF R$(1)="6#" THEN R$(1)="D#"
910 IF R$(1)="7#" THEN R$(1)="A#"
920 IF R$(1)="1b" THEN R$(1)="D "
930 IF R$(1)="2b" THEN R$(1)="G "
940 IF R$(1)="3b" THEN R$(1)="C "
950 IF R$(1)="4b" THEN R$(1)="F "
960 IF R$(1)="5b" THEN R$(1)="Bb"
970 IF R$(1)="6b" THEN R$(1)="Eb"
980 IF R$(1)="7b" THEN R$(1)="Ab"
990 PRINT: PRINT "Natural Minor (Aeolian) Scale on ";R$(1)
1000 IF R$(1)="E#" THEN A$=D$: GOTO 1070
1010 IF R$(1)="A#" OR R$(1)="C#" OR R$(1)="D#" THEN A$=B$: GOTO 1070
1020 IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1070
1030 IF R$(1)="Cb" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$: GOTO 1070
1040 IF R$(1)="Ab" OR R$(1)="Eb" OR R$(1)="G " THEN A$=H$: GOTO 1070
1050 IF R$(1)="Db" THEN A$=J$: GOTO 1070
1060 IF R$(1)="C " OR R$(1)="D " OR R$(1)="Fb" OR R$(1)="F " OR Q$="b" THEN A$=G$
1070 GOSUB 520
1080 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=10: I(7)=12
1090 GOTO 3190
1100 PRINT: PRINT "Harmonic Minor Scale on ";R$(1)
1110 IF R$(1)="D " OR R$(1)="G " THEN A$=L$: GOTO 1200
1120 IF R$(1)="A#" OR R$(1)="E#" THEN A$=D$: GOTO 1200
1130 IF R$(1)="B#" THEN A$=C$: GOTO 1200
1140 IF R$(1)="D#" OR R$(1)="G#" THEN A$=F$: GOTO 1200
1150 IF Q$="#" THEN A$=B$: GOTO 1200
1160 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=K$: GOTO 1200
1170 IF R$(1)="Db" OR R$(1)="Gb" THEN A$=J$: GOTO 1200
1180 IF Q$="b" THEN A$=H$: GOTO 1200
1190 IF R$(1)="C " OR R$(1)="F " THEN A$=G$
1200 GOSUB 520
1210 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=11: I(7)=12
1220 GOTO 3190
1230 PRINT: PRINT "Melodic Minor Scale on ";R$(1)
1240 IF R$(1)="G " THEN A$=L$: GOTO 1330
1250 IF R$(1)="A#" OR R$(1)="D#" THEN A$=D$: GOTO 1330
1260 IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1330
1270 IF R$(1)="G#" THEN A$=F$: GOTO 1330
1280 IF Q$="#" THEN A$=B$: GOTO 1330
1290 IF R$(1)="Cb" THEN A$=J$: GOTO 1330
1300 IF R$(1)="Fb" OR R$(1)="Gb" THEN A$=K$: GOTO 1330
1310 IF Q$="b" THEN A$=H$: GOTO 1330
1320 IF R$(1)="C " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
1330 GOSUB 520
1340 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=9: I(6)=11: I(7)=12
1350 GOTO 3190
1360 IF R$(1)="0 " THEN R$(1)="D ":
1370 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="A "
1380 IF R$(1)="2#" THEN R$(1)="E "
1390 IF R$(1)="3#" THEN R$(1)="B "
1400 IF R$(1)="4#" THEN R$(1)="F#"
1410 IF R$(1)="5#" THEN R$(1)="C#"
1420 IF R$(1)="6#" THEN R$(1)="G#"
1430 IF R$(1)="7#" THEN R$(1)="D#"
1440 IF R$(1)="1b" THEN R$(1)="G "
1450 IF R$(1)="2b" THEN R$(1)="C "
1460 IF R$(1)="3b" THEN R$(1)="F "
1470 IF R$(1)="4b" THEN R$(1)="Bb"
1480 IF R$(1)="5b" THEN R$(1)="Eb"
1490 IF R$(1)="6b" THEN R$(1)="Ab"
1500 IF R$(1)="7b" THEN R$(1)="Db"
1510 PRINT: PRINT "Dorian Mode on ";R$(1)
1520 IF R$(1)="A#" THEN A$=D$: GOTO 1590
1530 IF R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 1590
1540 IF Q$="#" THEN A$=B$: GOTO 1590
1550 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=I$: GOTO 1590
1560 IF R$(1)="Gb" THEN A$=J$: GOTO 1590
1570 IF R$(1)="Ab" OR R$(1)="Bb" OR R$(1)="Db" OR R$(1)="Eb" THEN A$=H$: GOTO 1590
1580 IF R$(1)="C " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
1590 GOSUB 520
1600 I(1)=2: I(2)=3: I(3)=5: I(4)=7: I(5)=9: I(6)=10: I(7)=12
1610 GOTO 3190
1620 IF R$(1)="0 " THEN R$(1)="E ":
1630 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="B "
1640 IF R$(1)="2#" THEN R$(1)="F#"
1650 IF R$(1)="3#" THEN R$(1)="C#"
1660 IF R$(1)="4#" THEN R$(1)="G#"
1670 IF R$(1)="5#" THEN R$(1)="D#"
1680 IF R$(1)="6#" THEN R$(1)="A#"
1690 IF R$(1)="7#" THEN R$(1)="E#"
1700 IF R$(1)="1b" THEN R$(1)="A "
1710 IF R$(1)="2b" THEN R$(1)="D "
1720 IF R$(1)="3b" THEN R$(1)="G "
1730 IF R$(1)="4b" THEN R$(1)="C "
1740 IF R$(1)="5b" THEN R$(1)="F "
1750 IF R$(1)="6b" THEN R$(1)="Bb"
1760 IF R$(1)="7b" THEN R$(1)="Eb"
1770 PRINT: PRINT "Phrygian Mode on ";R$(1)
1780 IF R$(1)="B#" THEN A$=D$: GOTO 1840
1790 IF R$(1)="A#" OR R$(1)="C#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="F#" OR R$(1)="G#" THEN A$=B$: GOTO 1840
1800 IF R$(1)="Bb" OR R$(1)="Eb" THEN A$=H$: GOTO 1840
1810 IF R$(1)="Ab" THEN A$=J$: GOTO 1840
1820 IF R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$: GOTO 1840
1830 IF R$(1)="A " OR R$(1)="C " OR R$(1)="D " OR R$(1)="F " OR R$(1)="G " THEN A$=G$
1840 GOSUB 520
1850 I(1)=1: I(2)=3: I(3)=5: I(4)=7: I(5)=8: I(6)=10: I(7)=12
1860 GOTO 3190
1870 IF R$(1)="0 " THEN R$(1)="F ":
1880 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="C "
1890 IF R$(1)="2#" THEN R$(1)="G "
1900 IF R$(1)="3#" THEN R$(1)="D "
1910 IF R$(1)="4#" THEN R$(1)="A "
1920 IF R$(1)="5#" THEN R$(1)="E "
1930 IF R$(1)="6#" THEN R$(1)="B "
1940 IF R$(1)="7#" THEN R$(1)="F#"
1950 IF R$(1)="1b" THEN R$(1)="Bb"
1960 IF R$(1)="2b" THEN R$(1)="Eb"
1970 IF R$(1)="3b" THEN R$(1)="Ab"
1980 IF R$(1)="4b" THEN R$(1)="Db"
1990 IF R$(1)="5b" THEN R$(1)="Gb"
2000 IF R$(1)="6b" THEN R$(1)="Cb"
2010 IF R$(1)="7b" THEN R$(1)="Fb"
2020 PRINT: PRINT "Lydian Mode on ";R$(1)
2030 IF R$(1)="C#" THEN A$=D$: GOTO 2080
2040 IF R$(1)="B " OR R$(1)="F#" THEN A$=B$: GOTO 2080
2050 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=C$: GOTO 2080
2060 IF R$(1)="Bb" OR R$(1)="F " THEN A$=G$: GOTO 2080
2070 IF R$(1)="Ab" OR R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Eb" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=H$
2080 GOSUB 520
2090 I(1)=2: I(2)=4: I(3)=6: I(4)=7: I(5)=9: I(6)=11: I(7)=12
2100 GOTO 3190
2110 IF R$(1)="0 " THEN R$(1)="G "
2120 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="D "
2130 IF R$(1)="2#" THEN R$(1)="A "
2140 IF R$(1)="3#" THEN R$(1)="E "
2150 IF R$(1)="4#" THEN R$(1)="B "
2160 IF R$(1)="5#" THEN R$(1)="F#"
2170 IF R$(1)="6#" THEN R$(1)="C#"
2180 IF R$(1)="7#" THEN R$(1)="G#"
2190 IF R$(1)="1b" THEN R$(1)="C "
2200 IF R$(1)="2b" THEN R$(1)="F "
2210 IF R$(1)="3b" THEN R$(1)="Bb"
2220 IF R$(1)="4b" THEN R$(1)="Eb"
2230 IF R$(1)="5b" THEN R$(1)="Ab"
2240 IF R$(1)="6b" THEN R$(1)="Db"
2250 IF R$(1)="7b" THEN R$(1)="Gb"
2260 PRINT: PRINT "Mixolydian Mode on ";R$(1)
2270 IF R$(1)="D#" THEN A$=D$: GOTO 2340
2280 IF R$(1)="C#" OR R$(1)="G#" THEN A$=B$: GOTO 2340
2290 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="E#" THEN A$=C$: GOTO 2340
2300 IF R$(1)="Fb" THEN A$=I$: GOTO 2340
2310 IF R$(1)="Bb" OR R$(1)="C " OR R$(1)="F " THEN A$=G$
2320 IF R$(1)="Cb" THEN A$=J$: GOTO 2340
2330 IF R$(1)="Ab" OR R$(1)="Db" OR R$(1)="Eb" OR R$(1)="Gb" THEN A$=H$
2340 GOSUB 520
2350 I(1)=2: I(2)=4: I(3)=5: I(4)=7: I(5)=9: I(6)=10: I(7)=12
2360 GOTO 3190
2370 IF R$(1)="0 " THEN R$(1)="B "
2380 IF R$(1)="1#" OR R$(1)="# " THEN R$(1)="F#"
2390 IF R$(1)="2#" THEN R$(1)="C#"
2400 IF R$(1)="3#" THEN R$(1)="G#"
2410 IF R$(1)="4#" THEN R$(1)="D#"
2420 IF R$(1)="5#" THEN R$(1)="A#"
2430 IF R$(1)="6#" THEN R$(1)="E#"
2440 IF R$(1)="7#" THEN R$(1)="B#"
2450 IF R$(1)="1b" THEN R$(1)="E "
2460 IF R$(1)="2b" THEN R$(1)="A "
2470 IF R$(1)="3b" THEN R$(1)="D "
2480 IF R$(1)="4b" THEN R$(1)="G "
2490 IF R$(1)="5b" THEN R$(1)="C "
2500 IF R$(1)="6b" THEN R$(1)="F "
2510 IF R$(1)="7b" THEN R$(1)="Bb"
2520 PRINT: PRINT "Locrian Mode on ";R$(1)
2530 IF R$(1)="A#" OR R$(1)="B#" OR R$(1)="C#" OR R$(1)="D#" OR R$(1)="E#" OR R$(1)="G#" THEN A$=B$: GOTO 2580
2540 IF R$(1)="Bb" OR R$(1)="F " THEN A$=H$: GOTO 2580
2550 IF R$(1)="A " OR R$(1)="B " OR R$(1)="C " OR R$(1)="D " OR R$(1)="E " OR R$(1)="G " THEN A$=G$: GOTO 2580
2560 IF R$(1)="Eb" THEN A$=J$: GOTO 2580
2570 IF R$(1)="Ab" OR R$(1)="Cb" OR R$(1)="Db" OR R$(1)="Fb" OR R$(1)="Gb" THEN A$=I$
2580 GOSUB 520
2590 I(1)=1: I(2)=3: I(3)=5: I(4)=6: I(5)=8: I(6)=10: I(7)=12
2600 GOTO 3190
2610 PRINT: PRINT "Hungarian (Gypsy) Minor on ";R$(1)
2620 IF R$(1)="C#" THEN A$=E$: GOTO 2740
2630 IF R$(1)="C " THEN A$=M$: GOTO 2740
2640 IF R$(1)="D " OR R$(1)="G " THEN A$=L$: GOTO 2740
2650 IF R$(1)="A#" OR R$(1)="E#" THEN A$=D$: GOTO 2740
2660 IF R$(1)="B#" THEN A$=C$: GOTO 2740
2670 IF R$(1)="D#" OR R$(1)="G#" THEN A$=F$: GOTO 2740
2680 IF R$(1)="B " OR R$(1)="F#" THEN A$=B$: GOTO 2740
2690 IF R$(1)="Ab" OR R$(1)="Eb" THEN A$=H$: GOTO 2740
2700 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=K$: GOTO 2740
2710 IF R$(1)="Bb" OR R$(1)="C " OR R$(1)="F " THEN A$=G$: GOTO 2740
2720 IF R$(1)="Db" OR R$(1)="Gb" THEN A$=J$: GOTO 2740
2730 IF Q$="b" THEN D$=G$
2740 GOSUB 520
2750 I(1)=2: I(2)=3: I(3)=6: I(4)=7: I(5)=8: I(6)=11: I(7)=12
2760 GOTO 3190
2770 PRINT: PRINT "Whole Tone Scale on ";R$(1)
2780 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2800
2790 IF Q$="b" THEN A$=H$
2800 GOSUB 520
2810 N=6: I(1)=2: I(2)=4: I(3)=6: I(4)=8: I(5)=10: I(6)=12
2820 GOTO 3190
2830 PRINT: PRINT "Chromatic Scale on ";R$(1)
2840 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2870
2850 IF R$(1)="Cb" OR R$(1)="Fb" THEN A$=H$: GOTO 2870
2860 IF Q$="b" THEN A$=G$
2870 GOSUB 520
2880 N=12: I(1)=1: I(2)=2: I(3)=3: I(4)=4: I(5)=5: I(6)=6: I(7)=7: I(8)=8: I(9)=9: I(10)=10: I(11)=11: I(12)=12
2890 GOTO 3190
2900 PRINT: PRINT "First Pentatonic Scale on ";R$(1)
2910 IF R$(1)="B#" OR R$(1)="E#" OR R$(1)="F#" THEN A$=B$: GOTO 2930
2920 IF Q$="b" THEN A$=H$
2930 GOSUB 520
2940 N=5: I(1)=2: I(2)=5: I(3)=7: I(4)=9: I(5)=12
2950 GOTO 3190
2960 PRINT: PRINT "Second Pentatonic Scale on ";R$(1)
2970 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 2990
2980 IF Q$="b" THEN A$=H$
2990 GOSUB 520
3000 N=5: I(1)=3: I(2)=5: I(3)=7: I(4)=10: I(5)=12
3010 GOTO 3190
3020 PRINT: PRINT "Third Pentatonic Scale on ";R$(1)
3030 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3050
3040 IF Q$="b" THEN A$=H$
3050 GOSUB 520
3060 N=5: I(1)=2: I(2)=4: I(3)=7: I(4)=9: I(5)=12
3070 GOTO 3190
3080 PRINT: PRINT "Fourth Pentatonic Scale on ";R$(1)
3090 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3110
3100 IF Q$="b" THEN A$=H$
3110 GOSUB 520
3120 N=5: I(1)=2: I(2)=5: I(3)=7: I(4)=10: I(5)=12
3130 GOTO 3190
3140 PRINT: PRINT "Fifth Pentatonic Scale on ";R$(1)
3150 IF R$(1)="B#" OR R$(1)="E#" THEN A$=B$: GOTO 3170
3160 IF Q$="b" THEN A$=H$
3170 GOSUB 520
3180 N=5: I(1)=3: I(2)=5: I(3)=8: I(4)=10: I(5)=12
3190 FOR X=2 TO N+1
3200 R$(X)=MID$(A$,R+(2*I(X-1)),2)
3210 NEXT X
3220 FOR X=1 TO N+1
3230 IF RIGHT$(R$(X),1)="d" THEN R$(X)=LEFT$(R$(X),1)+"bb"
3240 IF RIGHT$(R$(X),1)="x" THEN R$(X)=LEFT$(R$(X),1)+"##"
3250 IF LEN(R$(X))=2 THEN R$(X)=R$(X)+" "
3260 NEXT X
3270 PRINT: FOR X=1 TO N+1: PRINT R$(X);"  ";
3280 NEXT X
3290 GOSUB 3330
3300 FOR X=1 TO N+1: PLAY "MBL4N"+STR$(A(X))
3310 NEXT X
3320 PRINT: GOTO 210
3330 FOR J=1 TO N+1
3340 IF R$(J)="Dbb" OR R$(J)="C  " OR R$(J)="B# " THEN A(J)=25: GOTO 3460
3350 IF R$(J)="Db " OR R$(J)="C# " OR R$(J)="B##" THEN A(J)=26: GOTO 3460
3360 IF R$(J)="Ebb" OR R$(J)="D  " OR R$(J)="C##" THEN A(J)=27: GOTO 3460
3370 IF R$(J)="Fbb" OR R$(J)="Eb " OR R$(J)="D# " THEN A(J)=28: GOTO 3460
3380 IF R$(J)="Fb " OR R$(J)="E  " OR R$(J)="D##" THEN A(J)=29: GOTO 3460
3390 IF R$(J)="Gbb" OR R$(J)="F  " OR R$(J)="E# " THEN A(J)=30: GOTO 3460
3400 IF R$(J)="Gb " OR R$(J)="F# " OR R$(J)="E##" THEN A(J)=31: GOTO 3460
3410 IF R$(J)="Abb" OR R$(J)="G  " OR R$(J)="F##" THEN A(J)=32: GOTO 3460
3420 IF R$(J)="Ab " OR R$(J)="G# " THEN A(J)=33: GOTO 3460
3430 IF R$(J)="Bbb" OR R$(J)="A  " OR R$(J)="G##" THEN A(J)=34: GOTO 3460
3440 IF R$(J)="Cbb" OR R$(J)="Bb " OR R$(J)="A# " THEN A(J)=35: GOTO 3460
3450 IF R$(J)="Cb " OR R$(J)="B  " OR R$(J)="A##" THEN A(J)=36
3460 NEXT J
3470 FOR J=1 TO N+1
3480 IF A(J)<A(J-1) THEN A(J)=A(J)+12
3490 NEXT J
3500 RETURN
3510 DEF SEG = &H40 : POKE &H17, PEEK (&H17) OR 96
3520 RUN "MUSICBOX

SFG-BACH.BAS



1 '  sfg.bas  Solfeggietto or, Solfaspaghettio
2 '   4 April 83               Richard Eaton
3 '                            ComputerLand Of Citrus Heights
4 '                            966 9092
5 KEY OFF:SCREEN 0,0:WIDTH 40:COLOR 8:CLS
6 DIM T$(30)
7 M$(1)="Solfeggietto"
8 M$(2)="C. Ph. E. Bach"
9 M$(0)="A Loose Rendition Of"
10 M$(3)="Never any faster"
11 M$(4)="than one can do"
12 M$(5)="well.  Use the"
13 M$(6)="pedal sparingly."
14 FOR I=0 TO 6
15     IF I <3 THEN OK = 1 :ELSE OK = 0
16     J = 4+X+I
17     LOCATE J,(39-LEN(M$(I)))/2
18     IF I=1 THEN COLOR 9:ELSE COLOR 1
19     PRINT M$(I);
20 X = X+OK
21 NEXT I
22 LOCATE 20,5
23 INPUT "Tempo (32 - 255) : ",SP
24 IF SP = 0 THEN SP = 60:ELSE IF SP<32 OR SP >255 THEN GOTO 23
25 LOCATE 20,23:PRINT SP;
26 TREB$="L32MbT=sp;O2"
27 T$(0)="L32o1e-ce-go2ce-dco1bgbo2dgfe-de-ce-g":T$(1)="o3ce-dcdco2bagfe-de-ce-go3c":T$(2)="e-dco2bbbo3dgfe-fe-"
28 T$(3)="o3l32ce-go4ce-dcdco3bagfe-de-co2ge-":T$(4)="co4co3ge-a-o1fa-o2cfa-o3ce-do2b-fdo1b-"
29 T$(5)="l32o3b-fdgo1e-gb-o2e-gb-o3dco2ag#ao3co2":T$(6)="agao3e-co2gao3e-co2gao3dco2f#a":T$(7)="O3ACO2F#AO3F#CO2DAO3CO2AF#DB-"
30 T$(8)="l32o0gb-o1dgb-agf#df#ao2dco1b-a":T$(9)="B-GB-O2DGB-AGAGF#EDCO1B-AB-A-B-O2DGB-AGF#DF#":T$(10)="AO3DCO2B-A-B-GB-O3DGB-AGAGF#AO2DCO1B-AB-GB-O3D":T$(11)="GDO2B-GP32O3GDO2BGBO3DGP32O2GO3G":T$(12)="O2GP32O2GO3GO2GO2B-GO3GO2GO2DGO3GO2G"
31 T$(13)="l32o3e-ce-go4co3ge-cp32o4co2gecego4c":T$(14)="p32o3co4co3co2ao3co4co3co2go3cb-cp32o3cb-cao0":T$(15)="fa-o1cfa-gfecego2co1b-a-gfgfao2cfagfgfedco1b-a-ga-fa-c"
32 T$(16)="l32o2fa-gfecego3co2b-a-ga-fa-co3fa-gfgfedc":T$(17)="b-a-ga-o3fco2a-fo3co2a-fca-fco1a-o2fco1a-o0l16d-.p32":T$(18)="l32o3a-fefgfefo0l16c.p32l32o2afefgf":T$(19)="efo0l16b-.p32l32o4do3fga-gfe-d"
33 T$(20)="o3e-go4do3gb-a-gfel16o0e-p16l32o3e-.l64e-de-dc":T$(21)="l32do2e-go3go2go0co2go3go2go0b-o2go3fo2go0do2go3fo2gb-g":T$(22)="o3eo2gp32o2go3eo2gl64fal32o3e-o5co3e-l64o3fal32o3e-o5c":T$(23)="o3e-o1a-o2fo3do2fo1a-o2fo3do2fl64e-gl32o3d-o4b-":T$(24)="
34 T$(25)="o0f#o2e-o3co2e-p32o2e-o3co2e-p32e-":T$(26)="o3co2e-o0f#o3co4co3co0f#o3co4co3co0go3ce-g":T$(27)="o4co3ge-cge-co2go3fdo2bfe-o1ce-go2ce-dco1bgbo2dgfe-de-ce-go3ce-d":T$(28)="CDCO2BAGFE-DE-CE-GO3CE-DCO2BGBO3DGFE-DE-CE-":T$(29)="GO4CE-DO3BO4C"
35 ' and here's the program....
36 FOR I=0 TO 29:PLAY TREB$+T$(I) :NEXT
37 LOCATE 25,1:PRINT "Any key...";
38 A$=INKEY$:IF A$="" THEN 38 ELSE WIDTH 80:END

SIREN.BAS

10 FOR N = 37 TO 2000 STEP 50
15 PRINT N
20 SOUND N,1
30 NEXT N
40 FOR N= 2000  TO 37 STEP -20
50 PRINT N
60 SOUND N,1
70 NEXT N
80 GOTO 10

SOUNDS.BAS

10 '            SOUNDS.BAS
20 '
30 '            By: Andrew Tuline
40 '
50 ' The sound generation on the IBM PC is performed mostly by the 8253 timer
60 'chip. This IC has 3 - 16 bit counters, each serving a different purpose
70 'on the system board.
80 '
90 '    Timer 0 is used for Dynamic Memory refresh.
100 '   Timer 1 is used for the time of day function.
110 '   Timer 2 is used for the speaker cassette interface.
120 '
130 '   The 8253 Timer is highly versatile and can be programmed for many
140 'different functions. These include a programmable rate generator, an
150 'event counter, a binary rate multiplier, real time clock, and others.
160 'The programmer may optinally change the mode of operation by addressing
170 'the control register. There are 2 registers for each counter, one for
180 'storing data to the timer and the other to read data from the timer.
190 'There are 6 modes of operation. Mode 3, the square wave generator will
200 'be discussed here. The control register is setup as follows:
210 '
220 '        -------------------------------------------------------------
230 'bit:    !  D7     D6   !  D5     D4   !  D3     D2     D1   !  D0   !
240 '        -------------------------------------------------------------
250 'def:    !  SC1    SC0  !  RL1    RL0  !  M2     M1     M0   !  BCD  !
260 '        -------------------------------------------------------------
270 '
280 'SC1,SC0 - Select the timer and must be 10 binary to select counter 2.
290 '
300 'RL1,RL0 - Read/Load
310 ' 0   0    Counter latching. When loaded, causes the present count to be
320 '          latched into a storage register for later reading.
330 ' 0   1    Read/Load LSB of counter only.
340 ' 1   0    Read/Load MSB of counter only.
350 ' 1   1    Read/Load LSB first then MSB.
360 '
370 'M2,M1,M0 - Select different modes. Must be 011 binary to select mode 3.
380 '
390 '  BCD   - Binary or Decimal counter.
400 '   0    - Sets counter to binary mode.
410 '   1    - Sets counter to decimal mode.
420 '
430 'Note: The larger the value loaded into the counter, the lower will be
440 'the resultant frequency. The number loaded sets the period of the
450 'tone which is the inverse of the frequency.
460 '
470 'Finally, the user must enable the speaker by setting a bit at I/O address
480 '61H (hexadecimal).
490 '
500 'Addresses
510 '
520 '42H - Counter 2 data register
530 '43H - Control register
540 '61H - Bit 1 enables disables the speaker.
550 '      Value of 4DH disables, 4FH enables.
560 '
570 'Examples
580 '
590 'Single Tone
600 OUT &H43,&HA6:'Binary 1010 0110
610 '              Read/Load MSB only
620 '              Mode 3
630 '              Counter 2
640 '              Binary Counter
650 OUT &H42,&H10:'Loads counter with 1000H
660 OUT &H61,&H4F
670 FOR I=1 TO 1000:NEXT
680 OUT &H61,&H4D:'disable speaker
690 '
700 'Increasing Frequency
710 OUT &H43,&HB7:'R/L LSB then MSB, Mode 3, BCD, Counter 2
720 OUT &H61,&H4F:'Enable speaker
730 FOR I=1000 TO 10 STEP -1:'Note: Decreasing value to be output
740 OUT &H42,I MOD 256:'LSB of I
750 OUT &H42,INT(I/256):'MSB of I
760 NEXT
770 '
780 'Weird Sounds
790 OUT &H43,&HA6:'R/L MSB, mode 3, counter 2, binary
800 FOR J=1 TO 20
810 FOR I=25 TO 5 STEP -1
820 OUT &H42,I
830 NEXT I
840 NEXT J
850 '
860 'Random Sounds
870 OUT &H43,&H96:'R/L LSB only, mode 3, counter 2, binary
880 FOR I=1 TO 200
890 OUT &H42,RND*255
900 NEXT I
910 OUT &H61,&H4D
920 '
930 'Assembly Language Random Number Generator
940 '
950 '1) Initialize
960 '1) Initialize      MOV     AL,0B6H        ;Mode 3, counter 2, binary
970 '                   OUT     43H,AL         ;R/L LSB then MSB
980 '                   MOV     AX,0FFFFH      ;store large number in counter
990 '                   OUT     42H,AX
1000 '
1010 '2) Read random #
1020 '                  MOV     AL,80H        ;counter 2,latch,rest don't care
1030 '                  OUT     43H,AL
1040 '                  IN      AX,42H
1050 '
1060 'I haven't tried the above in a program, but it should work reasonably.
1070 'And there you have it folks. A complete introductory to better sound
1080 'generation on your handy little PC. Last, but not least is a little
1090 'program to strobe your cassette port and output the data to the speaker,
1100 'written in assembly language. I have run this, and it works (sorta).
1110 '
1120 'TOP:      IN      AL,62H
1130 '          AND     AL,10H
1140 '          SHR     AL,1
1150 '          SHR     AL,1
1160 '          SHR     AL,1
1170 '          OR      AL,45H
1180 '          OUT     61H,AL
1190 '          JMP     TOP
1200 '

SYMPH-5.BAS

10 'CLS:KEY OFF
20 PLAY"T200"
25 FOR J=1 TO 2
30 FOR I=1 TO 8
40  READ M$
50 PRINT M$
60  PLAY M$
70 NEXT I
75 RESTORE 100
80 NEXT
100 DATA "O3 D6 C+6 O2 B6 O3 D4 C+2 O2 A6 B6 O3 C+6 E4 D2 D6 E6 F+6"
110 DATA "G4. G8 G4. G8 G4 F+4 P4 D6 C+6 O2 B6"
120 DATA "O3 D4 C+2 O2 A6 B6 O3 C+6 E4 D2 D6 E6 F+6"
130 DATA "G+4. G+8 G+4. G+8 G+6 B6 A6 A2 F+6 G6 A6"
140 DATA "A4 O2B2 O3E6 F+6 G6 G4 O2A2 O3D6 E6 F+6"
150 DATA "F+4 F+4 F+4 F+4. E8 B4 A4 A8 G8 F+6 G6 A6"
160 DATA "A4 O2B2 O3E6 F+6 G6 G4 O2A2 O3D6 E6 F+6"
170 DATA "F+4 F+4 F+4. E8 D1"

SYNTH.BAS

5 REM THIS HAD BETTER WORK
10 DEFINT A-Z:ON ERROR GOTO 30
20 GOTO 50
30 'ERROR HANDLER
40 RESUME NEXT
50 OPTION BASE 1:DIM ROW(25)
60 FOR I=1 TO 25:READ ROW(I):NEXT I
70 DATA 6,25,20,2,15,24,1,13,7,9,5,18,3,14,19,4,8,11,23,12,22,10,16,17,21
80 WIDTH 40:KEY OFF:CLS:LOCATE ,,0
90 COLOR 7,0,1
100 FOR I = 1 TO 96
110  A = INT(RND*2400 + 1000)
120 PRINT STRING$(10,CHR$(14));
130 SOUND A,.01
140 SOUND 100 + I,.01
150 NEXT I
160 PLAY "L16O4GO5CEGE2G"
170 COLOR 15,0:LOCATE 13,13:PRINT" VERSION  -0.01 ";
180 COLOR 0,15:LOCATE 9,8:PRINT" THE AMAZING,INCREDULOUS ";
190 COLOR 15,0:LOCATE 11,11:PRINT" SYNSONIC ORGANITRON ";
200 COLOR 31,0:LOCATE 20,5:PRINT" WARNING:";:COLOR 0,15:PRINT" PLEASE DO NOT COPY THIS PROGRAM IT TOOK ME AND MY BROTHER ALL DAY TO WRITE !
210 COLOR 15,3 :LOCATE 25,1:PRINT"       PRESS ANY KEY TO CONTINUE        ";
220 K$=INKEY$:IF K$ = "" THEN 220
230 COLOR 7,0,4
240 LOCATE 25,1:PRINT STRING$(79," "):LOCATE 25,1
250 FOR I = 1 TO 499
260 COLOR 15,0:PRINT STRING$(1,CHR$(17));:SOUND 19000,.01:
270 COLOR 0,15:PRINT STRING$(1,CHR$(16));:SOUND 8200,.01
280 NEXT I
290 COLOR 15,0:PRINT CHR$(17);
300 COLOR 15,0,0
310 PLAY "MNL4O1T255C2C8P8CD2"
320 LOCATE 4,3,0:PRINT "CONCEIVED...";
330 PLAY "D8P8G2G8P8F8P8E8P8D8P8C2":LOCATE 4,21:PRINT "COMPOSED...";
340 PLAY "C2C8P8CD2D8P8F2F8P8E-8P8D8P8C8P8O0B-2":LOCATE 6,11:PRINT "CONTRIVED...";
350 PLAY "B-2B-B-O1C2D2DDD+2":LOCATE 7,25:PRINT "DEVISED...";
360 PLAY "D+O0B-2B-B-O1C2"
370 LOCATE 9,3:PRINT "AND FORGED ";
380 PLAY "MBCG2GEDCG2G2D+DCGGCCGG2ECGG2E-C1O0C1"
390 PRINT "FROM THE CEREBRATIONS ";
400 LOCATE 11,2:PRINT "OF THE COSMIC COGNIZANT CONCIOUSNESSES ";
410 LOCATE 13,20:PRINT "OF..."
420 LOCATE 15,6:PRINT "JOSEPH EDWARD ";:COLOR 31,0:PRINT "`THE CHIMP'";:COLOR 15,0:PRINT" BATUTIS";
430 LOCATE 17,20:PRINT "AND";
440 LOCATE 19,6:PRINT "EDWARD JOSEPH ";:COLOR 31,0:PRINT "`EDDIE BABY'";:COLOR 15,0:PRINT" BATUTIS";
450 LOCATE 24,1:COLOR 15,0:PRINT "     PRESS ANY KEY TO CONTINUE         ";
460 FOR I=1 TO 2000:I=I:NEXT I
470 K$=INKEY$:IF K$="" THEN 470
480 FOR M=1 TO 20
490 FOR J=1 TO 25
500 LOCATE ROW(J),M+20:PRINT " ";
510 NEXT J
520 FOR L=1 TO 25
530 LOCATE ROW(L),21-M:PRINT " ";
540 NEXT L,M
550 CLS
560 CLS:SCREEN 1:IF FLAG<>0 THEN 590  ELSE FLAG=1
570 DIM BH1(500),BH2(500),TH1(500),TH2(500),RV1(500),RV2(500),LV1(500),LV2(500)
580 ON ERROR GOTO 30
590 COLOR 0,3
600 FOR A=14 TO 302 STEP 12
610 CIRCLE (A,4),4
620 NEXT A
630 FOR A=8 TO 196 STEP 9
640 CIRCLE (314,A),4
650 NEXT A
660 FOR A=314 TO 14 STEP -12
670 CIRCLE (A,196),4
680 NEXT A
690 FOR A=191 TO 8 STEP -9
700 CIRCLE (8,A),4
710 NEXT A
720 CIRCLE (14,4),4
730 COLOR 0,7
740 FOR A=26 TO 302 STEP 24
750 PAINT (A,4),2,3
760 NEXT A
770 GET (1,1)-(319,10),TH1
780 FOR A=26 TO 302 STEP 24
790 PAINT (A,4),0,3
800 NEXT A
810 FOR A=14 TO 302 STEP 24
820 PAINT (A,4),2,3
830 NEXT A:GET (1,1)-(319,10),TH2
840 FOR A=8 TO 196 STEP 18
850 PAINT (314,A),2,3
860 NEXT A
870 GET(310,1)-(319,199),RV1
880 FOR A=8 TO 196 STEP 18
890 PAINT (314,A),0,3
900 NEXT A
910 FOR A=17 TO 196 STEP 18
920 PAINT (314,A),2,3
930 NEXT A
940 GET(310,1)-(319,199),RV2
950 FOR A=314 TO 14 STEP -24
960 PAINT (A,196),2,3
970 NEXT A
980 GET (1,190)-(319,199),BH1
990 FOR A=314 TO 14 STEP -24
1000 PAINT (A,196),0,3
1010 NEXT A
1020 FOR A=302 TO 14 STEP -24
1030 PAINT (A,196),2,3
1040 NEXT A
1050 GET (1,190)-(319,199),BH2
1060 FOR A=183 TO 8 STEP -18
1070 PAINT (8,A),2,3
1080 NEXT A
1090 GET (1,1)-(12,199),LV1
1100 FOR A=183 TO 8 STEP -18
1110 PAINT (8,A),0,3
1120 NEXT A
1130 FOR A=191 TO 8 STEP -18
1140 PAINT (8,A),2,3
1150 NEXT A
1160 GET (1,1)-(12,199),LV2
1170 LOCATE 7,20:PRINT " MENU ";
1180 LOCATE 10,17:PRINT "A-ORGANITEK"
1190 LOCATE 12,17:PRINT "B-ORGANISCOPE"
1200 LOCATE 14,17:PRINT "C-BLUEZORG"
1210 LOCATE 16,17:PRINT "D-SPACEORG"
1220 LOCATE 18,17,0:PRINT "Q-QUIT"
1230 LOCATE 20,5:PRINT "(FIRST CHOOSE LETTER, THEN HIT":LOCATE 21,7:PRINT "LOWERCASE KEYS FOR TONES)"
1240 PLAY "MBL4T190MSO4P1GE8P8AP8G8FD8P8GP8F8E8P8CF8P8DGP8G8C2"
1250 A$ = INKEY$:IF A$<> "" THEN 1350
1260 PUT (1,1),TH1,XOR:PUT(1,1),TH2
1270 PUT (310,1),RV1,XOR:PUT(310,1),RV2
1280 PUT (1,190),BH1,XOR:PUT(1,190),BH2
1290 PUT (1,1),LV1,XOR:PUT(1,1),LV2
1300 PUT(1,1),TH2,XOR:PUT(1,1),TH1
1310 PUT(310,1),RV2,XOR:PUT(310,1),RV1
1320 PUT(1,190),BH2,XOR:PUT(1,190),BH1
1330 PUT(1,1),LV2,XOR:PUT(1,1),LV1
1340 GOTO 1250
1350 IF A$ = "A" THEN 1420
1360 IF A$ = "B" THEN 1570
1370 IF A$ = "C" THEN 1780
1380 IF A$ = "D" THEN 1910
1390 IF A$ = "Q" THEN 1410
1400 GOTO 1240
1410 GOTO 2070
1420 CLS:SCREEN 0:LOCATE ,,0
1430 COLOR 15,0,3:LOCATE 5,15:PRINT"ORGANITEK"
1440 LOCATE 11,3:PRINT"DEMONSTRATES HOW EACH STRIKE OF THE"
1450 LOCATE 13,3:PRINT "KEYBOARD CAN SET OFF A RAPID"
1460 LOCATE 15,3:PRINT "SUCCESSION OF INTERRELATED TONES."
1470 LOCATE 19,10:PRINT"CAPITAL Q TO RETURN"
1480 A$=INKEY$: IF A$="" THEN 1480
1490 IF A$ = "Q" THEN 560
1500 B$="\XZXXCXVXBXNMX,X./XAXSXDFXGXHJXKXLX;'X`XQWXEXRXTYXUXIOXPX[X]1X2X34X5X6X78X9X0-X="
1510 NO=INSTR(1,B$,A$):NM = NO + 5:NP = NO -5
1520 IF NM >80 THEN NM = 80
1530 IF NP < 0 THEN NP = 0
1540 NO$=STR$(NO):NP$ = STR$(NP):NM$ = STR$(NM)
1550 PLAY "L25T255N" + NO$+"N"+ NP$+"N"+NM$
1560 GOTO 1480
1570 CLS:SCREEN 0:LOCATE ,,0
1580 COLOR 15,0,3:LOCATE 5,15:PRINT"ORGANISCOPE"
1590 LOCATE 11,3:PRINT"DEMONSTRATES HOW TWO SUCCESSIVE STRIKES "
1600 LOCATE 13,3:PRINT "OF THE KEYBOARD CAN BE INTERELATED."
1610 LOCATE 15,3:PRINT "(IN THIS CASE HITTING ALL THE TONES IN- BETWEEN.)
1620 LOCATE 19,10:PRINT"CAPITAL Q TO RETURN"
1630 NM=20
1640 A$=INKEY$: IF A$="" THEN 1640
1650 IF A$ = "Q" THEN 560
1660 'B$="\ZXCVBNM,./ASDFGHJKL;'`QWERTYUIOP[]1234567890-="
1670 B$="\XZXXCXVXBXNMX,X./XAXSXDFXGXHJXKXLX;'X`XQWXEXRXTYXUXIOXPX[X]1X2X34X5X6X78X9X0-X="
1680 NO=INSTR(1,B$,A$)
1690 NO$=STR$(NO):NM$ = STR$(NM)
1700 IF NM=NO THEN 1640
1710 PLAY "L64T255N" + NO$+"N"+NM$
1720  PLAY "MLL18T255N" + NO$
1730 IF NM < NO THEN 1760
1740 IF NM > NO THEN 1770
1750 GOTO 1640
1760 NM = NM + 1:GOTO 1690
1770 NM = NM - 1:GOTO 1690
1780 CLS:SCREEN 0:LOCATE ,,0
1790 COLOR 15,0,3:LOCATE 5,15:PRINT"BLUEZORG"
1800 LOCATE 11,3:PRINT"DEMONSTRATES HOW THE SCALE CAN BE"
1810 LOCATE 13,3:PRINT "CHANGED FROM AN ORDINARY `C'"
1820 LOCATE 15,3:PRINT "SCALE TO A `C'BLUES SCALE."
1830 LOCATE 19,10:PRINT"CAPITAL Q TO RETURN"
1840 A$=INKEY$: IF A$="" THEN 1840
1850 IF A$ = "Q" THEN 560
1860 B$="\XXZXCVBXXNM,XX./ASDXXFGHXXJKL;'XX`QWXXERTYUXXIOPXX[]123XX123XX45678XX90-XX="
1870 NO=INSTR(1,B$,A$):NM = NO + 5:NP = NO -1:NO$=STR$(NO):NP$ = STR$(NP):NM$ = STR$(NM)
1880 'PLAY "L25T255N" + NO$+"N"+ NP$+"N"+NM$
1890  PLAY "MNL18T255N" + NO$
1900 GOTO 1840
1910 SCREEN 0:LOCATE ,,0:CLS
1920 COLOR 15,0,3:LOCATE 5,15:PRINT"SPACEORG"
1930 LOCATE 11,3:PRINT"DEMONSTRATES HOW THE SOUND AND PLAY"
1940 LOCATE 13,3:PRINT "COMMANDS CAN BE INTERTWINED"
1950 LOCATE 15,3:PRINT "RESULTING IN,AMONG OTHER THINGS,"
1960 LOCATE 17,3:PRINT"A DRONE TONE."
1970 LOCATE 19,10:PRINT"CAPITAL Q TO RETURN"
1980 A$=INKEY$: IF A$="" THEN 1980
1990 IF A$ = "Q" THEN 560
2000  B$=" \XZXXCXVXBXNMX,X./XAXSXDFXGXHJXKXLX;'X`XQWXEXRXTYXUXIOXPX[X]1X2X34X5X6X78X9X0-X="
2010 NO=INSTR(1,B$,A$):NM = NO + 1:NP = NO -1:NO$=STR$(NO):NP$ = STR$(NP):NM$ = STR$(NM)
2020  PLAY "L64T255N" + NO$+"N"+ NP$+"N"+NM$
2030  PLAY "MNL30T255N" + NO$
2040 SOUND 37,.5:SOUND 40,.5
2050 A$=INKEY$: IF A$ ="" THEN 2030
2060 IF A$= "Q"THEN 560 ELSE GOTO 2000
2070 SCREEN 0:CLS:COLOR 15,4,3:LOCATE,,0
2080 A$="O1DDDO0A8B8O1L4C+D8L8C+O0L4BA2.O1DC+O0BABG8L8F+L4ED2."
2090 CLS:COLOR 0:PLAY "MBXA$;":LOCATE 3,3:PRINT"DO YOUR PROGRAMS HAVE MORE BUGS THAN A    `ROACH MOTEL'?"
2100 PLAY "XA$;":LOCATE 7,1:PRINT"IS YOUR DISK DRIVE POSSESSED??"
2110 B$="MBO0DF+ABG+A2.DAABO1C+D2.C+DC+O0BBA2.BBABGL2F+."
2120 PLAY "XB$;":LOCATE 9,3:PRINT "DOES YOUR MICROPROCESSOR HAVE THE       PREDICTABILITY OF A FOUR YEAR OLD WITH      HEMORRHOIDS???"
2130 C$="L4O1DC+O0BABG8L8F+L4ED2."
2140 PLAY "XC$;":LOCATE 14,15:COLOR 31,4,3:PRINT"!REPENT!":COLOR 15,4,3
2150 LOCATE 16,3:PRINT "AND SEND ALL PIRATED PROGRAMS TO..."
2160 LOCATE 18,3:PRINT "CHURCH OF THE DIVINE PROGRAMMER"
2170 LOCATE 19,3:PRINT "ANTICHRIST, VA  01666"
2180 LOCATE 23,1:PRINT TAB(10);"HIT ANY KEY TO EXIT"
2190 A$=INKEY$:IF A$="" THEN 2190
2200 COLOR 7,0,0:WIDTH 80:CLS
2210 REM

TRAUMERI.BAS

1 'TRAUMEREI  BY ROBERT SCHUMANN   TRANSCRIBED BY NELSON FORD
10 'CLS:KEY OFF
20 PLAY"L8 T120 MN"
25 FOR J=1 TO 1
30 FOR I=1 TO 13
40  READ M$
50 'PRINT M$
60  PLAY M$
65 'INPUT X$
70 NEXT I
75 RESTORE 100
80 NEXT
100 'NOTES:
110 DATA "O3C4 "
120 DATA "MLF2 MNF E F A O4C F F2 E D"
130 DATA "O4C F O3G A B- O4D O3F G A O4C O3G2 C4 MLF2 MNF E F A "
140 DATA "O4C A A4. G F E F A D F E4. E- D4 E C C4. O3C
150 DATA "MLF2 MNF E F A O4C F F2 E D"
160 DATA "O4C F O3G A B- O4D O3F G A O4C O3G2 C4 MLF2 MNF E F A "
170 DATA "O4C A A4. G F E F G D G E4. E- D4 E C C4. O3C
180 DATA "MLF2 MNF E F A O4C MLE- MNE-2 D C O3B- O4D O3G A B-4. A"
190 DATA "G4. D4. P8 F  MLB-2 MNB- A B- O4D F MLB- MNB-2 A G"
200 DATA "F A D E F4. E16  D4. O3A4. G C  MLF2 MNF E F A"
210 DATA "O4C MLF MNF2 E D C F O3G A B- O4D O3F G  A O4C O3G2 C4"
220 DATA "MLF2 MNF E F A O4C A A4. G F D"
230 DATA "C F O3G A B- O4D O3F A B- O4D O3D E F2

TUNE.BAS

10 DIM PROG$(64)	'TUNES PROGRAM   - Creates Menues of Music Files -
20 SCREEN 0: KEY OFF:KEY 2,"CLS:NEW" + CHR$(13) 'Return to Basic
30 CLS:WIDTH 80:COLOR 0,0:FILES "*.TUN"   'DISPLAY TUNE FILNAMES invisibly
40 FOR DR%=1 TO 24	'Row on screen to be Read
50 FOR DC%=0 TO 65 STEP 13   'File Names are in Six Columns
60 IF CHR$(SCREEN(DR%,DC%+1))=" " THEN 130   'Stop when no more File names
70 AR%=AR%+1		'Go to next row in Array
80 FOR L%=1 TO 8	'Read first 8 characters of File name
90 PROG$(AR%)=PROG$(AR%)+CHR$(SCREEN(DR%,DC%+L%))    'Add name to Array
100 NEXT: NEXT: NEXT
120 WIDTH 80
130 LOCATE 2,14: COLOR 14,0: PRINT "SELECT-A-TUNE.....Tunes on this diskette:"
140 FOR DC%=1 TO 27 STEP 13	'Display file names in 3 columns
150 FOR DR%=4 TO 23		'from screen row 3 to 23
160 I%=I%+1		 ' Go to next row in Array
170 IF PROG$(I%)="" THEN 200  ELSE LOCATE DR%,DC%
175 COLOR 0,7:PRINT USING "##";I%;:
176 COLOR 7,0: PRINT " ";PROG$(I%);    'Stop when Array is empty
180 NEXT DR%
190 NEXT DC%
200 LOCATE 25,1: INPUT "Enter Number of Program Desired: ";P
205 LOCATE 25:PRINT "                                                ";
210 LOCATE 25,18:PRINT "Press F2 to return to Basica when finished";
211 SOUND 32000,25: SOUND 32000,1
215 IF P=0 THEN WIDTH 80:END
220 TUNE$ = PROG$(P) + ".TUN"  'the Tune Selected
500 OPEN TUNE$ FOR INPUT AS #1
510 PLAY"MBL16T080"
520 WHILE NOT EOF(1)
530  INPUT#1,M$
540  PLAY M$
550  'PRINT M$
560 WEND
570 CLOSE
575 FOR I = 1 TO 8000:NEXT I
580 CHAIN "TUNES.BAS"

WILLTELL.BAS

10 CLS:KEY OFF
20 PLAY"MBL16T155"
30 FOR I=1 TO 100
40  READ M$
50  PRINT M$
60  PLAY M$
70 NEXT I
80 KEY ON:END
100 DATA "o2mnb4p8msbbmnb4p8msbbb8g#8
110 DATA "e8g#8b8g#8b8o3e8o2b8g#8e8g#8
120 DATA "b8g#8b8o3e8o2mnb4p8msbbmnb4
130 DATA "p8msbbmnb4p8msbbmnb4p8msbb
140 DATA "b8bbb8b8b8bbb8b8b8bb
150 DATA "b8b8b8bbb8b8mlb2
160 DATA "b2b8p8p4p4
170 DATA "p8mso1bbb8bbb8bbo2e8f#8g#8o1bb
180 DATA "b8bbo2e8g#g#f#8d#8o1b8bbb8bb
190 DATA "b8bbo2e8f#8g#8eg#mlb4bmsag#f#
200 DATA "e8g#8e8o3bbb8bbb8bbo4e8f#8
210 DATA "g#8o3bbb8bbo4e8g#g#f#8d#8o3b8bb
220 DATA "b8bbb8bbo4e8f#8g#8mleg#b4
230 DATA "bag#f#mse8g#8e8o3g#g#g#8g#g#g#8g#g#
240 DATA "g#8o4c#8o3g#8o4c#8o3g#8o4c#8o3g#8f#8e8d#8
250 DATA "c#8g#g#g#8g#g#g#8g#g#g#8o4c#8o3g#8o4c#8
260 DATA "o3g#8o4c#8o3b8a#8b8a#8b8g#g#g#8g#g#
270 DATA "g#8g#g#g#8o4c#8o3g#8o4c#8o3g#8o4c#8o3g#8f#8
280 DATA "e8d#8c#8g#g#g#8g#g#g#8g#g#g#8o4c#8
290 DATA "o3g#8o4c#8o3g#8o4c#8o3b8a#8b8o2bbb8f#f#
300 DATA "f#8f#f#f#8g#8a8f#4mna8msg#8mne4
310 DATA "msg#8f#8f#8f#8o3f#f#f#8f#f#f#8g#8
320 DATA "a8mnf#4msa8g#8mne4msg#8f#8o2bb
330 DATA "b8o1bbb8bbb8bbo2mne8f#8g#8o1bb
340 DATA "b8bbo2e8g#g#f#8d#8o1b8bbb8bb
350 DATA "b8bbo2e8f#8g#8eg#mlb4mnbag#f#
360 DATA "e8g#8e8o3bbb8bbb8bbo4e8f#8
370 DATA "g#8o3bbb8bbo4e8g#g#f#8d#8o3b8bb
380 DATA "b8bbb8bbo4e8f#8g#8mleg#mlb4
390 DATA "mnbag#f#mne8g#8e8o3mle56f56g56a56b56o4c56d56mne8eee8e8g#4.
400 DATA "f#8e8d#8e8c#8mso3bo4c#o3bo4c#o3b
410 DATA "o4c#d#eo3abababo4c#d#o3g#ag#ag#abo4c#o3f#
420 DATA "g#f#g#f#g#f#g#f#g#f#d#o2bo3mlbo4c#d#e8d#8e8
430 DATA "c#8o3msbo4c#o3bo4c#o3bo4c#d#eo3abababo4c#d#o3g#
440 DATA "ag#ag#abo4c#o3f#g#f#g#f#af#emne8p8mlc#4
450 DATA "mnc#o2cmso3c#o2co3d#c#o2baag#ec#c#c#c#c#e
460 DATA "d#o1cg#g#g#g#g#g#o2c#eg#o3c#c#c#c#c#o2co3c#o2co3d#
470 DATA "c#o2baag#ec#c#c#c#c#ed#o1cg#g#g#g#g#mng#
480 DATA "o2c#eg#o3msc#ed#c#d#o2cg#g#g#o3g#ec#d#o2cg#g#g#
490 DATA "o3g#ec#d#o2bg#g#a#gd#d#g#gg#gg#ag#f#e
500 DATA "o1ba#bo2eo1bo2f#o1bo2g#ed#eg#eaf#bo3g#f#ed#
510 DATA "f#ec#o2bo3c#o2bo3c#d#ef#g#o2ababo3c#d#ef#o2g#
520 DATA "ag#aco3c#d#eo2f#g#f#g#f#g#f#g#f#g#f#d#o1b
530 DATA "co2c#d#eo1ba#bo2eo1bo2f#o1bo2g#ed#eg#eaf#b
540 DATA "o3g#f#ed#f#ec#o2bo3c#o2bo3c#d#ef#g#o2ababo3c#
550 DATA "d#ef#o2g#ag#abo3c#d#eo2f#o3c#o2co3c#d#c#o2af#mne
560 DATA "o3mlef#g#abo4c#d#mne8mseee8e8g#4.
570 DATA "msf8mse8d#8e8c#8o3bo4c#o3bo4c#o3bo4c#d#eo3a
580 DATA "bababo4c#d#o3g#ag#ag#abo4c#o3f#g#f#g#f#
590 DATA "g#f#g#f#g#f#d#o2bo3mlbo4c#d#mne8eee8e8g#4.
600 DATA "msf#8e8d#8e8c#8o3bo4c#o3bo4c#o3b
610 DATA "o4c#d#eo3abababo4c#d#o3g#ag#ag#abo4c#o3f#
620 DATA "g#f#g#f#ag#f#e8o2b8o3e8g#g#g#8mng#g#g#8
630 DATA "g#g#g#8o4c#8o3g#8o4c#8o3g#8o4c#8o3g#8f#8e8
640 DATA "d#8c#8g#g#g#8g#g#g#8g#g#g#8o4c#8o3g#8
650 DATA "o4c#8o3g#8o4c#8o3b8a#8b8a#8b8g#g#g#8
660 DATA "g#g#g#8g#g#g#8o4c#8o3g#8o4c#8o3g#8o4c#8o3g#8
670 DATA "f#8e8d#8c#8g#g#g#8g#g#g#8g#g#g#8
680 DATA "o4c#8o3g#8o4c#8o3g#8o4c#8o3b8a#8b8a#8b8
690 DATA "o2f#f#f#8f#f#f#8g#8a8f#4a8g#8
700 DATA "e4g#8f#8o0b8o1b8o2f#f#f#8f#f#f#8
710 DATA "g#8a8f#4a8g#8e4g#8f#8
720 DATA "bbb8o1bbb8bbb8bbo2e8f#8g#8
730 DATA "o1bbb8bbo2e8g#g#f#8d#8o1b8bbb8
740 DATA "bbb8bbo2e8f#8g#8eg#mlb4mnb
750 DATA "ag#f#e8o1b8o2e8o3bbb8bbb8bbo4e8
760 DATA "f#8g#8o3bbb8bbo4e8g#g#f#8d#8o3b8
770 DATA "bbb8bbb8bbo4e8f#8g#8o3eg#mlb4
780 DATA "mnbag#f#mlef#g#mnamlg#abo4mnc#mlo3bo4c#d#mnemld#
790 DATA "ef#mng#ao3bo4ao3bo4ao3bo4ao3bo4ao3bo4ao3bo4ao3bo4ao3bmle
800 DATA "f#g#mnamlg#abmno4c#mlo3bo4c#d#mnemld#ef#mng#ao3bo4ao3bo4a
810 DATA "o3bo4ao3bo4ao3bo4ao3bo4ao3bo4ao3bp16mlg#o4g#o3mng#p16mld#o4d#o3mnd#p16
820 DATA "mleo4eo3mnep16mlao4ao3mnap16mlg#o4g#o3mng#p16mld#o4d#o3mnd#p16mleo4eo3mnep16
830 DATA "mlao4ao3mnao4go3go4go3go4go3go4go3go4msg8e8c8e8o4mng#
840 DATA "o3g#o4g#o3g#o4g#o3g#o4g#o3g#o4msg#8e8o3b8o4e8mng#o3g#o4g#o3g#o4g#
850 DATA "o3g#o4g#o3g#o4msg#8f8c#8f8mna#o3a#o4a#o3a#o4a#o3a#o4a#o3a#o4msa#8
860 DATA "g8e8g8b8p16mna#p16ap16g#p16f#p16ep16
870 DATA "d#p16c#p16o3bp16a#p16ap16g#p16f#p16ep16d#p16f#mle
880 DATA "f#g#mnamlg#abmno4c#o3mlbo4c#d#mnemld#ef#mng#ao3bo4ao3bo4a
890 DATA "o3bo4ao3bo4ao3bo4ao3bo4ao3bo4ao3bmlef#g#mnamlg#abmno4c#o3mlb
900 DATA "o4c#d#mnemld#ef#mng#ao3bo4ao3bo4ao3bo4ao3bo4ao3bo4ao3bo4a
910 DATA "o3bo4ao3bp16mlg#o4g#o3mng#p16mld#o4d#o3mnd#p16mleo4eo3mnep16mlao4ao3mnap16
920 DATA "mlg#o4g#o3mng#p16mld#o4d#o3mnd#p16mleo4eo3mnep16mlao4ao3mnao4go3go4go3go4g
930 DATA "o3go4go3go4g8e8c8e8g#o3g#o4g#o3g#o4g#o3g#o4g#o3g#o4g#8
940 DATA "e8o3b8o4e8g#o3g#o4g#o3g#o4g#o3g#o4g#o3g#o4msg#8mnf8c#8
950 DATA "f8a#o3a#o4a#o3a#o4a#o3a#o4a#o3a#o4a#8g8e8g8b8
960 DATA "p16a#p16ap16g#p16f#p16ep16d#p16c#p16o3bp16a#p16
970 DATA "ap16g#p16f#p16ep16d#p16fmled#ed#mne8bbb8
980 DATA "bbb8bbo4e8f#8g#8o3bbb8bbb8
990 DATA "bbo4g#8a8b8p8e8f#8g#8p8o3g#8
1000 DATA "a8b8p8p2o2bco3c#dd#
1010 DATA "eff#gg#aa#bco4c#d#ed#f#d#ed#f#d#e
1020 DATA "d#f#d#ed#f#d#ed#f#d#ed#f#d#ed#f#d#e
1030 DATA "d#f#d#e8eo3eo4eo3eo4eo3eo4e8o3bo2bo3bo2bo3bo2bo3b8
1040 DATA "g#o2g#o3g#o2g#o3g#o2g#o3g8eo2eo3eo2eo3eo2eo3e8eee8
1050 DATA "e8e8o2bbb8b8b8g#g#g#8g#8g#8
1060 DATA "eee8e8e8o1b8o2e8o1b8o2g#8e8b8
1070 DATA "g#8o3e8o2b8o3e8o2b8o3g#8e8b8g#8o4e4
1080 DATA "p8eee8e8e8e8e4p8.
1090 DATA "ee4p8.o2ee2

XMAS.BAS

100 '
110 '
120 '
130 '
140 CLS
150 KEY OFF
160 LOCATE 9,20:PRINT CHR$(201);STRING$(38,205);CHR$(187)
170 FOR X=10 TO 16
180 LOCATE X,20:PRINT CHR$(186);
190 LOCATE X,59:PRINT CHR$(186);
195 NEXT
197 LOCATE X,20
200 PRINT CHR$(200);STRING$(38,205);CHR$(188)
210 LOCATE 12,30
220 PRINT "CHRISTMAS CHEER 1984"
230 LOCATE 13,34
240 PRINT"BY RICH LEVEY"
250 LOCATE 14,35
260 PRINT""
270 LOCATE 15,34
280 PRINT "914-352-6801"
290 FOR X=1 TO 3000:NEXT
295 CLS
296 RESTORE
300 LOCATE 5,15
310 PRINT CHR$(201);STRING$(48,205);CHR$(187)
320 FOR X=6 TO 18
330 LOCATE X,15
340 PRINT CHR$(186);
350 LOCATE X,64
360 PRINT CHR$(186)
370 NEXT
380 LOCATE X,15:PRINT CHR$(200);STRING$(48,205);CHR$(188)
390 LOCATE 7,22
400 PRINT"1)  THE TWELVE DAYS OF CHRISTMAS"
410 LOCATE 8,22:PRINT "2)  JOY TO THE WORLD"
420 LOCATE 9,22:PRINT "3)  O LITTLE TOWN OF BETHLEHEM"
430 LOCATE 10,22:PRINT"4)  SILENT NIGHT"
440 LOCATE 11,22:PRINT"5)  I HEARD THE BELLS ON XMAS DAY"
450 LOCATE 12,22:PRINT"6)  OH COME ALL YE FAITHFUL"
460 LOCATE 13,22:PRINT"7)  OH CHRISTMAS TREE"
470 LOCATE 14,22:PRINT"8)  WE THREE KINGS"
480 LOCATE 15,22:PRINT"9)  JINGLE BELLS"
490 LOCATE 16,21:PRINT"10)  CHRISTMAS IS COMING"
492 LOCATE 17,21:PRINT"11)  RETURN TO DOS"
500 LOCATE 20,26:INPUT"SELECT BY NUMBER: ",A$
510 IF A$ = "1" THEN GOTO 1000
520 IF A$ = "2" THEN GOTO 2000
530 IF A$ = "3" THEN GOTO 3000
540 IF A$ = "4" THEN GOTO 4000
550 IF A$ = "5" THEN GOTO 5000
560 IF A$ = "6" THEN GOTO 6000
570 IF A$ = "7" THEN GOTO 7000
580 IF A$ = "8" THEN GOTO 8000
590 IF A$ = "9" THEN GOTO 9000
600 IF A$ = "10" THEN GOTO 10000
602 IF A$="11" THEN SYSTEM
610 CLS
620 LOCATE 10,20
630 COLOR 0,7
640 PRINT"YOU HAVE SELECTED AN OPTION THAT DOES NOT APPEAR ON THE MENU"
650 FOR X= 1 TO 3000:NEXT
660 COLOR 7,0
670 GOTO 295
1000 PLAY"MF T125 O2C8C8C4F8F8F4E8F8G8A8B-8G8A4.
1010 PLAY"MF B-8O3C4D8O2B-8A8F8G4F2."
1020 FOR X=1 TO 4
1030 PLAY"MF T125 O2C8C8C4F8F8F4E8F8G8A8B-8G8A4.
1040 GOSUB 1060
1050 NEXT
1060 FOR A = 1 TO X
1070 IF X=4 THEN 1120
1080 PLAY"MF O3C4O2G8A8B-4"
1090 NEXT
1100 PLAY"MF A8B-8O3C4D8O2B-8A8F8G4F2."
1110 RETURN
1120 PLAY"MF O3C2D2O2B..O3C1"
1130 PLAY"MF C8O2B-8A8G8F4B-4D4F4G8F8E8D8C4A8B-8O3C4D8O2B-8A8F8G4F2."
1140 FOR X=1 TO 7
1150 PLAY"MFO2C8C8C8C8F8F8F4E8F8G8A8B-8G8A2"
1160 FOR A = 1 TO X
1170 PLAY"MF O3C8C8O2G8A8B-8G8"
1180 NEXT
1190 PLAY"MF O3C2D2O2B..O3C1"
1200 PLAY"MF C8O2B-8A8G8F4B-4D4F4G8F8E8D8C4A8B-8O3C4D8O2B-8A8F8G4F2."
1210 NEXT
1220 PLAY"MF T75P4O2A8B-8O3C4D8O2B-8A8F8G4F2."
1230 GOTO 295
2000 PLAY"MF O3D4C#8.O2B16A4.
2010 PLAY"G8F#4E4D4.
2020 PLAY"A8B4.B8O3C#4.C#8D4
2030 PLAY"D8D8C#8O2B8A8A8.G16F#8O3D8D8C#8O2B8A8A8.G16F#8
2040 PLAY" F#8F#8F#8F#8F#16G16A4.
2050 PLAY"G16F#16E8E8E8E16F#16G4."
2060 PLAY" F#16E16D8O3D4O2B8A8.G16F#8G8F#4E4D2"
2990 GOTO 295
3000 PLAY"O2B4P64B4P64B4A#4B4O3D4C4O2E4A4G4F#8G8A4D4"
3010 PLAY"B2.P64B4P64B4P64B4O3E4D4P64D4C4O2E4A4G4F#8"
3020 PLAY"G8B4A4G2.B4P64B4P64B4A4G4F#2P64F#4P64F#4E4"
3030 PLAY"F#4G4A4B2.P64B4P64B4P64B4A#4B4O3D4C4O2E4O3"
3040 PLAY"E4D4O2G4B4.A8G2."
3990 GOTO 295
4000 PLAY"ML T70O2F8.G16F8D4.F8.G16F8D4.O3C4P64C8"
4010 PLAY"O2A4.B-4P64B-8F4.G4P64G8B-8.A16G8F8.G16F8"
4020 PLAY"D4.G4P64G8B-8.A16G8F8.G16F8D4.O3C4P64C8E-8."
4030 PLAY"C16O2A8B-4.O3D4.O2B-8F8D8F8.E-16C8O1B-2."
4990 GOTO 295
5000 PLAY"ML T150G4P64G4D4G8A8B4O3C8O2B8A4G4P64G4P64"
5010 PLAY"G4D4G8A8B8O3C#8D4C#4D4P64D4C4O2B4O3E4.D8C4"
5020 PLAY"O2B4A4P64A4B4.O3C8D4O2A4B4A4G2"
5990 GOTO 295
6000 PLAY"ML O2G8.P8G2D4G4A2D2B4A4B4O3C4O2B2A4G8.P16G2F#4E4F#4"
6010 PLAY"G4A4B4F#2E4.D16.P32D2.P4O3D2C4O2B4O3C2O2B2A4B4G4"
6020 PLAY"A4F#4.E8D4G8.P16G4F#4G4A4G2D4B8.P16B4A4B4O3C4O2B2"
6030 PLAY"A4B4O3C4O2B4A4G4F#2G4O3C4O2B2A4.G16.P32G2."
6990 GOTO 295
7000 PLAY"MS O2C4F8.F16F8.G8A8.A16A4.A8G8A8B-4E4G4F4P8"
7010 PLAY"O3C8C8O2A8O3D4.C8C8O2B-8B-4.B-8B-8G8O3C4.O2B-8"
7020 PLAY"B-8A8A4C4F8.F16F4.G8A8.A16A4.A8G8A8B-4E4G4F4"
7990 GOTO 295
8000 PLAY"MF T100O2B4A8G4E8F#8G8F#8E4P8B4A8G4E8F#8"
8010 PLAY "G8F#8E4P8G8.P16G8A8.P16A8B8.P16B8O3D8C8O2B8A8B8A8G4"
8020 PLAY"F#8E4P8F#4A2.G8.P16G8P32G4D8G4E8G4P8G8.P16G8P32G4D8G4E8G4P8G8.P16G8"
8030 PLAY"A4B8O3C4O2B8A4B8G8.P16G8P32G4D8G4E8G4."
8990 GOTO 295
9000 READ A$
9010 IF A$ = "END" THEN 9990
9020 PLAY "XA$;"
9030 GOTO 9000
9040 DATA E,E,E,P8,E,E,E,P8,E,G,C,D,E2,F,F,F3,F8,F,E,E8,G,G,F,D,C2,END
9990 GOTO 295
10000 FOR X=1 TO 2
10010 PLAY"MFT175O3C2O2G4.G8O3C4C2C4C4C4O2B4A4G1O3C4.O2C8C4D4"
10020 PLAY"E4C4E4G4A2G4F4E1E4.F8E4D4C4O3C4O2G4E4F2G4O1B4O2C1"
10030 NEXT
10990 GOTO 295

Directory of PC-SIG Library Disk #0322

 Volume in drive A has no label
 Directory of A:\

-DIRLIST          2688   3-30-84   9:38p
ANVIL    BAS       357   3-27-84   4:50p
ARKTRAV  BAS       128   2-04-82
DANCE    BAS      3072   5-23-83   7:11p
ELEPHANT TUN      1655   6-30-83   7:37p
HAPPYB   BAS       384  10-24-83   9:38p
HEARING  BAS      1280   3-02-83  12:00a
HUNGRHAP BAS       768   8-21-83  10:07a
IBMSONG  BAS      5888   9-17-83  12:08a
JUKEBOX  BAS      6016   1-01-80   2:19a
LIEBESTR BAS       896   8-21-83   9:28a
MESSIAH  BAS       384   8-21-83  12:41p
MINUET   BAS      1280   8-14-83   4:20p
MTN-KING BAS       640   8-21-83   8:15a
MUSICBOX BAS     14882   3-27-84   8:54p
NUTCRAKR BAS       512   8-21-83   8:24a
NYLOGO   BAS     14279   3-28-84   8:11p
MINWALTZ EXE     29696   2-28-84   5:23a
SCALES   BAS     12768   3-27-84   8:51p
SIREN    BAS       128
PRAELUD1 BAS      2816  12-29-83   6:20p
SOUNDS   BAS      5120   8-11-83   7:23a
SYMPH-5  BAS       512   8-20-83   9:52p
SYNTH    BAS      8401   1-01-80   2:28a
TRAUMERI BAS       896   8-21-83  12:19p
TUNE     BAS      1529   6-30-83   7:37p
WILLTELL BAS      4864   8-04-83   8:05p
SFG-BACH BAS      2560   1-20-84  11:46p
BOUREE   BAS      1726   5-15-84   7:29p
JSB      BAS      5997   5-02-84   7:36p
JSB      MUS      5997   5-02-84   7:36p
CLASSICS BAS       768   8-14-83   4:10p
PRAELUD2 BAS      5888  12-29-83   6:21p
MAGDALEN BAS      1408   8-14-83   4:22p
RAIL     BAS      2944   8-14-83   4:44p
BACH     BAS      2688   8-14-83   4:25p
CHOPIN1  BAS      1152   8-14-83   4:25p
LUDWIG   BAS      1536   8-14-83   4:26p
BLUESBOX BAS     17792   7-24-83   1:45p
ANT2     BAS      9572  10-28-84   3:05a
PIANO    COM     16836   9-15-84   9:17a
XMAS     BAS      3740  11-26-84   7:52p
GO       BAT        38  10-19-87   3:56p
FILES322 TXT      2301   8-15-88   3:02p
GO       TXT      1079   6-06-88  11:31a
       45 file(s)     205861 bytes
                       96256 bytes free