Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-4) was last changed on 29-Mar-2010 02:36 by Stefan Haubenthal  

This page was created on 10-Mar-2010 21:00 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 43 removed 42 lines
Warum ist das "HELLO.COM" Programm so gross? Weil SAVE-SYSTEM immer das gesamte Forth System speichert, inklusve aller Worte, die schon vorher im Forth definiert waren. Spätre werde ich Euch zeigen wie wir das Programm schlanker bekommen.Heute kommen wir zu einem Thema, dem es keine direkte Ensprechung in BASIC Welt gibt: Erstellen von ausführbaren COM-Dateien. Basic (und auch Turbo-Basic) erlauben nicht das Erstellen von direkt ausführbaren Maschinenprogrammen (COM-Programme). Hierzu musste man kommerzielle BASIC-Compiler kaufen, die dann mehr schlecht als recht funktionieren.
Unter Forth ist dies schon möglich.
Zuerst schreiben wir ein kleines "Hallo-Welt" Programm, als Demonstration:
{{{
: HALLO-WELT (-- )
CR ." Hallo Welt. Hier ist volksForth" CR
KEY DROP
BYE ;
}}}
Erklärung: HALLO-WELT ist unser neues Forth Wort. Das Forth-Wort "CR" erzeugt einen Zeilenvorschub auf dem Bildschirm (Carriage Return)
Das Wort ." gibt den Text bis zum folgenden Anführungsstrichen aus (Leerzeichen hinter den ." beachten!)
"KEY DROP" wartet auf einen Tastendruck, der ASCII Wert der Taste wird auf den Stapel gelegt un per DROP sofort wieder "weggeworfen".
"BYE" beendet Forth und springt (nein, nicht in den Selbsttest) zurück in das DOS.
Nun müssen wir Forth sagen, das unser neues Wort "HALLO-WELT" nach dem Start unseres zu speichernden Programmes direkt ausgeführt werden soll. Dies geschied, indem wir die Ausführungsaddresse des Wortes HALLO-WELT dem "verzögerten" (deferred) Wort 'COLD zuweisen ('COLD = ausgesprochen "tick cold"). Die Ausführungaddresse unseres neuen Wortes holen wir uns mit dem Wort ' (tick), die Zuweisung geschied mit dem Wort "IS":
{{{
' HALLO-WELT IS 'COLD
SAVE
SAVE-SYSTEM D:HALLO.COM
}}}
Das Wort "SAVE" sichert (im Hauptspeicher) unsere Erweiterungen zum Forth (die können danach nicht mehr im Speicher gelöscht werden), SAVE-SYSTEM <dateiname> speichert dann das Programm als COM-Datei ab.
SAVE-SYSTEM muss ggf. aus der Datei SAVESYS.F nachgeladen werden:
{{{
INCLUDE" D:SAVESYS.F"
}}}
Version Date Modified Size Author Changes ... Change note
4 29-Mar-2010 02:36 2.091 kB Stefan Haubenthal to previous Typos
3 29-Mar-2010 02:35 2.09 kB Stefan Haubenthal to previous | to last Typo
2 10-Mar-2010 21:01 2.091 kB Carsten Strotmann to previous | to last
1 10-Mar-2010 21:00 4.18 kB Carsten Strotmann to last
« This page (revision-4) was last changed on 29-Mar-2010 02:36 by Stefan Haubenthal