TO8, extramoniteur et flottants

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
z80¯\_(ツ)_/¯
Messages : 77
Inscription : 06 oct. 2020 13:15
Localisation : Bourgogne

TO8, extramoniteur et flottants

Message par z80¯\_(ツ)_/¯ »

Bonjour,

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 :

Image

et aussi :

Image

et encore :

Image

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:

Image


Par contre je n'arrive pas à faire format interne -> chaine

Image

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 ?
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO8, extramoniteur et flottants

Message par Fool-DupleX »

Tu utilises X pour charger des valeurs sur 8 bits ? Pas une bonne idée, tu écrases le registre suivant.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: TO8, extramoniteur et flottants

Message par __sam__ »

Oui c'est exactement ma réflexion que je me suis faite en lisant le code.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: TO8, extramoniteur et flottants

Message par Fool-DupleX »

En plus le résultat est off by 1, puisque typiquement un STX DPWID avec 4 va écrire 0 dans DPWID et 4 dans FLDWID (qui par chance est ce que tu veux)
Avatar de l’utilisateur
z80¯\_(ツ)_/¯
Messages : 77
Inscription : 06 oct. 2020 13:15
Localisation : Bourgogne

Re: TO8, extramoniteur et flottants

Message par z80¯\_(ツ)_/¯ »

Merci beaucoup, ça fonctionne nettement mieux.

Le programme:

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
		LDA #4
		STA VALTYP
		


FLAG1	EQU *
		LDY #NUM
		LDB #FIN
		JSR EXTRA
		

FLAG2	EQU *
		LDA #4
		STA VALTYP
		LDA #4
		STA DPWID
		LDA #4
		STA FLDWID
		LDA #129
		STA 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


Avant l'appel du monitor PUFOUT :
Image


Après l'appel du monitor PUFOUT :
Image

De plus, le registre FACMO contient A03B, ce qui est bien l'adresse du début de la chaine " 100.000E+00".
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: TO8, extramoniteur et flottants

Message par Daniel »

Après un LDA #4 le registre A contient la valeur 4. Il est inutile de faire à nouveau LDA #4 deux lignes plus loin.
Daniel
L'obstacle augmente mon ardeur.
Répondre