Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
Fonctionnement du QD90-280 http://www.logicielsmoto.com/phpBB/viewtopic.php?f=7&t=404 |
Page 1 sur 1 |
Auteur: | Daniel Coulom [ 22 Déc 2010, 14:19 ] |
Sujet du message: | Fonctionnement du QD90-280 |
Pour comprendre le fonctionnement du QD90-280, j'étudie la rom du contrôleur de disquette du TO8. Sans documentation sur la signification des zones de travail en mémoire, c'est relativement difficile. Et surtout, n'ayant pas le matériel, je me pose beaucoup de questions pour lesquelles vous avez peut-être la réponse : - Quand le QD90-280 est connecté au TO8D, quel est son numéro d'unité ? - Si le QD90-280 contient une disquette bootable, comment peut-on la lancer ? Par exemple j'ai un quick-disk contenant les versions TO8 de Vampire et de Vol Solo. La face Vampire n'a pas une structure de fichiers standard, le programme est lancé par le secteur de boot. Quelle est la procédure de chargement du jeu ? (je n'ai malheureusement pas la notice). - Question voisine de la précédente : si le lecteur de disquette du TO8D contient une disquette DOS et le QD90-280 une disquette QDOS, si on lance le Basic 1.0 quel système boote : le DOS ou le QDOS ? Si c'est le DOS, comment faire pour booter en QDOS (et réciproquement) ? - Dans les vecteurs système en $62xx, y a-t'il certaines adresses ou certaines valeurs spécifiques au QD90-280 ? - Quel est le code retour du reset du contrôleur quand un QD90-280 est connecté ? Ce sera tout pour aujourd'hui, mais j'ai encore plein d'autres questions en attente. Le but de cette étude est d'émuler le QD90-280 dans dcmoto. J'ai récupéré plusieurs fichiers images de Quick-Disks TO8. En mode TO7/70 avec le contrôleur CQ90-028 ils commencent à se charger mais plantent à l'exécution (normal, ils ne sont pas compatibles TO7/70). Je voudrais pouvoir les lancer en mode TO8 avec le contrôleur interne... S'il y une documentation quelconque sur le sujet, je suis également preneur. Actuellement mon unique source d'information est le désassemblage commenté par PrehisTo du contrôleur CQ90-351. C'est extrêmement bien fait et précis, mais tout n'est pas forcément transposable au TO8, et beaucoup de subtilités m'échappent encore. |
Auteur: | Prehisto [ 01 Jan 2011, 18:10 ] |
Sujet du message: | |
Désolé de répondre aussi tard, j'ai du probablement zapper. Tu as une image de la RomDisk sous la main ? EDIT : Question idiote. Inutile d'y répondre |
Auteur: | Prehisto [ 01 Jan 2011, 18:33 ] |
Sujet du message: | Re: Fonctionnement du QD90-280 |
Daniel Coulom a écrit: - Quand le QD90-280 est connecté au TO8D, quel est son numéro d'unité ? 0, probablement. Ca doit dépendre de la détection au reset à froid. Je ne me souviens plus si cette détection est faite par la RomDisk ou le Basic, mais elle existe en tout cas pour la différenciation entre une disquette double et simple densité pour le contrôleur interne. Daniel Coulom a écrit: - Si le QD90-280 contient une disquette bootable, comment peut-on la lancer ? Comme pour une disquette 3'1/2, je suppose. Avec B ou C. Daniel Coulom a écrit: - Question voisine de la précédente : si le lecteur de disquette du TO8D contient une disquette DOS et le QD90-280 une disquette QDOS, si on lance le Basic 1.0 quel système boote : le DOS ou le QDOS ? Prioritairement le DOS, la détection du floppy 3'1/2 ayant été faite avec succès. Daniel Coulom a écrit: Si c'est le DOS, comment faire pour booter en QDOS (et réciproquement) ? Tu peux toujours essayer sans disquette dans le floppy au reset à froid. Ca devrait détecter le quickdisk. Daniel Coulom a écrit: - Dans les vecteurs système en $62xx, y a-t'il certaines adresses ou certaines valeurs spécifiques au QD90-280 ? Pas que je sache. Des modes spécifiques, comme la lecture ou l'écriture sans interprétation du numéro de secteur. A part ça, les registres moniteur sont les mêmes. Et en $62xx, c'est le Basic qui s'en occupe. Daniel Coulom a écrit: - Quel est le code retour du reset du contrôleur quand un QD90-280 est connecté ?
Comme d'habitude : D pour la double densité, et C pour la simple. Donc C. |
Auteur: | Daniel Coulom [ 02 Jan 2011, 19:06 ] |
Sujet du message: | |
Merci pour toutes ces réponses. Moi aussi j'ai un peu délaissé le sujet pendant les fêtes. Je vais reprendre l'étude du Reset pour essayer de trouver à quel moment il teste la présence du QDD. Avec tous les changements de banque mémoire et la fragmentation du programme en une multitude de subroutines, c'est assez difficile à suivre. Heureusement, il y a l'émulation. Ce sera long, mais je trouverai... Si, entre-temps, quelqu'un a une idée sur l'adresse ou est stockée l'information (présence ou absence de QDD), je suis preneur. |
Auteur: | Prehisto [ 02 Jan 2011, 21:12 ] |
Sujet du message: | |
Daniel Coulom a écrit: Je vais reprendre l'étude du Reset pour essayer de trouver à quel moment il teste la présence du QDD. Le désassemblage du reset Moniteur TO8D par Obsidian me dit ceci : Code: FE21 86 54 LDA #$54 | Règle le Gate Array et la FE23 B7 E7 E7 STA $E7E7 | commutation banks via $E7E5 FE26 86 01 LDA #$01 | Code 1: Initialise le FE28 97 48 STA <$48 | contrôleur du drive FE2A 0F 49 CLR <$49 Drive 0: Interne FE2C BD E0 04 JSR $E004 Fais l'opération disque FE2F 96 4E LDA <$4E Récupère le code état FE31 24 08 BHS $FE3B Tout est OK ? Poursuis + bas Code: FE3B 81 43 CMPA #$43 Code état = $43 (Id du QDD)? FE3D 26 06 BNE $FE45 Non, continue avec le floppy FE3F C4 3F ANDB #$3F | Flags présence: Uniquement FE41 CA 40 ORB #$40 | un QDD. FE43 20 04 BRA $FE49 Et continue plus bas. ... et en fin de reset Moniteur : Code: FEE5 96 CD LDA <$CD Récupère le type de drive FEE7 84 C0 ANDA #$C0 | On travaille avec un QDD ? FEE9 81 40 CMPA #$40 | FEEB 27 03 BEQ $FEF0 Alors commute la page haute FEED 86 2C LDA #$2C Reste en banque basse par déf FEEF 7D 86 3C TST $863C $FEF0: LDA #$3C Banque Haute FEF2 B7 E7 C3 STA $E7C3 Fais la commutation FEF5 B7 00 03 STA $0003 Commute la banque ROM 3 FEF8 7E 3F F6 JMP $3FF6 Poursuis le RESET la-bas. Le seul moyen pour que le QDD interne soit pris en ligne de compte est donc que l'initialisation du lecteur interne 0 par le reset se fasse sans erreur et renvoie le code 'C' dans $604E. Donc : - Ou il faut faire un reset sans disquette dans le floppy - Ou la disquette du lecteur floppy ne doit pas être formatée - Ou la disquette du lecteur floppy doit être formatée en simple densité Pour vraiment savoir, il faudrait vérifier sur un vrai TO8. Daniel Coulom a écrit: Heureusement, il y a l'émulation. Ce sera long, mais je trouverai... Si, entre-temps, quelqu'un a une idée sur l'adresse ou est stockée l'information (présence ou absence de QDD), je suis preneur.
Ha ben le bit 6 de $60CD, bien sûr. Avec le bit 7 à 0, bien sûr aussi. Entre autre, peut-être... |
Auteur: | Daniel Coulom [ 03 Jan 2011, 15:25 ] |
Sujet du message: | |
Tout cela est très cohérent, et c'est exactement ce que j'attendais pour me mettre sur la bonne voie. Le reset détecte la présence du QDD, et le type de disque (floppy ou QDD) est stocké dans les deux bits de poids fort de $60CD. Cette fois je crois avoir presque tous les éléments pour comprendre. Merci ! Je vous dirai si j'arrive à lire le QDD avec le contrôleur interne du TO8 dans dcmoto... |
Auteur: | Daniel Coulom [ 04 Jan 2011, 17:10 ] |
Sujet du message: | |
C'est bon Pour résumer : - si, d'une part, le CQ90-280 est connecté au TO8/TO8D/TO9+ et contient un Quick Disk formaté et lisible - si, dautre part, le lecteur de disquette classique n'est pas connecté, ou vide, ou contient une disquette illisible - alors le Reset du contrôleur renvoie le code retour "C" en $604E et place le code $FF (simple densité) en $6058. L'octet $60CD contient des informations sur le type de disque, en particulier si le bit 7 est à zéro et le bit 6 à un, c'est un quick-disk. Je n'ai pas encore décodé les autres bits. - ensuite, le choix des fonctions d'accès au disque (floppy ou QDD) se fait en fonction du contenu des deux octets $6058 et $60CD. En appliquant ces règles dans dcmoto, l'émulation du QD90-280 fonctionne : La remarque de PrehisTo (si une disquette simple densité est dans le lecteur de floppy, les mêmes codes doivent être renvoyés par le reset) semble très pertinente. Je ne sais pas trop, dans ce cas, quel sera le périphérique choisi pour le boot. Si un thomsoniste a le matériel et fait l'essai, il peut satisfaire notre curiosité. Merci encore pour l'aide |
Auteur: | Prehisto [ 05 Jan 2011, 11:21 ] |
Sujet du message: | |
Daniel Coulom a écrit: L'octet $60CD contient des informations sur le type de disque, en particulier si le bit 7 est à zéro et le bit 6 à un, c'est un quick-disk. Je n'ai pas encore décodé les autres bits. Le désassemblage par Obsidian nous dit : Code: 60CD b7 Floppy b6 QDD b5 Nanoréseau b4 Extension mémoire b3 Lightpen b2 | b1 | Taille du disque virtuel par tranches de 64Ko b0 | Daniel Coulom a écrit: En appliquant ces règles dans dcmoto, l'émulation du QD90-280 fonctionne Bonne nouvelle. Daniel Coulom a écrit: La remarque de PrehisTo (si une disquette simple densité est dans le lecteur de floppy, les mêmes codes doivent être renvoyés par le reset) semble très pertinente.
Oui, en fait pas tant que ça. C'était une proposition au cas où les autres n'auraient pas fonctionné Ceci dit, j'avais aussi envisagé la déconnexion pure et simple du lecteur interne, mais j'ai jugé l'astuce un peu trop sauvage pour la répertorier, et j'espérais bien que les concepteurs auraient ouvert la voie sur une alternative moins chirurgicale. |
Auteur: | Daniel Coulom [ 05 Jan 2011, 17:54 ] |
Sujet du message: | |
Encore des questions ! L'accès en lecture ou écriture à un secteur du QDD se fait par n° de secteur logique (si $604A est à zéro) ou par n° de secteur physique (si $604A est différent de 0). Code: Lecture secteur QDD contrôleur TO8 et TO8D E234 964A LDA /$4A E236 2604 BNE $E23C E238 8D78 BSR $E2B2 E23A 256A BLO $E2A6 E23C 8602 LDA #$02 E23E 3402 PSHS A .... Dans le premier cas, le secteur physique est calculé à partir du secteur logique par la routine $E2B2. Elle commence ainsi : Code: ---------------------------------------- Calcul n° secteur physique QDD Contrôleur TO8 et TO8D ---------------------------------------- E2B2 964C LDA /$4C n° de secteur logique E2B4 2719 BEQ $E2CF 0 --> erreur E2B6 8110 CMPA #$10 E2B8 2215 BHI $E2CF >16 --> erreur E2BA C604 LDB #$04 entrelacement E2BC 3D MUL E2BD DD4C STD /$4C E2BF 964B LDA /$4B n° de piste E2C1 8102 CMPA #$02 E2C3 2318 BLS $E2DD ----> pistes 0-2 E2C5 C640 LDB #$40 E2C7 8114 CMPA #$14 E2C9 2508 BLO $E2D3 E2CB 8118 CMPA #$18 E2CD 234C BLS $E31B ----> pistes 20-24 E2CF 8640 LDA #$40 E2D1 20CE BRA $E2A1 ----> piste 25 E2D3 8108 CMPA #$08 E2D5 235F BLS $E336 ----> pistes 3-8 E2D7 810E CMPA #$0E E2D9 2352 BLS $E32D ----> pistes 9-13 E2DB 2047 BRA $E324 ----> pistes 14-19 .... .... .... .... .... .... E33C DD4C STD /$4C E33E 4F CLRA E33F 39 RTS Dans la rom contrôleur du TO9+, cette routine est remplacée par 3 lignes. La valeur retournée en $604C-$604D est toujours $01F4. Code: --------------------------------
Calcul n° secteur physique QDD Controleur TO9+ -------------------------------- E2B1 CC01F4 LDD #$01F4 E2B4 DD4C STD /$4C E2B6 39 RTS Dites-moi que je rêve, je ne peux pas croire que le TO9+ ne sache pas lire les QDD avec un numéro de secteur logique ? Sans le matériel je ne peux pas vérifier, qui veut bien faire l'essai ? Question subsidiaire : le désassemblage commenté par Obsidian est-il disponible sur internet ? Sinon, pourrais-je en avoir une copie ? Et pour finir une requête aux administrateurs du forum : mettre une police à largeur fixe pour le code. Je crois que c'est l'option par défaut des forums phpBB. |
Auteur: | Prehisto [ 05 Jan 2011, 18:17 ] |
Sujet du message: | |
Daniel Coulom a écrit: Dites-moi que je rêve, je ne peux pas croire que le TO9+ ne sache pas lire les QDD avec un numéro de secteur logique ? Depuis le temps que j'en parle Hé bien si, il faut le croire ! Ce qui rend par conséquent le QDD inutilisable sous Basic. Mais tout cela est dans ma doc contrôleur. Daniel Coulom a écrit: Question subsidiaire : le désassemblage commenté par Obsidian est-il disponible sur internet ? Sinon, pourrais-je en avoir une copie ?
Non, désolé Daniel. Et il m'a fait promettre de ne pas le diffuser, avec pacte de sang, juré-craché, et tout le tintouin. Par contre, je peux te mettre sur la voie si tu cherches quelque chose de précis. |
Auteur: | Daniel Coulom [ 05 Jan 2011, 21:15 ] |
Sujet du message: | |
Prehisto a écrit: Hé bien si, il faut le croire ! Ce qui rend par conséquent le QDD inutilisable sous Basic. Je m'en suis rendu compte dans dcmoto, en faisant un DIR en Basic. C'est tellement surprenant pour le TO9+, le plus beau fleuron de Thomson, que j'ai cru m'être trompé. C'est donc le TO8D avec extension mémoire le meilleur ordinateur de leur gamme 8 bits.Prehisto a écrit: il m'a fait promettre de ne pas le diffuser, avec pacte de sang, juré-craché, et tout le tintouin. Je le comprends, car moi aussi j'ai des centaines de pages de code commenté que je ne diffuse pas (car je ne suis pas sûr à 100% des commentaires).Prehisto a écrit: Par contre, je peux te mettre sur la voie si tu cherches quelque chose de précis. Merci, tes explications sont toujours très utiles
|
Auteur: | Prehisto [ 05 Jan 2011, 22:55 ] |
Sujet du message: | |
Daniel Coulom a écrit: moi aussi j'ai des centaines de pages de code commenté que je ne diffuse pas (car je ne suis pas sûr à 100% des commentaires).
C'est le genre de chose qui me navre le plus : si tout était mis en commun (sous le manteau, bien sûr), les désassemblages n'auraient de cesse d'être complétés et améliorés, au lieu de les faire (faussement) propriétaires. Comme les programmes, les docs ont besoin d'être débuggées. En tout cas, Obsidian a fait un travail énorme, car il a désassemblé tous les programmes du TO8D : le Basic 1.0, le Basic 512, l'Extramoniteur, l'Exploitation de Fichier et les deux pages de la ROM haute, tous presque dans leur totalité. Un travail qui s'est étalé sur plusieurs années pour lui, puisqu'il s'y est entièrement consacré jusqu'au moment où il a laissé tombé le Thomson. Malheureusement, je ne sais même pas moi-même dans quelle mesure je peux intervenir sur son ouvrage si je dois compléter ou préciser une ligne de code. Donc je l'utilise tel qu'il me l'a laissé. |
Auteur: | louis [ 06 Jan 2011, 11:02 ] |
Sujet du message: | |
Prehisto a écrit: Daniel Coulom a écrit: moi aussi j'ai des centaines de pages de code commenté que je ne diffuse pas (car je ne suis pas sûr à 100% des commentaires). C'est le genre de chose qui me navre le plus : si tout était mis en commun (sous le manteau, bien sûr), les désassemblages n'auraient de cesse d'être complétés et améliorés, au lieu de les faire (faussement) propriétaires. Comme les programmes, les docs ont besoin d'être débuggées. En tout cas, Obsidian a fait un travail énorme, car il a désassemblé tous les programmes du TO8D : le Basic 1.0, le Basic 512, l'Extramoniteur, l'Exploitation de Fichier et les deux pages de la ROM haute, tous presque dans leur totalité. Un travail qui s'est étalé sur plusieurs années pour lui, puisqu'il s'y est entièrement consacré jusqu'au moment où il a laissé tombé le Thomson. Malheureusement, je ne sais même pas moi-même dans quelle mesure je peux intervenir sur son ouvrage si je dois compléter ou préciser une ligne de code. Donc je l'utilise tel qu'il me l'a laissé. Bonjour, Une petite précision, Obsidian est toujours à l'écoute des Thomsonistes et il peut être contacté sur la mailing liste Thomson. |
Auteur: | Prehisto [ 06 Jan 2011, 11:18 ] |
Sujet du message: | |
louis a écrit: Une petite précision, Obsidian est toujours à l'écoute des Thomsonistes et il peut être contacté sur la mailing liste Thomson.
Et nous pouvons l'être ici |
Auteur: | louis [ 06 Jan 2011, 11:32 ] |
Sujet du message: | |
Prehisto a écrit: louis a écrit: Une petite précision, Obsidian est toujours à l'écoute des Thomsonistes et il peut être contacté sur la mailing liste Thomson. Et nous pouvons l'être ici Bien sur j'en doute pas mais j'ignore ci Obsidian passe sur le forum, sur la liste il répond. Ce n'était qu'une information. |
Page 1 sur 1 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |