[Thomson MO5] Bug du BASIC 1.0

C'est le lieu des discussions diverses et variées, mais toujours en rapport avec le thème général du forum et dans l'esprit de celui-ci. Contient des rubriques électroniques.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

[Thomson MO5] Bug du BASIC 1.0

Message par Daniel »

Essayez d'exécuter ce programme sur votre MO5 :

Code : Tout sélectionner

10 PSET(0,1)CHR$(31)
20 SCREEN0
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson MO5] Bug du BASIC 1.0

Message par __sam__ »

Ah oui c'est marrant : le clavier est tout perturbé, et si on appuies sur la touche "C" alors l'écran plante définitivement :)
NOTES:
  1. Sur TO7/T9000, c'est uniquement le caractère suivant tapé au clavier qui est perturbé, mais la touche "C" ne fait pas tout planter.
  2. On peut remplacer le PSET par "PRINT CHR$(31);" ca bug pareil. Ce n'est donc pas le LOCATE implicite du PSET qui cause soucis.
Explication (plausible) de ce qu'il se passe.

Le CHR$(31) est le début d'une séquence d'échappement du curseur pour le positionner à une coordonnée donnée. La sequence attendue est $1F(==31), $40+L, $40+C. Or là on envoie juste 31, c'est à dire le début de la séquence sans la fin. Ce sont les deux caractères suivants qui seront interprétés comme lignes et colonne. On fait SCREEN 0, qui se traduit part la séquence $1B,$23,$20,$40. Je pense que le moniteur interprète $1B et $23 comme des coordonnées et place le curseur en colonne $1B-$41==-38, ligne -30.. C'est à dire largement hors de l'écran. Le clignotement du curseur va alors perturber cet emplacement en RAM (probablement dans la page zero du moniteur) et faire passer un flag de l'état 0 à l'état $FF laissant croire au clavier que, par exemple, la touche majuscule-droite est enfoncée d'où les perturbations observées sur le clavier. Il termine alors l'affichage par le reste ($20), ce qui achève d'écraser les données en RAM hors espace écran, puis il avance le curseur d'une place, se rends compte qu'il est hors écran et le repositionne en haut et affiche le $40="@" que l'on finit par voir.

Autre bug possible avec le même principe de placer le curseur hors écran : faire "PRINT CHR$(31);:PRINT CHR$(27);:PRINT CHR$(35);".. on voit que le moniteur a alors un sacré gros problème (impossible à résoudre, même avec le reinit. prog. du MO5)
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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson MO5] Bug du BASIC 1.0

Message par Daniel »

Bonne explication ! J'avais imaginé quelque chose comme ça sans aller aussi loin dans le raisonnement. Évidemment il n'y a aucune raison d'afficher ce caractère, mais quand on le fait par erreur on perd tout son programme. C'est ce qui m'est arrivé, c'est pourquoi je l'ai signalé.
Je voulais faire PSET(x,y)CHR$(32+J), j'ai fait une faute de frappe : CHR$(30+J) et tout s'est planté avec J=1.
Daniel
L'obstacle augmente mon ardeur.
Répondre