[DCMOTO] TO9 Disque virtuel

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

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

[DCMOTO] TO9 Disque virtuel

Message par __sam__ »

Le message de Fool au sujet de la bank mémoire de 64k sur TO9 (voir) a (re)éveillé mon intérêt. Alors muni de DCMOTO 2023.02.25 je le me suis mis en tête d'observer comment la ROM se dépatouille pour accéder à cette RAM. J'ai donc activé l'extension et tenté d'activer le disk-virtuel via le menu THOMSON. Mais j'ai droit à un message d'erreur: Unité non prête.
Capture.PNG
Capture.PNG (150.73 Kio) Consulté 2203 fois
Alors est-ce que j'oublie un truc, ou est-ce que finalement l'émulation 64k pour TO9 n'est pas complète ?
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 »

Le plus probable est une mauvaise émulation dans dcmoto. Je n'ai jamais rien fait de spécial pour émuler les disques virtuels, ni pour le TO8 ni pour le TO9, et il est fort possible que ça ne marche pas. De mémoire je crois que le code est dans la ROM du contrôleur, il faudrait l'exécuter pas à pas pour voir où ça coince. A priori c'est purement soft, il y a un espoir de pouvoir corriger l'émulateur.

[EDIT 16:00] J'ai localisé le problème : Pour lire ou écrire un secteur, dcmoto détourne les routines du contrôleur. C'est bon pour les unités 0: à 3: car elles sont émulées par un fichier .fd. Par contre quand l'unité est 4: il ne faut pas détourner. C'est là l'erreur. Je vais essayer de corriger.

[EDIT 17:30] Nouvelle version de dcmoto corrigée :
dcmoto_20230328.zip
(907.47 Kio) Téléchargé 45 fois
Merci __sam__ 8) C'était un gros bug, il traînait depuis vingt ans et personne ne l'avait signalé.
Dernière modification par Daniel le 28 mars 2023 17:43, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: [DCMOTO] TO9 Disque virtuel

Message par Fool-DupleX »

Merci Daniel !

Pour répondre à Sam sur la gestion hardware de l'extension 64 Ko :

Sur le TO7-70, ce sont les bit PB3 à PB7 du PIA 6821 qui sont utilisés pour commuter les banques. PB3 commute la banque 0 interne du TO7-70. PB4 commute la banque 1 et PB5 commute l'extension. Il faut prendre garde à ne jamais activer deux de ces bits en même temps, sinon conflit entre les banques.

Ceci dit, en supposant PB3=PB4=0 et PB5=1, PB6 et PB7 permettent de sélectionner la banque externe parmi 4.

Sur le TO9, pour comprendre le fonctionnement, il faut et il suffit de localiser les signaux équivalents sur le schéma.

On s'aperçoit ainsi que PB6 et PB7 sont remplacés par PC2 et PC6 du 6846. Donc pour sélectionner la banque extérieure, c'est PC2 et PC6 qu'il faut configurer en fonction. Mais il faut encore activer l'extension (bit PB5 sur le TO7-70). Et là, c'est plus simple, ou en tout cas, moins dangereux. Il y a un signal EXTMEM# qui remplace PB5 et ce signal EXTMEM# n'est rien d'autre qu'un ET sur les lignes PB3, PB4 et PB5 du PIA6821 sur le TO9.

Donc, si PB3=PB4=PB5=1, l'extension 64 Ko est visible et la banque peut être sélectionnée avec PC2 et PC6.

C'est technique, mais un habitué des Thomson comprend ce que je veux dire.
Dernière modification par Fool-DupleX le 28 mars 2023 17:57, modifié 1 fois.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO9 Disque virtuel

Message par Daniel »

Voilà comment c'est programmé dans dcmoto. J'espère qu'il n'y a pas d'erreur.

Code : Tout sélectionner

// Selection de banques memoire ///////////////////////////////////////////////
void TO9rambank()
{

 //Quand le PORTB est a zero :
 //DDRB=$0F --> ramswitch=$F0
 //DDRB=$17 --> ramswitch=$E8
 //DDRB=$E7 --> ramswitch=$18
 //DDRB=$67 --> ramswitch=$98
 //DDRB=$A7 --> ramswitch=$58
 //DDRB=$27 --> ramswitch=$D8
 //DDRB=$00 --> ramswitch=$F8

 //Sinon les bits en sortie sont ceux du PORTB et les autres sont a 1
 //nrambank = bank + 2 pour compatibilite avec la numerotation TO9
 int ramswitch;
 ramswitch = port[0x09] & ddr[0x09]; //bits en sortie comme PORTB
 ramswitch |= ~ddr[0x09];            //bits en entree a 1 (pull-up)
 switch(ramswitch & 0xf8)
 {
  case 0xf0: nrambank = 2; break;
  case 0xe8: nrambank = 3; break;
  case 0x18: nrambank = 4; break;
  case 0x98: nrambank = 5; break;
  case 0x58: nrambank = 6; break;
  case 0xd8: nrambank = 7; break;
  case 0xf8: nrambank = 8;
             //P2 et P6 sont employes pour la commutation des
             //banques de la memoire extension disque virtuel
             nrambank += (port[0x03] & 0x04) >> 1;
             nrambank += (port[0x03] & 0x40) >> 6;
             break;
  default:   break;
 }
}
Daniel
L'obstacle augmente mon ardeur.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: [DCMOTO] TO9 Disque virtuel

Message par Fool-DupleX »

Tiens, c'est amusant. On pourrait facilement rajouter encore 32 Ko (2 banques) de RAM en interne et en utilisant un autre chip qu'un 155 pour le décodage, on pourrait avoir jusqu'à 32 banques internes ! Un TO9 avec 224 ou 576 Ko de RAM (en comptant l'extension) ...
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] TO9 Disque virtuel

Message par __sam__ »

Super Daniel!

Bon, il faudrait qu'en cas de TO9, je puisse supporter 4 autres banques de 16ko dans le ZPU (ca n'augmentera pas les MIPS pour autant ... ) Il faudra que je parle un jour de ce ZPU, ca plaira aux amateurs de CPU minimaux (et de FORTH aussi).
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 »

Précisions :

1) La version de 2023.03.28 de dcmoto postée plus haut dans ce fil de discussion corrige l'erreur du ramdisk du TO9 français, mais pas celle du TO9 allemand. Les deux ordinateurs sont corrigés dans la version publiée un peu plus tard sur le site dcmoto : http://dcmoto.free.fr/emulateur/index.html

02.png
02.png (1.59 Kio) Consulté 2055 fois


2) Le ramdisk des TO8, TO8D et TO9+ fonctionne bien, même dans les versions précédentes de dcmoto.
Il faut penser à déclarer sa taille dans l'écran "Réglage et préférences" avant de pouvoir l'utiliser.

03.png
03.png (1.35 Kio) Consulté 2055 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__ »

En pratique je ne sais pas qui a vraiment utilisé un RAMDisk sur thomson ? Moi jamais.

Par contre je suis tombé sur un truc rigolo de la ROM disk du TO9: Le disk virtuel est forcément en double densité (secteurs 256 octets). Si on veut le changer par l'exploitation de fichier ca fait une erreur:
Capture.PNG
Capture.PNG (23.83 Kio) Consulté 2038 fois
Normal. Appelez alors INITIALISER, et entrer un nom court (1 lettre)
Capture.PNG
Capture.PNG (25.25 Kio) Consulté 2038 fois
Vous aurez alors un curieux nom de diskette...
Capture.PNG
Capture.PNG (25.32 Kio) Consulté 2038 fois
Ce nom apparait aussi dans la selection de la diskette quand on appuies sur "EFF(acer)" au clavier. Visiblement un buffer texte est mal initialisé dans le logiciel de selection de disk.
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
__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 : 29 mars 2023 11:42 2) Le ramdisk des TO8, TO8D et TO9+ fonctionne bien, même dans les versions précédentes de dcmoto.
Il faut penser à déclarer sa taille dans l'écran "Réglage et préférences" avant de pouvoir l'utiliser.
Ben chez moi ca coince sur TO8D :( Je choisis 64k, sortie par touche "3"
Capture.PNG
Capture.PNG (11.07 Kio) Consulté 2034 fois
Puis exploitation de fichier > disk 4 > "support illisible" > Initialiser
Capture.PNG
Capture.PNG (26.16 Kio) Consulté 2034 fois
Ecriture impossible! Retour aux "Réglages et préférences". La selection 64k a disparue :evil:
Capture.PNG
Capture.PNG (5.74 Kio) Consulté 2034 fois
Si on refait la manip, c'est le choix "320k" qui est grisé. Quoi qu'on fasse, il est impossible de formatter le disk 4: sur TO8D. Sur TO9+ en revanche, ca marche très bien.

C'est curieux...
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 »

C'est bizarre, j'ai fait un essai ce matin et tout était normal. Mais je n'ai pas contrôlé toutes les machines ni toutes les capacités. La présence ou l'absence de l'extension 256K du TO8 est aussi un facteur important à tester. Je vais me remettre au travail...

Pour le bug du TO9, il faudrait faire l'essai avec la vraie machine pour savoir si dcmoto est concerné ou pas. Mes TO9 sont au fond d'un placard, si un autre thomsoniste en a un sous la main il peut m'éviter d'en sortir un.
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__ »

Pour le bug du TO9, il faudrait faire l'essai avec la vraie machine pour savoir si dcmoto est concerné ou pas. Mes TO9 sont au fond d'un placard, si un autre thomsoniste en a un sous la main il peut m'éviter d'en sortir un.
On a le même défaut de nom de disk sous Mame. Ca confirme (implicitement) le bug de la ROM-disk sur la vraie machine.
Capture.PNG
Capture.PNG (223.76 Kio) Consulté 2003 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 »

Ca confirme (implicitement) le bug de la ROM-disk sur la vraie machine.
Ce n'est pas une preuve absolue car MAME utilise ma ROM du TO9 (je l'ai passée à Antoine Miné). :wink:
Je ne sais pas s'il y a eu d'autres versions avec des corrections.
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__ »

Ah oui, s'i y a un mode commun ca ne prouve plus grand chose.
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 »

__sam__ a écrit : 29 mars 2023 12:21 Ben chez moi ca coince sur TO8D :( Je choisis 64k, sortie par touche "3"
Oui, c'est curieux. J'ai fait l'essai du ramdisk sans charger de fichier .fd, et ça marche. Mais s'il y a une disquette chargée, ça ne marche plus.
Je continue la recherche du bug...

Sans fichier .fd chargé, j'obtiens ceci :
03.png
03.png (1.35 Kio) Consulté 1799 fois
01.png
01.png (1.62 Kio) Consulté 1799 fois
02.png
02.png (1.53 Kio) Consulté 1799 fois
Daniel
L'obstacle augmente mon ardeur.
nouvelhermes
Messages : 401
Inscription : 22 juil. 2020 20:56

Re: [DCMOTO] TO9 Disque virtuel

Message par nouvelhermes »

Daniel a écrit : 28 mars 2023 16:06 Le plus probable est une mauvaise émulation dans dcmoto. Je n'ai jamais rien fait de spécial pour émuler les disques virtuels, ni pour le TO8 ni pour le TO9, et il est fort possible que ça ne marche pas. De mémoire je crois que le code est dans la ROM du contrôleur, il faudrait l'exécuter pas à pas pour voir où ça coince. A priori c'est purement soft, il y a un espoir de pouvoir corriger l'émulateur.

[EDIT 16:00] J'ai localisé le problème : Pour lire ou écrire un secteur, dcmoto détourne les routines du contrôleur. C'est bon pour les unités 0: à 3: car elles sont émulées par un fichier .fd. Par contre quand l'unité est 4: il ne faut pas détourner. C'est là l'erreur. Je vais essayer de corriger.

[EDIT 17:30] Nouvelle version de dcmoto corrigée :
dcmoto_20230328.zip

Merci __sam__ 8) C'était un gros bug, il traînait depuis vingt ans et personne ne l'avait signalé.
En fait de ce que lis, si un fichier .fd chargé, des routines sont détournées alors quelles ne devraient pas l'être, ce qui pourrait expliquer l'erreur, mais c'est une simple suggestion. Mille excuses, si je fais fausse route.
Répondre