nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

width-Trick

Von: Volker Pohlers (vpohlers@arcor.de) [Profil]
Datum: 29.05.2008 19:30
Message-ID: <483ee809$0$27441$9b4e6d93@newsspool4.arcor-online.net>
Newsgroup: de.comp.lang.forth
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

[ Auf dieses Posting antworten ]

Antworten