C'est l'idéePapy.G a écrit :Ben, alors, un développement en appelant un autre, donc, les petites améliorations de l'éditeur effectuées pour l'assembleur pourraient profiter au Forth de même?
[Philips] VG5000 Forth
Modérateurs : Papy.G, fneck, Carl
Re: [Philips] VG5000 Forth
Re: [Philips] VG5000 Forth
J'ai un problème avec ce forth. Il ne prend pour arithmetique que des nombres sur 16bits. Il n'y a pas de mode calcul plus poussé en forth?
-
- Messages : 7923
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Philips] VG5000 Forth
Le forth est essentiellement un langage 16bits sur les machines 8/16 bits pour des raisons historiques (https://users.ece.cmu.edu/~koopman/stac ... ec4_1.html). Cependant dans certains Forth de 79, il y a des primitives 32bits qui travaillent en combinant 2 cellules 16bits ensemble sur la pile (https://www.complang.tuwien.ac.at/forth ... RTH-79.TXT)
Si ces primitives n'existent pas, il doit être amusant de les recréer avec les opérations 16 bits classiques:
L'addition 32bits est plus coton si on ne peut pas utiliser l'operation ADC (add with carry), mais c'est faisable. Je ne m'y connais pas assez en forth pour implémenter efficacement l'algo suivant (Dominique?)(oulà ici j'ai du réflechir pour trouver cette formule qui donne la carry de a2+b2, j'espère que ne ne me suis pas planté !)
[EDIT] Apparemment si on a l'instruction M+ ( d1 n -- d2 ) qui ajoute un entier 16 bit à un entier 32bits , alors définir D+ est aisé:
Code : Tout sélectionner
11. EXTENSION WORD SETS
11.1 DOUBLE NUMBER WORD SET
2! d addr -- "two-store"
Store d in 4 consecutive bytes beginning at addr, as for a
double number.
2@ addr -- d "two-fetch"
Leave on the stack the contents of the four consecutive bytes
beginning at addr, as for a double number.
2CONSTANT d -- "two-constant"
A defining word used in the form:
d 2CONSTANT <name>
to create a dictionary entry for <name>, leaving d in its
parameter field. When <name> is later executed, d will be
left on the stack.
2DROP d -- "two-drop"
Drop the top double number on the stack.
2DUP d -- d d "two-dupe"
Duplicate the top double number on the stack.
2OVER d1 d2 -- d1 d2 d1 "two-over"
Leave a copy of the second double number on the stack.
2ROT d1 d2 d3 -- d2 d3 d1 "two-rote"
Rotate the third double number to the top of the stack.
2SWAP d1 d2 -- d2 d1 "two-swap"
Exchange the top two double numbers on the stack.
2VARIABLE "two-variable"
A defining word used in the form:
2VARIABLE <name>
to create a dictionary entry of <name> and assign four bytes
for storage in the parameter field. When <name> is later
executed, it will leave the address of the first byte of its
parameter field is placed on the stack.
D+ d1 d2 -- d3 241 "d-plus"
Leave the arithmetic sum of d1 and d2.
D- d1 d2 -- d3 129 "d-minus"
Subtract d2 from d1 and leave the difference d3.
D. d -- 129 "d-dot"
Display d converted according to BASE in a free field format,
with one trailing blank. Display the sign only if negative.
D.R d n -- "d-dot-r"
Display d converted according to BASE, right aligned in an c
character field. Display the sign only if negative.
D0= d -- flag "d-zero-equals"
Leave true if d is zero.
D< d1 d2 -- flag 244 "d-less"
True if d1 is less than d2.
D= d1 d2 -- flag "d-equal"
True if d1 equals d2.
DABS d1 -- d2 "d-absolute"
Leave as a positive double number d2, the absolute value of a
double number, d1. {0..2,147,483,647}
DMAX d1 d2 -- d3 "d-max"
Leave the larger of two double numbers.
DMIN d1 d2 -- d3 "d-min"
Leave the smaller of two double numbers.
DNEGATE d -- -d 245
Leave the double number two's complement of a double number,
i.e., the difference 0 less d.
DU< ud1 ud2 -- flag "d-u-less"
True if ud1 is less than ud2. Both numbers are unsigned.
Code : Tout sélectionner
: 2dup ( a b -- a b a b ) over over ;
: 2drop ( a b -- ) drop drop ;
Code : Tout sélectionner
c2 = a2 + b2
c1 = (((a2&b2) | ((c2&(a2|b2)))<0 ? 1 : 0) # <--- carry de a2+b2
+ a1 + b1
Code : Tout sélectionner
: D+ ( a1 a2 b1 b2 -- c1 c2 )
rot ( a1 b1 b2 a2 )
2dup ( a1 b1 b2 a2 b2 a2 )
2dup ( a1 b1 b2 a2 b2 a2 b2 a2 )
or ( a1 b1 b2 a2 b2 a2 b2|a2 )
rot ( a1 b1 b2 a2 b2|a2 b2 a2 )
+ ( a1 b1 b2 a2 b2|a2 b2+a2 )
dup ( a1 b1 b2 a2 b2|a2 b2+a2 b2+a2 )
>r ( a1 b1 b2 a2 b2|a2 c2 )
and ( a1 b1 b2 a2 (b2|a2)&c2 )
rot ( a1 b1 (b2|a2)&c2 b2 a2 )
and ( a1 b1 (b2|a2)&c2 b2&a2 )
or ( a1 b1 ((b2|a2)&c2|(b2&a2)) )
0 < ( a1 b1 (-1 si carry i.e. ((b2|a2)&c2|(b2&a2))<0, 0 sinon) )
- ( a1 (b1+carry) )
+ ( a1+b1+carry )
r> ( c1 c2 )
;
Code : Tout sélectionner
: D+ ROT + >R M+ R> + ;
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 7923
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Philips] VG5000 Forth
Ben c'était sur: je me suis planté. La formule devrait plutôt être un truc comme "si le bit de poids fort de a2 et celui de b2 sont à 1 on a une carry, sinon la carry n'a lieu que si a2 ou b2 ont un bit de poids fort à 1 et que c2 ne l'a pas":__sam__ a écrit :(oulà ici j'ai du réflechir pour trouver cette formule qui donne la carry de a2+b2, j'espère que ne ne me suis pas planté !)Code : Tout sélectionner
c1 = (((a2&b2) | ((c2&(a2|b2)))<0 ? 1 : 0) # <--- carry de a2+b2 + a1 + b1
Code : Tout sélectionner
c1 = (((a2&b2) | (~c2&(a2|b2)))<0 ? 1 : 0) # <--- carry de a2+b2
+ a1 + b1
Code : Tout sélectionner
: D+ ( a1 a2 b1 b2 -- c1 c2 )
rot ( a1 b1 b2 a2 )
2dup ( a1 b1 b2 a2 b2 a2 )
2dup ( a1 b1 b2 a2 b2 a2 b2 a2 )
+ ( a1 b1 b2 a2 b2 a2 b2+a2 )
dup ( a1 b1 b2 a2 b2 a2 c2 c2 )
>r ( a1 b1 b2 a2 b2 a2 c2 )
invert ( a1 b1 b2 a2 b2 a2 ~c2 )
rot ( a1 b1 b2 a2 ~c2 b2 a2 )
or ( a1 b1 b2 a2 ~c2 b2|a2 )
and ( a1 b1 b2 a2 ~c2&(b2|a2) )
rot ( a1 b1 ~c2&(b2|a2) b2 a2 )
and ( a1 b1 ~c2&(b2|a2) b2&a2 )
or ( a1 b1 ~c2&(b2|a2)|(b2&a2) )
0 < ( a1 b1 (-1 si ~c2&(b2|a2)|(b2&a2)<0, cad si carry, 0 sinon) )
- ( a1 (b1+carry) )
+ ( a1+b1+carry )
r> ( c1 c2 )
;
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Philips] VG5000 Forth
Bonjour à tous
Je brule d'envie de participer, mais malheureusement je ne peux pas - en fait je me l'interdit parce que sinon je plonge dans le sujet et je finis par délaisser ce à quoi je suis tenu.
Sans rentrer dans les détails je prépare la cession d'une TPE courant 2016 et je suis trop impliqué.
Comme expliqué à l'époque ce Forth est une adaptation d'une version "noyau FORTH" pour TRS80 puis ZX81 trouvé dans une revue brésilienne. Considérant qu'à l'époque il fallait faire tourner ce compilateur sur des machines 16 K en laissant de quoi écrire un éditeur et faire des programmes, la priorité est donc restée aux 16 bits (15 + 1 du signe)
- On peut modifier ce FORTH pour accepter le 32 bits. Selon le standard FORTH
124 <CR> est 16 bits
124. <CR> est 32 bits
donc Pour passer aux 32 bits il convient d'abord de modifier dans la routine d'interprétation OUTIN le mot ?NUMBER en lui demandant d'accepter un point après un nombre et de considérer ceci comme un 32 bits.
La routine OUTIN lit le buffer d'entrée et sépare chaque mot (aspace - token) puis (par qsearch) vérifie si le mot est dans la dictionnaire. S'il n'y est pas (par qnumber) vérifie s'il s'agit d'un nombre ...... c'est là qu'il faut lui demander de vérifier si ce n'est pas un 32 bits.
Version "ForthOriginal.asm"
Je ne sais pas si j'avais donné le fichier source, mais le voici . Excusez mais les notes sont en portugais
En 2010 j'avais fait cette modif dans le fichier "ForthOriginacompletl.asm" amusez vous bien et désolé de ne pas pouvoir être avec vous...
Vivement la quille !
<Edit> et bonne année à TOUS !!!! <fin Edit>
Je brule d'envie de participer, mais malheureusement je ne peux pas - en fait je me l'interdit parce que sinon je plonge dans le sujet et je finis par délaisser ce à quoi je suis tenu.
Sans rentrer dans les détails je prépare la cession d'une TPE courant 2016 et je suis trop impliqué.
Comme expliqué à l'époque ce Forth est une adaptation d'une version "noyau FORTH" pour TRS80 puis ZX81 trouvé dans une revue brésilienne. Considérant qu'à l'époque il fallait faire tourner ce compilateur sur des machines 16 K en laissant de quoi écrire un éditeur et faire des programmes, la priorité est donc restée aux 16 bits (15 + 1 du signe)
- On peut modifier ce FORTH pour accepter le 32 bits. Selon le standard FORTH
124 <CR> est 16 bits
124. <CR> est 32 bits
donc Pour passer aux 32 bits il convient d'abord de modifier dans la routine d'interprétation OUTIN le mot ?NUMBER en lui demandant d'accepter un point après un nombre et de considérer ceci comme un 32 bits.
La routine OUTIN lit le buffer d'entrée et sépare chaque mot (aspace - token) puis (par qsearch) vérifie si le mot est dans la dictionnaire. S'il n'y est pas (par qnumber) vérifie s'il s'agit d'un nombre ...... c'est là qu'il faut lui demander de vérifier si ce n'est pas un 32 bits.
Version "ForthOriginal.asm"
Code : Tout sélectionner
cf_outin: ; 'code field'
dw c_colon ;
dw cf_aspace ;
dw cf_token ;
dw cf_qsearch ;
dw cf_starif ;
db $12 ;
dw cf_qnumber ;
dw cf_0equal ;
dw cf_starif ;
db $17 ;
dw cf_ftoken ;
dw cf_fetch ;
dw cf_starif ;
db $12 ;
dw cf_starwhile ;
db $e7 ;
dw cf_qexecut ;
dw cf_ftoken ;
dw cf_fetch ;
dw cf_starif ;
db $06 ;
dw cf_starwhile ;
db $DB ;
dw cf_question ;
dw cf_stop ;
En 2010 j'avais fait cette modif dans le fichier "ForthOriginacompletl.asm" amusez vous bien et désolé de ne pas pouvoir être avec vous...
Vivement la quille !
<Edit> et bonne année à TOUS !!!! <fin Edit>
Re: [Philips] VG5000 Forth
Merci pour tout, Dominique. Pour ton travail sur les Forths et ton implication déjà publiée et documentée pour les passionnés.
Je rappelle que la version du compilateur Forth pour Zx81 (Z80/16k) est incluse dans l'émulateur "Vb81 XuR", incluant une librairie de fonctions mathématique et une compatibilité FiG Forth.
<lien vers Vb81 XuR>
à voir aussi:
http://www.forthworks.com/retro
Car le site de Dominique [http://retroforth.com] est réorienté.
Je rappelle que la version du compilateur Forth pour Zx81 (Z80/16k) est incluse dans l'émulateur "Vb81 XuR", incluant une librairie de fonctions mathématique et une compatibilité FiG Forth.
<lien vers Vb81 XuR>
à voir aussi:
http://www.forthworks.com/retro
Car le site de Dominique [http://retroforth.com] est réorienté.
Code : Tout sélectionner
Zx81 Forth Compiler. -------------------- Revised and adapted by Dominique 2009/10 Change done : Ascii ZX81 conversion table: +------------+----------------+ | ZX81 Forth | Standard Forth | +------------+----------------+ | (?) | ' | | -( )- | [ ] | | +$ | +! | | $ | ! | | C$ | C! | | C£ | C@ | | £ | @ | | N> | #> | | <N | <# | | N | # | | NS | #S | | NIN | #IN | | *N | *# | | CAR | ASCII | +------------+----------------+ For better FIG FORTH’s Standard 1 - WE RENAME the original words PAGE to CLS PTC to AT TYPE to TIPE (For later correct FIG Standard definition of TYPE) 2 - Change on the following definition given by the Author: a) In order to prevent problems with the IMMEDIATE dictionary, FORGET became now : FORGET CURRENT £ CONTEXT $ (?) DUP BEGIN COMPILER £ OVER OVER < WHILE DUP C£ + 1+ £ COMPILER $ REPEAT DROP 2 - £ CURRENT £ $ DP £ C£ 3 + - DP $ ; b) Correction of some tipo with the GRAF routine. c) several words as ARRAY REVERSE INKEY etc were not included in this file, as they will be included later in specific binary files such as GameUtility – MathUtility – GraficUtility aso Remembering that they can be included at any time d) We switched STATE and MODE, giving back to STATE his original FIG purpose of Interpretation/compilation flag. So, in the THOMAS LÖW document CASE: became : CASE: <BUILDS STATE 1SET DOES> SWAP 2 * + £ EXECUT ; ;CODE became : ;CODE *N SCODE , STATE 0SET ; IMMEDIATE 3 - A Forth Editor written in Forth, beginning at h8000, were included. 4 - VLIST list the dictionary. EDIT EP COPY S-AR S-AV RETI NIN AJO REC AVA MP LECIN$ LECIN£ LECIN LEC DELETE INSERT (IS) (DS) (DL) (IL) CMOVE> FORMAT CLEAR ERASE FILL WRITE --> COMPIL READ CMOVE (LOOP-SCR) (LOOP-LINE) (CS) (CL) (WL) (RL) ENTETE LIST SCR (SCR) (LINE) FIRST LIMIT SCR/DISK L/SCR B/LIN R0 S0 >R MAX MIN * MULT L-EDIT VLIST LIST-VOC LIST-WORD LIST L-EDIT LOAD AT /MOD NOT XOR OR / ALLOT MAX MIN HEX DECIMAL FORGET IMMEDIATE <BUILDS OUTIN VARIABLE CONSTANT DOES> (?) : CREATE ?NUMBER SCODE . NS N PICK NEXT END, ?SEARCH ENTRY ?EXECUTE DO, D/MOD NUMBER * CAR <N C£ J N> TYPE SIGN R> I 1SET 0SET AND 0= +SP EXECUT £ CLS SWAP - + , *N $ ABS TOKEN SEARCH KEY DROP EMIT ROT 0< > < DUP DP STATE COMPILER CURRENT CONTEXT ASPACE BASE FTOKEN MODE CURSOR LBP INPUT QUESTION = HERE CR C$ OVER C, 1+ *( 2+ +$ *WHILE *END *ELSE *IF ." LEAVE +LOOP REPEAT WHILE UNTIL BEGIN LOOP DO ELSE THEN IF ; 5 - HERE point at h5EDB Original project by Professor Antonio Costa for "Compilador FORTH" Micro Sistemas N° 22 - august 1983. http://www.datacassete.com.br/revistas/ms/20/micro_sistemas_22.pdf\ Zx81 conversion by Tomas Löw for his conversion to ZX81 computer Based on Ericson Benjamim's scans and the PDF documents. Dominique.
Re: [Philips] VG5000 Forth
Vu l'activité sur forth, je me suis dit que j'allais travailler sur le Forth pour VG5000.
Je suis tombé sur un bug dans l'éditeur Dominique. Si tu tapes directement backspace (sans rien avoir tapé avant) tu obtiens le caractère ASCII 7. Normalement, il ne devrait rien se passer. J'ai essayé de fixer ce bug. Mais aucune idée d'où vient le problème. Quand on tape un texte la touche backspace agit correctement. C'est simplement quand on l'utilise comme première touche que le bug apparaît.
Dominique, peux-tu y jeter un oeil?
Je suis tombé sur un bug dans l'éditeur Dominique. Si tu tapes directement backspace (sans rien avoir tapé avant) tu obtiens le caractère ASCII 7. Normalement, il ne devrait rien se passer. J'ai essayé de fixer ce bug. Mais aucune idée d'où vient le problème. Quand on tape un texte la touche backspace agit correctement. C'est simplement quand on l'utilise comme première touche que le bug apparaît.
Dominique, peux-tu y jeter un oeil?
- Pièces jointes
-
- Screenshot_20160508_083955.png (5.86 Kio) Consulté 6287 fois
Dernière modification par joaopa le 08 mai 2016 20:56, modifié 1 fois.
Re: [Philips] VG5000 Forth
Salut
Je veux bien essayer de regarder, quoique ce moniteur soit ancien. Pourrais tu m'envoyer une copie de la K7 afin que je retrouve la bonne "source". J'ai fini par faire différentes versions et le manque de temps m'avait empêché de corriger tous les bugs.
! A+
Je veux bien essayer de regarder, quoique ce moniteur soit ancien. Pourrais tu m'envoyer une copie de la K7 afin que je retrouve la bonne "source". J'ai fini par faire différentes versions et le manque de temps m'avait empêché de corriger tous les bugs.
! A+
Re: [Philips] VG5000 Forth
C'est celle du commentaire
http://forum.system-cfg.com/download/file.php?id=1997
http://forum.system-cfg.com/download/file.php?id=1997
Re: [Philips] VG5000 Forth
Ne cherche pas. Je viens de trouver. C'est complètement tordu. Dans le listing du forth, ce cas a été prévu. Et dans ce cas la, ca émet un son. Je suppose que sous Zx81, la routine de ce son est call 7. Forh appelle cette routine. Dans notre cas, on se retrouve avec un emit_c pour la valeur de A=7, ce qui affiche le caractère vu dans la prise d'écran. P..ain, 1heure et demie pour trouver cette connerie!!
Re: [Philips] VG5000 Forth
Je crains que le débug soit assez long.
Un des problèmes vient des valeurs des touches clavier qui doivent être modifiées.
Mais pour celà il faut suivre la logique du compilateur.
Je te conseille de mettre un point d'arret à 64EB (C'est de la que la routine waitakey est censée avoir en A la valeur de la touche.)
Si tu fais un "pas à pas" tu tombes rapidement sur la routine EXPECT (5DA0).
Il faut comprendre ce que fait EXPECT. Elle est censée tester la Flèche gauche (entre autres). Or la valeur qu'elle attend pour flèche gauche est celle donnée en 5DB8 = 0E 00 ! Or la flèche, si je crois me souvenir doit être 08 (et non 0E).
Il y aurait déjà ça à corriger plus plus plus des tas de trucs
Je te propose, si tu es d'accord, d'attendre un petit peu avant que je me re-plonge; Il faut un jour ou l'autre mettre droit ce Forth bancal. Pour ma part je termine les routines 32 bits de division, puis j'ai hélas de gros soucis familiaux qui vont m’empêcher de me concentrer sur le sujet pour une quinzaine.
J'aimerai qu'on puisse y travailler ensemble puisque tu domines parfaitement le VG d'après ce que j'ai pu voir de tes excellents travaux précédents.
OK ? Merci
Un des problèmes vient des valeurs des touches clavier qui doivent être modifiées.
Mais pour celà il faut suivre la logique du compilateur.
Je te conseille de mettre un point d'arret à 64EB (C'est de la que la routine waitakey est censée avoir en A la valeur de la touche.)
Si tu fais un "pas à pas" tu tombes rapidement sur la routine EXPECT (5DA0).
Il faut comprendre ce que fait EXPECT. Elle est censée tester la Flèche gauche (entre autres). Or la valeur qu'elle attend pour flèche gauche est celle donnée en 5DB8 = 0E 00 ! Or la flèche, si je crois me souvenir doit être 08 (et non 0E).
Il y aurait déjà ça à corriger plus plus plus des tas de trucs
Je te propose, si tu es d'accord, d'attendre un petit peu avant que je me re-plonge; Il faut un jour ou l'autre mettre droit ce Forth bancal. Pour ma part je termine les routines 32 bits de division, puis j'ai hélas de gros soucis familiaux qui vont m’empêcher de me concentrer sur le sujet pour une quinzaine.
J'aimerai qu'on puisse y travailler ensemble puisque tu domines parfaitement le VG d'après ce que j'ai pu voir de tes excellents travaux précédents.
OK ? Merci
-
- Messages : 7923
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Philips] VG5000 Forth
Il me semble en effet qu"'en ASCII ctrl-g alias chr(7), alias "BEL", alias "\a" en C fait beep. C'est pas tout récent, ca date du code Baudot de 1870 https://www.wikiwand.com/en/Bell_characterjoaopa a écrit :Dans notre cas, on se retrouve avec un emit_c pour la valeur de A=7, ce qui affiche le caractère vu dans la prise d'écran.
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
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Philips] VG5000 Forth
Je pense que ce call 7 ne vient pas du ZX81. Le listing VG5000beta n'a rien à voir avec le ZX81, mais avec l'implantation standard du Figforth pour les machines avec ce processeurjoaopa a écrit :Je suppose que sous Zx81, la routine de ce son est call 7.
Le document dit : "Version for TC/TR STD bus CPU card."
Dans les instructions FIGFORINSTRUCT.txt ils disent :
. . . .
3. Edit the FIG assembly listing on your system, re-write the I-O
routines, and assemble.
4. Load someone else's object code up to the installation dependent
code. Hand assemble equivalents for your system and poke in
with your monitor. Begin execution and type in (self-compile)
the rest of the system. This takes about two hours once you
understand the structure of Forth (but that will take much more
time!).
Et c'est ce que je n'ai pas terminé. Ce qui bloque comme je t'ai dit c'est ce travail d'adaptation des adresses et touches clavier.
J'en avais fait une grande partie, mais il manquait encore ce travail de révision.
Re: [Philips] VG5000 Forth
Bonjour,
étant donné que je viens de finir un interpréteur Lisp pour VG5000, il faut vraiment finir ce Forth. Ainsi le VG5000 commencera à avoir une logithèque de langage un peu correcte.
Voici ce que je compte implémenter dans ce forth: sauvegarde de l'espace de travail (ce qui évitera le retour au basic pour enregistrer), chargement de l'espace de travail et chargement d'un programme forth écrit dans l'éditeur de texte FICHIER. Il suffira juste d'adapter ce que j'ai fait dans 8KLIsp. Ca ne devrait pas être trop difficile.
J'ai apporté quelques améliorations à l'éditeur. Je les porterai pour ce forth.
Ensuite, faire une deuxième version avec des routines de calculs mathématiques en nombres flottants. Là il faudra l'extension 16K pour en profiter un peu.
Et le rêve ultime: une cartouche Fig-Forth pour remplacer le basic résident et ainsi disposer des 16Ko de base du VG5000.
étant donné que je viens de finir un interpréteur Lisp pour VG5000, il faut vraiment finir ce Forth. Ainsi le VG5000 commencera à avoir une logithèque de langage un peu correcte.
Voici ce que je compte implémenter dans ce forth: sauvegarde de l'espace de travail (ce qui évitera le retour au basic pour enregistrer), chargement de l'espace de travail et chargement d'un programme forth écrit dans l'éditeur de texte FICHIER. Il suffira juste d'adapter ce que j'ai fait dans 8KLIsp. Ca ne devrait pas être trop difficile.
J'ai apporté quelques améliorations à l'éditeur. Je les porterai pour ce forth.
Ensuite, faire une deuxième version avec des routines de calculs mathématiques en nombres flottants. Là il faudra l'extension 16K pour en profiter un peu.
Et le rêve ultime: une cartouche Fig-Forth pour remplacer le basic résident et ainsi disposer des 16Ko de base du VG5000.
Re: [Philips] VG5000 Forth
Bonjour,
j'ai essayé de taper le listing de sokoban avec le compilateur forth présent dans ce topic, mais j'échoue lamentablement. Ce listing est-il prévu pour le fig-forth de VG5000 ou c'est pour un autre?
Merci d'avance
Je demande ceci car j'ai commencé à améliorer ce fig-forth (la partie editeur....), mais je bloque pour la suite
j'ai essayé de taper le listing de sokoban avec le compilateur forth présent dans ce topic, mais j'échoue lamentablement. Ce listing est-il prévu pour le fig-forth de VG5000 ou c'est pour un autre?
Merci d'avance
Je demande ceci car j'ai commencé à améliorer ce fig-forth (la partie editeur....), mais je bloque pour la suite
- Pièces jointes
-
- FigForth.z80.zip
- (14.05 Kio) Téléchargé 136 fois