Ce qui caractérise PRODOS, outre de nombreuses qualités fonctionnelles, c'est sa rapidité à lire les disquettes qui n'est pas dûe à une simple modification de l'interleaving mais bien à la façon de lire les secteurs. Il faut dire que les routines du DOS 3.3 sont courtes mais un peu laborieuses.

Une page mémoire écrite avec PRODOS ou avec le DOS 3.3 donnera STRICTEMENT LE MEME RESULTAT en ce qui concerne la structure du secteur et les nibbles qui le compose... et pourtant, tout est si différent !



PRENIBBILIZATION
La routine de prenibbilization de PRODOS ne fonctionne pas du tout comme celle du DOS 3.3. Avec PRODOS on n'utilise pas deux buffers NBUF1 et NBUF2 mais un seul qui correspond à NBUF2 et regroupe les deux premiers bits (bit 0 et 1) de chaque octet de données de la page mémoire à écrire, selon un ordre et un ordonnancement très précis. Sous Prodos c'est la page mémoire elle même qui joue le rôle de NBUF1.



PRODOS ne place pas les bits 0 et 1 des valeurs de chaque adresse de la page mémoire par une opération de décalage (avec LSR) comme le DOS 3.3 mais en utilisant trois tables (BIT.PAIR.LEFT, BIT.PAIR.MIDDLE et BIT.PAIR.RIGHT) selon qu'il veut placer les bits en colonne 1, 2 ou 3 qui correspondent respectivement aux bits 7 et 6, 5 et 4, 3 et 2.

Ces colonnes 1, 2 et 3 ne sont pas du tout dans la même position sur le NBUF2 du DOS 3.3, elles sont positionnées plus à gauche de façon à ce que les bits 0 et 1 de NBUF2 soient TOUJOURS à 00. De ce fait les colonnes 1, 2 et 3 utilisés par le DOS 3.3 correspondent respectivement aux bits 5 et 4, 3 et 2, 1 et 0.

Dit autrement :
sous DOS 3.3  les valeurs de NBUF2 varient de $00 $ $3F (0011.1111), les bits 7 et 6 étant toujours à 0.
sous PRODOS les valeurs de NBUF2 varient de $00 à $FC (1111.1100), les bits 0 et 1 étant toujours à 0.

Par contre chaque octet de NBUF2, qu'il soit en DOS 3.3 ou en PRODOS contient bien les bits 0 et 1 des MEMES ADRESSES DE LA PAGE MEMOIRE A CODER/DECODER.(A la nuance près des deux groupes de 2 bits non utilisés sur le 1er octet... ce qui n'a strictement aucune importance)



Nota très important : Si PRODOS remplit son buffer NBUF2 de façon totalement différente du DOS 3.3 il n'en reste pas moins qu'à ces valeurs correspondent donc des nibbles précis qui sont écrits sur la disquette dans l'ordre identique à celui du DOS 3.3 (ordre décroissant de NBUF2 en premier puis ordre croissant du buffer principal).

Si le DOS 3.3 lit un secteur de données qui a été écrit avec PRODOS, il sera capable de faire la reconstitution de la page mémoire initiale tout en utilisant des buffers NBUF1 et NBUF2 qui n'ont strictement rien à voir avec PRODOS.

Ce sont les tables de translation différentes qui permettent ce petit miracle. Donc pour être plus clair : les disquettes DOS 3.3 et PRODOS sont "compatibles" pour ce qui est du codage / décodage des secteurs, ils donnent le même résultat en utilisant deux techniques de translation TOTALEMENT DIFFERENTES.



ECRITURE
La table utilisée pour l'écriture des nibbles est la suivante :



LECTURE ET POSTNIBBILIZATION
La lecture et la postnibbilization sont intégrées ce qui explique en grande partie la rapidité de lecture. Par contre la table utilisée par PRODOS est totalement différente de celles du DOS 3.3 même si le principe d'accès est le même à savoir se servir de la valeur de nibble comme index pour trouver la valeur de la donnée à placer dans un buffer (NBUF2 ou destination)