mercredi 24 octobre 2012

68060.library (Phase5) (I)

Après les cartes Apollo et pendant que je suis encore chaud sur ces librairies, continuons tout naturellement avec celle de Phase5 !

Là encore, beaucoup de temps et d'énergie à recréer un source compréhensible et donc ensuite modifiable. Pour vous donnez une idée, le source obtenu fait tout de même 48 543 lignes !

Si je compte bien, il y a eu sept versions de cette librairie :
  1. Apollo
  2. Aros 68k
  3. Draco
  4. GVP
  5. MMULib
  6. Phase5
  7. Quikpak
Que de temps perdu à refaire plusieurs fois quasi la même chose à partir des sources mathématiques Motorola de 1990/91 : les mecs sur PC et Mac, ils rigolent c'est certain...

Ca fait bien sept versions + les deux miennes = neuf : Clair, nous sommes la risée de toute la communauté mondiale informatique. Comment voulez-vous attirer des nouveaux utilisateurs avec ça ?
  
D'ailleurs, fort de ce constat de non partage et de non entre-aide à pleurer, le gros Cosmos sait très bien les décisions qu'il va prendre dans les mois qui viennent...

En désassemblant la librairie, quelques bugs ont été trouvé :

Le "lea L_0_96E(PC),a1" coupe le "bra.l _fpsp_snan" :

Il y a aussi plus loin, un autre "bra.l" qui donne cette fois sur "JL_0_96C" : il s'agit là très certainement de deux bugs humainement involontaires de décalage crées par l'assembleur utilisé (Barfly ?). Les fix ont tout simplement consisté à bien pointer sur "go_fpsp_snan" pour le bra.l et "go_fpsp_snan+2" pour le lea.

Cette librairie est bien plus aboutie et réfléchie que celle des cartes Apollo : en effet, les fonctions trigonométriques ainsi que les opérations entières 64 bit du Kickstart sont bien patchées, ce qui permet l'unification des programmes dont il était question dans le dernier article de ce Blog. De cette manière, un exécutable unique utilisera automatiquement les bonnes instructions du CPU dont l'Amiga est équipé.

Il faut maintenant que les compilateurs C/C++ utilisent les fonctions du Kickstart
lorsqu'un sinus par exemple se présente à eux. Pareil pour les codeurs
assembleur, ils doivent dorénavant appeler ces mêmes fonctions
dans leurs sources, et surtout plus directement un fsin.x

Deux autres bugs ont été débusqués : les deux coshsd étaient patchés par des atansd ! Gloups !!

Pour finir, mon R_Switch_060_Fpu très rapide est intégré dans cette nouvelle version puisque c'est exactement le même que pour les cartes Apollo.

Le débug hunk a été ôté puisqu'il est inutile pour les utilisateurs : environ 50 Ko de gagné rien qu'avec ça !

La nouvelle version de la 68060.library v46.16 est disponible ici et concerne les Blizzard 1260 et 2060, les CyberStorm MK1, MK2 et MK3, ainsi que la CyberStormMK3 PPC.
  

1 commentaire:

  1. Je viens de patcher ma libs (cyberstorm MKIII): ça marche impec !

    Bravo pour tout ce debuggage !
    A+

    RépondreSupprimer

Posté vos remarques :