[DCMOTO] TO9 Disque virtuel
Modérateurs : Papy.G, fneck, Carl
Re: [DCMOTO] TO9 Disque virtuel
@__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
Je contrôle encore quelques petits détails avant de publier une nouvelle version, probablement demain.
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
Je contrôle encore quelques petits détails avant de publier une nouvelle version, probablement demain.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [DCMOTO] TO9 Disque virtuel
Cool
Décidément la place en page 0 commence à manquer vu qu'on se partage des bouts d'octets à présent
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [DCMOTO] TO9 Disque virtuel
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.
Et pourtant toutes les routines d'accès à une disquette ou à un ramdisk utilisent $60CD. Exemple :
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.
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.
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 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.
L'obstacle augmente mon ardeur.
Re: [DCMOTO] TO9 Disque virtuel
J'ai commencé à creuserDaniel 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.
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.
L'obstacle augmente mon ardeur.
Re: [DCMOTO] TO9 Disque virtuel
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
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)
MO5 (gomme, méca, Platini), MO6, TO7, TO7-70, TO8D, TO9
MO/TO Exploitation de fichiers
Recherche : TO8, TO9+ (à prix raisonnable)
Re: [DCMOTO] TO9 Disque virtuel
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
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
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [DCMOTO] TO9 Disque virtuel
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
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [DCMOTO] TO9 Disque virtuel
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.
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.
L'obstacle augmente mon ardeur.