ON ERROR IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE MODE 3 : PRINT REPORT$ : END REM A medley of Christmas carols transcribed by REM Gerald Pye for 'Z80 music' in Nov-Dec 1981. REM BBCSDL version by R.T.Russell, 14-Dec-2018. REM Christmas Park 3D model from turbosquid.com REM MAY NOT BE REUSED WITHOUT BEING REPURCHASED SYS "SDL_SetWindowTitle", @hwnd%, "Christmas Carol Medley", @memhdc% GL_BLEND = &0BE2 GL_SRC_ALPHA = &0302 GL_ONE_MINUS_SRC_ALPHA = &0303 INSTALL @lib$+"ogllib" : REM @lib$ + "webgllib" DIM Object%(7), nVert%(7), vFormat%(7), vSize%(7), Texture%(7), Light%(0) DIM Material%(7), Pan(7), Tilt(7), Roll(7), Xpos(7), Ypos(7), Zpos(7) DIM Q1&(3), Q2&(3), Q3&(3), Q4&(3) PRINT "Please wait..." *REFRESH PROCcreatefvf 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 133 *STEREO 1,127 *STEREO 2,42 *STEREO 3,-42 *STEREO 0,-127 *VOICE 0,6 *VOICE 1,6 *VOICE 2,6 *VOICE 3,6 SOUND 1,0,0,10 DIM snd{(3,50)a&,p&,d&}, p%(3), q%(3), cli$(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 dur% = 24 tempo = 4 ENVELOPE 1,1,0,0,0,0,0,0,64,0,0,-4,119,89 REPEAT REPEAT READ R$ : IF R$="" REPEAT PROCanimate : 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$ = "" WHEN "P": T$ = MID$(T$,2) WHEN "=": beat% = 0 WHILE ASC(T$)>=&30 AND ASC(T$)<=&39 beat% = beat% * 10 + ASC(T$)-&30 T$ = MID$(T$,2) : ENDWHILE WHILE ADVAL(-5)<16 OR ADVAL(-6)<16 OR ADVAL(-7)<16 OR ADVAL(-8)<16 PROCanimate : ENDWHILE CASE TRUE OF WHEN beat% <= 60 tempo = 3 : *TEMPO 130 WHEN beat% <= 70 tempo = 4 : *TEMPO 131 WHEN beat% <= 100 tempo = 3 : *TEMPO 131 WHEN beat% <= 120 tempo = 4 : *TEMPO 133 WHEN beat% <= 130 tempo = 3 : *TEMPO 132 WHEN beat% <= 150 tempo = 2 : *TEMPO 131 WHEN beat% <= 170 tempo = 3 : *TEMPO 133 ENDCASE 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 "W": wave% = VAL(T$) : T$ = MID$(T$,2) WHILE ADVAL(-5-voice%)<16 PROCanimate : ENDWHILE cli$(voice%) = "voice " + STR$voice% + "," + STR$(wave%) 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 pitch% < 0 pitch% += 48 IF Note% = 7 pitch% = 0 IF pitch% < 0 OR 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%))}.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 PROCanimate 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 FOR v% = 0 TO 3 IF cli$(v%)<>"" OSCLI(cli$(v%)) : cli$(v%) = "" NEXT 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,1,0,snd{(v%,q%(v%))}.d& ELSE SOUND v%,1,snd{(v%,q%(v%))}.p&,snd{(v%,q%(v%))}.d& ENDIF q%(v%) += 1 ENDIF NEXT v% IF stall% PROCanimate UNTIL p%(0)=q%(0) AND p%(1)=q%(1) AND p%(2)=q%(2) AND p%(3)=q%(3) ENDIF UNTIL FALSE END DEF PROCcreatefvf LOCAL F%, V%, a, b, c, x, y, z, p(), q(), r(), v() : DIM p(2,2), q(2,2), r(2,2), v(2) REM Create the snowflakes as a Flexible Vertex Format file: F% = OPENOUT(@tmp$+"snowflakes.fvf") BPUT #F%,&B8 : BPUT #F%,&B: BPUT #F%,0 : BPUT #F%,0 : REM Vertex count BPUT #F%,&02 : BPUT #F%,1 : BPUT #F%,20: BPUT #F%,0 : REM Vertex format and size FOR V% = 1 TO 1000 x = RND(400)-200 : y = RND(100) : z = RND(400)-200 a = 2*PI*RND(1) : b = 2*PI*RND(1) : c = 2*PI*RND(1) p() = 1, 0, 0, 0, COSa, -SINa, 0, SINa, COSa q() = COSb, 0, SINb, 0, 1, 0, -SINb, 0, COSb r() = COSc, -SINc, 0, SINc, COSc, 0, 0, 0, 1 v() = 1,1,1 : v() = p() . v() : v() = q() . v() : v() = r() . v() PROC4(F%,x+v(0)) : PROC4(F%,y+v(1)) : PROC4(F%,z+v(2)) : REM xyz coordinates PROC4(F%,0.500) : PROC4(F%,0.133375) : REM texture uv a += 2*PI/3 : b += 2*PI/3 : c += 2*PI/3 p() = 1, 0, 0, 0, COSa, -SINa, 0, SINa, COSa q() = COSb, 0, SINb, 0, 1, 0, -SINb, 0, COSb r() = COSc, -SINc, 0, SINc, COSc, 0, 0, 0, 1 v() = 1,1,1 : v() = p() . v() : v() = q() . v() : v() = r() . v() PROC4(F%,x+v(0)) : PROC4(F%,y+v(1)) : PROC4(F%,z+v(2)) : REM xyz coordinates PROC4(F%,0.750) : PROC4(F%,0.187500) : REM texture uv a += 2*PI/3 : b += 2*PI/3 : c += 2*PI/3 p() = 1, 0, 0, 0, COSa, -SINa, 0, SINa, COSa q() = COSb, 0, SINb, 0, 1, 0, -SINb, 0, COSb r() = COSc, -SINc, 0, SINc, COSc, 0, 0, 0, 1 v() = 1,1,1 : v() = p() . v() : v() = q() . v() : v() = r() . v() PROC4(F%,x+v(0)) : PROC4(F%,y+v(1)) : PROC4(F%,z+v(2)) : REM xyz coordinates PROC4(F%,0.999) : PROC4(F%,0.133375) : REM texture uv NEXT CLOSE #F% ENDPROC DEF PROCanimate LOCAL bgcolour%, nobjects%, viewangle, aspectratio, mindist, maxdist, cameraroll LOCAL camera(), lookat() : DIM camera(2), lookat(2) PRIVATE flip% : IF flip% = 0 flip% = TIME + 50 IF TIME > flip% flip% += 50 : SWAP Object%(2),Object%(7) lookat() = 0, 0, 0 bgcolour% = &FF000040 nobjects% = 7 viewangle = PI/4 aspectratio = @vdu%!208/@vdu%!212 mindist = 10.0 maxdist = 1000.0 cameraroll = 0 Ypos(3) -= RND(1) : IF Ypos(3) < -100 Ypos(3) += 200 Ypos(4) -= RND(1) : IF Ypos(4) < -100 Ypos(4) += 200 Ypos(5) -= RND(1) : IF Ypos(5) < -100 Ypos(5) += 200 Ypos(6) -= RND(1) : IF Ypos(6) < -100 Ypos(6) += 200 camera() = -100*SIN(TIME/1000), 40, 160-100*SIN(TIME/2000)/3 PROC_render(Device%, bgcolour%, 0, Light%(), nobjects%, Material%(), Texture%(), \ \ Object%(), nVert%(), vFormat%(), vSize%(), Pan(), Tilt(), Roll(), Xpos(), Ypos(), Zpos(), \ \ camera(), lookat(), viewangle, aspectratio, mindist, maxdist, cameraroll) ENDPROC DEF PROCinitrender LOCAL I%, a# IF POS REM SDL thread sync VDU 26 Device% = FN_initgl(@hwnd%, 1, 0) IF Device% = 0 ERROR 100, "Can't initialise 3D library" SYS FN_gpa("glEnable"), GL_BLEND, @memhdc% SYS FN_gpa("glBlendFunc"), GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, @memhdc% REM Load the 3D objects: Object%(1) = FN_load3d(Device%, @dir$+"xmascene.fvf", nVert%(1), vFormat%(1), vSize%(1)) IF Object%(1) = 0 ERROR 100, "Can't load xmascene.fvf" Object%(0) = FN_load3d(Device%, @dir$+"ground.fvf", nVert%(0), vFormat%(0), vSize%(0)) IF Object%(0) = 0 ERROR 100, "Can't load ground.fvf" Object%(2) = FN_load3d(Device%, @dir$+"lights1.fvf", nVert%(2), vFormat%(2), vSize%(2)) IF Object%(2) = 0 ERROR 100, "Can't load lights1.fvf" Object%(3) = FN_load3d(Device%, @tmp$+"snowflakes.fvf", nVert%(3), vFormat%(3), vSize%(3)) IF Object%(3) = 0 ERROR 100, "Can't load snowflakes.fvf" FOR I% = 4 TO 6 Object%(I%) = Object%(3) nVert%(I%) = nVert%(3) vFormat%(I%) = vFormat%(3) vSize%(I%) = vSize%(3) Xpos(I%) = 10*RND(1) Ypos(I%) = 50*(I%-3) Zpos(I%) = 10*RND(1) NEXT Object%(7) = FN_load3d(Device%, @dir$+"lights2.fvf", nVert%(7), vFormat%(7), vSize%(7)) IF Object%(7) = 0 ERROR 100, "Can't load lights2.fvf" REM Load the textures: Texture%(1) = FN_loadtexture(Device%, @dir$ + "xmascene.png") IF Texture%(1) = 0 ERROR 100, "Can't load xmascene.png" Texture%(0) = FN_loadtexture(Device%, @dir$ + "ground.gif") IF Texture%(0) = 0 ERROR 100, "Can't load ground.gif" Texture%(2) = Texture%(1) Texture%(3) = Texture%(1) Texture%(4) = Texture%(1) Texture%(5) = Texture%(1) Texture%(6) = Texture%(1) ENDPROC DEF PROCcleanup LOCAL I% FOR I% = 0 TO 3 Object%(I%) += 0 : IF Object%(I%) PROC_release(Object%(I%)) : Object%(I%) = 0 NEXT Object%(7) += 0 : IF Object%(7) PROC_release(Object%(7)) : Object%(7) = 0 FOR I% = 0 TO 1 Texture%(I%) += 0 : IF Texture%(I%) PROC_release(Texture%(I%)) : Texture%(I%) = 0 NEXT Device% += 0 : IF Device% PROC_release(Device%) : Device% = 0 *REFRESH ON 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 DATA [ Carol: "Good King Wenceslas". DATA ; G.D.Pye. 22-11-81. DATA ; DATA K4b =70 V1W8V2W8V3W8V4W8 PA ; Intro: DATA TV148E'EFGV2C'E96DSV3A.48BV4A-CDB- DATA TV148A'A96BV2CESV3AGV4F48ED DATA TV148E+D+C+BV2E96A48GSV3AF+96E+V448CD96E DATA TV196AD+V248AG96FSV3C+48D+BV4FE96D DATA TV196A.48$V296E.48$SV396C+.48$V496A.48$ DATA V1W5V2W5V3W5V4W5 PB DATA TV148A"A"ABV2EEFESV3C+C+C+BV4AAFG DATA TV148A"A96EV248EF96B-SV348C+D+96GV448AD96E DATA TV148FEFGV2DEDDSV3AAAAV4DCDB- DATA TV196A"A"V2E"E"SV3C+C+V4A-A- DATA PC DATA TV148A"A"ABV2EEFESV3C+C+C+BV4AAFG DATA TV148A"A96EV248EF96B-SV348C+D+96GV448AD96E DATA TV148FEFGV2DEDDSV3AAAAV4DCDB- DATA TV196A"A"V2E"E"SV3C+C+V4A-A- DATA PD DATA TV148E+D+C+BV2AAAGSV3E+F+E+E+V4CDEE DATA TV148C+B96AV248AG96FSV348E+E+96C+V448AE96F DATA TV148FEFGV2A-EDDSV3D+AABV4DCDB- DATA TV196A"AV2E"ESV3C+"C+V4A-"A- DATA TV148E"EFGV2E"EDDSV3AAABV4CCDB- DATA TV148A"A96BV248CC96ESV348AA96GV448FF96E DATA TV148E+D+C+BV2EAAGSV3AF+E+E+V4CDEE DATA TV196AD+V2AFSV3C+D+V4FD DATA TV1192AV2ESV3C+V4A DATA 100$ DATA K4b V1W5V2W8V3W8V4W8 PE DATA SV148A"A"ABTV296A.48BV3CDEFSV4A-B-CD DATA SV148A"A96ETV2AEV348CDB-CSV4EFGA DATA SV148FEFGTV2FGABV3A-B-FGSV4FEDB- DATA SV196A"A"TV248C+CEFV3ACEDSV496A-48CD ; LINE 2: DATA SV148A"A"ABTV296AD+V3EGbSV4AE DATA SV148A"A96ETV2C+BV3FESV4FGb DATA SV148FEFGTV296D+E+V348AG%ABSV4FEFG DATA SV196A"ATV2C+F+V348BAFGSV4192A ; LINE 3: REM DATA V1W5V2W8V3W8V4W8 PF DATA TV148E+D+C+BV2C+BAFV3A$$$SV4A-B-CD DATA TV148C+B96AV248GFEDSV496EF DATA TV148FEFGV2FGABV3CB-A-B-SV496D48CB- DATA TV196A"AV248CD+E+F+V3ABC+D+SV4192A- ; LINE 4: DATA TV148E"EFGV2A+G+F+E+V396E48FGSV4192A DATA TV148A"A96BV248D+C+BE+V396A48FGSV4FEDB- DATA TV148E+D+C+BV2Gb+F+E+D+V3CDGbFSV4192A- DATA TV196AD+V2C+24D+E+48F+V396E48D24A-B-SV448AGbFD DATA TV1192AV2E+V3CSV4A- DATA 100$ DATA K4b V1W5V2W8V3W8V4W8 PG DATA SV148A"A"ABTV296C+BV3AGbSV4192A- DATA SV148A"A96ETV2AGbV3FESV4192A- DATA SV148FEFGTV2FG%ABV3DEFGSV4DCB-24A-G- DATA SV196A"A"TV2AFV3CA-SV448F-CGF ; LINE 2: DATA SV148A"A"ABTV296C+D+V3ABSV4192A- DATA SV148A"A96ETV2E+Gb+V3C+E+SV4192A- DATA SV148FEFGTV296F+BV3D+48FG%SV496DE- DATA SV196A"ATV2C+D+V3ABSV448AFED ; LINE 3: REM DATA PG V1W5V2W5V3W5V4W5 DATA TV148E+D+C+BV2AAAGSV3E+F+E+E+V4CDEE DATA TV148C+B96AV248AG96FSV348E+E+96C+V448AE96F DATA TV148FEFGV2A-EDDSV3D+AABV4DCDB- DATA TV196A"AV2E"ESV3C+"C+V4A-"A- DATA TV148E"EFGV2E"EDDSV3AAABV4CCDB- DATA TV148A"A96BV248CC96ESV348AA96GV448FF96E DATA TV148E+D+C+BV2EAAGSV3AF+E+E+V4CDEE DATA TV196AD+V2AFSV3C+D+V4FD DATA TV1192AV2ESV3C+V4A DATA 100$ DATA K4b V1W5V2W8V3W8V4W8 PH DATA TV148A"A"A"BSV296Cb+48D+E+V396E48AGbSV4AGbFbE DATA TV148A"A96ESV248Gb+A+G+F+V3E+F+E+D+V4ABCb+D+ DATA TV148FEFGSV296E+.48D+V396Cb+.48G%V4AGbAB DATA PI DATA TV196A"ASV248E+D+E+F+V3192AV448Cb+BC+D+ ; LINE 2: DATA PJ DATA TV148A"A"ABSV296A+48Gb+F+V396Cb48CBV496A48AB DATA TV148A"A96ESV2E+48E+D+V396Cb+48GbFV496AE DATA PK DATA TV148FEFG%SV296Cb+.48BV396A.48FV4FEFG% DATA PL DATA TV196A"ASV2A48E+24F+G%+V396Cb48ABV4ABAG ; LINE 3: REM DATA =75 V1W6V2W8V3W8V4W8 PM DATA TV148E+D+C+BTV2192ASV348ABC+D+V4192F DATA TV148C+B96ATV296F+E+V3DASV4B-C DATA TV148FEFGTV2C+E+C+BV3FGEDSV4FEFG DATA TV196A"ATV248AGFBV396C.48DSV496A48D24CB- ; LINE 4: DATA TV148E"EFGTV296C+D%+V3ABSV4192A- DATA TV148A"A96BTV2E%+F+V3B%D%+SV4192A- DATA TV148E+D+C+BTV2G+F+E+D+V396E%.48GSV4192E DATA TV196AD+TV2C+F+V3C48DB-SV4FE96D DATA TV1192ATV2E+SV3C+V4A DATA 100$ DATA V1W6V2W6V3W6V4W5 PL DATA TV148AF+E+"E+V2A"A"ABSV3C+96A48BV4ADCE DATA TV148C+.24D+96BV248A"A96ESV3AGV448AD96E DATA TV124FG48AD+24C+BV2FEFGSV396A48F+E+V4DCB-E ; LINE 2 DATA TV148C+D+96E+V2A"ASV348E+D+96C+V4A-A- DATA TV148AF+E+"E+V2A"A"ABSV3C+96A48BV4ADCE DATA TV148C+.24D+96BV248A"A96ESV3AGV448AD96E DATA TV124FG48AD+24C+BV248FEFGSV396A48F+E+V4DCB-E DATA TV196C+AV2A"ASV348E+.24D+96C+V4A-A- ; LINE 3: DATA TV148E+F+E+D+V2E+D+C+BSV3ABE+D+V4192A- DATA TV148E+F+E+C+V2C+B96ASV348AD+C+AV4192A- DATA TV148AGABV2FEFGSV3ABAD+V496D48CB- DATA TV148C+D+E+F+V296A"ASV348C+F+E+D+V4A-DCB- ; LINE 4: DATA TV148Gb+"Gb+F+24E+D+V248E"EFGSV396E+48D+C+V4A-CDE DATA TV148C+D+B24C+D+V248A"A96GSV348AF+E+GV4FB-ED DATA TV148E+G+A+D+V2E+D+C+BSV3A24E+D+48C+E+V4CEFG DATA PM DATA TV154C+E+V2108ASV354E+AV4AC DATA PN DATA TV130F+E+60D+V2120D+SV360A48D+V4DF DATA TV1240E+V2AV3CSV4A- DATA 255$ DATA [ Carol: "O Little Town of Bethlehem". DATA ; G.D.Pye. 22-12-81. DATA ; DATA K1b =60 V1W6V2W6V3W6V4W6 PA DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA PB DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA PC DATA TV148FAV296FSV3AV4D DATA TV196C+.48D+C+BAGV296E.48D96ECSV396A.48F96C+"48C+B \ DATA V496A-.48B-96C48DE DATA TV148FGAB96C+V2CFESV3AFGV4FDC DATA TV196CV2CSV3EV448CB- DATA TV196FAGFV2CCB-48A-B-SV396F"F48DE96FV4A-F-B-D DATA TV1192C"V2C"SV3E"V4C" ; LINE 4: DATA TV1192CV2CSV396FGV4DE DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2F"FESV3C+FGV4FDC DATA PD DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3B48C+A96C+"48C+BV496G-48A-D96CC DATA TV1192F96FV2192F96FSV3192A96AV4192F96F DATA 100$ DATA PE V1W8V2W8V3W8V4W8 DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA TV148FAV296FSV3AV4D DATA TV196C+.48D+C+BAGV296E.48D96ECSV396A.48F96C+"48C+B \ DATA V496A-.48B-96C48DE DATA TV148FGAB96C+V2CFESV3AFGV4FDC DATA TV196CV2CSV3EV448CB- DATA TV196FAGFV2CCB-48A-B-SV396F"F48DE96FV4A-F-B-D DATA TV1192C"V2C"SV3E"V4C" ; LINE 4: DATA TV1192CV2CSV396FGV4DE DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2F"FESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3B48C+A96C+"48C+BV496G-48A-D96CC DATA TV1192F96FV2192F96FSV3192A96AV4192F96F DATA 100$ DATA V1W5V2W5V3W5V4W5 PF DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA PB DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA PC DATA TV148FAV296FSV3AV4D DATA TV196C+.48D+C+BAGV296E.48D96ECSV396A.48F96C+"48C+B \ DATA V496A-.48B-96C48DE DATA TV148FGAB96C+V2CFESV3AFGV4FDC DATA TV196CV2CSV3EV448CB- DATA TV196FAGFV2CCB-48A-B-SV396F"F48DE96FV4A-F-B-D DATA TV1192C"V2C"SV3E"V4C" ; LINE 4: DATA TV1192CV2CSV396FGV4DE DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2F"FESV3C+FGV4FDC DATA PD DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3B48C+A96C+"48C+BV496G-48A-D96CC DATA TV1192F96FV2192F96FSV3192A96AV4192F96F DATA 100$ DATA PM V1W6V2W6V3W6V4W6 DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA TV196CV2CSV3GV4E DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2FFESV3C+FGV4FDC DATA TV196AV2DSV3FV4D DATA TV196B48AF96G"GV2DF"FESV3BC+D+48C+BV496G-A-B-C DATA TV1192F96FV2192F96FSV3192A96AV4192F96F ; LINE 2: DATA TV148FAV296FSV3AV4D DATA TV196C+.48D+C+BAGV296E.48D96ECSV396A.48F96C+"48C+B \ DATA V496A-.48B-96C48DE DATA TV148FGAB96C+V2CFESV3AFGV4FDC DATA TV196CV2CSV3EV448CB- DATA TV196FAGFV2CCB-48A-B-SV396F"F48DE96FV4A-F-B-D DATA TV1192C"V2C"SV3E"V4C" ; LINE 4: DATA TV1192CV2CSV396FGV4DE DATA TV196F"F"FGV2CDC48DESV396ABC+BV4FBAG DATA TV148AGAB96C+V2F"FESV3C+FGV4FDC DATA TV1104AV2DSV3FV4D DATA TV1116B58AFV2116DFSV3B58C+AV4116G-58A-D DATA TV1128G"GV2FESV3C+"64C+BV4128C DATA TV1256F128FV2256F128FSV3256A128AV4256F128F DATA 255$ DATA [ Carol: "We Wish You A Merry Christmas". DATA ; G.D.Pye. 22-12-81. DATA ; DATA =70 K2b V1W5V2W5V3W7V4W5 PA DATA TV148FB"24BC+BA DATA TV148G"G"G DATA TV148C+"24C+D+C+B ; LINE 2: DATA TV148AF"F DATA TV148D+"24D+E+D+C+ DATA TV148BG24F"F DATA TV148GC+A ; LINE 3: DATA TV196B48FV296B24FE DATA TV148B"B"BV224DCB-CDEV348$$D+SV4$$B- DATA TV196A"48AV296F48F#V3C+"C+"D+SV4FFD DATA TV148BAGV2GFE%V3D+C+.24BSV448GC+C ; PAGE 61: DATA TV196F48C+V296F48FSV396A48C+V496F48A DATA TV148D+C+BV2FFBSV3B24C+D+48E%+V4BAG DATA TV148F+F"FV224AG48F"FSV324F+C+48ABV4F24GE48D DATA TV148GC+AV2EGFSV3B24E+D+48C+V424ED48CF ; LINE 2: DATA TV196B.V2F.SV3D+48FV496B-. DATA SV348B"24BC+BAV496B-48B- DATA SV348G"G"GV4E24EFED DATA SV348C+"24C+D+C+BV448CCE% ; PAGE 62: DATA SV348AF"FV4F"24FGFE DATA SV348D+"24D+E+D+C+V4DE%48F#D DATA SV348BGFV4G.24FED DATA SV348GC+AV424ED48CF ; LINE 2: DATA TV248$$FSV396B48FV496B-48$ DATA TV248B"B"BSV3B"BD+V4$$B- DATA TV148F+C+F+V296A48ASV3C+F+C+V496F48F DATA TV148D+24C+D+C+BV248BAGSV324D+E%+48F+E+V4BCC- DATA TV148BAC+V296F48FSV396C+48AV496F48A ; PAGE 63: DATA TV148D+C+BV296F.SV348D+AGV4BAG DATA TV196F+.V248AF"FSV3C+ABV4F"24FE48D DATA TV148F+D+C+V2GC+ASV3BG+F+V424ED48CF DATA TV196D+24C+.12C+V296B24A.12AV396F48$SV4B-D24F.12F ; LINE 2: DATA TV148B"24BC+BAV2$FFEFFV3$DD$DCSV496B48B- DATA TV148G"G"GV2EB-GSV324BA48G24G."12GV496E48$ DATA TV148C+"24C+D+C+BV2$GGFGGV3$E%E$EDSV496C+48C DATA TV148AF24F.12FV248FC$SV324C+B48A24C+.12C+V448AA24A.12A ; PAGE 64: DATA TV148D+"24D+E+D+C+V248FDFSV324F+E+D+C+BAbV448BBB- DATA TV148BGFV224BG"48EFSV3GBBV4EEE DATA TV148GC+AV2EGFSV3E+.24D+48C+V496C48E DATA TV196B48FV2FGESV396B.V448DEC DATA TV148B"B"BV296D48E%SV3B"BC+V4B-$$ ; LINE 2: DATA TV196A48C+V2F#.24E%48FV3$$24DCSV4D+D+D DATA TV148BAGV2GF%$V3B-24CDE%DSV448GC+B DATA TV196F48C+V2$$FSV3C+BAV4AGF DATA TV148D+C+BV2FGFSV3BE+D+ ; PAGE 65: DATA TV148F+F"FV224AG48$$SV3E+.24D+48C+V4C+.24B48A DATA TV148GC+AV2D24GF48ESV324BA48GC+V424GFEDC DATA TV196B24F."12FV296F"48$SV3D+B$V424B-CDEF."12F DATA TV148B24BC+B.12AV248FF$V3DD$SV4BB$ ; LINE 2: DATA TV148GGGV2EE$SV3BB$V4E"E$ DATA TV148C+24C+D+C+.12B V248GG$ V3EE$ SV4CC$ DATA TV148AF24F.12FV248FF$SV3C+A24C+.12C+V448FF24A.12A DATA TV148F+F+24G#+.12G#+ V248D+24D+E+D+.12C+ SV324BD+48F+24Ab+.12Ab SV448BB24B-.12B- ; PAGE 66: DATA TV124G+E+48BF+V2BBFV3GEB-SV4EED DATA TV148BE+C+V2GC+AV3B-GFSV424ED48CF DATA TV196D+48FV296B48EV396F48$SV4BD+C+ DATA TV148B"B"BV224FEDEFGV3DCB-CDESV448BBB- DATA TV196A"48AV296F"48FV396C"48CSV424FGFEDC ; LINE 2: DATA TV148BAGV2FFE%SV3B24C+D+C+BV448DCC+ DATA TV196F48C+V296$48FSV348C+BAV4AGF DATA TV148D+C+BV2FF$V3$24C+D+48E%+V4BAG DATA TV148F+F"FV224AG48$$SV324F+C+48ABV448F24FE48D ; PAGE 67: DATA TV148GC+AV2EGFSV3B24E+D+48C+V4ECF DATA TV148D+BE+V2ABBV3FDGSV4DGE DATA PB DATA TV152C+F+D+V2AbC+BV3E26AbG48FSV452AbFB DATA PC DATA TV157G+E+.V2BB.V3$G.SV457E+E+. DATA 96$ DATA PD DATA TV148F+V2C+V324A%GSV448E+ ; LINE 2: DATA TV148B+24A+G+F+E+V248BBASV3F+E+E+V4D+24E+D+48C+ DATA TV124D+C+D+E+48F+V224BABC+D+BSV348BB24FBV448BGD DATA PE DATA TV154GV2ESV3BV427ED DATA PF DATA TV158C+V2GV329EDSV458C DATA PG DATA TV164AV2FV3CSV4F DATA PH DATA TV1157BV2FV3DSV4B- DATA 255$ DATA [ Carol: "It Came Upon The Midnight Clear". DATA ; G.D.Pye. 22-11-81. DATA ; DATA K1b =120 V1W5V2W5V3W5V4W5 PA DATA TV124FGV248FSV324ABV448F DATA TV148AGF24GAV248FEF24DFSV348C+C+A24D+C+V448FCF24BA DATA TV148BAGC+'V2EFEESV3BC+C+C+V4GFCB DATA TV148C+A24BC+48D+V248FFFFSV3C+C+BBV4AFDB- DATA TV196C+.V2F.SV3A.V4F. ; LINE 2: DATA PB DATA TV124ABV248FSV3C+V4F DATA TV148C+'C+AFV2EEFFSV3C+GFAV4CCDD DATA TV148BAG24FGV248FFEFSV3D+C+C+AV4B-FCF DATA TV124AB48C+AGV2FCFESV3FFC+BV4D24A-B-48CC DATA TV196F.V2F.SV3A.V4F-. ; LINE 3: DATA PC DATA TV148FV2DSV3FV4D DATA TV148EDEGV2C#DDCSV3GABAV4EFGA DATA TV148F.24E48DAV2D.24C#48DFSV348A.24G48FB%V448D.24D48DD DATA TV148GFEDV2EDCB%-SV3C+AGFV4EFGG- DATA TV196C.V2C.SV3E.V4C. ; LINE 4: DATA PD DATA TV148CV2CSV3CV4C DATA TV148C+BA24GAV248AGF#24EFSV348C+C+C+24BAV448A-24B-C48DD DATA TV148BAG24F%GV2GE48F%EFSV3GC+C+AV4G-24A-B-48CD DATA PE DATA TV124AB48C+AGV224FG48AFESV3C+.24C+48C+BV4A-24G-F-48CC DATA TV196F.V2F.SV3A.V4F-. DATA 100$ DATA PF V1W8V2W7V3W7V4W7 DATA TV124FGV248FSV324ABV448F DATA TV148AGF24GAV248FEF24DFSV348C+C+A24D+C+V448FCF24BA DATA TV148BAGC+'V2EFEESV3BC+C+C+V4GFCB DATA TV148C+A24BC+48D+V248FFFFSV3C+C+BBV4AFDB- DATA TV196C+.V2F.SV3A.V4F. ; LINE 2: DATA TV124ABV248FSV3C+V4F DATA TV148C+'C+AFV2EEFFSV3C+GFAV4CCDD DATA TV148BAG24FGV248FFEFSV3D+C+C+AV4B-FCF DATA TV124AB48C+AGV2FCFESV3FFC+BV4D24A-B-48CC DATA TV196F.V2F.SV3A.V4F-. ; LINE 3: DATA V4W5 DATA TV148FV2DSV3FV4D DATA TV148EDEGV2C#DDCSV3GABAV4EFGA DATA TV148F.24E48DAV2D.24C#48DFSV348A.24G48FB%V448D.24D48DD DATA TV148GFEDV2EDCB%-SV3C+AGFV4EFGG- DATA TV196C.V2C.SV3E.V4C. ; LINE 4: DATA V4W7 DATA TV148CV2CSV3CV4C DATA TV148C+BA24GAV248AGF#24EFSV348C+C+C+24BAV448A-24B-C48DD DATA TV148BAG24F%GV2GE48F%EFSV3GC+C+AV4G-24A-B-48CD DATA TV124AB48C+AGV224FG48AFESV3C+.24C+48C+BV4A-24G-F-48CC DATA TV196F.V2F.SV3A.V4F-. DATA 100$ DATA PG DATA V1W5 DATA TV124FGV248FSV324ABV448F DATA TV148AGF24GAV248FEF24DFSV348C+C+A24D+C+V448FCF24BA DATA TV148BAGC+'V2EFEESV3BC+C+C+V4GFCB DATA TV148C+A24BC+48D+V248FFFFSV3C+C+BBV4AFDB- DATA TV196C+.V2F.SV3A.V4F. ; LINE 2: DATA TV124ABV248FSV3C+V4F DATA TV148C+'C+AFV2EEFFSV3C+GFAV4CCDD DATA TV148BAG24FGV248FFEFSV3D+C+C+AV4B-FCF DATA TV124AB48C+AGV2FCFESV3FFC+BV4D24A-B-48CC DATA TV196F.V2F.SV3A.V4F-. ; LINE 3: DATA V1W6V2W6V3W6V4W5 DATA TV148FV2DSV3FV4D DATA TV148EDEGV2C#DDCSV3GABAV4EFGA DATA TV148F.24E48DAV2D.24C#48DFSV348A.24G48FB%V448D.24D48DD DATA TV148GFEDV2EDCB%-SV3C+AGFV4EFGG- DATA TV196C.V2C.SV3E.V4C. ; LINE 4: DATA V1W5V2W5V3W5V4W5 DATA TV148CV2CSV3CV4C DATA TV148C+BA24GAV248AGF#24EFSV348C+C+C+24BAV448A-24B-C48DD DATA TV148BAG24F%GV2GE48F%EFSV3GC+C+AV4G-24A-B-48CD DATA TV124AB48C+AGV224FG48AFESV3C+.24C+48C+BV4A-24G-F-48CC DATA TV196F.V2F.SV3A.V4F-. DATA 100$ DATA PH DATA TV124FGV248FSV324ABV448F DATA TV148AGF24GAV248FEF24DFSV348C+C+A24D+C+V448FCF24BA DATA TV148BAGC+'V2EFEESV3BC+C+C+V4GFCB DATA TV148C+A24BC+48D+V248FFFFSV3C+C+BBV4AFDB- DATA TV196C+.V2F.SV3A.V4F. ; LINE 2: DATA TV124ABV248FSV3C+V4F DATA TV148C+'C+AFV2EEFFSV3C+GFAV4CCDD DATA TV148BAG24FGV248FFEFSV3D+C+C+AV4B-FCF DATA TV124AB48C+AGV2FCFESV3FFC+BV4D24A-B-48CC DATA TV196F.V2F.SV3A.V4F-. ; LINE 3: DATA V1W6 DATA TV148FV2DSV3FV4D DATA TV148EDEGV2C#DDCSV3GABAV4EFGA DATA TV148F.24E48DAV2D.24C#48DFSV348A.24G48FB%V448D.24D48DD DATA TV148GFEDV2EDCB%-SV3C+AGFV4EFGG- DATA TV196C.V2C.SV3E.V4C. ; LINE 4: DATA V2W6 DATA TV148CV2CSV3CV4C DATA TV148C+BA24GAV248AGF#24EFSV348C+C+C+24BAV448A-24B-C48DD DATA TV148BAG24F%GV2GE48F%EFSV3GC+C+AV4G-24A-B-48CD DATA TV126AB52C+AGV226FG52AFESV3C+.26C+52C+BV4A-26G-F-52CC DATA TV196F.V2F.SV3A.V4F-. DATA 255$ DATA [ Carol: "O Come All ye Faithful" DATA ; G.D.Pye. 22-11-81. DATA ; DATA K1# =110 V1W5V2W5V3W5V4W5 PA DATA TV148G'V2D'SV3B'V4G DATA PB DATA TV196G48DGV296D'DSV3B'BV4GG DATA TV196ADV2E$SV3C+AV4GF DATA TV148BABC+V2DDDESV3GAGGV4GFGC ; LINE 2: DATA TV196B48AV296D48DSV396G48FV496D48D DATA PC DATA TV148G'V2B-'SV3G'V4E DATA PD DATA TV196G48FEV2B-C#DCSV396G48AAV496E48DA- DATA TV148FGABV296DDSV348AGFDV4DB-F-G- DATA TV196F48E.24D"V296D48C#.24D"SV396A48G.24FV496A-48A-.24D DATA TV1192DV296A-CSV3192FV4192D ; LINE 3 DATA TV196D+48C+BV296D24EF48GSV396B48C+D+V496B48AG DATA TV196C+BV248GF96GSV3C+D+V4AG DATA TV148ABGAV2DDEESV3D+GBC+V4FGEC DATA TV196F48DG"V296D48D$SV396A48F$V496D48D$ ; LINE 4: DATA TV148GFGA DATA TV196G48DB"V2$$$DSV3$$$G DATA TV148BABC+V2DDDDSV3GFGA DATA TV196B48ABV296D48DGSV396G48FD+V4$$$G ; LINE 5: DATA TV148C+BAGV2FGD24DC#SV348D+D+AAV4AGFE DATA TV196F48GC+V296D48DESV396AGV448DCB-C DATA TV196B48A.24G"V296D48DCSV396G48F.24G"V496D48D.24G- DATA TV1192GV2B-SV3GV4G- DATA 100$ DATA PE V1W7V2W7V3W7V4W7 DATA TV196G48DGV296D'DSV3B'BV4GG DATA TV196ADV2E$SV3C+AV4GF DATA TV148BABC+V2DDDESV3GAGGV4GFGC ; LINE 2: DATA TV196B48AV296D48DSV396G48FV496D48D DATA PF DATA TV148AV2DSV3FV4D DATA PG DATA TV196G48FEV2B-C#DCSV396G48AAV496E48DA- DATA TV148FGABV296DDSV348AGFDV4DB-F-G- DATA TV196F48E.24D"V296D48C#.24D"SV396A48G.24FV496A-48A-.24D DATA TV1192DV296A-CSV3192FV4192D ; LINE 3 DATA TV196D+48C+BV296D24EF48GSV396B48C+D+V496B48AG DATA TV196C+BV248GF96GSV3C+D+V4AG DATA TV148ABGAV2DDEESV3D+GBC+V4FGEC DATA TV196F48DG"V296D48D$SV396A48F$V496D48D$ ; LINE 4: DATA TV148GFGA DATA TV196G48DB"V2$$$DSV3$$$G DATA TV148BABC+V2DDDDSV3GFGA DATA TV196B48ABV296D48DGSV396G48FD+V4$$$G ; LINE 5: DATA TV148C+BAGV2FGD24DC#SV348D+D+AAV4AGFE DATA TV196F48GC+V296D48DESV396AGV448DCB-C DATA TV196B48A.24G"V296D48DCSV396G48F.24G"V496D48D.24G- DATA TV1192GV2B-SV3GV4G- DATA 100$ DATA V1W6V2W5V3W5V4W5 PH DATA TV196G48DGV2D+.24C+BC+D+BSV3192BV4G- DATA TV196ADV248C+.24BABC+ASV396C+D+V4G-F- DATA TV148BABC+V2BD+G+E+SV348GFGGV4G-F-E-A- DATA TV196BAV2D+'D+SV348B24AG96FV448B-C96D ; LINE 2: DATA TV196G48FEV2BC#+D+E+V396E48DESV496E48DC# DATA TV148FGABV2D+24C#+B48ADV3FGFDSV4B-E-F-G- DATA TV196F48E.24DV248A96D+48C#+V348DF96ASV4192A- DATA TV196D.48$V296D+.48$V348F.24EDEFDSV496DC% ; LINE 3: DATA TV196D+48C+BV2G+.24F+E+F+G+E+V3192GSV496B-48CD DATA TV196C+BV248F+.24E+D#+E+F+D+V396A48FD#SV496A-B- DATA TV148ABGAV2E+B24BABC#V348AF96ESV448C#D#EA- DATA TV196F48DGV296D+'48D+$V396A-.48$SV496D%.48$ ; LINE 4: DATA TV148GFGASV4192D- DATA TV196G48DB'V2$D96D+SV4192D-TV348$$$D DATA TV148BABC+V248D+$$$SV4192D-TV348GAG24GF DATA TV196B48ABV248$D96D+SV496D-.48GTV396G48FB- DATA TV148C+BAGV2D+GD+E+SV3AGA24BC+V448A-G-F-E- DATA TV196F48GC+V224F+G+F+E+96D+SV396AGV448D-CB-A- DATA TV196B48A.24G'V248D+96G+48F+SV396D+C+V4DD- DATA TV1192GV2G+SV3BV4G- DATA 100$ DATA V1W6V2W6V3W6V4W5 PH DATA TV196G48DGSV396G48DGV496G-48D-G- V296G--48D--G-- DATA TV196ADSV3ADV4A-D- V296A--D-- DATA TV148BABC+V2DDDDSV3GDGAV4G-F-G-A- DATA TV196BAV296D48DCSV3DE96FV448B-CDD# DATA TV196G48FEV2B-.24C#48DCSV324GF48GAAV496E24FG48A- ; LINE 2: DATA TV148FGABV2DDDGSV3AGABV4DB-F-E- DATA TV196F48E.24D'V296DC#SV3192AV4A- DATA TV1192DV248F-A-DESV3192AV496D-C% DATA TV196D+48C+BV296AG#SV3F%E+V496B-E DATA TV196C+BV2ED#SV348E96F#48GV496A-B- ; LINE 3: DATA TV148ABGAV2EF24ED48C#SV3EFGAV4C#D#EA- DATA TV196F48DV296D.SV3A.V4D. DATA PI DATA TV148G'GFGA DATA TV196G48DB'V2$$$DSV3$$$G DATA TV148BABC+V2192DSV348GFGA ; LINE 4: DATA TV196B48AV296D.SV396G48F DATA PJ DATA TV152BV2F%SV3DV4G#- DATA TV152C+BAGV2104E.52A-SV352ABAGV4A-B-CC# DATA TV1104F52GC+V2104A-52EESV3D+C+BGV4DD#EA- DATA PK DATA TV1114BV257DESV3114BV4D- DATA PL DATA TV161A.24G'V261F.24G'SV3122AV4D- DATA TV1244GV2B-SV3DV4G- DATA 255$ DATA ""