Espanola

Date: 198
Type: Program
Platform(s): TS 2068
Tags: Music

This program is a medley player that performs four Latin songs — “Granada,” “Perfidia,” “Brazil,” and “Solamente Una Vez” — using the TS2068’s AY-3-8910 sound chip. After loading a title screen image via LOAD SCREEN$, a main menu at line 155 lets the user choose any of the four pieces by number, with each song beginning at a multiple-of-200 line address. The AY chip is driven entirely through SOUND statements, with subroutines at lines 1000–1999 setting up chord registers for keys including C major, D major, E major, F major, G major, D minor, A minor, G minor, and B-flat major. Melody notes are played with BEEP commands, while the chord subroutines configure the AY chip’s three tone channels (registers 0–5) and envelope/noise registers (7–13) to provide harmonic accompaniment. A RESTORE statement before each DATA block ensures correct sequential reading of note duration and pitch pairs across the non-linear flow of the program.


Program Analysis

Program Structure

The program is organized into a set of clearly separated sections:

  1. Lines 1–150: Startup sequence — loads a title SCREEN$, then plays a full introductory medley passage using BEEP and SOUND, concluding with a pause before the menu.
  2. Lines 155–170: Main menu. Displays song choices and accepts a number 1–4, then dispatches with GO TO C*200, routing to line 200, 400, 600, or 800.
  3. Lines 200–385: “Granada” by Agustín Lara.
  4. Lines 400–500: “Perfidia” by Alberto Dominguez.
  5. Lines 600–705: “Brazil” (Samba) by Ary Barroso.
  6. Lines 800–870: “Solamente Una Vez” by Agustín Lara.
  7. Lines 1000–1999: Subroutine library for AY chip initialization and chord settings.
  8. Lines 9997–9998: STOP and SAVE utilities.

Each song ends with GO TO MENU, where MENU was set to 155 at line 2, returning the user to the selection screen.

Sound Architecture: Dual-Layer Music

The program achieves two-voice music by alternating between the AY chip’s tone channels for harmony and the BEEP command for melody. BEEP uses the same speaker output as the AY chip’s mixed output, so they effectively layer. The AY chip is configured via SOUND statements in the subroutine library, setting register pairs for tone period (low/high byte) across three channels.

The chord subroutines at lines 1000–1105 correspond to specific musical keys:

LineSubroutineComment
1000AY init / ONSets mixer, envelope, and volume registers
1015C majorUpper register C
1017Lower C majorLower octave C
1020D major
1025E major
1030F major
1035G major
1050D minor
1055A minor
1057Low A minorDefined but apparently unreferenced
1065G minor
1105B-flat major
1999AY OFFSets register 7 to 63 (silences all channels)

The SOUND keyword (rendered as } in the TS2068 character set) takes semicolon-separated register/value pairs. Registers 0–5 set the three-channel tone periods, register 7 controls the mixer enable bits, and registers 8–13 control volume and envelope.

Melody Representation via DATA

Melody lines are encoded as pairs of duration (D) and pitch (F) values in DATA statements, read in loops of the form FOR B=1 TO N: READ D,F: BEEP D,F: NEXT B. Because the program’s flow is highly non-linear and revisits some passages (e.g., the intro medley in lines 5–145 reads many DATA blocks in sequence), each song section uses explicit RESTORE NNN statements before reading DATA to ensure the correct starting point.

Pitch values are BEEP semitone offsets from middle C. Negative pitch values (e.g., -1 in line 810) produce a rest-like very low tone, used as a musical rest substitute since BEEP has no silence value.

Navigation and Menu Dispatch

The computed GO TO C*200 at line 170 is an elegant dispatch technique: input value 1 maps to line 200, value 2 to line 400, value 3 to line 600, and value 4 to line 800. The variable MENU holds the literal value 155 and is used at the end of each song section as GO TO MENU, avoiding the need to hard-code the return address multiple times and making any future relocation of the menu straightforward.

Notable Techniques

  • RESTORE before DATA reads: Since DATA statements are scattered throughout the listing and the pointer advances globally, every song section uses RESTORE targeted to its own DATA line to guarantee correct playback regardless of what was read before.
  • PAUSE 30/45/90/180 for rests: Musical pauses between phrases are implemented with PAUSE at varying lengths (in 50ths of a second), giving the programmer fine control over phrasing gaps.
  • Double colon typo at line 430: The sequence SOUND 8,15;9,10;10,10:: contains a redundant colon, which is harmless in BASIC but suggests a copy-paste artifact from adjacent lines.
  • Subroutine 1057 (Low A minor) is defined but never called in the visible program, suggesting it was written in anticipation of use or left over from an earlier arrangement.
  • BEEP .063 approximation: In the “Granada” section, note durations of .063 are used to approximate 1/16th note values (true 1/16 of a quarter note at the given tempo), showing care for rhythmic accuracy within floating-point constraints.
  • SOUND 8,15;9,10;10,10 inline: In the “Perfidia” section, chord changes are sometimes inserted inline between BEEP calls rather than via a GO SUB, slightly varying the harmonic texture mid-phrase.

Data Flow in the Intro Medley

Lines 5–145 play an extended medley introduction before presenting the menu. This section relies entirely on sequential DATA pointer advancement without any RESTORE, reading DATA blocks at lines 10, 20, 30, 40, 55, 65, 75, 85, 100, 110, 120, 130, and 140 in order. This is fragile if the program is re-entered mid-flow, but since the program always starts at line 1 and runs straight through, it functions correctly on a clean run.

Content

Appears On

One of a series of library tapes. Programs on these tapes were renamed to a number series. This tape contained

Related Products

Related Articles

Related Content

Image Gallery

Espanola

Source Code

    1 BORDER 1: PAPER 5: BRIGHT 1: CLS : PRINT "LOADING;PROP UP KEYBOARD FOR    SOUND!": PAUSE 0: LOAD "20090A"SCREEN$ 
    2 LET MENU=155
    5 GO SUB 1000: BEEP .4,7: GO SUB 1015: FOR B=1 TO 10: READ D,F: BEEP D,F: NEXT B
   10 DATA 1.8,7,.2,4,.2,5,.4,7,.4,9,.2,11,.4,12,.2,9,.4,11,.4,7
   15 GO SUB 1035: BEEP 2.2,5: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1035: FOR B=1 TO 11: READ D,F: BEEP D,F: NEXT B
   20 DATA .4,7,1.8,14,.2,16,.2,12,.4,14,.4,11,.2,12,.4,11,.2,9,.4,7,.4,5
   25 GO SUB 1015: BEEP 1.8,4: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1015: FOR B=1 TO 11: READ D,F: BEEP D,F: NEXT B
   30 DATA .8,7,.2,12,.4,12,.2,12,.4,12,.4,11,.2,14,.4,14,.2,12,.4,11,.4,9
   35 GO SUB 1035: FOR B=1 TO 12: READ D,F: BEEP D,F: NEXT B
   40 DATA .4,9,2.6,7,.2,11,.4,11,.2,11,.4,11,.4,9,.2,9,.4,7,.2,7,.4,7,.4,9
   45 GO SUB 1015: BEEP .2,7: BEEP .2,5: BEEP 2.8,4
   50 BEEP .4,7: GO SUB 1015: FOR B=1 TO 10: READ D,F: BEEP D,F: NEXT B
   55 DATA 1.8,7,.2,4,.2,5,.4,7,.4,9,.2,11,.4,12,.2,9,.4,11,.4,7
   60 GO SUB 1035: BEEP 2.2,5: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1035: FOR B=1 TO 11: READ D,F: BEEP D,F: NEXT B
   65 DATA .4,7,2,14,.2,16,.2,12,.4,14,.4,11,.2,12,.4,11,.2,9,.4,7,.4,5
   70 GO SUB 1015: BEEP 1.8,4: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1015: FOR B=1 TO 11: READ D,F: BEEP D,F: NEXT B
   75 DATA .8,7,.2,12,.4,12,.2,12,.4,12,.4,11,.2,14,.4,14,.2,12,.4,11,.4,9
   80 GO SUB 1035: FOR B=1 TO 12: READ D,F: BEEP D,F: NEXT B
   85 DATA .4,9,3,7,.2,11,.4,11,.2,11,.4,11,.4,9,.2,9,.4,7,.2,7,.4,7,.4,9
   90 GO SUB 1015: BEEP .2,7: BEEP .2,5: BEEP 1.4,4
   95 GO SUB 1999: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  100 DATA .2,7,.2,7,.2,7,.4,9,.2,6
  105 GO SUB 1000: GO SUB 1015: BEEP 1.4,7: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1015: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  110 DATA .2,7,.2,7,.2,7,.4,7,.2,9
  115 GO SUB 1035: FOR B=1 TO 17: READ D,F: BEEP D,F: NEXT B
  120 DATA .8,11,1.2,14,.2,16,.2,12,.2,14,.4,11,.2,12,.2,9,.4,11,.2,12,.4,16,.4,14,.2,2,.4,4,.2,5,.4,9,.4,7
  125 GO SUB 1015: BEEP 1.4,4: GO SUB 1999: PAUSE 30: BEEP .2,7: BEEP .2,7: BEEP 2,7: BEEP .4,9: BEEP .2,6: GO SUB 1000: GO SUB 1015: BEEP 1.4,7: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1015: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  130 DATA .2,7,.2,7,.2,7,.4,7,.2,9
  135 GO SUB 1035: FOR B=1 TO 17: READ D,F: BEEP D,F: NEXT B
  140 DATA .8,11,1,14,.2,17,.2,16,.2,14,.4,16,.2,12,.2,14,.4,11,.2,12,.4,16,.4,14,.2,2,.4,4,.2,5,.4,9,.4,7
  145 GO SUB 1015: BEEP 2.6,12
  150 GO SUB 1999: PAUSE 180: CLS 
  155 INK 1: PRINT AT 3,10;"Y LAS OTRAS";'''"1. ""GRANADA""";''"2. ""PERFIDIA""";''"3. ""BRAZIL""";''"4. ""SOLAMENTE UNA VEZ""              (""YOU BELONG TO MY HEART"")"
  160 INPUT "YOUR CHOICE BY NUMBER ";C: IF C<0 OR C>4 THEN GO TO 155
  170 CLS : GO TO C*200
  200 PRINT AT 11,8;"G R A N A D A";AT 15,2;"de AGUSTIN LARA, Veracruzano"
  210 BEEP .25,9: GO SUB 1000: GO SUB 1030: RESTORE 215: FOR B=1 TO 12: READ D,F: BEEP D,F: NEXT B
  215 DATA .25,12,.25,12,.25,12,.25,14,.25,14,.25,14,.25,16,.25,16,.25,16,.25,17,.25,19,.25,16
  220 GO SUB 1065: BEEP .125,14: BEEP .125,16: BEEP .125,14: GO SUB 1015: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  225 DATA 2.25,12,.25,7,.25,12,.25,12,.25,12
  230 GO SUB 1065: BEEP .25,14: BEEP .25,14: BEEP .25,14: GO SUB 1015: FOR B=1 TO 6: READ D,F: BEEP D,F: NEXT B
  235 DATA .25,16,.25,16,.25,16,.25,17,.25,19,.25,16
  240 GO SUB 1030: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  245 DATA .063,17,.063,19,.063,17,.063,16,2,14
  250 GO SUB 1999: PAUSE 30: BEEP .25,9: GO SUB 1000: GO SUB 1030: FOR B=1 TO 12: READ D,F: BEEP D,F: NEXT B
  255 DATA .25,12,.25,12,.25,12,.25,14,.25,14,.25,14,.25,16,.25,16,.25,16,.25,17,.25,19,.25,17
  260 GO SUB 1055: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  265 DATA .125,21,.125,19,.125,17,2.5,16,.25,16
  270 GO SUB 1025: FOR B=1 TO 6: READ D,F: BEEP D,F: NEXT B
  275 DATA .25,16,.25,11,.25,12,.25,14,.25,16,.25,19
  280 GO SUB 1055: FOR B=1 TO 8: READ D,F: BEEP D,F: NEXT B
  285 DATA .125,17,.125,19,.125,17,.25,16,.25,16,.25,16,.25,17,.25,16
  290 GO SUB 1025: FOR B=1 TO 6: READ D,F: BEEP D,F: NEXT B
  295 DATA .25,16,.25,11,.25,12,.25,14,.25,11,.25,12
  300 GO SUB 1055: BEEP .25,9: BEEP .25,8: BEEP .25,9: GO SUB 1015: BEEP .5,12: BEEP .25,9: GO SUB 1030: FOR B=1 TO 12: READ D,F: BEEP D,F: NEXT B
  305 DATA .25,12,.25,12,.25,12,.25,14,.25,14,.25,14,.25,16,.25,16,.25,16,.25,17,.25,19,.25,16
  310 GO SUB 1065: BEEP .125,14: BEEP .125,16: BEEP .125,14: GO SUB 1015: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  315 DATA 2.25,12,.25,7,.25,12,.25,12,.25,12
  320 GO SUB 1065: BEEP .25,14: BEEP .25,14: BEEP .25,14: GO SUB 1015: FOR B=1 TO 6: READ D,F: BEEP D,F: NEXT B
  325 DATA .25,16,.25,16,.25,16,.25,17,.25,19,.25,16
  330 GO SUB 1030: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  335 DATA .063,17,.063,19,.063,17,.063,16,2,14
  340 FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  345 DATA .25,12,.25,17,.25,17,.25,17,.25,15,.25,15,.25,15
  350 GO SUB 1105: BEEP .25,14: BEEP .25,14: BEEP .25,14: GO SUB 1999: BEEP .25,13: BEEP .25,13: BEEP .25,13: GO SUB 1000: GO SUB 1030: BEEP .25,12: BEEP .25,12: BEEP .25,12: GO SUB 1015: BEEP .25,10: BEEP .25,10: BEEP .25,10
  355 GO SUB 1030: BEEP .125,9: BEEP .125,10: BEEP 1,12: BEEP .25,12
  360 GO SUB 1065: BEEP .25,17: BEEP .375,17: BEEP .125,17: GO SUB 1015: BEEP .25,19: BEEP .25,17: BEEP .25,19
  365 GO SUB 1030: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  370 DATA .125,21,.125,19,.375,17 ,.125,16,.25,19,.25,17,.25,14
  375 GO SUB 1015: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  380 DATA .125,16,.125,14,.375,12,.125,12,.25,14,.25,12,.25,14
  385 GO SUB 1030: BEEP 1.25,17: GO SUB 1999: PAUSE 90: CLS : GO TO MENU
  400 PRINT AT 10,7;"P E R F I D I A";AT 14,5;"de ALBERTO DOMINGUEZ"
  405 BEEP .3,7: GO SUB 1000: SOUND 8,15;9,10;10,10: GO SUB 1017: GO SUB 1055: BEEP .9,12: GO SUB 1000: GO SUB 1050: BEEP .15,11: GO SUB 1035: BEEP .15,12: BEEP .15,14: BEEP .15,12: BEEP .15,11
  410 GO SUB 1015: BEEP .3,12: BEEP .3,11: SOUND 8,15;9,10;10,10: GO SUB 1055: BEEP 1,9: GO SUB 1000: GO SUB 1050: BEEP .15,11: GO SUB 1035
  420 BEEP .15,12: BEEP .15,14: BEEP .15,12: BEEP .15,11: GO SUB 1015: BEEP .15,12: BEEP .15,11: BEEP .15,9: GO SUB 1055: BEEP .45,12: BEEP .15,9
  425 GO SUB 1050: BEEP .3,7: BEEP .3,5: BEEP .3,7: BEEP .3,9: BEEP .3,5: GO SUB 1025: BEEP 1.5,4: GO SUB 1999: PAUSE 30: GO SUB 1000: GO SUB 1035: BEEP .3,7: SOUND 8,15;9,10;10,10: GO SUB 1015: GO SUB 1055: BEEP 1,12: GO SUB 1000: GO SUB 1050: BEEP .15,11
  430 GO SUB 1035: BEEP .15,12: BEEP .15,14: BEEP .15,12: BEEP .15,11: GO SUB 1015: BEEP .3,12: BEEP .3,11: SOUND 8,15;9,10;10,10:: GO SUB 1055: BEEP 1,9: GO SUB 1000: GO SUB 1050: BEEP .15,11
  435 GO SUB 1035: BEEP .15,12: BEEP .15,14: BEEP .15,12: BEEP .15,11: GO SUB 1015: BEEP .3,12: BEEP .3,11: BEEP .3,9: GO SUB 1055: BEEP .45,12: BEEP .15,9
  440 GO SUB 1050: RESTORE 445: FOR B=1 TO 5: READ D,F: BEEP D,F: NEXT B
  445 DATA .3,7,.3,5,.3,7,.3,9,.3,5
  450 GO SUB 1025: BEEP 1,4: GO SUB 1999: PAUSE 30: BEEP .15,2: BEEP .15,4
  455 GO SUB 1000: GO SUB 1050: RESTORE 460: FOR B=1 TO 14: READ D,F: BEEP D,F: NEXT B
  460 DATA .15,5,.15,5,.15,5,.15,7,.15,9,.15,9,.15,9,.15,8,.45,9,.15,8,.15,9,.15,8,.15,9,.15,11
  465 GO SUB 1025: BEEP 1.1,8: GO SUB 1999: PAUSE 40: BEEP .5,11: BEEP .15,12: GO SUB 1000: GO SUB 1050: RESTORE 470: FOR B=1 TO 16: READ D,F: BEEP D,F: NEXT B
  470 DATA .15,14,.15,14,.15,14,.15,12,.15,11,.15,11,.15,11,.15,12,.15,11,.15,11,.15,11,.15,9,.15,7,.15,9,.15,7,.15,5
  475 GO SUB 1025: BEEP 1.1,4: GO SUB 1999: PAUSE 40: GO SUB 1000: GO SUB 1035: BEEP .3,7: SOUND 8,15;9,10;10,10: GO SUB 1017: GO SUB 1055: BEEP 1.3,12: GO SUB 1000: GO SUB 1050: BEEP .15,11: GO SUB 1035:
  480 BEEP .5,12: BEEP .15,14: BEEP .15,12: BEEP .15,11: GO SUB 1015: BEEP .3,12: BEEP .3,11: SOUND 8,10;9,15;10,10: GO SUB 1055: BEEP 1,9: GO SUB 1000: GO SUB 1050: BEEP .15,11
  485 GO SUB 1035: BEEP .15,12: BEEP .15,14: BEEP .15,12: BEEP .15,11: GO SUB 1015: BEEP .3,12: BEEP .3,11: BEEP .3,9: GO SUB 1055: BEEP .45,12: BEEP .15,9
  490 GO SUB 1050: BEEP .3,7: BEEP .3,5: BEEP .3,7: GO SUB 1035: BEEP .3,9: BEEP .3,14: GO SUB 1017: BEEP 1.3,12
  500 GO SUB 1999: PAUSE 180: CLS : GO TO MENU
  600 PRINT AT 10,10;"B R A Z I L";AT 14,6;"Samba de ARY BARROSA"
  605 BEEP .3,2: GO SUB 1000: GO SUB 1035: RESTORE 610: FOR B=1 TO 8: READ D,F: BEEP D,F: NEXT B
  610 DATA 1,11,.15,14,.15,14,.15,11,.15,11,.15,9,.15,9,.15,7
  615 GO SUB 1055: BEEP 1,9: GO SUB 1020: RESTORE 620: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  620 DATA .15,14,.15,14,.15,11,.15,11,.15,9,.15,9,.15,7
  625 GO SUB 1055: BEEP 1,9: GO SUB 1020: RESTORE 630: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  630 DATA .15,14,.15,14,.15,11,.15,11,.15,9,.15,9,.15,7
  635 GO SUB 1035: BEEP .8,11: BEEP .3,6: GO SUB 1055: BEEP .8,4: GO SUB 1020: BEEP .3,6: GO SUB 1035: BEEP .3,11: BEEP .3,11: GO SUB 1999: BEEP .3,10: BEEP .3,9: GO SUB 1000: GO SUB 1025: BEEP 1,14: GO SUB 1050: GO SUB 1025: RESTORE 640: FOR B=1 TO 8: READ D,F: BEEP D,F: NEXT B
  640 DATA .15,14,.15,14,.15,13,.15,12,.15,11,.15,10,.15,11,1,14
  645 GO SUB 1050: GO SUB 1025: RESTORE 650: FOR B=1 TO 8: READ D,F: BEEP D,F: NEXT B
  650 DATA .15,14,.15,14,.15,13,.15,12,.15,11,.15,10,.15,11,1,14
  655 GO SUB 1050: GO SUB 1025: RESTORE 660: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  660 DATA .15,14,.15,14,.15,13,.15,12,.15,11,.15,9,.15,11
  665 GO SUB 1055: BEEP 1.5,12: GO SUB 1030: PAUSE 30: GO SUB 1055: RESTORE 670: FOR B=1 TO 8: READ D,F: BEEP D,F: NEXT B
  670 DATA 1,12,.15,12,.15,12,.15,11,.15,11,.15,9,.15,7,.15,6
  675 GO SUB 1035: RESTORE 680: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  680 DATA 1,9,.15,7,.15,9,.15,11,.15,14,.15,11,.15,7
  685 GO SUB 1055: BEEP 1.2,7: GO SUB 1020: RESTORE 690: FOR B=1 TO 6: READ D,F: BEEP D,F: NEXT B
  690 DATA .3,9,.15,9,.15,9,.3,9,.15,9,.15,7
  700 GO SUB 1035: BEEP .9,11: BEEP .3,6: GO SUB 1055: BEEP .8,4: GO SUB 1020: BEEP .3,6: GO SUB 1035: BEEP .9,11: BEEP .3,6: GO SUB 1055: BEEP .9,4: GO SUB 1020: BEEP .3,6: GO SUB 1035: BEEP 1.9,11
  705 GO SUB 1999: PAUSE 180: CLS : GO TO MENU
  800 PRINT AT 9,7;"S O L A M E N T E";AT 11,9;"U N A   V E Z";AT 15,8;"de AGUSTIN LARA"
  805 BEEP .2,7: BEEP .2,9: BEEP .4,7: BEEP .2,0: BEEP .2,2: GO SUB 1000: SOUND 9,12;10,14: GO SUB 1017: BEEP 1.8,4: BEEP .2,4: BEEP .6,7: BEEP .2,9: GO SUB 1035: RESTORE 810: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  810 DATA .8,7,1.2,-1,.2,9,.2,11,.4,9,.2,1,.2,2
  815 GO SUB 1050: BEEP 1.4,9: BEEP .4,12: GO SUB 1035: BEEP .6,11: BEEP .2,7: GO SUB 1017: BEEP 2,4: GO SUB 1015: RESTORE 820: FOR B=1 TO 14: READ D,F: BEEP D,F: NEXT B
  820 DATA .2,12,.2,12,.4,12,.2,11,.2,11,.4,11,.2,9,.2,9,.4,9,.2,7,.2,7,.4,9,.2,4,.2,5
  825 GO SUB 1035: BEEP .8,7: BEEP 1.6,-1: GO SUB 1999: PAUSE 45: GO SUB 1000: SOUND 9,12;10,14: GO SUB 1035: RESTORE 830: FOR B=1 TO 14: READ D,F: BEEP D,F: NEXT B
  830 DATA .2,7,.2,7,.4,7,.2,5,.2,5,.4,5,.2,4,.2,4,.2,4,.4,2,.2,2,.4,2,.2,0,.2,2
  835 GO SUB 1017: BEEP 2,4: GO SUB 1999: BEEP .2,7: BEEP .2,9: BEEP .4,7: BEEP .2,0: BEEP .2,2: GO SUB 1000: SOUND 9,12;10,14
  840 GO SUB 1017: BEEP 1.6,4: BEEP .2,4: BEEP .4,7: BEEP .2,9: GO SUB 1035: RESTORE 845: FOR B=1 TO 7: READ D,F: BEEP D,F: NEXT B
  845 DATA .8,7,1.2,-1,.2,9,.2,11,.4,9,.2,1,.2,2
  850 GO SUB 1050: BEEP 1.4,9: BEEP .4,12: GO SUB 1035: BEEP .6,11: BEEP .2,7: GO SUB 1017: BEEP 1.8,4: GO SUB 1999: PAUSE 45: GO SUB 1000: GO SUB 1015: RESTORE 855: FOR B=1 TO 14: READ D,F: BEEP D,F: NEXT B
  855 DATA .2,12,.2,12,.4,12,.2,11,.2,11,.4,11,.2,9,.2,9,.4,9,.2,7,.2,7,.4,9,.2,4,.2,5
  860 GO SUB 1035: BEEP .8,7: BEEP 1,-1: GO SUB 1999: PAUSE 45: GO SUB 1000: GO SUB 1035: RESTORE 865: FOR B=1 TO 14: READ D,F: BEEP D,F: NEXT B
  865 DATA .2,7,.2,7,.4,7,.2,5,.2,5,.4,5,.2,4,.2,4,.4,4,.2,2,.2,2,.4,9,.2,7,.2,9
  870 GO SUB 1017: BEEP 1.4,12: GO SUB 1999: PAUSE 180: CLS : GO TO MENU
 1000 SOUND 7,56;8,14;9,15;10,12;11,255;12,255;13,13: RETURN : REM ON
 1015 SOUND 0,209;1,0;2,165;3,0;4,139;5,0: RETURN : REM C MAJ
 1017 SOUND 0,162;1,1;2,75;3,1;4,23;5,1: RETURN : REM LOWER C MAJ
 1020 SOUND 0,186;1,0;2,147;3,0;4,124;5,0: RETURN : REM D MAJ
 1025 SOUND 0,165;1,0;2,131;3,0;4,110;5,0: RETURN : REM E MAJ
 1030 SOUND 0,156;1,0;2,124;3,0;4,104;5,0: RETURN : REM F MAJ
 1035 SOUND 0,23;1,1;2,221;3,0;4,186;5,0: RETURN : REM G MAJ 
 1050 SOUND 0,186;1,0;2,156;3,0;4,124;5,0: RETURN : REM D MINOR 
 1055 SOUND 0,248;1,0;2,209;3,0;4,165;5,0: RETURN : REM A MIN
 1057 SOUND 0,248;1,0;2,75;3,1;4,209;5,0: RETURN : REM LO A MIN
 1065 SOUND 0,23;1,1;2,234;3,0;4,186;5,0: RETURN : REM G MIN
 1105 SOUND 0,234;1,0;2,186;3,0;4,156;5,0: RETURN : REM B FLAT MAJ
 1999 SOUND 7,63: RETURN : REM OFF
 9997 STOP 
 9998 CLEAR : SAVE "ESPANOLA" LINE 1

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top