Nº283 (11/2013)







  Download :
Après le Ceo-Mag d’octobre et surtout le numéro "spécial Jonathan", c’est un peu le calme plat. Il faut dire que les contributeurs habituels ou exceptionnels du mag avaient fait fort et qu’il leur faut digérer un tant soit peu. Toutefois, le présent mag est loin d’être creux. Je vous recommande tout particulièrement l’article de Dominique sur le florilège des formats "cassette" exotiques. Même si vous n’êtes pas spécialiste, avouez que la débauche des protections sur Oric est surprenante. A+

Toujours plus : Le florilège des formats exotiques !
Vu sur eBay : Des contrôleurs Microdisc.
Dépannage des micros.
Journal du soft : Sedoric, table des drives.
Listing Basic : Champ de mines

sommaire

Adresses CEO / Sommaire / Editorial   Page 2
Un florilège des formats exotiques (6)   Page 3-5
Listing Basic : Champ de mines   Page 6-8
Méli-Mélo   Page 9
Vu sur eBay : Floppy drive Microdisc compatible (1)   Page 10
Divertissements mathématiques et logiques   Page 11
Le coin Sudoku Oric (26) : Les grilles 7 à 12 de septembre   Page 12
Le dépannage des micros (1)   Page 13-15
Vu sur eBay : Floppy drive Microdisc compatible (2)   Page 16-17
Atelier : Contrôleur de disquettes, cartouche de jeu, etc.   Page 18-23
Journal du soft : Sedoric, table des drives   Page 24-26
Courrier Oricien   Page 27-29
Bonnes adresses   Page 29
Petites annonces   Page 30
Et votre mascote Dino   Page 7, 8, 11, 20, 21, 22 & 23


Sedoric: Table des drives
par Simon, Fabrice et André

Prologue
De Simon [14/07/13]: [au cours du travail de reconstruction de la disquette master XL-DOS] [...] Il faut utiliser un disque Sedoric modifié par le patch d'André pour éviter la demande "insert master disk" (au passage question annexe à André par curiosité : te souviens-tu si le patch permettait aussi de formater des disquettes Sedoric directement patchées, ou n'avais-tu pas touché à la commande INIT?).
De André [30/07/13]: Désolé, j'avais zappé la question des patchs, Les 2 patchs sont indépendants (non intégrés dans Sedoric 3.0). Il faut les lancer à chaque boot (via INIST). Je n'ai jamais eu le temps de le faire et après j'avais tout oublié de Sedoric (Fabrice se trompe en pensant que j'ai tout en tête).
De Simon [30/07/13]: Ok, en fait si on sort un jour un Sedoric 4 il suffit de les intégrer dans les premiers secteurs de la disquette (et de changer le numéro de version testée, de 3 en 4 ;-)). Pas encore eu le temps de tester mon optimisation, mais j'espère qu'elle marche, après je ne vois pas comment être plus compact!

Table des drives
De Simon [27/07/13]: Bonjour aux experts DOS. La table des drives actif (TABDRV, en #C039) est initialisée à partir du contenu de la disquette système, à savoir les 4 premiers octets du 1er secteur de la piste 20 (#14). Ensuite, ce n'est a priori mis à jour que par la commande TRACK, dont André met en doute l'utilité dans Sedoric à Nu. Enfin, pour vérifier si un drive est "actif", on lit cette valeur! Mais on n'a en réalité jamais testé la présence d'un drive.
J'ai trouvé l'explication dans le manuel Sedoric: "Première opération : si vous n'avez qu'un seul lecteur connecté, sautez ce paragraphe. Sinon, il va être nécessaire de signaler au SED qu'un deuxième lecteur est présent. II faut déprotéger la disquette (descendre la languette en haut à gauche), remettre la disquette dans le lecteur, et frapper (pas trop fort) DTRACK A,,42 suivi de "RETURN" bien entendu (voir page 42 pour plus de détails). Reprotéger la disquette et relancer ensuite le système en appuyant sur le bouton RESET du lecteur et tout est prêt pour la suite. " Autrement dit, la configuration des lecteurs se fait à la main par l'utilisateur (après tout, on le faisait aussi à la main dans le BIOS pour les PC).
D'où le mitraillage de questions:
- Avait-on vraiment des lecteurs de disquettes de configurations différentes? (capacités de pistes différentes??)
- Ce mode opératoire n'est-il pas dangereux, au final: si je prête une de mes disquettes "master" à un pote qui a un drive différent, le système va être trompé par ma config enregistrée sur la disquette.
- Sauriez-vous s'il y a un "vrai" moyen de tester la configuration d'un drive, ou de savoir s'il est connecté, même sans disquette dedans? (je vois un bit de status "not ready" rendu par le FDC, mais je ne sais pas si ça peut correspondre à un drive non branché!)
- Si ce n'est pas possible... Toute cette mécanique a-t-elle un intérêt? Elle n'empêche pas de planter le système si on tente d'accéder à un drive non branché, sauf à l'initialiser soi-même à 0...
Ces questions sont juste parce que je continue doucement, au fil de mes lectures de Sedoric à Nu, à me demander ce qui devrait être modifié / amélioré / optimisé si jamais un jour j'attaquais un Sedoric 4 avec répertoires (ne rêvez pas trop hein, je fais ça 1 fois par an depuis 2007 ;-))
De Simon [27/07/13]: Bon, j'ai patché comme un sauvage le noyau Sedoric d'une disquette, pour voir. Ça devrait tester le bit de status "ready" du FDC (qui autrement n'a pas l'air du tout testé par Sedoric), et met la ligne de statut à vert si on a eu "ready", et à rouge sinon.
Gros débranchement en écrasant un bout de noyau inutile à mon test:
D0BA A8 TAY
D0BB 20 E5 E6 JSR E6E5
D0BE EA EA EA EA
Nouvelle routine de test dans la zone libre du noyau (enfin, occupée par PATCH001, mais que je n'avais pas appliqué là) :
E6E5 A2 11 LDX #11 par défaut: pas de drive, couleur rouge
E6E7 29 80 AND #80 test si pas de drive (bit 7 à 1)
E6E9 30 01 BMI +1 va en E6EC si on a 1 (bit 7 à 1 = signe négatif), donc pas de drive
E6EB E8 INX on incrémente X de 1: passe de rouge à vert
E6EC 8E 80 BB STX #BB80 affichage rouge ou vert
E6EF 98 TYA
E6F0 60 RTS
Résultat avec Euphoric: je n'ai que du vert (quand ça marche), ça plante sans mettre de rouge s'il n'y a pas de disquette ou pas de drive branché. Dans mon cas (test de la commande "lire une piste" grâce à un programme de Fabrice) il est en boucle infinie en D081, à attendre la lecture d'un octet. En 0310 j'ai l'impression qu'on a 00 (regardé avec le moniteur d'Euphoric que je maîtrise mal), donc aucun bit de status positionné, donc pas d'erreur rendue...
Là où ma maîtrise s'arrête, c'est de savoir exactement quand est exécuté le "handler d'IRQ" (en D0A5) que j'ai modifié pour insérer mon test, et comment (quand, avec quoi) est mis à jour l'octet 0310.
Bref, un espoir mal barré, donc un tas de commandes pas top à propos de la "table des drives", mais j'imagine que Denis Sebbag et Fabrice Broche avait cherché avant moi...
De Simon [28/07/13]: Je suis aveugle: le moniteur d'Euphoric donne l'état du FDC en plein milieu de l'écran de moniteur... Et donc quand on cherche à lire une piste sur un lecteur non branché, il indique juste "busy", et pas "not ready".
Donc on peut en conclure que c'était un faux espoir! (sauf si le FDC n'est pas émulé à 100% concernant des choses inutilisées.
De Fabrice [28/07/13]: Salut Simon, désolé j'étais sur la route embouteillée hier... Ta question, détecter si un drive est présent, même sans disquette dedans, je me la suis posée il y a quelques années... Normalement, Euphoric doit renvoyer les bons bits de statut, même changeants... j'avais fait des expérimentations avec le matériel réel parce que les résultats n'étaient pas toujours en accord avec les datasheet... Maintenant, comment les OS le détectent correctement ou pas c'est une autre question...
Pour les nombres de pistes des lecteurs de disquette, oui il y a des différences : bien sûr les 3"1/2 ont 80 pistes là où les 3" et les 5"1/4 n'en ont que 40, mais aussi plus marginalement d'un lecteur 40 pistes à un autre il n'était pas toujours évident d'accéder à la 43e...
De Simon [28/07/13]: Merci pour les précisions. Ah oui, j'ai regardé l'état du FDC pendant la boucle infinie de tentative de lecture, mais je me rends compte que j'ignore si à un instant au début de la demande il a pu avoir été en "not ready". Là je ne sais pas comment faire pour observer ça, mais de toute façon je pense que si d'une part le matériel ne réagit pas de manière standard, et que d'autre part les "pros" (toi, Broche, Sebbag) se sont déjà penchés sur la question, je vais laisser tomber ce qui n'était qu'une idée.
A la base (avant de dévier), je cherchais à "blinder" un peu la lecture par piste. Et donc à voir si on avait un indicateur d'erreur de lecture d'une piste (commande E0) avec la routine XRWTS. Je reste un peu dubitatif car j'ai du mal à comprendre ce qui se passe. Sedoric à Nu indique, page 179, "en sortie Z=1 si pas d'erreur, sinon Z=0", mais si je suis la routine (c'est là que j'ai beaucoup, beaucoup de mal à être certain que je la "suis" correctement), page 183 on est sur la boucle de lecture dont on ne sort que par interruption, et le handler d'IRQ page 184 indique un SEC (donc C=1) en sortie pour signaler une erreur.
Du coup faut-il tester C ou Z en sortie? Si je comprends bien, au bout d'un certain nombre de tentatives de lecture de donnée à problème, le système arrête la lecture. Mais si on ne teste rien en sortie, on ne se rend compte de rien?
Quand repasses-tu à Paris, que je t'offre un restau pour toutes mes questions?
De Fabrice [30/07/13]: Salut Simon, oui c'est une interruption qui va permettre de quitter la boucle de lecture mais le handler dépile l'adresse de retour d'interruption et fait un RTS qui provoque le retour de la routine contenant la boucle de lecture...
Ensuite à la fin de la routine XRWTS, en CFE3, le "et" fait par l'instruction BIT permet de positionner le drapeau Z si aucune erreur n'est mémorisée en C017, alors que le drapeau C n'est pas modifié par la routine, il est récupéré par l'instruction PLP juste avant.
Je t'envoie aussi deux pages du datasheet relatives à la commande Read Track (commande de type III)... je ne suis pas chez moi, je te mettrais la doc complète des FDC sur un site, c'est trop gros pour le mail... (ah mais le datasheet complet doit être sur oric.free.fr)...
Concernant tes interrogations sur DTRACK et TRACK, il faut faire confiance à André, son analyse dans Sedoric à nu est parfaitement juste... Sur un PC, on stocke la configuration des drives dans la mémoire CMOS sauvegardée par pile, il n'y avait rien de tel sur Oric alors Fabrice Broche a voulu sauvegarder ça en mémoire (mais c'est perdu à chaque redémarrage), et sur disquette (mais les disquettes voyagent d'un Oric à un autre alors qu'ils ont des configs différentes)... Il y aurait pu y avoir une disquette de démarrage spéciale avant le chargement de l'OS, une espèce de disquette BIOS qui mémoriserait la configuration de son Oric, et qu'on ne s'échangerait pas d'Oric à Oric, mais ça aurait alors alourdi le démarrage... Alors, la préconisation d'André me semble la plus pertinente : ne pas utiliser les commandes TRACK et DTRACK, et peut-être même récupérer l'espace utilisé par ces commandes en les rendant sans action...
De Simon [31/07/13]: [Ensuite à la fin de la routine XRWTS, en CFE3, le "et" fait par l'instruction BIT permet de positionner le drapeau Z si aucune erreur n'est mémorisée en C017] Ok merci, donc je verrai si je peux tester ce drapeau lors de mes prochaines lectures par piste du XL-Dos par exemple.
[Je t'envoie aussi deux pages du datasheet relatives à la commande] Merci, ne t'en fais pas j'avais déjà cette doc (trouvée sur le site du Microtan je crois, et aussi partiellement en annexe dans Sedoric à Nu). Le truc c'est que là j'atteins mon seuil d'incompétence, quand on me dit qu'un bit est l'inverse de "l'entrée Ready Ored avec MR", je ne sais pas ce qu'il faut comprendre et encore moins à quelle situation matérielle cela correspond.
[Concernant tes interrogations sur DTRACK et TRACK, ...} En fait, pour comprendre mon puzzle de mails : je cherchais à savoir comment tester une lecture de piste, puis en voyant cette erreur "not ready" dans le data sheet, j'ai dérivé pour savoir si je pourrais tester ou non la présence voire la configuration d'un drive, car j'avais souvenir d'un truc pas super fiable avec cette "table des drives" qui était toujours remplie même quand aucun drive n'est connecté. Avec aussi en tête l'idée de gagner de la place dans le noyau pour les répertoires Sedoric. Gain de place qui m'a fait à nouveau dériver ce WE vers l'optimisation du patch001 d'André... Me re-pencher sur Sedoric a déterré un vrai domino de "projets en cours"!
Ce soir je me rends compte que Track et DTrack sont dans une banque, donc bon, le noyau n'y gagera rien... Disons que ça aurait fiabilisé l'OS p'tet, je suis tombé sur des disquettes 82 pistes parfaitement bootées et lues sur le drive A alors que ce dernier, dans la table des drives, est défini en 42 pistes! Mais est-ce que ça vaut le coup d'y passer du temps, je ne pense pas trop au final. Au pire pour déterminer la config au boot il faudrait lancer des tentatives de lecture sur les drives et être capable d'en sortir au bout d'un certain temps sans réponse. Mais bref, il faut que je me recentre sur les sujets de départ.
De Simon [29/07/13]: J'ai résolu ce WE, je pense, un truc que j'avais en tête depuis 10 ans: essayer de réduire la taille des PATCH001 et PATCH002 dans le noyau Sedoric, pour pouvoir y intégrer quelques modifs nécessaires aux répertoires. Ce ne sera sans doute pas assez évidemment, mais c'est toujours ça de gagné: j'ai réussi à faire tenir les 2 patchs dans l'espace mémoire EA06-EA2F, en réduisant le Patch 001 de 14 octets. Voici les modifs, je testerai plus tard, mais je pense que c'est bon... Commentaires bienvenus! Tout ce qui peut faire gagner de la place dans le noyau est bienvenu...
Patch 001 Super optimisé - modif noyau d'origine
F16B 8A
F16C 48
F16D 20 06 EA JSR EA06 On va exécuter le nouveau code
F170 F0 1E BEQ F18F si c'est "3" (Z=1) on ne demande rien
F172 A2 0C LDX $0C restaure les 5 octets
F174 20 6C D3 JSR D36C d'origine (voir en 416D)
F177 EA NOP
F178 …
Code ajouté
EA06 A0 02 LDY $02 secteur n°02
EA08 AD 0A C0 LDA C00A le drive système
EA0B 8D 00 C0 STA C000 devient le drive actif
EA0E A9 00 LDA $00 piste n°00
EA10 20 60 DA JSR DA60 chargée dans BUF2
EA13 AE 16 C2 LDX C216 drapeau Master/Slave
EA16 D0 05 BNE EA1D c'est pas une Master: on sort avec (Z=0)
EA18 AE DA C2 LDX C2DA n° de version
EA1B E0 33 CPX $33 est-ce "3"
EA1D 60 RTS
De André [02/08/13]: Bonjour Simon et Fabrice. D'abord, désolé d'avoir zappé le sujet. J'aurais dû me manifester, au moins pour répondre que je n'avais rien à dire... Ensuite, vous êtes trop gentils avec moi les gars. S'il est vrai qu'il fut un temps, que les moins de 20 ans ne doivent pas connaître, où j'avais une assez bonne connaissance de Sedoric (bien qu'avec une compétence inférieure à celle de Simon)... J'ai caïman tout oublié! Je me souviens seulement, mais vous le savez déjà, que cette histoire de table de drive et des commandes associées est effectivement une supercherie. Oups, je voulais dire que Fabrice Broche n'a pas eu le temps de finaliser la question...


BROWSE

NUMEROS
 [284] - [283] [282] - [281] - [280] - [279] - [278] - [277] - [276] - [275] - [274] - [273] 

YEAR
2017 - 2016 - 2015 - 2014 - 2013 - 2012 - 2011 - 2010 - 2009 - 2008 - 2007 - 2006 - 2005 - 2004 - 2003 - 2002 - 2001 - 2000 - 1999 - 1998 - 1997 - 1996 - 1995 - 1994 - 1993 - 1992 - 1991 - 1990



Hosted By oric.org server www.oric.org V 2.6 CNIL ID : 872370 Write to Webmaster © 2000-2021 Built in 0.05 Seconds