[ EXELVISION ] initiation à l'assembleur pour TMS7020

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
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par 6502man »

J'ai cependant une question. Peut-on modifier l'adresse de la pile?
Tout est expliqué dans la première partie du cours (section PILE) : :wink:
viewtopic.php?f=25&t=7782#p124795
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par jasz »

Code : Tout sélectionner

$0000-$007F       :  Registres et Piles 
En gros la zone d'empilage se mélange avec la zone des registres et ne peut être délocalisée à l'adresse $2C00 par exemple. Donc si on définit une zone par:
LDB $20 (de $0020 à $007F)
LDSP
fait que si on a:
LDA $80
PUSHA
donc automatiquement R32 prend la valeur de $80 (-127) ou alors il y a un overflow à sa lecture?! Si on peut lire directement la valeur de Rxx après un empilage ça peut être assez intéressant. :)
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par jester »

Et il ne faut pas oublier la logique de tout ça: la série TMS 7000 est une série de micro-contrôleur autonome pour l'embarqué (voiture, jouet, machine, etc.). Un TMS 7000 peut se passer de RAM (grâce à ces nombreux registres internes qui peuvent être manipulés d'ailleurs comme une zone mémoire "classique", et ces nombreux port de communication), mais possède généralement sa propre ROM intégrée avec le code embarqué. Il peut bien sur adresser une RAM/ROM externe, mais ce n'est pas la philosophie de base.
D'où ces différents choix parfois bizarre...
Sa polyvalence permet chez Exelvision d'utiliser une petite SRAM de 2ko en accès direct, et de travailler en accès indirect (via port de comm) avec une DRAM bon marché de 32ko, et le firmware de base dans la ROM interne. Le micro-code des instructions machines est d'ailleurs reprogrammable pour disposer d'un jeu d'instruction dédié. C'est le cas pour les révisions dans les machines Exelvision pour optimiser la communication avec le VDP. Il est aussi étudié pour travailler en parallèle (c'est le cas chez Exelvision qui comprend 2 TMS7000: un comme CPU, l'autre comme contrôleur des E/S et du synthé vocal).

Cette architecture a montré qu'elle était peu adaptée à la micro-informatique (pour des jeux rapides il faut de la RAM à accès direct en bonne quantité, et un jeu d'instruction riche et rapide), mais pour l'industrie ça pouvait se comprendre.
En pratique, ce micro-contrôleur est très simple et agréable à programmer.

Et pour revenir sur la gestion de la pile... en pratique on utilise peu la pile, et son usage doit être très bien pensé. On évite surtout de l'utiliser pour empiler les paramètres lors d'un CALL, ou pour sauver des registres (à part les R0 et R1). L'usage de la pile pour la récursion est à proscrire par exemple: on doit se refaire une pile "utilisateur". C'est donc du cas par cas.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par 6502man »

Sur Exelvision il vaut mieux ne pas utiliser ou très rarement la PILE, ou alors se priver de l'usage des registres Rxx :roll:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par Papy.G »

Merci Jester de rappeler que ce n'est, à la base qu'un microcontrôleur, mais en plus des limitations de cette architecture, l'architecture de la machine peut les aggraver. Utiliser un microcontrôleur dans un ordinateur ou une console de jeux n'a pas toujours été un handicap rhédibitoire. Parfois, l'architecture peut aider à contourner certaines limites et transcender les capacités du microcontrôleur hébergé, c'est passé souvent par un support cartouche, mais il y a d'autres voies, selon les possibilités du µC visé. :P
Sur MCS51, la pile partage aussi la zone de Registres, je pense que le plus prudent est de la décaler systématiquement au-delà de la zone des banks de registres indexables et des registres testables bit par bit, quand on n'a que 128 octets, c'est un peu étroit peut-être, avec 256, ça laisse plus de marge. Après, le TMS n'est pas, lui non plus, un µC dont le jeu d'instruction est orienté "pile", ce n'est donc pas hyper pénalisant. :o
Le micro-code est reprogrammable à la volée, ou seulement une fois, lors de la programmation de la ROM interne? :?
Le TMS n'aurait pas eu moyen d'accéder à cette RAM de façon directe? A-t'on des exemples de machines pouvant accéder de façon directe à la mémoire vidéo (accessible aussi de façon directe au VDP, à tour de rôle)? Pour les jeux rapides, tu pense à des lourds scrolling, avec l'utilisation principale comme "mémoire vidéo"?
Pour un jeu d'aventure animé, il ne semble y avoir que le mode texte, à détourner pour faire des mozaïques, et éventuellement des animations du décor par modification des caractères.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par jester »

Le miro-code est reprogrammable en usine... à ce que j'en sais... peut être existait il des kits à l'époque ?

Pas d'accès direct à de la DRAM... mais à de la SRAM Oui, donc si un VDP utilise de la SRAM il est tout à fait envisageable de concevoir une architecture permettant au VDP et au TMS un accès direct à la SRAM.
Le problème est qu'à l'époque la SRAM était bien trop onéreuse, et la DRAM était massivement utilisée. La grosse connerie d'exelvision fut de reprendre un VDP Texas utilisant de la DRAM (d'un point de vue performance uniquement). Avec 64ko de SRAM partagée VDP/CPU, la machine aurait eu une autre gueule... mais bonjour le prix!
L'exl100 n'était qu'un bric-à-brac de composants pour sortir une console de jeux de manière opportuniste... et est devenu un ordinateur de manière encore plus opportuniste pour surfer sur le plan Informatique pour Tous... il n'y a aucune logique ni de grande vision pour moi, juste des jeunes ingés un peu opportunistes qui voulaient gratter un peu de fric en passant en utilisant leurs connaissances et surtout contacts avec Ti. Mais c'est un autre débat...

Le TMS7000 peut accéder directement à une zone de 64ko: RAM (SRAM) ou ROM (externe et/ou embarquée)... tout est dans le plan d'adressage. Bien sur en paginant il est possible d'accéder à bien plus: exeltel, interface d'irios/6502man.

En mode graphique tu peux faire des choses mais pas de jeu d'arcade... en mode texte, en 40x25 caractères utilisant 8 couleurs sans restriction, et avec 4 jeux de 127 caractères redéfinissables, on peut faire plein de choses et assez rapidement (j'ai bien réussi à faire des sprites n'écrasant pas le décor, comme un mode graphique avec scrolling rapide + animations).
Il faut juste ne pas délirer avec la machine: mode graphique = jeux d'aventures ou jeux de plateaux fixes et avec pas beaucoup de sprites, mode texte = parfait pour le jeu d'arcade, scrolling (semi-hardware si on se démerde bien).
Avatar de l’utilisateur
kikich
Messages : 51
Inscription : 24 oct. 2016 23:19
Localisation : Aube
Contact :

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par kikich »

6502man a écrit : 29 avr. 2017 16:01 Je me suis un peu dispersé avec le VG5000, mais je vais continuer ce cours d'ici peu ...
:wink:

Tes cours me manque, j’espère que tu les reprendras bientôt !!!
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par 6502man »

J'ai pas abandonné mais depuis il ne m'a pas était possible de continué sur ce projet :oops:

J'espère prochainement continuer et finir cette initiation ....
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
kikich
Messages : 51
Inscription : 24 oct. 2016 23:19
Localisation : Aube
Contact :

Re: [ EXELVISION ] initiation à l'assembleur pour TMS7020

Message par kikich »

Et bien je serai patient.
Répondre