jeudi 12 décembre 2019

A3660 rev 1.2

Une nouvelle version de la 3660 avec plusieurs toutes petites améliorations :
  • mon adaptateur 040/060 est intégré,
  • donc plus aucun composant sous les chauds 040 ou 060,
  • les trous des pinoches du 040/060 sont plus gros,
  • tous les composants sont maintenant regroupés sur une seule face,
  • deux trous pour la fixation du ventirad CPU,
  • trois trous pour un éventuel radiateur à fabriquer pour les Gals,
  • le support pour oscillateur au format CMS (toujours +5 volts),
  • petits trous pour l'aération de chaque Gal,
  • la sélection du 040 ou 060 par un JMP,
  • la sélection du délais 5ns ou 10ns par un JMP,
  • de nombreuses résistances 0805 remplacées par des "network resistors",
  • un JMP NMI pour HRTMon,
  • le JMP Maprom a été supprimé,
  • les quatre fixations à la CM ont été relié à la GND,
  • un trou pour le maintien d'un éventuel radiateur pour le régulateur.

Un radiateur peut maintenant très bien se fixer, plus besoin de colle :

Afin d'éviter l'achat d'un support pour les 040/060, il est possible de souder directement toutes les petites pinoches à fond en les soudant de l'autre côté, maintenues par un support pour un bon alignement. Ou vous avez toujours la possibilité de souder un support CPU si vous voulez :

Petite astuce pour ôter les CPUs avec une simple petite cuillère à café évitant ainsi d'endommager la PCB et le CPU, ça marche très bien :

Les "network resistors" (4 résistances regroupées en un seul composant) font gagner beaucoup de place sur la PCB.

Le JMP Maprom était un petit hack, mieux vaut bouger le Kickstart par le software. De plus, il ne permettait que 512 Ko, alors autant l'évincer...

Il me manque beaucoup de composants pour en monter une : si vous les avez, je vous vends une PCB nue pour 12.50 € port compris pour le monde entier. Me contacter sur mon email !
 
Toutes vendues !
  

lundi 23 septembre 2019

AmiQuake2 1.15 RTG

Le code spécifique RTG a été rajouté au source 1.15 de la version AGA, plus pratique d'avoir un seul listing générant au choix la version voulue...

Dans cette nouvelle 1.15 RTG, ma fantastique _CopyToScreen a été inséré bien évidement. N'en déplaise à Anomyme qui me critiquait en commentaire, cette routine d'origine toute pourrie de gcc a bien vite dégagé...
     
Comme d'habitude, tout est disponible ici de façon gratuite...
    

mercredi 11 septembre 2019

_TransformVector (AQ2)

Un nouveau mini cours à but éducatif avec la petite routine utilisant cette fois la Fpu _TransformVector d'AmiQuake2 et même de Quake 1 puisqu'elles sont identiques :

Commençons déjà par _DotProduct.

La version produite par gcc est catastrophique comme bien souvent, avec un code pesant 60 octets :

Une simple petite loop toute conne et nous voilà avec du code moins obèse, à maintenant 34 octets, économisant ainsi du précieux code cache ! Deux versions sont possibles avec un bne et un bcs, ce dernier étant bien utile pour la suite... Le fmove.s avec le d0 sera arrondi automatiquement à zéro par le processeur. Bref, rien de bien compliqué.

Bien sûr, les minuscules routines comme cette _DotProduct doivent être inlinées, et voici une routine trouvée sur le net :

Routine intéressante, mais me chagrinant tout de même : les deux fmovem.x sont couteux en cycles Fpu et la routine dans son ensemble pèse tout de même 148 octets.

Voici donc une autre approche en utilisant toujours les boucles :

Résultat : 70 octets avec une belle cerise à la fin !

Là encore tout est très simple, il s'agit de grouper trois loops en changeant d'in dans a1 à chaque fois. Le barillet dans d0 coordonne le tout :
  1. %011 = les 3 loops du _DotProduct pour _vright
  2. %1 = la 2ème loop pour _vup
  3. %011 = les 3 loops pour _vup
  4. %0= accès à la 3ème loop pour _vpn
  5. %11 = les 3 loops pour _vpn
La très belle astuce est dans le dernier bne utilisant toujours le même code condition que le précédent bcs. Bref, les deux horribles fmovem.x ont disparus et la routine dans son ensemble est bien plus mince.

Voilà, j'espère que cet exemple vous donnera envie d'apprendre l'assembleur 68k. J'avais d'ailleurs commencé des cours ici qui vous donneront quelques bases.
      

lundi 2 septembre 2019

c2pbest_jd.asm fix

La routine c2p originale d'AmiQuake2 AGA choisie par NovaCoder était celle d'un certain Aki Laukkanen (du fichier c2p8_040_amlaukka.s).

Or, le célèbre Jim Drew affirme que la sienne est la plus rapide pour 040/060.

Petit soucis toutefois une fois intégrée, ça bug :

Après une journée de recherche, j'ai trouvé et fixé le bug.

Le nouveau fichier est dispo ici !
  

vendredi 16 août 2019

_CopyToScreen (AQ2)

Quand je mourrai, j'espère qu'il restera mon blog Amiga ! En attendant, voici quelques unes de mes techniques d'amélioration de code, que mes expériences servent à d'autres, serait dommage que tout cela se perde...

Rassurez-vous, les 68k sont éternels, car trop bien. Les V2 et V4 ont été développées pour empêcher tout retour des vrais CPUs mythiques, pomper l'énergie de la communauté Amiga Classic, et bien sûr mettre leur éventuel futur sous contrôle des franc-maçons/illuminati de l'Apollo Team. Le tout pour obliger l'achat de leur carte V2 et ainsi forcer les acheteurs à devenir complice de cette trahison qui ne mènera nulle part, tout comme d'ailleurs MorphOS, OS4, Aros... Des voies sans issue voulues depuis le tout début...

Bref, voici la routine RTG d'AmiQuake2 générée par gcc :
 
L'air de rien, il y a à faire. Commençons par les disgracieux link a5/unlk qui peuvent aisément être remplacer par des accès directs à la pile. Il suffit d'inverser en commençant par la fin :

Ensuite, les deux move/muls peuvent être remplacés par un move.l #320x200,d0 puisque nous savons que l'unique écran RTG disponible pour le jeu fait 320x200 pixels. Récupérons aussi le pointeur de _LockBitMapTagList sur la pile pour éliminer définitivement a5 :

Ensuite, il est tout à fait possible et conseillé d'inliner le _CopyMemQuick et de ce fait supprimer le chargement de l'ExecBase dans a6. Ensuite, le __CyberGraphXBase,a6 peut être éliminé. d2 également, plus besoin puisque le résultat d0 est toujours dans d0 :

Voilà le résultat des courses avec tout de même 34 octets de code à la poubelle. Et avec le _CopyMemQuick supprimé qui permet de gagner encore de nombreux octets :
  
Cette routine est maintenant épurée de tout l'inutile. Il est possible peut-être de gagner quelques cycles en préloadant 4 lignes de data cache pour ensuite faire les copies. J'ignore si le gain est négligeable ou important :

Alors, dans le code réel, est-ce qu'un speed up est observable pour l'oeil humain ou dans quelques benchmarks ? Difficile de répondre à cette question, car de nombreux paramètres software et hardware entrent en jeu. Le principal but de cet article est aujourd'hui ici surtout pédagogique...
   
EDIT : mon testeur me donne un nouveau screenshot avec un gain de seulement 0.1 fps avec cette nouvelle routine, ce qui est fort peu ! Et même résultat avec le preload :

Sa config : A3000T avec CyberStormPPC 060@72 et Prometheus avec Voodoo3
  

dimanche 11 août 2019

AmiQuake2 1.14 RTG

NovaCoder avait stoppé la version RTG d'AmiQuake2 à la version 1.06 mais avait continué sa version AGA jusqu'à la 1.14 !

Voici donc une nouvelle 1.14 RTG, basée sur l'AGA avec quelques modifications.

Voici quelques benchmarks d'un A3000T équipé d'une CyberStorm MK3, d'un Prometheus Zorro 3 et d'une Voodoo 3 avec la version 1.06 :
    
Maintenant avec la version 1.14 :
  
Merci à James sur a1k.org pour son aide...

Disponible ici
  

mercredi 24 juillet 2019

A3630 rev 1.1 (II)

Deux cartes ont été soudé :

Alors la version FE marche très bien :
  
Par contre aucun boot avec la version RC, hélas ! Pourtant les schematics sont tout à fait corrects, j'ai tout vérifié... Si vous avez une idée d'où vient le problème... Peut-être l'emplacement FE vacant qui "brouille" les signaux ?

Les deux versions de 030 doivent de toutes façons avoir un Fpu pour fonctionner car j'ai ôté U105 (un 74F38) qui servait à faire fonctionner la carte originale sans coprocesseur. Mais vu le prix ridicule des 68882 en version PLCC (2 € port compris)...

L'overclocking ne fonctionne pas : plus compliqué que prévu...
  

A3630 rev 1.1 (I)

La 3630 rev 1.0 originale a été reversé sous Eagle :

Avec de sérieuses améliorations pour cette nouvelle rev 1.1 :
  • suppression du 68020 inutile aujourd'hui
  • les composants sont maintenant sur l'autre face
  • support de la GBA1060 
  • trois fixations pour la GBA1060
  • ajout du 68030 en version PQFP
  • des trous d'aérations
  • des condensateurs électrolytiques au lieu des CMS
  • deux autres fixations pour une bonne tenue sur la CM du 4000
  • un JMP NMI pour HRTMon
  • un oscillateur pour des fréquences supérieures à 25 Mhz
  • le CPU et la FPU fonctionnent maintenant à la même vitesse
  • un JMP +5V pour un ventilo
  • des trous pour fixer des ventirads pour les 030

La GBA1060 s'insère parfaitement :

Attention, la GBA1060 n'est pas DMA, voilà pourquoi j'ai vendu la mienne...

Une nouvelle carte 030 ne sert à rien aujourd'hui en 2019 : à voir plutôt comme une carte de secours.

En effet lorsque j'ai débuté mon blog en 2010, j'ai découvert qu'il y avait beaucoup de matos en panne.

De plus, le coût de revient de cette nouvelle rev 1.1 est très faible : 8 € pour la PCB, 7 € pour le 68030@33 PQFP, 2 € pour le 68882@40 PLCC, quelques dizaines de centimes pour les autres composants et le tout neuf avec port compris. Le plus cher reste le connecteur CPU KEL car assez rare.

Va falloir tout souder maintenant : fonctionne-t-elle ?

Si vous avez des idées pour améliorer cette carte, allez-y en commentaires...
    

dimanche 30 juin 2019

Antirouille

Quel est le métal utilisé pour nos coques de protection Amiga ? Quelqu'un sait ? Ou comment savoir ?

Essai donc aujourd'hui avec le plus petit composant d'une de 1200 :

L'idée est de chauffer cette partie métallique à plus de 300° pour ensuite la plonger telle quelle dans un récipient d'huile d'Olives :

Tentative dans un four, température maximum pendant environ 10 minutes, mais échec lors de la plongée, aucun résultat. Chaleur insuffisante.

Essayons maintenant avec un décapeur thermique. 500° insuffisant également :

Mais au maxi 650° ça marche. Le métal change de couleur au contact avec l'huile :

Mieux vaudrait utiliser un chalumeau pour monter encore en température.
 
Premier essai, technique à explorer d'avantage bien sûr. Résultat tout de même satisfaisant. Parait-il que maintenant, le métal est devenu résistant à la rouille.

Il faudra trouver une autre idée pour le reste du coffrage beaucoup plus grand...
    

samedi 29 juin 2019

BVision écrous

Une toute petite upgrade ce matin sur mes deux BVisions chéries :

Eh oui, certains vont sourire, mais ce soudage de petits écrous par Phase5 ou DCE auraient sauvé bien des BVisions, car j'ai vu plusieurs bourrins ayant utilisé des vis trop grandes et ainsi endommagé irrémédiablement leurs cartes...

Maintenant équipée avec ces écrous salvateurs, impossible d'utiliser autre chose que le M2 obligatoire...

Elles étaient bien ces cartes, malheureusement inexploitées avec des pilotes Warp3D 68k très lents, le système RTG sur disque dur et aucun refroidissement d'origine...

Phase5, DCE et Hyperion ont tout gâché comme d'habitude avec leurs produits volontairement non terminés, les petits détails faisant les grandes différences comme chacun sait...
   

mercredi 19 juin 2019

Prometheus A4000D

Tiens, je retrouve un vieux projet quasi-fini depuis longtemps sous Eagle avec les schematics. Dommage le site qui proposait les rendus 3D n'existe plus :

Je voulais rajouter aussi l'AutoMonitorSwitch, reversé sous Eagle :

Alors, y a-t-il un réel intérêt de continuer et d'en faire fabriquer aujourd'hui ? Ce sont des cartes PCI difficilement trouvables actuellement...

Il y a quelques années, j'avais écrit une lettre recommandée en franglais à NVidia qui avait racheté 3dfx à l'époque afin d'éliminer un concurrent pour savoir s'ils pouvaient nous aider, mais aucune réponse...
  

lundi 3 juin 2019

Shield

Un petit rajeunissement du coffret de mon 500 qui a quelques légères tâches un peu partout :

De la peinture en spray qui va bien :

Le résultat est nickel :

Des rondelles pour protéger la peinture :

Et voilà :
  
Très content !
  

vendredi 31 mai 2019

DLHack (A4000D)

Ici aujourd'hui un nouveau petit hack dans le même veine que celui de la 3640, mais cette fois pour overclocker la carte mère du 4000D.

Il suffit tout simplement de prendre une tige comme celle-ci et la plier à la bonne longueur avec son JMP de façon à toucher la pinoche 4 (2 = 10ns) du Delay Line EP8700:

Ensuite soudons :

Nickel, ça tient très bien, aucun besoin de rajouter quoique ce soit... Peut-être éventuellement un peu de colle chaude, mais bon :

Le placement d'origine de J100 sur INT connectait le Delay Line sur sa broche 12 (3 = 15ns), nous obtenons cette fois une nouveau délais de 10ns avec cette broche 4 (2 = 10ns).

Plus d'informations dans un prochain article...
   

dimanche 26 mai 2019

Eau de Javel

Petit lavage ce matin d'un clavier de 500 qui en avait bien besoin. Petite astuce en ajoutant un peu de Javel à l'eau chaude qui est très efficace pour les touches :

Ensuite en rinçant bien à l'eau froide ensuite, le résultat est impec !
    

lundi 13 mai 2019

PVS 3.7

Une nouvelle version de PVS supportant les cartes graphiques RTG Picasso96 GBAPII++.

En effet, deux versions sont disponibles, celle pour le GBA1000 déjà :
 
Et une adaptation pour Zorro 2 :

Ah et en cherchant sur le Web, une troisième est disponible pour les réplicas Ami-ITX :

Dommage qu'elles ne disposent que de 2 Mo de VRam...
 
Un utilisateur vient de vérifier, marche impec :
   
PVS 3.7 disponible ici.