home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / TWIST_E1.LZH / GDOS / AUTO / AMCGDOS.TXT < prev   
Text File  |  1993-05-31  |  17KB  |  364 lines

  1.  
  2.  
  3.                    AMC-GDOS Version 3.10
  4.  
  5.                Release Notes und Dokumentation
  6.             
  7.             
  8.                Copyright 1987/88 Arnd Beissner
  9.                      
  10.                Lizenz für Atari ColΦ!╚|82fα£åa·|╨╠?·CÇ~hPhPhV⌠⌠zzÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇαßα߃ƒüüüƒ    ƒ'ƒüüüαßα߃ƒƒ|    ƒ< 8Ç03 ƒƒƒ$    ƒ<    Ç8    ƒ|    ƒα߃ƒ    Cƒƒâƒƒ|    ƒƒ ƒƒ 
  11.   beliebigen Atari-Besitzer weitergeben. Das Recht zur Weitergabe 
  12.   ist allerdings daran gebunden, da₧ Sie die Dateien:
  13.   AMCGDOS.PRG und AMCGDOS.TXT weder umbenennen, noch in 
  14.   irgendeiner Art und Weise verändern oder unvollständig weiter-
  15.   geben. In jedem Fall sind Sie dazu verpflichtet, die beiden Dateien
  16.   nur zusammen weiterzugeben. Jede Art von Weitergabe im 
  17.   beschriebenen Rahmen ist nicht nur erlaubt, sondern ausdrücklich 
  18.   erwünscht. Die kostenlose Nutzung gilt ausschlie₧lich für 
  19.   Atari-Computer.
  20.  
  21.   Wenn Sie AMC-GDOS in irgendeiner Form auf irgendeinem Medium
  22.   verkaufen oder anderweitig kommerziell vermarkten, sei es 
  23.   als eigenständiges Produkt oder als Beilage zu einem anderen 
  24.   Produkt, so sind Sie LIZENZPFLICHTIG. Die eher symbolischen
  25.   Lizenzbedingungen können Sie bei Atari-Deutschland erfragen.
  26.   
  27. ===================================================================
  28.  
  29.  
  30.           TEIL 1
  31.  
  32.           RELEASE NOTES Version 3.10
  33.  
  34. o  AMC-GDOS gibt es wieder in einer deutschen *und* einer englischen
  35.    Version.
  36.    
  37. o  Probleme der Vorgängerversionen mit Programmen, die auf beliebige
  38.    physikalische Geräte, aber nicht auf den Bildschirm zugriffen,
  39.    wurden beseitigt.
  40.    
  41.           RELEASE NOTES Version 3.04              
  42.           
  43. o  AMC-GDOS kann Zeichensätze jetzt wieder resident laden.
  44.  
  45.    
  46.           RELEASE NOTES Version 3.03
  47.  
  48. o  AMC-GDOS hat jetzt eine Stackprüfung, die ein Überlaufen des
  49.    GDOS-Stacks überwacht und ggf. Warnungen ausgibt.
  50.  
  51. o  AMC-GDOS läuft auch dann zuverlässig mit TOS 1.4, wenn der 
  52.    Bildschirmtreiber nicht resident ist, sondern geladen wird.
  53.    
  54.  
  55.           RELEASE NOTES Version 3.02a                 
  56.                   
  57.                   
  58. So, da ist sie nun, die vorläufig endgültige 3er Version von 
  59. AMC-GDOS. Vorab, für alle, die schon mit einer der 2er Versionen
  60. gearbeitet haben, die Änderungen:
  61.  
  62. o  AMC-GDOS liest ab Version 3.00 die 'alten' ASSIGN.SYS-Dateien.
  63.    Die früheren CONFIG.SYS-Dateien werden nicht mehr untersützt.
  64.    Zweifellos ist die jetzige Lösung die bessere, denn es gibt ja
  65.    nun schon mindestens ein Programm, das die ASSIGN.SYS-Datei 
  66.    bei der Installation automatisch anpa₧t, bzw. neuschreibt.
  67.    
  68.    Durch diese Änderung entfällt zum einen das CONFGDOS-Programm,
  69.    zum anderen ist AMC-GDOS auch deutlich länger geworden.
  70.    
  71. o  Auch wenn es an keiner Stelle in der DR-Dokumentation deutlich
  72.    herausgestellt wird, scheint es gängige Konvention zu sein, 
  73.    da₧ weder GDOS noch die Gerätetreiber den Inhalt der 
  74.    Eingabe-Arrays verändern dürfen. Dadurch ergaben sich einige 
  75.    Änderungen im NDC-Modus von AMC-GDOS. Die Eingabe-Arrays
  76.    werden jetzt nicht mehr direkt von einem Koordinatensystem
  77.    ins andere transformiert. AMC-GDOS legt eigene PTSIN und
  78.    PTSOUT-Arrays an, in die die transformatierten Koordinaten
  79.    geschrieben werden.
  80.    
  81. o  AMC-GDOS zeigt beim Booten die Pfaddefinition an, die es beim
  82.    Parsen der ASSIGN.SYS-Datei gefunden hat. Dies ist als kleine
  83.    Hilfe für den Fall gedacht, da₧ ein Programm eine Meldung
  84.    wie z.B. 'Kann SCREENFONTS nicht finden' ausgibt.
  85.  
  86.  
  87.  
  88.  
  89.            TEIL 2
  90.            
  91.            DOKUMENTATION
  92.            
  93.  
  94.  
  95. Um die Dokumentation zum GDOS möglichst effizient zu gestalten,
  96. wählte ich die in amerikanischen Computerfachbüchern häufig
  97. verwendete Frage/Antwort-Form.
  98.  
  99. ******* Was ist das VDI?
  100.  
  101. VDI ist die Abkürzung für Virtual Device Interface, was soviel
  102. hei₧t wie 'Virtuelle Geräteschnittstelle'. Dahinter versteckt
  103. sich die Idee, da₧n.
  104.  
  105. Das VDI besteht aus den drei Komponenten:
  106. GDOS, Gerätetreiber und Zeichensätze.
  107.  
  108.  
  109. ******* Was ist das GDOS?
  110.  
  111. GDOS (Graphic Device Operation System) ist sozusagen die
  112. Steuerungszentrale des VDI. Es empfängt die Mitteilungen
  113. (VDI-Aufrufe) der verschiedenen Programme und leitet sie
  114. an die betreffenden Geräte weiter.
  115.  
  116. Die zweite Aufgabe von GDOS ist, bei Bedarf Koordinaten-
  117. systemtransformationen durchzuführen. Die einzelnen
  118. Gerätetreiber (Bildschirm, Drucker, usw.) kennen nur das
  119. Rasterkoordinatensystem. Die Umwandlungen vom normalisierten
  120. ins Rasterkoordinatensystem werden vom GDOS durchgeführt. 
  121. Leider ist das aber nur die halbe Wahrheit, denn an einigen
  122. Stellen müssen die Gerätetreiber doch etwas vom verwendeten
  123. Koordinatensystem wissen: Immer wenn ein Treiber einen
  124. vertikalen Abstand als Parameter erwartet oder als 
  125. Funktionsresultat zurückgibt (wie z.B. vertikaler Ellipsen-
  126. Radius), mu₧ er nachsehen, ob das normalisierte Koordinaten-
  127. system verwendet wurde. Die Umrechung der Einheiten wird
  128. zwar vom GDOS durchgeführt, aber leider wird eben auch die
  129. Position des Ursprungs berücksichtigt, und die ist im
  130. NDC-System eben in der unteren linken Bildschirmecke. Wenn
  131. also ein Treiber einen ABSTAND in einem der POINTS-Arrays
  132. benutzt, mu₧ er gegebenfalls umrechnen. Im Grunde genommen
  133. handelt es sich dabei um einen Designfehler im VDI. 
  134. Zusätzlich zu den INTEGER- und POINTS-Arrays hätte man
  135. ein weiteres DISTANCES-Array einführen müssen.
  136.  
  137. Die dritte Aufgabe von GDOS ist es, Zeichensätze in den
  138. Speicher zu laden und wieder daraus zu entfernen. Was sich
  139. zunächst so einfach anhört, entpuppt sich bei genauerem 
  140. Hinsehen als ein Haufen Verwaltungsarbeit. Schlie₧lich soll
  141. ein Zeichensatz ja immer nur einmal im Speicher sein, auch 
  142. wenn er von verschiedenen Workstations angefordert wurde. 
  143. Au₧erdem mu₧ GDOS selbständig feststellen, wann ein 
  144. Zeichensatz von keiner Workstation mehr benötigt wird, denn
  145. spätestens dann mu₧ er aus dem Speicher entfernt werden. 
  146. Nicht zuletzt wandelt AMC-GDOS alle Zeichensätze vom 
  147. Intel- ins Motorola-Format um, falls das nötig ist.
  148.  
  149.  
  150. ******* Was ist eine PHYSIKALISCHE WORKSTATION?
  151.  
  152. Eine physikalische Workstation ist die VDI-Bezeichnung für
  153. ein tatsächlich (physikalisch) vorhandenes Gerät - als
  154. ein Bildschirm, ein Drucker, oder auch ein Metafile. 
  155. Virtuelle Workstations können nur auf dem Bildschirm geöffnet
  156. werden - Drucker und Dateien können nunmal schlecht von 
  157. mehreren Programmen gleichzeitig benutzt werden. Die 
  158. physikalische Bildschirm-Workstation wird beim Systemstart
  159. vom AES geöffnet.
  160.  
  161.  
  162. ******* Was ist eine VIRTUELLE WORKSTATION?
  163.  
  164. Ein virtuelle Workstation ist die VDI-Bezeichnung für ein
  165. nicht wirklich vorhandenes Gerät. Eine virtuelle Workstation
  166. wird immer auf ein physikalisches Gerät abgebildet. Da man
  167. virtuelle Workstations nur auf dem Bildschirm öffnen kann,
  168. handelt es sich bei dem Gerät immer um den Bildschirm. Die
  169. Benutzung des Bildschirms von mehreren Programmen gleichzeitig
  170. ist auch nur deshalb sinnvoll, weil das AES mit seinen 
  171. Fenster-Verwaltungs-Mechanismen Hilfsmittel zur Verfügung
  172. stellt, die verhindern, da₧ auf dem Bildschirm Chaos entsteht. 
  173.  
  174. Wenn man eine virtuelle Workstation öffnen möchte, mu₧ man
  175. dem VDI *immer* mitteilen, auf welchem Gerät das geschehen
  176. soll. Dazu mu₧ man das Handle der physikalischen Workstation
  177. kennen. Da das AES diese geöffnet hat, mu₧ man das Handle 
  178. auch beim AES erfragen. Dazu verwendet man den AES-Aufruf
  179. graf_handle.
  180.  
  181.  
  182. ******* Was ist ein GERÄTETREIBER?
  183.  
  184. Ein Gerätetreiber ist das Programm, das vom GDOS die
  185. VDI-Aufrufe des Anwenderprogramms empfängt und diese
  186. in eine grafische Ausgabe umsetzt. Oft hört man Sprüche
  187. wie: 'Ich schreibe jetzt einen VDI-Gerätetreiber'. 
  188. Meistens waren sich die Urheber dieser Sprüche wohl nicht
  189. so ganz über die Konsequenzen im Klaren. Ein richtiger
  190. Gerätetreiber ist nämlich nicht mehr und nicht weniger 
  191. als ein fast vollständiges VDI - nur das GDOS fehlt. Eine
  192. zeitsparende Möglichkeit, einen Gerätetreiber zu schreiben,
  193. ist es, sich von Atari das Object-File INDEP.LIB mit diversen
  194. Zutaten zu besorgen. Dieses Object-File enthält im Wesentlichen
  195. sämtliche Ausgaberoutinen - wenn auch nur für Drucker. 
  196. Alle geräteabhängigen Teile werden im Sourcecode mitgeliefert.
  197. Bitte beachten Sie aber, da₧ man mit dem 'Treiber-Baukasten'
  198. nur Gerätetreiber für matrixorientierte Drucker zusammenstellen
  199. kann.
  200.  
  201.  
  202. ******* Was ist ein GEM-Zeichensatz?
  203.  
  204. Ein GEM-Zeichensatz ist zunächst einmal eine Ansammlung
  205. von den Bitmustern der ed╪▄α9i@K8ûΓ┘≥«cα@xdelt sich
  206. also um *keine* Vektorzeichensätze. Am Anfang einer 
  207. Zeichensatzdatei befindet sich der sogenannte Fontheader,
  208. der wichtige Zusatzinformationen über den Zeichensatz 
  209. enthält.
  210.  
  211. Zunächst die C-Definition des Fontheaders. Der Typ word
  212. ist als ein vorzeichenloser 16-Bit Integerwert definiert.
  213.  
  214. typedef struct FNT_HDR{
  215.     word    id;                 Nummer des Zeichensatzes
  216.     word    size;               Höhe der Zeichen in Point  *1
  217.     char    facename[32];       Name des Zeichensatzes     *2
  218.     word    ADE_lo;             Ascii-Wert des ersten Zeichens
  219.     word    ADE_hi;             Ascii-Wert des letztes Zeichens
  220.     word    top_dist;           Abstand Topline-Baseline
  221.     word    asc_dist;           Abstand Ascentline-Baseline
  222.     word    hlf_dist;           Abstand Halfline-Baseline
  223.     word    des_dist;           Abstand Descentline-Baseline
  224.     word    bot_dist;           Abstand Bottomline-Baseline
  225.     word    wchr_wdt;           Breite des breitesten Zeichens
  226.     word    wcel_wdt;           Breite der Zelle des breitesten Zeiches
  227.     word    lft_ofst;           linker Offset für Kursivschrift
  228.     word    rgt_ofst;           rechter Offset für Kursivschrift
  229.     word    thckning;           Grad der Fettschrift
  230.     word    undrline;           Dicke der Unterstreichung
  231.     word    lghtng_m;           Maske für Hellschrift
  232.     word    skewng_m;           Maske für Kursivschrift
  233.     word    flags;              Fontflags *3
  234.     char    *hz_ofst;           Zeiger auf die HZ-Offset-Tabelle *4
  235.     word    *ch_ofst;           Zeiger auf die Char-Offset-Tabelle *5
  236.     long    fnt_dta;            Zeiger auf die Bitmuster der Zeichen *6
  237.     word    frm_wdt;            Breite des Zeichensatzimages *7
  238.     word    frm_hgt;            Höhe des Zeichensatzimages *8
  239.     struct FNT_HDR *nxt_fnt;    Zeiger auf den nächsen Zeichensatz
  240. } FNT_HDR;
  241.  
  242. *1  Die Einheit Point ist ein Satzma₧.
  243.  
  244. *2  Der eigentliche Name des Zeichensatzes wird in den ersten
  245.     16 Zeichen von 'facename' abgelegt. Spätestens das 16.Zeichen
  246.     mu₧ ein Nullbyte sein. In den zweiten 16 Zeichen befindet
  247.     sich die Klassifizierung des Zeichensatzes, die ebenfalls 
  248.     mit einem Nullbyte abschlie₧en mu₧.
  249.     Beispiel:
  250.     Hauptname: Helvetica     Klassifizierung: Italic
  251.  
  252. *3  Bit 0    Systemfont
  253.     Bit 1    Horizontal-Offset-Tabelle existiert
  254.     Bit 2    Zeichensatz ist im Motorola-Format
  255.     Bit 3    Zeichensatz ist nicht proportional
  256.     
  257. *4  Die Horizontal-Offset-Tabelle enthält für jedes Zeichen 
  258.     des Zeichensatzes einen vorzeichenlosen 8-Bit-Wert, der
  259.     bei der Zeichenausgabe mittels v_gtext oder v_justified 
  260.     *nach* der Ausgabe des Zeichens zur X-Koordinate des
  261.     nächsten Zeichens hinzuaddiert werden soll. Der Zeiger
  262.     ist relativ zum Fontheader-Beginn zu verstehen.
  263.     
  264. *5  Die Character-Offset-Tabelle enthält für jedes Zeichen
  265.     die X-Position innerhalb des Font-Images. Die Breite
  266.     eines Zeichens kann man dadurch berechnen, da₧ man
  267.     den Character-Offset des aktuellen Zeichens vom Character-
  268.     Offset des im ASCII-Code nachfolgenden Zeichens subtrahiert.
  269.     Beispiel:ch_width = *ch_ofst[ch+1] - *ch_ofst[ch];
  270.     Aus diesem Grund mu₧ auch die Character-Offset-Tabelle immer
  271.     einen Eintrag mehr enthalten, als der Zeichensatz Zeichen
  272.     hat. Wie auch bei der Horizontal-Offset-Tabelle ist der 
  273.     Zeiger relativ zum Anfang des Fontheaders zu verstehen.
  274.     
  275. *6  Um den Aufbau des Zeichensatz-Images zu verstehen, stellt
  276.     man sich am besten vor, man würde alle Zeichen des 
  277.     Zeichensatzes in Proportionalschrift nebeneinander 
  278.     ausgeben. Genau diese Aneinanderreihung von Bitmustern
  279.     ist das Zeichensatzimage. Der Zeiger ist relativ zum
  280.     Anfang des Fontheaders zu verstehen.
  281.     
  282. *7  Die Breite (in Words!!!) des Zeichensatzimages.
  283.  
  284. *8  Die Höhe (in Pixel) des Zeichensatzimages.
  285.  
  286.  
  287. ******* Was ist das ASSIGN.SYS-File?
  288.  
  289. Das ASSIGN.SYS-File ist eine ASCII-Datei, die bei jedem
  290. Systemstart vom GDOS gelesen wird. In ihr ist vermerkâαΣ┬α#ü▄Cc6@EN.SYS                      ; med-res
  291. 04P SCREEN.SYS                      ; high-res
  292. 21 FX80.SYS
  293. 31 META.SYS
  294.  
  295. Bei der zweistelligen Nummer handelt es sich um die Identifikation
  296. des Gerätetreibers. Diese Identifikation wird bei Öffnen der
  297. *pkysikalischen* Workstation im ersten Element des work_in-Arrays
  298. übergeben.
  299.  
  300. Nun ist aber nicht so, da₧ jedes Programm wissen mü₧te, welche
  301. ID's eingetragen sind, denn es gibt eine Definition der 
  302. Zuordnung der Id's zu den Gerätetypen:
  303.  
  304. 01-10   Bildschirm
  305. 11-20   Plotter
  306. 21-30   Drucker
  307. 31-40   Metafile
  308. 41-50   Kamera (Polaroid System)
  309. 51-60   Grafiktablett
  310.  
  311. Ein Programm, das einen Drucker ansteuert, sollte also
  312. versuchen, die Workstations mit den ID's 21-30 zu öffnen.
  313. Je nachdem, ob das zurückgegebene Handle gültig (>0) oder
  314. ungültig (<=0) ist, kann die so geöffnete Workstation zur 
  315. Druckerausgabe verwendet werden.
  316.  
  317. *ACHTUNG* Die Geräte-ID ist *NICHT* identisch mit dem Handle.
  318. Es handelt sich dabei um zwei völlig verschiedene Dinge. In 
  319. diesem Zusammenhang bitte ich auch, die zweite Seite des 
  320. Dokuments 'HOW TO USE GDOS' von Atari zu ignorieren. Alle
  321. Informationen auf der betreffenden Seite sagen leidiglich
  322. aus, wie das AES seine physikalische Workstation öffnet. Man
  323. darf die dort beschriebene Methode *NIEMALS* in eigenen
  324. Programmen benutzen.
  325.  
  326. Doch zurück zum ASSIGN.SYS-File:
  327. Der Buchstabe 'P' hinter der Geräte-ID besagt, da₧ der
  328. zugehörige Gerätereiber nicht geladen werden mu₧, sondern
  329. schon im ROM befindet. Bei Gerätetreibern, die geladen
  330. werden müssen, kann man anstelle des 'P' optional den
  331. Buchstaben 'R' eintragen. Der betreffende Treiber wird
  332. dann einmal geladen und bleibt resident im Speicher. Diese
  333. Option ist sehr wichtig für Disketten-Benutzer, denn auf
  334. diese Weise kann man von einer speziellen Diskette booten,
  335. die alle Treiber und Zeichensätze enthält. 
  336.  
  337. In den Zeilen zwischen den einzelnen Gerätetreiber-Einträgen
  338. trägt man die Dateinamen der Zeichensätze ein, dieƒ|    ƒα߃        ƒ    üƒ3ƒ    ƒls mehr 
  339. ein Zeichensatz pro Zeile eingetragen werden. Beachten Sie
  340. auch, da₧ Sie für die verschiedenen Bildschirmauflösungen
  341. verschiedene Treiber eintragen müssen. Zeichensätze, deren
  342. Dateinamen Sie ein 'R' mit nachfolgendem Leerzeichen 
  343. voranstellen, werden beim Systemstart geladen und bleiben
  344. dann resident im Speicher.
  345.  
  346.  
  347. ****** Was ist ein Handle?
  348.  
  349. Ein Handle ist ein 16-Bit Integerwert, der als Kennung für
  350. die zu benutzende Workstation benötigt wird. Das GDOS leitet
  351. aus dem Handle ab, an welche Workstation der jeweilige
  352. VDI-Aufruf weitergeleitet werden soll. Das Workstation-Handle
  353. erhalten Sie als Rückgabewert, wenn Sie eine Workstation
  354. öffnen. Gültige Handles sind 16-Bit-Integerwerte > 0.
  355.  
  356.  
  357.  
  358. ==================================================================
  359.  
  360. Falls Sie Probleme mit AMC-GDOS haben oder Anregungen, so wenden
  361. Sie sich bitte an Atari Deutschland
  362.                                    
  363.  
  364.