home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0613.ZIP / CCE_0613.PD / HPGL_PD / HPGL_PD.DOC next >
Text File  |  1991-07-08  |  24KB  |  493 lines

  1. ③Formatierung: 65 Z/Zeile, 38 Z/seite, 1½zeilig①
  2. HPGL-Treiber, entwickelt auf LASER-C
  3.  
  4. Autor:
  5. M. Störzbach
  6. Immentalstr. 48
  7. 78 -1Freiburg/Brsg.-0
  8.  
  9.         Die Public-Domain-Version, Kennzeichnung:
  10.                HPGL:HPGL_PD 1.4r2( MStoe 16.02.91)
  11. darf zusammen mit diesem Text frei weitergegeben werden, aber 
  12. nicht verkauft oder auf sonstige Art kommerziell verwertet 
  13. werden.
  14.  
  15. Alle Rechte des Programms liegen bei dem Autor M. Störzbach.
  16. Der Autor übernimmt keinerlei Haftung für die Fehlerfreiheit
  17. des Programms oder Schäden, die sich aus der Anwendung ergeben.
  18.  
  19. Die in der Beschreibung verwendeten Bezeichnungen und Namen sind 
  20. zum Teil geschützt, auch wenn sie nicht extra gekennzeichnet 
  21. sind.
  22.  
  23.  
  24. Hinweise zur Benutzung des HPGL-VDI-Treibers
  25.  
  26. 1.   -1Allgemeines-0 
  27.      Der Treiber steuert Plotter an, die die weit verbreitete 
  28. HPGL unterstützen. Der Treiber setzt in vielen Funktionen die 
  29. eingebaute Intelligenz der Plotter ein, wodurch der Treiber 
  30. Rechenzeit spart. Allerdings sind die Kreiszeichenbefehle in 
  31. HPGL langsam in der Ausführung, und bei Ellipsen kann es zu 
  32. eckiger Ausführung des "spitzen" Endes kommen.
  33.        An den Rechner stellt der Treiber zunächst die Anfor- 
  34. derung, daß er funktioniert! Für die Anwendung als echter GEM- 
  35. VDI Treiber muß natürlich ein GDOS geladen und der Treiber im 
  36. ASSIGN.SYS eingetragen sein. Zusätzliche Zeichensätze existie- 
  37. ren (noch) nicht. Der Treiber kann auch direkt vom Programm per 
  38. EXEC-Systemfunktion geladen werden. Der Zeiger auf den VDI- 
  39. Parameterblock muß dann in Register D1 stehen ( Näheres s.u. ).
  40.  
  41. 2.   -1Ausgabe:-0
  42.       Der Plotter kann an die serielle Schnittstelle ange- 
  43. schlossen werden, die Ansteuerung erfolgt dann direkt durch den 
  44. Treiber. Der Treiber konfiguriert die Schnittstelle gemäß den 
  45. Angaben im CFG-File, der Plotter wird auf Xon/Xoff-Protokoll 
  46. eingestellt. Dazu muß der Plotter folgende Escape-Sequenzen ver- 
  47. stehen: <esc>M, <esc>N: Definiert Xoff-Zeichen, <esc>I: Defi- 
  48. niert min. Puffergröße und Xon-Zeichen. Per hshk-Kommando im 
  49. CFG-File kann eine andere Zeichenfolge definiert werden. Sie 
  50. wird jeweils beim Öffnen der Station ( v_opnwk ) gesendet.
  51.      Bei dieser Ausgabeart kann es vorkommen, daß sich der 
  52. Rechner aufhängt, da bei fehlendem Xon des Plotters ( Übertra- 
  53. gungsstörung ) die Schnittstelle im Atari auf ewige Zeiten 
  54. blockiert bleibt! Nach opnwk und clswk wird wird noch die 
  55. Plotter-on-Sequenz  gesendet  ( '<esc>.(' )  sowie  Plotter-off 
  56. ( '<esc>.)' ). Auch diese können umdefiniert werden.
  57.       Alternativ kann per CFG-File die Ausgabe auch auf den 
  58. Drucker umgelenkt werden. Falls das File HPGL.CFG keine Anwei- 
  59. sungen zum Ausgabeziel enthält, erfolgt die Ausgabe auf eine 
  60. Datei HPGL.Pxx, wobei xx eine Zahl zwischen 01 und 99 
  61. symbolisiert. Der Treiber ermittelt ausgehend von 01 die 
  62. niedrigste freie Nummer und legt mit dieser ein File an. Wird die 
  63. Ausgabe auf Datei explizit angefordert, muß dabei auch eine 
  64. Dateiname angegeben werden. Die Extension wird dabei immer als 
  65. '.Pxx' angesetzt.
  66.  
  67. 3.   -1Fähigkeiten und Grenzen-0
  68.      Der Treiber führt selbst nur ein Minimum an grafischer 
  69. Berechnung durch und überläßt soviel als möglich der Intel- 
  70. ligenz des Plotters. Im Moment nimmt der Treiber allerdings die 
  71. Transformation vom VDI-Koordinatensystem ins Plotterkoordina- 
  72. tensystem vor. Dadurch wurde die bisher benutzte 'RO'-HPGL- 
  73. Plotteranweisung unnötig. Der Plotter muß daher folgende Komman- 
  74. dos unterstützen:   
  75. SC : Skalierung auf logisches Koordinatensystem
  76. IP : Definition der physikalischen Plotgrenzen
  77. IW : Fenster   
  78. SP : Stiftwahl
  79. PT : Stiftdicke ( fürs Füllen )
  80. VS : Zeichengeschwindigkeit
  81. CS : Definition 1. Zeichensatz 
  82. CA : Definition 2. Zeichensatz  
  83. SS : Anwahl 1. Zeichensatz 
  84. SA : Anwahl 2. Zeichensatz  
  85. PU : Stift hoch 
  86. PD : Stift runter
  87. PA : Geh, Absolutkoorsinaten 
  88. PR : Geh, relativ zur momentanen Position
  89. LT : definiere Linientyp  
  90. AR : Kreisbogen, relativ zur momentanen Position 
  91. WG : Fülle Kreisausschnitt  
  92. RA : Fülle Rechteck 
  93. LB : Textausgabe, das Zeichen Nr. 03 ( ASCII ) kennzeichnet das 
  94.      Ende der Zeichenfolge.
  95. DI : Textausrichtung, absolut
  96. SI : Höhe der Zeichen
  97. SL : Schrägstellen der Zeichen
  98. CP : Gehe in Zeicheneinheiten
  99.  
  100.      Da sich der Treiber auf die Fähigkeiten der Plotter stützt, 
  101. sind einige schöne Sachen nicht möglich:
  102.  
  103.      Es gibt nur einen Zeichenmodus: transparent. Auf Papier 
  104. lassen sich nun mal keine Punkte invertieren. 
  105.  
  106.      Flutfüllen beliebiger eingerahmter Flächen unmöglich.
  107.  
  108.      Füllen: Schraffieren und Massiv, nur in Rechtecken und 
  109. Kreisen. Es gibt eine Schraffur, Musterfüllen geht nicht.
  110.  
  111.      Keine runde Linienendausführung.
  112.      Keine Schräg- und Fettschrift
  113.      Ausrichten vertikal und horizontal wird unterstützt.
  114.  
  115.      Grafische Primitive: keine Rechtecke mit gerundeten Ecken 
  116.            ( stattdessen eben eckig ).
  117.  
  118. Anmerkungen:
  119.      Keine Pfeile
  120.      1 Marker
  121.      Die max. Plotgröße des Treibers ist durch Übersetzungs- 
  122. parameter festgelegt. Eine harte Grenze ergibt sich bei der 
  123. gewählten Auflösung von 1/10mm bei 3.2m in beide Achsen- 
  124. richtungen. 
  125.    Die Angabe von 10000 Punkten bzw. Eingabewerten bezieht sich 
  126. natürlich nur auf den Treiber und wird bei Erweiterung der 
  127. Funktionen wahrscheinlich geändert. Die oft angegebene Grenze 
  128. von 128 Werten sollte daher im Zweifelsfall eingehalten werden. 
  129.  
  130.    Bei Ellipsen mit Pfeilspitzen können die Pfeilspitzen etwas 
  131. daneben sitzen, da die Ellipsen durch Verzerren von Kreisen im 
  132. Plotter erzeugt werden, und der treiber bei der Positionierung 
  133. der Pfeilspitzen die dabei auftretenden Rundungserscheinungen 
  134. nicht exakt nachvollziehen kann.
  135.  
  136. 4.   -1Konfiguration des Treibers-0
  137.      Einige Eigenschaften des Treibers können durch das HPGL.CFG- 
  138. File beeinflußt werden. Es wird bei Durchführung von v_opnwk 
  139. gelesen. Es wird zunächst im aktuellen Arbeitsverzeichnis 
  140. gesucht, danach im Wurzelverzeichnis der Arbeitspartition bzw. 
  141. -disk. Wird das File nicht gefunden, so ertönt ein Warnton, und 
  142. die Normalwerte werden eingesetzt.
  143.    Jede Zeile besteht aus dem Kommando und danach, von diesem und 
  144. untereinander durch Leerzeichen getrennt, die nötigen Angaben. 
  145.  
  146. Syntax des CFG-Files:
  147.      <kommando> <wert1>[{,<wert>}] 
  148. kommando: Name des Parameters: Großschreibung ignoriert, erste 4 
  149.           Buchstaben signifikant.
  150. wert.. : a) Zahl: Zahl, durch Leerzeichen begrenzt 
  151.          b) Text: Eine Zeichenfolge, ebenfalls durch Leerzeichen
  152.                   begrenzt.  Zeichen  mit   ASCII-Werten<32  und
  153.                   Leerzeichen müssen mit der C-Syntax verschlüs- 
  154.                   selt werden: Backslsh '\', gefolgt von der 
  155.                   Hex(!)-Kodierung. Ein Textparameter darf max. 
  156.                   40 Zeichen umfassen, nachdem er dekodiert 
  157.                   wurde. Ansonsten erscheint eine Meldung, und 
  158.                   die Zeichnung wird ignoriert.
  159.                   Ausnahme: Der Dateiname bei der Zieldefini- 
  160.                   tion darf bis zu 90 Zeichen umfassen.
  161.                   Ein Text der Länge 0 wird mittels '\0' ( Null- 
  162.                   byte ) angegeben.
  163.                   Hex-Kodierung: Darstellung des ASCII-Wertes 
  164.                   des Zeichens im 16-Zahlsystem, damit sind 2 
  165.                   Ziffern pro Zeichen nötig. Die Ziffernfolge 
  166.                   ist in diesem System:
  167.                   0 1 2 3 4 5 6 7 8 9 A B C D E F 
  168.  
  169.      Eine Zeile des CFG-Files darf nicht mehr als 80 Zeichen 
  170. umfassen!
  171.  
  172.    Und nun die Kommandos:
  173.  
  174. aler(t) MUTE/talk      : mit 'talk' wird die Ausgabe von 
  175.                          Fehlermeldungen usw. auf den Bildschirm 
  176.                          eingeschaltet. Das zerstört allerdings 
  177.                          den GEM-Bildschirm links oben unterhalb 
  178.                          der Menüzeile. Abhilfe: links oben 
  179.                          Bildschirmplatz reservieren wie für 
  180.                          Formular, nach Plotten wieder frei- 
  181.                          geben. 
  182.                             Meldungen werden auf jeden Fall 
  183.                          durch eine kurzen Piepser, Warnungen 
  184.                          durch eine längeren und ernste Fehler 
  185.                          durch noch längeren Pieps angedeutet. 
  186.                          Im Mute-Modus wird auch die Normal- 
  187.                          antwort der Formulare automatisch 
  188.                          selektiert!
  189.                             Wird das alert-Kommando gegeben, so 
  190.                          führt jeder andere Parameter als 'MUTE' 
  191.                          zum Einschalten der Fehlermeldungen!
  192.                          (normal: Mute).
  193.  
  194. baud <rate>            : Baudrate (normal:9600)
  195.  
  196. bits <5|6|7|8>         : Anzahl Datenbits (normal:8);
  197.  
  198. pari(ty) <-1|0|1 >     : Parity:  keine| gerade (even)| ungerade
  199.                          (odd) (normal:keine);
  200.  
  201. stop(bits) <1|2>       : Anzahl der Stopbits (normal:1)
  202.  
  203. ziel <RS232|CENT|AUX:|PRN:|dateiname> : Name der Zieleinheit 
  204.                          (normal: File 'HPGLFILE' o. ä.);
  205.                          AUX: und RS232 leiten auf seriell 
  206.                          Schnittstelle um, CENT und PRN: auf die 
  207.                          Druckerschnittstelle. In letzterem Fall 
  208.                          werden natürlich die Parameter für die 
  209.                          serielle Schnittstelle ignoriert. 
  210.       dateiname        : Name der Datei, auf der das HPGL-File
  211.                          abgelegt werden soll. Der Name wird 
  212.                          immer mit der Extension .Pxx versehen, 
  213.                          wobei xx eine zweistellige Zahl 
  214.                          symbolisiert. Es wird die nächste freie 
  215.                          Kombination gesucht. Max. sind damit 99 
  216.                          Files .P01 - .P99 möglich. Beim 
  217.                          Überschreiten von 99 wird eine Warnung 
  218.                          ausgegeben und mit <name>.P01 
  219.                          überschrieben.
  220.  
  221. hshk <zeichenfolge >   : definiert die Zeichenfolge, die an den
  222.                          Plotter geschickt werden soll zum Ein-
  223.                          richten des Xon/Xoff-Protokolls. Stan- 
  224.                          dardmäßig werden N,M und I-Befehle ver- 
  225.                          wendet. Der String kann natürlich auch 
  226.                          sonstige Befehle an den Plotter ent- 
  227.                          halten.
  228.                          Achtung: falls nötig, müssen auch die 
  229.                          Plotter-On und -Off-Sequenzen mit ange- 
  230.                          geben werden, da diese Zeichenfolge 
  231.                          vor! der p_on-Zeichenfolge gesendet 
  232.                          wird.
  233.                          (normal: XON/XOFF-Protokoll:
  234.                          "\1B.(\1B.M:\1B.I100;;17:\1B.N;19:\1B.)"
  235.  
  236. p_on <zeichenfolge>    : definiert Zeichenfolge zum Plotterakti- 
  237.                          vieren (normal: "\1B.(").
  238.  
  239. p_of <zeichenfolge>    : definiert Zeichenfolge zum Abschalten
  240.                          des Plotters (normal: "\1B.)").
  241.  
  242. velo <1:max>           : Zeichengeschwindigkeit ( cm/s ) 
  243.                          (normal:5) 
  244.  
  245. ul <Untenlinks:x> <Untenlinks:y> :
  246.                          Normalwert für die Position der unteren 
  247.                          linken Ecke (cm ) (normal: 0,0) 
  248.  
  249. groe(sse) <x> <y>      : Größe der Zeichnung ( cm ) (normal: 
  250.                          Maximum des Treibers:(20cm*28cm). 
  251.                          y-Achse ist die längere Achse! Max. 
  252.                          kann ca. 320*320cm angegeben werden. 
  253.                          die Grenze ergibt sich aus der 
  254.                          Auflösung von 0.1mm und des 
  255.                          Zahlbereichs von 0..(2^15-1).
  256.  
  257. skal(ierung) <zaehler> <nenner>  :
  258.                          Skalierung des Plots; (Normal 1,1); 
  259.  
  260. stif(t) <schacht> <dicke(µm)> <farbe> :
  261.                          Angabe des vorhandenen Stifts: 
  262.                          Schacht, in dem der Stift steht, Dicke 
  263.                          und Farbe.
  264.                          Farbe: Eine Zahl, beginnend bei 0, 
  265.                          gemäß der folgenden Reihenfolge:
  266.                          Weiss=0, Schwarz=1, Gruen, Blau, Cyan, 
  267.                          Gelb, Magenta, Weiss, Schwarz,  Hell- 
  268.                          rot, Hell-gruen, Hell-blau, Hell-gelb, 
  269.                          Hell-magenta=13 ( Weiß = kein Stift )
  270.                          (normal: Ein Stift in Schacht 1, 
  271.                          Schwarz, Dicke 3 log. Einheiten 
  272.                          (=0.3mm) ).
  273.  
  274. fllr(and)              : gefüllte Flächen normalerweise ein-
  275.                          grenzen ('j') oder nicht ( 'n' ).
  276.                             Eingrenzen ist vom VDI her zwar 
  277.                          Normalwert, aber nicht tragisch, da im 
  278.                          Normalfall replace-Schreibmodus.
  279.                             Da der Plotter ( und andere Papier-
  280.                          geräte ) im einfachsten Fall im Trans- 
  281.                          parentmodus  arbeitet, ist es normaler- 
  282.                          weise richtig, das Eingrenzen abzu- 
  283.                          schalten. (normal: nicht).
  284.  
  285. outp(ut):                Setzen einiger spezieller Parameter für
  286.                          Output.prg:
  287.                          z.B. automatisches Umranden von 
  288.                          gefüllten Flächen ist nicht mehr 
  289.                          aktivierbar!
  290.  
  291. 5.   -1Anwendungshinweise-0
  292.  
  293. 5.1  -1Testmängel-0
  294.      Noch nicht ( vollständig ) getestet sind folgende Eigen- 
  295. schaften:
  296.    Umlautausgabe ( s.u. ), Berechnung des den String umgebenden 
  297. Rechtecks.
  298.  
  299. 5.2  -1Grundsätzliches-0
  300.  
  301.       Der Treiber verwendet nur die im Plotter eingebauten 
  302. Zeichensätze:   Zeichensatz 0 ( normal ) und Zeichensatz 7 ( Um- 
  303. laute usw. ). Die Ellipsenfunktionen werden durch die Kreis- 
  304. funktionen des Plotters bei gleichzeitiger Verzerrung des Ko- 
  305. ordinatensystems erzeugt. Dadurch ist das maximale Verhältnis 
  306. lange Achse zu kurze Achse beschränkt. Außerdem sind die Plotter 
  307. beim Berechnen von Kreisbögen bei höchster Auflösung langsam, 
  308. das führt zum Ausbluten der Stifte und zu zu dicken Linien. 
  309. Deshalb gibt der Treiber dem Plotter eine geringere Präzision 
  310. der Ausführung an in Abhängigkeit vom Krümmungsradius. Das führt 
  311. bei extremen Ellipsen zu eckiger Ausführung an der "Spitze".
  312.       Der Treiber verläßt sich bei der Ausgabe von Umlauten noch 
  313. auf feste Umschaltzeichen vom Normalzeichensatz auf den Alter- 
  314. nativzeichensatz. Es sind die Zeichen mit ASCII-Codes $0E 
  315. (alternativ ) und $0F ( normal ).
  316.       Ebenso nimmt er an, daß eine Textzeile durch $03 am Ende 
  317. markiert wird.
  318.  
  319.       Wird der Plot durch Skalierung verkleinert, so wird die 
  320. Zeichenfläche für das rufende Programm scheinbar vergrößert. Die 
  321. im CFG-File angegebene Plotgröße ist auch bei Skalierung mit der 
  322. physikalischen Blattgröße identisch.
  323.  
  324.      Wird während der Zeichnung die UNDO-Taste betätigt, so wird 
  325. zunächst gefragt, ob es ernst gemeint ist ( "Plot kippen?" ). 
  326. Wenn dies bejaht ist, so werden alle Funktionen bis auf 
  327. v_clswk() gesperrt.(Alert Mute: sofort Abbruch)
  328.  
  329.      Sollen nach v_opnwk mehrere Zeichnungen nacheinander aus- 
  330. geführt werden, so sollte nach jeder Zeichnung v_updwk und vor 
  331. der Zeichnung auch v_clrwk ausgeführt werden . Der Treiber 
  332. erzeugt keine Aufforderung zum Papierwechsel! Der Papierwechsel 
  333. muß vom Hauptprogramm behandelt werden. Durch eine Änderung 
  334. führt erst v_clrwk oder auch v_updwk zum Abstellen des Stifts! 
  335.  
  336.          Der Treiber kann in dieser Version nicht alles, was 
  337. möglich ist.
  338.    Weitere Anstrengungen sind u.a. auch von Interessenskund- 
  339. gebungen von  dritter Seite abhängig.
  340.  
  341.           Es kann zu Schwierigkeiten beim direkten Plotten auf 
  342. RS232 kommen. Wahrscheinlich kommt ein bißchen "Dreck" über die 
  343. Schnittstelle, wenn sie konfiguriert wird, und die danach 
  344. folgende Abfrage des Plotternamens wird vom Plotter ignoriert, 
  345. was wiederum vom Treiber als nicht vorhandener Plotter inter- 
  346. pretiert wird. In der vorliegenden Fassung wird allerdings nur 
  347. die Fehlerbox angezeigt. Die einzige Antwort ist 'Plot on!' und 
  348. führt zum Ausführen des Plots. Falls dann keine Zeichnung 
  349. erzeugt wird, muß ins Desktop zurückgekehrt werden.
  350.  
  351.      Über die Skalierungsfunktion kann eine Zeichnung ohne 
  352. Qualitätsverlust auch vergrößert werden. Z.B. kann ein Programm, 
  353. das nur die Koordinaten 600*400 kennt, seine Zeichnung auch 
  354. direkt auf den Plotter geben, wobei der Treiber die Umskalierung 
  355. vornimmt.
  356.  
  357.    vql_attributes() + LASER-C:
  358.    Evtl. gibt es bei Programmen, die mit LASER-C geschrieben 
  359. wurden, Schwierigkeiten, da ich die vql_attributes-Funktion 
  360. anders implementiert habe als in der LASER-Systembibliothek. 
  361. Andererseits entspricht meine Ausführung den Angaben zum VDI.
  362.  
  363. 5.3  -1Treibereinsatz:-0 
  364.      Zunächst etwas zu Treibern schlechthin, soweit ich das 
  365. herausgefunden habe. Ein Treiber ist zunächst ein richtiges, 
  366. vollständiges Programm. Er wird durch den Systemaufruf EXEC 
  367. geladen ohne automatische Ausführung. Der Unterschied zu einem 
  368. "normalen" Programm besteht darin, daß der Treiber beliebig oft 
  369. aufgerufen werden kann über einen direkten Unterprogrammaufruf. 
  370. Dabei ist die Übergabe von Werten an den Treiber beim GEM so 
  371. gelöst, daß der Treiber in Register D1 einen Zeiger auf 
  372. irgendetwas erhält, beim VDI auf den Parameterblock. Das GDOS hat 
  373. zunächst nur die Funktion, den richtigen Treiber zu laden und 
  374. evtl. die zusätzlichen Zeichensätze, wenn v_opnwk durchgeführt 
  375. wird. Der Treiber erhält die Adresse der Zeichensätze im Speicher 
  376. über das contrl-Feld. Da der HPGL-Treiber ohne zu ladende 
  377. Zeichensätze auskommt, kann er auch leicht von einem Programm 
  378. geladen und angesprochen werden.
  379.      Beim Selbstladen ( ohne GDOS ) ist folgende Reihenfolge 
  380. nötig:
  381.  
  382.      a) Laden per 'EXEC ohne Ausführen'. Ergebnis ist ein Zeiger 
  383. auf die Basepage des Treibers. Der Einsprung ist direkt hinter 
  384. der Basepage. ( Länge der Basepage: 256 Byte )
  385.  
  386.      b)  Aufruf per Assemblerbefehl 'JSR' unter Verwendung des 
  387. unter 1. ermittelten Einsprungspunkts. Der 1. Aufruf bewirkt, 
  388. unabhängig von der ausgeführten Funktion, die vom Betriebssystem 
  389. her nötige Initialisierung, wie z.B. die Beschränkung des 
  390. nötigen Speicherplatzes.
  391.      Bem.: Der 1. Aufruf muß vom VDI her v_opnwk sein, der 
  392. letzte v_clswk. v_opnvwk/v_clsvwk werden nicht beachtet.
  393.  
  394.      c. Entfernen des Treibers aus dem Speicher:
  395.       α: Das rufende Programm wird beendet.
  396.      oder
  397.       β: Der Treiber wird per free() entfernt ( TOS-Aufruf!! )
  398.  
  399.  
  400. -1Aufruf einer Treiberfunktion:-0
  401.       Zunächst werden die VDI-Felder intin, intout usw. mit den 
  402. nötigen Daten geladen, und ihre Adressen in dem Parameterblock 
  403. in folgender Reihenfolge abgelegt: control, intin, ptsin, 
  404. intout, ptsout. Die Adresse des Parameterblocks wird in Register 
  405. D1 geladen und der Treiber per JSR ( s.o. ) aufgerufen.
  406.      Der Treiber verändert den Parameterblock nicht, die Adres- 
  407. sen der Felder müssen daher nicht jedesmal neu gesetzt werden. 
  408. Es werden beim Aufruf alle Register auf den Stack des rufenden 
  409. Programms gesichert! Die Reihenfolge der Aufrufe muß auch hier 
  410. eingehalten werden, also zuerst v_opnwk(), usw. . Der Treiber 
  411. akzeptiert Koordinaten im Rasterformat, also Origo "links oben". 
  412. Die Einheit beträgt 1/10 mm. 
  413.      Bei der Verwendung als Treiber wird für Meldungen ein 
  414. primitiver Ersatz von form_alert verwendet. Die Meldung wird 
  415. links oben unter der Menüzeile eingeblendet, allerdings nur, 
  416. wenn diese per CFG-File angefordert wurde. Da die Darstellung 
  417. per TOS erledigt wird, kann der GEM-Bildschirm etwas 
  418. beeinträchtigt werden. Außerdem wird ein Ton entsprechend der 
  419. Bedeutungsschwere erzeugt. 
  420.      Die Definition im ASSIGN.SYS kann z.B. lauten:
  421. 11 hpgl.sys
  422.  
  423. v_clrwk, v_updwk
  424.    Anscheinend entspricht es der Philosophie des VDI, wenn zu 
  425. Beginn einer Zeichnung zunächst v_clrwk ausgeführt wird und am 
  426. Ende als Pendant v_updwk. v_updwk gibt dem Treiber das Signal, 
  427. daß eine von vtl.mehreren aufeinanderfolgenden Zeichnungen 
  428. beendet ist. Entsprechend kann erz. B. veranlassen, daß der 
  429. Plotter den Origo anfährt und den Stift abstellt. v_clrwk bewirkt 
  430. auch eine Initialisierung des Plotters. v_opnwk bewirkt auch eine 
  431. logische Initialisierung des Treibers, u.a. auch ein erneutes 
  432. Einlesen des CFG-Files. Theoretisch können also Zeichnungen auch 
  433. durch clswk/v_opnwk getrennt werden. Dabei wird aber der Treiber 
  434. immer wieder neu in den Speicher geladen, wobei aus unerfind- 
  435. lichen Gründen immer 2-4 Byte verloren gehen. Dieser verlorene 
  436. Speicher findet sich aber wieder, wenn auch das Programm 
  437. terminiert, das den Treiber aufgerufen hat.
  438.  
  439. 6. 
  440.    Wer den Treiber als nützlich empfindet, kann mir seine 
  441. Anerkennung ausdrücken durch Zusenden von DM 20.- . Als Gegen- 
  442. leistung gibt's dann eine leistungsfähigere Version ( z.B. 
  443. mehrere Stifte, größere Formate und noch einige Kleinigkeiten ). 
  444.     Der Teiber ist natürlich, wie jedes Programm, nie fertig, 
  445. und Anregungen oder Hinweise auf Fehler nehme ich gerne ent- 
  446. gegen.
  447.  
  448.  
  449. Änderungen zur Version 1.4 (20.10.90):
  450. 1.   Änderungen in der Speicherorganisation erlauben jetzt 
  451.      mehrere v_opnwk()-v_clswk()-Zyklen. Dabei verliert der 
  452.      ATARI noch 2-4 Byte, Ursache??
  453. 2.   Plotfiles werden jetzt durchnumeriert, max. 99 Files in 
  454.      Folge. 
  455. 3.   Pfeilspitzen sitzen exakt (meistens).
  456. 4.   9 Marker statt 6. Ein Fehler in den Markerroutinen wurde 
  457.      behoben.
  458. 5.   Die max. Feldlaenge für intin und polyline etc. wird jetzt 
  459.      korrekterweise mit je 10000 spezifiziert (Wo gibt's schon 
  460.      einen unendlichen Speicher?) (Ergebnisse von vq_extnd()).
  461. 6.   Textalignment eingeführt mittels HPGL-Anweisung 'CP'.
  462. 7.   HPGL-Anweisung 'RO' (dreht Koord.-System um 90°) wird nicht 
  463.      mehr angewendet.
  464. 8.   HPGL.CFG wird jetzt zusätzlich zum Arbeitsverzeichnis auch 
  465.      im Wurzelverzeichnis des aktuellen Laufwerks gesucht. Ist 
  466.      dem kein Erfolg beschert, so wird in jedem Fall nur ein 
  467.      Warnton ausgegeben und die Normalwerte werden eingesetzt.
  468. 9.   Abschalten der Meldungen (Normalwert). Damit wird der 
  469.      Bildaufbau von grafischen Programmen nicht mehr gestört. 
  470.      Die Fehlermeldungen können für die Fehlersuche wieder 
  471.      eingeschaltet werden.
  472. 10.  Die Warnungsausgabe löscht den Text nach Quittierung durch 
  473.      Überschreiben mit Leerzeichen entsprechend der längsten 
  474.      Zeile.
  475. 11.  Das Anwählen der "Farbe Weiß" führt während einer Zeichnung 
  476.      nicht mehr zum Abstellen des Stifts. Andererseits genügt 
  477.      jetzt nicht mehr, nur "Weiß" anzufordern am Ende einer 
  478.      Teilzeichnung, um den Stift abzustellen, es muß v_vlrwk() 
  479.      oder v_updwk() aufgerufen werden.
  480. 1.4R1:
  481.     Fehler in Ellipsenzeichnen korrigiert
  482. 1.4R2:     
  483.     Gefüllte Flächen werden mit Normalstift umrandet, bisher: 
  484.  Fettstift.
  485.     Plotter fährt bei Zeichnungsende (v_updwk, v_clswk) an 
  486.  Ursprung, d. h. an Koordinate (0,0). Damit können z. B. aufein- 
  487.  anderfolgende Plots übereinander gezeichnet werden.
  488.     Maximalkoordinaten: Es wird jetzt korrekt der 99-Wert 
  489.  geliefert, z. B. x-Bereich 0-10cm entsprechend log. 
  490.  Koordinatenbereich 0-999 (Auflösung (1/10)mm).
  491.     Ein Fehler im CFG-File-Interpreter wurde behoben, der 3 Bomben
  492.  verursachen konnte.
  493.