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

Tout ce qui concerne le logiciel original et sa sauvegarde avec entre autre la régénération des disquettes ou autres supports physiques.

Modérateurs : Papy.G, fneck, Carl

Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

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

Message 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)
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

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

Message 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 ?
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

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

Message 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.
Dernière modification par Fool-DupleX le 16 mars 2021 15:26, modifié 1 fois.
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

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

Message par Zebulon »

OK merci pour le retour au moins c'est clair. :D
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

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

Message 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 ...
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

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

Message 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.
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

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

Message 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
DavidC
Messages : 12
Inscription : 10 mars 2021 18:43

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

Message 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 !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

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

Message 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é 3591 fois
Daniel
L'obstacle augmente mon ardeur.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

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

Message 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.
DavidC
Messages : 12
Inscription : 10 mars 2021 18:43

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

Message 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.
DavidC
Messages : 12
Inscription : 10 mars 2021 18:43

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

Message 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...
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

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

Message 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é 3504 fois
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

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

Message par __sam__ »

Et au final il ne s'en est pas vendu beaucoup de MO5E en Allemagne.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Kristof
Messages : 368
Inscription : 08 mars 2021 10:44
Localisation : Narbonne (11)
Contact :

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

Message 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 ?
Répondre