Question BASIC MO5
Modérateurs : Papy.G, fneck, Carl
-
- Messages : 7981
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Question BASIC MO5
Toutes ces adresses sont décrites dans le différents manuels techniques. Le site de Pulko résume aussi tout ca: https://pulkomandy.tk/wiki/doku.php?id= ... ions:start
https://pulkomandy.tk/wiki/doku.php?id= ... art#system
https://pulkomandy.tk/wiki/doku.php?id= ... art#system
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Question BASIC MO5
A la fin du Manuel du MO5 v2, pages 237 et suivantes, il y a un chapitre intitulé "Le Moniteur du MO5". Il donne pas mal d'adresses pouvant faire l'objet de POKE en BASIC, mais aussi les codes interprétables (page 246), les séquences utilisateur (page 247), les séquences d'échappement (page 248).
La documentation disponible donne beaucoup moins d'informations sur le BASIC, il faut les reconstituer. Un allemand a fait un énorme travail pour désassembler et commenter la ROM BASIC du MO5E, ce qui permet en particulier de retrouver la signification des vecteurs du BASIC en RAM.
La documentation disponible donne beaucoup moins d'informations sur le BASIC, il faut les reconstituer. Un allemand a fait un énorme travail pour désassembler et commenter la ROM BASIC du MO5E, ce qui permet en particulier de retrouver la signification des vecteurs du BASIC en RAM.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 407
- Inscription : 22 juil. 2020 20:56
Re: Question BASIC MO5
Je suis preneur pour ce désassemblage de la rom basic, elle se trouve sur le site de dcmoto ?
Sinon deux remarques d'ordre général pour tout le monde :
* on trouve pas mal d'info sur le basic dans le livre L'interpréteur Basic du TO7-70, ce livre existe-t-il sur MO5 ?
* pour bien utiliser les routines et adresses du moniteur, pour ceux qui sont à la recherche d'info, je ne peux que trop conseiller la lecture de 50 programmes en assembleur, le livre n'est pas pédagogique du tout, il ne faut absolument pas chercher à le parcourir dans l'ordre, et la deuxième moitié du livre est plus accessible que la première moitié (et finalement on apprend beaucoup sur l'utilisation des routines du moniteur). Je suis à la recherche de la cassette, quelq'un la possède-t-il ?
Une dernière question, le projet de la faq Thomson est-il toujours d'actualité ? Merci beaucoup par avance
Sinon deux remarques d'ordre général pour tout le monde :
* on trouve pas mal d'info sur le basic dans le livre L'interpréteur Basic du TO7-70, ce livre existe-t-il sur MO5 ?
* pour bien utiliser les routines et adresses du moniteur, pour ceux qui sont à la recherche d'info, je ne peux que trop conseiller la lecture de 50 programmes en assembleur, le livre n'est pas pédagogique du tout, il ne faut absolument pas chercher à le parcourir dans l'ordre, et la deuxième moitié du livre est plus accessible que la première moitié (et finalement on apprend beaucoup sur l'utilisation des routines du moniteur). Je suis à la recherche de la cassette, quelq'un la possède-t-il ?
Une dernière question, le projet de la faq Thomson est-il toujours d'actualité ? Merci beaucoup par avance
Re: Question BASIC MO5
Voici le désassemblage de la ROM du MO5E par Edilbert Kirk :
Il n'y a pas de version MO5 du livre sur l'Interpéteur Basic du TO7-70.
Depuis trente ans j'essaie de créer une FAQ, mais c'est un exercice très difficile car chaque utilisateur a des questions nouvelles. La doc MO5 de Pulkomandy est un bon début (lien donné par __sam__). Mais j'arrive à la conclusion qu'il vaut utiliser le forum pour les questions sans réponse dans la documentation. Il y a ici les meilleurs spécialistes Thomson et ils sont toujours prêts à répondre.
Il n'y a pas de version MO5 du livre sur l'Interpéteur Basic du TO7-70.
Depuis trente ans j'essaie de créer une FAQ, mais c'est un exercice très difficile car chaque utilisateur a des questions nouvelles. La doc MO5 de Pulkomandy est un bon début (lien donné par __sam__). Mais j'arrive à la conclusion qu'il vaut utiliser le forum pour les questions sans réponse dans la documentation. Il y a ici les meilleurs spécialistes Thomson et ils sont toujours prêts à répondre.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 407
- Inscription : 22 juil. 2020 20:56
Re: Question BASIC MO5
Merci pour la ROM
La FAQ ce n'est pas tant les questions pointues mais les questions souvent posées dont la réponse n'est pas forcément évidente.
La FAQ ce n'est pas tant les questions pointues mais les questions souvent posées dont la réponse n'est pas forcément évidente.
-
- Messages : 7981
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Question BASIC MO5
En fait sur Thomson il n'y a pas vraiment de questions sur les pokes.
Contrairement aux machines avec un basic moins riche où on doit faire des peek/poke/sys pour faire des trucs sympa (e.g. C64), le basic thomson permet de faire a peu près tout sans entrer dans du bas niveau avec des peek/poke/exec. Les adresses des registres d'IO ou les points d'entrée en ROM ne servent vraiment que lorsqu'on fait de l'Assembleur.
Contrairement aux machines avec un basic moins riche où on doit faire des peek/poke/sys pour faire des trucs sympa (e.g. C64), le basic thomson permet de faire a peu près tout sans entrer dans du bas niveau avec des peek/poke/exec. Les adresses des registres d'IO ou les points d'entrée en ROM ne servent vraiment que lorsqu'on fait de l'Assembleur.
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Question BASIC MO5
J'ai une question pour ceux qui ont regardé et compris le désassemblage de la ROM du MO5 : quels sont les algorithmes utilisés pour le calcul des fonctions transcendantes (sinus, exponentielle, logarithme) ? On calcule un bout du développement de Taylor ou c'est plus rusé ?
Asic512
-
- Messages : 7981
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Question BASIC MO5
Les fonctions sinus/cosinus ne sont pas dans la ROM du MO5 qui ne contient que des primitives d'entrées/sorties (afficher un caractère, lire un caractère, etc).
Les fonctions SIN/COS sont dans la ROM basic qui n'a pas été (à ma connaissance) désassemblée.
Je ne pense pas que Taylor soit utilisé. Il ne converge pas super vite et n'a pas une erreur homogène sur l'ensemble de l'intervalle considéré. Par contre ce qu'il se faisait à l'époque c'était les algos CORDIC qu'on retrouve dans toutes les calculettes.
De nos jours les bibliothèques logicielles se basent sur le Handbook of Mathematical Functions by Abramowitz & Stegun qui utilise les approximants de Padé (ou apparentés) pour donner d'excellents polynômes approximant les fonctions mathématiques. Ces polynomes ont l'avantage de converger assez vite, et surtout ils ont une erreur max meilleure que Taylor sur l'intervalle d'approximation.
Tu peux zieuter les algorithmes modernes par là: http://www.netlib.org/fdlibm/, exemple pour le sinus, on a un truc aussi simple que:(il y a plein de constantes magiques, mais au final très peu d'opérations).
Si tu recherches une bibliothèque Math pour le 6809, en voici une: https://github.com/6809/sbc09/blob/mast ... fbasic.asm, bien évidement il utilise les tables du Handbook of Mathematical Functions.
Les fonctions SIN/COS sont dans la ROM basic qui n'a pas été (à ma connaissance) désassemblée.
Je ne pense pas que Taylor soit utilisé. Il ne converge pas super vite et n'a pas une erreur homogène sur l'ensemble de l'intervalle considéré. Par contre ce qu'il se faisait à l'époque c'était les algos CORDIC qu'on retrouve dans toutes les calculettes.
De nos jours les bibliothèques logicielles se basent sur le Handbook of Mathematical Functions by Abramowitz & Stegun qui utilise les approximants de Padé (ou apparentés) pour donner d'excellents polynômes approximant les fonctions mathématiques. Ces polynomes ont l'avantage de converger assez vite, et surtout ils ont une erreur max meilleure que Taylor sur l'intervalle d'approximation.
Tu peux zieuter les algorithmes modernes par là: http://www.netlib.org/fdlibm/, exemple pour le sinus, on a un truc aussi simple que:
Code : Tout sélectionner
static double
half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */
S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */
S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */
S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */
S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
double __kernel_sin(double x, double y, int iy) {
double z,r,v;
int ix;
ix = __HI(x)&0x7fffffff; /* high word of x */
if(ix<0x3e400000) /* |x| < 2**-27 */
{if((int)x==0) return x;} /* generate inexact */
z = x*x;
v = z*x;
r = S2+z*(S3+z*(S4+z*(S5+z*S6)));
if(iy==0) return x+v*(S1+z*r);
else return x-((z*(half*y-v*r)-y)-v*S1);
}
Si tu recherches une bibliothèque Math pour le 6809, en voici une: https://github.com/6809/sbc09/blob/mast ... fbasic.asm, bien évidement il utilise les tables du Handbook of Mathematical Functions.
Dernière modification par __sam__ le 05 juin 2022 17:17, modifié 3 fois.
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 407
- Inscription : 22 juil. 2020 20:56
Re: Question BASIC MO5
L'autre jour Daniel avait donné un fichier de désassemblage d'une ROM BASIC Thomson, je ne sais plus dans quel message, donc je la reposte ici
- Pièces jointes
-
- MO5E.zip
- (81.95 Kio) Téléchargé 36 fois
-
- Messages : 407
- Inscription : 22 juil. 2020 20:56
Re: Question BASIC MO5
Il me semble aussi que l'ouvrage http://dcmoto.free.fr/documentation/int ... index.html traite superficiellement la question
Re: Question BASIC MO5
Le désassemblage de la ROM Basic MO5 est ici : viewtopic.php?f=25&t=13260&start=18
L'évaluation des fonctions trigonométriques est dans la routine Series_Evaluation (je n'ai pas eu le temps de l'analyser).
L'évaluation des fonctions trigonométriques est dans la routine Series_Evaluation (je n'ai pas eu le temps de l'analyser).
Code : Tout sélectionner
****************
FUNC_SIN ; $d7b5
****************
JSR Cast_ACA_Real
LDA ACA_EX
CMPA #$77 ; low exp ?
BLO EvSe_Ret ; -> value = argument
LDX #Two_Pi_Rev
BSR Jmp_ACA_Mult_X
JSR ACA_TO_ACB
JSR FUNC_INT
JSR ACB_MINUS_ACA
LDX #Real_0_25
JSR X_MINUS_ACA
LDA ACA_SI
PSHS A
BPL SIN_10
BSR ACA_Plus_0_5
LDA ACA_SI
BMI SIN_20
SIN_10 JSR Negate_ACA
SIN_20 LDX #Real_0_25
BSR Jmp_ACA_Plus_X
LDA ,S+
BPL SIN_30
JSR Negate_ACA
SIN_30 LDX #VAR_SIN
BRA Series_Evaluation
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7981
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Question BASIC MO5
Oh punaise je suis passé à coté de ce désassemblage.
C'est une évaluation de polynômes à la Horner sur une valeur x entre 0 et 1 (le nombre en entrée est ramené dans cet intervalle en prenant la partie fractionnaire de (input/2pi)). Les coefs sont adaptés pour réduire l'erreur sur cet intervalle je présume.
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Question BASIC MO5
Dans la pratique, les fonctions trigonométriques sont lentes en Basic.
Pour tracer un cercle, il ne faut jamais les utiliser. Un algorithme beaucoup plus simple, par exemple Bresenham, est beaucoup plus rapide.
Lorsqu'on utilise un nombre restreint de valeurs d'angles, par exemple pour afficher les aiguilles d'une horloge sur un cadran rond, il est préférable de mettre les valeurs dans une table pour ne les calculer qu'une seule fois en début de programme, ou mieux utiliser des constantes pré-calculées.
Pour tracer un cercle, il ne faut jamais les utiliser. Un algorithme beaucoup plus simple, par exemple Bresenham, est beaucoup plus rapide.
Lorsqu'on utilise un nombre restreint de valeurs d'angles, par exemple pour afficher les aiguilles d'une horloge sur un cadran rond, il est préférable de mettre les valeurs dans une table pour ne les calculer qu'une seule fois en début de programme, ou mieux utiliser des constantes pré-calculées.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 407
- Inscription : 22 juil. 2020 20:56
Re: Question BASIC MO5
Je me suis trompé d'ouvrage.
On trouve beaucoup d'infos intéressantes à ce sujet dans les livres la face cachée (du to7 et du mo5), à la fin du livre.
Pour le tracé de cercle (et l'utilisation d'une table) voir le livre 50 programmes en assembleur, qui explique comment faire.
On trouve beaucoup d'infos intéressantes à ce sujet dans les livres la face cachée (du to7 et du mo5), à la fin du livre.
Pour le tracé de cercle (et l'utilisation d'une table) voir le livre 50 programmes en assembleur, qui explique comment faire.
-
- Messages : 7981
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Question BASIC MO5
Pour le tracé de cercle il y a bien mieux que Bresenham. On en a parlé dans un autre forum.
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos