Page 4 sur 7

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 16 mars 2021 10:44
par Neotenien
Pour ce qui est de la programmation assembleur, il se trouve que je possède quelques très bons ouvrages dont un qui n'est référencé nulle part sur DC Moto, "50 programme assembleurs TO7-70" aux éditions E-R et écrit par B Geoffrion-R. Weiss

Le bouquin est super bien foutu, il y a en préface les rappels résumé (et compacté en 3 pages) des instructions ASS 6809, ainsi que 17 appel de routine du moniteur.

Les 24 premiers programmes sont des opérations diverses d'édition décimales, hexa, multiplication et division entières (algorithme quasi optimisé, et servant de base à de nombreuses opération d'optimisation algorithmique en mathématiques). Ce sont sans doute des algorithme qui sont dans la ROM des Thomson mais c'est bien de les avoir sour la main

Il faut savoir que le 6809 des Thomson était le SEUL processeur 8 bits de l'époque intégrant une multiplication de 8x8 bits!! (Les 6502, 6800, Z80 n'en possédait pas et c'était un énorme avantage! Le MUL n'utilise que 11 cycle d'horloge contre 42 en moyenne si on le fait par un algorithme optimisé)

On y trouve aussi un programme de "Puissance décimal", Parité, tri,, et le reste sont des programmes de graphisme (dont sinusoïde), jeux (Loto et Bataille navale). caractère télétel, Musique (la même chose qu'en Basic)

L'assembleur accélère considérablement par rapport au Basic, on a des ratio de l'ordre de x10 à x300 (Ce x300 est surtout pour le ration avec les Peek/Poke du Basic, notamment pour les affichages de sprite ou de point écran)

Il y a un très bon langage "négligé" par la communauté des dév et qui pourtant que je considère comme le meilleur des langages, c'est le Pascal:! Il en est sorti 2 versions sur Thomson : le Pascal UCSD (inexploitavle dans le système Thomson Classique et non compilable mais fort complet) et "Pascal Base" de Free Game Blot qui est un Pascal limité aux seuls type entier et tableau (hélas!!) mas à l'avantage d'être compilable et de permettre l'inserrtion de roytine assembleur via les procedures (et on peut tout faire avec ça, notamment intégrer des routines d'affichage de sprite en bm16). Et, contrairement au Basic, on n'est pas limité à 10 seules routines Assembleur (en Basic on peut intégrer 10 fonction assembleur). De plus, le langage Pascal est un vrai langage impératif, avec foonctions, procédures, et possibilité de faire de la programmation récursive (et ça c'est vraiment top!! Essayez de créer un algorithme de Quick Sort en Basic, vous verrez comment c'est galère, je l'ai fait mais ça m'a pris du temps, alors qu'avec Pascal Base, ça se fait tout seul)

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 16 mars 2021 10:51
par Zebulon
Oui le Pascal ça me parle. Y-a-t-il toutes librairies de base pour gérer clavier/crayon optique/écran texte et un minimum de graphisme ?

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 16 mars 2021 13:37
par Fool-DupleX
Celui qui loue Pascal Base sur Thomson n'a pas vraiment utilisé ce logiciel ... lent, buggé et très limité. A l'époque mon choix fut vite fait. J'ai très rapidement délaissé Pascal Base pour me concentrer sur le 100% assembleur. A contrario, j'ai développé des kilomètres de code avec Turbo-Pascal sur PC, que j'ai adoré.

Pascal UCSD n'était disponible que sur TO8/8D/9+.

Sur Thomson, il y a aussi Speedy Wonder, le compilateur BASIC, trop peu connu et pourtant remarquable, malgré quelques limitations.

Et pour ceux qui débutent mais souhaitent optimiser leur BASIC, je renvoie au livre mentionné plus haut "L'interpréteur BASIC du TO7", qui donne une foule d'astuces pour accélérer l'exécution en BASIC sur Thomson, y compris en compilant certaines parties de code et en supprimant certaines parties de l'interpréteur; pour ne citer qu'un exemple, la suppression de la lecture du clavier à chaque ligne de code (pour détecter le CNT-C).

Edit pour Zebulon: nan, y'a rien. Sur Pascal Base, une petite librairie à se taper à la main et qui prend presque toute la place en ram (sur MO5), mais qui n'offre que des services tres limités.

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 16 mars 2021 13:45
par Zebulon
OK merci pour le retour au moins c'est clair. :D

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 16 mars 2021 15:24
par Fool-DupleX
Par contre, le programme de démo fourni avec Pascal Base, qui calcule le jour de la semaine, quelle que soit l'année, avec correction bissextile et milléniale etc. est impressionnant. Bon, aujourd'hui, ça se fait en une demi-ligne de PHP :D ...

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 17 mars 2021 09:23
par Neotenien
Fool-DupleX a écrit : 16 mars 2021 13:37 Celui qui loue Pascal Base sur Thomson n'a pas vraiment utilisé ce logiciel ... lent, buggé et très limité. A l'époque mon choix fut vite fait. J'ai très rapidement délaissé Pascal Base pour me concentrer sur le 100% assembleur. A contrario, j'ai développé des kilomètres de code avec Turbo-Pascal sur PC, que j'ai adoré.

Pascal UCSD n'était disponible que sur TO8/8D/9+.

Sur Thomson, il y a aussi Speedy Wonder, le compilateur BASIC, trop peu connu et pourtant remarquable, malgré quelques limitations.

Et pour ceux qui débutent mais souhaitent optimiser leur BASIC, je renvoie au livre mentionné plus haut "L'interpréteur BASIC du TO7", qui donne une foule d'astuces pour accélérer l'exécution en BASIC sur Thomson, y compris en compilant certaines parties de code et en supprimant certaines parties de l'interpréteur; pour ne citer qu'un exemple, la suppression de la lecture du clavier à chaque ligne de code (pour détecter le CNT-C).

Edit pour Zebulon: nan, y'a rien. Sur Pascal Base, une petite librairie à se taper à la main et qui prend presque toute la place en ram (sur MO5), mais qui n'offre que des services tres limités.
Désolé de te contredire mn Ami mais Pascal Base est une excellente base pour créer ds logiciel compilé, la limitation étant que le buffer est limité et qu'on doit créer des fichiers Pascal intermédiaire! J'ai utilsé les 2 Pascal Base et Speedy Wonde, ce dernier est INUTILISABLE!! J'ai tenté de compiler des programme assez simple et yavé toujours des erreurs de compilation dont on ne SAIT RIEN!! Entre Speedy Woinder (avec la compilation quasi impossible vu qu'on ne sait pas d'où ça vient) et Pascal Base qui permet de programmer dans un VRAI langage impératif, ya pas photo.

Oui Pascal UCSD est limité aux TO8/TO9 etc... et comme je l'ai précisé, il n'est pas compilable et en plus, son DOS est spécifique, on ne peut donc pas développer quoique ce soit pour les systèmes classique puisque c'est un système à lui tout seul.

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 17 mars 2021 09:42
par Neotenien
Fool-DupleX a écrit : 16 mars 2021 15:24 Par contre, le programme de démo fourni avec Pascal Base, qui calcule le jour de la semaine, quelle que soit l'année, avec correction bissextile et milléniale etc. est impressionnant. Bon, aujourd'hui, ça se fait en une demi-ligne de PHP :D ...
Il y a un truc à faire avec Pascal Base c'est de réécrire les fonctions système Thomson en procédures. J'ai commencé à le faire avec la doc fourni sur DCMoto mais vu que cette doc est parfois illisible pour le code...

Voici une partie des procédures du système Thomson à intégrer à Pascal (c'est souvent un appel à des routines système)! Ces procédures là sont compatible avec tous les Thomson.

Code : Tout sélectionner

PROCEDURE CONSOLE (HAUT, BAS : INTEGER);
(*definition de fenetre : limites haut et bas 
si un paramètre est négatif, il reste  inchangé *)
BEGIN
IF HAUT>=0 THEN WRITE (CHR(31), CHR(32+HAUT DIV 10), CHR(32+HAUT MOD 10));
IF BAS>=0 THEN BEWRITE (CHR(31), CHR(16+BAS DIV 10), CHR(16+BAS MOD 10));
END;

PROCEDURE CLS; (*effacement ecran*)
BEGIN WRITE (CHR(12)); END;

PROCEDURE CURSON; (*affichage du curseur*)
BEGIN WRITE (CHR(17)); END;

PROCEDURE CURSOFF; (*extinction du curseur*)
BEGIN WRITE (CHR(20)); END;

PROCEDURE LOCATE (C, L : INTEGER);
(*positionnement curseur en colonne C et ligne L*)
BEGIN WRITE (CHR(31), CHR(64+L), CHR(64+C)); END;

PROCEDURE POKE (ADR, VAL : INTEGER);
(*ecriture de la valeur de VAL a l'adresse absolue ADR
l'octet de poids fort de VAL est ignore*)
BEGIN ENCODE ('10AE58EC56E7A4'); END;

FUNCTION PEEK (ADR: INTEGER): INTEGER;
(*lecture de la valeur de VAL a l'adresse absolue ADR
la valeur retournee est comprise entre 0 et 255*)
BEGIN ENCODE ('10AE58E6A44FEDC4'); END;

PROCEDURE COLOR (FORME, FOND : INTEGER);
(*definition des couleurs de forme et de fond pour les caracteres
a venir - codage des couleurs identique au BASIC
si un parametre est negatif, il reste inchange*)
BEGIN IF FORME>=0 THEN WRITE (CHR(27),CHR(64+FORME));
IF FOND>=0 THEN WRITE (CHR(27), CHR(80+FOND)); END;

PROCEDURE SCREEN (FORME, FOND, TOUR : INTEGER);
(*definition des couleurs de forme, fond et tour de l'ecran
- codage des couleurs identique au BASIC 
si un paramètre est négatif, il reste inchange*)
BEGIN IF FORME >=0 THEN WRITE (CHR(27), CHR(32), CHR(64+FORME));
IF FOND >=0 THEN WRITE (CHR(27), CHR(32), CHR(80+FORME));
IF TOUR >=0 THEN WRITE (CHR(27), CHR(32), CHR(96+FORME)); END;

PROCEDURE ATTRB (HAUT, LARG : INTEGER);
(*definition des attributs hauteur et largeur des caracteres
0 si simple, 1 si double*)
BEGIN IF ((HAUT=0) OR (HAUT=1)) AND ((LARG=0) OR (LARG=1)) THEN
WRITE (CHR(27), CHR(112+2*LARG+HAUT)); END;

FUNCTION RND : INTEGER;
(*retourne un nombre aleatoire entre -32768 et 32737*)
BEGIN ENCODE('A68B691F898401545454548900E6886858B9005858');
ENCODE('890044EC88685949ED8B6BEDC4'); END;
Alors que d'autres partie comme ici:

Code : Tout sélectionner

procedure COUT (C:integer);
(*envoi du caractère de code ascii c à l'écran
identique a WRITE(CHR(C)) *)
BEGIN ENCODE ('EC58BDE803'); END;

FUNCTION KEYPRESS : INTEGER;
(* retourne le code asci de la touche enfoncée ou 0 si pas de touche*)
BEGIN ENCODE('BDE80924034F20024F5FEDC4'); END;
Sont pour le TO7 juste parce que les adresse RAM des 2 systèmes TO et MO (Ram Vidéo, banque RAM etc) sont différent!! pour le reste, c'est exactement le même code)

En Pascal Base par exemple, le code pour créer un labyrinthe est beaucoup plus simple qu'en Basic, parce que le Pascal, comme les langage impératif, permet d'utiliser des fonction récursives alors qu'en Basic c'est extrêmement compliqué! En Basic, il faut se crée des variable "Piles" et jouer avec ça... C('est franchementnpas top (je l'ai fait dans les années 90 pour le tri Knuth pour un TP du CNAM...)

Les 2 points faibles du Pascal Base:
- Buffer utilisateur limité en RAM (y compris sur les TO8 etc) qui oblige à créer des fichier passcal intermédiaire (mais ça le fiat à la compilation).
- Type de variable uniquement en INteger et Tableau d'Integer. (Même limitation avec Speedy Wonder mais je déconseille fortement Speedy Wonder). M%ais on peut quand même utiliser des flottant en se servant des routines de l''extramoniteur.

Il est même possible d'écrire des fonctions spéciale pour changer de mode vidéo en Assembleur

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 19 mars 2021 13:01
par DavidC
Encore merci à tous de m'avoir éclairé et fait remonter de si bons souvenirs.

La vidéo de Neotenien confirme que certains jeux ont vraiment mal vieilli...

Peut être que je fais une fixation mais je trouve que Fox sur Thomson reste un jeu de qualité et encore jouable par les + jeunes même s'il sortait aujourd'hui alors que tout cela date de 35 ans !

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 19 mars 2021 15:01
par Daniel
Voici la publicité dithyrambique que faisait l'HEBDOGICIEL.
Il faut savoir que l'éditeur de Fox est Shift Editions, et Shift Editions est aussi l'éditeur d'Hebdogiciel :mrgreen:
C'est la seule fois de leur histoire qu'ils disent du bien d'un jeu Thomson.



fox-review.png
fox-review.png (412.91 Kio) Consulté 3683 fois

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 19 mars 2021 17:30
par Fool-DupleX
Je maintiens ce que j'ai dit sur Pascal Base, Neotinien. Tu nous recopies donc la librairie qui est fournie de base ( :wink: ) dans la doc de Pascal Base ? Parfait. Au fait, il n'y a pas d'extramoniteur sur MO5, TO7 et TO7/70.

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 19 mars 2021 18:23
par DavidC
@Daniel
Merci pour ce rappel.
Les articles sans filtres (sauf pour Fox :wink: ) dans Hebdogiciel et les dessins de Carali aussi...
Mon père lisait Hara-kiri et Hebdogiciel était mon Hara-kiri à moi...
J'avais même acheté la BD de Edika (frère de Carali) à l'époque.

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 23 mars 2021 15:19
par DavidC
Je suis tombé sur un site qui a digitalisé les parutions de Hebdogiciel
Le lien: https://www.abandonware-magazines.org/a ... g=7&page=5

Les dessins de Carali (dans Hebdogiciel du numèro 78 jusqu'au 168) me font encore bien rire et certains sont même encore d'actualité + de 30 ans après...

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 23 mars 2021 19:59
par Fool-DupleX
"pauvres français boiteux avec la jambe du milieu plus courte que les deux autres" :lol:

01.jpg
01.jpg (148.5 Kio) Consulté 3596 fois

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 23 mars 2021 21:59
par __sam__
Et au final il ne s'en est pas vendu beaucoup de MO5E en Allemagne.

Re: [THOMSON] MO5 TO7-70 programmation animation FOX pixel/pixel

Publié : 23 mars 2021 22:29
par Kristof
Intéressant comme sujet merci. Je commence aussi a regarder la programmation sur MO/TO.
A la base, je suis un programmeur assembleur sur Amiga (68000). Mais étrangement quand l'an passé je me suis mis a programmer sur 8 bits (Amstrad CPC), l'assembleur m'a rebutté. Je voulais passer plus de temps a bosser sur le jeu qu'a apprendre et écrire en assembleur.
J'ai commencé en basic, mais comme c'est interpretté c'est très lent.
Et puis je suis passé au C. C'est assez performant. J'ai utilisé CPCTelera sur CPC (avec le compilateur SDCC pour Z80) et CC65 sur commodore 64 (compilateur C pour 6510). J'ai pu écrire mon jeu d'aventure et ca a été fun.
Pour le processeur 6509, je vois qu'il y a des compilateur C aussi. CMOC par exemple. Quelqu'un connait ? ou un autre ?