10 ' ********************************
20 ' *          PERSEPHONE          *
30 ' * (c) F.LEMAINQUE & MICROSTRAD *
40 ' ********************************
50 MODE 1:INK 0,0:INK 1,6:INK 2,18:INK 3,20:BORDER 0:DEFINT a-z:GOTO 420
60 '*** MOUVEMENT CHENILLE ***
70 FOR att=1+2*n TO (200-dif*20):NEXT:po(x,y)=1
80 ON JOY(0)+1 GOTO 130,90,100,130,110,130,130,130,120
90 IF d<>2 THEN d=1:dx=0:dy=-1:GOTO 130 ELSE 130
100 IF d<>1 THEN d=2:dx=0:dy=1:GOTO 130 ELSE 130
110 IF d<>4 THEN d=3:dx=-1:dy=0:GOTO 130 ELSE 130
120 IF d<>3 THEN d=4:dx=1:dy=0
130 y=y+dy:x=x+dx
140 y$=CHR$(y)+MID$(y$,1,LEN(Y$)-1):x$=CHR$(x)+MID$(x$,1,LEN(x$)-1)
150 LOCATE ASC(MID$(x$,2,1)),ASC(MID$(y$,2,1)):PEN 3:PRINT CHR$(231);
160 LOCATE x,y:PRINT CHR$(244+d)
170 LOCATE ASC(RIGHT$(x$,1)),ASC(RIGHT$(y$,1)):PEN 0:PRINT " ";:PEN 3
180 po(ASC(RIGHT$(x$,1)),ASC(RIGHT$(y$,1)))=0
190 ON po(x,y)+1 GOTO 70,210,300
200 :'*** INDIGESTION ! ***
210 FOR i=LEN(x$) TO 2 STEP -1
220 LOCATE ASC(MID$(x$,i,1)),ASC(MID$(y$,i,1)):PEN 2:PRINT CHR$(231)
230 NEXT
240 LOCATE ASC(LEFT$(x$,1)),ASC(LEFT$(y$,1)):PRINT CHR$(225)
250 LOCATE 10,10:PRINT "INDIGESTION!!!";:GOSUB 1290
260 IF sco>hsc THEN hsc=sco
270 FOR i=1 TO 1000:NEXT
280 ERASE po:PEN 3:v=v-1:IF v THEN x$="":y$="":GOTO 1050 ELSE 370
290 '*** POMME CROQUEE ***
300 GOSUB 1320:y$=y$+RIGHT$(y$,1):x$=x$+RIGHT$(x$,1)
310 FOR i=1 TO 10:sco=sco+1:LOCATE 21,1:PRINT sco:NEXT
320 po(x,y)=0:IF sco>3000 AND bo=0 THEN v=v+1:bo=1
330 IF LEN(x$)<>13+5*ta THEN 70
340 ta=ta+1:FOR i=1 TO 10:sco=sco+100:LOCATE 21,1:PRINT sco:NEXT
350 GOSUB 1340:x$="":y$="":ERASE po:GOTO 1050
360 ' *** FIN DE LA PARTIE ***
370 GOSUB 1400:CLS:LOCATE 3,3:PRINT" VOUS AVEZ PERDU !!"
380 LOCATE 3,7:PRINT " VOTRE SCORE EST DE :";sco
390 LOCATE 3,10:PRINT" LE MEILLEUR ETAIT :";HSC
400 LOCATE 1,22:PRINT " APPUYER SUR LA BARRE D'ESPACE POUR UNE  AUTRE PARTIE."
410 r$=INKEY$:IF r$=" " THEN 990 ELSE 410
420 ' *********************************
430 ' *           GENERIQUE           *
440 ' *********************************
450 GOSUB 880:DEG:FOR an=180 TO 119 STEP -2:ORIGIN 320,0
460 DRAW 100*COS(an),100*SIN(an),CINT(2*RND+1):NEXT
470 FOR a=120 TO 70 STEP -5:b$="*":LOCATE 9,6:PEN 1:PRINT b$
480 FOR an=a TO a-4 STEP -1:ORIGIN 320,0
490 DRAW 100*COS(an),100*SIN(an),CINT(2*RND+1):NEXT
500 ON (25-a/5) GOSUB 510,530,550,570,590,610,630,650,670,690,710:NEXT:GOTO 810
510 a$="****":LOCATE 9,2:PEN 1:PRINT a$:LOCATE 9,3:PRINT b$
520 LOCATE 9,4:PRINT b$:LOCATE 9,5:PRINT b$:LOCATE 10,6:PRINT a$:RETURN
530 a$="***":c$=" ":LOCATE 13,2:PEN 1:PRINT a$:LOCATE 15,4:PEN 2:PRINT c$
540 LOCATE 13,6:PEN 1:PRINT a$:RETURN
550 a$="**":c$="PE":LOCATE 16,2:PRINT a$:LOCATE 16,4:PEN 2:PRINT c$:PEN 1
560 LOCATE 16,6:PRINT a$:RETURN
570 c$="RS":LOCATE 18,2:PRINT a$:PEN 1:LOCATE 18,4:PEN 2:PRINT c$:PEN 1
580 LOCATE 18,6:PRINT a$:RETURN
590 a$="*":c$="E":LOCATE 20,2:PRINT a$:PEN 1:LOCATE 20,4:PEN 2:PRINT c$:PEN 1
600 LOCATE 20,6:PRINT a$:RETURN
610 c$="P":LOCATE 21,2:PRINT a$:PEN 1:LOCATE 21,4:PEN 2:PRINT c$:PEN 1
620 LOCATE 21,6:PRINT a$:RETURN
630 a$="**":c$="HO":LOCATE 22,2:PEN 1:PRINT a$:LOCATE 22,4:PEN 2:PRINT c$
640 LOCATE 22,6:PEN 1:PRINT a$:RETURN
650 c$="NE":LOCATE 24,2:PEN 1:PRINT a$:LOCATE 24,4:PEN 2:PRINT c$:PEN 1
660 LOCATE 24,6:PRINT a$:RETURN
670 a$="***":c$=" ":LOCATE 26,2:PEN 1:PRINT a$:LOCATE 26,4:PEN 2:PRINT c$
680 LOCATE 26,6:PEN 1:PRINT a$:RETURN
690 a$="****":b$="*":c$="***":LOCATE 29,2:PEN 1:PRINT a$:LOCATE 32,3:PRINT b$
700 LOCATE 32,4:PRINT b$:LOCATE 32,5:PRINT b$:LOCATE 29,6:PRINT c$:RETURN
710 LOCATE 32,6:PRINT b$:RETURN
720 PEN 3:LOCATE 10,11:PRINT STRING$(2,231);CHR$(224);" = Persephone":RETURN
730 PEN 2:LOCATE 12,13:PRINT CHR$(251);" = 10 Points":RETURN
740 PEN 1:LOCATE 11,15:PRINT CHR$(241);CHR$(242);:PEN 3:LOCATE 11,16
750 PRINT CHR$(243);CHR$(244);:PEN 1:PRINT" = Indigestion !!!":RETURN
760 PEN 3:LOCATE 12,18:PRINT CHR$(250);" = Tableau (1000 pts)":RETURN
770 PEN 1:LOCATE 1,24:PRINT"UNE PRODUCTION";:RETURN
780 RETURN
790 PAPER 1:PEN 0:LOCATE 15,25:PRINT CHR$(164);"AMSFAB 1986";
800 MOVE -96,16:DRAWR 192,0,1:PEN 1:PAPER 0:RETURN
810 FOR an=69 TO 0 STEP -2:ORIGIN 320,0
820 DRAW 100*COS(an),100*SIN(an),CINT(2*RND+1)
830 ON 7-an/10 GOSUB 720,730,740,760,770,780,790
840 NEXT:GOSUB 1400:FOR an=1 TO 2000:NEXT:ORIGIN 0,0:GOTO 990
850 ' ********************************
860 ' ******** INITIALISATION ********
870 ' ********************************
880 SYMBOL AFTER 240:SYMBOL 250,&18,&3C,&7E,&FF,&18,&3C,&3C,&18
890 SYMBOL 251,&40,&3C,&7E,&7E,&7E,&3C,&0
900 SYMBOL 241,&1,&7,&F,&1F,&3F,&6F,&3F,&7
910 SYMBOL 242,&40,&80,&F0,&FC,&FE,&FC,&F8,&90
920 SYMBOL 243,&7,&F,&1F,&1F,&1F,&7,&3
930 SYMBOL 244,&E0,&F0,&F8,&F8,&F8,&F8,&F0,&E0
940 SYMBOL 245,&3C,&66,&5A,&FF,&DB,&7E,&5A,&C3
950 SYMBOL 246,&C3,&5A,&7E,&DB,&FF,&5A,&66,&3C
960 SYMBOL 247,&7,&C,&3E,&5F,&FF,&F7,&8E,&7C
970 SYMBOL 248,&E0,&30,&7C,&F6,&FF,&F7,&71,&3E
980 RETURN
990 v=3:ta=1:sc=0
1000 LOCATE 27,24:PRINT "VITESSE (1-9)?"
1010 r$=INKEY$:IF r$>"9" OR r$<"1" THEN 1010 ELSE dif=VAL(r$)
1020 ' ********************************
1030 ' ******** TRACE  TERRAIN ********
1040 ' ********************************
1050 DIM po(40,25)
1060 CLS:LOCATE 1,2:PEN 3:PRINT STRING$(40,203);
1070 FOR i=3 TO 24:LOCATE 1,i:PRINT CHR$(203);
1080 LOCATE 40,i:PRINT CHR$(203);:po(1,i)=1:po(40,i)=1:NEXT
1090 LOCATE 1,25:PRINT STRING$(40,203);
1100 FOR i=0 TO 40:po(i,2)=1:po(i,25)=1:NEXT
1110 FOR i=1 TO 10+ta*2
1120 ca=36*RND+2:cb=19*RND+4:LOCATE ca,cb
1130 FOR j=0 TO 1:FOR h=0 TO 1:IF po(ca+j,cb+h) THEN 1120
1140 NEXT h,j:FOR j=0 TO 1:FOR h=0 TO 1:po(ca+j,cb+h)=1:NEXT h,j
1150 PEN 1:PRINT CHR$(241);CHR$(242);:LOCATE ca,cb+1:PEN 3
1160 PRINT CHR$(243);CHR$(244);:FOR p=1 TO 3
1170 PLOT (ca*16+4-12*RND),((25-cb)*16+3+6*RND),3:NEXT p,i
1180 FOR i=1 TO 10+5*ta
1190 cp=35*RND+2:co=20*RND+4:LOCATE cp,co:IF po(cp,co) THEN 1190
1200 po(cp,co)=2:PEN 2:PRINT CHR$(251);:NEXT
1210 x$="":y$="":FOR i=1 TO 3:x$=x$+CHR$(20+i):NEXT:y$=STRING$(3,3)
1220 LOCATE 5,1:FOR i=1 TO v:PEN 2:PRINT CHR$(224);:NEXT
1230 LOCATE 15,1:PRINT "SCORE=";sco
1240 LOCATE 32,1:FOR i=1 TO ta:PRINT CHR$(250);:NEXT
1250 n=0:d=3:dx=-1:dy=0:x=20:y=3:GOTO 70
1260 ' ********************************
1270 ' *       MUSIQUES ET SONS       *
1280 ' ********************************
1290 '*INDIGESTION*
1300 ENV 1,1,5,220,8,-1,10:ENT 1,100,-2,1,100,2,1,100,10,1
1310 SOUND 1,400,-1,5,1,1:WHILE SQ(1)>127:WEND:RETURN
1320 '*   POMME   *
1330 ENV 2,15,1,2:ENT 2,10,-5,1:SOUND 2,200,-1,0,2,2,1:RETURN
1340 '* NV TABLEAU *
1350 ENV 3,1,12,1,1,-3,2,1,0,1,1,0,1,9,-1,4:ENT 3,1,2,1,1,0,2,1,0,2,1,-2,1,1,0,4
1360 RESTORE 1370:FOR i=1 TO 31:READ a,b:SOUND 2,a,b*20,0,3,3:NEXT:RETURN
1370 DATA 319,1,379,1,478,1,478,1,478,1,426,1,379,1,358,1,319,1.5,319,.5,319,1.5
1380 DATA 379,.5,284,1,284,1,284,1.5,319,.5,284,1,253,1,239,1,213,1,190,1.5
1390 DATA 190,1,213,0.5,190,1,253,0.5,239,1,319,0.5,284,1,426,1,379,1,478,1.5
1400 DATA '* LETTRE A ELISE *
1410 ENV 4,1,10,1,1,-2,2,1,0,1,1,0,4,8,-1,6
1420 RESTORE 1460:FOR i=1 TO 88:READ a,b
1430 IF a>60 THEN SOUND 4,a,b*20,0,4:SOUND 2,a*2,b*20,1 ELSE IF a<51 THEN SOUND 1,a,b*20,0,4:SOUND 2,a*2,b*20,1 ELSE SOUND 5,a,20*b,0,4:SOUND 2,a*2,b*20,1
1440 IF INKEY(9)=0 THEN RETURN: :' appuyez sur <COPY> pour abreger la musique
1450 WHILE SQ(2)>127:WEND:NEXT:RETURN
1460 DATA 47,1,50,1,47,1,50,1,47,1,50,1,47,1,63,1,53,1,60,1,71,2,71,1,95,1,75,1
1470 DATA 63,2,63,1,60,1,63,1,71,2,47,1,50,1,47,1,50,1,47,1,50,1,47,1,63,1,53,1
1480 DATA 60,1,71,2,71,1,95,1,75,1,63,2,63,1,60,1,63,1,71,2,71,1,71,1,63,1,60,1
1490 DATA 53,1,47,1,47,2,47,1,60,1,45,1,47,1,53,2,53,1,63,1,47,1,53,1,60,2,60,1
1500 DATA 71,1,53,1,60,1,63,2,47,1,50,1,47,1,50,1,47,1,50,1,47,1,25,1,24,1,25,1
1510 DATA 24,1,25,1,24,1,63,1,53,1,60,1,71,2,71,1,95,1,75,1,63,2,63,1,60,1,63,1
1520 DATA 71,2,60,2,47,2,36,3
1530 END