[ GOUPIL 3 ] debut émulation ROM

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

Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man »

Je viens de jeter un oeil au accès disquettes mais à aucun moment la ROM accède aux adresses de la carte floppy :shock:

En utilisant la commande de boot en simulant l'appuie sur la touche "disquette" le moniteur fait bien un saut à la routine de boot disquette, mais avec le debuggueur il ne lit ou ecrit jamais les adresses F-F3F0 à F-F3D4 :roll:

J'y reviendrai plus tard pour l'instant j'ai mis en place l'impression par le PORT B du VIA et j'ai émulé les aussi le PORT A qui doit fonctionner en impression aussi mais pas pu tester car le moniteur utilise d'origine le PORT B pour l'impression option O .

Je vais essayer de regarder pour le port séries ACIA ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man »

Bonne nouvelle maintenant le secteur de boot ce charge bien en RAM, mais ne s’exécute pas parce que le bios détecte une erreur en fin de lecture !!

De plus j'ai était obligé de patché la ROM car il ne retrouvait pas le type de lecteur et je ne vois pas ou il reconnais exactement le bon type de lecteur, car le bios gère plusieurs type différent de controleur (WD1791, DMA, DD,...)

De plus j'ai plusieurs images disk mais elles ont plusieurs tailles différentes ???

Quel est le format exact des disquettes GOUPIL 3 ??

Voici ce que j'ai :

Code : Tout sélectionner

          Taille        nom
          ------------------------------------
           368640 	DOSTERM.DSK
           264704 	FLEXLOGO_IMD.DSK
           324352 	G3FLEX02_IMD.DSK
           324352 	G3FLEX03_IMD.DSK
           162304 	G3FLEX3_IMD.DSK
           323584 	G3FLEX9_IMD.DSK
           162304 	G3GAME1_IMD.DSK
           161280 	G3GAME2_IMD.DSK
           322816 	G3GASYS_IMD.DSK
           368640 	GOUPILutil.DSK
           102400 	GPFLEX2_IMD.DSK
           327680 	PACKG3_IMD.dsk
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
leduigou
Messages : 542
Inscription : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou »

Bonsoir,

J'ai vérifié les images des disquettes. L'émulateur lit les disquettes en format "RAW" aussi appelées "DSK". C'est le format habituel des émulateurs. C'est un format simple avec une suite de secteurs de 256 octets sans autre forme d'information. La détection des formats (faces, densités) se fait sur la taille.
40 pistes, 10 secteurs par piste, SF/SD -> 400 x 256 = 102 400 octets (100 Ko)
40 pistes, 18 secteurs par piste, DF/DD -> 720 x 2 x 256 = 368 640 (360 Ko)

Les formats IMG sont différents et embarquent toutes les informations nécessaires pour reproduire la disquette, ce qui n'est pas le cas des DSK. Il y a des utilitaires pour passer de IMD à DSK, mais pas l'inverse.

Quand on reproduit des disquettes avec un émulateur, on a souvent des problèmes avec les secteurs de boot, qui changent d'une machine à l'autre. Ma disquette de boot n'avait pas le bon secteur de boot. Celle de 6502MAN me semble corrompue... elle provenait du fichier IMG converti en DSK. Il y avait une erreur !
Pour le Goupil G3, le secteur de boot est aussi contenu dans le programme de formatage NEWDISK. Je l'ai donc recopié et désassemblé pour le comprendre. En fait il est en 2 parties. Le moniteur du G3 charge le secteur 1/ piste 0 et lance l'exécution en $C100. Là, quand il s'exécute, le programme de boot charge le secteur 2 / piste 0 en $C200.

Pendant que 6502MAN continue sur l'émulateur, je continue sur les disquettes ... On est à 2 doigts de trouver la solution ...
Cordialement
Frédéric

Forget the C:\ prompt! Real computing starts with +++
Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man »

Le problème n'est pas les dumps des disquettes mais plutôt le déroulement du boot code, explications :

Le moniteur charge le secteur de boot en $C100 et execute le code à partir de cette adresse.

A cet instant la le translateur est positionné comme ceci (normale pour accéder à toute la RAM) :
E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED FF

Le code execute un premier SWI et retourne donc dans le moniteur et positionne le translateur comme ceci:
E0 E1 E2 E3 F4 E5 E6 E7 E8 E9 EA EB EC ED FF

et en exécutant la suite (en ROM) il se retrouve dans une zone de RAM remplis de 00 et donc "déraille".

Le problème est que le translateur n'est pas positionné correctement et je ne vois pas pourquoi, car c'est la ROM qui positionne justement le translateur !!!

Il devrait positionné comme ceci pour avoir accès à toute la ROM :
E0 E1 E2 E3 F4 F5 FA FB E8 E9 EA F8 F9 ED FF

Si je le place manuellement le code déroule correctement mais redéraille au prochain SWI ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
leduigou
Messages : 542
Inscription : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou »

Bonjour,

Effectivement, c'est bizarre ...
D'autant que le chargement du 1er secteur se passe bien (même s'il détecte une erreur), mais par la suite il déraille :(
Cordialement
Frédéric

Forget the C:\ prompt! Real computing starts with +++
Avatar de l’utilisateur
leduigou
Messages : 542
Inscription : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou »

Ah, j'oubliais, au sujet des disquettes.
Il y a une difficulté au niveau des disquettes Double Densité en format DSK.
En réalité, sur la disquette, la piste 0 est toujours en SD (standard FLEX). Donc le nombre de secteur effectif pour une disquette 40 pistes DF/DD est :
((39 x 18 x 2) + (10 x 2 )) x 256 = 364 544 soit 356 Ko au lieu de 368 640 (360 Ko).
En général, pour les émulateurs, on comble les 4 Ko qui manquent avec des secteurs vides pour faire une piste 1 de même longueur que les autres pistes.
Il y a aussi un risque de confondre une disquette 40 pistes DF/SD et une 80 pistes SF/SD car dans un cas il y a 40 pistes de (2 x 10) secteurs et dans l'autre 80 pistes de 10 secteurs. L'émulateur va se mélanger les pédales ...

Bref, quand on aura un émulateur qui marche bien, on traitera ce problème.
A noter qu'il est aussi présent sur l'émulateur de SWTPc que j'utilise et je pense sur l'émulateur de Tavernier de Daniel.
Cordialement
Frédéric

Forget the C:\ prompt! Real computing starts with +++
Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man »

Pour ce problème ont peut créer une entête spécifique pour l’émulateur qui permettrait de spécifier la densité de la disquette, le nombre de secteurs, le type de la première piste, etc ...
Ou simplement comme pour d'autres émulateur rajouter des secteurs sur la piste 0.
Ou encore selectionner dans la liste déroulante le format de la disquette (moins pratique pour quelqu'un connaissant pas très bien le Flex).
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
yo_fr
Messages : 1336
Inscription : 13 août 2009 18:24
Localisation : 78...
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par yo_fr »

j'ai plus trop mémoire de ça, mais sur le Guépard il doit y avoir le même problème. C'est pour ça que le codage des disquettes c'est du DMK et c'est pour ça que j'ai décodé les disquettes avec ce standard. Tu peux regarder dans les sources de VBGuépard tu trouveras les info...
(le descripteur de piste indique si on est en SD/DD et les données des pistes en SD sont à chaque fois doublée (par exemple les données AA 1E 1C sont encodées dans le fichier en AA AA 1E 1E 1C 1C ...)
JJ

[Edit] J'ai regardé le prog vite fait:

Code : Tout sélectionner

    Public Structure DMK
        'Structure de fichier DMK 

        'Entête fichier
        Dim Num_Track As Byte       ' 1
        Dim Lenght_Track As Integer ' 2/3
        Dim Virtual_Disk As Byte    ' 4
        Dim IDAM(,) As Long         ' Liste des IDAM (Track, N° IDAM)
        Dim isSD(,) As Boolean
        Dim Adresse(,,) As Long     ' Liste des adresses face, piste, secteur
        Dim LSector(,,) As Integer  ' Liste des longueurs des secteurs face, piste, secteur
        Dim SD_Flag(,,) As Boolean  ' Simple densité ?

    End Structure

Donc dans l'entête du fichier DMK on retrouve la structure de la disquette ! :wink:
Avatar de l’utilisateur
leduigou
Messages : 542
Inscription : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou »

Bonjour,

Vous avez raison, autant utiliser les informations écrites sur le SIR pour le FLEX, c'est du standard :
Secteur #3: System Information Record (SIR)
Début Fin Information
0 1 2 octets à $00
16 26 Nom du volume ASCII
27 28 Numéro du volume en Binaire
29 30 Adresse du 1er secteur de données (Piste - Secteur)
31 32 Adresse du dernier secteur de données (Piste - Secteur)
33 34 Nombre total de secteurs de données en Binaire
35 37 Date en Binaire ((mois-jour-année)
38 38 Numéro de la dernière piste en binaire
39 39 Numéro du dernier secteur en binaire

Si on connait la taille du fichier et le numéro du dernier secteur et de la dernière piste, on ne peut plus se tromper !

En suite, on pourra améliorer le système pour accepter des formats DSK ou IMD.
Cordialement
Frédéric

Forget the C:\ prompt! Real computing starts with +++
Avatar de l’utilisateur
leduigou
Messages : 542
Inscription : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou »

Bonjour,

Je pense après analyse du moniteur que le translateur d'adresse de 6502MAN n'est pas en cause. C'est simplement que la ROM de 16 Ko est comme sur une seule puce, soit 1 Chip Select, basé sur l'adresse $FFF4.
Ainsi, il faut que l'émulateur sélectionne toute la ROM dès que l'on positionne $FFF4 à $F4. Dès que l'on remet $E4 en $FFF4, alors les autres pages (de $FFF5 à $FFF7) deviennent actives en RAM.

A essayer ... :wink:
Cordialement
Frédéric

Forget the C:\ prompt! Real computing starts with +++
Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man »

le translateur d'adresse de 6502MAN n'est pas en cause
J'en serais pas aussi sur que toi :oops:

J'ai testé ce que tu proposes mais ça ne fonctionne pas mieux et de plus il y a quelque chose de curieux c'est que le translateur est positionné de manière étrange mais pourtant c'est ce qui est codé dans la ROM !
Lorsque l'on est dans le moniteur :

Code : Tout sélectionner

FE F4 00 00 F4 F5 FA FB 00 00 00 00 F8 F9 EF FF
lorsque l'on exécute le boot secteur (qui est chargé en RAM $C100):

Code : Tout sélectionner

E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED 00 

Et donc pendant l’exécution du boot secteur il exécute plusieurs SWI et dès le premier il "déraille" car le translateur est mal positionné puisqu'il arrive au bout de quelques instruction sur de la RAM rempli de $00 !!!

Code : Tout sélectionner

E0 E1 E2 E3 F4 E5 E6 E7 E8 E9 EA EB EC ED 00 
j'ai rajouté le mode trace dans l’émulateur peut être que cela va nous permettre de trouver le problème ....
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
leduigou
Messages : 542
Inscription : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou »

Bonjour à tous,

Un grand bravo à 6502MAN ...
CDPG3.jpg
CDPG3.jpg (17.71 Kio) Consulté 5449 fois
Cordialement
Frédéric

Forget the C:\ prompt! Real computing starts with +++
Patrick
Messages : 2019
Inscription : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [ GOUPIL 3 ] debut émulation ROM

Message par Patrick »

Bravo !
Patrick
Avatar de l’utilisateur
hlide
Messages : 3456
Inscription : 29 nov. 2017 10:23

Re: [ GOUPIL 3 ] debut émulation ROM

Message par hlide »

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

Re: [ GOUPIL 3 ] debut émulation ROM

Message par __sam__ »

Bravo! Mais vous avez ouverts un bug dans l'espace-temps. La date courante est antérieure à la date de fabrication de l'OS! :shock:
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
Répondre