[Thomson-Basic] Erreur Out of string space.

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

[Thomson-Basic] Erreur Out of string space.

Message par Xavier » 18 oct. 2014 06:29

Salut,

Je suis en cours de débogage d'un programme sur TO7, et je tombe sur une erreur qui me bloque!
erreur "Out of string space"
Programme: "Clinique du Dr. Spounz (1)" de l'Hedbgiciel n° 78-79 pour TO7/MO5. (pas celui de Daniel!)
disquette fd/K7 : http://www.hebdogiciel.fr/hd-roms/thoms ... MO5%5D.zip
Es un problème de machine ? , car j'utilise le TO9 pour la saisie ! (DCMOTO)
nb: C'est peut-être une erreur de frappe...

Merci d'avance.

__sam__
Messages : 5350
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson-Basic] Erreur Out of string space.

Message par __sam__ » 18 oct. 2014 06:51

Le "string space" se défini par l'un des paramètres de la commande CLEAR souvent présente en tête de programme. Quels sont les paramètres du CLEAR dans le programme ?
[EDIT] j'ai téléchargé et découver qu'ils font "CLEAR ,,23" ce qui est une aberration (ils réservent toute le mémoire depuis l'octet 23 jusqu'à la fin de la mémoire). Si je le remplace par "CLEAR 500", alors ca marche.... jusqu'au "Subscript out of range in 370". La ligne correspondante est aussi une aberration issue de l'OCR: on a LEFT$(OBS(13),3), mais au lieu d'avoir OBS(13) on devrait avoir OB$(13). Une fois corrigée on tombe sur un syntax-error en ligne 35060 (un signe '- 'ou '+' manque dans une formule je pense).

Bref, ce prog est buggé à fond à cause de la mauvaise capture par l'OCR.
Samuel.
A500 Vampire V2+ ^8^, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 12881
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson-Basic] Erreur Out of string space.

Message par Daniel » 18 oct. 2014 08:46

Il n'est pas judicieux de saisir les programmes d'Hebdogiciel sur TO9. Ils n'étaient pas écrits pour cette machine, et le TO9 est un peu spécial : pas tout à fait compatible avec le TO7/70 et pas tout à fait compatible avec le TO8. Les Basics sont aussi légèrement différents, en particulier l'instruction CLEAR.

Mon conseil est de tester les programmes d'Hebdogiciel avec les machines pour lesquelles ils ont été écrits, en général MO5 ou TO7/70. Ensuite, quand ils fonctionnent, on peut les porter sur MO6 et TO8/TO8D/TO9+, éventuellement sur TO9 (ce n'est pas le Thomson le plus utilisé).

J'ai saisi beaucoup de listings d'Hebdogiciel (peut-être une vingtaine) et j'ai essayé toutes les techniques possibles, en particulier l'OCR. Avec l'OCR on croit gagner du temps, mais c'est illusoire : les erreurs résiduelles sont très subtiles et ne sautent pas au yeux : le 0 à la place du O, le S à la place du $ ou du 5, le i à la place du ; ou du : ou du j, le R à la place du A, j'en passe et des meilleures. Le BASIC en détecte une partie, mais il en reste toujours et elles sont quasiment invisibles. Le résultat est un programme qui semble tourner, mais plein de bugs. On n'est jamais sûr à 100% du résultat.

Au contraire, si un programmeur Basic confirmé (et grand spécialiste de la machine cible) tape le programme, il ne fait pas ce genre d'erreur. Il peut faire des fautes de frappe, mais elle sont détectées par l'analyseur syntaxique du Basic et faciles à corriger. Au total on gagne du temps. L'idéal est de se faire aider par un autre bon programmeur, l'un lit le programme et l'autre le tape. J'insiste sur "bon programmeur", car avec un débutant c'est pire que l'OCR. Dans les années 80 j'avais la chance d'avoir à la maison un autre programmeur aussi bon que moi :wink:
Modifié en dernier par Daniel le 18 oct. 2014 08:55, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.

Markerror
Messages : 1616
Enregistré le : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [Thomson-Basic] Erreur Out of string space.

Message par Markerror » 18 oct. 2014 08:55

Bonjour,

Je confirme les dires de Daniel : l'OCR pour un listing Basic, c'est une fausse bonne idée. Cela peut à la rigueur servir pour des listings qui ne contiennent que des données hexadécimales en DATA et pour lesquelles il y a un checksum.

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson-Basic] Erreur Out of string space.

Message par Xavier » 18 oct. 2014 09:06

Salut Tout le monde,
Merci pour vos réponses!
A partir de là je peux continuer à faire les correction...
Comme tu peux le remarquer, les scans sont assez clairs:
ImageImage
Mais, je pense que cela faisait parti d'un protection qui n'a pas été retirée du listing.
Il faut donc faire un RUN 25, mais je n'ai pas essayé... et d'ailleurs, je ne sais pas si on peut lancer un programme basic à partir d'une ligne spécifique!

http://download.abandonware.org/magazin ... e%2024.jpg
http://download.abandonware.org/magazin ... e%2005.jpg

Pour la correction, j'utilise une police adaptée, et je fais une correction ligne pas ligne.
Mais, avec des fichiers texte, il est possible de faire les recherches et des copier/coller...
Pas de programmation direct... on n'est plus au moyen âge...
Pas contre, la stimulation (simulation) de touche type ... heu! ... Mess, mais c'est un mauvais exemple, car y a un buffer limité et un problème de machines à machine pour le timing clavier...
Donc, ça "beep" en cas d'erreur dans une ligne, et ça permet de vérifier les erreurs de syntaxe.
Donc, je finis ce programme, et je l'envoie à Daniel, avec "Pole Position".

[EDIT]
Il n'est pas judicieux de saisir les programmes d'Hebdogiciel sur TO9. Ils n'étaient pas écrits pour cette machine, et le TO9 est un peu spécial : pas tout à fait compatible avec le TO7/70 et pas tout à fait compatible avec le TO8. Les Basics sont aussi légèrement différents, en particulier l'instruction CLEAR.
Je ne trouve toujours pas comment installer le lecteur de disquette sur le TO7/70 avec DCMOTO = :mrgreen:
C'est simple avant... mais, j'ai dû louper une mise à jour!
[/EDIT]

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson-Basic] Erreur Out of string space.

Message par Xavier » 18 oct. 2014 11:41

Apparemment,
20 CLEAR ,,23
Réserve 23 caractères chaîne pour TOUTES les variables.
Donc,
A$="salut" donne A$="salut_____________________"
LEN(A$)=23
En cas de débordement "Ouf of string space" !

Bon, très 'caca' pour le programme, car un bon nombre de chaînes sont ajoutée les une au autres.

A$="salut"
B$="tout_le_monde"
A$+B$="salut_____________________tout_le_monde_____________"
Donc, on vire le CLEAR machin truc...

[EDIT]
Non, c'est pas ça... viré mais ça reste à 23 caractères !
[/EDIT]

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson-Basic] Erreur Out of string space.

Message par Xavier » 18 oct. 2014 12:07

Pas simple ce problème...
Le input REP$ en 580 donne une longueur fixe de 23 caractères.
581 PRINTLEN(REP$):END
Le traitement [IF REP$="V" then ...] renvoie un false si REP$="V".
Donc, je suis encore bloqué.

Une erreur de la ROM Basic ? (pourtant il me reste 88k!)
(nota: je suis toujours sur TO9!)
:roll:

Fichier mis à jour avec corrections (même emplacement).

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson-Basic] Erreur Out of string space.

Message par Xavier » 18 oct. 2014 12:40

Pardon d'abuser excessivement de votre temps...
Mais j'ai une question pratique sur le TO9:
Y a t-il moyen de faire un "BREAK" (sur un LIST ou en exécution), sans avoir à passer par le menu de démarrage?
J'utilise "ESC" du clavier à chaque fois sur DCMOTO, mais c'est loin d'être pratique pour déboguer....
:oops:

Avatar du membre
razzmoket
Messages : 90
Enregistré le : 28 juin 2013 07:20
Localisation : Doubs (25 )
Contact :

Re: [Thomson-Basic] Erreur Out of string space.

Message par razzmoket » 18 oct. 2014 12:41

sur le TO9

CLEAR ,,23 reserve la place pour 23 caracteres utilisateur

c'est le 1er parametre pour les chaines ( par defaut c'est 300 octets )

CLEAR 300 reserve 300 octets pour les chaines

Daniel
Messages : 12881
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson-Basic] Erreur Out of string space.

Message par Daniel » 18 oct. 2014 13:46

Xavier a écrit :Y a t-il moyen de faire un "BREAK" (sur un LIST ou en exécution)
Sur tous les Thomson il y a une touche STOP permettant d'arrêter temporairement le LIST. (Emulée par TAB dans dcmoto).
Un programme Basic ou un LIST en cours d'exécution s'arrête par CTRL-C.
En plus de ces fonctions "Thomson", dans dcmoto la touche Pause du PC arrête le processeur 6809.

L'instruction CLEAR a une syntaxe différente en fonction de la machine et du Basic utilisés. Reportez-vous aux différents guides utilisateur.
Daniel
L'obstacle augmente mon ardeur.

Daniel
Messages : 12881
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson-Basic] Erreur Out of string space.

Message par Daniel » 18 oct. 2014 13:56

Xavier a écrit :Je ne trouve toujours pas comment installer le lecteur de disquette sur le TO7/70 avec DCMOTO = :mrgreen:
Prenons par exemple le lecteur 3"1/2 avec un contrôleur CD90-351 :
- Dans les options de dcmoto, sélectionner le contrôleur CD90-351
- Avec la cartouche BASIC 1.0, charger une disquette contenant le DOS 3"1/2 pour TO
- Avec la cartouche BASIC 128 le DOS n'est pas nécessaire, on peut charger une disquette vierge et la formater par DSKINI 0
Dans tous les cas, si on veut écrire sur la disquette, il faut la déprotéger en écriture dans les options.

La démarche est identique avec les autres contrôleurs de disquettes : choisir le contrôleur et utiliser la version correspondante du DOS.
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 5350
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson-Basic] Erreur Out of string space.

Message par __sam__ » 18 oct. 2014 20:50

Xavier a écrit :Apparemment,
20 CLEAR ,,23
Réserve 23 caractères chaîne pour TOUTES les variables.
Donc,
A$="salut" donne A$="salut_____________________"
LEN(A$)=23
c''est bizarre ca. A$="salut": ? len(A3) devrait afficher 5 et pas 23. Si tu vois 23 caractèes c'est pas "salut" mais "salut " (des blancs à la fin), ou pire "salut (chaine non terminée mais contenant des blancs à la fin).
Donc, on vire le CLEAR machin truc...
J'ai fait un clear plus gros ce matin ce qui a aidé à aller plus loin dans le programme.

Après il reste les soucis d'OCR.. et là c'est coton.
Samuel.
A500 Vampire V2+ ^8^, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Markerror
Messages : 1616
Enregistré le : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [Thomson-Basic] Erreur Out of string space.

Message par Markerror » 18 oct. 2014 21:35

Bonsoir,

Je ne sais pas si le Basic du TO9 est identique au MO5, mais CLEAR ,,23 sur cette machine signifie que le système réserve de la mémoire pour 23 caractères redéfinissables. Ca correspond à la commande SYMBOL AFTER sur CPC :mrgreen: .

La taille du buffer réservé pour les chaînes reste celle par défaut, 300 octets.

Dans la logique des choses, il serait plus logique de taper un listing d'abord sur sa machine d'origine pour le débugger. Si cela merdouille sur un autre modèle ensuite, on saura que c'est un problème d'adaptation et pas un bug dans le listing d'origine.
Modifié en dernier par Markerror le 19 oct. 2014 08:13, modifié 1 fois.

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson-Basic] Erreur Out of string space.

Message par Xavier » 19 oct. 2014 00:52

Salut,
J'ai trouvé une cartouche Memo7 "basic.m7" qui m'a permis d'utiliser le TO7, et effectivement :
20 CLEAR ,,23
est obligatoire pour redéfinir les DEFG$(..)

[EDIT]
Shift+TAB
Merci Daniel.
[/EDIT]

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson-Basic] Erreur Out of string space.

Message par Xavier » 19 oct. 2014 01:21

Dans le cas d'un INPUT...
Si le retour chariot est en fin de ligne, la valeur saisie est elle la valeur entrée ...jusqu'en fin de ligne?
Un peu à la manière des ligne en basic entrées en mode édition !
Je vais voir si en plaçant des CHR$(0) sur la même ligne, cela limite la taille de la valeur saisie.

[EDIT]
Ajout de ... pour traiter la variable entrée.
50000 CN=24
50010 CN=CN-1:IFCN=1THENRETURNELSEIF MID$(REP$,CN)=CHR$(127)THENREP$=LEFT$(REP$,CN-1):GOTO50010ELSERETURN
[/EDIT]

Répondre