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