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 : Carl, Papy.G, fneck

Répondre
__sam__
Messages : 4174
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ » 07 juin 2013 08:40

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+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
Dominique
Messages : 482
Enregistré le : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique » 11 juin 2013 20:18

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) Vu 880 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
Fichiers joints
decompiler.rar
(1.01 Kio) Téléchargé 30 fois

__sam__
Messages : 4174
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ » 11 juin 2013 22:22

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) Vu 865 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) Vu 865 fois
(Vérif)
Image6.gif
Image6.gif (5.88 Kio) Vu 865 fois
(Vérif)
Modifié en dernier par __sam__ le 12 juin 2013 10:31, modifié 2 fois.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

__sam__
Messages : 4174
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ » 11 juin 2013 22:23

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é.
Fichiers joints
dev_lim.zip
(11.28 Kio) Téléchargé 35 fois
Modifié en dernier par __sam__ le 11 juin 2013 23:11, modifié 1 fois.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
Dominique
Messages : 482
Enregistré le : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique » 11 juin 2013 23:00

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 : 4174
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ » 11 juin 2013 23:49

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+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
Carl
Modérateur
Messages : 10254
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Discussion sur le langage Forth

Message par Carl » 20 juil. 2013 10:55

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
Fichiers joints
FORTH.rar
(715.14 Kio) Téléchargé 33 fois

Répondre