This page (revision-16) was last changed on 03-Feb-2023 15:21 by Carsten Strotmann 

This page was created on 25-Apr-2010 09:12 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
16 03-Feb-2023 15:21 10 KB Carsten Strotmann to previous
15 25-Apr-2010 10:56 8 KB Carsten Strotmann to previous | to last
14 25-Apr-2010 10:45 6 KB Carsten Strotmann to previous | to last
13 25-Apr-2010 10:37 5 KB Carsten Strotmann to previous | to last
12 25-Apr-2010 10:29 3 KB Carsten Strotmann to previous | to last
11 25-Apr-2010 10:29 3 KB Carsten Strotmann to previous | to last
10 25-Apr-2010 10:26 3 KB Carsten Strotmann to previous | to last
9 25-Apr-2010 10:19 2 KB Carsten Strotmann to previous | to last
8 25-Apr-2010 10:17 2 KB Carsten Strotmann to previous | to last
7 25-Apr-2010 09:49 1 KB Carsten Strotmann to previous | to last
6 25-Apr-2010 09:48 1 KB Carsten Strotmann to previous | to last
5 25-Apr-2010 09:48 1 KB Carsten Strotmann to previous | to last
4 25-Apr-2010 09:22 9 KB Carsten Strotmann to previous | to last
3 25-Apr-2010 09:20 9 KB Carsten Strotmann to previous | to last
2 25-Apr-2010 09:20 9 KB Carsten Strotmann to previous | to last
1 25-Apr-2010 09:12 9 KB Carsten Strotmann to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 100 added 21 lines
Ist irgendwas kleiner als Null, so wird "Fehler" ausgedruckt und die Ausführung des Wortes abgebrochen, sonst geht es weiter im Code.
! >LABEL und LABEL
Schließlich gibt es noch die Worte {{{>LABEL}}} und {{{LABEL}}}. {{{>LABEL}}} erzeugt ein Label im Heap, wobei es den Wert des Labels vom Stack nimmt . {{{LABEL}}} erzeugt ein Label mit dern Wert von HERE. Beispiel:
{{{
Label schleife dex
schleife bne
}}}
Ein Codewort muß letztendlich immer auf {{{NEXT JMP}}} führen, damit der Adressinterpreter weiter arbeitet. Im folgenden Glossar werden Konstanten angegeben, auf die gesprungen werden kann und die Werte auf den Stack bringen bzw. von ihm entfernen. Wichtig ist insbesondere die Routine SETUP. Sie kopiert die Anzahl von Werten, die im Akkumulator angegeben wird, in den Speicherbereich ab N.
Für den Zugriff auf den Stack wird, so weit das möglich ist, die Benutzung der Worte {{{SETUP}}} und {{{PUSH ...}}} empfohlen. Das reicht allerdings häufig nicht aus. In diesem Fall kann man die Werte auf dem Stack folgendermaßen zugreifen:
{{{
SP x) lda \ Das untere Byte des ersten Wertes
SP )y lda \ Das obere Byte des ersten Wertes
}}}
sowie durch Setzen des Y-Registers auch die zweiten, dritten etc. Werte. Beachten Sie bitte, das in NEXT verlangt wird, daß das X-Register den Inhalt $00 und das Y-Register den Inhalt $01 hat. Das wurde im obigen Beispiel ausgenutzt.
Beispiele fur Assemblercode in Forth, den wir als gut empfinden, sind unter Anderem die Worte {{{FILL}}} und {{{-TRAILING}}} (im VolksForth Kernel). Wollen Sie Assembler programmieren, so sollten Sie sich diese Worte und noch einige andere ansehen.