Logicielsmoto.com

Nous sommes le 17 Aoû 2019, 15:47

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: Fonctionnement du QD90-280
MessagePosté: 22 Déc 2010, 14:19 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 591
Localisation: Provence (France)
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 01 Jan 2011, 18:10 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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 :oops:


Dernière édition par Prehisto le 02 Jan 2011, 08:39, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Fonctionnement du QD90-280
MessagePosté: 01 Jan 2011, 18:33 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 02 Jan 2011, 19:06 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 591
Localisation: Provence (France)
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 02 Jan 2011, 21:12 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 03 Jan 2011, 15:25 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 591
Localisation: Provence (France)
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...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 04 Jan 2011, 17:10 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 591
Localisation: Provence (France)
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 :
Image

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 :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Jan 2011, 11:21 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Jan 2011, 17:54 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 591
Localisation: Provence (France)
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Jan 2011, 18:17 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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 :p
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Jan 2011, 21:15 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 591
Localisation: Provence (France)
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 :cool:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 05 Jan 2011, 22:55 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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é.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 06 Jan 2011, 11:02 
Hors ligne

Inscription: 13 Mai 2005, 19:44
Messages: 182
Localisation: limoges
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.

_________________
Cordialement
Louis


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 06 Jan 2011, 11:18 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
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 :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 06 Jan 2011, 11:32 
Hors ligne

Inscription: 13 Mai 2005, 19:44
Messages: 182
Localisation: limoges
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. :oops:

_________________
Cordialement
Louis


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com