[ 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 du membre
6502man
Messages : 8794
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man » 06 avr. 2018 12:07

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 du membre
6502man
Messages : 8794
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man » 12 avr. 2018 12:09

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 du membre
leduigou
Messages : 326
Enregistré le : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou » 13 avr. 2018 20:16

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

Avatar du membre
6502man
Messages : 8794
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man » 14 avr. 2018 08:39

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 du membre
leduigou
Messages : 326
Enregistré le : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou » 14 avr. 2018 09:13

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

Avatar du membre
leduigou
Messages : 326
Enregistré le : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou » 14 avr. 2018 09:30

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

Avatar du membre
6502man
Messages : 8794
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man » 14 avr. 2018 09:43

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 du membre
yo_fr
Messages : 1317
Enregistré le : 13 août 2009 18:24
Localisation : 78...
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par yo_fr » 14 avr. 2018 16:19

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 du membre
leduigou
Messages : 326
Enregistré le : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou » 14 avr. 2018 17:23

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

Avatar du membre
leduigou
Messages : 326
Enregistré le : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou » 16 avr. 2018 10:37

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

Avatar du membre
6502man
Messages : 8794
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ GOUPIL 3 ] debut émulation ROM

Message par 6502man » 16 avr. 2018 23:12

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 du membre
leduigou
Messages : 326
Enregistré le : 08 mai 2011 21:00
Localisation : Paris, 6ème

Re: [ GOUPIL 3 ] debut émulation ROM

Message par leduigou » 17 avr. 2018 19:13

Bonjour à tous,

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

Patrick
Messages : 546
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [ GOUPIL 3 ] debut émulation ROM

Message par Patrick » 17 avr. 2018 19:15

Bravo !
Patrick

hlide
Messages : 275
Enregistré le : 29 nov. 2017 10:23

Re: [ GOUPIL 3 ] debut émulation ROM

Message par hlide » 17 avr. 2018 20:23

Bravo !

__sam__
Messages : 3917
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [ GOUPIL 3 ] debut émulation ROM

Message par __sam__ » 17 avr. 2018 21:05

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.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Répondre