Site logo

Triceraprog
La programmation depuis le Crétacé

  • Un jeu en Forth pour Hector HRX : Picthorix ()

    À nouvelle édition de Retro Programmers United for Obscure Systems, nouvelle machine et une nouvelle participation.

    La gamme de machine couverte par cette édition est la gamme Hector HR et suivants : 2HR, 2HR+, HRX, MX40 et MX80. Pour des informations sur cette gamme de machines, je vous invite à consulter cette page.

    Hector HRX

    Ces machines forment une gamme de machines vaguement compatibles les unes avec les autres. Des petites différences de matériel, et surtout de ROM, font que les programmes ne sont pas forcément compatibles entre les différentes machines. D'après ce que j'ai compris, pour rien n'arranger, c'était une machine ouverte à la bidouille et aux modifications hardware. Le parc de machines devait donc être assez hétérogène.

    De la gamme, j'ai donc choisi une machine : le HRX. Pour deux raisons. La première est parce que j'en avais une sous la main (mais en demande de réparation), et j'aime bien pouvoir voir la machine pour imaginer le jeu qui va avec (et pour tester... quand la machine fonctionne). La seconde car c'est une machine qui a un Forth résident. Et si je connais un peu le Forth pour avoir joué avec et lu à son propos, je n'avais jamais développé un programme complet en Forth. Or, c'est dans ces situations que l'on découvre vraiment un langage.

    La découverte

    La première étape, comment toujours, est de découvrir la machine. Il y a pas mal de documentation disponible sur les différentes machines, surtout sous forme de magazines spécialisés à petits tirages (j'imagine), un peu de document de reverse engineering, des plans des certaines des machines (dont le HRX) et le code source de MAME. Il existe même un manuel Forth, sous forme de didacticiel, pour le HRX. Ce manuel m'a été très utile pour me remettre dans l'esprit Forth et faire le tour des capacités de la machine.

    Une fois lu le manuel et fait quelques exercices et tests, j'ai démarré... non pas le jeu, mais une relecture du manual, en notant tous les mots Forth et leur fonctionnement, afin de les classer par catégorie, les expliquer et les rendre accessible sous forme de référence en ligne, indexé. Cela m'a pris pas mal de temps, mais j'étais certain d'avoir parcouru tous les mots, de les avoir presque tous compris, et surtout, de pouvoir les retrouver rapidement.

    Le résultat est disponible sur cette page.

    Ce n'est pas tout à fait complet et j'y trouve encore quelques petites erreurs en m'y référant, mais c'est déjà très utilisable. Le code source de la page est disponible si vous voulez le compléter.

    L'environnement de développement

    Le Forth du HRX est fourni avec un système de « screen », qui est classique pour le Forth. Les « screens » permettent d'éditer et d'enregistrer des données, généralement des commandes et des mots, pour les réutiliser à volonté. Le système offre du paging automatique mais avec un système sur cassette, c'est pratiquement inutilisable.

    De plus, l'éditeur est un éditeur de ligne, pas très agréable, même si ça dépanne. Il existe un éditeur pleine page que l'on peut charger depuis une disquette. Ça peut être intéressant pour retrouver les sensations sur la machine, mais pour un développement, je trouvais ça un peu lourd.

    J'ai donc, comme souvent, créé mon petit environnement en utilisant MAME et un script d'automatisation. Je ferai un article à ce sujet par la suite. Sans détail, cela m'a permis de programmer depuis Visual Code et de lancer une compilation en me servant de la machine émulée.

    Le jeu

    Lorsque je n'ai pas une machine fonctionnelle sous la main, je préfère chercher des idées de jeux qui ne vont pas pousser les performances ou les exotismes de la machine. Particulièrement dans le cas de ces machines avec peu d'activité, où les émulateurs ne sont pas toujours très fidèles.

    Mon fils m'a proposé alors l'idée d'un Picross, aussi connu sous le nom de Nonogram ou encore Logimage... et plein d'autres noms. L'idée est de remplir une grille en suivant des indications sur les groupes de « pixels » par lignes et par colonnes. Bonne idée, je suis parti là-dessus.

    Du à ma méconnaissance du Forth, ça a été assez laborieux. J'ai pas mal appris au passage et j'écrirais certaines choses probablement différemment si je devais recommencer. Je n'ai pas utilisé les capacités de la machines au niveau graphique, qui peut aller bien plus loin que ça, avec de l'adressage au pixel sans color clash.

    Au passage, j'ai aussi appris à créer des grilles de Picross. Pour cela, j'ai utilisé un programme un ligne qui permet de savoir si la grille est résolvable ou pas. C'est pratique, car il ne suffit pas de faire une grille avec un dessin sympa. Il faut à cette grille une solution unique, ce qui n'est pas toujours le cas sur une grille quelconque.

    Au final, j'ai créé 9 grilles, dont deux vraiment comme une initiation et cinq comme références aux cinq jeux précédents avec lesquels j'ai participé aux précédentes éditions de RPUfOS.

    Pour télécharger le jeu, c'est ici.

    Picthorix


  • Yeno SC-3000 et condensateurs ()

    Suite à une panne sur un Yeno SC-3000 récemment, j'ai du changer un condensateur. En travail préparatoire, j'ai fait une photo annotée de la carte mère.Là voici, si ça peut aider.

    L'image est cliquable pour l'agrandir.

    Platine principale


  • Suite de tests pour VG5000µ ()

    Il y a quelques années, j'avais commencé une suite de tests pour le VG5000µ sous la forme d'un programme en mélange de C et assembleur. L'idée était double : écrire une référence pour s'inspirer dans la programmation du VG5000µ (et particulièrement de l'EF9345), ainsi que tester la fidélité des émulateurs.

    Je me suis servi de cette base de code pour la première raison et mes besoins personnels. J'ai aussi pu corriger une paire de bugs dans MAME grâce à la seconde utilisation.

    Cependant, cette base de code traîne depuis un moment sur mon disque et je n'y passe pas beaucoup de temps. Alors autant que ça serve à d'autres, et je mets donc aujourd'hui cette base à disposition.

    Je ne sais plus trop dans quel état il est. Ça doit globalement fonctionner. J'imagine.

    En tout cas, c'est dispo sous licence CC0, donc faites-en ce que vous voulez.


  • Un peu d'Atari ST ()

    Ce site est, en tout cas a été jusqu'à maintenant, très machines 8 bits. Du fait des participations aux Retro Programmers United for Obscure Systems, mais aussi aux machines sur lesquelles je m'amuse le plus. L'avantage des machines 8 bits, c'est qu'elles la plupart du temps assez simple à comprendre, à programmer, avec des designs techniques parfois originaux mais qui restent abordables.

    Cependant, il y a peu, Zisquier a lancé un site pour aborder le 68000 à travers la programmation en assembleur sur Atari ST. Je m'étais lancé dans l'idée d'essayer d'enseigner l'assembleur de manière ludique, mais comme on dit, « life happens » et je n'ai pas poursuit sur la lancée.

    Comme j'étais en pause d'été, que l'Atari ST (STE en réalité) fait partie de mon historique de machines personnelles, et que j'avais quitté cette machine sans en avoir fait le tour je pense, même si j'y avais fait un peu d'assembleur, je me suis dit que c'était l'occasion de la redécouvrir. Par la programmation bien entendu.

    Le ton de Zisquier est direct, il va à l'essentiel, progressivement. Il y a des tests à la fin des leçons qui apportent un petit côté ludique. C'est fun et j'aime bien. Et petit à petit, me voici actuellement avec un sprite qui se déplace à l'écran au-dessus d'un décors.

    Le code est un peu moche, j'y vais un peu à tâtons et je ne sais pas toujours quels sont les meilleurs façon d'utiliser les instructions 68000. Mais il y a un Discord associé avec des personnes qui sont aidantes sur le sujet.

    Le sprite est en CC-BY 3.0 par « Withthelove », trouvé sur OpenGameArt.org.

    Le tileset est en CC0 par « Kenney », c'est Tiny Town remanié au niveau de la palette de couleurs et du layout pour correspondre à l'Atari ST et à mon besoin.

    Sprite et Tilemap sur Atari ST


  • Le Forth sur Hector HRX ()

    Avec la nouvelle session de Retro Programmers United for Obscure Systems, il est temps de découvrir la ligne des Hector HR. Que ce soit l'Hector 2HR, le 2HR+, le HRX et probablement le MX.

    Pour en savoir plus sur ces ordinateurs, il existe une page dédiée à ces machines.

    Après avoir cherché un peu dans les resources Hector, je me suis dirigé pour ma contribution à cette session vers le « Hector HRX » et son Forth. En effet, le HRX est un de ces rares ordinateurs 8 bits qui venait avec un Forth en ROM, au lieu du plus classique BASIC.

    Il existe un livre sur le Forth pour Hector HRX, « la pratique du Forth avec Hector », qui est plutôt agréable à lire afin de découvrir la machine à travers ce langage, et pourquoi pas, découvrir le Forth au passage.

    L'ennui avec le livre, c'est qu'il présente les mots en contexte, mais qu'il n'y a pas de référence regroupement les mots par catégorie, ou par usage. Il faut donc se souvenir du passage où le mot est présenté, et le retrouver parmi la prose pédaogique.

    Je n'étais pas non plus certain que tous les mots soient présentés par le livre (après en avoir fait la liste, il en manque bien quelques uns, mais c'est en fait très complet).

    Pour moi, il manquait donc une référence, et c'est ce que je me suis appliqué à faire. Cette référence n'est pas un apprentissage du Forth, la lecture du livre ou d'une autre ressource est nécessaire. Par contre, elle présente une liste catégorisée des mots ainsi que les grands principes du Forth et son implémentation sur Hector HRX.

    Éspérant donc que cette référence pourra vous être utile comme elle l'est pour moi, je l'ai publiée à cette adresse.


Page 1 / 22 (suivant) »

Tous les tags

3d (14), 6809 (1), 8bits (1), Affichage (24), AgonLight (2), Alice (1), Altaïr (1), Amstrad CPC (1), Apple (1), Aquarius (2), ASM (30), Atari (1), Atari 800 (1), Atari ST (2), Automatisation (4), BASIC (30), BASIC-80 (4), C (3), Calculs (1), CDC (1), Clion (1), cmake (1), Commodore (1), Commodore PET (1), CPU (1), Debug (5), Dithering (2), Divers (1), EF9345 (1), Émulation (7), Forth (2), Game Jam (1), Hector (2), Histoire (1), Hooks (4), i8008 (1), Image (16), Jeu (13), Jeu Vidéo (4), Livre (1), Logo (2), Machine virtuelle (2), Magazine (1), MAME (1), Matra Alice (2), MDLC (7), Micral (2), Motorola (1), MSX (1), Musée (2), Nintendo Switch (1), Nombres (3), Optimisation (1), Outils (3), Pascaline (1), Photo (2), Programmation (3), Python (1), ROM (15), RPUfOS (4), Salon (1), SC-3000 (1), Schéma (5), Synthèse (14), Tortue (1), VG5000 (62), VIC-20 (1), Z80 (20), z88dk (1)

Les derniers articles

Un jeu en Forth pour Hector HRX : Picthorix
Yeno SC-3000 et condensateurs
Suite de tests pour VG5000µ
Un peu d'Atari ST
Le Forth sur Hector HRX
J'MSX 24 et un micro jeu
Récréation 3D, Matra Alice
Tuiles des plus très-curieuses
Notes sur le Motorola 6809
Sous le capot de l'Alice 32/90, un EF9345

Atom Feed

Réseaux