dev EXL 100

Cette catégorie traite de développements récents destinés à 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

Répondre
Avatar de l’utilisateur
happyleptic
Messages : 2
Inscription : 24 sept. 2009 20:03
Localisation : Bordeaux
Contact :

dev EXL 100

Message par happyleptic »

Hello tout le monde
je suis un petit nouveau. Je suis un utilisateur EXL 100, nostalgique de certaines choses attachantes sur cette machine. J'ai bricolé un peu autour d'un projet d'émulateur et la sortie de la petite merveille de Daniel Coulom m'a coupé l'herbe sous le pied; et quel plaisir ce fut!
Donc, alors alors, je me ferais bien une petite démo; genre 3D fil de fer et plus si affinité. J'ai à peu près les docs; je me ferais bien un projet cross compilé, je voulais savoir ce qu'il y avait qui existait; et ce qu'il faut faire.
Il me faudrait un outil qui assemble du code TMS 7020 et package un .rom. Un plug-in visual studio ou PSPad, n'importe quoi qui bouffe du code avec un minimum de confort d'édition et qui puisse inclure des fichiers.
Si il a des librairies de base asm (init co-pro, graphisme, I/O, ...) je suis prenneur aussi.

si y'a rien... au travail!

Dom
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17531
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: dev EXL 100

Message par fneck »

Salut, j'ai déplacé ton topic dans software qui est la catégorie qui correspond mieux au sujet.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

Donc tu voudrais un environnement de développement sur windows (par exemple) comprenant tout le confort moderne, un assembleur qui génère du code 7020, un ensemble de librairie genre SDL ou Allegro for Exl100... autant commencer par se taper la crémière directe sans tourner autour du pot :lol:

Tu te prends UltraEdit ou un autre éditeur sophistiqué...
Tu te ramènes TASM (Telemark Assembler), que tu modifies légèrement pour avoir exactement le bon jeu d'instructions...
Tu te paluches les pages de Equates des manuels Exelvision
Tu te programmes un utilitaire pour transformer le code binaire généré sous forme de fichier pour diquette Exeldisk ou bien pour une image ROM (ça c'est pas bien difficile)
Et c'est parti mon kiki...
Ou bien tu attends que je finisses mon Kit :D

Pour les API déjà prêtes, la c'est facile, y'a rien !

Une animation en 3D fil de fer... j'espère que tu connais les contraintes du VDP3556... parce que les calculs 3D + l'affichage au pixel pres :cry:

Un conseil, commence par un truc simple... tranquille... pépère, et surtout n'attends pas un environnement prêt à l'emploi. Il y a déjà ma commande EXEC qui permet de lancer facilement n'importe quel binaire... très pratique pour tester des devs via l'émulateur. Je termine doucement mon mini-environnement de dev, je te le filerais si tu n'es pas degouté par tes permiers essais (ExelMAx est utile pour se faire la main).
Avatar de l’utilisateur
6502man
Messages : 12329
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: dev EXL 100

Message par 6502man »

Un cross compilateur sous windows pourquoi pas :idea:

Ca serait sympa a faire :D

En sortie un BIN au format fichier exeldisk ou ROM ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17423
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: dev EXL 100

Message par Daniel »

Au début des années 1980 les développeurs n'avaient que deux solutions :

- Utiliser les outils simplistes fournis par les constructeurs, genre Exelmax. Et encore certaines machines n'avaient aucun outil de développement, ou les ont eus longtemps après leur lancement.

- Développer leur propres outils. Pour les amateurs, c'était du bricolage. Par exemple les frères Guillion (auteurs du 5ème Axe et de Sapiens) ont expliqué dans une interview qu'il avaient passé plus de temps à créer les outils qu'à écrire le jeu. Les professionnels comme Infogrames développaient sur mini-ordinateur (MicroVax de DEC). Ils avaient probablement des cross-compilateurs et avaient développé des bibliothèques pour les micro-ordinateurs les plus utilisés à l'époque : Amstrad et Thomson au début, Atari et autres quelques années plus tard.

Aujourd'hui le problème reste entier, sauf que le développement sur émulateur est possible, ce qui simplifie beaucoup les choses. Les outils progressent un peu grâce à des passionnés, comme jester pour exelvision, eric et samuel pour thomson, et d'autres sur amstrad ou atari. Mais il reste encore beaucoup à faire, et c'est le plus difficile : écrire les bibliothèques pour l'affichage et les entrées/sorties. Bon courage :!:

Moi-même je développe très peu, mais quand ça m'arrive je travaille encore comme je le faisais à l'époque : sans aucun outil, en écrivant directement du code machine en hexadécimal. C'est un excellent exercice intellectuel, malheureusement la productivité n'est pas très bonne et je ne vous conseille pas de suivre cet exemple :wink:
Daniel
L'obstacle augmente mon ardeur.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

6502man a écrit :Un cross compilateur sous windows pourquoi pas :idea:
Un Cross compilatateur C, ça serait sympa... mais efficace ? pas sur... passer du code C à un processeur 8 bits avec peu de mémoire... j'ai un doute. La partie optimisation risque d'être un beau challenge et réclame un expert !

Pour l'instant il existe un cross assembleur pour TMS7000 que j'ai modifié pour obtenir du code EXL100. J'ai aussi créé un utilitaire pour encapsuler le fichier binaire dans un fichier compatible avec l'outil de Daniel pour générer des disques virtuelles... il me reste juste à créer un outil pour générer la disquette (à partir du source de Daniel, ça doit se faire assez bien :wink: )
Ainsi ce sera très simple, j'édite tranquillement, avec un click j'assemble, avec un autre je construis la disquette, et je teste en live sur l'émulateur.
Car bien sur j'ai ma commande EXEC qui me permet de charger un binaire sous EXELDOS.
Je vais bien sur ajouter un outil pour encapsuler un binaire dans une ROM. Dans l'espoir de disposer un jour de cartouche reprogrammable (en USB par exemple).

Ainsi c'est tout confort en gardant un environnement simple.
L'étape suivante c'est la création d'une petite API qui augmentera avec le temps histoire de simplifier le codage en assembleur.
Pour l'instant je termine de taper des fichier "equates", bien pratique pour éviter de chercher adresse et valeur utiles dans les docs.

Ah si, j'ai aussi un outil qui me compresse des fichiers images (PCX pour l'instant) dans un format spécifique à l'Exl100 avec un taux de 3 ou 4... donc assez intéressant !

Voila ou j'en suis, et comme beaucoup j'ai un vrai travaille aussi... alors ça avance comme ça peu!
Mais quand tout sera en place :wink:
Avatar de l’utilisateur
6502man
Messages : 12329
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: dev EXL 100

Message par 6502man »

C'est sympa tout ca.

Je vais essayer de me pencher sur un cross compilateur sous windows, vu que je n'ai pas encore beaucoup de temps cela seras peut être un peu long.

Je pense compiler directement un sources ASM vers un BIN !

Sinon comment est composé un binaire exectutable sur exel100 , que comporte sont entete ?
Dernière modification par 6502man le 26 sept. 2009 22:52, modifié 1 fois.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

Avec un assembleur on ne compile pas... on assemble :wink:

Moi j'utilise Telemark Assembler (TASM)... c'est une sorte de shareware mais il est complet.
Il suffit de choisir la cible (TMS7000) et le format de sortie binaire... c'est tout.

Ensuite bien sur il faut enrober car Exeldos ne charge pas de binaire mais des fichiers objets au format TI... très gourmand en espace. C'est pour cela que je fais la commande EXEC (cf. site de Fabrice), afin de charger direct des binaires.

Il est aussi possible de placer tout simplement dans une image de ROM cartouche (entre 8 et 32Ko) pour l'émulateur... mais la partie initialisation de la machine est laborieuse !

ET l'avantage avec EXELDOS c'est qu'il y a pleins de fonctions disponibles dans le système.
Avatar de l’utilisateur
happyleptic
Messages : 2
Inscription : 24 sept. 2009 20:03
Localisation : Bordeaux
Contact :

Re: dev EXL 100

Message par happyleptic »

Merci pour toutes ces infos. Vous avez bien compris ce que je voulais faire et ça répond bien à la question "qu'est ce qui existe?" : pas grand chose...
Evidement, faire une démo sur EXL 100 c'est le but ultime, je commencerai par être très satisfait d'un "hello world" cross-assemblé.

Faire un assembleur c'est pas bien compliqué, j'en ai fait un pour 68000, ça doit pas être pire. Le plus difficile est effectivement de savoir comment l'exel DOS gère un programme binaire. un EXEC basic est bien mais nécessite le basic. C'est pas aussi drole qu'un rom qui boote.
Il faut trouver le format d'un .rom pour savoir quoi générer (offsets, format, etc.) à la rigueur je pense que Daniel Coulom doit avoir l'info puisque l'émulateur en a besoin pour fonctionner. Danieeeeel, t'es là? :)
Après, trouver les infos sur les entrées-sorties et se faire une "lib" pour les manager, ça, c'est un boulot énorme. Ou alors il faut passer par l'exelDOS. Y'a de la doc quelquepart?
comment ça, "non"?
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

Mais le monsieur te dit qu'il existe déjà un cross assembler + des outils pour faire tout ce que tu veux (ou presque).
Tout ce que tu demandes se trouve dans les DOCs dispo chez Fabrice et Daniel.
La format de la ROM n'en est pas un... juste un fichier binaire équivalent à un dump de ROM (les 4 derniers octets sont juste important et expliqué dans les docs).

Mon utilitaire EXEC.OBJ permet dé charger n'importe où en mémoire (SRAM, CRAM, RAM disk) un fichier binaire.

Faire un "Hello World" à partir d'ExelDos c'est 2 lignes... sur une cartouche c'est plus chaud car il faut initialiser la pile, le VDP, quelques vecteurs d'interruptions, et se palucher les routines d'affichage.

Un conseil: lire les docs dispos chez Daniel (Programmer en assembleur pour Exel100, doc technique Exelvision, Doc VDP 3536, doc exelmax pour les exemples) + lire le contenu du forum (démos Exel100) + voir mes démos de scrolling + mon utilitaire pour faire une vraie commande DIR (en assembleur)... ça aidera au début.

Si chaque individu voulant faire une démo sur Exel100 repart de zéro à chaque fois, dans 5 ans on en sera encore tous à faire du HelloWorld !
J'ai l'impression que tu n'as aucune idée de l'architecture de la machine. Sache qu'un scrolling vertical sur Exl100, 100% en assembleur, prend presque 15-20s pour faire dérouler 180 lignes (même pas une page écran complète), qu'animer des sprites au pixel près est impossible à vitesse humaine !
La machine de base possède 2Ko de RAM... donc l'idée d'une cartouche est bonne mais on a pas de dispositif actuellement pour construire des cartouches avec EPROM et les distribuer !
Il faut au moins une exelmémoire pour avoir 16Ko de RAM.

Donc avant de cross assemblé (ce qui prend 2mn), le plus long est de comprendre l'architecture folle de cette machine...
Sinon faire un assembleur TMS7000 est sans grand intérêt, à moins qu'il possède un linker... ce qui manque actuellement. Le plus intéressant serait de développer un compilateur C à partir de SDCC, mais le travail risque d'être énorme pour pas grand chose au final sinon la fierté du devoir accompli.
L'intérêt du matériel Exelvision c'est que tout est à faire à la différence d'un Amstrad, C64, Atari, Amiga où tout a été fait (machines poussées au maximum). Les mauvaises langues diront que c'est parce que personne n'a jamais rien pu en faire :mrgreen:
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

Pour faire simple,
Ce qui est dispo:
- le macro assembleur TASM
- la table de code pour TASM modifié pour le 7020 Exelvision
- les fichiers equates pour se simplifier la vie (j'ai presque fini)
- un outil pour encapsuler les fichiers binaires dans un fichier prêt à l'emploi pour une disquette exeldisk
- un outil pour compresser des images PCX et les encapsuler prêt à l'emploi pour une disquette
- une commande objet EXEC.OBJ pour ExelDos permettant de charger les binaires encapsuler précédents
- des petites applis Objets créées avec Exelmax pour étudier un peu la programmation sur Exl100 (commande CAT, démos de scrolling en mode texte et graphique)

Ce qui reste à faire:
- un outil pour encapsuler les fichiers binaires dans un fichier ROM (pas un gros soucis)
- un outil pour générer automatiquement une disquette pour un projet (je vais partir du source de Daniel)
- un outil pour désassembler (je vais partir du source du désasssembleur de Daniel)
- modifier (et tester à fond) mon compresseur d'images PCX pour être plus souple
- ajouter un dictionnaire dans mon éditeur ultraEdit pour avoir la colorisation
- terminer la saisie des fichiers equates

Et ensuite les API bas niveaux:
- API initialisation
- API mode texte
- API mode graphique (chaud chaud les marrons)
- API d'E/S simplifié
- API Audio (genre synthe émulation synthé FM 3 voix... non je déconne :mrgreen:, une API pour jouer une musique monophonique avec le port K7 serait suffisant )

Normalement je peux commencer mon premier jeu à la retraite.
Si y'a des motivés pour se partager les tâches, je suis pour. L'objectif n'étant pas de faire des API hyper complètes comme sur PC, mais d'avoir quelques fonctions pratiques pour simplifier le développement de vraies programmes.

Dés que j'ai fini l'étape "ce qui reste à faire" je mettrais une archive avec tout le bazarre.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

Un truc bête, j'ai un trou en maths... il est sans doute tard.

Soit la formule du timer du 7041:

F (en hertz)= 307200 / ((DT+1) * (PT+1))

Comment calculer simplement le couple (DT,PT) en fonction de F ?
Daniel
Messages : 17423
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: dev EXL 100

Message par Daniel »

Une équation linéaire a deux inconnues a une infinité de solutions :wink:
Sauf que dans ce cas ce ne sont pas des variables réelles, mais des nombres discrets.

Il faut donc choisir l'une des deux variables, par exemple DT, pour que F * (DT + 1) soit un diviseur entier de 307200. L'autre variable sera alors PT = (307200 / (F * (DT + 1))) - 1
Il n'y a pas de solution si 307200 n'est pas divisible par F. S'il est divisible, il peut y avoir une ou plusieurs solutions.
Daniel
L'obstacle augmente mon ardeur.
jester
Messages : 2328
Inscription : 01 janv. 2009 23:16
Localisation : Grenoble

Re: dev EXL 100

Message par jester »

C'est bien ce que je pensais et ma méthode était donc la bonne. Cela veut dire qu'il faut précalculer ses valeurs avant... :?

Reste que je ne comprends pas bien la gestion des interruptions:
La 1... Ok, ça vient du 7041 !
La 2... ça vient de qui... j'ai longtemps cru que la getion du timer (port P2 et P3) permettait de programmer le timer du 7041 pour envoyer une INT 2 au 7020. Mais c'est n'importe quoi, c'est bien le TIMER du 7020 qui est programmé et qui déclenche INT 2 ?

Du coup je vois pas comment programmer une gestion de musique en tâche de fond avec ça: j'ai besoin du Timer pour gérer les impulsions du port K7, et je peux pas l'utiliser comme timestamp pour l'animation et la gestion des notes (durée, silence). C'est surement possible mais j'ai une grosse lacune, j'ai pas une grosse expérience en langage machine.

L'INT3 ne peut pas être programmée avec un autre Timer... je n'ai d'ailleurs pas compris comment programmer cette interruption... elle est déclenchée uniquement de l'extérieure ?

Désolé pour ces questions qui vont paraitre bête à certains, mais je suis pas une bête en programmation système je le répète. Mais je ne pense pas qu'il soit possible de faire des choses sans maitriser cette gestion des interrutpions.
Daniel
Messages : 17423
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: dev EXL 100

Message par Daniel »

jester a écrit :La 2... ça vient de qui...
Bonne question :!: D'après "Programmer en assembleur..." page 66 c'est le timer du 7040. Comme l'EXL100 n'a pas de 7040 nous ne somme pas plus avancés. Il est impossible de savoir s'ils ont voulu écrire 7041 ou 7020. Mais finalement ça n'a pas d'importance (au moins dans dcexel) : P2 et P3 programment le timer, le timer déclenche INT 2. C'est l'essentiel. Après, que le timer soit dans le 7020 ou le 7041, c'est une question secondaire. Pour le programmeur ça ne change rien, et de toutes façons il n'a à sa disposition qu'un seul timer.

Pour d'autres temporisations une solution est de programmer des boucles d'attente, mais dans ce cas le processeur ne peut pas faire d'autres tâches en parallèle. On peut aussi se synchroniser sur les signaux du registre STATUS du VDP : ST2=frame synchronization, ST3=Vertical display interval, ST6=Horizontal display interval. Mais comme ils ne déclenchent pas d'interruption il faut les scruter en permanence pour détecter les changements d'état.

L'interruption 3 est déclenchée par la mise à 1 du bit 5 du port P0. Est-elle utilisée sur l'EXL100 :?: Encore une bonne question, mais je n'ai pas la réponse.
Daniel
L'obstacle augmente mon ardeur.
Répondre