Pour les 2,2ko de gagné, c’est énorme

Modérateur : XavierSnp
et sans toucher aux valeurs en virgules flottantes !Pour les 2,2ko de gagné, c’est énorme
Code : Tout sélectionner
# REM 5Z_Y _Y FW4__
0 REM [HEX:\
21,BF,03,3E,80,D7,3E,00,\
2B,BC,20,F7,C9 ]
# REM (C)1984 BY CYRIL DUFER
10 REM [HEX:\
10,28,11,1D,25,24,20,00,\
27,3E,00,28,3E,37,2E,31,\
00,29,3A,2B,2A,37 ]
15 RAND
20 LET G$="µµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµµ"
30 LET F$="´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´"
40 LET O$="********************************"
50 DIM Q(CODE "8")
60 DIM W$(VAL "9")
75 LET S=VAL "4"
77 LET G=VAL "16514"
80 LET H3=NOT PI
90 LET H4=NOT PI
100 LET H5=NOT PI
110 LET H10=NOT PI
120 LET H1=CODE "="
130 LET H2=CODE "¿"
140 LET H11=NOT PI
150 LET H12=NOT PI
160 LET H30=NOT PI
170 LET H6=NOT PI
180 LET H14=NOT PI
190 LET M1=PI/PI
210 LET I=INT (RND*H1)+S
230 LET P=INT (RND*H1)+S
250 LET D=INT (RND*H1)+S
270 LET R=INT (RND*H1)+S
290 LET VO=INT (RND*H1)+S
310 LET F=INT (RND*H1)+S
330 LET E=INT (RND*H1)+S
350 LET VI=INT (RND*H1)+S
370 LET C=INT (RND*H1)+S
390 LET A=INT (RND*H1)+S
410 LET B1=INT (RND*H1)+S
430 LET B2=INT (RND*H1)+S
440 LET J=INT (RND*H1)+S
450 GOSUB VAL "2920"
460 PRINT AT CODE "+",VAL "7";"VOTRE NOM : ";
470 INPUT W$
480 LET W$=W$( TO VAL "9")
490 PRINT AT CODE "+",CODE "<";W$
500 RAND SIN SIN SIN SIN PI
510 RETURN
540 PRINT AT VAL "2",VAL "7";"Ž«transit«reussi«";AT VAL "5",INT PI;"vous«etes«dans«l•obscurite";AT VAL "9",PI/PI;"la«piece«est«assez«oppressante";AT VAL "11",VAL "5";"et«sent«le«renferme–––"
580 LET N$="‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘"
585 PRINT AT VAL "6",INT PI;N$
590 PRINT AT CODE "+",VAL "7";"que«faites‘vous«Š"
595 GOSUB VAL "2710"
600 GOSUB VAL "3550"
620 CLS
630 GOSUB VAL "4690"
640 IF Q(CODE "£") THEN GOTO VAL "680"
650 CLS
660 RAND USR G
670 GOTO VAL "550"
680 CLS
690 GOSUB VAL "5130"
700 PRINT ,,"oN RECONNAIT AISEMENT LA PIECE PRINCIPALE DÀUN ABRI ANTI -","ATOMIQUE.",,,,"lES MURS SONT COUVERTS","DÀETAGERES:LIVRES,VIDEOS,MUSIQUEBREF TOUT POUR SE DISTRAIRE","DURANT DES MOIS",,,,"oN VOIT 3 PORTES, ET UN ESCALIEREN SPIRALE;PRES DE LA PORTE SUD:UN INTERPHONE",,,,"¼-¸¸¯",,"º °",,"I* O° (5*5)",,"º °",,"ª®®-¬"
780 GOSUB VAL "4320"
790 IF Q(CODE "4") THEN GOTO VAL "1010"
800 IF Q(CODE "5") THEN GOTO VAL "1250"
810 IF Q(CODE "6") THEN GOTO VAL "840"
820 IF Q(CODE "¿") THEN GOTO VAL "1350"
830 GOTO VAL "680"
840 CLS
850 GOSUB VAL "5130"
860 PRINT AT VAL "2",CODE "¿";"lE DORTOIR:",TAB CODE "¿";"----------",,,"oN Y TROUVE 18 COUCHETTES","SUPERPOSEES ET DES ARMOIRES","METALLIQUES VIDES.",,,,,"vOUS REMARQUEZ AUSSI UNE PORTE.",,,,,,,"¼¸-¯",,"º °",,"º *I (4*5)",,"º °",,"ª®®¬"
945 LET H30=PI/PI
950 GOSUB VAL "4320"
960 IF Q(CODE "2") THEN PRINT AT CODE "¿",NOT PI;"lES LITS SONT FAIT,ET IL NÀY A AUCUNE AFFAIRE PERSONNELLE"
965 IF Q(CODE "2") THEN GOSUB VAL "2920"
970 IF Q(CODE "$") THEN GOSUB VAL "3550"
980 IF Q(CODE "4") THEN GOTO VAL "1140"
990 IF Q(VAL "8") OR Q(VAL "9") OR Q(CODE "7") THEN GOTO VAL "680"
1000 GOTO VAL "840"
1010 CLS
1020 GOSUB VAL "5130"
1030 PRINT AT VAL "2",VAL "11";"lA RESERVE:",TAB VAL "11";"----------"
1050 PRINT ,,"pLUSIEURS METRES CUBES DE","NOURRITURE",,,,"lES VIVRES SONT SUFFISANTS POUR 12 PERSONNES PENDANT 6 MOIS."
1070 PRINT ,,,,,,"¼¸¸¸¯",,"º* ° (5*3)",,"ª-®®¬"
1100 GOSUB VAL "4320"
1110 IF Q(CODE "<") THEN LET F=F+PI/PI
1120 IF Q(VAL "8") OR Q(VAL "9") OR Q(CODE "5") THEN GOTO VAL "680"
1130 GOTO VAL "1010"
1140 CLS
1150 GOSUB VAL "5130"
1160 PRINT AT VAL "2",CODE "$";"w‘c",TAB CODE "$";"---",,,,,"lES DOUCHES-TOILETTES DANS UN COIN,UNE MACHINE A LAVER DANS LÀAUTRE.",,,,,,,,"¼¸¸¯",,"º *° (4*3)",,"ª®-¬"
1220 GOSUB VAL "4320"
1230 IF Q(CODE "5") OR Q(VAL "8") OR Q(VAL "9") THEN GOTO VAL "840"
1240 GOTO VAL "1140"
1250 CLS
1260 GOSUB VAL "5130"
1270 PRINT ,,,,"lONGUE PIECE CONTENANT: LES DIVERS RESERVOIRS DÀEAU,DÀAIR AINSI QUE LES FILTRES DE RECYCLAGE.",,,,,,,,"¼¸¸¸¸¸¸-¯",,"º *° (9*3)","ª®®®®®®®¬"
1310 GOSUB VAL "4320"
1320 IF Q(VAL "8") OR Q(VAL "9") OR Q(CODE "4") THEN GOTO VAL "680"
1330 CLS
1340 GOTO VAL "1250"
1350 CLS
1360 GOSUB VAL "5130"
1370 PRINT ,," lÀESCALIER : VOUS MONTEZ...";
1380 RAND SIN SIN SIN SIN SIN SIN SIN PI
1390 PRINT AT VAL "4",CODE ":";"VOUS MONTEZ..."
1400 RAND SIN SIN SIN SIN SIN SIN SIN PI
1410 PRINT ,,"eT ENFIN 50 METRES PLUS HAUT,",,,
1420 PRINT "vOUS VOUS TROUVEZ DANS UN LONG COULOIR.",,"aUX 2 BOUTS: UNE PORTE FERME A CLEF.",,"aU MILIEU: UNE PORTE OUVERTE.",,,"¼-¯"
1460 LET Q$="º °"
1470 PRINT Q$,,Q$,,"ºO° (3*8)",,Q$,,"º*I",,Q$,,"ª-¬"
1540 GOSUB VAL "4320"
1550 IF H14 THEN GOTO VAL "1610"
1560 LET H20=INT (RND*CODE "@64")+PI/PI
1570 IF Q(CODE ".") AND (Q(CODE "4") OR Q(CODE "5")) THEN GOTO VAL "1830"
1580 IF Q(CODE ",") AND (Q(CODE "4") OR Q(CODE "5")) AND H20>H6 THEN PRINT AT VAL "9",INT PI;"vOUS NÀETES PAS CAPABLE DE CROCHETER CETTE SERRURE."
1590 IF Q(CODE ",") AND (Q(CODE "4") OR Q(CODE "5")) AND H20>H6 THEN GOSUB VAL "2920"
1600 IF Q(CODE ",") AND H20>H6 AND (Q(CODE "4") OR Q(CODE "5")) THEN GOTO VAL "2680"
1605 IF Q(CODE ",") AND H20<H6 AND (Q(CODE "4") OR Q(CODE "5")) THEN GOTO VAL "1830"
1610 IF Q(CODE "7") THEN GOTO VAL "1650"
1620 IF Q(VAL "11") THEN GOTO VAL "680"
1630 IF NOT H14 THEN GOTO VAL "2680"
1640 IF Q(CODE "4") OR Q(CODE "5") THEN GOTO VAL "1830"
1645 GOTO VAL "2680"
1650 CLS
1660 GOSUB VAL "5130"
1670 PRINT ,,"lE GARAGE: ECLAIRE PAR DES","MEURTRIERES,",,,,"aU SOL, 2 MOTOS ELECTRIQUES A MOITIE DEMONTEES ET HORS DÀUSAGE",,,,"dE PLUS, VOUS REMARQUEZ LES","TRACES DÀUN VEHICULE PLUS GROS MAIS CE VEHICULE A DISPARU.",,,"¼¸¸¸¯"
1710 LET Q$="º °"
1720 PRINT Q$,,Q$,,Q$;" (5*8)",,Q$,,"I * °",,Q$,,"ª®®®¬"
1790 GOSUB VAL "4320"
1800 IF Q(VAL "8") OR Q(VAL "9") OR Q(CODE "6") THEN GOTO VAL "2680"
1810 CLS
1820 GOTO VAL "1650"
1830 CLS
1840 GOSUB VAL "5130"
1850 LET H14=PI/PI
1860 PRINT AT VAL "2",VAL "6";" zONE DE SECURITE:",,,"lE SOL EST RECOUVERT DÀUNE","POUSSIERE BLEUATRE.","cETTE ZONE EST FERMEE PAR 3 SAS.",," ½½"
1900 PRINT "» ¬®®®®®®",,"º °",,"«‘««««««°"
1930 LET Q$="««««««««°"
1940 PRINT Q$,,Q$,,"«««««««« ½ (9*10)",Q$,,Q$,,Q$,,"«‘««««««°",,"º * °",,"± ¯¸¸¸¸¸¸",," ½½"
2040 LET H30=PI/PI
2050 GOSUB VAL "4320"
2060 CLS
2070 PRINT TAB VAL "11";"attention‰",,,"dORENAVANT,VOUS POUVEZ ETEINDRE VOTRE TORCHE:CETTE SALLE ET LES SUIVANTES SONT ECLAIREES."
2080 IF Q(CODE "2") THEN PRINT ,,"fOUILLE:VOUS NE POUVEZ PAS","ANALYSER CETTE POUSSIERE."
2090 IF Q(CODE "2") THEN PRINT ,,"dE PLUS VOUS TROUVEZ A COTE DU SAS EST:DES ARMES"
2100 LET Q$=" EST BLOQUE."
2110 IF Q(CODE "4") THEN PRINT ,,"lE SAS NORD";Q$
2120 IF Q(CODE "5") THEN PRINT ,,"lE SAS SUD";Q$
2130 GOSUB VAL "2920"
2140 IF Q(VAL "8") OR Q(VAL "9") OR Q(CODE "6") THEN GOTO VAL "2680"
2150 IF Q(CODE "7") THEN GOTO VAL "2180"
2160 CLS
2170 GOTO VAL "1830"
2180 CLS
2190 GOSUB VAL "5130"
2200 PRINT ,,"lA COMMANDE DU SAS ÀESTÀ MARCHE"
2210 RAND SIN SIN SIN SIN SIN SIN PI
2220 PRINT ,,"lA MASSIVE PORTE BLINDEE TOURNE LENTEMENT SUR SES GONDS."
2230 RAND SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN SIN PI
2240 PRINT ,,"sI VOUS DESIREZ VIVRE LA SUITE DE VOTRE MISSION SUR ÀVALIR 4À:",,,"- ˜) RECOPIEZ ATTENTIVEMENT",,TAB VAL "5";"CETTE LIGNE:",,,,("0" AND H1<CODE "¿");H1;("0" AND H2<CODE "¿");H2;("0" AND M1<CODE "¿");M1;("0" AND I<CODE "¿");I;("0" AND P<CODE "¿");P;("0" AND D<CODE "¿");D;("0" AND R<CODE "¿");R;("0" AND VO<CODE "¿");VO;("0" AND F<CODE "¿");F;("0" AND E<CODE "¿");E;("0" AND VI<CODE "¿");VI;("0" AND C<CODE "¿");C;("0" AND A<CODE "¿");A;("0" AND B1<CODE "¿");B1;("0" AND B2<CODE "¿");B2;("0" AND H10<CODE "¿");H10;W$,,,," - ™) METTEZ VOTRE MAGNETO SUR play"
2660 GOSUB VAL "2920"
2670 LOAD À
2680 CLS
2690 GOSUB VAL "5130"
2700 GOTO VAL "1420"
2710 FOR Q=NOT PI TO VAL "500"
2711 IF INKEY$="" THEN NEXT Q
2714 RETURN
2720 IF INKEY$="" THEN GOTO VAL "2720"
2722 FOR Q=NOT PI TO VAL "8"
2724 SCROLL
2726 NEXT Q
2730 PRINT AT CODE "$",NOT PI;
2770 RETURN
2790 CLS
2792 PRINT ,,"- FUSIL 30/30 : ";H2;" BALLES",,,"- PARALYSANTS : ";H1;" JETS",,,,," -legende-",,,," ¼¸¸¸¯ --> CLOISON"," O --> ESCALIER"," - I --> PORTES"," ½ --> SAS OU PORTE BLINDEE * --> VOTRE PERSONNAGE.",,," N",," O+E --> ROSE DES VENTS"," S",,,," (3*6) --> (LONGUEUR * LARGEUR)"
2890 GOSUB VAL "2920"
2900 CLS
2910 RETURN
2920 PRINT AT CODE "+",VAL "7";"entrez«Žnew‘line"
2930 LET A$=INKEY$
2940 IF A$<>"" THEN GOTO VAL "2965"
2950 PRINT AT CODE "+",VAL "7";"ENTREZ <NEW-LINE>"
2960 GOTO VAL "2920"
2965 PRINT AT CODE "+",VAL "7";"«««un««instant«««"
2970 RETURN
2980 CLS
2990 PRINT TAB VAL "8";"que«faites‘vous«Š"
3000 PRINT ,,"- 1) REGARDE DEVANT","- 2) REGARDE SUR LES COTES","- 3) REGARDE EN HAUT","- 4) REGARDE EN BAS","- 5) AVANCE NORMALEMENT","- 6) AVANCE ARME POINTE AU SOL","- 7) AVANCE ARME POINTEE DEVANT- 8) RECULE",,"- 9) RECULE RAPIDEMENT","- 10) MONTE LÀESCALIER","- 11) DESCEND LÀESCALIER","- 12) ALLUME TORCHE","- 13) ETEIND TORCHE","- 14) ANALYSE LÀATMOSPHERE","- 15) MET COMBINAISON SPATIALE","- 16) ENLEVE COMBI. SPATIALE","- 17) REPARE COMBI. SPATIALE","- 18) PREND AIR COMPRIME SECOURS- 19) MANGE",,"- 20) REPOS"
3200 GOSUB VAL "2720"
3210 PRINT "- 21) SOIGNE UN RESIDENT","- 22) SOIGNE SOI-MEME","- 23) TIRE UN JET DE PARALYSANT","- 24) TIRE UNE BALLE EXPLOSIVE","- 25) ATTAQUE AVEC LE COUTEAU","- 26) CROCHETE UNE SERRURE","- 27) FAIT EXPLOSER LA SERRURE","- 28) CONVAINC UN RESIDENT DE",TAB VAL "6";"FOURNIR UN RENSEIGNEMENT."
3220 GOSUB VAL "2720"
3330 PRINT "- 29) SEDUIT UN RESIDENT","- 30) FOUILLE",,"- 31) UTILISE LÀINTERPHONE","- 32) PREND LA PORTE ÀNORDÀ","- 33)";TAB CODE "+";"ÀSUDÀ","- 34)";TAB CODE "+";"ÀOUESTÀ","- 35)";TAB CODE "+";"ÀESTÀ","- 36) AVALE MEDICAMENTS"
3510 RAND SIN SIN SIN SIN PI
3520 SCROLL
3530 GOSUB VAL "2920"
3540 RETURN
3550 POKE VAL "16418",VAL "2"
3555 DIM Q(CODE "8")
3560 GOSUB VAL "3700"
3570 INPUT L$
3575 IF L$="" THEN GOTO VAL "3570"
3580 IF L$="A" OR L$="P" OR L$="R" OR L$="M" THEN GOTO VAL "3610"
3585 LET L=VAL L$
3590 IF L<=NOT PI OR L>CODE "C" THEN GOTO VAL "3570"
3600 LET Q(L)=PI/PI
3610 IF L$="A" THEN GOSUB VAL "2980"
3620 IF L$="P" THEN GOSUB VAL "3890"
3630 IF L$="R" THEN RETURN
3640 IF L$="M" THEN GOSUB VAL "2790"
3650 GOTO VAL "3560"
3700 CLS
3710 PRINT O$;AT CODE "+",NOT PI;O$
3720 PRINT AT INT PI,VAL "11";"’«menu«’"
3730 PRINT ,,,,"1-36 -> ACTION",,,,"ÀAÀ -> LISTE ACTIONS",,,"ÀMÀ -> LISTE MATERIEL",,,"ÀPÀ -> PERSONNAGE",,,"ÀRÀ -> VALIDER LE TOUR"
3780 LET P$="ENTREZ VOTRE SELECTION"
3790 FOR Q=PI/PI TO LEN P$
3810 LET Z=CODE P$(Q)+CODE "«"
3820 IF INKEY$<>"" THEN GOTO VAL "3880"
3830 LET P$(Q)=CHR$ Z
3840 PRINT AT CODE "<",VAL "5";P$
3845 IF INKEY$<>"" THEN GOTO VAL "3880"
3850 LET P$(Q)=CHR$ (Z-CODE "«")
3860 NEXT Q
3870 GOTO VAL "3790"
3880 RETURN
3890 CLS
3900 PRINT TAB INT PI;"caracteristiques«de‰ ";W$;AT VAL "2",CODE ":";
3910 FOR Q=VAL "2" TO VAL "11"
3920 PRINT TAB CODE "?";"º"
3930 NEXT Q
3940 PRINT AT VAL "2",NOT PI;"intellec–«‰ ";I,"perception‰ ";P,,,"decision««‰ ";D,"reflexe«««‰ ";R,,,"volonte«««‰ ";VO,"force«««««‰ ";F,,,"equilibre«‰ ";E,"vitalite««‰ ";VI,,,"communic–«‰ ";C,"adaptation‰ ";A,,,,,,,"apparence«‰ ";B1,"reputation‰ ";B2
4010 GOSUB VAL "2920"
4020 RETURN
4030 CLS
4040 LET Z$="543210:."+CHR$ (PI/PI)+CHR$ (VAL "6")+CHR$ (VAL "7")
4050 FOR Q=PI/PI TO VAL "11"
4060 POKE VAL "16518",CODE Z$(Q)
4090 RAND USR G
4100 CLS
4110 NEXT Q
4160 POKE VAL "16518",CODE "«"
4170 RAND USR G
4200 GOTO VAL "540"
4320 GOSUB VAL "2920"
4330 GOSUB VAL "3550"
4340 CLS
4350 GOSUB VAL "4690"
4360 CLS
4370 RETURN
4380 SAVE "CRYSTALœ"
4390 PRINT AT INT PI,CODE "£";"crystal«œ";AT VAL "5",VAL "4";"JE NE VOUS CACHE PAS QUE";AT VAL "7",INT PI;"LÀAVENTURE PEUT SE REVELER";AT VAL "9",PI/PI;"DANGEREUSE.VOUS PARTIREZ AVEC";AT VAL "11",NOT PI;"TOUTES LES PRECAUTIONS POSSIBLES";AT CODE "$",PI/PI;"ET NE PRENDREZ PAS DE RISQUES";AT CODE "?",PI/PI;"INUTILES SI VOUS DECOUVREZ QUÀ";AT CODE ")",VAL "4";"ILS SONT TOUS MORTS..."
4470 GOSUB NOT PI
4480 CLS
4490 GOSUB VAL "4580"
4500 FOR Z=PI/PI TO VAL "11"
4510 PRINT AT INT PI,CODE "£";"rEaDy Š";AT VAL "9",VAL "7";"ALORS , ACTION...";AT CODE "?",CODE "£";"TRANSIT";AT CODE "(",CODE "£";"-------";AT INT PI,CODE "£";"ReAdY«?"
4560 NEXT Z
4570 GOSUB VAL "4030"
4580 FOR Z=NOT PI TO CODE "="
4590 PRINT "¼¯ ¼¯";
4600 NEXT Z
4610 PRINT "¸¸";TAB CODE "2";"¸¸"
4620 FOR Z=CODE "+" TO NOT PI STEP -PI/PI
4630 PRINT AT Z,VAL "2";"±";TAB CODE "1";"»"
4640 RAND PI*PI
4650 PRINT AT Z,VAL "2";"»";TAB CODE "1";"±"
4660 PRINT AT Z,VAL "2";" ";TAB CODE "1";" "
4670 NEXT Z
4680 RETURN
4690 PRINT TAB VAL "11";"remarques";AT PI/PI,VAL "11";"---------"
4700 IF Q(CODE ".") AND H2>NOT PI THEN LET H2=H2-PI/PI
4705 IF Q(CODE ".") AND H2<=NOT PI THEN LET Q(CODE ".")=NOT PI
4710 IF Q(CODE "(") THEN LET M1=PI/PI
4720 IF Q(CODE "*") AND H1<=NOT PI THEN LET Q(CODE "*")=NOT PI
4730 IF Q(CODE "*") AND H1>NOT PI THEN LET H1=H1-PI/PI
4740 IF Q(CODE ":") THEN PRINT ,,"aTMOSPHERE : OK."
4750 IF H1<=NOT PI THEN PRINT ,,"vOTRE PARALYSANT EST VIDE."
4760 IF Q(CODE "/") AND H2<=NOT PI THEN LET Q(CODE "/")=NOT PI
4770 IF Q(CODE "/") AND H2>NOT PI THEN LET H2=H2-PI/PI
4780 IF Q(CODE "?") AND H10=NOT PI THEN LET M1=NOT PI
4790 IF H2<=NOT PI THEN PRINT ,,"vOTRE FUSIL 30/30 EST VIDE"
4800 IF Q(CODE "<") AND H3>=VAL "7" THEN LET F=F+PI/PI
4810 IF Q(CODE "<") THEN LET H3=NOT PI
4815 IF H3=VAL "7" OR H3=CODE "¿" OR H3=CODE "$" OR H3=CODE "(" OR H3=CODE "=" THEN LET F=F-PI/PI
4820 IF Q(CODE "=") AND H4>=CODE "£" THEN LET VI=VI+PI/PI
4830 IF Q(CODE "=") THEN LET H4=NOT PI
4833 IF H4=CODE "£" OR H4=CODE "?" OR H4=CODE "<" OR H4=CODE "-" THEN LET VI=VI-PI/PI
4840 IF Q(CODE "-") AND H5 THEN LET VI=VI+INT (RND*VAL "5")+PI/PI
4850 IF Q(CODE ",") THEN LET H6=((P-CODE "¿")+(A-CODE "¿")+(I-CODE "¿"))*VAL "4"
4860 IF Q(CODE "0") THEN LET H7=((C-CODE "¿")+(D-CODE "¿")+(I-CODE "¿"))*VAL "4"
4870 IF Q(CODE "1") THEN LET H8=((C-CODE "¿")+(A-CODE "¿"))*VAL "4"
4880 IF Q(CODE "1") AND B1>CODE "<" THEN LET H8=H8+CODE "¿"
4890 PRINT
4891 IF M1 AND H10=VAL "5" THEN PRINT "vOUS AVEZ FROID."
4893 IF M1 AND H10=VAL "5" THEN LET VI=VI-PI/PI
4900 IF M1 AND H10=VAL "8" THEN PRINT "vOUS VENEZ DE TOUSSER"
4905 IF H10=VAL "8" THEN LET VI=VI-PI/PI
4910 IF M1 AND H10=CODE "£" THEN PRINT "vOUS TOUSSEZ POUR LA DEUXIEME FOIS."
4911 IF H10=CODE "£" THEN LET VI=VI-PI/PI
4920 IF Q(CODE "8") THEN LET H12=NOT PI
4930 IF Q(CODE "8") THEN LET H11=PI/PI
4940 LET H12=H12+PI/PI
4950 IF H12=VAL "6" THEN LET H11=NOT PI
4960 IF H12=VAL "6" THEN LET H12=NOT PI
4970 IF H12=VAL "6" THEN LET VI=VI-PI/PI
4980 IF H11 AND M1 AND H10=CODE "?" OR H10=CODE "$" THEN PRINT "vOUS ETERNUEZ"
4990 IF M1 AND H10=CODE "*" AND H11 THEN PRINT "vOUS AVEZ DE LA FIEVRE"
5000 IF M1 AND (H10=CODE "2" OR H10=CODE "5" OR H10=CODE "8") AND H11 THEN PRINT "vOUS ETES TRES MALADE."
5010 IF H11 AND M1 AND H10=CODE "?" OR H10=CODE "$" THEN LET VI=VI-INT PI
5020 IF H11 AND M1 AND H10=CODE "=" THEN LET VI=VI-(INT (RND*VAL "4")+PI/PI)
5030 IF H11 AND M1 AND (H10=CODE "2" OR H10=CODE "5" OR H10=CODE "8") THEN LET VI=VI-(INT (RND*VAL "6")+VAL "2")
5060 LET H3=H3+PI/PI
5070 LET H4=H4+PI/PI
5080 LET H10=H10+PI/PI
5090 IF Q(CODE "2") AND NOT H30 THEN PRINT ,,"fOUILLE : VOUS NE TROUVEZ RIEN DE TRES INTERESSANT."
5095 LET H30=NOT PI
5100 IF Q(CODE "3") THEN PRINT ,,"lE VOYANT DE LÀINTERPHONE SÀEST ALLUME,MAIS PERSONNE NE REPOND"
5110 IF VI<=NOT PI THEN GOTO VAL "5190"
5120 GOSUB VAL "2920"
5124 IF Q(CODE "$") AND NOT H14 THEN GOSUB VAL "5330"
5125 RETURN
5160 PRINT F$
5163 POKE VAL "16418",NOT PI
5166 PRINT AT CODE "*",NOT PI;G$
5170 PRINT AT PI/PI,NOT PI;
5180 RETURN
5190 CLS
5195 RAND USR G
5200 PRINT AT VAL "6",VAL "7";"HORREUR."
5210 FOR Z=NOT PI TO CODE "+"
5230 PRINT AT VAL "11",VAL "4";"++++++++++++++";AT Z,Z;"";AT VAL "11",VAL "4";"vous«etes«mort";AT Z,CODE "+"-Z;""
5270 NEXT Z
5280 LET A$="½½½½½½½½½½"
5290 FOR Z=CODE "+" TO NOT PI STEP -PI/PI
5300 PRINT AT Z,CODE "-";A$
5310 NEXT Z
5320 GOTO VAL "9999"
5330 POKE VAL "16518",CODE "«"
5340 CLS
5350 RAND USR G
5360 PRINT AT VAL "6",INT PI;"vous«etes«dans«l•obscurite"
5370 PRINT AT VAL "7",INT PI;N$
5390 GOSUB VAL "4320"
5400 IF Q(CODE "£") THEN RETURN
5410 GOTO VAL "5340"
Code : Tout sélectionner
4891 IF M1 AND H10=VAL "5" THEN PRINT "vOUS AVEZ FROID."
4893 IF M1 AND H10=VAL "5" THEN LET VI=VI-PI/PI
4900 IF M1 AND H10=VAL "8" THEN PRINT "vOUS VENEZ DE TOUSSER"
Code : Tout sélectionner
; ******************************************************
; ** Librería de rutinas para Amstrad CPC/GB **
; ** Raúl Simarro, Artaburu 2007 **
; ******************************************************
;
; Addaptée pour le ZX81 par XavSnap.
; datos necesarios que vienen en la pila:
; ORIGEN HL
; DESTINO DE
;------- TASM ASM mnemonics. -------
; Compile this file using:
; Set TASMOPTS = -b
; tasm -80 ThisCode.tas MyBinary.BIN
;-----------------------------------
; Zx81 Program name:
#define ORG .org ; TASM cross-assembler definitions
#define equ .equ
#define db .db
#define dw .word
;-----------------------------------
#include "ZX81.sym" ; Load the symbol file.
ORG 16514
pop af
pop de
pop hl
; ****** Unpack pucrunch data ******
pucrunch:
LD DE,(Dest_ADD) ; Entry Source packed data
push de ; destination pointer to 2nd register
LD HL,(Sour_ADD) ; Destination for unpacked data
exx ; set
pop de
push hl
push de
push bc
push af
exx ; read the header self-modifying the
; parameters straight into the code
; skip useless data
ld bc,6
add hl,bc ; skip "**PU**"
ld a, (hl) ; starting escape
inc hl
ld (escPu+1), a
inc hl ; skip useless data "X"
inc hl
ld a, (hl) ; number of escape bits
inc hl
ld (escPub0+1), a
ld (escPub1+1), a
ld b, a ; 8 - escape bits
ld a, 8
sub b
ld (noescPu+1), a
ld a, (hl) ; maxGamma + 1
inc hl
ld (MaxGamma+1), a
ld b, a ; 8 - maxGamma
ld a, 9
sub b
ld (Max8Gamma+1), a
ld a, (hl) ; (1 << maxGamma)
inc hl
ld (Max1Gamma+1), a
add a, a ; (2 << maxGamma) - 1
dec a
ld (Max2Gamma+1), a
ld a, (hl) ; extra lz77_0 position bits
inc hl
ld (ExtraBits+1), a
inc hl ; skip useless data
inc hl
ld e, (hl) ; RLE table length
ld (tablePu+1), hl ; RLE table pointer
inc hl
ld d, 0
add hl, de
ld c, $80 ; start decompression
jr loop_u
newescPu:
ld a, (escPu+1) ; save old escape code
ld d, a
escPub0:
ld b, 2 ; ** parameter
xor a ; get new escape code
call get_bits
ld (escPu+1), a
ld a, d
noescPu:
ld b, 6 ; ** parameter
call get_bits ; get more bits to complete a byte
exx ; output the byte
ld (de), a
inc de
exx
loop_u:
xor a
escPub1:
ld b, 2 ; ** parameter
call get_bits ; get escape code
escPu:
cp 0 ; ** parameter
jr nz, noescPu
call get_gamma ; get length
exx
ld b, 0
ld c, a
exx
cp 1
jr nz, lz77_0 ; lz77_0
xor a
call get_bit
jr nc, lz77_0_2 ; 2-byte lz77_0
call get_bit
jr nc, newescPu ; escaped literal byte
call get_gamma ; get length
exx
ld b, 1
ld c, a
exx
Max1Gamma:
cp 64 ; ** parameter
jr c, chrcode ; short RLE, get bytecode
Max8Gamma:
ld b, 2 ; ** parameter
call get_bits ; complete length LSB
ex af, af'
call get_gamma ; length MSB
exx
ld b, a
ex af, af'
ld c, a
exx
chrcode:
call get_gamma ; get byte to repeat
push hl
tablePu:
ld hl, $0000 ; ** parameter
ld d, 0
ld e, a
add hl, de
cp 32
ld a, (hl)
pop hl
jr c, dorle
ld a, e ; get 3 more bits to complete the
ld b, 3 ; byte
call get_bits
dorle:
exx ; output the byte n times
inc c
dorlei:
ld (de), a
inc de
dec c
jr nz, dorlei
dec b
jr nz, dorlei
exx
jr loop_u
lz77_0:
call get_gamma ; offset MSB
Max2Gamma:
cp 127 ; ** parameter
; ret z
jr z, fin ; EOF, return
dec a ; (1...126 -> 0...125)
ExtraBits:
ld b, 0 ; ** parameter
call get_bits ; complete offset MSB
lz77_0_2:
ex af, af'
ld b, 8 ; offset LSB
call get_bits
cpl ; xor'ed by the compressor
exx ; combine them into offset
ld l, a
ex af, af'
ld h, a
inc hl
xor a ; CF = 0
push de ; (current output position) - (offset)
ex de, hl
sbc hl, de
pop de
inc bc
ldir ; copy
exx
jp loop_u
;## Get a bit from the source stream.
;## Return CF = result
get_bit:
sla c ; shift next bit into CF
ret nz
ld c, (hl) ; get next byte
inc hl ; increase source stream pointer
rl c ; shift next bit into CF, bit0 = 1
ret
;## Get multiple bits from the source stream.
;## In B = number of bits to get
;## Return A = result
get_bits:
dec b
ret m
sla c ; shift next bit into CF
jr nz, gb1
ld c, (hl) ; get next byte
inc hl ; increase source stream pointer
rl c ; shift next bit into CF, bit0 = 1
gb1:
rla ; rotate next bit into A
jr get_bits
;## Get an Elias Gamma coded value from the source stream.
;## Return A = result
get_gamma:
ld b, 1
MaxGamma:
ld a, 7 ; ** parameter
gg1:
call get_bit ; get bits until 0-bit or max
jr nc, gg2
inc b
cp b
jr nz, gg1
gg2:
ld a, 1 ; get the actual value
dec b
jr get_bits
fin: ; Restauramos los registros dobles y vuelta limpia
exx
; LD HL,(Dest_ADD)
; EX DE,HL
; SBC HL,DE
; LD (PIC_LEN+1),HL
pop af
pop bc
pop de
pop hl
exx ;ret
ret
Sour_ADD: ; Entry Source packed data
dw Entry_DATAs
Dest_ADD: ; Destination for unpacked data
dw $4400
LoadScr:
LD HL,(Dest_ADD)
LD DE,(RAM_D_FILE)
INC DE
PIC_LEN:
LD BC,$0318
LDIR
RET
Entry_DATAs:
.end
Code : Tout sélectionner
#include ZX81.sym
#define ORG .org ; TASM cross-assembler definitions
#define equ .equ
;-----------------------------------
;------- Rom and Ram Symbols -------
RAM_D_FILE equ $400C ; D_file address.
EXTERR equ $005B ; Basic Break function ! Ignore line instructions.
CURSEUR equ $8F5 ; Point to PRINT AT DEST.(BC=X,Y)
CHAINE equ $B6B ; PRINT A CHAINE (BC=LEN;DE=TEXT LOC)
ORG 16514
;--------- Routine 1 ----------
LD BC,0000
CALL CURSEUR
LD BC,22*32
LOOP1:
LD A,157 ; '1'
RST 10H
DEC BC
LD A,B
OR C
JR NZ,LOOP1
RET
;--------- Routine 2 ----------
LD HL,(RAM_D_FILE)
LD B,158 ; '2'
LD DE,32*24+23
LOOP2:
LD A,$76
INC HL
CP (HL)
DEC DE
JR Z,LOOP2
LD (HL),B
LD A,D
OR E
RET Z
JR LOOP2
;--------- Routine 3 ----------
LD HL,(RAM_D_FILE)
LOOP3:
INC HL
LD D,H
LD E,L
INC DE
LD A,159 ; '3'
LD (HL),A
LD BC,31
LDIR
LD A,$80
EX DE,HL
INC HL
CP (HL)
EX DE,HL
RET Z
INC HL
JR LOOP3
;--------- Routine 4 ----------
LD HL,(RAM_D_FILE)
INC HL
LD D,H
LD E,L
INC DE
LD A,160 ; '4'
LD (HL),A
LD BC,31
LDIR
LD BC,$0100
CALL CURSEUR
LD L,21
LOOP4:
LD DE,(RAM_D_FILE)
INC DE
LD BC,32
CALL CHAINE
DEC L
RET Z
RET Z
JR LOOP4
;--------- Routine 5 ----------
Lb40A4:
LD BC,0000
CALL CURSEUR
LD HL,$03BF
Lb40A7:
LD A,161 ; '5'
RST 10H ; Display= A reg.
LD A,$00
DEC HL
CP H
JR NZ, Lb40A7 ; [$40A7:16551]
RET ; ==========================
;--------- Routine 6 ----------
LD BC,0000
CALL CURSEUR
LD BC,$BF02 ; $FF+$FF+$BF
LOOP5:
LD A,161 ; '6'
RST 10H ; Display= A reg.
LD A,$00
DJNZ LOOP5 ; if B<>0
LD B,$FF
DEC C
JR NZ, LOOP5
RET ; ==========================
.end
Code : Tout sélectionner
;------- TASM ASM mnemonics. -------
; Compile this file using:
; Set TASMOPTS = -b
; tasm -80 ThisCode.tas MyBinary.BIN
;-----------------------------------
; Zx81 Program name: VB81 XuR [META.P] : SAVE"META" Line 999
; REM line name: 1 REM: 247 Bytes@4082-4178
#define ORG .org ; TASM cross-assembler definitions
#define equ .equ
;-----------------------------------
;------------------------------------
;-Basic sub-routine entry. -
;+----------------------------------+
; Lb4084 ; <- USR Basic Enty.
; Lb40F0 ; <- USR Basic Enty.
; Lb4102 ; <- USR Basic Enty.
; Lb4114 ; <- USR Basic Enty.
; Lb4134 ; <- USR Basic Enty.
; Lb4159 ; <- USR Basic Enty.
; Lb4164 ; <- USR Basic Enty.
;+----------------------------------+
;------- Rom and Ram Symbols -------
RAM_LAST_K equ $4025
DECODE equ $07BD
RAM_SPARE2 equ $407B
RAM_VARS equ $4010
RAM_D_FILE equ $400C
ORG $4082 ; [@16514/@h4082]
Lb4082:
INC D
LD A,H
Lb4084: ; <- USR Basic Enty.
LD BC,(RAM_LAST_K) ; GET LAST-K
LD D,C
INC D
JR NZ, Lb4090 ; [$4090:16528]
LD BC,$0000
RET ; ==========================
Lb4090:
CALL DECODE ; [DECODE]
LD A,(HL)
LD BC,(RAM_SPARE2) ; GET UNUSED-16
CP $21 ; [33-"5"]
JR NZ, Lb409F ; [$409F:16543]
DEC C
JR Lb40CE ; [$40CE:16590]
Lb409F:
CP $22 ; [34-"6"]
JR NZ, Lb40A6 ; [$40A6:16550]
DEC B
JR Lb40CE ; [$40CE:16590]
Lb40A6:
CP $23 ; [35-"7"]
JR NZ, Lb40AD ; [$40AD:16557]
INC B
JR Lb40CE ; [$40CE:16590]
Lb40AD:
CP $24 ; [36-"8"]
JR NZ, Lb40B4 ; [$40B4:16564]
INC C
JR Lb40CE ; [$40CE:16590]
Lb40B4:
LD BC,$0000
CP $2A ; [42-"E"]
JR NZ, Lb40BF ; [$40BF:16575]
LD BC,$00F5
RET ; ==========================
Lb40BF:
CP $2B ; [43-"F"]
JR NZ, Lb40C7 ; [$40C7:16583]
LD BC,$0131
RET ; ==========================
Lb40C7:
CP $39 ; [57-"T"]
RET NZ
LD BC,$00BE
RET ; ==========================
Lb40CE:
LD A,C
CP $FF ; [255]
JR NZ, Lb40D5 ; [$40D5:16597]
LD C,$00
Lb40D5:
CP $40 ; [64]
JR NZ, Lb40DB ; [$40DB:16603]
LD C,$3F
Lb40DB:
LD A,B
CP $01 ; [1]
JR NZ, Lb40E2 ; [$40E2:16610]
LD B,$02
Lb40E2:
CP $2C ; [44-"G"]
JR NZ, Lb40E8 ; [$40E8:16616]
LD B,$28
Lb40E8:
LD (RAM_SPARE2),BC ; SET UNUSED-16
LD BC,$0000
RET ; ==========================
Lb40F0: ; <- USR Basic Enty.
LD HL,(RAM_VARS) ; GET VARS
LD BC,$0006
ADD HL,BC
EX DE,HL
LD HL,(RAM_D_FILE) ; GET D-FILE
INC HL
LD BC,$02B5
LDIR
RET ; ==========================
Lb4102: ; <- USR Basic Enty.
LD DE,(RAM_D_FILE) ; GET D-FILE
INC DE
LD HL,(RAM_VARS) ; GET VARS
LD BC,$0006
ADD HL,BC
LD BC,$02B5
LDIR
RET ; ==========================
Lb4114: ; <- USR Basic Enty.
LD A,$12
LD HL,(RAM_VARS) ; GET VARS
LD BC,$0006
ADD HL,BC
Lb411D:
LD DE,(RAM_D_FILE) ; GET D-FILE
INC DE
LD BC,$02B5
LDIR
LD B,$0A
Lb4129:
LD C,$80
Lb412B:
DEC C
JR NZ, Lb412B ; [$412B:16683]
DJNZ Lb4129 ; [$4129:16681]
DEC A
JR NZ, Lb411D ; [$411D:16669]
RET ; ==========================
Lb4134: ; <- USR Basic Enty.
LD A,$12
LD HL,(RAM_VARS) ; GET VARS
LD BC,$30BF
ADD HL,BC
Lb413D:
PUSH HL
LD HL,(RAM_D_FILE) ; GET D-FILE
LD BC,$02B5
ADD HL,BC
EX DE,HL
POP HL
LD BC,$02B5
LDDR
LD B,$0A
Lb414E:
LD C,$80
Lb4150:
DEC C
JR NZ, Lb4150 ; [$4150:16720]
DJNZ Lb414E ; [$414E:16718]
DEC A
JR NZ, Lb413D ; [$413D:16701]
RET ; ==========================
Lb4159: ; <- USR Basic Enty.
LD HL,(RAM_VARS) ; GET VARS
LD BC,$0006
ADD HL,BC
LD (Lb4082),HL
RET ; ==========================
Lb4164: ; <- USR Basic Enty.
LD HL,(RAM_D_FILE) ; GET D-FILE
INC HL
LD DE,(Lb4082)
LD BC,$02B5
LDIR
LD (Lb4082),DE
RET ; ==========================
.end
Tiens, ça faisait. longtemps que j'avais rien donné sur ZX 81.
C'est. pari, grâce à James Chaput. Pour Stock-car, voici un truc qui permet de ne rencontrer aucune voiture sur les 15 Kms du trajet. Arrêtez le programme une fois chargé par BREAK et entrez les lignes suivantes:
9920 FOR I = 16584 TO 16598
9930 POKE I,0
9940 NEXT I
9950 RUN
Et lancez le fonctionnement par GOTO 9920.