ON ERROR IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE MODE 3 : PRINT REPORT$ : END REM The Fig Leaf Rag by Scott Joplin REM Transcribed by Ron J. Stickley May 1984 REM Version with animated keyboard, Richard Russell, 04-Jun-2019 IF INKEY$(-256)="W" INSTALL @lib$+"d3dliba" ELSE INSTALL @lib$+"ogllib" DIM L%(0), B%(62), N%(62), F%(62), S%(62), M%(62), T%(62), P(62), T(62), R(62) DIM X(62), Y(62), Z(62), Q1&(3), Q2&(3), Q3&(3), Q4&(3) REM. Create white key: F% = OPENOUT(@tmp$+"white.fvf") BPUT #F%,36 : BPUT#F%,0 : BPUT #F%,0 : BPUT#F%,0 : REM 12 triangles BPUT #F%,&42 : BPUT #F%,0 : BPUT#F%,16 : BPUT#F%,0 : REM Vertex format and size FOR triangle% = 0 TO 11 READ x1, y1, z1, x2, y2, z2, x3, y3, z3, r&, g&, b& PROC4(F%,x1) : PROC4(F%,y1) : PROC4(F%,z1) : REM xyz coordinates BPUT #F%,b& : BPUT #F%,g& : BPUT#F%,r& : BPUT#F%,&FF : REM argb diffuse colour PROC4(F%,x2) : PROC4(F%,y2) : PROC4(F%,z2) : REM xyz coordinates BPUT #F%,b& : BPUT #F%,g& : BPUT#F%,r& : BPUT#F%,&FF : REM argb diffuse colour PROC4(F%,x3) : PROC4(F%,y3) : PROC4(F%,z3) : REM xyz coordinates BPUT #F%,b& : BPUT #F%,g& : BPUT#F%,r& : BPUT#F%,&FF : REM argb diffuse colour NEXT CLOSE #F% REM. Create black key: F% = OPENOUT(@tmp$+"black.fvf") BPUT #F%,48 : BPUT#F%,0 : BPUT #F%,0 : BPUT#F%,0 : REM 16 triangles BPUT #F%,&42 : BPUT #F%,0 : BPUT#F%,16 : BPUT#F%,0 : REM Vertex format and size FOR triangle% = 0 TO 15 READ x1, y1, z1, x2, y2, z2, x3, y3, z3, r&, g&, b& PROC4(F%,x1) : PROC4(F%,y1) : PROC4(F%,z1) : REM xyz coordinates BPUT #F%,b& : BPUT #F%,g& : BPUT#F%,r& : BPUT#F%,&FF : REM argb diffuse colour PROC4(F%,x2) : PROC4(F%,y2) : PROC4(F%,z2) : REM xyz coordinates BPUT #F%,b& : BPUT #F%,g& : BPUT#F%,r& : BPUT#F%,&FF : REM argb diffuse colour PROC4(F%,x3) : PROC4(F%,y3) : PROC4(F%,z3) : REM xyz coordinates BPUT #F%,b& : BPUT #F%,g& : BPUT#F%,r& : BPUT#F%,&FF : REM argb diffuse colour NEXT CLOSE #F% PROCinitrender ON CLOSE PROCcleanup : QUIT ON ERROR PROCcleanup : IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE MODE 3 : PRINT REPORT$ : END ON MOVE IF @msg% <> 5 RETURN ELSE PROCcleanup : PROCinitrender : RETURN *TEMPO 129 *STEREO 1,127 *STEREO 2,42 *STEREO 3,-42 *STEREO 0,-127 SOUND 1,0,0,10 DIM snd{(3,50)a&,p&,d&}, p%(3), q%(3), vol%(3) DIM cmajor&(7), scale%(7), acc%(7), flat&(7), sharp&(7) cmajor&() = 88,96,52,60,68,72,80 flat&() = 0, &02, &12, &13, &1B, &5B, &5F, &7F sharp&() = 0, &A0, &A4, &E4, &EC, &ED, &FD, &FF vol%() = 1, 1, 1, 1 dur% = 24 : tempo% = 1 ENVELOPE 1,1,0,0,0,0,0,0,40,-8,-1,-1,119,89 REPEAT T$ = "" REPEAT READ R$ : IF R$="" REPEAT PROCpoll : UNTIL FALSE T$ += R$ : IF RIGHT$(T$) = "\" T$ = LEFT$(T$) + " " UNTIL RIGHT$(R$) <> "\" acc%() = scale%() clef% = 48 : voice% = 1 p%() = 0 : q%() = 0 WHILE T$<>"" I% = 1 : WHILE INSTR("0123456789",MID$(T$,I%,1)) I% += 1 : ENDWHILE IF I% > 1 dur% = VALLEFT$(T$,I%-1) : T$ = MID$(T$,I%) C$ = LEFT$(T$,1) : T$=MID$(T$,2) CASE C$ OF WHEN " ": WHEN "[": T$ = "" WHEN "T": acc%() = scale%() : clef% = 48 WHEN "S": acc%() = scale%() : clef% = 0 WHEN "V": acc%() = scale%() : voice% = ASC(T$) - &30 : T$=MID$(T$,2) voice% AND= 3 WHEN "K": key% = ASC(T$) - &30 : T$=MID$(T$,2) scale%() = 0 IF key% THEN key$ = LEFT$(T$,1) : T$=MID$(T$,2) CASE key$ OF WHEN "#": key& = sharp&(key%) WHEN "b","&": key& = flat&(key%) ENDCASE FOR I% = 0 TO 6 IF key& AND (2^I%) scale%(I%) = -4 : IF key& AND &80 scale%(I%) = +4 NEXT ENDIF acc%() = scale%() OTHERWISE Note% = INSTR("ABCDEFG$",C$)-1 IF Note% < 0 ERROR 100, "Unrecognised command "+C$ octave% = 0 staccato = 0 ticks% = dur% / tempo% REPEAT CASE LEFT$(T$,1) OF WHEN "#": acc%(Note%) = 4 WHEN "%": acc%(Note%) = 0 WHEN "&","b": acc%(Note%) =-4 WHEN "+": octave% += 48 WHEN "-": octave% -= 48 WHEN ".": ticks% = dur% / tempo% * 3/2 WHEN ":": ticks% = dur% / tempo% * 2/3 WHEN ",": staccato = 1/4 WHEN "'": staccato = 1/8 WHEN """": staccato = 1/8 OTHERWISE: EXIT REPEAT ENDCASE T$=MID$(T$,2) UNTIL FALSE pitch% = cmajor&(Note%) + acc%(Note%) + clef% + octave% IF Note% = 7 pitch% = 0 IF pitch% < 0 pitch% += 48 IF pitch% > 255 ERROR 100, "Pitch out of range: "+STR$pitch% IF ticks% < 0 OR ticks% > 254 ERROR 100, "Duration out of range: "+STR$ticks% gap% = INT(ticks% * staccato) + 0.5 snd{(voice%,p%(voice%))}.a& = vol%(voice%) snd{(voice%,p%(voice%))}.p& = pitch% snd{(voice%,p%(voice%))}.d& = ticks% - gap% p%(voice%) += 1 IF gap% THEN snd{(voice%,p%(voice%))}.p& = 0 snd{(voice%,p%(voice%))}.d& = gap% p%(voice%) += 1 ENDIF ENDCASE ENDWHILE WHILE ADVAL(-5)=0 OR ADVAL(-6)=0 OR ADVAL(-7)=0 OR ADVAL(-8)=0 PROCpoll : ENDWHILE IF p%(0)<>q%(0) OR p%(1)<>q%(1) OR p%(2)<>q%(2) OR p%(3)<>q%(3) THEN SOUND &300,0,0,0 : SOUND &301,0,0,0 : SOUND &302,0,0,0 : SOUND &303,0,0,0 PROCevent(0,0) : PROCevent(1,0) : PROCevent(2,0) : PROCevent(3,0) REPEAT stall% = TRUE FOR v% = 0 TO 3 IF q%(v%) < p%(v%) IF ADVAL(-5-v%) THEN stall% = FALSE IF snd{(v%,q%(v%))}.p& = 0 THEN SOUND v%+&1000,0,0,snd{(v%,q%(v%))}.d& ELSE SOUND v%,snd{(v%,q%(v%))}.a&,snd{(v%,q%(v%))}.p&,snd{(v%,q%(v%))}.d& ENDIF PROCevent(v%, snd{(v%,q%(v%))}.p&) q%(v%) += 1 ENDIF NEXT v% IF stall% PROCpoll UNTIL p%(0)=q%(0) AND p%(1)=q%(1) AND p%(2)=q%(2) AND p%(3)=q%(3) ENDIF UNTIL FALSE END REM Poll the current sound queue status; if the queue is not empty REM a sound is currently playing, in which case we can update the REM visible keyboard state: DEF PROCpoll LOCAL A%, I%, P% PRIVATE T%, p&() : DIM p&(3) FOR I% = 0 TO 3 A% = ADVAL(-5-I%) DIV 4 : REM Free slots IF A% = 4 THEN IF p&(I%) T(p&(I%)-1) = 0 p&(I%) = 0 ELSE CASE I% OF WHEN 0: P% = Q1&(3-A%) DIV 4 WHEN 1: P% = Q2&(3-A%) DIV 4 WHEN 2: P% = Q3&(3-A%) DIV 4 WHEN 3: P% = Q4&(3-A%) DIV 4 ENDCASE IF p&(I%) T(p&(I%)-1) = 0 IF P% T(P%-1) = RAD(3) p&(I%) = P% ENDIF NEXT IF T% = 0 T% = TIME IF TIME < T% WAIT 0 ELSE T% += 2 : PROCanimate ENDPROC REM Keep a copy of all SOUND events in our own private queues: DEF PROCevent(K%, P%) CASE K% OF WHEN 0: Q1&() = P%,Q1&(0),Q1&(1),Q1&(2) WHEN 1: Q2&() = P%,Q2&(0),Q2&(1),Q2&(2) WHEN 2: Q3&() = P%,Q3&(0),Q3&(1),Q3&(2) WHEN 3: Q4&() = P%,Q4&(0),Q4&(1),Q4&(2) ENDCASE ENDPROC DEF PROCanimate LOCAL e(), a() DIM e(2), a(2) a() = 0, 0, 1.0 e() = 4*SIN(TIME/1000), 5, 7+3*SIN(TIME/2000) PROC_render(D3D%, &FF3F7F4F, 0, L%(), 63, M%(), T%(), B%(), N%(), F%(), S%(), \ \ P(), T(), R(), X(), Y(), Z(), e(), a(), PI/4, @vdu%!208/@vdu%!212, 1, 1000, 0) ENDPROC DEF PROCinitrender LOCAL whiteb%, whitef%, whiten%, whites%, blackb%, blackf%, blackn%, blacks% LOCAL I%, x IF POS REM SDL thread sync VDU 26 IF INKEY$(-256)="W" D3D% = FN_initd3d(@hwnd%, 1, 0) ELSE D3D% = FN_initgl(@hwnd%, 1, 0) IF D3D% = 0 ERROR 100, "Can't initialise 3D library" REM. Load 3D objects: whiteb% = FN_load3d(D3D%, @tmp$+"white.fvf", whiten%, whitef%, whites%) IF whiteb% = 0 ERROR 100, "Can't load white.fvf" blackb% = FN_load3d(D3D%, @tmp$+"black.fvf", blackn%, blackf%, blacks%) IF blackb% = 0 ERROR 100, "Can't load black.fvf" REM Create keyboard: x = 18 * 0.254 FOR I% = 0 TO 62 CASE I% MOD 12 OF WHEN 1,3,6,8,10: REM Black key: B%(I%) = blackb% N%(I%) = blackn% F%(I%) = blackf% S%(I%) = blacks% X(I%) = x + 0.127 OTHERWISE: REM White key: B%(I%) = whiteb% N%(I%) = whiten% F%(I%) = whitef% S%(I%) = whites% X(I%) = x x -= 0.254 ENDCASE NEXT ENDPROC DEF PROCcleanup B%(0) += 0 : IF B%(0) PROC_release(B%(0)) : B%(0) = 0 B%(1) += 0 : IF B%(1) PROC_release(B%(1)) : B%(1) = 0 D3D% += 0 : IF D3D% PROC_release(D3D%) : D3D% = 0 ENDPROC DEF PROC4(F%,a) : LOCAL A% : A%=FN_f4(a) BPUT #F%,A% : BPUT #F%,A%>>8 : BPUT#F%,A%>>16 : BPUT#F%,A%>>24 ENDPROC REM. White key (6 faces, 12 triangles) REM. x1, y1, z1, x2, y2, z2, x3, y3, z3, r, g, b: REM Left face: DATA -0.12, +0.10, 1.95, -0.12, -0.10, 1.95, -0.12, -0.10, 0.50, &80, &80, &80 DATA -0.12, -0.10, 0.50, -0.12, +0.10, 0.50, -0.12, +0.10, 1.95, &80, &80, &80 REM Right face: DATA +0.12, -0.10, 1.95, +0.12, +0.10, 1.95, +0.12, -0.10, 0.50, &80, &80, &80 DATA +0.12, +0.10, 0.50, +0.12, -0.10, 0.50, +0.12, +0.10, 1.95, &80, &80, &80 REM Top face: DATA +0.12, +0.10, 1.95, -0.12, +0.10, 1.95, -0.12, +0.10, 0.50, &FF, &FF, &F0 DATA -0.12, +0.10, 0.50, +0.12, +0.10, 0.50, +0.12, +0.10, 1.95, &FF, &FF, &F0 REM Bottom face: DATA -0.12, -0.10, 1.95, +0.12, -0.10, 1.95, -0.12, -0.10, 0.50, &FF, &FF, &F0 DATA +0.12, -0.10, 0.50, -0.12, -0.10, 0.50, +0.12, -0.10, 1.95, &FF, &FF, &F0 REM Front face: DATA +0.12, +0.10, 1.95, +0.12, -0.10, 1.95, -0.12, -0.10, 1.95, &CF, &CF, &C0 DATA -0.12, -0.10, 1.95, -0.12, +0.10, 1.95, +0.12, +0.10, 1.95, &CF, &CF, &C0 REM Back face: DATA +0.12, -0.10, 0.50, +0.12, +0.10, 0.50, -0.12, -0.10, 0.50, &FF, &FF, &F0 DATA -0.12, +0.10, 0.50, -0.12, -0.10, 0.50, +0.12, +0.10, 0.50, &FF, &FF, &F0 REM. Black key (7 faces, 16 triangles) REM. x1, y1, z1, x2, y2, z2, x3, y3, z3, r, g, b: REM Left face: DATA -0.06, +0.20, 1.37, -0.06, +0.10, 1.45, -0.06, +0.20, 0.49, &00, &00, &00 DATA -0.06, +0.20, 0.49, -0.06, +0.10, 1.45, -0.06, 0.00, 0.49, &00, &00, &00 DATA -0.06, 0.00, 0.49, -0.06, +0.10, 1.45, -0.06, 0.00, 1.45, &00, &00, &00 REM Right face: DATA +0.06, +0.10, 1.45, +0.06, +0.20, 1.37, +0.06, +0.20, 0.49, &00, &00, &00 DATA +0.06, +0.10, 1.45, +0.06, +0.20, 0.49, +0.06, 0.00, 0.49, &00, &00, &00 DATA +0.06, +0.10, 1.45, +0.06, 0.00, 0.49, +0.06, 0.00, 1.45, &00, &00, &00 REM Top face: DATA +0.06, +0.20, 1.37, -0.06, +0.20, 1.37, -0.06, +0.20, 0.49, &00, &00, &00 DATA -0.06, +0.20, 0.49, +0.06, +0.20, 0.49, +0.06, +0.20, 1.37, &00, &00, &00 REM Bottom face: DATA -0.06, 0.00, 1.45, +0.06, 0.00, 1.45, -0.06, 0.00, 0.49, &00, &00, &00 DATA +0.06, 0.00, 0.49, -0.06, 0.00, 0.49, +0.06, 0.00, 1.45, &00, &00, &00 REM Front face: DATA +0.06, +0.10, 1.45, +0.06, 0.00, 1.45, -0.06, 0.00, 1.45, &00, &00, &00 DATA -0.06, 0.00, 1.45, -0.06, +0.10, 1.45, +0.06, +0.10, 1.45, &00, &00, &00 REM Slant face: DATA +0.06, +0.20, 1.37, +0.06, +0.10, 1.45, -0.06, +0.10, 1.45, &00, &00, &00 DATA -0.06, +0.10, 1.45, -0.06, +0.20, 1.37, +0.06, +0.20, 1.37, &00, &00, &00 REM Back face: DATA +0.06, 0.00, 0.49, +0.06, +0.20, 0.49, -0.06, 0.00, 0.49, &00, &00, &00 DATA -0.06, +0.20, 0.49, -0.06, 0.00, 0.49, +0.06, +0.20, 0.49, &00, &00, &00 DATA [ DATA [ FIG LEAF RAG - Scott Joplin DATA [ DATA [ NOTE: Do not play this piece fast. DATA [ It is never right to play Ragtime fast............Composer. DATA [ DATA [Compiled R.J.Stickley May 1984 DATA K2& REM DATA PA DATA TV120GG&F40B20A40B SV320GG&F40B20A40B DATA TV120C+C&+B40D+20C#+40D+ V320CC&B-40D20C#40D DATA TV120F+C#+D+AB40G20G& SV3F+C#+D+AB40G20G& DATA TV140F$80F+ V2$C+ SV3$F V440F$80F- REM DATA PB DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F REM DATA PC DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20GG#D+ V240$EDB%- SV3$B V4EGDB%- DATA TV120AC+F+40D+20G+C+A+ V240$C$E% SV3C+A$C V4CACB DATA TV140F+20E&+C+AA&GG& V240F$80E& SV340A$80A V440F$80F REM DATA PD RB DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F REM DATA PE DATA TV120F+40E+C++.E++ V2C+.C+.E+ SV3C+E+EG& DATA TV120D++40B+G+20F+40D+ V220D+40B20B%40GF SV3FD+GB% V4F-FG-G DATA TV120D+40C+F+20D+40C+ V2B.A.E V3E%B-FA- SV4CGF-F REM DATA PF DATA TV180BF V2DE SV3B V420B-DEE%FF#GA REM DATA PG RB RC RB RE DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20GG#D+ V240$EDB%- SV3$B V4EGDB%- DATA TV120AC+F+40D+20G+C+A+ V240$C$E% SV3C+A$C V4CACB DATA TV140F+20E&+C+AA&GG& V240F$80E& SV340A$80A V440F$80F DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F DATA TV120F+40E+C++.E++ V2C+.C+.E+ SV3C+E+EG& DATA TV120D++40B+G+20F+40D+ V220D+40B20B%40GF SV3FD+GB% V4F-FG-G DATA TV120D+40C+F+20D+40C+ V2B.A.E V3E%B-FA- SV4CGF-F REM DATA PH DATA TV1120B40F+ V2120D40F SV3B V4B-FB-$ REM DATA PI DATA TV120A+B+C++A+E+40G+20F+ V220F+G+A+F+C+40E+20D+\ DATA SV340CE$E V4CFF-F DATA TV120F+E%+F+40D+.F V220D+C#+D+40B.D SV3$D+$B V4B-FF-F DATA TV120C%+D+E+C+G40A20G V2ABC+A40E.20C# SV340$A$A V4F-FF-F DATA TV180G40FF+ V280C#40DF SV420B-C#E%G40B$ DATA TV120A+B+C++A+E+40G+20F+ V2F+G+A+F+C+40E+20D+ V340CE$E SV4CFF-F DATA TV120F+E%+F+40D+20B+C%++C#++ V220D+C#+D+40B SV3$D+F+E+ V4B-F DATA TV120D++E%++F#++D++C++B+A+D++ V280C+40F#+C++ V380F#40DF V480D40AC+ DATA TV140G+20G+G&+40F+F+ V2B-20GG&40F$ SV3B20GG&40F V4D20G-G&-40F- DATA TV120A+B+C++A+E+40G+20F+ V2F+G+A+F+C+40E+20D+ V340CE$E SV4CFF-F DATA TV120F+E%+F+40D+.F V220D+C#+D+40B.D SV3$D+$B V4B-FF-F DATA TV120C%+D+E&+C+G40A20G V2ABC+AC40C#. SV380AA V4FE DATA TV180F#.40D V280D.40$ SV380A.40D V4D10G#-30A-40D- DATA TV120EF%G40B20C+40D+ SV420CDE40G20G&40F DATA TV120E+F+G+40B+20C++40D++ V420CDE40F20E&40D DATA TV120D+40BC+20D+40C+ V220F40DEE SV3$B$A V4F-FF-F REM DATA PJ DATA TV140B20F+F+40G+G+ V2F$F+F#+ SV3B$BB% V4B-$B-B%- REM DATA PK RI DATA TV120A+B+C++A+E+40G+20F+ V220F+G+A+F+C+40E+20D+\ DATA SV340CE$E V4CFF-F DATA TV120F+E%+F+40D+.F V220D+C#+D+40B.D SV3$D+$B V4B-FF-F DATA TV120C%+D+E+C+G40A20G V2ABC+A40E.20C# SV340$A$A V4F-FF-F DATA TV180G40FF+ V280C#40DF SV420B-C#E%G40B$ DATA TV120A+B+C++A+E+40G+20F+ V2F+G+A+F+C+40E+20D+ V340CE$E SV4CFF-F DATA TV120F+E%+F+40D+20B+C%++C#++ V220D+C#+D+40B SV3$D+F+E+ V4B-F DATA TV120D++E%++F#++D++C++B+A+D++ V280C+40F#+C++ V380F#40DF V480D40AC+ DATA TV140G+20G+G&+40F+F+ V2B-20GG&40F$ SV3B20GG&40F V4D20G-G&-40F- DATA TV120A+B+C++A+E+40G+20F+ V2F+G+A+F+C+40E+20D+ V340CE$E SV4CFF-F DATA TV120F+E%+F+40D+.F V220D+C#+D+40B.D SV3$D+$B V4B-FF-F DATA TV120C%+D+E&+C+G40A20G V2ABC+AC40C#. SV380AA V4FE DATA TV180F#.40D V280D.40$ SV380A.40D V4D10G#-30A-40D- DATA TV120EF%G40B20C+40D+ SV420CDE40G20G&40F DATA TV120E+F+G+40B+20C++40D++ V420CDE40F20E&40D DATA TV120D+40BC+20D+40C+ V220F40DEE SV3$B$A V4F-FF-F REM DATA PL DATA TV180BF V2FE& SV3B$ V420B-DEE%FF#GA REM DATA PM RB RC RB RE DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20GG#D+ V240$EDB%- SV3$B V4EGDB%- DATA TV120AC+F+40D+20G+C+A+ V240$C$E% SV3C+A$C V4CACB DATA TV140F+20E&+C+AA&GG& V240F$80E& SV340A$80A V440F$80F DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F DATA TV120F+40E+C++.E++ V2C+.C+.E+ SV3C+E+EG& DATA TV120D++40B+G+20F+40D+ V220D+40B20B%40GF SV3FD+GB% V4F-FG-G DATA TV120D+40C+F+20D+40C+ V2B.A.E V3E%B-FA- SV4CGF-F REM DATA PN DATA TV1120B40B+ V2120D40F SV3B V4B-FB-$ DATA K3& REM PO DATA TV120D+E+C+40B20F#+G+B+ V2GGG40G20A%BB V3E-EC40B-20F#GB SV440E-G-B-E DATA TV120D++E++C++40B+20F#++G++F%++ V2G+G+G+40G+20A%+B+A&+\ DATA TV3D+E+C+40B20F#+G+A%+ SV440E-GBE+ DATA TV120F%++E++C++40E++20F+F#+G+ V2A&+E+C+40E+20FF#G SV340AE+AA% V4A-AA-A%- DATA TV120G+E+40F#+80F%+ V220GB40F#BA SV3BA%A&B- V4B-A%-A&-B-- DATA TV120D+E+C+40B20F#+G+B+ V2GGG40G20A%BB V3E-EC40B-20F#GB SV440E-G-B-E DATA TV120D++E++C++40B+.C++ V220G+G+G+40G+.B+\ DATA TV320D+E+C+40B.C+ SV4E-GBE+ DATA TV120D++G+B+D++E++G#+A%+D++ V2G+G+BD+E+G#A%D+ V340DGF#-F# SV4DBF#-C+ DATA TV120G++D++B+G+40D+D+ V220G+$40$$A& SV3GG+G+B V4G-BBB- DATA TV120D+E+C+40B20F#+G+B+ V2GGG40G20A%BB V3E-EC40B-20F#GB SV440E-G-B-E DATA TV120D++E++C++40B+20F#++G++B++ V2G+G+G+40G+20A%+B+B+\ DATA TV3D+E+C+40B20F#+G+ SV440E-GBE+ DATA TV120B++G++E%++40D&++20C++B%+C++ V2B+G+E%+40D&+20C+BC+ V340E%-E%C-C\ DATA SV440E%-BC-C DATA TV120C++D&++C++B%+80C++ V220C+D&+C+B%80C+ SV340FC+AC+ V4F-AA-A DATA TV120G&++D++E++C++40A%+$ V2$$B&+$ V3G&+$C+ V4$$20G&DEC DATA TV120G&+D+E+C+80A% V240G&$80E SV340C+$80C+ V440A%$80G& DATA TV120B40C+B20A&40G V220E40EE%.E V320B-40C40C.B- SV480G%C REM DATA PP DATA TV120GE40FEB V2EDB- SV3A%A&G V4CB-E- REM DATA PQ RO DATA TV120D+E+C+40B20F#+G+B+ V2GGG40G20A%BB V3E-EC40B-20F#GB SV440E-G-B-E DATA TV120D++E++C++40B+20F#++G++F%++ V2G+G+G+40G+20A%+B+A&+\ DATA TV3D+E+C+40B20F#+G+A%+ SV440E-GBE+ DATA TV120F%++E++C++40E++20F+F#+G+ V2A&+E+C+40E+20FF#G SV340AE+AA% V4A-AA-A%- DATA TV120G+E+40F#+80F%+ V220GB40F#BA SV3BA%A&B- V4B-A%-A&-B-- DATA TV120D+E+C+40B20F#+G+B+ V2GGG40G20A%BB V3E-EC40B-20F#GB SV440E-G-B-E DATA TV120D++E++C++40B+.C++ V220G+G+G+40G+.B+\ DATA TV320D+E+C+40B.C+ SV4E-GBE+ DATA TV120D++G+B+D++E++G#+A%+D++ V2G+G+BD+E+G#A%D+ V340DGF#-F# SV4DBF#-C+ DATA TV120G++D++B+G+40D+D+ V220G+$40$$A& SV3GG+G+B V4G-BBB- DATA TV120D+E+C+40B20F#+G+B+ V2GGG40G20A%BB V3E-EC40B-20F#GB SV440E-G-B-E DATA TV120D++E++C++40B+20F#++G++B++ V2G+G+G+40G+20A%+B+B+\ DATA TV3D+E+C+40B20F#+G+ SV440E-GBE+ DATA TV120B++G++E%++40D&++20C++B%+C++ V2B+G+E%+40D&+20C+BC+ V340E%-E%C-C\ DATA SV440E%-BC-C DATA TV120C++D&++C++B%+80C++ V220C+D&+C+B%80C+ SV340FC+AC+ V4F-AA-A DATA TV120G&++D++E++C++40A%+$ V2$$B&+$ V3G&+$C+ V4$$20G&DEC DATA TV120G&+D+E+C+80A% V240G&$80E SV340C+$80C+ V440A%$80G& DATA TV120B40C+B20A&40G V220E40EE%.E V320B-40C40C.B- SV480G%C REM DATA PR DATA TV120GE40FE SV2A%A&G V3CB-EB- V4C-B--E-B-- REM DATA PS DATA TV14C+C#+40D+20D++A%+D++A+D++A+ V248$20BA%BABA SV38$40FBB-B\ DATA SV48$40F-AB-A DATA TV120D++40E++100D++ V220B40C+100B SV340FD+20FBA%A& V440F-A20F-B-A%-A&- DATA TV14C+D+40E+20B+A%+B+A+B+A+ V248$20BA%BABA SV38A&40GE+EE+\ DATA SV48A&-40G-GE-G DATA TV120B+40C++100B+ V220B40C+100B SV340GE+20EDEF V440G-G20E-D-E-F- DATA TV14A+A%+40B+20B+A%+B+D&++C&++B+ V28$40$20BA&BD&+C&+B\ DATA SV38F40G&D&+G%D&+ V48F-40G&-G&G%-E DATA TV120B+40A&+100A V220B40A&100A SV340A&C&+20C&C%D&D% V440A&-E20C&-C%-D&-D%- DATA TV14EF40G&20B&+A+A%+G#+40A+ V248$20G&AA%G#40A\ DATA SV38D%40EE+80C& V48D%-40E-G&80C&- DATA TV140B+20B+B+40B+$ V2D+20BB40B$ SV340B-$$B- V4B--$$B-- DATA TV14C+C#+40D+20D++A%+D++A+D++A+ V248$20BA%BABA SV38$40FBB-B\ DATA SV48$40F-AB-A DATA TV120D++40E++100D++ V220B40C+100B SV340FD+20FBA%A& V440F-A20F-B-A%-A&- DATA TV14C+D+40E+20B+A%+B+A+B+A+ V248$20BA%BABA SV38A&40GE+EE+\ DATA SV48A&-40G-GE-G DATA TV120B+40C++60B+40A& V220B40C+60B40D SV340EE+E+B- V4E-GGB- DATA TV120G'40G'G.'G' V220E'40E'B%-.'B-' SV320E40ED.D& V420E-40E-D-.D&- DATA TV140G'G'20G'40F.' V240E%'E'80E&' SV340B'B'80A%&' V440CC80C DATA TV120F'40F'F.'B' SV220A&'40A'100A' V320C&'40C'100B-' V420C%-40C&-100B-- REM DATA PT DATA TV140E20B''B''40B'' SV240B V3E$$B-'' V4E-$$B--'' REM DATA PU RS DATA TV14C+C#+40D+20D++A%+D++A+D++A+ V248$20BA%BABA SV38$40FBB-B\ DATA SV48$40F-AB-A DATA TV120D++40E++100D++ V220B40C+100B SV340FD+20FBA%A& V440F-A20F-B-A%-A&- DATA TV14C+D+40E+20B+A%+B+A+B+A+ V248$20BA%BABA SV38A&40GE+EE+\ DATA SV48A&-40G-GE-G DATA TV120B+40C++100B+ V220B40C+100B SV340GE+20EDEF V440G-G20E-D-E-F- DATA TV14A+A%+40B+20B+A%+B+D&++C&++B+ V28$40$20BA&BD&+C&+B\ DATA SV38F40G&D&+G%D&+ V48F-40G&-G&G%-E DATA TV120B+40A&+100A V220B40A&100A SV340A&C&+20C&C%D&D% V440A&-E20C&-C%-D&-D%- DATA TV14EF40G&20B&+A+A%+G#+40A+ V248$20G&AA%G#40A\ DATA SV38D%40EE+80C& V48D%-40E-G&80C&- DATA TV140B+20B+B+40B+$ V2D+20BB40B$ SV340B-$$B- V4B--$$B-- DATA TV14C+C#+40D+20D++A%+D++A+D++A+ V248$20BA%BABA SV38$40FBB-B\ DATA SV48$40F-AB-A DATA TV120D++40E++100D++ V220B40C+100B SV340FD+20FBA%A& V440F-A20F-B-A%-A&- DATA TV14C+D+40E+20B+A%+B+A+B+A+ V248$20BA%BABA SV38A&40GE+EE+\ DATA SV48A&-40G-GE-G DATA TV120B+40C++60B+40A& V220B40C+60B40D SV340EE+E+B- V4E-GGB- DATA TV120G'40G'G.'G' V220E'40E'B%-.'B-' SV320E40ED.D& V420E-40E-D-.D&- DATA TV140G'G'20G'40F.' V240E%'E'80E&' SV340B'B'80A%&' V440CC80C DATA TV120F'40F'F.'B' SV220A&'40A'100A' V320C&'40C'100B-' V420C%-40C&-100B-- REM DATA PV DATA TV180EE+ V2B-B SV340E$E+ V440E-B-E- REM DATA PW RA RB RC RB RE DATA K2& DATA TV120GG&F40B20A40B SV320GG&F40B20A40B DATA TV120C+C&+B40D+20C#+40D+ V320CC&B-40D20C#40D DATA TV120F+C#+D+AB40G20G& SV3F+C#+D+AB40G20G& DATA TV140F$80F+ V2$C+ SV3$F V440F$80F- DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20GG#D+ V240$EDB%- SV3$B V4EGDB%- DATA TV120AC+F+40D+20G+C+A+ V240$C$E% SV3C+A$C V4CACB DATA TV140F+20E&+C+AA&GG& V240F$80E& SV340A$80A V440F$80F DATA TV120FBD+40F+20BC+D+ V240$D$D SV3BB$B V4B-FDF DATA TV120ABG40F20F#GG# V240$EDD& SV3$B V4EGDD& DATA TV120AC+E+40G+20G&+40F+ V2$A$A V3CEF-E SV4CFF-F DATA TV120BD+F+40G%+20G&+40F+ V2$D$D SV3BBFB V4B-FF-F DATA TV120F+40E+C++.E++ V2C+.C+.E+ SV3C+E+EG& DATA TV120D++40B+G+20F+40D+ V220D+40B20B%40GF SV3FD+GB% V4F-FG-G DATA TV120D+40C+F+20D+40C+ V2B.A.E V3E%B-FA- SV4CGF-F REM DATA PX DATA TV180B120B+ V280D120D+ SV340BF120B- V480B-120B-- DATA ""