Discussion sur le langage 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

__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Précédement je parlais de mettre un AVR faisant tourner un système FORTH dans un minitel. Les auteurs de FlashForth l'ont +/- déjà fait.
FlashForth is a standalone native Forth operating system implemented on the Microchip 8-bit PIC18F and 16-bit PIC24, 30, 33 and the Atmel Atmega microcontroller families.
Ils sont même allés plus loin puisque le système est dispo en ligne sur le réseau: http://flashforth.sourceforge.net/
  • PIC18F2620 @ 12 MHz using a 38400 baud UART.

    Code : Tout sélectionner

    telnet -l pic18f2620 flashforth.dlinkddns.com
  • PIC24HJ128 @ 55 MHz using a 38400 baud UART.

    Code : Tout sélectionner

    telnet -l pic24hj128 flashforth.dlinkddns.com
  • ATMEGA328p @ 8 MHz using a 38400 baud UART.

    Code : Tout sélectionner

    telnet -l atmega328p flashforth.dlinkddns.com
  • ATMEGA128 @ 16 MHz using a 38400 baud UART.

    Code : Tout sélectionner

    telnet -l atmega128 flashforth.dlinkddns.com
Le mot de passe est "ff".

sam (C'est quand même rigolo d'être plusieurs à se connecter à un PIC à l'autre bout de la planète.)
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
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique »

Voici un décompiler qui va ravir l'ami _sam_
Venu tout droit de l'inégalable Forth Dimension je l'ai un peu adapté pour le MO5.

- Charger le programme avec la K7 par

1 9 CLOAD DKP

OBS : s'assurer que vous possédez la dernière version du Forth qui corrige le bug.

Charger le programme par

1 LOAD

Pour décompiler le mot REPEAT, par exemple faire :

DECOMPILER REPEAT
decompile.jpg
decompile.jpg (31.26 Kio) Consulté 3225 fois
Utiliser "Entrée" pour passer à la ligne suivante
utiliser U pour descendre les définitions d'un niveau
utiliser Q pour sortir.



Code : Tout sélectionner

HEX 
0 VARIABLE GIN 
0 VARIABLE BASESAV 
0 VARIABLE KEYSW 
0 VARIABLE RDFEN 
0 CONSTANT CASE IMMEDIATE
' C/L 2- @ CONSTANT CONST.ADR 
' BASE 2- @ CONSTANT USERV.ADR  
' GIN 2- @ CONSTANT VAR.ADR 
: OF 1 + >R COMPILE OVER COMPILE = [COMPILE] IF COMPILE DROP R> ; IMMEDIATE 
: ENDOF >R [COMPILE] ELSE R> ; IMMEDIATE 
: ENDCASE COMPILE DROP 0 DO [COMPILE] ENDIF LOOP ; IMMEDIATE 
: ASCII BL WORD HERE 1+ C@ [COMPILE] LITERAL ; IMMEDIATE
: U.  0 D. ; : GOV OVER @ 2+ ; 
: 2+D 2+ DUP ; 
: .G@ 0 4 D.R GIN @ ; 
: DIN CR DUP .G@ SPACES ; 
: GIN+ CR OVER .G@ 2+D GIN ! SPACES ; 
: RECURSIVE LATEST PFA CFA , ; IMMEDIATE   
: GCHKTYP CASE ' LIT OF 1 ENDOF ' BRANCH OF 1 ENDOF ' 0BRANCH OF 1 ENDOF ' (LOOP) OF 1 ENDOF ' (+LOOP) OF 1 ENDOF 0 SWAP ENDCASE ; 
: 1KEY  KEYSW @  IF ?TERMINAL IF ASCII Q ELSE DUP RDFEN @ U< IF BL ELSE 0D ENDIF ENDIF  ELSE KEY ENDIF ; 
: GCHK  1  CASE GOV ' COMPILE =  OF 2+D @ 2+ NFA ID. ENDOF  GOV GCHKTYP  OF 2+D C@ SPACE U. ENDOF  GOV ' CLIT = OF 2+D C@ SPACE . 1- ENDOF GOV ' (.") =  OF 2+D COUNT TYPE DUP C@ 1- + ENDOF  ENDCASE 2+ -2 GIN +! ; 
: CK: DUP CFA @ 4D70 = ; 
: DISTYPE  DUP C@ 40 AND IF ." [COMPILE] " ID. ELSE DUP ID. PFA CFA DUP @  CASE CONST.ADR OF ." CONST " EXECUTE U. ENDOF    VAR.ADR OF ." VAR " EXECUTE @ U. ENDOF  USERV.ADR OF ." USER " EXECUTE @ U. ENDOF  DROP  ENDCASE ENDIF ;  
: (GOESINTO)  CK:  IF 2- DIN ." :" 2+D NFA C@ 40 AND  IF ." IMMEDIATE" ENDIF  BEGIN DUP @ DUP ' ;S CFA =  OVER ' (;CODE) CFA = OR 0 =  WHILE  2+ GIN+ DUP NFA DISTYPE  1KEY CASE  ASCII Q OF SP! BASESAV @ BASE ! QUIT ENDOF  0D OF RECURSIVE ENDOF  ASCII U OF DROP DROP R> DROP -2 GIN +! ENDOF  DROP ENDCASE GCHK REPEAT CR GIN @ 6 + SPACES 2+ NFA ID. ENDIF DROP ; 
: DECOMPILER BASE @ BASESAV ! HEX -FIND IF DROP 0 GIN ! CK: IF (GOESINTO) ELSE NFA  DISTYPE ENDIF ELSE ." NOT IN DICTIONARY " ENDIF CR BASESAV @ BASE ! ; 
HERE RDFEN ! DECIMAL


EDIT : Forth dimension ---> http://www.forth.org/fd/FD-V05N6.pdf
Pièces jointes
decompiler.rar
(1.01 Kio) Téléchargé 143 fois
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Bravo.. C'est vraiment très beau cet environnement. On peut vraiment l'étendre dans tous les sens.

Je regrette de ne pas l'avoir connu à l'époque. Un de mes grande envies aurait été de faire un "truc" genre mu-math sur thomson. Je me rends compte que l’environnement forth aurait possiblement permis de faire cela proprement et efficacement. Quand je pense aux contorsions et bricolages que j'avais fait en basic pour écrire un calculateur de développement limités.
Image2.gif
Image2.gif (5.91 Kio) Consulté 3210 fois
(Vérif, héhé le 3/5X^5 est devenu une fraction beaucoup plus moche à cause des erreurs d'arrondis)
Image5.gif
Image5.gif (5.81 Kio) Consulté 3210 fois
(Vérif)
Image6.gif
Image6.gif (5.88 Kio) Consulté 3210 fois
(Vérif)
Dernière modification par __sam__ le 12 juin 2013 10:31, modifié 2 fois.
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
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Oops j'ai oublié le fichier pour les curieux.

Edit: après réflexion les calculs symboliques c'est peut être plus pour du lisp. Pas certain que cela ait existé pour Thomson, à l'exception du LOGO auquel je n'ai jamais trop accroché.
Pièces jointes
dev_lim.zip
(11.28 Kio) Téléchargé 142 fois
Dernière modification par __sam__ le 11 juin 2013 23:11, modifié 1 fois.
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
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique »

Comme tu l'as dit c'est beau.

Qui a déjà touché à la programmation ne peut pas rester insensible à cette solution simple et géniale :

Code : Tout sélectionner

0D OF RECURSIVE ENDOF
Tu fais <CR> ?, alors on recommence et on continue !
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

C'est quand même vachement puissant les primitives d' "introspection" telle que ' (tick?); Avec cela on peut trouver de façon portable le CFA des primitives sans bidouille en langage machine.

Par ailleurs dans le numéro de FORTH-DIMENSIONS ils montrent comment on peut faire des structures type RECORD en forth, ce qui me semble extraordinaire sachant que le langage ne le prévoyait pas à l'origine. Bon par contre, si l'idée générale me semble +/- claire (les champs ne sont finalement que des offset par rapport au début de la structure), les détails d'implémentation et plus encore: la syntaxe pour utiliser cette extension restent très opaques à mes yeux.
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
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Discussion sur le langage Forth

Message par Carl »

Je viens de remettre la main sur un vieux CD "Programmer Power Tools" avec entre autres un dossier Forth :

Directory MSDOS/FORTH
Filename Length Date Description
==========================================
4THPROG.ZIP 115096 891030 A collection of FORTH language tools
4THTUTOR.ZIP 37042 891101 A FORTH language tutor
EFORTH.ZIP 54528 900829 Ting's PD portable eForth, ROMable, w/asm src
F83HELP2.ZIP 12078 890630 Notes on the F83V2-80 FORTH for the Intel 8080.
F83V2_80.ZIP 140262 890630 Welcome to FORTH for the Intel 8080.
FIG_4TH.ZIP 130446 891031 Joe Smith's FIG-FORTH compiler
FORTH.ZIP 32959 890630 The Computer Language of FORTH.
MIN4TH25.ARC 17581 900120 MiniForth system v2.5, with A86 source
PASM386C.ZIP 66304 900307 386/386SX assembler v1.4 for Forth-PC v3.5
PCFORTH.ZIP 9322 890630 Version 1 Fig-FORTH for the Intel 8086 and 8088.
PYGMY13.ZIP 67072 900921 Forth: src,editor,metacompiler,mult.open files
ZEN1_10.ZIP 68608 900220 Zen1.0 Forth w/src to match ANS X3J14 BASIS 10
Pièces jointes
FORTH.rar
(715.14 Kio) Téléchargé 147 fois
Répondre