ZX81 France, les fichiers...
Modérateur : XavierSnp
Re: ZX81 France, les fichiers...
Merci pour ce joli teasing et cette introduction.
Pour les 2,2ko de gagné, c’est énorme
Pour les 2,2ko de gagné, c’est énorme
Re: ZX81 France, les fichiers...
et sans toucher aux valeurs en virgules flottantes !Pour les 2,2ko de gagné, c’est énorme
Juste en concaténant les 'PRINT' et en réorganisant certaines routines.
2,2k c'est largement suffisant pour faire un menu déroulant en ASM pour le choix des actions...
[EDIT]
Et encore 1665 octets... mais, dur de gagner plus !!!
4269 octets de libre...
Mais on perd grandement en vitesse d'exécution.
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"
Juste une petite chose:
Dans:
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"
4893 IF H10=VAL "5" THEN LET VI=VI-PI/PI
4900 PRINT ("vOUS AVEZ FROID." AND H10=VAL "5")
;("vOUS VENEZ DE TOUSSER" AND H10=VAL "8" );
4910 ....
On peux appliquer des simplifications qui accélèrent le traitement et on gagne Encore des octets!
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Re: ZX81 France, les fichiers...
Le plan complet de Cristal 5...
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Compression sur ZX81 32 images plein ecran dans 16k.
Salut,
Voici une démo deux en un... avec compression par suppression de redondance, et LZ.
Donc, voici le fichier exemple. Utitisant le compresseur DOS Pucrush.exe
32 images, soit 792*32= 25344 octets pour 16k de RAM!
Sources:
Voici une démo deux en un... avec compression par suppression de redondance, et LZ.
Donc, voici le fichier exemple. Utitisant le compresseur DOS Pucrush.exe
32 images, soit 792*32= 25344 octets pour 16k de RAM!
Sources:
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
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
L'ASM ZX81, six façons de programmer...
Salut à tous,
Suite à une question sur le remplissage d'un écran avec un caractère...
J'ai trouvé 6 façons de programmer le ZX81, pour faire la même chose!
Cela démontre la richesse de ce langage à première vu simple et rudimentaire.
La vitesse d'exécution varie naturellement de routine en routine...
A vous d'en juger...
Voici la source:
Suite à une question sur le remplissage d'un écran avec un caractère...
J'ai trouvé 6 façons de programmer le ZX81, pour faire la même chose!
Cela démontre la richesse de ce langage à première vu simple et rudimentaire.
La vitesse d'exécution varie naturellement de routine en routine...
A vous d'en juger...
Voici la source:
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
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Re: ZX81 France, les fichiers...
Spacio jeep
Petit jeu d'arcade sur ZX81 qui vient du Hebdogiciel 46
Suite à une discussion avec son auteur Nicolas Trub, j'ai voulu tester
La phase 2 avec les rochers est difficile : il faut appréhender la distance fixe de son laser...mais c'est faisable !
Petit jeu d'arcade sur ZX81 qui vient du Hebdogiciel 46
Suite à une discussion avec son auteur Nicolas Trub, j'ai voulu tester
La phase 2 avec les rochers est difficile : il faut appréhender la distance fixe de son laser...mais c'est faisable !
Re: ZX81 France, les fichiers...
Salut,
Petite curiosité présente sur le "Micro-7" n°22.
Fonction 'Line' en assembleur et animation.
("espace"+RUN pour dessiner les vecteurs de début "F" pour les vecteurs de fin & curseurs+"T" pour tracer!)
Listing papier ici: http://abandonlistings.free.fr/micro7/pdf_1.htm
Petite curiosité présente sur le "Micro-7" n°22.
Fonction 'Line' en assembleur et animation.
("espace"+RUN pour dessiner les vecteurs de début "F" pour les vecteurs de fin & curseurs+"T" pour tracer!)
Listing papier ici: http://abandonlistings.free.fr/micro7/pdf_1.htm
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
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Triche: Stock-Car
Faire un Break après le chargement:
FAST
RAND USR 836
(Chargement...)
LIST
BIDOUILLE-GRENOUILLE Hebdogiciel 94-97:
FAST
RAND USR 836
(Chargement...)
LIST
BIDOUILLE-GRENOUILLE Hebdogiciel 94-97:
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.
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Article sur le FLM pour Zx81...
Salut,
Petit article de Patrick Gueulle sur le FLM. http://zx81.ordi5.free.fr/fastload/radi ... -08-54.jpg
http://zx81.ordi5.free.fr/fastload/radi ... -08-56.jpg
http://zx81.ordi5.free.fr/fastload/radi ... -08-55.jpg
Bonne lecture !
Petit article de Patrick Gueulle sur le FLM. http://zx81.ordi5.free.fr/fastload/radi ... -08-54.jpg
http://zx81.ordi5.free.fr/fastload/radi ... -08-56.jpg
http://zx81.ordi5.free.fr/fastload/radi ... -08-55.jpg
Bonne lecture !
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Tuto Kicad...
Salut à tous,
Avant de vous présenter des circuits électroniques, je vous donne la démarche pour la création d'un circuit imprimé.
Attention, la démarche est modulaire, et cela demande des automatismes qui ne sont pas très intuitifs…
En deux mots, le "Game-play" est très particulier.
Le principal, c'est de ne pas ce perdre dans toutes les fonctions, couches et librairies qui embrouillent quelque-peu la première approche du novice.
Kicad est conçu de deux programmes principaux distincts, Eeschema et PCBnews.
Le créateur de schéma et le concepteur de typons pour la création de PCBs.
Même si le PCB peut ce faire directement sur PCBnews, mais pour cela, il vous faudra un modèle, car la vérification automatique ne vous indiquera pas les erreurs ou oublis d'interconnections sur votre dessin.
Donc, la création se fait en deux étapes. Le schéma donnera la liste "Net" pour attribuer à chaque "Pin" une liaison à un composant ou une zone d'alimentation.
Le concept est simple, une librairie pour les symboles de schéma et un librairie pour les "traces" sur le PCB.
Pour un montage simple, cela ne pose pas de problèmes... mais vous allez voir que tout ce complique sur un montage... qui date d'un trentaine d'années.
En effet, sur un librairie de plusieurs milliers de symboles, non seulement vous cherchez des heures le bon symbole, mais surtout, 99,9% des symboles ne vous serviront pas!
Pire... "LE" symbole que vous aurez à placer, ne sera pas dans cette monstrueuse collection.
En effet, pour la rétro-électronique, ces librairies sont trop récentes et ne sont pas adaptées à des recréations ou des créations au format de la machine.
Après avoir passé des heures à rechercher "Kicad Connecteur ZX81" sur le net, il vous faudra vous résoudre à faire le boulot vous-même.
Résultat, une heure de plus pour créer vous-même le symbole et la trace du composant en question à chaque fois.
Ne vous basez pas sur l'aspect "collaboratif" de la mise à disposition des librairies, car les mises à jour sont rares, et ne concernera pas les anciennes technologies qui faisait le charme de notre bonne vieille machine.
Méfiez-vous aussi des symboles proposés, certains sont incompatibles et ont des noms de pin (alim.) exotiques, parfois même erronés.
Pour le moment, oubliez les librairies et le fourre-tout de symboles mis à votre disposition.
Restons sobre, pour éviter l'arrachage de cheveux à la première utilisation...
Le projet va décrire la création d'un schéma, la création d'un "Netlist" et la liaison entre les deux programmes Eeschema et PcbNew.
- Création du schema. (étape 1)
- Faire un Netlist.
- Créer le lien vers PCBnew pour attribuer les n°de pins à la trace future du PCB.
- Importer les composants de Eeschema. (étape 2)
- Tracer les pistes et les limites du PCB.
/on ne touche pas aux librairies, icones barrées)
Eeschem:
1) Placer un symbole Diode LED, la résistance, les connecteurs.
2) Place un symbole d'alimentation… GND, VCC et PWR_FLAG(Qui est obligatoire!?)
3) Place une liaison… sur les "o" des composants non raccordés.
4) Toute connection "o" sont à relier, donc le "x" indique que la liaison est "en l'air" (non connectée)
5) C'est un label dit "local", sur la même page) qui donne un nom de renvoie pour une connection.
Si elle est répétée, le fil ou le composant sera relié.
Sauf pour VCC ou GND qui le seront automatiquement (PWR_FLAG?).
6) Obligatoire pour générer (importation sur PCBnew) une liste de "trace"/composants correspondant aux symboles des composants.
7) Créer un "NetList" sur disque dur. ( liste des connections des composants)
Ajoutons les symboles d'alimentation… VCC, GND (masse) et PWR_FLAG
Touche "R" pour la rotation du symbole et "insert" pour répéter le même symbole.
On passe au symboles généraux: Filtre "R" ,"LED" et "conn_" pour trouver plus facilement le symbole.
Les symboles n'ont pas de nom!
Soit on fait "E" (édition) et on change le N° du symbole… soit on le fait automatiquement (icônes à gauche de la coccinelle).
Préparation pour la liaison Eeschéma/PcbNew…
On choisie le futur tracé sur le PCB…
Attention, le choix est pénible… entre THT (composants discrets) et SMD (CMS-composants de surface)… les tailles, les models, les marques…
ça peut prendre du temps, surtout que les filtres sont déroutants et cachent parfois le composant qu'il nous faut!
Pour la diode:
Pour la résistance:
On ouvre PCBnews.
Chargement du "NetList" (à importer depuis Eeschema)
Puis, on importe les traces sélectionnée dans Eeschema…
Bon, on place les composants ("R' pour la rotation, "E" pour éditer le composant)
"F.cu" pour la face avant (Face composant)
"B.cu" pour la face arrière (Face cuivre)
"x.Silks" pour la sérigraphie
"Edge.cuts" pour le dessin du contour de la plaque époxy.
On place les pistes… les traits blanc du "chevelu" s'effacent.
Puis, on clique l'icône de la coccinelle pour la vérification du PCB…
Ajout d'un connecteur: … on retourne dans le créateur de schéma….
Le problème en cas d'ajout, c'est qu'il faut l'ajouter sur le schéma !
Donc, on sauvegarde le PCB… puis on retourne sur Eeschema.
Et on fait comme avec la diode et la résistance.
On réserve l'empreinte pour PCBnew…
Et on met à jour le NetList… un petit coup de coccinelle pour voir si il n'y a rien d'oublié...
On retourne sur PCBnew, et on rafraîchie les empreintes…
Le connecteur est ajouté.
On le place, et on fait les pistes…
Puis, une petite vue 3D de votre oeuvre… ("Affichage/visualiseur 3D")
C'est beau !
Compris ?
Voilà le projet:
Avant de vous présenter des circuits électroniques, je vous donne la démarche pour la création d'un circuit imprimé.
Attention, la démarche est modulaire, et cela demande des automatismes qui ne sont pas très intuitifs…
En deux mots, le "Game-play" est très particulier.
Le principal, c'est de ne pas ce perdre dans toutes les fonctions, couches et librairies qui embrouillent quelque-peu la première approche du novice.
Kicad est conçu de deux programmes principaux distincts, Eeschema et PCBnews.
Le créateur de schéma et le concepteur de typons pour la création de PCBs.
Même si le PCB peut ce faire directement sur PCBnews, mais pour cela, il vous faudra un modèle, car la vérification automatique ne vous indiquera pas les erreurs ou oublis d'interconnections sur votre dessin.
Donc, la création se fait en deux étapes. Le schéma donnera la liste "Net" pour attribuer à chaque "Pin" une liaison à un composant ou une zone d'alimentation.
Le concept est simple, une librairie pour les symboles de schéma et un librairie pour les "traces" sur le PCB.
Pour un montage simple, cela ne pose pas de problèmes... mais vous allez voir que tout ce complique sur un montage... qui date d'un trentaine d'années.
En effet, sur un librairie de plusieurs milliers de symboles, non seulement vous cherchez des heures le bon symbole, mais surtout, 99,9% des symboles ne vous serviront pas!
Pire... "LE" symbole que vous aurez à placer, ne sera pas dans cette monstrueuse collection.
En effet, pour la rétro-électronique, ces librairies sont trop récentes et ne sont pas adaptées à des recréations ou des créations au format de la machine.
Après avoir passé des heures à rechercher "Kicad Connecteur ZX81" sur le net, il vous faudra vous résoudre à faire le boulot vous-même.
Résultat, une heure de plus pour créer vous-même le symbole et la trace du composant en question à chaque fois.
Ne vous basez pas sur l'aspect "collaboratif" de la mise à disposition des librairies, car les mises à jour sont rares, et ne concernera pas les anciennes technologies qui faisait le charme de notre bonne vieille machine.
Méfiez-vous aussi des symboles proposés, certains sont incompatibles et ont des noms de pin (alim.) exotiques, parfois même erronés.
Pour le moment, oubliez les librairies et le fourre-tout de symboles mis à votre disposition.
Restons sobre, pour éviter l'arrachage de cheveux à la première utilisation...
Le projet va décrire la création d'un schéma, la création d'un "Netlist" et la liaison entre les deux programmes Eeschema et PcbNew.
- Création du schema. (étape 1)
- Faire un Netlist.
- Créer le lien vers PCBnew pour attribuer les n°de pins à la trace future du PCB.
- Importer les composants de Eeschema. (étape 2)
- Tracer les pistes et les limites du PCB.
/on ne touche pas aux librairies, icones barrées)
Eeschem:
1) Placer un symbole Diode LED, la résistance, les connecteurs.
2) Place un symbole d'alimentation… GND, VCC et PWR_FLAG(Qui est obligatoire!?)
3) Place une liaison… sur les "o" des composants non raccordés.
4) Toute connection "o" sont à relier, donc le "x" indique que la liaison est "en l'air" (non connectée)
5) C'est un label dit "local", sur la même page) qui donne un nom de renvoie pour une connection.
Si elle est répétée, le fil ou le composant sera relié.
Sauf pour VCC ou GND qui le seront automatiquement (PWR_FLAG?).
6) Obligatoire pour générer (importation sur PCBnew) une liste de "trace"/composants correspondant aux symboles des composants.
7) Créer un "NetList" sur disque dur. ( liste des connections des composants)
Ajoutons les symboles d'alimentation… VCC, GND (masse) et PWR_FLAG
Touche "R" pour la rotation du symbole et "insert" pour répéter le même symbole.
On passe au symboles généraux: Filtre "R" ,"LED" et "conn_" pour trouver plus facilement le symbole.
Les symboles n'ont pas de nom!
Soit on fait "E" (édition) et on change le N° du symbole… soit on le fait automatiquement (icônes à gauche de la coccinelle).
Préparation pour la liaison Eeschéma/PcbNew…
On choisie le futur tracé sur le PCB…
Attention, le choix est pénible… entre THT (composants discrets) et SMD (CMS-composants de surface)… les tailles, les models, les marques…
ça peut prendre du temps, surtout que les filtres sont déroutants et cachent parfois le composant qu'il nous faut!
Pour la diode:
Pour la résistance:
On ouvre PCBnews.
Chargement du "NetList" (à importer depuis Eeschema)
Puis, on importe les traces sélectionnée dans Eeschema…
Bon, on place les composants ("R' pour la rotation, "E" pour éditer le composant)
"F.cu" pour la face avant (Face composant)
"B.cu" pour la face arrière (Face cuivre)
"x.Silks" pour la sérigraphie
"Edge.cuts" pour le dessin du contour de la plaque époxy.
On place les pistes… les traits blanc du "chevelu" s'effacent.
Puis, on clique l'icône de la coccinelle pour la vérification du PCB…
Ajout d'un connecteur: … on retourne dans le créateur de schéma….
Le problème en cas d'ajout, c'est qu'il faut l'ajouter sur le schéma !
Donc, on sauvegarde le PCB… puis on retourne sur Eeschema.
Et on fait comme avec la diode et la résistance.
On réserve l'empreinte pour PCBnew…
Et on met à jour le NetList… un petit coup de coccinelle pour voir si il n'y a rien d'oublié...
On retourne sur PCBnew, et on rafraîchie les empreintes…
Le connecteur est ajouté.
On le place, et on fait les pistes…
Puis, une petite vue 3D de votre oeuvre… ("Affichage/visualiseur 3D")
C'est beau !
Compris ?
Voilà le projet:
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Kicad Librairies Zx81.
Salut,
Voilà ! les présentations sont faites.
Vous l'avez compris, Kicad est notre ami pour divers bricolages… virtuels ou réels.
Nous allons commencer par reprendre les montages de Patrick Gueulle de RadioPlan…
Je vais proposer au fil de l'eau, pour passer le temps, différents montages électroniques au format Kicad, dans sa version originale ou modifiée.
Mais avant, pour vous éviter de chercher les symboles pour Zx81, voici ma collection que je nourrie au grès de mes réalisations.
A télécharger ici:
http://zx81.ordi5.free.fr/brico/tutokicad/ZX81_Libs.zip
Voilà ! les présentations sont faites.
Vous l'avez compris, Kicad est notre ami pour divers bricolages… virtuels ou réels.
Nous allons commencer par reprendre les montages de Patrick Gueulle de RadioPlan…
Je vais proposer au fil de l'eau, pour passer le temps, différents montages électroniques au format Kicad, dans sa version originale ou modifiée.
Mais avant, pour vous éviter de chercher les symboles pour Zx81, voici ma collection que je nourrie au grès de mes réalisations.
A télécharger ici:
http://zx81.ordi5.free.fr/brico/tutokicad/ZX81_Libs.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[montage Zx81] PCB d'extension.
Salut,
Pour le premier montage, on commence petit.
C'est en effet, le petit bout de circuit imprimé qui permet de relier une carte d'extension à une autre carte… pour y placer le boîtier de la RAM 16k par exemple…
… Et le fichier projet Kicad…
Pour le premier montage, on commence petit.
C'est en effet, le petit bout de circuit imprimé qui permet de relier une carte d'extension à une autre carte… pour y placer le boîtier de la RAM 16k par exemple…
… Et le fichier projet Kicad…
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[RADIOPLANS] Carte Eprom pour ZX81 n428.
Salut,
Montage de Patrick Gueulle, modifié pour tenir sur une carte sur le Bus du Zx81, pour éviter des tonnes de fils…
Radioplan n°428 pages 83 à 87. (Juillet 1983)
Projet Kicad:
http://zx81.ordi5.free.fr/brico/radioplan/EpromZx81.zip
Montage de Patrick Gueulle, modifié pour tenir sur une carte sur le Bus du Zx81, pour éviter des tonnes de fils…
Radioplan n°428 pages 83 à 87. (Juillet 1983)
Projet Kicad:
http://zx81.ordi5.free.fr/brico/radioplan/EpromZx81.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[RADIOPLANS] Carte 20 sorties pour ZX81 n426.
Montage de Patrick Gueulle, non modifié.
Radioplan n°426 pages 23 à 29. (Mai 1983)
Bon, à vrai dire, il n'est pas utile de se prendre la tête avec le schéma avec Kicad.
Si l'on veux fabriquer le PCB dans sa forme originale, il faut refaire un tuto !
Donc, un dessin de PCB vous est donné.
Sur Kicad, le PCB "B.Cu" (face cuivre) est en vue traversante, en transparence.
[B.Cu]= Back copper (face cuivre) et [F.Cu]= Front copper (face composants par défaut).
Ce qui est illogique car la norme veux que le typon soit vu côté arrière, donc retourné par rapport à la face composants.
Donc, sur kicad, la vue arrière doit être retournée en symétrie horizontale(le haut se trouve en bas) avec un logiciel de dessin.
Recadrez le typon au plus juste, au niveau des repères de coupe de la plaque époxy, cela permutera de d'avoir une idée de la dimension d'origine… quite à faire des marques à chaque coin.
Pour numériser la face cuivre, nous allons utiliser le logiciel de vectorisation d'image bitmap (l'icône "a" avec les cotations dans la fenêtre de projet).
Donc on prend l'image du pcb à realiser, on note sa valeur de résolution en DPI, on effectue une symétrie selon l'axe des X, puis on applique une inversion de l'image dans la fenêtre.
Puis on sauvegarde en Kicad_mod.
On ouvre PCBnews, puis le gestionnaire d'empreintes ("Editeur d'empreintes") et on importe le fichier dans "Fichier/files" de l'éditeur.
On le sauvegarde dans une librairie… la première pour éviter de chercher trop loin.
On retourne sur PCBnew, et on insert le "Logo" que l'on vient de créer.
On vérifie la dimension , l'hortométrie horizontale et verticale… pour voir si les yeux sont en face des trous.
Dans le cas où il y a une différence, il faut revenir dans le programme de vectorisation est taper au pif sur les DPI avec un poil de DPI en plus ou en moins… puis recharger l'empreinte… puis revérifier.
Trois ou quatre essais peuvent être utiles… mais avec du bol, c'est moins.
Bon, la couche est en "F.Silks" (sérigraphie de face) est pas en "B.Cu" ! (cuivre arrière)
Donc, c'est nul ton truc… !
Pas de panique, on ouvre le fichier ".kicad_mod" avec un éditeur texte…
Puis on remplace les "F.Silks" (sérigraphie) par des "B.Cu" (back copper face)…
Et le tour est joué.
On rechage le "Logo" sensé être une sérigraphie, et Ho! il est sur la face cuivre.
On pose les pins un à un…
Voilà, c'est fait.
Résultat:
Et le projet en téléchargement:
http://zx81.ordi5.free.fr/brico/radiopl ... _Kicad.zip
Pour le coût de fabrication, les prix sont très variables.
De 3 euros le PCB (par 10, ça divise le prix par dix et le prix est le même soit 30€ la commande) à 40 euros le PCB aux US (x10 donc 400€ la commande).
Devis ici: https://pcbshopper.com/
Mais sincèrement, les PCB chinois sont de très bonne facture pour des réalisations en composants discrets et de l'ordre du millimètre, on ne fabrique pas une fusée.
Radioplan n°426 pages 23 à 29. (Mai 1983)
Bon, à vrai dire, il n'est pas utile de se prendre la tête avec le schéma avec Kicad.
Si l'on veux fabriquer le PCB dans sa forme originale, il faut refaire un tuto !
Donc, un dessin de PCB vous est donné.
Sur Kicad, le PCB "B.Cu" (face cuivre) est en vue traversante, en transparence.
[B.Cu]= Back copper (face cuivre) et [F.Cu]= Front copper (face composants par défaut).
Ce qui est illogique car la norme veux que le typon soit vu côté arrière, donc retourné par rapport à la face composants.
Donc, sur kicad, la vue arrière doit être retournée en symétrie horizontale(le haut se trouve en bas) avec un logiciel de dessin.
Recadrez le typon au plus juste, au niveau des repères de coupe de la plaque époxy, cela permutera de d'avoir une idée de la dimension d'origine… quite à faire des marques à chaque coin.
Pour numériser la face cuivre, nous allons utiliser le logiciel de vectorisation d'image bitmap (l'icône "a" avec les cotations dans la fenêtre de projet).
Donc on prend l'image du pcb à realiser, on note sa valeur de résolution en DPI, on effectue une symétrie selon l'axe des X, puis on applique une inversion de l'image dans la fenêtre.
Puis on sauvegarde en Kicad_mod.
On ouvre PCBnews, puis le gestionnaire d'empreintes ("Editeur d'empreintes") et on importe le fichier dans "Fichier/files" de l'éditeur.
On le sauvegarde dans une librairie… la première pour éviter de chercher trop loin.
On retourne sur PCBnew, et on insert le "Logo" que l'on vient de créer.
On vérifie la dimension , l'hortométrie horizontale et verticale… pour voir si les yeux sont en face des trous.
Dans le cas où il y a une différence, il faut revenir dans le programme de vectorisation est taper au pif sur les DPI avec un poil de DPI en plus ou en moins… puis recharger l'empreinte… puis revérifier.
Trois ou quatre essais peuvent être utiles… mais avec du bol, c'est moins.
Bon, la couche est en "F.Silks" (sérigraphie de face) est pas en "B.Cu" ! (cuivre arrière)
Donc, c'est nul ton truc… !
Pas de panique, on ouvre le fichier ".kicad_mod" avec un éditeur texte…
Puis on remplace les "F.Silks" (sérigraphie) par des "B.Cu" (back copper face)…
Et le tour est joué.
On rechage le "Logo" sensé être une sérigraphie, et Ho! il est sur la face cuivre.
On pose les pins un à un…
Voilà, c'est fait.
Résultat:
Et le projet en téléchargement:
http://zx81.ordi5.free.fr/brico/radiopl ... _Kicad.zip
Pour le coût de fabrication, les prix sont très variables.
De 3 euros le PCB (par 10, ça divise le prix par dix et le prix est le même soit 30€ la commande) à 40 euros le PCB aux US (x10 donc 400€ la commande).
Devis ici: https://pcbshopper.com/
Mais sincèrement, les PCB chinois sont de très bonne facture pour des réalisations en composants discrets et de l'ordre du millimètre, on ne fabrique pas une fusée.
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[RadioPlans] Afficheur 32 caractères.
Salut,
Autre illustration d'une digitalisation de typon: Afficheur 32 caractères pour ZX81.
De Patrick Gueulle, numéro 428 pages 47 à 55.
Fichiers Kicad: http://zx81.ordi5.free.fr/brico/radioplan/Afficheur.zip
Autre illustration d'une digitalisation de typon: Afficheur 32 caractères pour ZX81.
De Patrick Gueulle, numéro 428 pages 47 à 55.
Fichiers Kicad: http://zx81.ordi5.free.fr/brico/radioplan/Afficheur.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[RadioPlans] Carte son Ay-3-8910.
Salut,
Montage "Carte son Ay-3-8910" de Patrick Gueulle, modifié pour tenir sur une carte sur le Bus du Zx81, pour éviter les fils volants…
But non avoué par le créateur: les circuits double-faces sont difficiles à réaliser (pour les lecteurs).
Radioplan n°425 pages 43 à 52. (Juillet 1983)
Erratum dans le n°433, page 57-58.
http://zx81.ordi5.free.fr/brico/radiopl ... _Board.zip
Montage "Carte son Ay-3-8910" de Patrick Gueulle, modifié pour tenir sur une carte sur le Bus du Zx81, pour éviter les fils volants…
But non avoué par le créateur: les circuits double-faces sont difficiles à réaliser (pour les lecteurs).
Radioplan n°425 pages 43 à 52. (Juillet 1983)
Erratum dans le n°433, page 57-58.
http://zx81.ordi5.free.fr/brico/radiopl ... _Board.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[RadioPlans] Carte son Ay-3-8910.
Salut,
Même chose mais plus original.
Face composants: Face cuivre: http://zx81.ordi5.free.fr/brico/radiopl ... AY8910.zip
Même chose mais plus original.
Face composants: Face cuivre: http://zx81.ordi5.free.fr/brico/radiopl ... AY8910.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[RadioPlans] Afficheur 16x2 pour Zx81.
Salut,
Projet dérivé de l'afficheur 32 caractères, mais avec un afficheur disponible (en 2x16 caractères).
Version sur BUS d'extension.
De Patrick Gueulle, numéro 428 pages 47 à 55.(Modifications XavSnap)
Projet Kicad: http://zx81.ordi5.free.fr/brico/radiopl ... _Board.zip
Projet dérivé de l'afficheur 32 caractères, mais avec un afficheur disponible (en 2x16 caractères).
Version sur BUS d'extension.
De Patrick Gueulle, numéro 428 pages 47 à 55.(Modifications XavSnap)
Projet Kicad: http://zx81.ordi5.free.fr/brico/radiopl ... _Board.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
[Radio Plans] Carte Z80 compatible ZX81.
Salut,
Nouveau message, nouvelle réalisation.
Une carte automate à base de Z80 de Patrick Gueulle, Dans Le "Radio Plans" n°427 page 71.
Projet non modifié mono-face et lignes d'adresses en wrapping.
Projet Kicad:
http://zx81.ordi5.free.fr/brico/radioplan/carteZ80.zip
Nouveau message, nouvelle réalisation.
Une carte automate à base de Z80 de Patrick Gueulle, Dans Le "Radio Plans" n°427 page 71.
Projet non modifié mono-face et lignes d'adresses en wrapping.
Projet Kicad:
http://zx81.ordi5.free.fr/brico/radioplan/carteZ80.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/
Re: ZX81 France, les fichiers...
Salut,
Même carte en circuit double-faces, sans les fils de wrapping du montage précédent.
Projet Kicad:
http://zx81.ordi5.free.fr/brico/radiopl ... _board.zip
Même carte en circuit double-faces, sans les fils de wrapping du montage précédent.
Projet Kicad:
http://zx81.ordi5.free.fr/brico/radiopl ... _board.zip
Abandon-Listings [XavSnap]: http://www.hebdogiciel.free.fr, http://abandonlistings.free.fr/ & http://abandon.pcbs.free.fr/