[THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par Daniel »

Il ne suffit pas de mettre un point d'arrêt quand le programme est en cours d'exécution, car il peut passer plusieurs fois au même point d'arrêt avec des états différents. On peut seulement comparer la RAM au premier passage à un point d'arrêt. Si les deux émulateurs n'ont pas effectué exactement le même nombre d'instructions, même si l'adresse est identique, le contenu de la RAM est différent.

Je n'ai toujours pas compris la finalité de l'opération. Si le jeu fonctionne exactement pareil dans les deux émulateurs et avec la vraie machine, que demander de plus ? S'il y a un bug dans un émulateur il faut le signaler et l'auteur corrigera.
Daniel
L'obstacle augmente mon ardeur.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par jasz »

Olivier avec un Z, as tu essayé sur une vraie machine dans ta lourde tâche :?: Ou à comprendre comment le programme fonctionne? :idea:
Avatar de l’utilisateur
OlivierZ
Messages : 16
Inscription : 11 déc. 2020 23:30
Localisation : Courbevoie

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par OlivierZ »

jasz a écrit : 22 déc. 2020 17:13 Olivier avec un Z, as tu essayé sur une vraie machine dans ta lourde tâche :?: Ou à comprendre comment le programme fonctionne? :idea:
La vraie machine, elle n'est pas disponible... ni sur Ebay ni sur le Bon Coin... à moins d'avoir 500 euros à mettre pour un TO8D dispo en Angleterre...

Donc en attendant, je me raccroche comme je peux aux émulateurs disponibles et j'essaye de voir lequel serait le plus proche de la vraie machine.

Je vais aller désassembler les Passagers du Vent pour comprendre si c'est le programme qui influe, par exemple, sur la sélection de la Page Ram ou si c'est plutôt l'émulateur et/ou la ROM qui oriente le choix du programme.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par jasz »

OlivierZ a écrit : 22 déc. 2020 17:35 (..) j'essaye de voir lequel serait le plus proche de la vraie machine
Si tu ne connais pas la vraie machine, la tâche va être difficile.
Les émulateurs sont tous différents, c'est ce qui fait leur originalité. Mais en aucun cas ils modifient la ROM virtuelle.

[edit] infos inutiles
Dernière modification par jasz le 22 déc. 2020 18:47, modifié 1 fois.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par Daniel »

Au risque de passer pour un lourdaud, je n'ai toujours pas compris le problème.

Y a-t-il un problème quand on exécute Les Passagers du Vent avec Teo ?
Y a-t-il un problème quand on exécute Les Passagers du Vent avec dcmoto ?
Y a-t-il une différence de comportement entre les deux émulateurs ?
Si oui quelle est-elle ?
Sinon pourquoi vouloir comparer les contenus de la RAM ?

L'émulateur le plus proche de la vraie machine est Teo, car il émule le contrôleur de disquette. Dans dcmoto il y a seulement un détournement des points d'entrées du contrôleur.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par __sam__ »

Une remarque au passage à propos des numérotations. Si l'un affiche 2 et l'autre 3, cela ne signifie pas forcement des pages ram différentes. Tout dépends s'ils commencent à compter à partir de 0 ou de 1 peut-être. C'est d'autant plus évident que le numéro de banque pour le basic ne correspond pas à la banque physique et qu'il y a là aussi un décalage.

Donc la question serait plutôt de s'assurer que les numéros affichés correspondent à la même chose ou pas (banque physique, ou banque pour le basic, numérotation de 0 à 31 ou de 1 à 32 ).
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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par Daniel »

Dans dcmoto le numéro de banque est la valeur écrite dans le registre $E7E5, de $00 à $1F (de 0 à 31).
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par __sam__ »

J'ai l'impression que c'est pareil pour teo 1.8.5.

A noter au niveau de la fidélité de l'émulation, teo a l'air de simuler le fonctionnement du 6809 au tick d'horloge et valeur sortie sur le bus de donnée près. Cela signifie que TEO ne va lire ou écrire les données en mémoire précisément à la bonne microseconde (pour ce que j'ai pu en juger dans l'émul)
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
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par gilles »

ce n'est pas une impression, c'est le gros update d'il y a quelques années. Dans la mesure ce ce qui est documenté, l'émulation du 6809 est fait par top d'horloge (depuis 2014 dans les sources), ca doit faire la 1.8.3 il me semble
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par gilles »

Comme prévu le plus dur était de trouver un moyen de compiler avec un windows moderne en compatibilité win9x et avec des outils libres.
A force j'ai trouvé les outils nécessaires (dont principalement TDM GCC 4.9 en 32 bits et le spinoff moderne de DEV C++).

Il y a donc une BETA de la version 1.8.5 windows sur sourceforge :
https://sourceforge.net/projects/teoemu ... dows/BETA/

avec chargement/sauvegarde de snapshot dans le debugger (appel par F12)
et modif dans le calcul de la taille des sections du snapshot (méthode un peu différente du patch, qui devrait être générique)
Avatar de l’utilisateur
OlivierZ
Messages : 16
Inscription : 11 déc. 2020 23:30
Localisation : Courbevoie

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par OlivierZ »

Merci pour cette nouvelle mouture de l'émulateur.

J'ai pu tester la création / chargement des Snapshots et tout semble fonctionner correctement (peut être que le message 'OK' que l'on reçoit après la création du fichier n'est pas indispensable, j'ai tendance à plutôt privilégier les messagebox lors des erreurs).

J'ai pu également valider que le bug sur le format de sauvegarde avait été corrigé. Merci pour ta réactivité.

J'ai vu que la taille de l'exe avait sensiblement augmentée (270 KB vs 20 MB). Est-ce du à la nouvelle méthode de compilation ? (linkage statique des composants Allegro ? Présence des infos de Debug ?)

Dans la version précédent, j'avais un Bug lié au son. J'ai un PC qui des fois à des conflits pour l'attribution du device de sortie sonore ce qui fait que l'appel à l'API Win 32 waveOutOpen() échoue. Lorsque cela est le cas et que je lance Teo, l'émulateur démarre, sa fenêtre principale s'affiche mais visiblement le code n'atteint pas la boucle des événements GetMessage() / TranslateMessage() / DispatchMessage() car je n'arrive pas à quitter le programme via les boutons de l'interface et je dois killer le process. Est-ce que la gestion du son en version Windows du programme est géré côté Allegro ou directement géré par le code de l'émulateur ?

Olivier
Avatar de l’utilisateur
OlivierZ
Messages : 16
Inscription : 11 déc. 2020 23:30
Localisation : Courbevoie

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par OlivierZ »

J'ai eu besoin d'aller décoder le Basic 512 des TO-MO et n'ayant pas trouvé de documentation bas niveau, j'ai fait un peu de reverse-engineering pour extraire le format en mémoire. Je publie ici une fiche technique pour ceux (dont le robot google) qui en aurait besoin.

- Adresse en mémoire du code basic : $A001
- Format d'une ligne :
WORD line_length; /* Format Big Endian, longueur totale de la ligne incluant line_length, line_number, line_data et end_of_line */
WORD line_number; /* Format Big Endian, numéro de la ligne */
BYTE line_data[]; /* N bytes codant les données de la ligne (N = line_length - 5) */
BYTE end_of_line; /* Toujours 0x00 */
- Fin du programme : Une ligne où line_length est à 0x0000.

Les données d'une lignes sont composées :
- de Tokens doubles (Constante 0xFF + Token Byte avec le Bit 7 à 1 => Tableau tab_token_ff[]
- de Tokens simples (Token Byte avec le Bit 7 à 1 => Tableau tab_token[])
- de caractères spéciaux (Accents, Caractères monétaires, Flèches... Constante 0x16 + 1 ou 2 octets, cf Manuel Technique p 171)
- de caractères ascii (tout le reste).

Tableaux des Tokens :

Code : Tout sélectionner

  /** TOKEN [80-FE] **/
  char *tab_token[128] = 
    {
        /* 0 8 */   /* 1 9 */   /* 2 A */   /* 3 B */   /* 4 C */  /* 5 D */   /* 6 E */   /* 7 F */
/* 8 */ "END",      "FOR",      "NEXT",     "DATA",     "DIM",     "READ",     "LET",      "GO",
        "RUN",      "IF",       "RESTORE",  "RETURN",   "REM",     "'",        "STOP",     "ELSE",
/* 9 */ "TRON",     "TROFF",    "DEFSTR",   "DEFINT",   "DEFSNG",  "DEFDBL",   "ON",       "WAIT",
        "ERROR",    "RESUME",   "AUTO",     "DELETE",   "LOCATE",  "CLS",      "CONSOLE",  "PSET",
/* A */ "MOTOR",    "SKIPF",    "EXEC",     "BEEP",     "COLOR",   "LINE",     "BOX",      "UNMASK",
        "ATTRB",    "DEF",      "POKE",     "PRINT",    "CONT",    "LIST",     "CLEAR",    "INTERVAL",
/* B */ "KEY",      "NEW",      "SAVE",     "LOAD",     "MERGE",   "OPEN",     "CLOSE",    "INPEN",
        "PEN",      "PLAY",     "TAB(",     "TO",       "SUB",     "FN",       "SPC(",     "USING",
/* C */ "USR",      "ERL",      "ERR",      "OFF",      "THEN",    "NOT",      "STEP",     "+",
        "-",        "*",        "/",        "^",        "AND",     "OR",       "XOR",      "EQV",
/* D */ "IMP",      "MOD",      "@",        ">",        "=",       "<",        "DSKINI",   "DSKO$",
        "KILL",     "NAME",     "FIELD",    "LSET",     "RSET",    "PUT",      "GET",      "VERIFY",
/* E */ "DEVICE",   "DIR",      "FILES",    "WRITE",    "UNLOAD",  "BACKUP",   "COPY",     "CIRCLE",
        "PAINT",    "RESET",    "RENUM",    "SWAP",     "?EC?",    "WINDOW",   "PATTERN",  "DO",
/* F */ "LOOP",     "EXIT",     "INMOUSE",  "MOUSE",    "CHAIN",   "COMMON",   "SEARCH",   "FWD",
        "TURTLE",   "?F9?",     "?FA?",     "?FB?",     "?FC?",    "?FD?",     "?FE?",     "?FF?",
    };   

  /** TOKEN FF+[80-C0] **/    
  char *tab_token_ff[128] = 
    {        
        /* 0 8 */  /* 1 9 */   /* 2 A */  /* 3 B */   /* 4 C */  /* 5 D */  /* 6 E */ /* 7 F */
/* 8 */ "SGN",     "INT",      "ABS",     "FRE",      "SQR",     "LOG",     "EXP",    "COS",
        "SIN",     "TAN",      "PEEK",    "LEN",      "STR$",    "VAL",     "ASC",    "CHR$",
/* 9 */ "EOF",     "CINT",     "CSNG",    "CDBL",     "FIX",     "HEX$",    "OCT$",   "STICK",
        "STRIG",   "GR$",      "LEFT$",   "RIGHT$",   "MID$",    "INSTR",   "VARPTR", "RND",
/* A */ "INKEY$",  "INPUT",    "CSRLIN",  "POINT",    "SCREEN",  "POS",     "PTRIG",  "DSKF",
        "CVI",     "CVS",      "CVD",     "MKI$",     "MKS$",    "MKD$",    "LOC",    "LOF",
/* B */ "SPACE$",  "STRING$",  "DSKI$",   "FKEY$",    "MIN",     "MAX",     "ATN",    "CRUNCH$",
        "MTRIG",   "EVAL",     "PALETTE", "BANK",     "HEAD",    "ROT",     "SHOW",   "ZOOM",
/* C */ "TRACE",   "?C1?",     "?C2?",    "?C3?",     "?C4?",    "?C5?",    "?C6?",   "?C7?",
        "?C8?",    "?C9?",     "?CA?",    "?CB?",     "?CC?",    "?CD?",    "?CE?",   "?CF?",
/* D */ "?D0?",    "?D1?",     "?D2?",    "?D3?",     "?D4?",    "?D5?",    "?D6?",   "?D7?",
        "?D8?",    "?D9?",     "?DA?",    "?DB?",     "?DC?",    "?DD?",    "?DE?",   "?DF?",
/* E */ "?E0?",    "?E1?",     "?E2?",    "?E3?",     "?E4?",    "?E5?",    "?E6?",   "?E7?",
        "?E8?",    "?E9?",     "?EA?",    "?EB?",     "?EC?",    "?ED?",    "?EE?",   "?EF?",
/* F */ "?F0?",    "?F1?",     "?F2?",    "?F3?",     "?F4?",    "?F5?",    "?F6?",   "?F7?",
        "?F8?",    "?F9?",     "?FA?",    "?FB?",     "?FC?",    "?FD?",    "?FE?",   "?FF?"
    };
Exemple de Code Basic décodé :

Code : Tout sélectionner

10 PRINT "LINE 10"
20 PRINT "LINE 20"
30 PRINT "LINE 30"
40 PRINT "LINE 40"
50 PRINT "LINE 50"

A001  00 10 00 0A AB 20 22 4C 49 4E 45 20 31 30 22 00    ..... "LINE 10".
10 PRINT "LINE 10"

A011  00 10 00 14 AB 20 22 4C 49 4E 45 20 32 30 22 00    ..... "LINE 20".
20 PRINT "LINE 20"

A021  00 10 00 1E AB 20 22 4C 49 4E 45 20 33 30 22 00    ..... "LINE 30".
30 PRINT "LINE 30"

A031  00 10 00 28 AB 20 22 4C 49 4E 45 20 34 30 22 00    ...(. "LINE 40".
40 PRINT "LINE 40"

A041  00 10 00 32 AB 20 22 4C 49 4E 45 20 35 30 22 00    ...2. "LINE 50".
50 PRINT "LINE 50"

A051  00 00
Olivier
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par gilles »

Effectivement le binaire est beaucoup plus large que nécessaire, je suppose que c'est l'option -g3 qui provoque ça, je vais aussi stripper l'exécutable car il y a pas mal de parties non utilisées dans allegro. => la prochaine beta et la version définitive seront plus raisonnables (sans doute +- 1Mo pour le binaire seul).
Pour les boites d'alerte effectivement c'était pratique pendant le dev mais pas tellement à l'usage (surtout pour le load) => je vais supprimer s'il n'y a pas d'erreur, en version linux je n'ai pas mis ces alertes.

Dans les versions windows et DOS l'image et le son sont gérées par allegro avec une notion de driver interne à la librairie. Pour l'image ce sera par ordre de priorité DirectX (direct draw plus précisément) puis GDI. Pour le son je pense que c'est directSound puis Waveout
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [THOMSON - TEO Windows 1.8.4] Bug Report / Demande d'amélioration

Message par gilles »

Nouveau binaire dispo.

Petite modif ici (comme sur les version unix) si la disquette placée dans le slot 0 est double face (formats .hfe et .fd) alors le slot 1 (correspondant à la seconde face du premier lecteur TO8) est directement remplie avec le même fichier et la bonne face. => ça devrait correspondre à l'usage majoritaire. Pas de changement pour le SAP qui est un format ne comportant qu'une face.
Répondre