Leo Brodies Buch „Programmieren in Forth“ Carl Hanser Verlag bezieht sich auf den FORTH-79 Standard. Die amerikanische Original-Ausgabe ist inzwischen in der 2.Auflage erschienen, die an einigen Stellen ueberarbeitet und auf den FORTH-83 Standard umgestellt wurde .
Die deutsche Auflage wurde bisher nicht ueberarbeitet.
Hier nun einige ( ich hoffe vollstaendige ?! ) Bemerkungen zu den Aenderungen bzw. Abweichungen.
\s brodie1.seq Notizen zu Leo Brodie von W.Allinger ALL0492 17.04.92 17:58
Seite:
81 ? STACK muss ?STACK lauten,
in FORTH-83 macht es einen ABORT" Stack underflow" falls
der Stack unterschritten wurde, oder garnichts!
So in etwa eine moegliche Definition:
: ?STACK ( -- ) DEPTH 0< ABORT" Stack underflow" ;
82 ?STACK ( -- ) ABORT falls stack underflow
89 I I' J haben in FORTH-83 andere ?abweichende? Funktion
also hier alles entfernen, statt dessen:
R@ ( -- n ) kopiert TOP of return Stack nach
Parameter Stack, return Stack wird
nicht veraendert.
90 I -> R@ aendern s.o.
100 I -> R@ aendern s.o.
116 LEAVE springt in FORTH-83 sofort!!! hinter LOOP bzw +LOOP
und es kann mehrfach innerhalb einer Schleife stehen!
LEAVE ( -- ) setzt sofort hinter LOOP bzw. +LOOP fort.
128 FORTH-79: : NOT 0= ;
FORTH-83: : NOT -1 XOR ;
d.h. in FORTH-83 wird bitweise complementiert!!!
es wird also das logische NOT bitweise ausgefuehrt,
genauso wie AND OR XOR bitweise arbeiten.
FORTH-79 ist da inkonsequent, AND OR XOR arbeiten mit
dem Wort, NOT komplementiert zwischen TRUE und FALSE!!!!
143 FORTH-83 nennt U/MOD konsequent UM/MOD !
/LOOP gibt's nicht mehr, da FORTH-83 mit unsigned numbers
arbeitet, anstatt wie FORTH-79 mit signed numbers.
In FORTH-79 gabs immer Klimmzuege wenn man LOOPs ...
mit mehr als 15bit grossen Zahlen bearbeiten wollte!
178 FORTH-83 ' liefert CFA
FORTH-79 ' liefert PFA
d.h. in FORTH-83 muss das Beispiel
38 ' GRENZE >BODY !
lauten.
183 FORTH-83 ' liefert CFA
195 H ist DP in FORTH-83
..204
211 FORTH-83
SAVE-BUFFERS arbeitet wie FLUSH, loescht UPDATED flag aber
haelt den Blockbuffer assigned, so dass nicht wieder von
der Platte geladen werden muss.
215 >TYPE nicht FORTH-83
219 FORTH-83 <CMOVE umgetauft in CMOVE>
..220
225
..234 TEXT und -TEXT gibt's nicht in FORTH-83
233 MOVE*8) ist wohl ein Dreckfuehler, in FORTH-83 gibt es MOVE
234 FORTH-83 <CMOVE heisst CMOVE>
>TYPE*6) Tippfehler, muss >TYPE heissen, gibt's nicht in FORTH-83
292 MINUS heisst in FORTH-83 NEGATE !!!!
17apr92 W.Allinger