10 REM ***************     LA TORRE DI HANOY        ***************
20 REM ***************   BY ALESSANDRO SCOLA 2024   ***************
30 rem ***************   WWW.ALESSANDROSCOLA.COM    ***************
40 poke 53280,15:poke 53281,0:poke 646,1:rem colore sfondo,bordo scritte
50 poke 53269,0:rem spegne tutti gli sprites eventualmente visibili
60 rem *************************************************************************
70 rem *************************    VARIABILI    *******************************
80 rem DM        :numero dichi massimi che il programma gestisce
90 rem D         :numero dischi scelti dal giocatore per la partita
100 rem MM       :numero mosse minime per vincere = 2^D-1
110 rem P1       :peso disco in alto su piolo 1
120 rem P2       :peso disco in alto su piolo 2
130 rem P3       :peso disco in alto su piolo 3
140 rem P1(DM)   :situazione pesi dischi su piolo 1
150 rem P2(DM)   :situazione pesi dischi su piolo 2
160 rem P3(DM)   :situazione pesi dischi su piolo 3
170 rem Q1,Q2,Q3 :numero dischi presenti su ogni piolo
180 rem X1,X2,X3 :coordinate X degli sprites su ogni piolo
190 rem Y0       :coordinata Y minima sprites (il punto piu in alto)
200 rem Y9       :coordinata Y massima sprites (il punto piu in basso)
210 rem AD       :altezza sprite di un singolo disco in pixels
211 rem SN       :sprite number
215 rem SP       :stack pointer (per la soluzione ricorsiva)
218 rem v        :registro del vic di partenza per gestion sprites
219 rem b        :banco memoria di partenza per gli sprite
220 rem ************************************************************************
230 rem ************************************************************************
240 IF PEEK(44)=64 THEN 320
250 PRINT "{clear}attenzione!!"
260 PRINT "{down}per eseguire questo programma"
270 PRINT "devi prima eseguire il seguente comando:"
280 PRINT "{down}{red}poke 43,1:poke 44,64:poke 16384,0{down}{down}"
290 PRINT "{white}poi ricarica il programma da disco"
295 PRINT "con ,8 e non con ,8,1   !! "
300 PRINT "{down}alla fine eseguilo con il comando run"
310 END
320 DM=8:rem fino a 8 dischi massimo
330 dim p1(DM):rem stato presenza dei pioli su piolo 1, da 1 a 7
340 dim p2(DM):rem stato presenza dei pioli su piolo 2, da 1 a 7
350 dim p3(DM):rem stato presenza dei pioli su piolo 3, da 1 a 7
360 x1=76:x2=156:x3=236:rem coordinate x degli sprites su pioli
370 y0=60:rem y mimina (punto piu in alto quando muovo disco)
380 y9=168:rem y massima (coord Y pputno di appoggio dei dischi al piano)
390 AD=12:REM ALTEZZA DISCO IN PIXELS(SPRITE ESPANSO =6 X 2 = 12)
400 v=53248:rem registro del vic di partenza per gestion sprites
410 print "{clear}"SPC(9)"{down*3}{red}la  torre  di  hanoi"
420 print SPC(6)"{down*4}{cyan}by alessandro scola (c)2024"
421 print SPC(8)"{white}www.alessandroscola.com"
422 print SPC(6)"{down*2}{blue}gioca alla torre di hanoi"
423 print SPC(6)"o  falla risolvere al tuo"
424 print SPC(6)"commodore 64 con il metodo"
427 print SPC(6)"ricorsivo."
430 print "{down*4}{space*2}{white}inizializzazione sprites, attendi..."
440 rem ***************************
450 rem * ridefinisce gli sprites *
460 rem ***************************
470 b=245:rem banco memoria di partenza per gli sprite 245
480 rem legge i data per i dischi che utilizzero
490 for SN=0 to DM-1
495 poke 1862,56-SN:REM VISUALIZZA CONTO ALLA ROVESCIA
500 poke 2040+SN,b+SN:rem setta banco di memoria per ogni sprite
510 for i=0 to 62
511 read a:poke 64*b+(SN*64)+i,a:next i
520 next SN
525 print "{up}      premi un tasto per giocare       "
528 wait 198,1:poke 198,0:REM ATTENDE PRESSIONE DI UN TASTO
530 poke 53269,0:poke 53280,15:poke 53281,0:poke 646,1:rem colore sfondo,bordo scritte
540 print "{clear}":input"{down*10}{space*9}quanti dischi (1-8)";d
550 if d<1 or d>DM then 530
560 input "vuoi giocare (g) o soluzione (s)";GM$:rem GAME MODE
570 if GM$<>"g" and GM$<>"s" then 560
580 rem memorizza in un array lo stato presenza dischi pesati su piolo 1
590 for i=1 to d:p1(i)=i:next i
600 p1=1:p2=0:p3=0:rem peso del disco in alto su un dato piolo
610 q1=d:q2=0:q3=0:rem q1, q2, q3 = quanti dischi ha ciascun piolo
620 rem posiziona gli sprites dei dischi uno sull'altro su piolo 1
630 REM DISEGNA LA BASE DEL GIOCO
640 i=0:rem variabile offset resgistri sprites
650 oc=0: rem offfset colore per saltare il numero 8
660 for SN=d-1 to 0 step -1:rem setta posizione x e y dischi
670 poke v+(SN*2),x1:i=i+1:poke v+((SN*2)+1),y9-((i-1)*AD/2)
680 i=i+1
690 if (SN+4)=7 then oc=1:rem per saltare il colore giallo
700 poke 53287+SN,SN+4-oc:rem setta i colori dei dischi
710 next SN
720 rem abilita sprites e espandili in larghezza e altezza
730 va=0:for n=0 to d-1:va=va+(2^n):next
740 poke 53269,va:rem abilita sprites
750 poke 53277,va:rem espansione in larghezza
760 poke 53271,va:rem espansione in altezza
770 rem *************************************************
780 rem *************************************************
790 MM=2^D-1:M=1:REM MM=NUMERO MOSSE MINIME X RISOLVERE, M=NUMERO MOSSA
800 rem sposta il disco piu in alto dal piolo selezionato
810 poke 646,1:poke 53280,15:print "{clear}{cyan}si risolve in "+str$(mm)+" mosse.{white}"
820 gosub 2790:rem DISEGNA I PIOLI E LA BASE
830 if GM$="s" then 2890
840 REM GM$="g" GIOCARE
850 poke 646,1:poke 214,2:sys 58732:print "fai la mossa n."+str$(m)
860 poke 214,3:sys 58732:input "muovi disco da piolo # (f=fine)";A$
870 if A$="f" THEN 2720
880 if ASC(A$)<49 or ASC(A$)>55 then 980
890 poke 214,4:sys 58732:input "muovi disco a  piolo # (f=fine)";B$
900 if B$="f" THEN 2730
910 if ASC(B$)<49 or ASC(B$)>55 then 980
920 IF A$="1" AND B$="2" AND Q1>0 AND (P2=0 OR P2>P1) THEN 1040
930 IF A$="1" AND B$="3" AND Q1>0 AND (P3=0 OR P3>P1) THEN 1320
940 IF A$="2" AND B$="1" AND Q2>0 AND (P1=0 OR P1>P2) THEN 1590
950 IF A$="2" AND B$="3" AND Q2>0 AND (P3=0 OR P3>P2) THEN 1860
960 IF A$="3" AND B$="1" AND Q3>0 AND (P1=0 OR P1>P3) THEN 2130
970 IF A$="3" AND B$="2" AND Q3>0 AND (P2=0 OR P2>P3) THEN 2400
980 poke 53280,2:PRINT "{home}{down*5}{right*9}{red}***********************""
990 print "{right*9}*                     *"
1000 print "{right*9}* mossa non possibile *"
1010 print "{right*9}*                     *"
1020 print "{right*9}***********************"
1030 for i=1 to 255:next i:for i=1 to 255:next i:GOTO 810
1040 REM ******************************************
1050 REM * SPOSTAMENTO DISCO DA PIOLO 1 A PIOLO 2 *
1060 REM ******************************************
1070 REM P1 = VALORE DEL DISCO PIU IN ALTO,CHE CORRISPONDE ALLO SPRITES P1-1
1080 FOR Y=PEEK(V+1+(2*(P1-1))) TO Y0 STEP -2
1090 POKE (V+1+(2*(P1-1))),Y:REM SOLLEVO DISCO
1100 NEXT Y
1110 FOR X=PEEK(V+(2*(P1-1))) TO X2 STEP 2
1120 POKE (V+(2*(P1-1))),X:REM SPOSTO DISCO A DX
1130 NEXT X
1140 REM APPOGGIO DISCO:
1150 REM Y1= COORD Y DI PARTENZA  Y2 = COORD Y DI ARRIVO DELLO SPRITE
1160 Y1=PEEK(V+1+(2*(P1-1))):REM ALTRIMENTI Y DI ARRIVO E' APPENA SOPRA DISCO
1170 IF P2=0 THEN Y2=Y9:GOTO 1190
1180 Y2=Y9-(AD*Q2)
1190 FOR Y=Y1 TO Y2 STEP 2
1200 POKE (V+1+(2*(P1-1))),Y
1210 NEXT Y
1220 REM AGGIORNO PESO PILA DI DESTINAZIONE 2
1230 FOR I=Q2+1 TO 1 STEP -1:P2(I)=P2(I-1):NEXT I:REM SCALO IN ALTO I PESI
1240 P2(1)=P1:P2=P1:Q2=Q2+1
1250 REM AGGIORNO PRESENZA DISCHI PILA DI PARTENZA 1
1260 IF Q1>1 THEN:FOR I=1 TO Q1-1:P1(I)=P1(I+1):NEXT I:REM SCALO IN BASSO I PESI
1270 P1(Q1)=0:Q1=Q1-1
1280 IF Q1>=1 THEN P1=P1(1)
1290 IF Q1=0 THEN P1(1)=0:P1=0
1300 IF GM$="g" THEN 2650
1310 RETURN:REM ELSE IF GM$="S"
1320 REM ******************************************
1330 REM * SPOSTAMENTO DISCO DA PIOLO 1 A PIOLO 3 *
1340 REM ******************************************
1350 FOR Y=PEEK(V+1+(2*(P1-1))) TO Y0 STEP -2
1360 POKE (V+1+(2*(P1-1))),Y:REM SOLLEVO DISCO
1370 NEXT Y
1380 FOR X=PEEK(V+(2*(P1-1))) TO X3 STEP 2
1390 POKE (V+(2*(P1-1))),X:REM SPOSTO DISCO A DX
1400 NEXT X
1410 REM APPOGGIO DISCO:
1420 REM Y1= Y DI PARTENZA  Y2 = y DI ARRIVO
1430 Y1=PEEK(V+1+(2*(P1-1)))
1440 IF P3=0 THEN Y2=Y9:GOTO 1460
1450 Y2=Y9-(AD*Q3):REM ALTRIMENTI Y DI ARRIVO E' APPENA SOPRA DISCO
1460 FOR Y=Y1 TO Y2 STEP 2
1470 POKE (V+1+(2*(P1-1))),Y
1480 NEXT Y
1490 REM AGGIORNO PESO PILA DI DESTINAZIONE 3
1500 FOR I=Q3+1 TO 1 STEP -1:P3(I)=P3(I-1):NEXT I:REM SCALO IN BASSO I PESI
1510 P3(1)=P1:P3=P1:Q3=Q3+1
1520 REM AGGIORNO PRESENZA DISCHI PILA DI PARTENZA 1
1530 IF Q1>1 THEN:FOR I=1 TO Q1-1:P1(I)=P1(I+1):NEXT I:REM SCALO IN ALTO I PESI
1540 P1(Q1)=0:Q1=Q1-1
1550 IF Q1>=1 THEN P1=P1(1)
1560 IF Q1=0 THEN P1(1)=0:P1=0
1570 IF GM$="g" THEN 2650
1580 RETURN:REM ELSE IF GM$="s"
1590 REM *******************************************
1600 REM * SPOSTAMENTO DISCO DA PIOLO 2 A PIOLO 1  *
1610 REM *******************************************
1620 FOR Y=PEEK(V+1+(2*(P2-1))) TO Y0 STEP -2
1630 POKE (V+1+(2*(P2-1))),Y:REM SOLLEVO DISCO
1640 NEXT Y
1650 FOR X=PEEK(V+(2*(P2-1))) TO X1 STEP -2
1660 POKE (V+(2*(P2-1))),X:REM SPOSTO DISCO A SX
1670 NEXT X
1680 REM APPOGGIO DISCO:
1690 REM Y1= COORD Y DI PARTENZA  Y2 = COORD Y DI ARRIVO DELLO SPRITE
1700 Y1=PEEK(V+1+(2*(P2-1))):REM ALTRIMENTI Y DI ARRIVO E' APPENA SOPRA DISCO
1710 IF P1=0 THEN Y2=Y9:GOTO 1730
1720 Y2=Y9-(AD*Q1)
1730 FOR Y=Y1 TO Y2 STEP 2
1740 POKE (V+1+(2*(P2-1))),Y
1750 NEXT Y
1760 REM AGGIORNO PESO PILA DI DESTINAZIONE 1
1770 FOR I=Q1+1 TO 1 STEP -1:P1(I)=P1(I-1):NEXT I:REM SCALO IN BASSO I PESI
1780 P1(1)=P2:P1=P2:Q1=Q1+1
1790 REM AGGIORNO PRESENZA DISCHI PILA DI PARTENZA 2
1800 IF Q2>1 THEN:FOR I=1 TO Q2-1:P2(I)=P2(I+1):NEXT I:REM SCALO IN ALTO I PESI
1810 P2(Q2)=0:Q2=Q2-1
1820 IF Q2>=1 THEN P2=P2(1)
1830 IF Q2=0 THEN P2(1)=0:P2=0
1840 IF GM$="g" THEN 2650
1850 RETURN:REM ELSE IF GM$="s"
1860 REM *******************************************
1870 REM * SPOSTAMENTO DISCO DA PIOLO 2 A PIOLO 3  *
1880 REM *******************************************
1890 FOR Y=PEEK(V+1+(2*(P2-1))) TO Y0 STEP -2
1900 POKE (V+1+(2*(P2-1))),Y:REM SOLLEVO DISCO
1910 NEXT Y
1920 FOR X=PEEK(V+(2*(P2-1))) TO X3 STEP 2
1930 POKE (V+(2*(P2-1))),X:REM SPOSTO DISCO A SX
1940 NEXT X
1950 REM APPOGGIO DISCO:
1960 REM Y1= COORD Y DI PARTENZA  Y2 = COORD Y DI ARRIVO DELLO SPRITE
1970 Y1=PEEK(V+1+(2*(P2-1))):REM ALTRIMENTI Y DI ARRIVO E' APPENA SOPRA DISCO
1980 IF P3=0 THEN Y2=Y9:GOTO 2000
1990 Y2=Y9-(AD*Q3)
2000 FOR Y=Y1 TO Y2 STEP 2
2010 POKE (V+1+(2*(P2-1))),Y
2020 NEXT Y
2030 REM AGGIORNO PESO PILA DI DESTINAZIONE 3
2040 FOR I=Q3+1 TO 1 STEP -1:P3(I)=P3(I-1):NEXT I:REM SCALO IN BASSO I PESI
2050 P3(1)=P2:P3=P2:Q3=Q3+1
2060 REM AGGIORNO PRESENZA DISCHI PILA DI PARTENZA 2
2070 IF Q2>1 THEN:FOR I=1 TO Q2-1:P2(I)=P2(I+1):NEXT I:REM SCALO IN ALTO I PESI
2080 P2(Q2)=0:Q2=Q2-1
2090 IF Q2>=1 THEN P2=P2(1)
2100 IF Q2=0 THEN P2(1)=0:P2=0
2110 IF GM$="g" THEN 2650
2120 RETURN:REM ELSE IF GM$="s"
2130 REM ******************************************
2140 REM * SPOSTAMENTO DISCO DA PIOLO 3 A PIOLO 1 *
2150 REM ******************************************
2160 FOR Y=PEEK(V+1+(2*(P3-1))) TO Y0 STEP -2
2170 POKE (V+1+(2*(P3-1))),Y:REM SOLLEVO DISCO
2180 NEXT Y
2190 FOR X=PEEK(V+(2*(P3-1))) TO X1 STEP -2
2200 POKE (V+(2*(P3-1))),X:REM SPOSTO DISCO A DX
2210 NEXT X
2220 REM APPOGGIO DISCO:
2230 REM Y1= Y DI PARTENZA  Y2 = y DI ARRIVO
2240 Y1=PEEK(V+1+(2*(P3-1)))
2250 IF P1=0 THEN Y2=Y9:GOTO 2270
2260 Y2=Y9-(AD*Q1):REM ALTRIMENTI Y DI ARRIVO E' APPENA SOPRA DISCO
2270 FOR Y=Y1 TO Y2 STEP 2
2280 POKE (V+1+(2*(P3-1))),Y
2290 NEXT Y
2300 REM AGGIORNO PESO PILA DI DESTINAZIONE 1
2310 FOR I=Q1+1 TO 1 STEP -1:P1(I)=P1(I-1):NEXT I:REM SCALO IN BASSO I PESI
2320 P1(1)=P3:P1=P3:Q1=Q1+1
2330 REM AGGIORNO PRESENZA DISCHI PILA DI PARTENZA 3
2340 IF Q3>1 THEN:FOR I=1 TO Q3-1:P3(I)=P3(I+1):NEXT I:REM SCALO IN ALTO I PESI
2350 P3(Q3)=0:Q3=Q3-1
2360 IF Q3>=1 THEN P3=P3(1)
2370 IF Q3=0 THEN P3(1)=0:P3=0
2380 IF GM$="g" THEN 2650
2390 RETURN:REM ELSE IF GM$="s"
2400 REM ******************************************
2410 REM * SPOSTAMENTO DISCO DA PIOLO 3 A PIOLO 2 *
2420 REM ******************************************
2430 FOR Y=PEEK(V+1+(2*(P3-1))) TO Y0 STEP -2
2440 POKE (V+1+(2*(P3-1))),Y:REM SOLLEVO DISCO
2450 NEXT Y
2460 FOR X=PEEK(V+(2*(P3-1))) TO X2 STEP -2
2470 POKE (V+(2*(P3-1))),X:REM SPOSTO DISCO A SX
2480 NEXT X
2490 REM APPOGGIO DISCO:
2500 REM Y1= Y DI PARTENZA  Y2 = y DI ARRIVO
2510 Y1=PEEK(V+1+(2*(P3-1)))
2520 IF P2=0 THEN Y2=Y9:GOTO 2540
2530 Y2=Y9-(AD*Q2):REM ALTRIMENTI Y DI ARRIVO E' APPENA SOPRA DISCO
2540 FOR Y=Y1 TO Y2 STEP 2
2550 POKE (V+1+(2*(P3-1))),Y
2560 NEXT Y
2570 REM AGGIORNO PESO PILA DI DESTINAZIONE 2
2580 FOR I=Q2+1 TO 1 STEP -1:P2(I)=P2(I-1):NEXT I:REM SCALO IN BASSO I PESI
2590 P2(1)=P3:P2=P3:Q2=Q2+1
2600 REM AGGIORNO PRESENZA DISCHI PILA DI PARTENZA 3
2610 IF Q3>1 THEN:FOR I=1 TO Q3-1:P3(I)=P3(I+1):NEXT I:REM SCALO IN ALTO I PESI
2620 P3(Q3)=0:Q3=Q3-1
2630 IF Q3>=1 THEN P3=P3(1)
2640 IF Q3=0 THEN P3(1)=0:P3=0
2650 IF GM$="s" THEN RETURN
2660 REM DEBUG
2670 IF Q3<>D THEN 2760:REM HO FINITO IL GIOCO (Q3=D ?)
2680 print"{clear}":gosub 2790:poke 646,5:poke 53280,5
2690 print"{up*24}{down}{space*3}complimenti,hai risolto il gioco!"
2700 if(M=MM) then print "{space*3}nel numero minimo di mosse ("str$(MM)")"
2710 poke 646,1:if(M<>MM) then print "{space*3}hai fatto"str$(m)" mosse su"str$(mm)" previste"
2720 print "{down*3}"
2730 input "{space*5}vuoi giocare ancora (s/n)";a$:if a$="" then 2730
2740 if a$="s" then 530
2750 print "{clear}":poke 53269,0:END
2760 M=M+1:REM INCREMENTO MOSSE FATTE
2770 GOTO 850
2780 REM DISEGNO I PIOLI E LA BASE
2790 print "{down*5}":poke 646,1
2800 for i=1 to 13
2810 print "{space*9}{reverse on} {reverse off}{space*9}{reverse on} {reverse off}{space*9}{reverse on}{space}"
2820 next i
2830 print "{space*2}{reverse on}{space*34}{space*2}"
2840 print "{space}{reverse on}{space*8}#1{space*8}#2{space*8}#3{space*6}{reverse on}{space*2}"
2850 print "{reverse on}{space*40}"
2860 print "{up}{reverse on}{space*40}{up}"
2870 return
2880 REM ***********************
2890 REM * SOLUZIONE RICORSIVA:*
2900 REM ***********************
2910 N=D:SP=49151:A=1:B=2:C=3:M=0
2920 REM SALVO LE VARIABILI NELLO STACK A PARTIRE DALLA LOCAZIONE 49152:
2930 SP=SP+1:POKE SP,N:SP=SP+1:POKE SP,A:SP=SP+1:POKE SP,B:SP=SP+1:POKE SP,C
2940 GOSUB 2960:REM 1a CHIAMATA  Hanoi($n, $a, $b ,$c);
2950 GOTO 2670
2960 if N>1 then 3030:REM RAMO1:E' COME DIRE IF N=1 ESEGUI LE RIGHE SEGUENTI
2970 M=M+1:A$=MID$(STR$(A),2,1):B$=MID$(STR$(C),2,1)
2975 print "{home}{down*2}mossa "str$(m)": #"A$" -> #"B$:GOSUB 920
2980 REM RITORNO DALLA RICORSIONE,RIPRISTINO LE VARIABILI DALLO STACK
2990 C=PEEK(SP):SP=SP-1:B=PEEK(SP):SP=SP-1:A=PEEK(SP):SP=SP-1:N=PEEK(SP):SP=SP-1
3000 REM PRINT "ritorno dalla ricorsione ramo 1"
3010 RETURN
3020 REM ELSE (N>1): RAMO 2
3030 N=N-1
3040 REM SALVO LE VARIABILI NELLO STACK:
3050 SP=SP+1:POKE SP,N:SP=SP+1:POKE SP,A:SP=SP+1:POKE SP,B:SP=SP+1:POKE SP,C
3060 X=B:B=C:C=X:REM SCAMBIO B CON C  Hanoi($n, $a, $c ,$b);
3070 GOSUB 2960
3080 M=M+1:A$=MID$(STR$(A),2,1):B$=MID$(STR$(C),2,1)
3085 print "{home}{down*2}mossa "str$(m)": #"A$" -> #"B$:GOSUB 920
3090 REM SALVO LE VARIABILI NELLO STACK:
3100 SP=SP+1:POKE SP,N:SP=SP+1:POKE SP,A:SP=SP+1:POKE SP,B:SP=SP+1:POKE SP,C
3110 X=A:A=B:B=X:REM SCAMBIO A CON B  hanoi($n, $b, $a ,$c);
3120 GOSUB 2960
3130 REM RITORNO DALLA RICORSIONE,RIPRISTINO LE VARIABILI DALLO STACK
3140 C=PEEK(SP):SP=SP-1:B=PEEK(SP):SP=SP-1:A=PEEK(SP):SP=SP-1:N=PEEK(SP):SP=SP-1
3150 REM PRINT "ritorno dalla ricorsione ramo 2"
3160 RETURN
3170 REM 

3180 DATA 0,0,0,0,0,0,0,0,0,0
3190 DATA 0,0,0,0,0,0,0,0,0,0
3200 DATA 0,0,0,0,0,0,0,0,0,0
3210 DATA 0,0,0,0,0,0,0,0,0,0
3220 DATA 0,0,0,0,0,0,247,0,1,231
3230 DATA 128,1,247,128,1,247,128,1,247,128
3240 DATA 0,255,0
3250 REM 

3260 DATA 0,0,0,0,0,0,0,0,0,0
3270 DATA 0,0,0,0,0,0,0,0,0,0
3280 DATA 0,0,0,0,0,0,0,0,0,0
3290 DATA 0,0,0,0,0,0,0,0,0,0
3300 DATA 0,0,0,0,0,1,231,128,3,219
3310 DATA 192,3,247,192,3,239,192,3,195,192
3320 DATA 1,255,128
3330 REM 

3340 DATA 0,0,0,0,0,0,0,0,0,0
3350 DATA 0,0,0,0,0,0,0,0,0,0
3360 DATA 0,0,0,0,0,0,0,0,0,0
3370 DATA 0,0,0,0,0,0,0,0,0,0
3380 DATA 0,0,0,0,0,3,231,192,7,219
3390 DATA 224,7,247,224,7,219,224,7,231,224
3400 DATA 3,255,192
3410 REM 

3420 DATA 0,0,0,0,0,0,0,0,0,0
3430 DATA 0,0,0,0,0,0,0,0,0,0
3440 DATA 0,0,0,0,0,0,0,0,0,0
3450 DATA 0,0,0,0,0,0,0,0,0,0
3460 DATA 0,0,0,0,0,7,247,224,15,239
3470 DATA 240,15,215,240,15,195,240,15,247,240
3480 DATA 7,255,224
3490 REM 

3500 DATA 0,0,0,0,0,0,0,0,0,0
3510 DATA 0,0,0,0,0,0,0,0,0,0
3520 DATA 0,0,0,0,0,0,0,0,0,0
3530 DATA 0,0,0,0,0,0,0,0,0,0
3540 DATA 0,0,0,0,0,15,199,240,31,223
3550 DATA 248,31,199,248,31,251,248,31,199,248
3560 DATA 15,255,240
3570 REM 

3580 DATA 0,0,0,0,0,0,0,0,0,0
3590 DATA 0,0,0,0,0,0,0,0,0,0
3600 DATA 0,0,0,0,0,0,0,0,0,0
3610 DATA 0,0,0,0,0,0,0,0,0,0
3620 DATA 0,0,0,0,0,31,231,248,63,223
3630 DATA 252,63,199,252,63,219,252,63,231,252
3640 DATA 31,255,248
3650 REM 

3660 DATA 0,0,0,0,0,0,0,0,0,0
3670 DATA 0,0,0,0,0,0,0,0,0,0
3680 DATA 0,0,0,0,0,0,0,0,0,0
3690 DATA 0,0,0,0,0,0,0,0,0,0
3700 DATA 0,0,0,0,0,63,195,252,127,251
3710 DATA 254,127,247,254,127,239,254,127,239,254
3720 DATA 63,255,252
3730 REM 

3740 DATA 0,0,0,0,0,0,0,0,0,0
3750 DATA 0,0,0,0,0,0,0,0,0,0
3760 DATA 0,0,0,0,0,0,0,0,0,0
3770 DATA 0,0,0,0,0,0,0,0,0,0
3780 DATA 0,0,0,0,0,127,231,254,255,219
3790 DATA 255,255,231,255,255,219,255,255,231,255
3800 DATA 127,255,254
