mirror of
https://github.com/forth-ev/VolksForth.git
synced 2024-06-11 11:29:32 +00:00
610450274a
Changed all umlauts into the correct german form.
292 lines
12 KiB
Plaintext
292 lines
12 KiB
Plaintext
volksFORTH Readme
|
|
|
|
Version 1.2
|
|
18. August 2006 (cas)
|
|
|
|
volksFORTH ist ein 16bit Forthsystem der Forth Gesellschaft e.V. Die
|
|
Hauptentwicklung am volksFORTH fand von 1985 bis 1989 statt. Das
|
|
volksFORTH Projekt wurde 2005 wiederbelebt, um ein überschaubares
|
|
Forth-System für Systeme mit begrenzten Systemresourcen zur Verfügung
|
|
zu stellen.
|
|
|
|
Einige moderne Forth Systeme sind von volksFORTH beeinflusst worden oder
|
|
von volksFORTH abgeleitet worden (GNU-Forth, bigForth).
|
|
|
|
Die aktuelle volksFORTH Version ist 3.81. Die Arbeit an der Version 3.90
|
|
hat begonnen.
|
|
|
|
Derzeit stehen volksFORTH Versionen für folgende
|
|
Rechner/Betriebssysteme zur Verfügung:
|
|
|
|
VolksForth MS-DOS (Intel x86
|
|
Architecture
|
|
i8086-ia64)
|
|
|
|
VolksForth 6502 (Commodore 64, Commodore C-16
|
|
Commodore Plus 4,
|
|
Atari 8bit, Apple I)
|
|
|
|
VolksForth Z80 (CP/M,
|
|
Schneider CPC CP/M)
|
|
|
|
VolksForth 68000 (Atari ST)
|
|
|
|
VolksForth für folgende Rechner/Systeme ist in Arbeit:
|
|
|
|
VolksForth MS-DOS (Atari Portfolio)
|
|
VolksForth 6502 (Apple II, Commodore PET)
|
|
VolksForth Z80 (Schneider CPC AMSDOS)
|
|
VolksForth 68000 (Mac Classic)
|
|
|
|
Hinweis zum Copyright
|
|
|
|
Die volksFORTH Quelldateien unterliegen der
|
|
BSD Lizenz - http://www.opensource.org/licenses/bsd-license.php
|
|
|
|
Das Handbuch unterliegt dem Copyright (c) 1985 - 2006 Forth Gesellschaft
|
|
e.V. (Klaus Schleisiek, Ulrich Hoffmann, Bernd Pennemann, Georg Rehfeld
|
|
und Dietrich Weineck).
|
|
|
|
Autoren des volksForth/ultraForth sind:
|
|
|
|
- Bernd Pennemann,
|
|
- Claus Vogt,
|
|
- Dietrich Weineck,
|
|
- Georg Rehfeld,
|
|
- Klaus Schleisieck,
|
|
- Ulrich Hoffmann,
|
|
- Ewald Rieger,
|
|
- Carsten Strotmann.
|
|
|
|
Handbücher, Programmdateien und Quellcode zum volksFORTH sowie
|
|
Informationen zur Forth Gesellschaft finden Sie auf dem Webserver der
|
|
Forth Gesellschaft
|
|
|
|
http://www.forth-ev.de/
|
|
|
|
Informationen und Hilfestellung zur Programmiersprache Forth finden Sie
|
|
im Internet, ausgehend von der Webseite der Forthgesellschaft, oder im
|
|
Usenet im Forum de.comp.lang.forth (ueber Google Groups:
|
|
http://groups.google.de/group/de.comp.lang.forth )
|
|
|
|
Hinweise zum volksFORTH C=64/C16/Plus4 (ultraForth)
|
|
|
|
* Voraussetzungen
|
|
|
|
C=64 mit Diskettenlaufwerk
|
|
Plus4 mit Diskettenlaufwerk
|
|
C16 oder C116 mit 32kB oder 64kB mit Diskettenlaufwerk
|
|
C16 oder C116 mit 64kB oder Plus4 mit Kassettenrekorder
|
|
|
|
Die Ursprungsversion des C16 mit 16kB ist nicht ultraFORTH-fähig,
|
|
da allein der FORTH-Kern den Speicher von $1000 bis $4b00 belegt.
|
|
Der Umbau auf 64kB ist kostengünstig und lohnt sich eigentlich immer.
|
|
|
|
Ein Diskettenlaufwerk ist sehr empfehlenswert.
|
|
|
|
* Installation
|
|
|
|
In der Distribution finden sich folgende Files:
|
|
|
|
vforth_1.d64 - Disketteimage Diskette 1 für Emulator
|
|
C64 volksForth Binary
|
|
C16 volksForth Binary
|
|
Sourcecode
|
|
vforth_2.d64 - Disketteimage Diskette 2 für Emulator
|
|
Kompletter volksForth 6502 C64/C16 Quellcode
|
|
vforth_3.d64 - Disketteimage Diskette 3 für Emulator
|
|
Assembler, Disassembler, Editor
|
|
vforth_4.d64 - Disketteimage Diskette 4 für Emulator
|
|
Grafik, Demos, Tools, Decompiler
|
|
tc38q.d64 - Quelltexte des Target Compilers
|
|
|
|
Diese Version des volksForth für den C=64 benutzt noch ein traditionelles
|
|
Forth-Block Dateisystem auf den Disketten. Ab der kommenden Version 3.90
|
|
wird auch diese Version eine ANSI-Forth Dateischnittstelle bekommen. Die
|
|
Forth-Block-Routinen wird es weiterhin als optionales Quellcodepaket zum
|
|
Nachladen geben.
|
|
|
|
* über UltraForth/volksForth 6502/UltraForth83 ist das volksForth für die
|
|
kleinen Commodore-Rechner C16, Plus4 und C64.
|
|
|
|
UltraForth83 besteht aus ca. 200 Seiten Handbuch in deutscher Sprache und
|
|
vier Diskettenseiten. UltraForth83 ist sicher das beste Forth-System für
|
|
den C64. Für den C16/Plus4 war es lange Zeit die einzige enstzunehmende
|
|
Programmiersprache überhaupt.
|
|
|
|
UltraForth83 ist eine komplette Programmierumgebung. Es enthält einen
|
|
Full-Screen-Editor, einen quelltextnahe Debugger, den Compiler/Interpreter
|
|
und einen Assembler.
|
|
|
|
UltraForth83 entspricht dem Forth83-Standard und existiert in ähnlichen
|
|
Versionen auf Atari ST, C16/64/+4, Apple I, Apple II, Atari 8bit CP/M und
|
|
MS-DOS PCs.
|
|
|
|
Der Name ultraForth wurde gewählt, da auf dem legendären C64 kein Programm
|
|
geklaut wurde, das nicht mindestens Super, Turbo oder eben Ultra hiess. Da
|
|
diese seligen Zeiten schon lange vorbei sind, wird die kommende Version 3.90
|
|
wieder volksForth 6502 C=64 heissen :)
|
|
|
|
* Zur Erläuterung der Blöcke/Screens
|
|
|
|
ultraForth/volksForth verwendete wie viele damalige Forth-Systeme statt 'normalen'
|
|
Dateien Blöcke. Dabei handelt es sich um Disketten/Plattenbereiche fester Größe,
|
|
im Forth-83-Standard von jeweils 1024 bytes. Diese wurden ohne Betriebssystem-Unter-
|
|
stützung auf die Platte geschrieben. Nebenbei werden Forth-Compiler auch heute noch
|
|
oft als Forth-'Systeme' bezeichnet, da sie ursprünglich ohne Betriebssystem liefen
|
|
und daher leicht auf neue Hardware portiert werden konnten.
|
|
|
|
Die Forth-Quellen sind in solchen Blöcken gespeichert. Sie heissen auch Screens, da
|
|
sie mit 16 Zeilen zu je 64 Zeichen einen Bildschirm (fast) ausfüllen.
|
|
|
|
Beim Commodore mit seinem 24x40-Bildschirm wurde ein anderes Format gewählt. Hier
|
|
wurden 23 Zeilen zu 41 Zeichen und eine letzte Zeile zu 40 Zeichen benutzt. Das füllte
|
|
den Bildschirm genau aus und bot noch eine (unsichtbare) Spalte mit Leerzeichen.
|
|
|
|
Der Plattenzugriff in Blöcken ist leichter zu implementieren. Auf den Commodore Rechnern
|
|
bot er zusätzlich extreme Geschwindigkeitsvorteile.
|
|
|
|
Das Schreiben in Block-Manier führt positiv zu kurzen Quelltext-Abschnitten und
|
|
übersichtlicher Organisation der Quellen. Zum Problem wurde es, wenn man doch noch
|
|
ein paar Zeilen einfügen wollte. Um einen Block einzuschieben, musste man alle anderen
|
|
Blöcke um eins verschieben. Dies geschah z.B. mit '10 50 11 CONVEY'. Ein Tippfehler
|
|
und die Quellen waren weg. Die Erinnerung an Convey dürfte alte Forthler immer noch
|
|
erbleichen lassen. Damit wurden wohl mehr Quellen vernichtet, als mit dem damaligen
|
|
Dos-DISKCOPY. Letzteres erforderte ungefähr 6 Diskettenwechsel. Jede Verwechslung
|
|
der Disketten führte zwangsläufig zu Datenverlust. 'Legen Sie die Quelle ins Ziel'
|
|
war eine gängige Verballhornung der Diskcopy-Meldungen.
|
|
|
|
* Erste Schritte
|
|
|
|
Aufrufen des ultraFORTH auf dem C16
|
|
|
|
Die einfachste Methode ist das Laden und Starten von "RUNME".
|
|
|
|
Andere Methoden:
|
|
Laden: vom Basic aus mit LOAD"..",8,1 funktioniert immer
|
|
vom Monitor aus mit L"..",8 funktioniert immer
|
|
vom Basic aus mit LOAD"..." oder LOAD"...",8 funktioniert,
|
|
wenn vorher kein Grafik-Bereich eingerichtet war.
|
|
|
|
Starten vom Basic aus mit "RUN"
|
|
oder "SYS (4112)" - Kaltstart
|
|
"SYS (4116)" - Restart
|
|
vom Monitor aus mit "G1010" - Kaltstart
|
|
"G1014" - Restart
|
|
|
|
Hinweis: Beim ersten Aufruf muss ein Kaltstart durchgefuehrt werden.
|
|
|
|
Der C16 hat im Gegensatz zum C64 keine RESTORE-Taste.
|
|
|
|
Es gibt folgende Möglichkeiten, ultraFORTH zu verlassen oder abzubrechen:
|
|
- Das Forth-Wort "BYE" schliesst die ultraFORTH-Bereiche und startet den Monitor.
|
|
- Das Festhalten der "<Run/Stop>"-Taste mit gleichzeitigem Drücken der
|
|
"<Reset>"-Taste führt zu einem Reinitialisieren der I/O-Funktionen ohne
|
|
Schliessen der ultraFORTH-Bereiche und startet den Monitor. Bei einem
|
|
anschliessenden Restart von ultraFORTH ist alles so, wie vorher verlassen.
|
|
- Die normale Benutzung des MONITORS schadet den von ultraFORTH benutzen
|
|
Bereichen nicht.
|
|
- Das Drücken der RESET-Taste ohne "<Run/Stop>"-Taste oder der
|
|
Monitor-Befehl "1X" führen ins BASIC. Da ultraFORTH und BASIC
|
|
die gleichen Speicher-Bereiche verschieden benutzen, folgt danach i.a.R.
|
|
bald ein System-Absturz beider Sprachen oder unsinnige Reaktionen.
|
|
|
|
Die Benutzung des FORTH ist wie im Handbuch beschrieben. Selbst Wörter
|
|
wie "C64init" heissen weiterhin genauso. Der verfügbare Speicher ist um
|
|
fast 16kB größer als der der C64-Version. Das Wort "C64fkeys" ist neu
|
|
hinzugekommen. Es installiert auf einem C16 die Funktionstastenbelegung des C64.
|
|
|
|
S.155 - Die Benutzung des EDITORS hat sich etwas geändert, da Commodore die
|
|
Ein/Ausgabe-Routinen geändert hat. Die "<Fx>-Tasten sind etwas anders beschriftet.
|
|
Die im Handbuch erwähnte "<Ctrl>+@"-Funktion liegt beim C16 auf "<Ctrl>+&".
|
|
|
|
Im Gegensatz zu der Bemerkung des Handbuchs auf S. 149 können Zeilen nach
|
|
unten aus dem Bildschirm geschoben werden. Dies geschieht unter folgenden Umständen:
|
|
- Es wird in die 40. Bildschirmspalte einer beliebigen Spalte ein
|
|
beliebiges Zeichen geschrieben. (Wenn hier eine logische
|
|
Bildschirmzeile aufhört, schiebt die I/O-Routine eine neue Zeile ein)
|
|
- Es wird "<ESC> I" eingegeben oder eine andere "<Esc>"-Kombination,
|
|
die eine Zeile aus dem Bildschirm schiebt.
|
|
|
|
Die C16 ESCAPE-Tasten-Funktionen können benutzt werden, führen
|
|
aber zusammen mit Editor-Funktionen zu sonderbaren Bildschirm-Reaktionen.
|
|
|
|
Benutzung der GRAFIK:
|
|
Die Grafik ist bisher nicht angepasst und läuft daher nicht.
|
|
|
|
Sämtliche TOOLS der System-Diskette sind angepasst, bzw. funktionieren ohne Änderung.
|
|
|
|
Die Benutzung des Assemblers hat sich nicht geändert. Es muss nur beachtet werden,
|
|
dass ultraFORTH das ROM abschaltet. Daher müssen Lesezugriffe ins ROM etwas anders
|
|
organisiert werden.
|
|
|
|
Beispiel:
|
|
Die Sequenz 0ffd2 jsr springt eine Ram-Routine an.
|
|
Die Sequenz 1ff3e sta ffd2 jsr ff3f sta springt eine ROM-Routine an. Sie funktioniert
|
|
nur, wenn sie im unteren RAM-Bereich (<$8000) steht. Sonst folgen undefinierte Reaktionen.
|
|
|
|
C-16 Implementation
|
|
|
|
S.48 Speichermodell:
|
|
|
|
Der ultraFORTH-Assembler-Scratchbereich von $029 aufwärts sollte
|
|
max. bis inclusive $76 genutzt werden, da sonst Monitor&Kernal-Bereiche
|
|
überschrieben werden.
|
|
|
|
Zusätzlich zu den im Handbuch beschriebenen Bereichen benutzt die
|
|
C16-Version den Bereich von $0700 - $071E für eine Interrupt-Routine.
|
|
|
|
Statt "SYS(2064)" steht "SYS(4112)"
|
|
|
|
Der FORTH-Kern belegt nicht, wie beim C64, den Bereich von $800 bis "limit",
|
|
sondern von $1000 bis "limit"
|
|
|
|
"limit" liegt nicht automatisch unterhalb von $E000 sondern bei $fd00 (64kb RAM)
|
|
bzw. $8000 (32kb RAM).
|
|
|
|
In $FFFE/F steht im RAM der Zeiger auf die neue Interrupt-Routine.
|
|
|
|
Bank-Switching:
|
|
|
|
Da beim C16 das Bank-Switching etwas anders funktioniert, mussten folgende
|
|
Änderungen vorgenommen werden:
|
|
- ultraFORTH schaltet bei der Initialisierung das komplette ROM aus.
|
|
- Daher müssen alle Lese-Zugriffe (auch JSR) mittels Makro und/oder
|
|
Umleitungsroutine ins ROM implementiert werden.
|
|
- Daher musste die Interrupt-Behandlung umgeleitet werden.
|
|
|
|
Aus der veränderten Interrupt-Behandlung ergibt sich eine geringe
|
|
Verlangsamung des Systems. Ca. 1 Promille der CPU-Zeit verbringt das
|
|
System zusätzlich in der neuen Interrupt-Routine. Weiterhin führt ein
|
|
"BRK"-Befehl zwar wie gewohnt in den MONITOR, allerdings mit falschem Registerdump,
|
|
da der Monitor jetzt die Daten der Interrupt-Routine auf dem Stack vorfindet.
|
|
|
|
Initialisierung
|
|
|
|
Die Initialisierung des ultraFORTH beginnt beim C16 mit einer Routine, die nicht von
|
|
ultraFORTH aus aufrufbar ist namens "C16INIT"
|
|
Sie macht folgendes:
|
|
- Installation der Interrupt-Umleitungs-Routine
|
|
- Umschalten auf RAM.
|
|
erst später wird C64init aufgerufen, dass ähnliche Prozesse wie beim C64 auslöst.
|
|
|
|
* Emulator
|
|
* volksForth 3.81 6502 für C=64, C16 und Plus4 wurde in folgenden Emulatoren
|
|
getestet:
|
|
* VICE - http://www.viceteam.org/
|
|
* Frodo - http://frodo.cebix.net/
|
|
* YAPE/SDL - https://github.com/calmopyrin/yapesdl
|
|
|
|
* Website:
|
|
VolksForth ist erhältlich von der SourceForge Entwicklerwebseite
|
|
http://volksForth.sf.net
|
|
und von der Webseite der Forth Gesellschaft
|
|
http://www.forth-ev.de
|
|
|
|
Die Forth Live-Linux CD-ROM (erhältlich im Downloadbereich der Webseite der
|
|
Forth Gesellschaft) enthält die aktuellen Versionen des volksFORTH, direkt
|
|
ausfürbar auf der Linux CD-ROM, inkl. der volksFORTH Handbücher.
|
|
|
|
Viel Spass mit volksFORTH
|
|
wünscht das volksFORTH Team
|