[Exelvision] DCexel v0.4

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 : 17422
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

jvernet a écrit :C'est deux versions de DOS differentes
Et pourtant les deux disquettes affichent EXELDOS V1.4
Le fichier ARCADE.BAS figure dans le répertoire, pour une longueur de 11 octets. Sachant que le pointeur vers la ligne suivante, le numéro de ligne et le blanc prennent 5 octets, il ne reste plus que 6 octets pour le code Basic. A mon avis ce programme n'a qu'une instruction, deux au maximum. Il ne doit pas faire grand chose....
Daniel
L'obstacle augmente mon ardeur.
jvernet
Messages : 2459
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Message par jvernet »

Daniel,

Dans DCEXEL, peut on, dans la fenêtre de debugage, modifier directement la valeur des registres du TMS3556 ? Genre, changer BAPA, par exemple.
Et le contenu de la VDP ?
Je n'ai pas l'impression, mais la feature serait interessante.

je voudrais experimenter des trucs plus facilement que via Exelmax...
Daniel
Messages : 17422
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Très bonne remarque. J'ai été un peu vite pour programmer le debugger car ce n'était pas ma priorité, mais il y a beaucoup d'améliorations à faire. En version 0.4 on peut modifier les registres principaux du 7020 et la ram entre C000 et C7FF. Les registres R2 à R127 ne sont pas modifiables. Les registres et la ram vdp ne le sont pas non plus.

Je note d'ajouter ces fonctions dans une prochaine version.
Daniel
L'obstacle augmente mon ardeur.
jvernet
Messages : 2459
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Message par jvernet »

Daniel a écrit :Très bonne remarque. J'ai été un peu vite pour programmer le debugger car ce n'était pas ma priorité,
Pourtant, il est déja super chiadé, je trouve. Une chtite liste de break point aussi, ça serait pas mal.

J'ai pu vérifier que mon code de scrolling... ne marchait pas du tout!

Un truc curieux, tiens. Il parait que LVDP lit dans la RAM VDP, mais Exelmax le convertit par un SWAP R0. De même, WVDP A est convertit en un MOV A,P46.
Daniel
Messages : 17422
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Oui, tout ce qui concerne l'accès au vdp est très difficile à comprendre car peu et mal documenté. J'ai eu beaucoup de mal à tout reconstituer, et je crois que je n'y serais jamais arrivé sans la doc technique fournie par Jean-Louis.

LVDP et WVDP ne sont pas des instructions 7020, mais des mnémoniques définis par Exelmax. Pour éviter les malentendus, je préfère utiliser les vraies instructions :

- MOVP A, P46 pour écrire l'octet du registre A en ram vdp
- MOVP P36, A pour lire un octet de ram vdp dans le registre A

Pour compliquer les choses, il est possible de définir des instructions microcodées en modifiant la rom du TMS7020. C'est à dire choisir un code instruction et lui faire faire autre chose. C'est ce qui a été fait pour le SWAP. On trouve dans le code du moniteur système EXL100 tout plein de SWAP R40, ou SWAP R0, ou SWAP n'importe quoi. Ce ne sont pas des SWAP. L'instruction SWAP n'existe pas dans l'EXL100 ni dans l'EXELTEL. Elle a été remplacée par une lecture ram VDP qui retourne l'octet lu dans le registre A. C'est un piège où sont tombés des informaticiens chevronnés :wink:

L'avantage est la rapidité d'exécution : 5 cycles d'horloge, contre 11 pour le MOVP. Mais il y a aussi une petite subtilité supplémentaire : le SWAP n'est pas rigoureusement équivalent à MOVP P36,A. Les deux lisent un octet, mais n'ont pas la même action sur l'affectation des pointeurs ACMP et ACMPXY du vdp. D'après mes déductions, le SWAP est équivalent à deux instructions :
- MOVP P40, A Initialisation en lecture
- MOVP P36, A Lecture d'un octet
Il fait exactement la même chose en 5 cycles au lieu de 22. Imaginez la lenteur du Basic si le SWAP n'était pas utilisé : Quatre fois plus lent pour lire en mémoire :?

Je ne détaillerai pas davantage les règles de sélection des pointeurs ram VDP, c'est trop difficile à expliquer en quelques lignes. Les deux pages de la doc Texas Instrument sur le sujet sont d'ailleurs incompréhensibles. Pourtant, quand on les relit après avoir tout compris, il n'y a pas d'erreur. Uniquement un manque de précision.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17422
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Message par Daniel »

Grâce à Jean-Louis, qui m'a envoyé (entre autres) une disquette pleine de jeux, j'ai pu tester l'émulation exeldisk. Tout n'est pas fini, mais c'est déjà bien avancé. La preuve en images :

Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image
Daniel
L'obstacle augmente mon ardeur.
Répondre