VolksForth/doc/atari-st/CHANGES.ORG
2019-07-22 09:30:15 +02:00

12 KiB

Ä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§UPERGEM.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.