![]() |
Supercharger
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() Me plaît de manière incompréhensible. |
Voir les photos du Supercharger Plus L'extension 286 jamais commercialisée! ![]() |
Que peut-on en faire ? | Caractéristiques | |
Il s'agit d'un boîtier se plaçant dans la chaîne ACSI de l'Atari. Sa carte comporte un NEC V30 à 8MHz
(compatible 8086), un emplacement pour un 8087 (copro arithmétique) et un méga de Ram. C'est un
émulateur PC XT de grande qualité. Une carte mère "parasite" de l'Atari:
|
![]() |
Publisher sous PC Gem
en mode Hercules. |
![]() |
Windows 3.0 avec Write, le panneau de contrôle et mes réglages dans Setup. |
Jeux sous Windows 3.0, 8 balles dans JezzBall et j'ai pas fini! |
![]() |
Le FORTH propose des instructions de dialogue avec le Supercharger. La méthode est celle-ci:
|
Télécharger le source du programme. |
![]() |
Le mot install charge la Tool_Box grâce à sc_load. Si tout se passe bien, c'est sc_boot qui est ensuite appelé qui installe les routines également côté PC pour initier le dialogue. Pour finir, on appelle le mot verif qui utilise sc_check pour vérifier que l'installation est correcte. Il renvoit le numéro de version de la Tool_Box installée (1.50 normalement). |
On alloue un buffer en ST-Ram, ceci est indispensable car les transferts vers le SuperCharger se font via le DMA qui n'a pas accès à la TT-Ram.
Le mot pc_prog charge le binaire A_FPU (voir ci-dessous "Côté PC") qui est un exécutable x86 dans le buffer en ST-Ram. Ce programme est envoyé au NecV30 grâce à sc_sendm. Notez le format de l'adresse 0300000 qui correspond côté PC segment=0x0300 et offset=0x0000, c'est à dire l'adresse 0x3000. Il est ensuite exécuté par sc_exec, notez qu'on lui donne sa première adresse pour commencer l'exécution. Si tout se passe bien, le mot se termine par un message d'exécution. |
![]() |
![]() |
Le mot racine prend sur la pile un nombre réel, stocké grâce à if! (Intel Float Store) car côté PC tous les octets seront inversés.
Il est envoyé sur 8 octets avec sc_xsendm. C'est ensuite le programme PC qui en calcule la racine carrée. On récupère le résultat sur 8 octets avec sc_xgetm et on le retransforme avec if@ (Intel Float Recall). Ci-contre à droite, la fenêtre d'exécution du programme avec les calculs des racines carrées de 1024 et de 3 |
![]() |
![]() |
La directive >export permet de sauver les lignes suivants sous "A_FPU.S" jusqu'à la directive >comp.
Au départ, la ToolBox n'initialise que le Code Segment (CS), celui ci est copié dans ES et DS pour les autres accès aux données. Ensuite, Finit initialise le FPU. L'appel Int 60h avec ah=4 est le "receive data" des 8 octets du réel vers la variable real. Ensuite, le réel est chargé dans le fpu, on en prend la valeur absolue puis sa racine carrée et on le range à nouveau dans la variable real. Pour finir, l'appel à int 60h avec ah=5 correspond à "send data" avec les 8 octets de la variable real. Ce code est assemblé avec l'assembleur externe NASM.TTP qui est appelé par la directive >exec. Il fournira en sortie le binaire A_FPU chargé par le mot pc_prog. |
Voici le résultat du tracé en CGA après un quart d'heure de calcul (profondeur 240, ne tient pas compte de la symétrie pour être facilement adaptable à d'autres coordonnées). |
![]() |