{"id":574,"date":"2019-07-25T03:55:39","date_gmt":"2019-07-25T01:55:39","guid":{"rendered":"https:\/\/ceobeta.oric.org\/?p=574"},"modified":"2019-07-25T03:55:39","modified_gmt":"2019-07-25T01:55:39","slug":"fdc-1793-et-read-track","status":"publish","type":"post","link":"https:\/\/oric.bqtt.net\/index.php\/2019\/07\/25\/fdc-1793-et-read-track\/","title":{"rendered":"FDC 1793 et Read Track"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Par Simon<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Ou l&#8217;aventure des d\u00e9boires avec les disquettes, partie 1 d&#8217;une possible longue s\u00e9rie !<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Quel est le besoin ?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Depuis quelques ann\u00e9es me tourne en t\u00eate l&#8217;id\u00e9e d&#8217;un outil de transfert de disquettes Oric vers PC. Readdsk est d\u00e9j\u00e0 tr\u00e8s  puissant  sur  PC,  mais  l&#8217;id\u00e9e  est  d&#8217;utiliser  le  mat\u00e9riel  Oric  \u00e0  la  fois  pour  les  non-bricoleurs  qui  ne  voudraient  pas  d\u00e9sosser  un  drive  3  pouces  et  le  brancher  dans  un  PC,  mais  aussi  parce  que  seuls  les  PC  vieillissants sont encore capables de g\u00e9rer un lecteur de disquettes. Savedisk, sorti en 2005 (cf. CEO-Mag n\u00b0 182, de juin 2005), r\u00e9pondait en partie \u00e0 cette id\u00e9e en permettant de lire, secteur par secteur, une disquette Sedoric, puis de la sauver sur PC par&#8230; Le port cassette ! Et ensuite de refaire un fichier .DSK pour \u00e9mulateurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;id\u00e9e suivante \u00e9tait de rendre cet outil universel, en faisant en sorte qu&#8217;il ne se pr\u00e9occupe pas du syst\u00e8me de la disquette lue (Sedoric, Randos, Oric Dos, Stratsed, FTDos, XL-Dos, &#8230;). Il existe une commande au niveau du contr\u00f4leur de disquette du Microdisc (le FDC 1793), qui permet de lire une disquette piste enti\u00e8re par piste enti\u00e8re, ind\u00e9pendamment du format. Cela permet d&#8217;embarquer tous les secteurs et toutes les informations entre les secteurs, d&#8217;un seul coup, et donc a priori de g\u00e9rer tous les DOS possibles tant que l&#8217;on trouve un moyen de g\u00e9rer le nombre de pistes et de faces.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/IMG_1335b.jpg\" alt=\"\" class=\"wp-image-824\" width=\"500\" height=\"270\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">La gal\u00e8re commence<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Las ! En testant cette commande (avec un gros coup de pouce de Fabrice), je me suis vite rendu compte d&#8217;un probl\u00e8me: a priori al\u00e9atoirement, des octets de valeur $C2 s&#8217;ins\u00e9raient dans les donn\u00e9es, voire les \u00e9crasaient. Cela ruinait la fiabilit\u00e9. Pensant \u00e0 un probl\u00e8me mat\u00e9riel (drive, disquette ?), j&#8217;ai vari\u00e9 les sources: drives 3&#8243; ou 3.5&#8243;, test lors d&#8217;une visu sur du mat\u00e9riel de Thierry&#8230; Sans r\u00e9sultat probant: toujours des dizaines ou centaines de $C2 !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pourtant,  j&#8217;\u00e9tais  tr\u00e8s  intrigu\u00e9  car  Nibble,  l&#8217;\u00e9diteur  de  disquettes,  est  capable  de  lire  et  copier  piste  par  piste,  sans erreur. En regardant une piste dans Nibble et en comptant (un par un&#8230;), je pouvais voir beaucoup moins de $C2 que lorsque je faisais la lecteur moi-m\u00eame&#8230; Quant \u00e0 Euphoric, il rend une lecture parfaite de la piste.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Mais c&#8217;est quoi ce bazar ?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Passablement d\u00e9courag\u00e9, j&#8217;ai sollicit\u00e9 tranquillement les forums Oric, et au fil du temps et des d&#8217;\u00e9changes, a \u00e9merg\u00e9 une analyse d&#8217;un &#8220;bug&#8221; sur le contr\u00f4leur de disquette Atari ST (par Claus Brod), utilis\u00e9 pour prot\u00e9ger des disquettes contre la copie. Il ressemble furieusement au probl\u00e8me sur Oric !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sch\u00e9matiquement,  lorsqu&#8217;il  lit  une  disquette  piste  par  piste,  le  contr\u00f4leur  est  en  permanence  \u00e0  la  recherche  d&#8217;octets  de  synchronisation  sur  la  disquette.  Ces  octets  de  synchro  forment  une  suite  de  bits  qui  permet  au  contr\u00f4leur  de  caler  le  d\u00e9marrage  de  sa  lecture  d&#8217;une  piste.  Comme  il  ignore  la  longueur  d&#8217;une  piste,  le  contr\u00f4leur sera en permanence &#8221; \u00e0 l&#8217;\u00e9coute&#8221; de cette s\u00e9quence pour savoir si une nouvelle piste d\u00e9marre.En d\u00e9tail, voici les diff\u00e9rentes synchro qui existent sur une disquette:   <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>IAM &#8211; Index Access Mark (C2C2C2FC) marking the start of a track <\/li><li>IDAM &#8211; ID Access Mark (A1A1A1FE) marking the start of a header field (Sector ID)    <\/li><li>DAM &#8211; Data Access Mark (A1A1A1F8 or A1A1A1FB) marking the start of a Data field (Sector)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Les C2 et A1 sont de plus, si j&#8217;ai bien compris, enregistr\u00e9s sur la disquette avec une petite erreur volontaire, pour les d\u00e9marquer d&#8217;octets de donn\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais malgr\u00e9 cette pr\u00e9caution, une s\u00e9quence de bits de synchro peut \u00eatre pr\u00e9sente au beau milieu des donn\u00e9es d&#8217;un  secteur,  \u00e0  partir  d&#8217;une  combinaison  d&#8217;octets  qui  n&#8217;ont  rien  \u00e0  voir.  Et  elle  peut  tromper  la  lecture  qui  va  penser d\u00e9celer un octet de synchro ! Sur Atari ST, c&#8217;est la s\u00e9quence 000101001 qui serait en cause; je n&#8217;ai pas v\u00e9rifi\u00e9 sur Oric.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce bug ne se produit pas avec les commandes de lecture par secteur (lesquelles ne recherchent pas de synchro piste !).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voil\u00e0  a  priori  l&#8217;origine  des  $C2  al\u00e9atoires  !  Euphoric  n&#8217;a  pas  ce  probl\u00e8me  car  j&#8217;imagine  que  la  lecture  d&#8217;un  fichier DSK sur le PC ne n\u00e9cessite pas ce d\u00e9codage bas niveau.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Magic Nibble<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Et   Nibble   alors,   pourquoi   les   $C2   sont   moins   visibles ?<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ceobeta.oric.org\/wp-content\/uploads\/2019\/07\/SCREEN9.png\" alt=\"\" class=\"wp-image-825\" width=\"480\" height=\"448\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Eh  bien,  Dominique  m&#8217;a  transmis  il  y  a  quelques  mois  une  photocopie  du  manuel  de  Nibble.  Ce  dernier  montre  que  ses  auteurs  ont  bien  rencontr\u00e9  des difficult\u00e9s dans la lecture par piste, et explique le  contournement  du  probl\u00e8me:  la  piste  est  lue,  m\u00e9moris\u00e9e, puis chaque secteur de la piste est relu individuellement.     Cette     lecture     par     secteur     remplace  celle  faite  en  mode  piste  !  Ainsi  les  donn\u00e9es  des  secteurs  sont  \u00e9pargn\u00e9es  par  les  $C2  parasites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voil\u00e0  la  solution  d&#8217;un  myst\u00e8re&#8230;  Et  une  piste  (sans  jeu   de   mots   !)   pour   poursuivre   le   copieur   de   disquettes  universel  sur  Oric  ?  A  noter  que  sur  Jasmin,  qui  utilise  un  autre  FDC  (FDC  1770),  le  probl\u00e8me serait identique, mais je n&#8217;ai pas v\u00e9rifi\u00e9 !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Documents expliquant le myst\u00e8re de la commande Read Track sur Atari ST:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/dmweb.free.fr\/files\/Atari-Copy-Protection-V1.4.pdf\">http:\/\/dmweb.free.fr\/files\/Atari-Copy-Protection-V1.4.pdf<\/a> (Jean-Louis Gu\u00e9rin)<\/li><li><a href=\"http:\/\/jlgconsult.pagesperso-orange.fr\/Atari\/diskette\/documents\/COPY%20ME.pdf\">http:\/\/jlgconsult.pagesperso-orange.fr\/Atari\/diskette\/documents\/COPY%20ME.pdf<\/a>  (Claus Brod)<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Par Simon Ou l&#8217;aventure des d\u00e9boires avec les disquettes, partie 1 d&#8217;une possible longue s\u00e9rie ! Quel est le besoin ? Depuis quelques ann\u00e9es me tourne en t\u00eate l&#8217;id\u00e9e d&#8217;un outil de transfert de disquettes Oric vers PC. Readdsk est d\u00e9j\u00e0 tr\u00e8s puissant sur PC, mais l&#8217;id\u00e9e est d&#8217;utiliser le mat\u00e9riel Oric \u00e0 la fois [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":825,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,305],"tags":[653],"class_list":["post-574","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ceomag","category-drive","tag-ceomag346"],"_links":{"self":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/comments?post=574"}],"version-history":[{"count":0,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/574\/revisions"}],"wp:attachment":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/media?parent=574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/categories?post=574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/tags?post=574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}