Problème avec Basic 128

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Neelix
Messages : 15
Inscription : 04 nov. 2021 23:16

Re: Problème avec Basic 128

Message par Neelix »

Bien, je réponds moi-même à ma question. Il suffisait de réfléchir un peu.

J'ai chargé le fichier à partir de la disquette sur TO9+ et l'ai simplement sauvegardé sur la cassette.

Encore un grand merci pour toute l'aide apportée.
Xavier_

Re: Problème avec Basic 128

Message par Xavier_ »

Salut à tous,

Il me semble avoir eu cette erreur sur un listing.

L'analyse de l'erreur portait sur la capture de la chaîne de caractère entée.

"Line Input" sur les deux Basics, donne un curseur qui écrit une chaîne de caractère.

Le problème, c'est qu'il prend toute la ligne avec les caractères déjà affichés, après l'appuie de la touche <ENTER> de validation.

En Basic 1 sur TO7/70 (ou séries compatibles), la fin de ligne est déterminée par un certain caractère (?), donc il capture du premier caractère ASCII sous le curseur du début du LINE INPUT, jusqu'au caractère de fin de validation.

En Basic 128 (ou MO), le caractère de fin (retour ligne) n'est pas présent dans la mémoire vidéo, et la chaîne de caractère s'étend aux lignes suivantes.
Par conséquent, la taille de la variable entrée est supérieure à la largeur de l'écran. Et le buffer de cette variable est dépassé.
Je pense que cette fonction n'a pas été prévue pour un certain type de machines aux vues de cette incompatibilité.

Toutefois, il est possible d'utiliser cette fonction sur les autres machines, mais en trichant un peu.

En effet, le basic attend un certain caractère pour finir le remplissement de cette ligne...
Donc, avant de faire appel au "line input", il faut remplir la ligne de caractères de "Fin de capture" (chr$(xx) invisibles), puis lancer le LINE INPUT sur cette même ligne!

Le basic, trouvera ce caractère après la ligne saisie, puis va renvoyer cette chaîne de longueur inférieure à la taille de la ligne écran.
Dans le cas normal et contraire, cette ligne sera égale à la taille du reste de l'écran qui suis cette line d'entrée.

J'avoue ne pas me souvenir du caractère de fin de ligne écran sur To7, car j'ai trouvé une solution plus simple pour contourner ce bug système.

Mais effectivement, cette fonction n'est pas utilisable sur toutes les machines, mais je ne pense pas que la version du Basic y soit pour quelque-chose.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Problème avec Basic 128

Message par Daniel »

Cette subtilité expliquerait bien le problème. J'essaierai de trouver ce fameux caractère de fin de ligne.
Par contre c'est bel et bien un bug du Basic 128 et du Basic 512. En Basic 1.0 le programme fonctionne avec toutes les machines.
Daniel
L'obstacle augmente mon ardeur.
Neelix
Messages : 15
Inscription : 04 nov. 2021 23:16

Re: Problème avec Basic 128

Message par Neelix »

J'ai essayé de remplacer les LINE INPUT par des INPUT, mais ça reviens au même.
Neelix
Messages : 15
Inscription : 04 nov. 2021 23:16

Re: Problème avec Basic 128

Message par Neelix »

Bonsoir,
Je reviens encore à vous pour un autre soucis. En testant le jeu N°5 - Numéroter les lignes de métro, j'obtiens une erreur 8, numéro de ligne inexistant. Or, la ligne existe bel et bien. En fait, lorsque je fais un LIST<N° de ligne>, la ligne ne s'affiche pas, comme si elle n'existait pas, mais en faisant un LIST<N° de ligne>- (avec un moins derrière, les lignes défilent à l'écran et la ligne en question apparaît. (il s'agît de la ligne 16000)

Ma question est: Est-il possible qu'au-delà d'un certain nombre de lignes, Basic 1.0 ne trouve plus les lignes ?
Xavier_

Re: Problème avec Basic 128

Message par Xavier_ »

Salut,

Je te rassure, sur ce Basic, la limitation des lignes n'est pas de 16000...

Par contre, le Zx81, lui est limité à 9999 lignes.

C'est généralement un problème d'encodage du numéro de ligne dans le "header" de compilation Basic.

Là encore, je suis tombé sur ce type de problèmes... et si tu continues tu trouvera aussi une erreur de DATAs dans la zone transitoire des 64k il me semble.

La lecture des lignes étant linéaire et chaînée, le Basic commence de la première ligne à la dernière.

Si rien ne vient corrompre le cycle de sauts de début de ligne, jusqu'à la fin de ligne, le Basic trouvera la dernière ligne.

Cette scrutation de ligne en ligne est lente pour les saut en fin de fichier, c'est pour cela qu'il est recommandé de placer les routines constituées de boucles en début de programme, car il scrute moins de lignes avant de tomber sur la bonne.

L'avantage de ce procédé réside dans le fait que le Basic n'a pas besoin de faire de "table de saut mémoire" pour chaque ligne et donc d'économiser de la mémoire.

Mais, ce scan répétitif rend le ciblage de chaque ligne peu fiable dans le cas d'une corruption structurelle d'une line.

En effet, toute modification erratique d'une ligne peut décaler la scrutation des lignes, et planter cette routine.

La cause est multiple: erreur de lecture, l'erreur de numérotation, token non reconnu en basic ou un POKE détruisant la structure d'une ligne.

Les listing plus ou moins long sont particulièrement sensibles à ces aléas, et cette désorganisation peu corrompre une sauvegarde ultérieure.

Dans ce cas, il faut:
- Vérifier la numérotation parfois erronée issues des listings texte (OCR 1<>lettre "I"...)
- Vérifier les commandes spécifiques non reconnues du Basic 1 vers le Basic 128 ... et vis versa.
- Vérifier la taille des chaines de caractère dans chaque ligne entrée au clavier... quitte à supprimer des espaces redondants.
- Vérifier le format du fichier texte qui peu ajouter des caractères de contrôle, des tokens de fonction inconnus etc...
(cf. les recommandations de Daniel pour les caractères ISO admissibles sur émulateur.)

En cas de problèmes, effectuer l'import des lignes par approximation (moitié de listing), puis un goto en dernière ligne.
Si cela fonctionne, on ajout quelques lignes...
Si on constate un problème, il faudra méticuleusement vérifier les dernières lignes ajoutées, car celle-ci présenteront au moins un problème sous la forme d'une erreur syntaxique ou de numérotation.

Un listing en mode texte est relativement traitre, car en simulation par le clavier, le numéro de ligne n'est pas vérifié...

Donc,
100 PRINT
200 PRINT
30 PRINT
400 PRINT

Donnera :
30 PRINT
100 PRINT
200 PRINT
400 PRINT

Ce qui déplacera la ligne Basic, provoquera des problèmes de variables et de saut de lignes.

Le problème d'incompatibilité entre ces différents Basics est réel, mais il faut savoir qu'avec ces Basics, même si leurs structures de base sont identiques, ils sont toutefois optimisés pour les machines sur lesquelles ils ont été prévu.

Il est donc, peu courant qu'un code Basic optimisé sur un machine puisse fonctionner sur une autre... à fortiori si ces Basics sont différents.
Il faudra donc "adapter" ce code en utilisant d'autres routines, plus adaptées au Basic utilisé.

Chacun sait que le "Basic Standard" n'existe pas... même si à l'époque, ce langage de programmation était donné comme "Universel".
Dernière modification par Xavier_ le 07 nov. 2021 23:58, modifié 1 fois.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Problème avec Basic 128

Message par __sam__ »

La structure du fichier *.BAS sur la K7 est corrompue car "LIST 16000-" affiche des numéro de lignes avant 16000:
dcmoto03.png
dcmoto03.png (5.86 Kio) Consulté 1765 fois
En principe dans le listing en 16000 on devrait trouver ceci:

Code : Tout sélectionner

16000 DATA VINCENNES/NEUILLY,"1", NATION/DAUPHINE,"2", BAGNOLET/LEVALLOIS ,"3" ,PORTE DES LILAS/GAMBETTA,"3B",PORTE DE CLIGNANCOURT/PORTE D’'ORLEANS ,"4",EGLISE DE PANTIN/PLACE D'ITALIE, "5",NATION/ETOILE,"6" ,AUBERVILLIERS/MAIRIE D'IVRY,"7"
qui ne correspond pas et fait pas loin de 255 charactères (à vue de nez).

Quant à l'OCR, il lit les 0 comme des 9. Je ne sais pas comment le code a été saisie, mais si c'est avec l'OCR du source PDF, il doit être totalement buggé.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neelix
Messages : 15
Inscription : 04 nov. 2021 23:16

Re: Problème avec Basic 128

Message par Neelix »

J'ai saisi le code moi-même sur l'émulateur. Du coup, les seuls bugs qu'il y a viennent du bonhomme. :roll:

Pour mon problème de lignes, j'ai eu l'idée de supprimer la ligne 17746, qui ne fait pas partie du programme,
du coup mon programme fonctionne et je n'ai plus de problème pour afficher le listing.

Je pense que l'origine du problème se situe à la création de la cassette TO, aux fins d'essais.
Mon procédé n'est peut-être pas correct ?

Xavier, je reviens à mon LINE INPUT, le caractère de fin de ligne n'est-il pas CHR$(0) ?
Par contre, je ne sais pas comment l'insérer.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Problème avec Basic 128

Message par Daniel »

J'ai fait plusieurs essais avec LINE INPUT en BASIC 128.
Dans le programme "PARIS", le curseur est à la ligne 24 (la dernière ligne de l'écran).
- Si on met le LINE INPUT en ligne 23, il fonctionne bien
- Si on initialise la ligne 24 avec des "Espaces" avant de faire le LINE INPUT, il fonctionne bien

J'ai utilisé la deuxième méthode pour corriger le programme, il fonctionne aussi bien en BASIC 128, BASIC 512 ou BASIC 1.0.
Merci à Xavier de nous avoir mis sur la bonne voie !

Code : Tout sélectionner

2 'PARIS par
3 'Jean MONTIBUS
10 CLS:CLEAR,,1:DEF GR$(0)=24,12,6,255,255,6,12,24:SCREEN 2,0,0:LOCATE 0,0,0
20 PSET(150,7),7:RESTORE 1000
25 READ X,Y:IF X=0 THEN 30 ELSE LINE-(X+50,Y),7:GOTO 25
30 RESTORE 4000
35 READ X,Y,Z:IF X=0 THEN 40 ELSE BOXF(Y+50,X)-(Z+50,X),2:GOTO 35
40 RESTORE 3000
45 FOR I=1 TO 42:READ N$,X,Y,Z:BOXF(X+50,Y)-(X+51,Y+1),1:BEEP:NEXT I
50 A$="PARIS":ATTRB 1,1:FOR I=1 TO 5:LOCATE 2+I*6,22:COLOR 5:PRINT MID$(A$,I,1):NEXT I:ATTRB 0,0:LOCATE 0,23,0:COLOR 3,0:PRINT "J.M"
55 PLAY "T9O4L16DOFALAO5L32DOO4L16FAL96LAL16DOFASOL32LAL16SIbL96SOL16SOLASIbO5DOO4SIbLASOFASOL48LA"
60 PLAY "L16REMIFASOFAMIREDO#REL48SO"
65 PLAY "T9O4L16DOFALAO5L32DOO4L16FAL96LAL16DOFASOL32LAL16SIbLASOFASOL48LA"
70 PLAY "L16SOLASIbL32LAL16SOL48FAT5PPP"
90 GOSUB 600
100 ' CHOIX
105 CLS:CLEAR,,60:DIM N1(58):DEFGR$(0)=24,12,6,255,255,6,12,24:GOSUB 20000:SCREEN 2,0,0:ATTRB 0,1:LOCATE 4,3:PRINT "CHOISI.."
110 ATTRB 0,0:LOCATE 2,8:PRINT "1. Nommer un lieu celebre"
115 LOCATE 2,10:PRINT "2. Placer un lieu celebre"
120 LOCATE 2,12:PRINT "3. Identifier un arrondissement"
125 LOCATE 2,14:PRINT "4. Associer lieu et arrondissement"
130 LOCATE 2,16:PRINT "5. Numeroter les lignes de METRO"
135 LOCATE 2,18:PRINT "6. Tracer les lignes de METRO"
140 LOCATE 2,20:PRINT "7. Retrouver la bonne gare"
145 LOCATE 2,22:PRINT "8. Nommer les portes"
150 A$=INPUT$(1):CHOIX=VAL(A$):IF VAL(A$)>8 THEN BEEP:GOTO 150
160 ON CHOIX GOSUB 2000,2100,2200,2300,2400,2500,2600,2800
300 GOSUB 600
310 COLOR 2,0:ATTRB 0,1:LOCATE 13,5:PRINT "DESIRES-TU.?"
320 COLOR 1:LOCATE11,9:ATTRB 1,1:PRINT "A";:ATTRB 0,0:COLOR 2:PRINT;"RRETER..?"
330 COLOR 1:LOCATE 11,13,0:ATTRB 1,1:PRINT "R";:ATTRB 0,0:COLOR 2:PRINT;"ECOMMENCER..?"
340 B$=INKEY$
350 IF B$="A" THEN CONSOLE 0,24:CLS:PRINT "AU REVOIR !":END
360 IF B$="R" THEN CLS:GOTO 100
370 GOTO 340
400 BOXF(0,0)-(27,21)" ",,7:RETURN
405 BOXF(29,0)-(39,3)" ",,1:RETURN
410 BOXF(29,4)-(39,21)" ",,6:RETURN
420 CONSOLE 0,24:FOR T=1 TO 800:NEXT T:RETURN
430 LOCATE 32,3:ATTRB 1,1:COLOR 2,0:PRINT GR$(7):LOCATE 6,3:COLOR 1,0:PRINT GR$(7):BOX(247,9)-(315,36),7:ATTRB 0,0:RETURN
460 BEEP:LOCATE 4,22:PRINT " IL ME FAUT PUS DE LUMIERE":FOR T=1 TO 700:NEXT T:LOCATE 0,22:PRINT "RECOMMENCE AVEC":FOR T=1 TO 400:NEXT T
475 RESUME 2530
500 RESTORE 1000
510 PSET(100,7),C
520 READ X,Y:IF X=0 THEN 530 ELSE LINE-(X,Y),C:GOTO 520
530 RETURN
550 RESTORE 4000
560 READ X,Y,Z:IF X=0 THEN 570 ELSE BOXF(Y,X)-(Z,X),2:GOTO 560
570 RETURN
600 'HASARD
610 PLAY "L10SILASODO":COLOR 1,3:ATTRB 1,1:LOCATE 37,22,0:PRINT GR$(0):COLOR,0:ATTRB 0,0
615 IF INKEY$<>"" THEN 615
620 PP=RND:IF PTRIG THEN INPEN ZD,ZE:IF ZD<0 OR ZE<0 THEN 620 ELSE 650
623 A$=INKEY$
630 IF A$<>"" THEN 650
640 GOTO 620
650 CLS:RETURN
1000 'CONTOUR
1010 DATA 100,7,76,18,53,33,47,40,44,50,24,84,20,90,11,110,12,120,20,127,30,127,38,125,70,143,100,150,120,160,130,162,140,155,150,163,172,154,200,134,214,121,215,121,217,100,214,55,206,44,195,35,192,18,185,10,180,7,100,7,0,0
1500 C=4 'SEINE
1520 LINE(26,128)-(45,100),C:LINE-(66,76),C:LINE-(76,73),C:LINE-(98,73),C:LINE-(150,95),C:LINE-(150,98),C:LINE-(190,142),C
1530 LINE(187,143)-(148,100),C:LINE-(126,90),C:LINE-(123,85),C:LINE-(98,76),C:LINE-(72,76),C:LINE-(67,80),C:LINE-(60,85),C:LINE-(60,90),C:LINE-(30,126),C
1540 LINE(127,87)-(135,91),C:LINE-(137,93),C:LINE-(127,87),C
1560 LINE(141,93)-(147,97),C:RETURN
1900 AL=0
1910 FOR J=1 TO W-1
1920 IF N1(W)=N1(J) THEN AL=1
1930 NEXT J
1940 N1=N1(W)
1950 RETURN
2000 GOSUB 600:GOSUB 400:GOSUB 500:GOSUB 1500:GOSUB 550
2005 CONSOLE 24,24:BOXF(0,23)-(39,23)" ",,3:BOXF(0,24)-(39,24)" ",,1
2010 FOR W=1 TO 10:RESTORE 3000
2011 N1(W)=INT(RND*40)+1:GOSUB 1900:IF AL=1 THEN 2011
2012 GOSUB 2015:NEXT W:GOSUB 7000:GOSUB 420
2013 RETURN
2015 FOR U=1 TO N1:READ N$,X,Y,Z:NEXT U:BOXF(X,Y)-(X+2,Y+2),0:COLOR 0,3:LOCATE 11,23:PRINT "ECRIS LE NOM DU LIEU"
2020 COLOR,1
2025 IF K=1 THEN K=0:BOXF(X,Y)-(X+2,Y+2),-8:RETURN
2030 LOCATE 1,24,0:PRINT STRING$(39,32);:LOCATE 1,24:E=1:GOSUB 2050
2035 IF K=1 THEN 2020 ELSE E=2:LOCATE 1,24:PRINT "AIDE:";LEFT$(N$,2);".";:GOSUB 2050:IF K=1 THEN 2020
2040 LOCATE 1,24:PRINT STRING$(39,32);:LOCATE 1,24:PRINT "REPONSE:";N$;:PLAY"O3DODO":LINE INPUT "(ENTREE)";XX$:BOXF(X,Y)-(X+2,Y+2),-8:RETURN
2050 PRINT"ESSAI";E;" :";:PLAY "O4L24MI":LINE INPUT R$:IF R$=N$ THEN PLAY "O4L12RESO":LOCATE 1,24:PRINT "EXACT";:LINE INPUT "(entree)";XX$:K=1:JU=JU+1:ATTRB 1,1:ON JU GOSUB 9000,9010,9020,9030,9040,9050,9060,9070,9080,9090:ATTRB 0,0:RETURN
2060 RETURN
2100 GOSUB 600:GOSUB 400:BOXF(0,23)-(39,24)"",2:C=2:GOSUB 500:GOSUB 1520
2110 CONSOLE 23,24:ATTRB 0,1:COLOR 2,0:LOCATE 31,4:PRINT "BRAVO!":COLOR 3,0:LOCATE 30,11:PRINT"PASSABLE":COLOR1,0:LOCATE 31,18:PRINT "ERREUR":ATTRB 0,0
2120 FOR W=1 TO 10:N1=INT(RND*41)+1:RESTORE 3000
2122 LOCATE 4,22:COLOR 0,3:PRINT " AVEC LE CRAYON PLACE LE LIEU "
2125 FOR J=1 TO N1:READ N$,X,Y,Z:NEXT J:PLAY "O4L12DOMI":LOCATE 8,23:COLOR 4,2:PRINT N$
2127 ON ERROR GOTO 460
2130 INPUT PEN C1,L1
2132 BOXF(C1,L1)-(C1+1,L1+1),4:FOR T=1 TO 400:NEXT T
2135 FOR ABS(X-C1)<6 AND ABS(Y-L1)<13 THEN G=1:GOTO 2150
2140 IF ABS(X-C1)>13 OR ABS(Y-L1)>13 THEN G=2:GOTO 2150
2145 G=3
2150 ON G GOSUB 5200,5300,5400
2155 BOXF(C1,L1)-(C1+1,L1+1),-8:C=2:GOSUB 500:GOSUB 1520
2157 LOCATE 4,23:COLOR,2:PRINT " "
2160 NEXT W:GOSUB 420
2165 RETURN
2200 GOSUB 600:GOSUB 400:GOSUB 500:GOSUB 1500:GOSUB 10000
2205 CONSOLE 23,24:SCREEN 7,1,0
2210 FOR W=1 TO 10:RESTORE 11000
2212 N1(W)+INT(RND*19)+1:GOSUB 1900:IF AL=1 THEN 2212
2215 GOSUB 2230:NEXT W
2220 GOSUB 7000:GOSUB 420:RETURN
2230 FOR U=1 TO N1:READ N$,X,Y,Z:NEXT U:BOXF(X,Y)-(X+2,Y+2),0:FOR T=1 TO 20:PLAY "L5SO": NEXT T
2240 COLOR 2,0:LOCATE 1,22:PRINT "ENTRE LE NUMERO DE L'ARRONDISSEMENT":COLOR 0,1:LOCATE 4,23:PRINT N$:LOCATE 4,24:INPUT RR
2245 IF RR=Z THEN GOSUB 5000 ELSE GOSUB 6000
2250 BOXF(X,Y)-(X+2,Y+2),-8
2260 RETURN
2300 GOSUB 600:GOSUB 400:GOSUB 500:GOSUB 1500
2305 CONSOLE 23,24:SCREEN 7,1,0
2310 FOR W=1 TO 10:RESTORE 3000
2312 N1(W)=INT(RND*41)+1:GOSUB 1900:IF AL=1 THEN 2312
2315 GOSUB 2330:NEXT W:GOSUB 7000:GOSUB 420
2320 RETURN
2330 FOR U=1 TO N1:READ N$,X,Y,Z:NEXT U:PLAY "L12FARE"
2340 LOCATE 2,22,0:COLOR 2,0:PRINT "DANS QUEL ARRONDISSEMENT SE TROUVE : ":COLOR 0,1:LOCATE 2,24,0:PRINT N$:BOXF(X,Y)-(X+2,Y+2),0:LOCATE 2,24:INPUT RR
2345 IF RR=Z THEN GOSUB 5000 ELSE GOSUB 6000
2350 IF W=10 THEN 2390
2360 GOSUB 400:GOSUB 500:GOSUB 1500
2390 RETURN
2400 GOSUB 600:GOSUB 400:GOSUB 500:GOSUB 1500
2405 CONSOLE 23,24:BOXF(0,23)-(39,24)" ",,5
2410 FOR W=1 TO 10:GOSUB 8050:RESTORE 16000
2415 N1(W)=INT(RND*17)+1:GOSUB 1900:IF AL=1 THEN 2415
2417 FOR I=1 TO N1: READ N$,NN$:NEXT I
2420 C=5:ON N1 GOSUB 15010,15020,15030,15040,15050,15060,15070,15080,15090,15100,15110,15120,15130,15140,15150,15160,15170,15180
2425 LOCATE 4,22:COLOR 2,0:PRINT "QUEL EST LE NUMERO DE CETTE LIGNE":LOCATE 4,23:COLOR 0,5:PRINT N$:INPUT R$:IF R$=NN$ THEN PLAY "O4L12DOFA":LOCATE 4,24,0:PRINT "EXACT":JU=JU+1:ATTRB 1,1:ON JU GOSUB 9090,9080,9070,9060,9050,9040,9030,9020,9010,9000:ATTRB 
2430 PLAY "L10FADO":LOCATE 4,24,0:COLOR 4,5:PRINT "ERREUR! REPONSE : LIGNE ";NN$
2450 FOR T=A TO 1000:NEXT T:BOXF(0,23)-(39,24)" ",,5:GOSUB 400:C=0:GOSUB 500:GOSUB 1500
2460 NEXT W:GOSUB 7000:GOSUB 420
2470 RETURN
2500 CLS:GOSUB 400:CONSOLE 23,24
2502 C=2:GOSUB 500:GOSUB 1520:BOXF(0,23)-(39,24)" ",,5:BOXF(28,0)-(39,21)" ",,0
2505 LOCATE 0,22,0:COLOR 2,0:PRINT " CHOISIS UN NOMBRE (de 1 a 18) ":COLOR 0,5:INPUT R:IF R<0 OR R>18 THEN BEEP:LOCATE 4,22:PRINT "AS-TU BIEN LU ? ":FOR T=1 TO 600:NEXT T:GOTO 2505
2510 C=5:ON R GOSUB 15010,15020,15030,15040,15050,15060,15070,15080,15090,15100,15110,15120,15130,15140,15150,15160,15170,15180
2514 COLOR,0:LOCATE 0,22:PRINT " "
2515 RESTORE 16000:FOR I=1 TO R:READ N$,NN$:NEXT I:LOCATE 0,22:COLOR 2,0:PRINT "VOICI LA LIGNE":LOCATE 16,22:COLOR 1: PRINT NN$:LOCATE 19,22:COLOR 2:PRINT " OBSERVE SA TRACE ":COLOR 4,5:LOCATE 2,23,0:PRINT N$
2520 GOSUB 600:GOSUB 400:C=2:GOSUB 500:GOSUB 1520:GOSUB 8600
2525 COLOR 3,0:LOCATE 0,22:PRINT " MAINTENANT, REPRODUIS SA TRACE ":ON ERROR GOTO 470
2530 INPUTPEN X1%,Y1%:IF X1%<0 OR Y1%<0 THEN BEEP:GOTO 2530
2532 IF X1%>248 AND Y1%<72 THEN GOSUB 8700:GOSUB 8800:GOTO 2590
2534 IF X1%>248 AND Y!%>124 THEN GOSUB 8800:GOSUB 600:GOSUB 400:GOSUB 8600:GOTO 2502
2536 PSET(X1%,Y1%),4
2538 INPEN X1,Y1:IF X1<0 OR Y1<0 THEN 2530
2542 X1%=(X1%+X1)/2
2544 Y1%=(Y1%+Y1)/2
2546 LINE-(X1%,Y1%),4
2548 GOTO 2538
2590 GOSUB 420
2595 RETURN
2600 GOSUB 600:GOSUB 400:GOSUB 405:GOSUB 410:GOSUB 500:GOSUB 1500:GOSUB 12500:BOXF(0,23)-(39,24)" ",,2
2610 RESTORE 3050:FOR J=1 TO 6:READ N$,X,Y,Z:BOXF(X,Y)-(X+3,Y+3),0:COLOR 4,7:LOCATE (X/8-1),(Y/8-1):PRINT J:NEXT J:GOSUB 8000:CONSOLE 23,24
2615 FOR W=1 TO 10:PLAY "O4L10DODOMI":RESTORE 18000
2616 N1(W)=INT(RND*56)+1:GOSUB 1900:IF AL=1 THEN 2616
2617 FOR I=1 TO N1:READ N$,U:NEXT I
2620 COLOR 2,0:LOCATE 0,22:PRINT "A QUELLE GARE ARRIVENT LES VOYAGEURS DE":COLOR 0,2:LOCATE 4,23:PRINT N$:LOCATE 15,23:A$=INPUT$(1)
2625 IF VAL(A$)=U THEN RU=1 ELSE RU=2
2627 COLOR 2,0:LOCATE 0,22:PRINT "A QUELLE GARE ARRIVENT LES VOYAGEURS DE":COLOR 0,2:LOCATE 4,23:PRINT N$:LOCATE 15,23:A$=INPUT$(1)
2630 REP=REP+1
2635 ON REP GOSUB 8100,8110,8120,8130,8140,8150,8160,8170,8180,8190
2637 BOXF(0,23)-(39,24)" ",,2
2640 NEXT W:GOSUB 420
2650 RETURN
2800 GOSUB 600:C=2
2801 BOXF(0,0)-(28,21)" ",,0:BOXF(0,22)-(39,24)" ",,3:GOSUB 430:GOSUB 500:GOSUB 1500
2805 C=7:GOSUB 2900:C=-1:GOSUB 2900:C=7:GOSUB 2900:CONSOLE 23,24
2810 FOR W=1 TO 10:RESTORE 17000
2815 N1(W)=INT(RND*36)+1:GOSUB 1900:IF AL=1 THEN 2815
2830 FOR I=1 TO N1:READ N$,X,Y:NEXT I:FOR J=1 TO 20:BOXF(X,Y)-(X+1,Y+1),0:BOXF(X,Y)-(X+1,Y+1),1:BEEP:NEXT J
2840 LOCATE 4,22:COLOR 4,3:PRINT "ECRIS LE NOM DE CETTE PORTE":LOCATE 4,23:PRINT N$:LOCATE 15,23,0:INPUT R$
2850 IF R$=NN$ THEN GOSUB 5500 ELSE GOSUB 6500
2860 NEXT W:BOXF(0,22)-(39,24)" ",,0:GOSUB 420
2880 RETURN
2900 RESTORE 17000:FOR I=1 TO 37:READ N$,NN$,X,Y:BOXF(X,Y)-(X+1,Y+1),C:BEEP:NEXT I:RETURN
3000 'LIEUX
3010 DATAMONTMARTRE,127,33,18,ARC DE TRIOMPHE,68,57,8,MAISON DE LA RADIO,45,93,16,PALAIS DE CHAILLOT,58,78,16,TOUR EIFFEL,64,83,7,INVALIDES,88,88,7,PALAIS-BOURBON,95,79,7,MADELEINE,103,63,8,PALAIS DE L'ELYSEE,92,62,8,PLACE DE LA CONCORDE,99,68,8
3020 DATA GRAND PALAIS,88,70,8,PALAIS DU LOUVRE,120,79,1,NOTRE-DAME,136,93,4,CENTRE POMPIDOU,138,78,4,FORUM DES HALLES,130,75,1,HOTEL DE VILLE,138,86,4,OPERA,112,60,9,PERE LACHAISE,190,75,20,BUTTES CHAUMONT,175,37,19,BERCY,175,119,12
3030 DATA LA VILLETTE,181,14,19,PARC MONCEAU,85,44,8,PALAIS DES CONGRES,48,46,17,PLACE DES VOSGES,157,85,4,PANTHEON,130,104,5,JARDIN DES PLANTES,149,111,5,TUILERIES,116,76,1,CHAMP DE MARS,78,94,7,PARC MONTSOURIS,120,144,14,PARC DES PRINCES,15,114,16
3040 DATA PALAIS DU LUXEMBOURG,116,98,6,JARDIN DU LUXEMBOURG,116,112,6,ST-GERMAIN DES PRES,120,93,6,MUSEE D'ORSAY,107,83,7,PALAIS DES SPORTS,55,128,15
3050 DATA GARE DU NORD,139,42,10,GARE DE L'EST,147,50,10,GARE DE LYON,166,108,12,GARE D'AUSTERLITZ,155,113,13,GARE MONTPARNASSE,94,116,15,GARE ST-LAZARE,104,48,8,ROLAND-GARROS,14,95,16
4000 'ESPACES VERTS
4010 ' BUTTES CHAUMONT
4020 DATA 40,176,180,42,174,181,44,172,182,46,171,179,48,171,175,50,173,173
4029 'BOIS DE B.
4030 DATA 47,22,30,49,21,43,51,20,41,53,18,41,55,18,40,57,18,40,59,0,38,61,0,38,63,0,37,65,0,36,67,0,34,69,0,33,71,0,32,73,0,31
4040 DATA 75,0,30,77,0,29,79,0,28,81,0,26,83,0,24,85,0,23,87,0,21,89,0,20,91,0,19,93,0,18,95,2,17,97,8,17,99,15,16
4049 'BOIS DE VINC.
4050 DATA 124,212,223,126,209,223,128,207,223,130,206,223,132,204,223,134,202,223,136,202,223,138,208,223,140,212,223,142,216,223
4059 'PARC MONCEAU
4060 DATA 45,85,86,47,82,87,49,81,86
4069 ' PARC MONTSOURIS
4070 DATA 147,119,123,149,118,124,151,118,125,153,120,126
4079 'J.DES PLANTES
4080 DATA 103,146,146,105,144,148,107,142,150,109,140,147,111,140,143
4089 'J. DU LUXEMBOURG
4090 DATA 100,114,121,102,113,122,104,113,122,106,113,122,108,113,122,110,113,120
4099 'J.DES TUILERIES
4100 DATA 67,105,106,69,104,109,71,102,113,73,106,116,75,110,114,77,113,113
4109 'CHAMPS DE MARS
4110 DATA 85,70,71,87,68,73,89,68,75,91,70,77,93,72,75,94,73,74,0,0,0
5000 PLAY "O4L10DOMI":JU=JU+1:LOCATE 4,24,0:PRINT "EXACT":ATTRB 1,1:ON JU GOSUB 9500,9510,9520,9530,9540,9550,9560,9570,9580,9590:ATTRB 0,0:FOR T=1 TO 600:NEXT T:RETURN
5200 RU=RU+1:PLAY "L10DOLA":ATTRB 0,1:FOR I=1 TO 20:COLOR 1,6:LOCATE 31,4:PRINT "BRAVO!":LOCATE 31,4:COLOR 2,0:PRINT "BRAVO!":BEEP:NEXT I:BOXF(X,Y)-(X+1,Y+1),1:FOR T=1 TO 600:NEXT T:BOXF(X,Y)-(X+1,Y+1),-8:ATTRB 0,0:LOCATE 32,6:PRINT RU:RETURN
5300 D=D+1:PLAY "L10LADO":ATTRB 0,1:FOR I=1 TO 20:COLOR 1,6:LOCATE 31,18:PRINT "ERRUR":LOCATE 31,18:COLOR 1,0:PRINT "ERREUR":BEEP:NEXT I:FOR M=1 TO 20:BOXF(X,Y)-(X+1,Y+1),1:BEEP:FOR T=1 TO 5:NEXT T:BOXF(X,Y)-(X+1,Y+1),-8:NEXT M:ATTRB 0,0:LOCATE 32,20:PRIN
5400 D1=D1+1:PLAY "L10DOMI":ATTRB 0,1:FOR I=1 TO 20:COLOR 1,6:LOCATE 30,11,0:PRINT "PASSABLE":BEEP:NEXT I:BOXF(X,Y)-(X+1,Y+1),1:FOR T=1 TO 600:NEXT T:BOXF(X,Y)-(X+1,Y+1),-8:ATTRB 0,0:LOCATE 32,13:PRINT D1:RETURN
5500 PLAY "O4L10MISO":JU=JU+1
5510 ATTRB 1,1:FOR I=1 TO 25:LOCATE 32,3,0:COLOR 0,0:PRINT GR$(7):COLOR 2,0:LOCATE 32,3,0:PRINT GR$(7):PLAY "L5FA":NEXT I:ATTRB 0,0:BOXF(X,Y)-(X+1,Y+1),7:COLOR 4,3:LOCATE 2,23:PRINT " ":LOCATE 33,20-JU:COLOR 2,0:PRINT GR$(7)
5520 COLOR 4,3:RETURN
6000 PLAY "O4L10MIDO":LOCATE 2,24,0: PRINT " ":LOCATE 4,23,0:PRINT "ERREUR":FOR T=1 TO UNMASKUSR0:NEXT T:LOCATE 2,24:PRINT "REPONSE";Z:FOR T=1 TO 500:NEXT T:LOCATE 2,24,0:PRINT " ":RETURN
6500 PLAY "O4L10MIDO":FAUX=FAUX+1:ATTRB 1,1:FOR I=1 TO 25:LOCATE 36,3,0:COLOR 0,0:PRINT GR$(7):PLAY "L5DO":LOCATE 36,3,0:COLOR 1,0:PRINT GR$(7):NEXT I:ATTRB 0,0:BOXF(X,Y)-(X+1,Y+1),7:LOCATE 37,20-FAUX:COLOR 1,0:PRINT GR$(7)
6540 LOCATE 2,24,0:COLOR 0,3:PRINT "FAUX...REPONSE : ";N$;" ";NN$:FOR T=1 TO 850:NEXT T:LOCATE 2,24:PRINT " ":RETURN
7000 COLOR 0,1:LOCATE 4,23,0:PRINT "Termine : ";JU;" reponses justes":RETURN
8000 COLOR 0,6:LOCATE 31,21:ATTRB 1,1:PRINT GR$(1)+GR$(3)+GR$(5):LOCATE 1,19:PRINT GR$(2)+GR$(4)+GR$(6):ATTRB 0,0
8010 LOCATE 0,1:COLOR 1,7:PRINT "1.Nord":LOCATE 0,2:PRINT "2.Est":LOCATE 0,3:PRINT "3.Lyon":LOCATE 0,19:PRINT "4.Austerlitz":LOCATE 0,20:PRINT "5.Montparnasse":LOCATE 0,21:PRINT "6.St-Lazare":RETURN
8050 COLOR 1,7:LOCATE 0,19:PRINT "A/B/C":LOCATE 0,20:PRINT "1/2/3/3B/4/5/6/7":LOCATE 0,21,0:PRINT "7B,8,9,10,11,12,13":RETURN
8100 CC=31:LL=17:ON RU GOTO 8500,8550
8110 CC=33:LL=16:ON RU GOTO 8500,8550
8120 CC=35:LL=15:ON RU GOTO 8500,8550
8130 CC=37:LL=14:ON RU GOTO 8500,8550
8140 CC=35:LL=12:ON RU GOTO 8500,8550
8150 CC=33:LL=11:ON RU GOTO 8500,8550
8160 CC=31:LL=10:ON RU GOTO 8500,8550
8170 CC=33:LL=8:ON RU GOTO 8500,8550
8180 CC=35:LL=7:ON RU GOTO 8500,8550
8190 CC=37:LL=6:ON RU GOTO 8500,8550
8500 COLOR 0,1:PLAY "O4L12DOMI":LOCATE 31,2,0:ATTRB 0,1:PRINT "BRAVO!"
8510 ATTRB 1,1:COLOR 7,6:LOCATE CC,LL:PRINT GR$(7):ATTRB 0,0:FOR T=1 TO 500:NEXT T
8515 BOXF(29,0)-(39,3)" ",,1
8520 RETURN
8550 COLOR 0,1:PLAY "O4L12MIDO":LOCATE 31,2,0:ATTRB 0,1:PRINT "ERRUR":RESTORE 3050:FOR J=1 TO U:READ NG$,X,Y,Z:NEXT J:FOR I=1 TO 20:BOXF(X,Y)-(X+2,Y+2),6:BEEP:BOXF(X,Y)-(X+2,Y+2),0:NEXT I
8560 COLOR 0,6:PLAY "O4L12MI":LOCATE CC,LL:ATTRB 1,1:PRINT GR$(7):ATTRB 0,0
8565 COLOR 4,2:LOCATE 2,23,0:PRINT "REPONSE : ";NG$:FOR T=1 TO 1000:NEXT T
8575 BOXF(29,0)-(39,3)" ",,1
8580 RETURN
8600 BOXF(248,44)-(296,72),3:BOXF(248,124)-(296,152),3:COLOR 2,0:LOCATE 31,2:PRINT "Fin de":LOCATE 32,4,0:PRINT "JEU":LOCATE 31,12:PRINT "Fin de":LOCATE 31,14,0:PRINT "LIGNE":LOCATE 37,21:COLOR 0:PRINTCHR$(127)+CHR$(127):RETURN
8700 PLAY "L10DODO":BOXF(0,22)-(39,24)" ",,0:BOXF(29,0)-(39,21)" ",,0:RETURN
8800 PLAY "L10MISIDO":COLOR 3,0:LOCATE 0,22:PRINT "COMPARONS D'ABORD AVEC LE BON DESSIN "
8810 C=5:ON R GOSUB 15010,15020,15030,15040,15050,15060,15070,15080,15090,15100,15110,15120,15130,15140,15150,15160,15170,15180:COLOR 2,0:FOR T=1 TO 1000:NEXT T:LOCATE 2,23:COLOR 3,0:PRINT "ES-TU SATISFAIT(E) ?":RETURN
9000 COLOR 4,6:LOCATE 29,20,0:PRINT GR$(8)+GR$(9)+GR$(9)+GR$(9)+GR$(8):RETURN
9010 COLOR 1,6:LOCATE 29,18,0:PRINT GR$(10)+GR$(11)+GR$(12)+GR$(13)+GR$(14):RETURN
9020 COLOR 1,6:LOCATE 29,16,0:PRINT GR$(15)+GR$(16)+GR$(17)+GR$(18)+GR$(19):RETURN
9030 COLOR 1,6:LOCATE 29,14,0:PRINT GR$(20)+GR$(21)+GR$(22)+GR$(23)+GR$(24):RETURN
9040 COLOR 1,6:LOCATE 29,12,0:PRINT GR$(20)+CHR$(127)+CHR$(127)+GR$(25)+GR$(20):RETURN
9050 COLOR 1,6:LOCATE 29,10,0:PRINT GR$(20)+GR$(26)+GR$(27)+GR$(20)+GR$(20):RETURN
9060 COLOR 1,6:LOCATE 29,8,0:PRINT GR$(20)+GR$(28)+GR$(29)+GR$(20)+GR$(20):RETURN
9070 COLOR 3,4:LOCATE 29,6,0:PRINT GR$(30)+GR$(31)+GR$(32)+GR$(33)+GR$(34):RETURN
9080 COLOR 3,4:LOCATE 29,4,0:PRINT GR$(35)+GR$(36)+GR$(37)+GR$(38)+GR$(39):RETURN
9090 FOR I=1 TO 10:COLOR 7,1:LOCATE 29,2,0:PRINT "PARIS":PLAY "L6SI":LOCATE 29,2,0:COLOR 4,1:PRINT "PARIS":NEXT I:RETURN
9500 COLOR 1,0:LOCATE 30,20:PRINT GR$(40)+GR$(41)+GR$(42)+GR$(43):RETURN
9510 COLOR 1,0:LOCATE 30,18:PRINT GR$(44)+GR$(45)+GR$(46)+GR$(47):RETURN
9520 COLOR 1,0:LOCATE 32,16:PRINT GR$(48)+GR$(49):RETURN
9530 COLOR 1,0:LOCATE 32,14:PRINT GR$(50)+GR$(51):RETURN
9540 COLOR 1,0:LOCATE 32,12:PRINT GR$(52)+GR$(53):RETURN
9550 COLOR 1,0:LOCATE 32,10:PRINT GR$(54)+GR$(55):RETURN
9560 COLOR 1,0:LOCATE 32,8:PRINT GR$(56)+GR$(57):RETURN
9570 COLOR 1,0:LOCATE 32,6:PRINT GR$(56)+GR$(57):RETURN
9580 COLOR 1,0:LOCATE 32,4:PRINT GR$(56)+GR$(57):RETURN
9590 FOR I=1 TO 20:COLOR 7,0:LOCATE 32,2:PRINT GR$(58)+GR$(59):COLOR 1,0:LOCATE 32,2:PRINT GR$(58)+GR$(59):PLAY "L5FA"PLAYNEXT I:RETURN
10000 COLOR 0 'ARRONDISSEMENTS
10010 LINE(45,48)-(68,57):LINE-(71,58):LINE-(110,39):LINE-(122,43):LINE-(140,37):LINE-(157,37):LINE-(160,42):LINE-(183,75):LINE-(185,83):LINE-(193,86):LINE-(197,101):LINE-(216,105)
10020 LINE(197,101)-(170,98):LINE-(159,93):LINE-(152,67):LINE-(122,60):LINE-(103,64):LINE-(99,73)
10030 LINE(68,57)-(74,74):LINE-(103,64):LINE-(108,55):LINE-(108,40):LINE-(104,33):LINE-(111,7)
10040 LINE(60,86)-(85,107):LINE-(90,107):LINE-(93,105):LINE-(121,118):LINE-(137,122):LINE-(150,118):LINE-(159,93)
10050 LINE(140,57)-(138,151):LINE-(128,153):LINE-(127,120):LINE-(140,65):LINE-(122,118):LINE-(93,106):LINE-(111,96):LINE-(117,84)
10060 LINE(103,111)-(77,145):LINE-(111,163):LINE-(113,67):LINE-(136,76):LINE-(135,78):LINE-(145,82):LINE-(147,85):LINE-(158,88):LINE-(134,38):LINE-(134,62)
10070 LINE(158,7)-(161,23):LINE-(152,37):LINE-(152,67):LINE-(185,54):LINE-(190,54):LINE-(210,48)
10080 RETURN
11000 'ARR.
11010 DATA LOUVRE,120,75,1,BOURSE,130,66,2,TEMPLE,145,75,3,HOTEL DE VILLE,145,90,4,PANTHEON,135,110,5,LUXEMBOURG,120,100,6,PALAIS BOURBON,90,90,7,ELYSEE,85,60,8,OPERA,120,50,9,ENCLOS ST LAURENT,150,54,10
11020 DATA POPINCOURT,170,80,11,REUILLY,190,120,12,GOBELINS,150,140,13,OBSERVATOIRE,110,130,14,GRENELLE,60,120,15,PASSY,40,80,16,BATIGNOLLES,80,30,17,MONTMARTRE,130,20,18,BUTTES CHAUMONT,180,30,19,MENILMONTANT,200,80,20
12000 'CH.D
17746 'CH.D
12500 LINE(142,42)-(139,0),0:LINE(147,50)-(164,14),0:LINE-(223,12),0:LINE(104,48)-(55,0),0:LINE(155,113)-(192,176),0:LINE(166,108)-(224,164),0:LINE(96,116)-(72,150),0:LINE-(0,170),0:RETURN
15000 'METRO
15010 LINE(220,113)-(194,107),C:LINE-(167,106),C:LINE-(158,90),C:LINE-(110,71),C:LINE-(105,72),C:LINE-(36,41),C:RETURN
15020 LINE(43,58)-(50,60),C:LINE-(67,55),C:LINE-(105,34),C:LINE-(131,37),C:LINE-(158,31),C:LINE-(170,57),C:LINE-(196,95),C:LINE-(193,108),C:RETURN
15030 LINE(55,10)-(68,26),C:LINE-(116,60),C:LINE-(147,70),C:LINE-(155,66),C:LINE-(185,73),C:LINE-(197,67),C:LINE-(220,67),C:RETURN
15040 LINE(197,67)-(198,48),C:RETURN
15050 LINE(105,150)-(118,128),C:LINE-(114,117),C:LINE-(100,114),C:LINE-(115,90),C:LINE-(120,94),C:LINE-(130,90),C:LINE-(130,82),C:LINE-(130,75),C:LINE-(143,62),C:LINE-(148,50),C:LINE-(140,35),C:LINE-(140,21),C:LINE-(135,7),C:RETURN
15060 LINE(210,22)-(165,42),C::LINE-(160,33),C:LINE-(143,41),C:LINE-(153,66),C:LINE-(163,78),C:LINE-(154,96),C:LINE-(157,104),C:LINE-(142,134),C:RETURN
15070 LINE(193,107)-(188,120),C:LINE-(172,117),C:LINE-(135,137),C:LINE-(117,127),C:LINE-(116,118),C:LINE-(108,120),C:LINE-(100,114),C:LINE-(88,113),C:LINE-(70,98),C:LINE-(57,80),C:LINE-(68,55),C:RETURN
15080 LINE(190,0)-(149,51),C:LINE-(130,48),C:LINE-(114,54),C:LINE-(123,81),C:LINE-(133,81),C:LINE-(152,97),C:LINE-(135,117),C:LINE-(141,132),C:LINE-(148,157),C:LINE-(171,147),C:LINE-(180,164),C:RETURN
15090 LINE(158,40)-(177,46),C:LINE-(189,40),C:LINE-(193,43),C:LINE-(187,50),C:LINE-(182,43),C:RETURN
15100 LINE(40,127)-(70,96),C:LINE-(87,82),C:LINE-(101,72),C:LINE-(104,64),C:LINE-(116,60),C:LINE-(120,55),C:LINE-(156,66),C:LINE-(158,90),C:LINE-(182,105),C:LINE-(188,120),C:LINE-(199,125),C:LINE-(195,129),C:LINE-(210,145),C:RETURN
15110 LINE(5,135)-(50,74),C:LINE-(73,72),C:LINE-(80,68),C:LINE-(88,58),C:LINE-(114,53),C:LINE-(155,66),C:LINE-(193,107),C:LINE-(220,93),C:RETURN
15120 LINE(152,112)-(140,111),C:LINE-(132,102),C:LINE-(120,94),C:LINE-(106,96),C:LINE-(88,105),C:LINE-(70,96),C:LINE-(35,103),C:LINE-(5,103),C:LINE(19,103)-(22,98),C:LINE-(38,96),C:LINE-(42,102),C:RETURN
15130 LINE(130,83)-(137,85),C:LINE-(147,70),C:LINE-(152,70),C:LINE-(171,54),C:LINE-(200,48),C:LINE-(214,41),C:RETURN
15140 LINE(50,140)-(88,113),C:LINE-(105,115),C:LINE-(110,110),C:LINE-(100,79),C:LINE-(104,63),C:LINE-(100,50),C:LINE-(121,46),C:LINE-(130,20),C:LINE-(152,20),C:LINE-(152,7),C:RETURN
15150 LINE(70,147)-(104,125),C:LINE-(87,92),C:LINE-(90,60),C:LINE-(90,57),C:LINE-(100,50),C:LINE-(106,33),C:LINE-(103,29),C:LINE-(109,0),C:LINE(103,29)-(70,5),C:RETURN
15160 LINE(0,24)-(68,55),C:LINE-(108,61),C:LINE-(110,69),C:LINE-(127,71),C:LINE-(133,77),C:LINE-(170,103),C:LINE-(183,104),C:LINE-(196,100),C:LINE-(220,106),C:RETURN
15170 LINE(122,160)-(119,128),C:LINE-(138,87),C:LINE-(132,75),C:LINE-(145,28),C:LINE-(145,0),C:RETURN
15180 LINE(23,160)-(35,122),C:LINE-(69,82),C:LINE-(87,79),C:LINE-(128,92),C:LINE-(152,110),C:LINE-(183,160),C:RETURN
16000 VINCENNES/NEUILLY,"1",NATION/DAUPHINE,"2",BAGNOLET/LEVALLOIS,"3",PORTE DES LILAS/GAMBETTA,"3B",PORTE DE CLIGNANCOURT/PORTE D'ORLEANS,"4",EGLISE DE PANTIN/PLACE D'ITALIE,"5",NATION/ETOILE,"6",AUBERVILLIERS/MAIRIE D'IVRY,"7"
16100 DATA LOUIS BLANC/PRE ST GERVAIS,"7B",PLACE BALARD/CRETEIL,"8",PONT DE SEVRES/MONTREUIL,"9",AUSTERLITZ/BOULOGNE,"10",CHATELET/LILAS,"11",MAIRIE D'ISSY/PORTE DE LA CHAPELLE,"12",CHATILLON/G.PERI ou ST-DENIS,"13"
16200 DATA ST-GERMAIN-EN-LAYE/BOISSY ST-LEGER,"A",ROISSY/ROBINSON,"B",VERSAILLES/MASSY,"C"
17000 DATA PORTE,CHAMPERRET,61,31,PORTE D'ASNIERES,75,25,PORTE DE,CLICHY,88,18,PORTE DE,ST-OUEN,109,11,PORTE,PORTE DE,CLIGNANCOURT,130,11,PORTE DE LA,CHAPELLE,148,10,PORTE D',AUBERVILLIERS,165,10,PORTE DE LA,VILLETTE,181,12
17010 DATA PORTE DE,PANTIN,186,26,PORTE DU,PRE ST-GERVAIS,200,46,PORTE DES,LILAS,204,51,PORTE DE,BAGNOLET,208,70,PORTE DE,MONTREUIL,210,90,PORTE DE,VINCENNES,210,102,PORTE DE,ST MANDE,210,108,PORTE,DOREE,206,124
17020 DATA PORTE DE,CHARENTON,197,131,PORTE DE,BERCY,191,135,QUAI D',IVRY,173,147,PORTE D',IVRY,163,152,PORTE D',ITALIE,148,155,PORTE DE,GENTILLY,130,153,PORTE D',ORLEANS,108,150
17040 DATA PORTE DE,CHATILLON,97,144,PORTE DE,VANVES,81,141,PORTE,BRANCION,74,138,PORTE DE,VERSAILLES,59,131,PORTE DE,SEVRES,46,124,QUAI D'ISSY,40,121
17050 DATA PORTE DE,ST-CLOUD,17,120,PORTE,MOLITOR,18,106,PORTE D',AUTEUIL,19,100,PORTE DE,PASSY,30,84,PORTE DE LA,MUETTE,35,74,PORTE,DAUPHINE,40,60,PORTE,MAILLOT,48,48,PORTE DES,TERNES,50,41
18000 DATA BORDEAUX,4,LIMOGES,4,LYON,3,AMIENS,1,LE HAVRE,6,STRASBOURG,2,MEAUX,2,NICE,3,BREST,5,VERDUN,2,GRENOBLE,3,CHATEAUROUX,4,TOULOUSE,4,LE MANS,5,RENNES,5,ROUEN,6,CHERBOURG,6,LILLE,1,CREIL,1,NANTES,5,DIJON,3,REIMS,2,COLMAR,2,ORLEANS,4
18100 DATA TOURS,4,CAEN,6,MARSEILLE,3,BRIVE,4,MONTAUBAN,4,BAYONNE,4,CHARTRES,5,CALAIS,1,METZ,2,NANCY,2,TARBES,4,MACON,3,DUNKERQUE,1,MULHOUSE,2,QUIMPER,5,LAON,1,ANGERS,5,MONTEREAU,3,BESANCON,3,NEVERS,3,POITIERS,4,GRANVILLE,5,MEZIERES,2
18200 DATA BALE,2,COLOGNE,1,VARSOVIE,1,MUNICH,2,ROME,3,MADRID,4,COPENHAGUE,1,BUDAPEST,2,PRAGUE,2,LONDRES,1
20000 DEF GR$(1)=255,255,255,255,127,111,57,16
20010 DEF GR$(2)=0,124,56,56,56,56,127,127
20020 DEF GR$(3)=255,255,255,255,255,97,192,128
20030 DEF GR$(4)=0,1,1,1,97,241,255,255
20040 DEF GR$(5)=229,231,229,252,156,152,249,96
20050 DEF GR$(6)=0,252,36,32,32,32,36,228
20060 DEF GR$(7)=60,126,255,255,255,255,126,60
20070 DEF GR$(8)=129,195,231,126,189,219,231,255
20080 DEF GR$(9)=255,255,255,126,189,219,231,255
20090 DEF GR$(10)=15,15,7,3,1,0,0,0
20100 DEF GR$(11)=224,240,252,255,255,255,127,31
20110 DEF GR$(12)=148,112,49,23,255,255,255,255
20120 DEF GR$(13)=255,255,255,255,254,252,248,224
20130 DEF GR$(14)=128,128,0,0,0,0,0,0
20140 DEF GR$(15)=0,0,127,127,127,63,31,31
20150 DEF GR$(16)=15,15,231,231,227,195,193,193
20160 DEF GR$(17)=252,252,252,248,248,248,248,248
20170 DEF GR$(18)=31,31,31,63,63,63,127,127
20180 DEF GR$(19)=248,240,240,240,224,224,192,192
20190 DEF GR$(20)=0,0,0,0,0,0,0,0
20200 DEF GR$(21)=127,127,127,127,63,63,31,31
20210 DEF GR$(22)=255,255,255,255,254,254,254,252
20220 DEF GR$(23)=128,128,0,0,63,63,63,63
20230 DEF GR$(24)=0,0,0,0,248,248,248,248
20240 DEF GR$(25)=128,192,240,252,255,248,224,192
20250 DEF GR$(26)=0,16,24,60,63,127,127,127
20260 DEF GR$(27)=16,16,16,16,16,208,248,254
20270 DEF GR$(28)=0,0,0,1,3,31,14,0
20280 DEF GR$(29)=0,0,112,240,240,16,16,16
20290 DEF GR$(30)=1,13,31,13,1,0,0,0
20300 DEF GR$(31)=0,96,240,96,0,0,0,0
20310 DEF GR$(32)=8,107,255,107,8,0,0,0
20320 DEF GR$(33)=0,6,143,6,0,0,0,0
20330 DEF GR$(34)=128,176,248,176,128,0,0,0
20340 DEF GR$(35)=0,1,3,3,7,7,7,3
20350 DEF GR$(36)=0,0,128,128,192,192,192,128
20360 DEF GR$(37)=0,8,28,28,62,62,62,28
20370 DEF GR$(38)=0,0,1,1,3,3,3,1
20380 DEF GR$(39)=0,128,192,192,224,224,224,192
20390 DEF GR$(40)=7,7,15,31,63,126,254,254
20400 DEF GR$(41)=128,128,0,0,0,0,0,0
20410 DEF GR$(42)=1,1,0,0,0,0,0,0
20420 DEF GR$(43)=224,224,240,248,252,126,127,127
20430 DEF GR$(44)=0,1,1,0,0,1,1,3
20440 DEF GR$(45)=112,255,255,207,223,255,240,192
20450 DEF GR$(46)=14,255,255,243,251,255,15,3
20460 DEF GR$(47)=0,128,128,0,0,128,128,192
20470 DEF GR$(48)=14,10,14,28,20,60,40,120
20480 DEF GR$(49)=112,80,112,56,40,60,20,30
20490 DEF GR$(50)=11,13,14,11,30,29,11,14
20500 DEF GR$(51)=208,176,112,208,120,184,208,112
20510 DEF GR$(52)=5,6,7,6,5,7,13,14
20520 DEF GR$(53)=160,96,224,96,160,224,176,112
20530 DEF GR$(54)=3,2,3,2,3,2,3,6
20540 DEF GR$(55)=192,64,192,64,192,64,192,96
20550 DEF GR$(56)=1,1,1,1,1,1,1,1
20560 DEF GR$(57)=128,128,128,128,128,128,128,128
20570 DEF GR$(58)=16,34,68,8,145,3,147,73
20580 DEF GR$(59)=8,68,34,16,137,192,201,146
20600 RETURN
Dans dcmoto, il y a une page consacrée aux programmes parus dans Téophile et TEO : http://dcmoto.free.fr/programmes/teo-pr ... index.html
Vous pouvez contribuer en me communiquant les nouveaux programmes saisis (après les avoir soigneusement vérifiés), avec les références de la revue d'origine. Je les ajouterai à cette page.
Daniel
L'obstacle augmente mon ardeur.
Neelix
Messages : 15
Inscription : 04 nov. 2021 23:16

Re: Problème avec Basic 128

Message par Neelix »

Merci à vous deux pour toute l'aide apportée. Je viens tout juste de finir la correction du programme. Il tourne très bien Basic 1.0. J'ai fais à l'instant l'essai en Basic 128 avec les corrections apportées par Daniel. Ca marche.

Du coup, je n'ai plus qu'à corriger quelques petits défauts laissés par l'auteur. :wink:
Xavier_

Re: Problème avec Basic 128

Message par Xavier_ »

Salut,

J'évoquais précédemment le problème sur la lecture des DATAs, déjà pointé sur ce même forum il y a quelques temps...

Sur certains basics, il faut mettre des guillemets, si l'information comporte un espace :
*,"HELLO WORLD",*
Par contre *,HELLO WORLD,* peut poser problème. (vu sur basic EXCEL ou Spectrum)

Et je pense que sans guillemets, tous les caractères ASCII ne sont pas admissibles.

Mais, en cas de problème, il est toujours possible de déplacer la ligne DATA dans le programme, si l'erreur est un problème de pointeur système.
Neelix
Messages : 15
Inscription : 04 nov. 2021 23:16

Re: Problème avec Basic 128

Message par Neelix »

Pour ma part, le problème des DATA ne se pose pas, ni en Basic 1.0, ni en Basic 128 ou 512.

Dans mon programme, ne sont entre guillemets que les chiffres devant être pris comme chaîne de caractères.
Répondre