

                   AMC-GDOS Version 3.10

               Release Notes und Dokumentation
            
            
               Copyright 1987/88 Arnd Beissner
                     
               Lizenz fr Atari Col!|82 fa|?C~ hPhPhVzz ៟	' ៟|	< 803     $	 <	8   	|	៟	C    |	   
  beliebigen Atari-Besitzer weitergeben. Das Recht zur Weitergabe 
  ist allerdings daran gebunden, da Sie die Dateien:
  AMCGDOS.PRG und AMCGDOS.TXT weder umbenennen, noch in 
  irgendeiner Art und Weise verndern oder unvollstndig weiter-
  geben. In jedem Fall sind Sie dazu verpflichtet, die beiden Dateien
  nur zusammen weiterzugeben. Jede Art von Weitergabe im 
  beschriebenen Rahmen ist nicht nur erlaubt, sondern ausdrcklich 
  erwnscht. Die kostenlose Nutzung gilt ausschlielich fr 
  Atari-Computer.

  Wenn Sie AMC-GDOS in irgendeiner Form auf irgendeinem Medium
  verkaufen oder anderweitig kommerziell vermarkten, sei es 
  als eigenstndiges Produkt oder als Beilage zu einem anderen 
  Produkt, so sind Sie LIZENZPFLICHTIG. Die eher symbolischen
  Lizenzbedingungen knnen Sie bei Atari-Deutschland erfragen.
  
===================================================================


          TEIL 1

		  RELEASE NOTES Version 3.10

o  AMC-GDOS gibt es wieder in einer deutschen *und* einer englischen
   Version.
   
o  Probleme der Vorgngerversionen mit Programmen, die auf beliebige
   physikalische Gerte, aber nicht auf den Bildschirm zugriffen,
   wurden beseitigt.
   
          RELEASE NOTES Version 3.04              
          
o  AMC-GDOS kann Zeichenstze jetzt wieder resident laden.

   
          RELEASE NOTES Version 3.03

o  AMC-GDOS hat jetzt eine Stackprfung, die ein berlaufen des
   GDOS-Stacks berwacht und ggf. Warnungen ausgibt.

o  AMC-GDOS luft auch dann zuverlssig mit TOS 1.4, wenn der 
   Bildschirmtreiber nicht resident ist, sondern geladen wird.
   

          RELEASE NOTES Version 3.02a                 
                  
                  
So, da ist sie nun, die vorlufig endgltige 3er Version von 
AMC-GDOS. Vorab, fr alle, die schon mit einer der 2er Versionen
gearbeitet haben, die nderungen:

o  AMC-GDOS liest ab Version 3.00 die 'alten' ASSIGN.SYS-Dateien.
   Die frheren CONFIG.SYS-Dateien werden nicht mehr unterstzt.
   Zweifellos ist die jetzige Lsung die bessere, denn es gibt ja
   nun schon mindestens ein Programm, das die ASSIGN.SYS-Datei 
   bei der Installation automatisch anpat, bzw. neuschreibt.
   
   Durch diese nderung entfllt zum einen das CONFGDOS-Programm,
   zum anderen ist AMC-GDOS auch deutlich lnger geworden.
   
o  Auch wenn es an keiner Stelle in der DR-Dokumentation deutlich
   herausgestellt wird, scheint es gngige Konvention zu sein, 
   da weder GDOS noch die Gertetreiber den Inhalt der 
   Eingabe-Arrays verndern drfen. Dadurch ergaben sich einige 
   nderungen im NDC-Modus von AMC-GDOS. Die Eingabe-Arrays
   werden jetzt nicht mehr direkt von einem Koordinatensystem
   ins andere transformiert. AMC-GDOS legt eigene PTSIN und
   PTSOUT-Arrays an, in die die transformatierten Koordinaten
   geschrieben werden.
   
o  AMC-GDOS zeigt beim Booten die Pfaddefinition an, die es beim
   Parsen der ASSIGN.SYS-Datei gefunden hat. Dies ist als kleine
   Hilfe fr den Fall gedacht, da ein Programm eine Meldung
   wie z.B. 'Kann SCREENFONTS nicht finden' ausgibt.




           TEIL 2
           
           DOKUMENTATION
           


Um die Dokumentation zum GDOS mglichst effizient zu gestalten,
whlte ich die in amerikanischen Computerfachbchern hufig
verwendete Frage/Antwort-Form.

******* Was ist das VDI?

VDI ist die Abkrzung fr Virtual Device Interface, was soviel
heit wie 'Virtuelle Gerteschnittstelle'. Dahinter versteckt
sich die Idee, da                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                n.

Das VDI besteht aus den drei Komponenten:
GDOS, Gertetreiber und Zeichenstze.


******* Was ist das GDOS?

GDOS (Graphic Device Operation System) ist sozusagen die
Steuerungszentrale des VDI. Es empfngt die Mitteilungen
(VDI-Aufrufe) der verschiedenen Programme und leitet sie
an die betreffenden Gerte weiter.

Die zweite Aufgabe von GDOS ist, bei Bedarf Koordinaten-
systemtransformationen durchzufhren. Die einzelnen
Gertetreiber (Bildschirm, Drucker, usw.) kennen nur das
Rasterkoordinatensystem. Die Umwandlungen vom normalisierten
ins Rasterkoordinatensystem werden vom GDOS durchgefhrt. 
Leider ist das aber nur die halbe Wahrheit, denn an einigen
Stellen mssen die Gertetreiber doch etwas vom verwendeten
Koordinatensystem wissen: Immer wenn ein Treiber einen
vertikalen Abstand als Parameter erwartet oder als 
Funktionsresultat zurckgibt (wie z.B. vertikaler Ellipsen-
Radius), mu er nachsehen, ob das normalisierte Koordinaten-
system verwendet wurde. Die Umrechung der Einheiten wird
zwar vom GDOS durchgefhrt, aber leider wird eben auch die
Position des Ursprungs bercksichtigt, und die ist im
NDC-System eben in der unteren linken Bildschirmecke. Wenn
also ein Treiber einen ABSTAND in einem der POINTS-Arrays
benutzt, mu er gegebenfalls umrechnen. Im Grunde genommen
handelt es sich dabei um einen Designfehler im VDI. 
Zustzlich zu den INTEGER- und POINTS-Arrays htte man
ein weiteres DISTANCES-Array einfhren mssen.

Die dritte Aufgabe von GDOS ist es, Zeichenstze in den
Speicher zu laden und wieder daraus zu entfernen. Was sich
zunchst so einfach anhrt, entpuppt sich bei genauerem 
Hinsehen als ein Haufen Verwaltungsarbeit. Schlielich soll
ein Zeichensatz ja immer nur einmal im Speicher sein, auch 
wenn er von verschiedenen Workstations angefordert wurde. 
Auerdem mu GDOS selbstndig feststellen, wann ein 
Zeichensatz von keiner Workstation mehr bentigt wird, denn
sptestens dann mu er aus dem Speicher entfernt werden. 
Nicht zuletzt wandelt AMC-GDOS alle Zeichenstze vom 
Intel- ins Motorola-Format um, falls das ntig ist.


******* Was ist eine PHYSIKALISCHE WORKSTATION?

Eine physikalische Workstation ist die VDI-Bezeichnung fr
ein tatschlich (physikalisch) vorhandenes Gert - als
ein Bildschirm, ein Drucker, oder auch ein Metafile. 
Virtuelle Workstations knnen nur auf dem Bildschirm geffnet
werden - Drucker und Dateien knnen nunmal schlecht von 
mehreren Programmen gleichzeitig benutzt werden. Die 
physikalische Bildschirm-Workstation wird beim Systemstart
vom AES geffnet.


******* Was ist eine VIRTUELLE WORKSTATION?

Ein virtuelle Workstation ist die VDI-Bezeichnung fr ein
nicht wirklich vorhandenes Gert. Eine virtuelle Workstation
wird immer auf ein physikalisches Gert abgebildet. Da man
virtuelle Workstations nur auf dem Bildschirm ffnen kann,
handelt es sich bei dem Gert immer um den Bildschirm. Die
Benutzung des Bildschirms von mehreren Programmen gleichzeitig
ist auch nur deshalb sinnvoll, weil das AES mit seinen 
Fenster-Verwaltungs-Mechanismen Hilfsmittel zur Verfgung
stellt, die verhindern, da auf dem Bildschirm Chaos entsteht. 

Wenn man eine virtuelle Workstation ffnen mchte, mu man
dem VDI *immer* mitteilen, auf welchem Gert das geschehen
soll. Dazu mu man das Handle der physikalischen Workstation
kennen. Da das AES diese geffnet hat, mu man das Handle 
auch beim AES erfragen. Dazu verwendet man den AES-Aufruf
graf_handle.


******* Was ist ein GERTETREIBER?

Ein Gertetreiber ist das Programm, das vom GDOS die
VDI-Aufrufe des Anwenderprogramms empfngt und diese
in eine grafische Ausgabe umsetzt. Oft hrt man Sprche
wie: 'Ich schreibe jetzt einen VDI-Gertetreiber'. 
Meistens waren sich die Urheber dieser Sprche wohl nicht
so ganz ber die Konsequenzen im Klaren. Ein richtiger
Gertetreiber ist nmlich nicht mehr und nicht weniger 
als ein fast vollstndiges VDI - nur das GDOS fehlt. Eine
zeitsparende Mglichkeit, einen Gertetreiber zu schreiben,
ist es, sich von Atari das Object-File INDEP.LIB mit diversen
Zutaten zu besorgen. Dieses Object-File enthlt im Wesentlichen
smtliche Ausgaberoutinen - wenn auch nur fr Drucker. 
Alle gerteabhngigen Teile werden im Sourcecode mitgeliefert.
Bitte beachten Sie aber, da man mit dem 'Treiber-Baukasten'
nur Gertetreiber fr matrixorientierte Drucker zusammenstellen
kann.


******* Was ist ein GEM-Zeichensatz?

Ein GEM-Zeichensatz ist zunchst einmal eine Ansammlung
von den Bitmustern der ed9i@K8c@xdelt sich
also um *keine* Vektorzeichenstze. Am Anfang einer 
Zeichensatzdatei befindet sich der sogenannte Fontheader,
der wichtige Zusatzinformationen ber den Zeichensatz 
enthlt.

Zunchst die C-Definition des Fontheaders. Der Typ word
ist als ein vorzeichenloser 16-Bit Integerwert definiert.

typedef struct FNT_HDR{
    word    id;                 Nummer des Zeichensatzes
    word    size;               Hhe der Zeichen in Point  *1
    char    facename[32];       Name des Zeichensatzes     *2
    word    ADE_lo;             Ascii-Wert des ersten Zeichens
    word    ADE_hi;             Ascii-Wert des letztes Zeichens
    word    top_dist;           Abstand Topline-Baseline
    word    asc_dist;           Abstand Ascentline-Baseline
    word    hlf_dist;           Abstand Halfline-Baseline
    word    des_dist;           Abstand Descentline-Baseline
    word    bot_dist;           Abstand Bottomline-Baseline
    word    wchr_wdt;           Breite des breitesten Zeichens
    word    wcel_wdt;           Breite der Zelle des breitesten Zeiches
    word    lft_ofst;           linker Offset fr Kursivschrift
    word    rgt_ofst;           rechter Offset fr Kursivschrift
    word    thckning;           Grad der Fettschrift
    word    undrline;           Dicke der Unterstreichung
    word    lghtng_m;           Maske fr Hellschrift
    word    skewng_m;           Maske fr Kursivschrift
    word    flags;              Fontflags *3
    char    *hz_ofst;           Zeiger auf die HZ-Offset-Tabelle *4
    word    *ch_ofst;           Zeiger auf die Char-Offset-Tabelle *5
    long    fnt_dta;            Zeiger auf die Bitmuster der Zeichen *6
    word    frm_wdt;            Breite des Zeichensatzimages *7
    word    frm_hgt;            Hhe des Zeichensatzimages *8
    struct FNT_HDR *nxt_fnt;    Zeiger auf den nchsen Zeichensatz
} FNT_HDR;

*1  Die Einheit Point ist ein Satzma.

*2  Der eigentliche Name des Zeichensatzes wird in den ersten
    16 Zeichen von 'facename' abgelegt. Sptestens das 16.Zeichen
    mu ein Nullbyte sein. In den zweiten 16 Zeichen befindet
    sich die Klassifizierung des Zeichensatzes, die ebenfalls 
    mit einem Nullbyte abschlieen mu.
    Beispiel:
    Hauptname: Helvetica     Klassifizierung: Italic

*3  Bit 0    Systemfont
    Bit 1    Horizontal-Offset-Tabelle existiert
    Bit 2    Zeichensatz ist im Motorola-Format
    Bit 3    Zeichensatz ist nicht proportional
    
*4  Die Horizontal-Offset-Tabelle enthlt fr jedes Zeichen 
    des Zeichensatzes einen vorzeichenlosen 8-Bit-Wert, der
    bei der Zeichenausgabe mittels v_gtext oder v_justified 
    *nach* der Ausgabe des Zeichens zur X-Koordinate des
    nchsten Zeichens hinzuaddiert werden soll. Der Zeiger
    ist relativ zum Fontheader-Beginn zu verstehen.
    
*5  Die Character-Offset-Tabelle enthlt fr jedes Zeichen
    die X-Position innerhalb des Font-Images. Die Breite
    eines Zeichens kann man dadurch berechnen, da man
    den Character-Offset des aktuellen Zeichens vom Character-
    Offset des im ASCII-Code nachfolgenden Zeichens subtrahiert.
    Beispiel:ch_width = *ch_ofst[ch+1] - *ch_ofst[ch];
    Aus diesem Grund mu auch die Character-Offset-Tabelle immer
    einen Eintrag mehr enthalten, als der Zeichensatz Zeichen
    hat. Wie auch bei der Horizontal-Offset-Tabelle ist der 
    Zeiger relativ zum Anfang des Fontheaders zu verstehen.
    
*6  Um den Aufbau des Zeichensatz-Images zu verstehen, stellt
    man sich am besten vor, man wrde alle Zeichen des 
    Zeichensatzes in Proportionalschrift nebeneinander 
    ausgeben. Genau diese Aneinanderreihung von Bitmustern
    ist das Zeichensatzimage. Der Zeiger ist relativ zum
    Anfang des Fontheaders zu verstehen.
    
*7  Die Breite (in Words!!!) des Zeichensatzimages.

*8  Die Hhe (in Pixel) des Zeichensatzimages.


******* Was ist das ASSIGN.SYS-File?

Das ASSIGN.SYS-File ist eine ASCII-Datei, die bei jedem
Systemstart vom GDOS gelesen wird. In ihr ist vermerk#Cc 6@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                EN.SYS                      ; med-res
04P SCREEN.SYS                      ; high-res
21 FX80.SYS
31 META.SYS

Bei der zweistelligen Nummer handelt es sich um die Identifikation
des Gertetreibers. Diese Identifikation wird bei ffnen der
*pkysikalischen* Workstation im ersten Element des work_in-Arrays
bergeben.

Nun ist aber nicht so, da jedes Programm wissen mte, welche
ID's eingetragen sind, denn es gibt eine Definition der 
Zuordnung der Id's zu den Gertetypen:

01-10   Bildschirm
11-20   Plotter
21-30   Drucker
31-40   Metafile
41-50   Kamera (Polaroid System)
51-60   Grafiktablett

Ein Programm, das einen Drucker ansteuert, sollte also
versuchen, die Workstations mit den ID's 21-30 zu ffnen.
Je nachdem, ob das zurckgegebene Handle gltig (>0) oder
ungltig (<=0) ist, kann die so geffnete Workstation zur 
Druckerausgabe verwendet werden.

*ACHTUNG* Die Gerte-ID ist *NICHT* identisch mit dem Handle.
Es handelt sich dabei um zwei vllig verschiedene Dinge. In 
diesem Zusammenhang bitte ich auch, die zweite Seite des 
Dokuments 'HOW TO USE GDOS' von Atari zu ignorieren. Alle
Informationen auf der betreffenden Seite sagen leidiglich
aus, wie das AES seine physikalische Workstation ffnet. Man
darf die dort beschriebene Methode *NIEMALS* in eigenen
Programmen benutzen.

Doch zurck zum ASSIGN.SYS-File:
Der Buchstabe 'P' hinter der Gerte-ID besagt, da der
zugehrige Gertereiber nicht geladen werden mu, sondern
schon im ROM befindet. Bei Gertetreibern, die geladen
werden mssen, kann man anstelle des 'P' optional den
Buchstaben 'R' eintragen. Der betreffende Treiber wird
dann einmal geladen und bleibt resident im Speicher. Diese
Option ist sehr wichtig fr Disketten-Benutzer, denn auf
diese Weise kann man von einer speziellen Diskette booten,
die alle Treiber und Zeichenstze enthlt. 

In den Zeilen zwischen den einzelnen Gertetreiber-Eintrgen
trgt man die Dateinamen der Zeichenstze ein, die|	 			3	 ls mehr 
ein Zeichensatz pro Zeile eingetragen werden. Beachten Sie
auch, da Sie fr die verschiedenen Bildschirmauflsungen
verschiedene Treiber eintragen mssen. Zeichenstze, deren
Dateinamen Sie ein 'R' mit nachfolgendem Leerzeichen 
voranstellen, werden beim Systemstart geladen und bleiben
dann resident im Speicher.


****** Was ist ein Handle?

Ein Handle ist ein 16-Bit Integerwert, der als Kennung fr
die zu benutzende Workstation bentigt wird. Das GDOS leitet
aus dem Handle ab, an welche Workstation der jeweilige
VDI-Aufruf weitergeleitet werden soll. Das Workstation-Handle
erhalten Sie als Rckgabewert, wenn Sie eine Workstation
ffnen. Gltige Handles sind 16-Bit-Integerwerte > 0.



==================================================================

Falls Sie Probleme mit AMC-GDOS haben oder Anregungen, so wenden
Sie sich bitte an Atari Deutschland
                                   

