J'essaie d'utiliser l'extra-moniteur du TO8 pour faire du calcul flottant.
Je voudrais dans un premier temps convertir une chaine en format interne puis reconvertir le format interne en chaine de caractères.
J'ai un peu lu "manuel technique des TO8/TO9 et TO9+" où le fonctionnement est décrit.
On peut y lire :
et aussi :
et encore :
J'ai codé un programme pour tester de cette façon:
Code : Tout sélectionner
(main)MAIN.ASM * Marquage du programme principal
ORG $A000
EXTRA EQU $EC0C
RESETW EQU 01
FIN EQU 65
PUFOUT EQU 66
VALTYP EQU $6105 * Type de l accu (a 4)
FACEXP EQU $614E * Exposant binaire (de -128 a +127)
FACHO EQU $614F * mantisse 24bits, poids forts
FACMO EQU $6150 * mantisse poids moyen
FACLO EQU $6151 * mantisse poids faibles
FACSGN EQU $6156 * signe de l'accumulateur
DPWID EQU $617A * nombre de chiffres apres la virgule
FLDWID EQU $617B * nombre de chiffres avant la virgule
PUMASK EQU $617C * Masque de sortie pour le formatage
FLAG EQU *
LDB #RESETW
JSR EXTRA
LDX #4
STX VALTYP
FLAG1 EQU *
LDY #NUM
LDB #FIN
JSR EXTRA
FLAG2 EQU *
LDX #4
STX VALTYP
LDX #4
STX DPWID
LDX #4
STX FLDWID
LDX #129
STX PUMASK
LDY #PU
LDB #PUFOUT
JSR EXTRA
SWI
RTS
NUM FCS "100.0",0
PU FCS "###.###",0
HUN FCB 135,200,0,0
BUF EQU $B000
La conversion chaine -> format interne à l'air de fonctionner puisque je retrouve bien la valeur de l'exemple du livre ($87 $C8 $00 $00) dans FACEXP en $614E:
Par contre je n'arrive pas à faire format interne -> chaine
On voit un début de conversion : ###.### -> ## 0.## mais ça ne marche pas.
Quelqu'un a t'il déjà réussi à utiliser ces fonctions ?