home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
GFABAS36.LZH
/
README.36
< prev
next >
Wrap
Text File
|
1991-04-18
|
8KB
|
183 lines
READ.ME zum GFA-BASIC 3.6 TT Düsseldorf, den 18.4.91
Im Lieferumfang des GFA-BASIC 3.6 ist KEIN Run-Only-interpreter mehr ent-
halten. Der Run-Only-Interpreter ist durch den mitgelieferten Compiler
überflüssig geworden.
Die Version 3.6 des GFA-BASICs für die Atari ST-Reihe ist jetzt auch auf dem
Atari TT 030 lauffähig. Es gibt ein paar Dinge zu beachten, wenn ein Programm
sowohl auf dem TT als auch auf ST und STE laufen soll.
Im TT gibt es zwei Arten von Hauptspeicher:
ST-RAM: In diesem Speicherbereich haben der Prozessor, der Video-Shifter und
die DMA-Bausteine Zugriffsmöglichkeiten auf den Speicher.
TT-RAM: In diesem Speicherbereich, den es in STs und STEs nicht gibt, hat
nur der Prozessor Zugriff, und muß somit keine Wartezyklen für die
Synchronisation mit dem Shifter und den DMA-Kanälen einlegen. So ist die
Ausführung von Programmen und der Zugriff auf Daten in diesem Speicher
deutlich schneller. Dafür gibt es hier keine Möglichkeit, mit XBIOS(5)
("Setscreen") in diesem Speicher einen alternativ anzeigbaren Bildspeicher
anzulegen.
Ein Byte im Header ausführbarer Programme (.PRG, .TOS, .TTP, .APP) ist
dafür zuständig, ob diese Programme in das normale ST-RAM oder in das
TT-RAM geladen werden. Dieses Byte (Offset 25) kann die Werte 0, 1 und 7
annehmen. Bei 0 und 1 wird das Programm vollständig in das ST-RAM geladen,
und auch alle Anforderungen von Speicher werden aus dem ST-RAM bedient.
Bei dem Wert 7 wird das Programm, wenn möglich, in das TT-RAM gelegt.
Ab Version 3.6 arbeitet das GFA-BASIC in beiden Einstellungen. Nur für
Programme die mittels XBIOS(5) einen zweiten, anzeigbaren Bildschrim
verwalten (wie das GFA-BASIC selbst in allen vorherigen Versionen), oder
DMA-Sound benützen, ist es nötig, dieses Byte zurückzusetzen.
Auf dem TT gibt es für neue Programme auch eine neue Gemdos-Funktion.
adr%=GEMDOS(68,L:size,art&)
Diese Funktion entspricht der Funktion MALLOC, zusätzlich wird in art&
übergeben, was für Speicher angefordert wird. Dabei steht 0 für ST-RAM, 1
für TT-RAM. Bei art&=2 wird ST-RAM angefordert, aber wenn nicht genügend
ST-RAM frei ist, wird auch TT-RAM benutzt. Bei art&=3 wird, wenn möglich
TT-RAM, sonst ST-RAM angefordert. Für size=-1 wird, wie bei MALLOC, die
Größe des entsprechenden freien Speichers ausgegeben.
Auf dem TT, wie auch auf STs mit Großbildschirmen, beträgt die Größe des
Bildspeichers nicht mehr konstant 32000 Byte, sondern ist in der Regel
erheblich größer (153600 Byte). Dies bewirkt, daß die Befehle GET und PUT
nicht mehr jeden beliebigen Bildausschnitt bearbeiten können. Zur Berechnung
der Größe eines Bildausschnittes gibt es die neue Funktion
bytes%=GETSIZE(x,y,x,y)
die die Größe des Strings liefert, der für ein entsprechendes GET nötig wäre.
Ergibt GETSIZE einen Wert über 32000, so ist eine Aufteilung auf mehrere
GETs nötig.
Zur Ermittlung der Auflösung gibt es die Funktionen
_X, _Y und _C
Sie liefern die Breite und Höhe des Bildschirms bzw. die Innengröße des
aktiven Fensters, sowie die Anzahl möglicher Farben.
Wenn die Programme auch unter GFA-BASIC Version 3.0 und 3.5 lauffähig sein
sollen, sollten die statt _X,_Y und _C die Funktionen WORK_OUT(0), (1) bzw.
(13) verwenden werden.
Die Rückgabewerte der Funktion XBIOS(4) sind:
0 für ST-Lores (320 200 16)
1 für ST-Medres (640 200 4)
2 für ST-Hires (640 400 2)
4 für TT-Medres (640 480 16)
6 für TT-Hires (1280 960 2)
7 für TT-Lores (320 480 256)
Bitte XBIOS(4) möglichst nicht verwenden, da diese Werte jederzeit von Atari
erweiterbar sind und bei ST-Großbildschirmen auch nur 2 zurückgegeben wird.
Die Funktion
TT?
liefert 0, wenn der Rechner ein normaler ST ist.
1 wird zurückgegeben, wenn eine 68030 (oder 68020) CPU vorhanden ist.
Bei dem Wert 3 wurde zusätzlich das Vorhandensein eines 68881 oder 68882
Coprozessors entdeckt.
Beim Aufruf dieser Funktion werden ggf. einige wenige Arithmetikroutinen
so geändert, das sie den Coprocessor bzw. die 68030 CPU besser ausnutzen.
Da das Zahlenformat des GFA-BASICs (aus Geschwindigkeitsgründen bei Fehlen
eines Coprozessors) nicht genau dem IEEE-Standard entspricht, wird wegen
der nötigen Konvertierung zwar nicht die volle Geschwindigkeit des 68881
erreicht, aber die Beschleunigung ist trotzdem erheblich. Geändert werden
die Funktionen SIN, COS, TAN, EXP, LOG und LOG10.
Anmerkung für Besitzer eines 68020 und 68881 Rechners, der kein TT ist:
Das GFA-BASIC testet das Vorhandensein eines Coprozessors anhand des
Cookie-Jars. Eine Möglichkeit, diesen Cookie-Jar zu simulieren, ohne eine
neue TOS-Version zu besitzen ist:
old%=LPEEK(&H5a0)
a$="_FPU"
SLPOKE &H5a0,V:a$
~TT?
SLPOKE &H5a0,old%
Bitte nicht benutzen, wenn keine FPU vorhanden ist. Besser ist natürlich,
wenn ein AUTO-Ordner-Programm benutzt wird, das, nach Atari-Convention,
einen Cookie-Jar einrichtet.
Eine Einschränkung gilt noch, wenn das GFA-BASIC auf einen TT läuft. Es läßt
sich dann mit RESERVE der Speicher nur verkleinern, nicht vergrößern (Der
Grund dafür ist ein betriebssysteminerner Unterschied in der Speicheranfor-
derungsstrategie). Ein entsprechender Versuch wird stillschweigend ignoriert.
Zur Unterstützung der erweiterten seriellen Schnittstellen des TTs gibt es
nur die entsprechenden BIOS- und XBIOS-Aufrufe. Neu ist dabei:
old&=XBIOS(44,dev&)
Mit diesem Aufruf läßt sich das Device "AUX:" (OUT 1,x, INP(1), INPAUX$...)
auf die anderen Schnittstellen umleiten.
Dabei steht dev&=6 für den alten Port "Modem 1", 7 ist "Modem 2", 8 ist
"Serial 1" und 9 ist "Serial 2".
Bei I/O direkt über das BIOS (INP(n) <=> BIOS(2,n), INP?(n) <=> BIOS(1,n),
OUT n,x <=> BIOS(3,n,x), OUT?(n) <=> BIOS(8,n)) sind die Schnittstellen
auch gezielt ansteuerbar.
Falsche Werte für n führen zum Absturz. Mit XBIOS(44,-1) läßt sich die
Einstellung auslesen. Bei einem Rückgabewert von 44 wird diese Funktion
nicht unterstützt (also ST/STE).
Auch für die neue Video-Hardware gibt es einige XBIOS-Aufrufe.
oshm&=XBIOS(80,shm&) // EsetShift
ermittelt und setzt TT-Shiftmode (stattdessen 82/86/87 benutzen)
oshm&=XBIOS(81) // Egetshift
ermittelt TT-Shiftmode
obnk=XBIOS(82,bnk&) // EsetBank
Setzt (und liest) Farbregisterbank. Der TT verfügt über 256 Farbregister.
Hier kann in 16- und 4-Farben Modi schnell zwischen 16 verschiedenen
Paletten umgeschaltet werden.
ocol&=XBIOS(83,idx&,col&) // EsetColor
Setzt TT-Farbregister #idx& auf col& (&hRGB)
~XBIOS(84,idx&,cnt&,l:adr%) // EsetPalette
Setzt cnt& Farben ab Nummer idx& auf die Werte ab adr% (z.B. V:a&(12))
~XBIOS(85,idx&,cnt&,l:adr%) //EgetPalette
Liest cnt& Farben
old&=XBIOS(86,gray&) // EsetGray
Setzt/Löscht Grau-Bit im TT-Shiftregister
Nach ~XBIOS(86,1) werden die Farbregister nicht mehr als RGB-Werte aufgefaßt,
sondern als Graustufen. Sinnvoll ist dieser Aufruf besonders in TT-Low, da
hier 256 Farben zur Verfügung stehen, denen in einer Schleife
(~XBIOS(83,i%,i%)) entsprechende Graustufen zugeordnet werden können.
old&=XBIOS(87,smear&) // EsetSmear
Setzt/Löscht smear-Bit im TT-Shiftregister. Nach XBIOS(87,1) werden Punkte
in Color 0, nicht mehr mit dem entsprechenden Farbwert angezeigt, sondern
mit dem letzten von 0 verschiedenen Farbwert. Spezielle Programme können
einfach durch Zeichnen von Linien ganze Flächecn einfärben.
Bei diesen Aufrufen gilt, das bei negativen Parametern nur die Rückgabe des
alten Registerwertes erfolgt.
Wichtig beim Testen: Ein kleines Programm schreiben und compilieren, das
diese Register auf Defaultwerte setzt, da diese Registe bei SAVE,A) statt
"!" dann "//" ausgegeben, nach DEFLIST 8 entsprechend "/*".