Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

width-Trick

2 views
Skip to first unread message

Volker Pohlers

unread,
May 29, 2008, 1:30:31 PM5/29/08
to
Hallo liebe Forthler,

im Zuge der Aufarbeitung von Software für meine alten 8-Bit-Rechner ist
mir folgender Code zum Anlegen lokaler Variablen aufgefallen:

00 \ lokale Variablen VP-31okt90
01
02 DECIMAL
03
04 VARIABLE 'LOCAL
05
06 : LOCAL ( n -- )
07 DUP 9 > ABORT" zu viele loka
08 le Variablen"
09 2* DUP
10 [ HIDDEN ] COMPILE BRANCH
11 [ FORTH ] HERE + 2+ ,
12 HERE 'LOCAL !
13 ALLOT ;
14

00 \ lokale Variablen VP-31okt90
01
02 3 WIDTH !
03
04 : LOCn ( -- )
05 HERE 4 + C@ ASCII 0 -
06 2* 'LOCAL @ +
07 [COMPILE] LITERAL ;
08 IMMEDIATE
09
10 31 WIDTH !
11

Screen # 02 -----------------------

00 \ Beispiel 2 VP-31okt90
01
02
03 : 5SWAP2 ( n1 .. n5 -- n5 .. n1)
04 [ 5 LOCAL ]
05 LOC0 ! LOC1 ! LOC2 !
06 LOC3 ! LOC4 !
07 LOC0 @ LOC1 @ LOC2 @
08 LOC3 @ LOC4 @ ;
09

Durch Setzen der gültigen Wortlänge auf 3 werden so im zweiten Screen
auf einen Schlag die Worte LOC0, LOC1, LOC2, ..., LOC9 definiert.

Diesen Trick hatte ich vermutlich aus Baranov, Nosdrunov: jasyk fort i
jevo realisazii, Maschinostrojenie, Leningrad, 1988, (in russischer
Sprache).

Und nun meine Frage: Funktioniert das auch noch mit modernen FORTH's
oder ging das nur mit FIG-FORTH und F83? (Sorry, aber das ist mein Stand
- ich hatte die letzten 15 Jahre nicht mit FORTH zu tun).

mfg
Volker

Bernd Paysan

unread,
May 30, 2008, 5:36:44 AM5/30/08
to
Volker Pohlers wrote:
> Und nun meine Frage: Funktioniert das auch noch mit modernen FORTH's
> oder ging das nur mit FIG-FORTH und F83? (Sorry, aber das ist mein Stand
> - ich hatte die letzten 15 Jahre nicht mit FORTH zu tun).

Das geht wohl nicht mit moderneren Forths. Dafür haben die bereits eine
brauchbare Local-Syntax (also nicht einfach nur Nummern).

: 5swap { a b c d e } e d c b a ;

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://www.jwdt.com/~paysan/

Anton Ertl

unread,
May 30, 2008, 8:43:48 AM5/30/08
to

Eigentlich wurde nur ein Wort LOCn definiert, das auf alle Woerter
matcht, die mit LOC anfangen und 4 Zeichen haben. Und dieses Wort
compiliert etwas anderes, je nachdem, was das vierte Zeichen ist.

>Und nun meine Frage: Funktioniert das auch noch mit modernen FORTH's

Nein, moderne Forths kennen normalerweise WIDTH nicht. Da werden die
Namen immer in voller Laenge abgespeichert.

- anton
--
M. Anton Ertl Some things have to be seen to be believed
an...@mips.complang.tuwien.ac.at Most things have to be believed to be seen
http://www.complang.tuwien.ac.at/anton/home.html

0 new messages