Emulateur
Modérateur : Politburo
- Fabrice Montupet
- Administrateur
- Messages : 11106
- Enregistré le : 17 mai 2002 11:39
- Localisation : Nevers - France
- gatesbillou
- Fonctionne à 75 bauds
- Messages : 60
- Enregistré le : 06 oct. 2005 23:48
J'ai le datasheet du 5220 si ca interresse (synthetiseur vocale).
Pour ce qui est du TMS7000 j'ai deja mis le lien ici :
viewtopic.php?t=253&postdays=0&postorder=asc&start=45
Aujourd'hui je me suis fait donné un désasembleur de BIOS (XDASM) il va nous permettre de désassembler le code du TMS7000 dès qu'on l'aura récupéré, j'ai aussi récupéré un assembleur TMS7000 ,DONC , on peut faire ce qu'on ferait avec EXELMAX normalement appart qu'il faut transferer le fichier a chaque fois
ps :J'ai scanné le dernier numero d'exelement votre , il sera bientot dispo sur abandon magazine et je scanne le numero 16 dès que possible.
Pour gilles : Manuel technique ,schema,etc .. on doit trouver tout ca normalement ; fabrice a fait une grosse partie du travail ; les opcodes asm on les a déja avec le codage binaire et le temps pour chaque instruction
reste a savoir programme un émulateur .....
Pour ce qui est du TMX3556 (donc un TMS3556) l'émulateur XMAME le connait déja puisque Raphael Nabet a écrit un émulateur :
http://www.visionlab.uncc.edu/websvn/fi ... ev=74&sc=1
Le TMS7020 a 2Ko de ROM (de sure) et le TMS7041 doit en avoir 4 mais c'est a verifier.
Pour ce qui est du TMS7000 j'ai deja mis le lien ici :
viewtopic.php?t=253&postdays=0&postorder=asc&start=45
Aujourd'hui je me suis fait donné un désasembleur de BIOS (XDASM) il va nous permettre de désassembler le code du TMS7000 dès qu'on l'aura récupéré, j'ai aussi récupéré un assembleur TMS7000 ,DONC , on peut faire ce qu'on ferait avec EXELMAX normalement appart qu'il faut transferer le fichier a chaque fois
ps :J'ai scanné le dernier numero d'exelement votre , il sera bientot dispo sur abandon magazine et je scanne le numero 16 dès que possible.
Pour gilles : Manuel technique ,schema,etc .. on doit trouver tout ca normalement ; fabrice a fait une grosse partie du travail ; les opcodes asm on les a déja avec le codage binaire et le temps pour chaque instruction
reste a savoir programme un émulateur .....
Pour ce qui est du TMX3556 (donc un TMS3556) l'émulateur XMAME le connait déja puisque Raphael Nabet a écrit un émulateur :
http://www.visionlab.uncc.edu/websvn/fi ... ev=74&sc=1
Le TMS7020 a 2Ko de ROM (de sure) et le TMS7041 doit en avoir 4 mais c'est a verifier.
Excellent, il y a le datasheet de la famille TMS7000.
Apparemment, la map mémoire est unifiée, ce qui veut dire qu'on devrait pouvoir récupérer le contenu de la ROM interne avec un simple petit programme.
Ca a l'air d'être confirmé par ce qu'il est écrit dans la doc tms7000assembly, en intro du chapitre 3.2.2.
Apparemment, la map mémoire est unifiée, ce qui veut dire qu'on devrait pouvoir récupérer le contenu de la ROM interne avec un simple petit programme.
Ca a l'air d'être confirmé par ce qu'il est écrit dans la doc tms7000assembly, en intro du chapitre 3.2.2.
"Pour finir, faut commencer."
"Il faut être un peu félé pour laisser passer la lumière".
"Il faut être un peu félé pour laisser passer la lumière".
- gatesbillou
- Fonctionne à 75 bauds
- Messages : 60
- Enregistré le : 06 oct. 2005 23:48
Pour répondre à ma question , voici le code désassemblé du POKE qui désactive la protection en lecture.
Pour rappel :
- Pour empêcher la lecture du code source d'un programme Basic :
CALL POKE(50500,136,15,0,14,246,215,1,36,32,130,46,10):CALL EXEC(50500)
-> pour rendre à nouveau lisible le code source, refrapper la même commande en remplaçant le 36 par un 37
deproteger :
MOVD %00F00H,00EH
TRAP 9
SWAP 001H
OR %020H,A
MOVP A,12EH
RETS
proteger :
MOVD %00F00H,00EH
TRAP 9
SWAP 001H
XOR %020H,A
MOVP A,12EH
RETS
Essai d'explication :
1) Met à l'adresse %00FF00h la valeur 00Eh
2) Appel sous-programme 9 (qui fait quoi ?)
3) Interverti les 4 premiers et les 4 derniers bits du registre numero 1 (A?)
4) Ou exclusif de A avec l'adresse %020h
5) Transfert A sur le port 12Eh ?????
6) Retour au programme appelant (retour au programme basic).
Le 36 dans la ligne POKE correspond à on OU INCLUSIF alor que le 37 correspond à on OU EXCLUSIF (pour rappel OR ->Inclusif alors que XOR ->Exclusif).
Le désassemblage semble correct dans les opcodes décodés (verif manuelle).
Puisque j'y suis je continue :
- Pour effacer la ligne de service... celle avec <shift> <radian> :
CALL POKE(50432,162,5,45,162,137,45,10,162,5,45,162,200,45,10):CALL EXEC(50432)
MOVP %005H,12DH
MOVP %089H,12DH
RETS
;
MOVP %005H,12DH
MOVP %0C8H,12DH
RETS
PS : A propos du VDP (Video Display Processor) il y a des infos sur Exelement votre numero 15 à la page 35).
Pour rappel :
- Pour empêcher la lecture du code source d'un programme Basic :
CALL POKE(50500,136,15,0,14,246,215,1,36,32,130,46,10):CALL EXEC(50500)
-> pour rendre à nouveau lisible le code source, refrapper la même commande en remplaçant le 36 par un 37
deproteger :
MOVD %00F00H,00EH
TRAP 9
SWAP 001H
OR %020H,A
MOVP A,12EH
RETS
proteger :
MOVD %00F00H,00EH
TRAP 9
SWAP 001H
XOR %020H,A
MOVP A,12EH
RETS
Essai d'explication :
1) Met à l'adresse %00FF00h la valeur 00Eh
2) Appel sous-programme 9 (qui fait quoi ?)
3) Interverti les 4 premiers et les 4 derniers bits du registre numero 1 (A?)
4) Ou exclusif de A avec l'adresse %020h
5) Transfert A sur le port 12Eh ?????
6) Retour au programme appelant (retour au programme basic).
Le 36 dans la ligne POKE correspond à on OU INCLUSIF alor que le 37 correspond à on OU EXCLUSIF (pour rappel OR ->Inclusif alors que XOR ->Exclusif).
Le désassemblage semble correct dans les opcodes décodés (verif manuelle).
Puisque j'y suis je continue :
- Pour effacer la ligne de service... celle avec <shift> <radian> :
CALL POKE(50432,162,5,45,162,137,45,10,162,5,45,162,200,45,10):CALL EXEC(50432)
MOVP %005H,12DH
MOVP %089H,12DH
RETS
;
MOVP %005H,12DH
MOVP %0C8H,12DH
RETS
PS : A propos du VDP (Video Display Processor) il y a des infos sur Exelement votre numero 15 à la page 35).
- gilles
- Fonctionne à 9600 bauds
- Messages : 3100
- Enregistré le : 17 avr. 2007 21:25
- Localisation : 44
- Contact :
En tout cas ce ne serait pas la premiere fois que je parcours du code de Raphael. Il avait bien avancé le support du lisa sur mame (mais avait oublié l'essentiel (à savoir le support des erreurs de bus)).gatesbillou a écrit :
Pour gilles : Manuel technique ,schema,etc .. on doit trouver tout ca normalement ; fabrice a fait une grosse partie du travail ; les opcodes asm on les a déja avec le codage binaire et le temps pour chaque instruction
reste a savoir programme un émulateur .....
Pour ce qui est du TMX3556 (donc un TMS3556) l'émulateur XMAME le connait déja puisque Raphael Nabet a écrit un émulateur :
http://www.visionlab.uncc.edu/websvn/fi ... ev=74&sc=1
Le TMS7020 a 2Ko de ROM (de sure) et le TMS7041 doit en avoir 4 mais c'est a verifier.
Pour écrire un émulateur (soft), plusieurs options sont possibles. L'une d'entre elle étant de développer un driver mess (extension de mame pour les ordis). le code à développer sera réduit mais cela peut être un piège si des mauvais choix ont été faits pour l'émulation des composants repris.
Sinon le dev from scratch est toujours interessant. Pour ma part je commencerai probablement en java, je pense que ce langage a un bon potentiel pour l'émulation (voir thread thomson).
- gatesbillou
- Fonctionne à 75 bauds
- Messages : 60
- Enregistré le : 06 oct. 2005 23:48
Je ne sais programmer qu'en pascal et en assembleur x86.
Pour ce qui est de l'annalyse du code assembleur TMS7000 c'est pas si difficile que ca , je peux me charger de l'interpreter.
Par contre pour ce qui est de créer un emulateur , c'est autre chose ; je ne connais pas le java , mais j'ai quand même un doute sur ses capacitées a pouvoir faire ce qu'on veut ,je penche plutot sur le C ou Le Pascal ou l'assembleur (gilles ,si tu t'y connais en java dis nous si c'est possible ou pas).
Un emulateur c'est pas pour demain mais c'est pas perdu , surtout que je me rend compte tous les jours qu'il n'est pas si compliqué que ca cet exeltel ; en fin de compte c'est que deux ingenieurs qui on tout fait , donc avec du temps on dois comprendre nous aussi , puis dans tout les cas , on ne perd pas de temps à l'étudier
Si seulement on avait la méthode pour créer un emulateur ...
Bon , moi je vais essayer dans mon coin d'émuler le TMS7000,jecontinue à explorer les codes asm et je scanne mes documentations.
Pour ce qui est de l'annalyse du code assembleur TMS7000 c'est pas si difficile que ca , je peux me charger de l'interpreter.
Par contre pour ce qui est de créer un emulateur , c'est autre chose ; je ne connais pas le java , mais j'ai quand même un doute sur ses capacitées a pouvoir faire ce qu'on veut ,je penche plutot sur le C ou Le Pascal ou l'assembleur (gilles ,si tu t'y connais en java dis nous si c'est possible ou pas).
Un emulateur c'est pas pour demain mais c'est pas perdu , surtout que je me rend compte tous les jours qu'il n'est pas si compliqué que ca cet exeltel ; en fin de compte c'est que deux ingenieurs qui on tout fait , donc avec du temps on dois comprendre nous aussi , puis dans tout les cas , on ne perd pas de temps à l'étudier
Si seulement on avait la méthode pour créer un emulateur ...
Bon , moi je vais essayer dans mon coin d'émuler le TMS7000,jecontinue à explorer les codes asm et je scanne mes documentations.
En Java c'est possible of course.
Gilles, si tu te lances et que je peux aider, pas de souci
Bon après il faut bien avouer qu'un driver MESS ça serait la grande classe mais ça peut être étudié dans un 2eme temps.
Gilles, si tu te lances et que je peux aider, pas de souci
Bon après il faut bien avouer qu'un driver MESS ça serait la grande classe mais ça peut être étudié dans un 2eme temps.
"Pour finir, faut commencer."
"Il faut être un peu félé pour laisser passer la lumière".
"Il faut être un peu félé pour laisser passer la lumière".
- gilles
- Fonctionne à 9600 bauds
- Messages : 3100
- Enregistré le : 17 avr. 2007 21:25
- Localisation : 44
- Contact :
c'est clair que j'ai bien envie de bosser sur le sujet.
Je me suis imprimé la doc texas sur les processeur 7000 et effectivement cela semble relativement classique (meme si fiabiliser un nouveau code d'emulation de processeur est toujours un peu long).
Il est possible d'écrire l'emu en C, C++, java, voire en ASM mais pour moi le plus simple sera C ou java. J'ai déjà pas mal de code pour faire un emu en C donc pour une première version ce serait probablement le meilleur choix.
Je propose de créer un projet sur sourceforge, cela permettra au moins de mettre les docs en commun.
Je me suis imprimé la doc texas sur les processeur 7000 et effectivement cela semble relativement classique (meme si fiabiliser un nouveau code d'emulation de processeur est toujours un peu long).
Il est possible d'écrire l'emu en C, C++, java, voire en ASM mais pour moi le plus simple sera C ou java. J'ai déjà pas mal de code pour faire un emu en C donc pour une première version ce serait probablement le meilleur choix.
Je propose de créer un projet sur sourceforge, cela permettra au moins de mettre les docs en commun.
- gatesbillou
- Fonctionne à 75 bauds
- Messages : 60
- Enregistré le : 06 oct. 2005 23:48
- jvernet
- Fonctionne à 14400 bauds
- Messages : 7958
- Enregistré le : 24 mai 2002 09:57
- Localisation : France 69
- Contact :
Cool, ça, plein de talents sur cet emulateur manquant !
Si je peux aider, ce sera avec plaisir. Pensez à nous (MacUser PPC), evitez les machins Windows Only !
Si je peux aider, ce sera avec plaisir. Pensez à nous (MacUser PPC), evitez les machins Windows Only !
"l'ordinateur et l'homme sont les deux opposés les plus intégraux qui existent. L'homme est lent, peu rigoureux et très intuitif. L'ordinateur est super rapide, très rigoureux et complètement con."
- gilles
- Fonctionne à 9600 bauds
- Messages : 3100
- Enregistré le : 17 avr. 2007 21:25
- Localisation : 44
- Contact :
une bonne nouvelle de plus: il y a déjà un émulateur de TMS70x0 (donc de 7020) dans MESS. MESS étant GPL il est possible de repartir de ce code (avec tous les "credits" qui vont avec bien entendu).
par contre il implémente visiblement le mode singlechip uniquement alors qu'il me semble que l'exl100 soit en full expanded.
[edit]
en regardant les sources MESS de plus près, il y a bien un driver EXL100/EXELTEL incomplet.
par contre il implémente visiblement le mode singlechip uniquement alors qu'il me semble que l'exl100 soit en full expanded.
[edit]
en regardant les sources MESS de plus près, il y a bien un driver EXL100/EXELTEL incomplet.
- gatesbillou
- Fonctionne à 75 bauds
- Messages : 60
- Enregistré le : 06 oct. 2005 23:48
" Les composants "monochip" peuvent fonctionner seuls ou en mode étendu, c'est dans ce deuxième mode que le TMS7020 fonctionne dans l'EXL100. " extrait de l'exelent site de fabrice : http://perso.orange.fr/fabrice.montupet/exl100.htm
Le TMS7020 à 2Ko de ROM et utilise ses port d'entrée-sortie pour adresser la memoire supplementaire (puisque mode étendu).
Il faut don recupérer la ROM du TMS7020 et l'integrer à l'émulateur dans un tableau de 2ko ; comme le dit Torlus ca doit être possible de le lire.
Le TMS7020 à 2Ko de ROM et utilise ses port d'entrée-sortie pour adresser la memoire supplementaire (puisque mode étendu).
Il faut don recupérer la ROM du TMS7020 et l'integrer à l'émulateur dans un tableau de 2ko ; comme le dit Torlus ca doit être possible de le lire.