[Thomson] SDDRIVE

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Carl, Papy.G, fneck

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

Re: [Thomson] SDDRIVE

Message par Daniel »

Oui, c'est une bonne idée. Je n'ai jamais eu la disquette DOS LOGO officielle, mais il est effectivement très facile de la créer avec le Multidos.
Je vais suivre ton conseil et ajouter dès que possible une page spéciale pour le DOS LOGO au site dcmoto.
Je créerai les fichiers .fd et .sd pour MO et pour TO, tu pourras les tester ensuite avec les vraies machines.
Daniel
L'obstacle augmente mon ardeur.
Zebulon
Messages : 672
Inscription : 02 nov. 2020 14:03

Re: [Thomson] SDDRIVE

Message par Zebulon »

D'accord merci beaucoup.
Daniel
Messages : 14036
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

La page DOS LOGO 3"1/2 est en ligne : http://dcmoto.free.fr/programmes/dos-lo ... index.html

La disquette Multidos TO permet aussi de créer le DOS Forth TO 3"1/2, ce que j'ai fait : http://dcmoto.free.fr/programmes/dos-fo ... index.html

02.png
02.png (541 octets) Consulté 1031 fois

Par contre, je n'ai jamais eu la version MO5. Si un collectionneur peut la transférer sur PC je l'ajouterai.
Je ne connais strictement rien au Forth, je laisse les spécialistes découvrir. Normalement le DOS Forth doit permettre de sauver et restaurer des fichiers sur disquette et sur carte SD, mais je ne sais pas comment faire donc c'est vendu "non testé".
(A trop regarder les annonces des vendeurs ebay je finis par parler comme eux :lol: )
Daniel
L'obstacle augmente mon ardeur.
Zebulon
Messages : 672
Inscription : 02 nov. 2020 14:03

Re: [Thomson] SDDRIVE

Message par Zebulon »

Merci Daniel pour la mise à disposition des différentes images.

J'ai effectué des tests sur mon TO7/70 avec la cartouche Memo7 LOGO originale et le premier SDDRIVE que tu m'avais envoyé.

Ca fonctionne mais il semble qu'il y ait un problème entre le DOS LOGO et le SDDRIVE. En fait hier soir quand j'ai créé ma disquette DOS LOGO et testé sur l'émulateur j'ai eu des comportements bizarres. J'ai rencontré le même type de comportement sur le matériel.

Je suis retourné sur émulateur pour tester intensivement et ne pas cramer le matériel et j'ai établi un petit script pour reproduire le problème.

Phase 1 : créer une petite procédure et la sauver sur l'image disque.

Code : Tout sélectionner

? POUR TEST
> EC "TEST
> FIN

? SAUVE "TEST [TEST]
A partie de là on a un fichier TEST.LOG sur l'image disque.

Phase 2 : recharger le fichier TEST et faire le CATALOGUE de l'image disque en alternance.

Code : Tout sélectionner

? RAMENE "TEST

? CATALOGUE

? RAMENE "TEST

? CATALOGUE

etc
Il ne faut pas plus de 2 à 3 itérations pour provoquer un crash ou un dysfonctionnement grave.

J'ai effectué ce même type de "stress-test" avec l'émulateur configuré avec lecteur de disquette et l'image disquette et je n'ai pas réussi à provoquer de crash.

Aussi en configuration SDDRIVE, j'ai effectué des SAUVE et des RAMENE sans jamais utiliser la commande CATALOGUE et je n'ai pas de crash (ou alors il faudrait pousser beaucoup plus d'itérations).

Mon intuition est que c'est la commande CATALOGUE qui pose problème en configuration SDDRIVE. Mais ma méconnaissance de l'architecture ne me permet pas d'aller plus loin.
Daniel
Messages : 14036
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Le DOS LOGO est un peu spécial. Il ne fonctionnait pas avec les premières versions de SDDRIVE. Il se lance depuis la version 2018-09-19 : https://forum.system-cfg.com/viewtopic. ... &start=438

Il doit rester d'autres petites incompatibilités. Grâce à la procédure permettant de reproduire le problème je vais essayer de trouver l'anomalie.
Daniel
L'obstacle augmente mon ardeur.
Zebulon
Messages : 672
Inscription : 02 nov. 2020 14:03

Re: [Thomson] SDDRIVE

Message par Zebulon »

Ah oui en effet c'est sacrement compliqué... Heureusement que l'émulateur est très fidèle et permet de recréer le problème car sinon j'aurais pensé à un souci matériel. Merci pour ton aide.
Daniel
Messages : 14036
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Le problème était subtil, j'ai mis quatre jours pour le trouver, mais j'ai enfin la solution. On pourrait presque en faire un feuilleton, car nous avions déjà abordé le sujet avec Elvis Lives! et La Marque Jaune, mais sans aller jusqu'au bout. Du coup j'ai écrit un petit résumé pour me le rappeler.
==============================================
L'inversion de la FAT avec SDDRIVE
==============================================

Avant l'introduction des disquettes 80 pistes double densité, la FAT occupait un espace inférieur à 128 octets. Avec un pointeur sur le début de la FAT et un déplacement signé sur un octet (de 0 à 127) on pouvait la parcourir entièrement.

Avec les disquettes 3"1/2 la limite de 128 octets a été dépassée. Pour garder la même technique de déplacement signé sur un octet, il fallait inverser la première et la deuxième moitié et mettre le pointeur au milieu du buffer, sur le début de la première moitié (devenue la deuxième). Le déplacement sur un octet signé, de -128 à +127, permet d'adresser 256 octets.

Au premier chargement, on lit un buffer de 256 octets à l'adresse définie par le moniteur, on inverse les deux moitiés et on ajoute 128 au pointeur.

Au deuxième chargement, il ne faut pas utiliser ce pointeur augmenté de 128, sinon on décalerait la zone à chaque fois. Il est donc nécessaire de sauvegarder le pointeur initial. C'est là le problème : où trouver deux octets libres pour toutes les configurations possibles ?

Le concepteurs du contrôleur CD90-351 ont utilisé la zone de stockage de la position de la tête du lecteur 2, <$55-$56. Elle était prévue pour un contrôleur précédent et devenue inutile.

Dans le TO8, $6055-$6056 est déjà utilisé pour l'adresse de la routine de changement de banque. Il fallait trouver deux autres octets. Le choix s'est porté sur $6025-$6026, ancien vecteur RAM pour pointer sur la routine de traitement des interruptions NMI. L'interruption NMI n'est pas câblée dans les cartes mères Thomson, cette zone n'avait aucune utilité.

Dans les premières versions de SDDRIVE, la fonction LECFA en $A00D/$E00D n'inversait pas la FAT. Cette fonction est très peu utilisée par les logiciels. L'anomalie a été découverte tardivement avec certains jeux, comme La Marque Jaune, et des démonstrations de type diaporama. Elle a été corrigée en version 2021.02.09, mais sans sauver le pointeur initial.

Cette deuxième anomalie a été détectée plus tard, en juin 2021, sur TO7/70, avec le DOS-LOGO. La fonction CATALOGUE s'exécutait correctement la première fois, mais aux appels suivants la FAT se décalait en mémoire de 128 octets en écrasant d'autres zones importantes. Au final le système se plantait.

Une nouvelle version 2021.06.12 corrige l'erreur en sauvegardant le pointeur initial de la FAT dans le vecteur NMI en $2025/$6025 (comme le TO8). Elle n'est pas encore diffusée officiellement car il reste un problème à résoudre avec le DOS-LOGO pour MO : la pile système écrase des zones de sauvegarde du système SDDRIVE. Là encore il va être nécessaire de partir à la chasse des octets libres, c'est un sport de plus en plus difficile.
Pour le DOS-LOGO TO, le problème est donc résolu. Je vais maintenant m'attaquer au plantage du DOS-LOGO MO et je publierai une nouvelle version de SDDRIVE pour les fans de LOGO, ainsi que la nouvelle version de dcmoto qui va avec.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 14036
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Finalement, la zone $2025-26/$6025-26 utilisée par le contrôleur du TO8 n'est pas bonne. Elle a déjà été prise par les développeurs du MO5 pour stocker l'adresse de fin de la fenêtre (définie par l'instruction CONSOLE). Je vous le disais, la chasse aux octets libres n'est pas facile.

En conséquence le DOS-LOGO du MO5 avait un problème de scrolling vertical. D'autre part il plantait par écrasement de variables de SDDRIVE par la pile système. J'ai fait un essai en reportant ces variables et la sauvegarde du pointeur de FAT en $20D5-$20E2 / $60D5-$60E2. Je crois qu'il y aura un conflit avec le buffer du crayon optique, mais je n'ai rien trouvé d'autre. En tous cas ça marche bien pour le DOS-LOGO.

Reste maintenant à choisir pour SDDRIVE la compatibilité LOGO ou la compatibilité CRAYON OPTIQUE. C'est un dilemme, il faut se laisser le temps de la réflexion. Pour l'instant je ne change rien.
Daniel
L'obstacle augmente mon ardeur.
Brochiman
Messages : 1109
Inscription : 02 juin 2019 11:26

Re: [Thomson] SDDRIVE

Message par Brochiman »

J'y connais pas grand chose mais il pourrait y avoir une version compatible LOGO et une compatible Crayon Optique et chacun choisirait mais peut-être est ce trop embêtant a faire :D :D :D
Zebulon
Messages : 672
Inscription : 02 nov. 2020 14:03

Re: [Thomson] SDDRIVE

Message par Zebulon »

Merci Daniel pour ces explications très détaillées. Finalement seule la fonction CATALOGUE du DOS-LOGO pose problème et on peut s'en passer en notant quelque part le nom des fichiers que l'on crée. Au pire on sait que si on doit faire un CATALOGUE il faut le faire en début de session puis éteindre/rallumer la machine.

Hypothéquer le fonctionnement du crayon optique c'est un peu dommage car c'est dans l'ADN de l'écosystème TO/MO, du moins tant qu'on possède encore des tubes cathodiques.
Daniel
Messages : 14036
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

La réponse définitive à cette quête de zone de travail en RAM existe : il faudrait avoir 16 octets de ram dans le contrôleur SDDRIVE. J'y pense depuis longtemps, mais la complexité de cet ajout me fait hésiter.

Pour l'instant je ne change rien, en attendant d'avoir évalué précisément les conséquences de chaque option possible.
Daniel
L'obstacle augmente mon ardeur.
Zebulon
Messages : 672
Inscription : 02 nov. 2020 14:03

Re: [Thomson] SDDRIVE

Message par Zebulon »

L'essentiel est d'avoir pu reproduire et identifier la cause de cette anomalie, comme ça on sait ce qu'il ne faut pas faire.

Je me pose une question : est-il possible de créer une image de disquette faible capacité pour n'avoir la FAT que sur 128 octets et serait-elle bien gérée par SDDRIVE ?
__sam__
Messages : 6055
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] SDDRIVE

Message par __sam__ »

Je me pose une question: l'inversion du contenu de la FAT et la modification du pointeur se produit aussi avec le contrôleur standard. Il n'a pas de soucis avec plusieurs DIR d'affilés. Comment fait-il ?
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 : 14036
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Comme je l'ai écrit un peu plus haut, les contrôleurs de disquettes 3"1/2 utilisent deux octets libres pour stocker l'adresse initiale de la FAT, et peuvent ainsi la restaurer à chaque appel.

Pour le CD90-351, l'adresse choisie est <$55.
Pour les TO8, TO8D, TO9+ l'adresse choisie est <$25.

Ce n'est pas très bon car les deux sont incompatibles. En effet
- <$25 est déjà utilisé par le MO5 pour l'adresse de fin de la fenêtre graphique définie par l'instruction CONSOLE
- <$55 est déjà utilisée par le TO8 pour stocker l'adresse de la routine de changement de banque.

Le contrôleur CD90-351 doit donc être incompatible TO8 (il faudrait essayer).

Pour SDDRIVE il faut être compatible avec toutes les configurations. Pour l'instant j'ai opté pour <$E3 et ça semble bon. J'ai fait aussi des modifications subtiles pour éviter le débordement de la pile système, et je peux maintenant utiliser le DOS LOGO avec SDDRIVE sans aucune erreur, aussi bien avec le TO7/70 qu'avec le MO5. C'est une version expérimentale, je la donne ici pour les audacieux qui veulent tester.
sddrive_20210613.zip
(3.14 Kio) Téléchargé 17 fois
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 6055
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] SDDRIVE

Message par __sam__ »

Ok. En fait un bit suffirait si je pige bien pour savoir si la FAT a été inversée et que l'adresse pointe sur la 2e moitié. Peut-être que trouver un flag de libre est plus facile ? (humm je ne suis pas convaincu).

En revanche les FATs n'occupent que 160 octets. On peut donc écrire ce qu'on veut à partir du 161e octet. Par exemple un marqueur suivit de l'adresse originelle de la FAT: "SDMK<nn><nn>". Si la FAT est swappée le <nn><nn> qu'on lit correspondra à la valeur courante-128. Sinon (pas de marqueur ou la valeur lue n'est pas celle attendue), on a une FAT non inversée.

Il y a un risque qu'une donnée sur disk contienne les bonnes valeurs, mais la probabilité est insignifiante (1 chance contre 2^48). Par contre cette méthode est peut-être trop compliqué.
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
Répondre