Page 3 sur 71

Re: TAVERNIER 6809

Publié : 03 févr. 2013 13:38
par pierrel5
Bonjour,

Merci pour ton aide.

Sur ma rom j'ai $FDEF = 0x58 et $FDF0 = 0x38
mais je peux mettre n'importe qu'elle autre valeur facilement, c'est l'avantage d'un émulateur.

Concernant l'image de la disquette, j'utilise un format raw ce qu'il y a de plus basique sans aucune entête.
le fichier contiens 40 pistes * 9 secteurs de 256 octets = 90kb
le secteur 0 est enregistré au début jusqu'au secteur 359 (360 blocks de 256 octets)

Une image en 80 piste devrait fonctionner aussi.
Si ton image disquette est différente je peux modifier mon code pour l'interpréter.

Si ça marche ce serait cool je pourrais continuer le projet.

a+

Re: TAVERNIER 6809

Publié : 03 févr. 2013 14:22
par leduigou
Voici toutes les informations utiles pour avoir un format de disquette Flex valide. Tu peux peut-être vérifier car le format 40 pistes / 9 secteurs n'existe pas:

Voici une structure de disquette flex:

Secteurs de 256 octets.
Les formats standards sont:
8" SS/SD, 77 pistes de 15 secteurs;
5,25" SS/SD, 35 pistes de 10 secteurs;
Les formats acceptés sont:
8" DS/SD, 77 pistes de 15 secteurs;
8" DS/DD, 77 pistes de 26 secteurs sauf piste #0 de 15 secteurs;
8" SS/DD, 77 pistes de 26 secteurs sauf piste #0 de 15 secteurs;
5,25" SS/SD, 40 pistes de 10 secteurs;
5,25" DS/SD, 35 pistes de 10 secteurs;
5,25" DS/SD, 40 pistes de 10 secteurs;
Vegas accepte les formats suivants:
5,25" SS/DD, 40 pistes de 18 secteurs sauf piste #0 de 10 secteurs;
5,25" DS/DD, 40 pistes de 18 secteurs sauf piste #0 de 10 secteurs;
Il accepte aussi les 80 pistes avec un lecteur adapté. Peut-être plus, en théorie jusqu'à 255 mais je n'ai jamais testé.
Normalement, les secteurs sont interlacés, mais je n'ai pas pu le vérifier sur le Vegas: 1-3-5-7-9-2-4-6-8-10.
Les pistes commencent par #0 et les secteurs par #1.
Piste #0:
Secteur #1: Bootstrap (j'ai celui du Vegas et le source standard pour vflex ou flex9)
Secteur #2: Suite du bootstrap si besoin (le Boot loader ne lit que le #1);
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
Secteur #4: copie du #3
Secteur #5: Directory:
0 1 Adresse du prochain secteur (Piste-secteur) en général $00 $06
2 3 Numéro logique du secteur du directory, en général $00-$00
16 255 Entrées du directory, initialisé à $00
A partir du secteur #6
0 1 Adresse du prochain secteur (Piste-secteur)
2 3 Numéro logique pour les fichiers séquentiels en général $00 $00
4 255 Données, initialisé à $00

Au début, il vaut mieux se contenter du simple densité (10 secteurs par piste en simple face ou 20 secteurs en double face) pour éviter d'avoir à traiter le cas du secteur 0 qui est toujours en simple densité en FLEX.
Tu trouveras sur le ftp Nethence des images disques qui devraient marcher si tu met $5056 à l'adresse $FDEF de ta ROM.
Le déassemblé de mon EPROM est utile pour comprendre ce qui se passe...

A+

Re: TAVERNIER 6809

Publié : 03 févr. 2013 14:43
par Marcopolo
Oups !

403 Forbidden
The requested URL '/frederic/Tavernier/Boot/BOOTTAV.TXT' resolves to a file which is marked executable but is not a CGI file; retrieving it is forbidden.

Re: TAVERNIER 6809

Publié : 03 févr. 2013 15:28
par leduigou
J'ai corrigé les droits.
Merci de me dire si c'est ok maintenant.

Re: TAVERNIER 6809

Publié : 03 févr. 2013 15:35
par pierrel5
Merci beaucoup.

J'ai récupéré les images sur le ftp.
Je vais tenter de booter avec.
J'ai regardé le contenu binaire, en effet cela est plus cohérent que mon image actuelle :)

a+

Re: TAVERNIER 6809

Publié : 03 févr. 2013 17:08
par pierrel5
Oui j'ai récupéré les fichiers.
J'ai mis modifié la rom avec 0x5056
Je suis en train de regarder comment est codé le fichier .dsk
Je vais d'abord essayer avec l'image de 200k (PRODOS_V24_SD_DF.dsk)

à priori le format est:
2 faces
40 pistes * 10 secteurs de 256 octets.

Les secteurs ne semblent pas être entrelacés dans l'image.
Maintenant je regarde comment accéder aux données en fonction de la face.

je présume:
Face 0: 10 premiers secteurs, Face 1: les 10 secteurs suivants dans l'image.

j'utilise ce code pour définir l'index dans l'image:

// return 1 if error occur
u32 GetFloppyDataIndex(u8 Track, u8 Sector, u8 Side)
{
u32 ofs, sect;
sect = Track * Floppy.SectorPerTrack * Floppy.FaceCount;
sect += Sector + Side * Floppy.SectorPerTrack;
ofs = sect * SECT_BYTES;
if ((ofs + SECT_BYTES) >= Floppy.SizeBytes)
return 1;
return ofs;
}

reste à voir si dans le code, l'index de secteur commence par 1 ou 0

Re: TAVERNIER 6809

Publié : 03 févr. 2013 17:27
par leduigou
Pour connaitre le nombre de secteurs, je pense que le plus simple est de partir de la taille du fichier:
89600 : 35 pistes 10 secteurs par piste
102400 : 40 pistes 10 secteurs par piste
184320 : 40 pistes 18 secteurs par piste
368640 : 40 pistes 18 secteurs par piste 2 faces (équivalent à 36 secteurs par pistes dans un .dsk)
etc ...
Si on fait des 80 pistes, c'est plus compliqué, on peut se tromper.
On peut aussi regarder en $33 et $34 du SIR, il y a le nombre max de secteurs et de pistes de la disquette. Dans tous les cas, le SIR est dans le secteur 3 ou 4.
Dans les images .dsk, les secteurs ne sont jamais entrelacés. Il n'y aurais aucun moyen de les remettre dans l'ordre. Dans d'autres formats de disquettes qui utilisent les headers, on les trouves.

Au choix !

Re: TAVERNIER 6809

Publié : 03 févr. 2013 17:46
par pierrel5
oui j'ai utilisé la taille de fichier.

pour l'image PRODOS_V24_SD_DF.dsk la taille fait exactement 200k
j'en ait déduit 40 pistes, 2 faces, 10 sect/piste

pour l'instant ça ne boot pas, ça boucle dans une command seek.
Je doit regarder de plus près car je ne sais pas si le dos utilise un mode pulling pour vérifier que le seek est fini ou si il utilise une interruption.

Re: TAVERNIER 6809

Publié : 03 févr. 2013 18:10
par leduigou
Le contrôleur est assez bestial, tu lui demandes une piste, il va sur la piste et te dit ready sans générer de seek error.
Dans le moniteur, si tu regarde le code, après avoir lancer le seek, le moniteur attend que le status register du contrôleur indique qu'il n'y a pas d'erreur.
Normalement, pas d'utilisation d'interruption.
Tu coinces à quel moment ?
Dans le moniteur en $FC9C tu fais le boot.
C'est une commande restore pour charger le boot-loader. Le restore est équivalent à un seek piste 0, secteur 1, mais en réalité qui utilise le contact Hard de piste 0. Le seek utilise le moteur pas à pas et fait des mouvements en boucle ouverte.
Tu peux voire dans TAVBUG4.OUT

Re: TAVERNIER 6809

Publié : 03 févr. 2013 18:28
par pierrel5
merci pour ces informations.
En fait ça commence à booter et après plusieurs commandes ça bloque.
Je vais regarder tavbug4.out ça devrait bien aider.

Re: TAVERNIER 6809

Publié : 03 févr. 2013 18:42
par pierrel5
En fait ça se produit dans le code chargé en mémoire.
Je suis en train de chercher

Re: TAVERNIER 6809

Publié : 03 févr. 2013 19:12
par pierrel5
Je vais intégrer un désassembleur pour débugger sinon c'est impossible de savoir ce qu'il se passe.

Re: TAVERNIER 6809

Publié : 03 févr. 2013 23:34
par leduigou
Une idée me vient. Dans le dos, le lecteur doit être paramétré pour piloter le lecteur: numéro du lecteur, face, densité, ...
Prends-tu cela en comte ?
J'ai mis des information dans le fichier Lecreg.txt et dans Le driver.prodos.
Il y a peut-être des indications utiles pour ton émulation de la carte contrôleur.

Il se peut aussi que mon Prodos soit incompatible. Il faut que je récupère une image du système créé pour le Tavbug.

Bon courage

Re: TAVERNIER 6809

Publié : 04 févr. 2013 09:20
par pierrel5
Non je ne fait pas ce paramétrage. Je vais regarder ce soir comment ajouter ces informations.

Hier j'ai ajouté un désassembleur ça aide un peu.
Au boot ça charge track 0 secteur 1 en 0xCxxx (je n'ai plus l'adresse en tête)
puit saut à cette adresse et ça charge track 14 sect 4, puis track 7 secteur 5, et ça boucle sur le chargement de ces 2 secteurs.

Je n'ai pas encore emulé le timer 6840, je ne sais pas si ça peut empecher de booter. A prioris il n'y a pas d'accés aux io de ce circuit lors du boot.

Bonne journée

Re: TAVERNIER 6809

Publié : 04 févr. 2013 09:36
par pierrel5
Sais tu à quelle adresse se trouve le registre de configuration du lecteur ?