Page 2 sur 4

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 06 avr. 2018 12:07
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 ...

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 12 avr. 2018 12:09
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

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 13 avr. 2018 20:16
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 ...

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 14 avr. 2018 08:39
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 ...

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 14 avr. 2018 09:13
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 :(

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 14 avr. 2018 09:30
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.

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 14 avr. 2018 09:43
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).

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 14 avr. 2018 16:19
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:

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 14 avr. 2018 17:23
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.

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 16 avr. 2018 10:37
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:

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 16 avr. 2018 23:12
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 ....

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 17 avr. 2018 19:13
par leduigou
Bonjour à tous,

Un grand bravo à 6502MAN ...
CDPG3.jpg
CDPG3.jpg (17.71 Kio) Consulté 5592 fois

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 17 avr. 2018 19:15
par Patrick
Bravo !

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 17 avr. 2018 20:23
par hlide
Bravo !

Re: [ GOUPIL 3 ] debut émulation ROM

Publié : 17 avr. 2018 21:05
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: