diff --git a/doc/atari-st/CHANGES.ORG b/doc/atari-st/CHANGES.ORG new file mode 100644 index 0000000..49849bf --- /dev/null +++ b/doc/atari-st/CHANGES.ORG @@ -0,0 +1,323 @@ +#+Title: Änderungen im volksForth Atari ST + +* Version 3.80 gegenüber 3.7 ff + +Wir haben versucht, in diesem Dokument alle Änderungen seit Version +3.7 zu erfassen. Dies ist für alle interessant, die bereits fertige +Programme haben und diese nun anpassen möchten. Drei Hauptänderungen +müssen dabei berücksichtigt werden: Das Fileinterface, die Änderungen +im GEM und die Relokabilität des Systems. + +Nicht verschweigen wollen wir, daß wir eine Fülle kleiner Fehler und +Unschönheiten korrigiert haben, nicht zuletzt aufgrund von +Rückmeldungen der volksFORTH-83 Benutzer! + +** FORTH_83.SCR + + - Das System ist relokatibel. Betroffen sind alle Assemblerworte, die + mit dem Register D7 gearbeitet haben. Das Wort =MEMPAGE= gibt es + nicht mehr. Stattdessen gibt es das neue Wort =FORTHSTART= , das eine + Langadresse liefert, die den Anfang des Systems kennzeichnet. Dort + befinden sich die Informationen, die GEM-Dos zum Aufbau der + Basepage braucht. + + - =UP= ist eine Variable geworden (bisher Register A3). + + - Im Kernel enthalten sind jetzt die Worte, die unter DOUBLE + zusammengefaßt waren, also =2@=, =2!=, =2VARIABLE=, =2CONSTANT=, =2OVER=, + =2SWAP= und =D-=. + + - Ebenfalls im Kernel sind die Langoperationen, die auf den gesamten + Ram-Speicher arbeiten können als da sind: =LC@=, =LC!=, =L@=, =L!=, =LCMOVE= + (fehlerfrei), =L2@=, =L2!= und =LN+!= . + + - =UM/MOD= erzeugt die Fehlermeldung "division overflow". + + - Der Fehler in =-ROLL= wurde behoben. + + - =drvinit= ist mit =: drvinit noop ;= definiert. Damit ist es möglich, + dort Routinen zu patchen, die nach dem Booten des Systems + ausgeführt werden sollen. Davon macht z.B. der Editor Gebrauch. + + - Es gibt ein =(LOAD=, dem Screennummer und Position im Block + übergeben werden. + + - Im Direktzugriff werden nur die Laufwerke A und B unterstützt, + allerdings sowohl einseitige als auch doppelseitige Laufwerke. + Umschaltung erfolgt beim Lesen oder Schreiben automatisch. Dazu + dienen die Worte =GETBLOCKS= und =MEDIACH?=. + + - Neu ist das deferred word =MAKEVIEW=, das in =CREATE= das Viewfield + erzeugt. + + - =>name= ist erheblich schneller, weil =nfa?= jetzt in Code + definiert ist. + + - Die Uservariable =FILE= ist in =ISFILE= umbenannt worden. Ebenso + ist das Wort =FILE@= durch =ISFILE@= ersetzt. Zusätzlich gibt es die + Variable =FROMFILE=. =CONVEY= z.B. kopiert Screens von =FROMFILE= nach + =ISFILE=. + + - Das deferred word =(DISKERR= ist nicht mehr vorhanden. Stattdessen + wird bei allen Diskoperationen ein =ABORT"= im Fehlerfalle + ausgeführt. + + - Die Worte =BACKUP= und =EMPTYBUF= sind sichtbar. + + - Im FORGET-Bereich ist das Wort =REMOVE= sichtbar. Neu ist das + deferred word =CUSTOM-REMOVE=. + + - Die 68000 Errortraps führen auf ein =ABORT"= und räumen den + Systemstack richtig auf. + + - Das System arbeitet nach wie vor im Supervisormodus. Bisher wurde + der SSP beim Verlassen des Systems nicht wieder restauriert. Das + ist jetzt der Fall und damit hoffentlich das mysteriöse Verhalten + einiger Programme (z.B. 1st_Word) im Anschluß an FORTH behoben. + + - Das System enthält voreingestellt nur noch &10 Diskbuffer. + +** FILEINT.SCR + + - Das gabs in Version 3.7 noch gar nicht. Hier sind deswegen die + Änderungen seit Version 3.71 aufgeführt. + + - Das File =FILESAVE.SCR= gibt es nicht mehr. =SAVESYSTEM= ist jetzt + am Anfang des Fileinterface definiert. + + - In =GETDRIVE= wurde der Systemstack nicht korrekt gerichtet. Das + führte bisweilen zum Absturz. + + - =CAPACITY= enthält ein =OPEN=. + + - Analog zu A: und B: gibt es jetzt auch die Worte C: und D:. + + - In =(VIEW= wird überprüft, ob das File überhaupt vorhanden ist, + bevor =ISFILE= geändert wird. + + - =?DISKABORT= läuft auf ein =ABORT"= ; es werden nicht mehr alle, + sondern nur die wichtigsten Fehlermeldungen im Klartext ausgegeben, + für den Rest gibt es die Fehlernummer. + + - =PATHES= wurde auf 30 Zeichen verkürzt. + + - =WORKSPACE= ist jetzt sichtbar. + + - Im System selbst ist eine 'Disk Transfer Area' (DTA) enthalten. + Diese wird anstelle der des Systems benutzt. Vielleicht + verschwinden damit rätselhafte Fehler beim Umschalten von + Laufwerken mit =DIR= (?!?!) + + - =OPEN=, =CLOSE=, =MAKE= und =USE= testen, ob der Wert in =ISFILE= + ein FCB ist. + + - Die Worte =KILLFILE=, =KILLDIR= und =EMPTYFILE= sind gestrichen. + + - =(MORE= ist neu; wird von =MORE= aufgerufen, ist aber schneller, weil + nicht jedemal ein =CLOSE= ausgeführt wird. + + - =(MAKEVIEW= ist jetzt headerlos. + + - =CONVEY= überprüft, ob die Blöcke überhaupt existieren. + + - =FILES= zeigt die Subdirectories nicht mehr mit "" an, sondern mit + einem "D", damit mans auch drucken kann. Die Filelänge wird in der + gewählten Zahlenbasis und nicht mehr zwangsweise in decimal + ausgegeben. + +** PRINTER.SCR + + - Die Epson-Anpassung wurde verbessert, sodaß sie nun auch auf + Epson-Druckern selbst läuft. Die Kompatiblen können nämlich + meistens mehr als das Original. Zusätzlich wurde eine + Umlaut-Wandlung eingebaut. + + - Der Code zum Ausdrucken formatierter Listings wurde verbessert. + Zusätzlich wurde das Wort =PRINTALL= aufgenommen, das ein komplettes + File ohne Shadows druckt. + + - Das Wort =SPOOL= wurde durch =SPOOL'= ersetzt. =SPOOL'= erlaubt die + Angabe eines Druckkommandos wie =LISTING= oder =PTHRU= und ist damit + flexibler. + +** ASSEMBLE.SCR + + - Dieses File gehört nicht mehr zum Arbeitssystem, sondern kann + wahlweise zugeladen werden. Mit =2 LOADFROM ASSEMBLE.SCR= wird der + Assembler auf den HEAP geladen. + + - Aufgrund der Relokation wurden einige neue Makros eingeführt, + ebenso hat sich die Belegung der Register geändert (Näheres im File + ASSEMBLE.DOC) + +** DOUBLE.SCR + + - gibt es nicht mehr. Die entsprechenden Worte befinden sich im + Kernelsystem. + +** FILESAVE.SCR + + - gibt es nicht mehr. Die entsprechenden Worte befinden sich im File =FILEINT.SCR=. + + +** FORTHKER.PRG + + - enthält jetzt bereits das Fileinterface. + - Das System ist auf =DECIMAL= voreingestellt. + +** STARTUP.SCR + - enthält nur noch die INCLUDE-Anweisungen, um aus =FORTHKER.PRG= ein + Arbeitssystem zusammenzustellen. + +** DIVERSES.SCR + - ist neu und enthält häufig benutzte Worte, die wir nirgendwo + unterbringen konnten. + - Das Wort =.BLK= enthält die Sequenz =BASE PUSH HEX= nicht mehr. + +** TOOLS.SCR + + - Im Decompiler ist =L= (für Literal) durch =K= (für Konstante) ersetzt + worden. Das vermeidet Namenskonflikte beim Aufruf des Editors. + - =NPUSH= im Tracer ist durch =CPUSH= ersetzt worden. Dieses Wort + befindet sich jetzt in =DIVERSES.SCR=, da es auch im Editor benutzt + wird. + +** STRINGS.SCR + - Neu ist das Wort =0"=, das einen counted und 0-terminated String im + Dicitonary ablegt. =0"= ist statesmart, kann also sowhl im + Interpreter- als auch im Compilermodus benutzt werden. + - =TEXT= funktioniert jetzt tatsächlich so, wie es dokumentiert ist. + +** LINE_A.SCR + + - Insgesamt wurde dieses File 'entrümpelt' und stellt jetzt nur noch + die Grundfunktionen zur Verfügung. Andere sind z.B. nach =DEMO.SCR= + ausgelagert. Im Einzelnen sind folgende Worte betroffen: Variable + BKGRND OVERWRITE TRANSPARENT INVTRANS EXORWRITE RSET RDRAW HOME + PATTERN PATTERNS ARROW + + - =A_SETUP= ist sichtbar und damit auch für neue Definitionen zu + gebrauchen. + + - Die Variablen sind auf "_" statt "." umgestellt worden, also + =XMIN_CLIP= statt =XMIN.CLIP=, =Y_MAX= statt =Y.MAX= usw. Dies gilt auch + für die Funktionen =SHOW_MOUSE= =HIDE_MOUSE= =PUT_PIXEL= =GET_PIXEL= und + =FORM_MOUSE=. + - =+SPRITE= und =-SPRITE= funktionieren jetzt, können sich aber mit + normalen Hardwaresprites nicht messen. + - Die Copyraster-Funktionen sind gestrichen. Die entsprechenden + VDI-Funktionen sind ebenso schnell, daher muß diese aufwendige + Definition nicht wiederholt werden (File =VDI.SCR= im Ordner =GEM=, + Screen $10 ff). + +** DEMO.SCR + - Die Demos wurden z.T. umgeschrieben und sind jetzt noch viel + hübscher !! (Dank an GFA-Basic) + +** TASKER.SCR + - Die Uhr als Demonstration des Multitasking war nicht sehr gelungen + und ist daher gestrichen. + - Beim =FORGET= einer Task wird jetzt tatsächlich der gesamte + Speicherbereich freigegeben. + - Die Syntax des Spoolers wurde geändert (s.PRINTER.SCR) + +** Subdirectory GEM + +*** BASICS.SCR + + - Die Arrays =INTIN=, =INTOUT= usw. wurden drastisch verkürzt. + - Die Pointernamen im GLOBAL-Array wurden gestrichen (Platzverschwendung) + - Neue Worte sind =C_WIDTH= =C_HEIGHT= =B_WIDTH= und =B_HEIGHT=. Sie + bezeichnen Positionen im Array =SIZES=. + - Das Wort AES hat einen Stackparameter, nämlich =#addrout=, weniger. + Dieser wird automatisch gesetzt. Alle AES-Aufrufe haben damit einen + Parameter weniger. + - Die Variable OBJC_TREE wird universeller verwendet und ist daher + schon hier statt wie bisher in =AES.SCR= definiert. + - Der Fehler in =S_CLIP= wurde korrigiert. + +*** AES.SCR + + - An vielen Stellen wird der Inhalt von =OBJC_TREE= implizit + übergeben. Das vereinfacht die Parameterübergabe. Betroffen sind + die Worte MENU_BAR MENU_ICHECK MENU_IENABLE MENU_TNORMAL MENU_TNEXT + FORM_DO FORM_CENTER + - Bei =FSEL_INPUT= sind die Stringarrays sichtbar geworden, sodaß man + sie auch benutzen kann !! Sie heißen jetzt =INPATH= und =INSEL=. + - Die Screennummern im Loadscreen haben sich geändert (aufpassen, + wenn =LOADFROM AES.SCR= verwendet wird.) + +*** VDI.SCR + - =mem>scr= und =scr>mem= sind jetzt Defining-Words, mit denen sich + Worte konstruieren lassen, die das tun, was die beiden vorher + gemacht haben; dabei läßt sich aber ein MFDB (Memory Form + Definition Block) mitgeben. Damit ist es jetzt möglich, mit + mehreren MFDBs zu arbeiten. Syntax ist an den Beispielen in VDI.SCR + zu sehen. Im Editor werden zwei MFDBs benutzt. + - Die Screennummern im Loadscreen haben sich geändert (aufpassen, + wenn =LOADFROM VDI.SCR= verwendet wird.) + +*** SUPERGEM.SCR + - Neues File, das einige sinnvolle Befehle enthält, die die Arbeit + mit GEM erleichtern. + +*** GEMDEFS.SCR + - Neues File, enthält GEM-Definitionen in der Art von 'C'-#defines, + um Quelltexte lesbarer zu machen. + +*** EDITOR.SCR + - Neu !!! Enthält den GEM-Editor (hätten Sie's erraten?) und ist + vollständig mit Kommentarscreens versehen. Soll unter anderem + zeigen, wie man unter FORTH GEM programmieren kann. + +*** EDWINDOW.SCR + + - Ebenfalls komplett geändert. Enthält die Routinen für das + GEM-Window des Editors. Auch dieses File kann als Beispiel für + eigene Programme benutzt werden. + +* Änderungen ab Version 3.80 + +18.11.86 + +Natürlich gibt es auch in Version 3.80 noch kleinere Änderungen. Sie +sind bisher jedoch nicht so gravierend, daß sie eine neue +Versionsnummer nötig machen. + + +** FORTH_83.SCR + + - Die Worte =OUT=, =WRAP=, =MEDIACH?= und =GETBLOCKS= sind nicht mehr + sichtbar. + - Aus Geschwindigkeitsgründen sind die Worte =*=, =M*=, =M/MOD=, =/MOD=, =/=, + =MOD= und =MINIMAX=, also die wichtigsten Arithmetik-Routinen in + Maschinencode geschrieben. + +** GEM\BASICS.SCR + + - enthält jetzt die Worte =SHOW_C= und =HIDE_C=, die bisher in =VDI.SCR= + bzw. =SUPERGEM.SCR= definiert waren. + - Das Wort =SETARRAYS= ist jetzt sichtbar. + - Das Global-Array wurde um zwei Worte verlängert (wer weiß, warum ?!) + +** GEM\AES.SCR + - Der Message-Buffer bei =EVNT_MESAG= wurde auf 16 Bytes verkürzt. + - Bei =MENU_REGISTER= ist der Rückgabewert 0 kein Fehler; das Wort + wurde entsprechend korrigiert. + +** GEM\GEMDEFS.SCR + + - Dieses File enthält keine Labels mehr, sondern spezielle + Konstanten. Diese werden komplett auf den Heap geladen. Die Wirkung + ist dieselbe wie vorher, aber es ist kein Vocabulary mehr nötig. + +** GEM\SUPERGEM.SCR + + - GETNUMBER wurde so geändert, daß jetzt auch führende Leerzeichen + überlesen werden. Diese führten bislang zur Fehlermeldung '?'. + +** PRINTER.SCR + - In =PTHRU= ist jetzt ein =ARGUMENTS= enthalten. Damit werden + versehentliche falsche Eingaben weitgehend neutralisiert. + - Das Wort =>PRINTER=, das den Ausgabevektor für den Drucker beinhaltet + ist sichtbar geworden. diff --git a/doc/atari-st/COPYING b/doc/atari-st/COPYING old mode 100755 new mode 100644 index 3bee9d6..7e50cbb --- a/doc/atari-st/COPYING +++ b/doc/atari-st/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 1985-2005, Forthgesellschaft e.V. (www.forth-ev.de) +Copyright (c) 1985-2019, Forthgesellschaft e.V. (www.forth-ev.de) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -7,4 +7,4 @@ Redistribution and use in source and binary forms, with or without modification, * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Forthgesellschaft e.V. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/doc/atari-st/LIESMICH.TXT b/doc/atari-st/LIESMICH.TXT old mode 100755 new mode 100644 diff --git a/doc/atari-st/README.TXT b/doc/atari-st/README.TXT old mode 100755 new mode 100644 diff --git a/doc/atari-st/VolksForth3.80HandbuchAtariST.pdf b/doc/atari-st/VolksForth3.80HandbuchAtariST.pdf old mode 100755 new mode 100644