[Philips] VG5000 Forth

Cette catégorie traite de développements récents pour 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
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

[Philips] VG5000 Forth

Message par Carl »

Le pouvoir de la "Forth" :wink:
à toi de jouer Dominique pour nous faire partager ton projet d'adaptation du Forth sur le VG5000

Carl
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [Philips] VG5000 Forth

Message par Dominique »

Ok Carl.
Sauf qu'il ne faut pas être très pressé.
J'en suis à la lecture de tout ce qui me tombe sous la main sur le VG5000 et en particulier je chasse les entrées de la ROM.

Mais bon, ainsi invité je vais m'y mettre. Juste deux ou 3 scan à faire :wink:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Philips] VG5000 Forth

Message par Daniel »

Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [Philips] VG5000 Forth

Message par Dominique »

Mais c'est génial Daniel !!!

Merci. Dire que je pensais desassembler ça ce soir ! :D

Je pense que je vais avoir des tonnes de truc à te demander.

D'abord j'essaye de me documenter avant de mettre la main à la pâte. Peut être ce Week End.

Merci encore
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Philips] VG5000 Forth

Message par Daniel »

Le VG5000 est une machine simple et logique. L'émulation du système n'est pas difficile, c'est pourquoi il n'y a pas beaucoup de commentaires dans le dump de la rom : la mise au point de l'émulateur n'a pas nécessité de comprendre tous les détails.

En revanche le processeur video EF9345 est très complexe, mais c'est une autre histoire. Les ingénieurs de Philips n'ont pas utilisé le moitié de ses possibilités. L'Alice 32 utilise aussi l'EF9345, et ses concepteurs ont été beaucoup plus loin avec le mode 80 colonnes, les trois couleurs supplémentaires et le dessin vectoriel.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [Philips] VG5000 Forth

Message par Dominique »

Le plus amusant sera d’essayer de faire ce compilateur ensemble et que le maximum puisse suivre.
Les seules véritables difficultés pour monter notre Forth, seront de jouer avec les particularités du VG5000.
A) On peut faire vivre ensemble le Basic et un programme en LM
- Le programme Basic peut se résumer en un simple appel au programme en LM - USR(I) ou CALL. Sauf si on n’arrive pas à enregistrer sur la K7 à partir du LM. Auquel cas il faudra penser à retourner au Basic pour faire un CSAVE. Daniel, il semble que le CSAVE soit à l’adresse 19DE. Penses tu que ça puisse marcher par un appel direct CD sur ton émulateur ?
- J’ai vu qu’on peut réserver l’espace mémoire par un CLEAR A, & « HHHH ». Si on ne passe pas par une REM, comment faire en pratique ? :
a) Supposons que j’ai un programme BASIC
10 CALL & »HHHH »
Et à l’adresse HHHH mon programme en LM.
Si je ne rajoute plus rien à mon BASIC, l'adresse HHHH est elle préservée pour toujours. même si chargée d'une K7 après un boot à froid ?
b) Quelle est la première adresse HHHH utilisable ? J’ai vu qu’il y avait des variables système (couleur, adresse écran etc..) il serait bon de les préserver. Si on n’a pas besoin de retourner au Basic ( cas CSAVE ci-dessus), on peut gagner de la place en écrasant des variables qui ne servent qu’au BASIC. Qu’en penses-tu ?
B) Comme la machine ne possède pas de ‘moniteur’, on peut suivre ta suggestion : Assembler nos programmes en LM, obtenir un fichier BIN (TASM fait très bien ça) et l’inclure dans un fichier mrx (Notepad++ le fait bien) en prenant bien soin de ne pas se tromper dans les adresses. L’avantage est que nous aurons un fichier *.asm que nous pourrons modifier à loisir.
C) Le Forth se résume, à 90 %, de routines indépendantes de la machine. C’est sur ce 10 % que je sens la difficulté.

La principale est celle-ci : On va créer un BUFFER d’entrées dans la RAM. C’est là que le Compilateur Forth stockera le flot d’entrée (c'est-à-dire les touches clavier au fur et à mesure qu’on tape), et les fera apparaitre en même temps à l’écran. On se contentera des touches alpha numériques. On remplira le buffer et l’écran avec les caractères jusqu’à la commande New Line qui sera pour le Forth le signal qu’il faut prendre la main pour lire et interpréter le Buffer.

D)
a) La première routine que l’on doit faire, appelons la Read_kb, Daniel, elle existe peut être, j’ai pas encore tout lu.
Sauvegarde Registres (des PUSH)
lire le clavier (Call ROM)
Sauvegarder la touche (éviter répétition)
Test si touche appuyée
Si non retour lecture clavier
= Dernière touche sauvegardée ?
Si oui Retour lecture clavier (Répétition touche)
décodifier ASCII (Existe-t-il une routine ROM ?)
Touche valide ? ( pour éviter touches spéciales ou manette jeu etc)
Si non retour lecture clavier
Sauvegarder Touche
Peut être un Loop (delay)
Récupère Registres
b) La seconde on l’appellera Emit_Car
Envoyer le caractère ASCII à l’écran ( avec test fin de ligne, new line, scroll etc..) Cette routine existe-telle ?
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [Philips] VG5000 Forth

Message par Dominique »

Ah, j'oubliais Daniel, routine d'interprétation du Back Space, à inclure avec routine Scroll et new line si elles n'existent pas dans la ROM

Je vais regarder plus en détail la ROM et tes commentaires. Mais si tu as la/les réponses :P
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Philips] VG5000 Forth

Message par Daniel »

Je ne me suis pas trop intéressé au VG5000 ces dernières années, et ma mémoire est un peu volatile, alors je ne répondrai pas précisément à toutes les questions. Il faudrait beaucoup de temps pour se replonger dans tout ça.

La réservation de mémoire de l'instruction CLEAR est valable jusqu'à la prochaine instruction CLEAR, ou la destruction du programme par NEW, ou le reset de la machine, ou le chargement d'un autre programme BASIC. Il n'y a aucun moyen de réserver définitivement une zone.

L'utilisation de routines système ou de fonctions Basic est une bonne pratique, qui évite de programmer à nouveau ce qui l'est déjà. C'est relativement simple pour les fonctions de base du système : lire une touche, écrire ou lire un octet sur cassette, afficher un caractère ou une chaîne. Il suffit de connaître les paramètres en entrée (soit des registres, soit des vecteurs en mémoire) et en sortie (idem). C'est beaucoup plus compliqué pour les fonctions Basic, qui sont étroitement liées à la logique de l'interpéteur et très difficiles à extraire de ce contexte.

Je n'ai plus les adresses précises en tête, mais la RAM entre &H4000 et l'adresse maxi se partage en "vecteurs système", puis "vecteurs et zones de travail" du Basic, pui le programme Basic lui-même, puis variables Basic. Le CLEAR réserve la mémoire haute au-delà de l'adresse fixée. Aucune zone Basic ne dépassera cette limite. J'ai oublié où se trouve la pile système, il faudrait rechercher, mais normalement elle ne devrait pas être au-delà de la limite. Tout l'espace jusqu'à l'adresse haute (fonction de l'extension mémoire chargée) est disponible pour des programmes en langage machine.

Si le Basic n'est pas utilisé, le programme peut sans problème écraser toutes la mémoire sauf les "vecteurs système". C'est ce que font la plupart des jeux en langage machine. Bien évidemment, dans ce cas, il n'est pas possible de revenir au Basic sans faire un Reset et perdre son programme.

La technique de l'injection du fichier binaire dans un fichier .mrx est probablement le moyen le plus simple de charger le programme dans l'émulateur. Attention : il ne faut surtout pas modifier une zone en cours d'utilisation, sinon le plantage est assuré. Avant de sauver le fichier .mrx il faut prendre le soin de réserver une zone avec un CLEAR. Ensuite on sauve le fichier .mrx, on injecte le langage machine dans la zone réservée, puis on recharge. Après cette opération il est bon de faire immédiatement un CSAVEM sur cassette. C'est à la fois une sécurité et un moyen de recharger facilement le programme dans l'émulateur ou dans la vraie machine.

Ce projet de FORTH est peut-être le plus intéressant jamais mené depuis la création du VG5000. C'est très certainement un gros travail, qui nécessite beaucoup de temps et de persévérance, mais la satisfaction sera au bout. J'aime beaucoup ces défis gratuits, où la récompense est uniquement la satisfaction intellectuelle. Il ne faut surtout pas compter sur la reconnaissance des utilisateurs, il n'y en aura pas :wink:
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [Philips] VG5000 Forth

Message par Dominique »

Merci Daniel pour ton message.

Il me semble avoir vu la pile système à la fin de la RAM 7fff - selon la RAM

J'ai regardé ta ROM et elle est assez complète pour s'y retrouver. Il faudra peut être faire des tests par tâtonnement, genre quel registre doit avoir l'info et quel registre la sort, mais je veux y croire.
Daniel a écrit :"Avant de sauver le fichier .mrx il faut prendre le soin de réserver une zone avec un CLEAR. Ensuite on sauve le fichier .mrx, on injecte le langage machine dans la zone réservée, puis on recharge. Après cette opération il est bon de faire immédiatement un CSAVEM sur cassette. C'est à la fois une sécurité et un moyen de recharger facilement le programme dans l'émulateur ou dans la vraie machine."
OK, noté

A+ Dominique
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [Philips] VG5000 Forth

Message par Carl »

Image

Carl
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: [Philips] VG5000 Forth

Message par Dominique »

Bonjour Carl,

J'ai bien réfléchi :
Je vais partir à l'adresse $5000
Je ne vais pas utiliser la ROM pour les scroll ou back space ou curseur. L'Editeur le fera.

On va commencer en mode texte, avec interprétation des touches pour éditer.
L'éditeur sera réduit au strict minimum pour commencer.
Comme on peut poker et peek directement l'écran (adress$4000) et que on a la routine du clavier qui donne en A la touche, comme on a le "Map" des caractères en mode texte, ça ne devrait pas poser trop de problèmes.

A+ Dominique
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [Philips] VG5000 Forth

Message par gilles »

Moi je serai plutôt allé vers l'implémentation sous forme de cartouche rom. mais bon c'est une fixation chez moi ;)
la cartouche rom présente de nombreux avantages pour un langage.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Philips] VG5000 Forth

Message par Daniel »

Y-at'il des cartouches pour le VG5000 :?: Si oui il faudra trouver de la doc pour permettre à dcvg5k de les émuler.

Sur Thomson il y a un Forth sur disquette ou sur cartouche : http://dcmoto.free.fr/prog/164/index.html
Il y a peut-être des principes transposables au VG5000.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [Philips] VG5000 Forth

Message par gilles »

Pas certain que cela ait existé commercialement. mais c'est dans la carte d'adresse quelques messages plus haut...

photo de cartouche... de RAM visiblement...
http://www.system-cfg.com/scans/philips ... _p1231.jpg
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [Philips] VG5000 Forth

Message par Carl »

il existe la cartouche V0031 qui necessite de posséder l'extension VG5216...
Image
c'est une extension RAM...

j'ai pu lire dans une doc qu'il était prévu un cartouche logo mais jamais sortie...

donc il n'existe pas à ma connaissance de cartouche pour VG5000

Carl
Répondre