[DCMOTO] TO9 Disque virtuel

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

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

Re: [DCMOTO] TO9 Disque virtuel

Message par Daniel »

@__sam__ : J'ai trouvé le bug en mode TO8.

Lorsqu'on sélectionne le ramdisk dans Réglage et préférence, le type de ramdisk est stocké dans les trois bits de poids faible de $60CD.
0=pas de ramdisk, 1=64K, 2=128K, 3=192K, 4=256K, 5=320K.
Ce même octet $60CD est aussi utilisé lors du reset du contrôleur pour indiquer la présence d'un QDD (bit 6) et/ou d'une disquette (bit7).

La routine de reset est détournée par dcmoto, qui positionne les bits 6 et 7 en fonction des fichiers .fd et .qd chargés. Dans cette opération les quatre bits de poids faible étaient remis à zéro par un AND #$30. Il faut les conserver. En remplaçant #$30 par #$3f le bug est résolu.

Cet octet $60CD est modifié par dcmoto pour le TO8 et le TO8D, mais (par erreur) pas pour le TO9+. C'est un autre bug, mais pour le TO9+ il annule le premier. Je trouve très drôle qu'un bug en annule un autre :lol:

Je contrôle encore quelques petits détails avant de publier une nouvelle version, probablement demain.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] TO9 Disque virtuel

Message par __sam__ »

Cool 8)

Décidément la place en page 0 commence à manquer vu qu'on se partage des bouts d'octets à présent :)
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: [DCMOTO] TO9 Disque virtuel

Message par Daniel »

On ne partage pas seulement des bouts d'octets, mais des octets entiers. D'après le manuel technique les octets $60CD-$60CE sont aussi PTCLAV, le pointeur sur la table de décodage du clavier. Il faudrait creuser ce point, car la cohabitation avec le type de ramdisk est surprenante.

En analysant la ROM système du TO9+ j'ai encore eu d'autres surprises dont je parlerai plus tard. Décidément, de fil en aiguille, le bug initial du ramdisk TO9 nous fait découvrir beaucoup de choses peu connues.

manuel-technique.png
manuel-technique.png (46.85 Kio) Consulté 1693 fois

Et pourtant toutes les routines d'accès à une disquette ou à un ramdisk utilisent $60CD. Exemple :

Code : Tout sélectionner

-------------------------------
Formatage ramdisk
-------------------------------
E788  D6CD      LDB    <$CD       type de disquette
E78A  C407      ANDB   #$07       type de ramdisk
E78C  27B4      BEQ    $E742 -->  retour en erreur (pas de ramdisk)
E78E  B6E7E6    LDA    $E7E6
E791  3402      PSHS   A
E793  96CD      LDA    <$CD
E795  8510      BITA   #$10
E797  2703      BEQ    $E79C -
E799  867F      LDA    #$7F   |
E79B  7D866F    TST    $866F -|-
E79C  866F      LDA    #$6F <-  |
E79E  B7E7E6    STA    $E7E6 <--
E7A1  109E76    LDY    <$76
E7A4  8EFF2D    LDX    #$FF2D
E7A7  7EF341    JMP    $F341 ---> initialisation de la FAT
Il est aussi utilisé dans la routine hardreset pour indiquer la présence d'une disquette (bit 7) ou d'un QDD (bit 6). D'autres bits sont utilisés, je ne connais pas encore leur signification.

Il y a d'autres zones de la page 0 utilisées par des routines différentes avec une signification différente. Les développeurs cherchaient désespérément des octets disponibles. J'ai eu le même problème pour trouver des zones de travail pour SDDRIVE, et pas mal de difficultés pour qu'elles soient compatibles avec tous les ordinateurs. Finalement j'ai mis le LBA du fichier .sd chargé dans deux emplacements différents, et quand l'un est écrasé par le moniteur je le restaure ensuite avec l'autre.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO9 Disque virtuel

Message par Daniel »

Daniel a écrit :D'après le manuel technique les octets $60CD-$60CE sont aussi PTCLAV, le pointeur sur la table de décodage du clavier. Il faudrait creuser ce point, car la cohabitation avec le type de ramdisk est surprenante.
J'ai commencé à creuser :wink:

PTCLAV est un vecteur utilisé par le TO7/70. C'est l'adresse de la table de décodage du clavier. Cette table permet de déterminer le code ASCII en fonction du scancode.

Le clavier du TO9 est différent, il envoie directement le code ASCII. Il n'a pas de table de décodage et n'utilise pas $60CD-$60CE pour ça. Les claviers des TO8 et TO8D envoient un scancode, ils ont deux tables de décodage, une pour les minuscules et une pour les majuscules. Ils n'utilisent pas $60CD-$60CE, les adresses sont codées "en dur". Le clavier du TO9+, comme celui du TO9, envoie directement le code ASCII et n'a pas de table de décodage.

Conclusion :
1) Le manuel technique des TO9, TO8 et TO9+ est faux. $60CD-$60CE n'est pas PTCLAV pour les trois ordinateurs concernés.
2) Les développeurs Thomson ont utilisé la zone pour autre chose, en particulier pour stocker la taille du ramdisk, la présence d'une disquette et la présence d'un quick disk.

[EDIT 12:55]
La version 2023.04.01 de dcmoto est disponible : http://dcmoto.free.fr/emulateur/index.html
Elle corrige les trois bugs découverts successivement dans ce fil de discussion, suite au signalement par __sam__ du problème du ramdisk TO9.
Daniel
L'obstacle augmente mon ardeur.
DiscoSeb
Messages : 76
Inscription : 25 juil. 2021 16:05
Localisation : Yvelines

Re: [DCMOTO] TO9 Disque virtuel

Message par DiscoSeb »

Cela explique les soucis que j'avais rencontré avec mon générateur de lanceur.chg : à chaque fois, dcmoto indiquait que le disque est illisible (et j'avais eu "la flemme" de tester sur une vrai machine).
Avec cette version de dcmoto, ca fonctionne très bien, merci :-)
Seb
MO5 (gomme, méca, Platini), MO6, TO7, TO7-70, TO8D, TO9
MO/TO Exploitation de fichiers


Recherche : TO8, TO9+ (à prix raisonnable)
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO9 Disque virtuel

Message par Daniel »

Il ne faut pas hésiter à signaler les comportements anormaux de dcmoto, c'est grâce aux rapports de bugs que l'émulateur s'améliore.
Si ces dernières corrections ont résolu des problèmes inexpliqués, l'objectif est atteint. Cet objectif est simple : dcmoto doit se comporter comme la vraie machine : planter quand elle plante, donner le même résultat quand elle fonctionne.

Je comprends bien qu'il n'est pas toujours facile de faire le test. Moi-même j'hésite souvent à sortir du matériel rangé au fond d'un placard pour vérifier un petit détail. Il faudrait se forcer à le faire. De même tous les développeurs doivent tester leurs productions avec la vraie machine, le bon fonctionnement avec dcmoto n'est pas une garantie de bon fonctionnement avec l'ordinateur Thomson.

Dernier exemple en date : avec dcmoto le QD90-280 est incompatible avec le TO9+, l'ordinateur plante et l'écran d'accueil est écrasé. Il faudrait tester avec le vrai matériel pour comparer les résultats, mais je n'ai pas eu le courage de bouger des kilos de matériel pour accéder à un TO9+, à son clavier, à un QDD, à son câble, à une boîte de disquettes. Je sais qu'il doit planter, mais sa réaction réelle reste un mystère. Si un autre membre du forum veut essayer ça m'évitera de le faire :wink:

##.png
##.png (2.09 Kio) Consulté 1621 fois
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] TO9 Disque virtuel

Message par __sam__ »

Daniel a écrit : 01 avr. 2023 11:56 Conclusion :
1) Le manuel technique des TO9, TO8 et TO9+ est faux. $60CD-$60CE n'est pas PTCLAV pour les trois ordinateurs concernés.
Ce qui est curieux c'est que les flags de présence de contrôleur disk sont supposés être en $6080.

Il me semble de toute façon que la description de la page 0 dans le manuel technique est très, mais alors très approximative (cf $E7E7 dont une copie est en $6081 sur TO8/9+, et $E7C9 dont une copie est en $608B sur TO9, il doit encore y en avoir d'autres planquées dans les méandres des ROM).

Cela trahit, si ce n'est un problème de specification, un soucis avec la documentation entre les différents auteurs du Moniteurs de ces machines. (Rappel: la spec c'est avant l'écriture du code; la documentation c'est pendant, voire souvent après ;) ).

Du coup le manuel technique récupère une description de la page 0 qui n'est pas à jour depuis le TO7/70 :?
Capture.PNG
Capture.PNG (279.65 Kio) Consulté 1611 fois
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: [DCMOTO] TO9 Disque virtuel

Message par Daniel »

Pendant la mise au point du contrôleur SDDRIVE j'ai déjà repéré de nombreuses anomalies dans cette table. Par exemple en $6051-$6054 trois octets sur les quatre ne sont jamais utilisés, le quatrième a été récupéré pour un autre usage sans rapport. Je crois que ces quatre octets servaient au contrôleur simple face simple densité. Qui aurait l'idée de l'utiliser avec un TO8D ? Il faudrait essayer pour voir, mais à mon avis ça ne marche pas. D'après mon expérience avec SDDRIVE les trois octets libres peuvent être utilisés, le quatrième non.

Pareil avec la partie basse de la pile système. J'avais stocké des variables pour SDDRIVE et elles étaient écrasées. Au début je croyais que la pile système les recouvrait. Mais non, la pile s'arrêtait beaucoup plus haut. Des routines du moniteur système les utilisent comme zones de travail temporaires.

Il y a plein d'autres erreurs similaires. Bref tu as raison : c'est la page 0 du TO7/70, pas des TO9, TO8 et TO9+.
Pour un manuel technique ce n'est pas bien de diffuser une telle désinformation.
Daniel
L'obstacle augmente mon ardeur.
Répondre