N a S e : Nun auch Schriften editieren! ======================================= -------------------------------------------------------------------------- Neu: jetzt Version 2.02: 12.03.90 24.10.89 - Ohne Fast-Ram kam es leider beim Konvertieren von Amiga-Fonts zum Aufhängen des Amigas, da ich sträflicherweise Fast-Ram statt MEMF_Public reserviert hatte. Wurde nur bemerkt, weil meine kostbare Golem-Box zur Reparatur war. - macht Ausdrucke jetzt auch mit deutschem Zeichensatz und in Zeichensatz 1 (kursiv), wenn die DIP-Switches falsch stehen - funktioniert getestetermassen auch mit dem P6 plus; Vorraussetung: Puffer über Drucker - SetUp Menü auf 48k reduziert und (one 256 Char Set) eingestellt (s.u.) sonst Fehler: dl. - druckt jetzt LQ10, wenn man sofort nach dem Starten eine Ascii Tabelle ausdruckt - ist jetzt Public - Domain. (Einsendung zum Amiga Magazin & Konsorten war ja wohl der größte Bug in meinem Programm.) 16.11.89: - NaSe ist jetzt kompilierbar und kompiliert auf dieser Disk. Wichtig: mit der gegenwärtigen, ersten Version meines GfaBasic-Compilers läßt sich das erzeugte Programm nur vom Cli aus starten, da sonst das Menü nicht aufgebaut wird. Falls jemand dazu einen Tip hat: bitte Kontakt aufnehmen. Steht man dann einmal ohne Menü da, läßt sich das Programm mit der DEL - Taste abbrechen, damit man wenigstens nicht neu booten muß. Für diese Version möchte ich keine Verantwortung bzgl. Abstürzen und Datenverlust übernehmen, wer sicher gehen will, nimmt im Augenblick noch die Interpreter-Version. (Ich will ein Compiler-Update!) 21.11.89: - Auf mehrfachen Wunsch von Menschen, die bei Ihrem Drucker bei Funktion des LF- Codes nur LF und kein CR eingestellt haben (Bei P6 DIP-Switch SW1 / 7) wird beim AscII - Tabellen - Drucken jetzt CR und LF vom Programm gesendet ---> Diese Menschen kriegen jetzt wie alle anderen auch eine Tabelle. 12.03.90 - Auf mehrfachen Wunsch: Beim Verlassen der NaSe jetzt wieder die Workbenchfarben von vorher - Toleranzgrenze bei der Schriftenkonvertierung vergrößert: Die einzelnen Buchstaben dürfen jetzt 4 * breiter sein als im Fontfile (xsize) steht. - für den Compiler optimiert, kommt jetzt mit 60 K Speicher weniger aus. - Läßt sich jetzt endlich (dank des Compiler Updates) fehlerfrei (zumindestens soweit sichtbar) compilieren und läuft auch schneller. (Compiler-Version 3.01) -------------------------------------------------------------------------- __________________________________________________________________________ Bemerkungen zum P6+: Beim P6 plus müssen über das Setup - Menü 2 Kleinigkeiten geändert werden. 1.) Main Menu Punkt 1. (Print Mode Settings) Im Untermenü Print Mode Settings muß bei Menüpunkt 7. (Download Char Sets) Punkt 2. (One 256 Char Set) eingestellt werden. 2.) Main Menu Punkt 4. (Interface Settings) Im Untermenü Interface Settings muß bei Menüpunkt 1. (Buffer Capacity) Punkt 2. (48 KB) eingestellt werden. Viel Spaß! Bemerkung z. P2200: Auch hier muß die Puffer - Kapazität auf 4K (-- Vier --!) beschränkt werden. INTERFACE - Settings Punkt 2. Buffer Capacity auf 4K. __________________________________________________________________________ Anleitung zum Schrifteneditor "N a S e" Version 2.0 für P6 Der NEC P6 bietet die Möglichkeit, vom Benutzer definierte Sonderzeichen und / oder Schriftsätze vom Computer in das RAM (Puffer) zu laden mit diesen Zeichen zu drucken. Um dieses Feature nutzen zu können, bedarf es eines Editors, mit dem der "Benutzer" seine Sonderzeichen oder Schriftsätze definieren und zum Drucker übertragen kann. Dieser Editor existiert jetzt. Anwendungsbeispiel: Eine neue Schrift wird entworfen, editiert und abgespeichert. Dann kann man sie jederzeit in den Editor laden, zum Drucker übertragen, den Editor verlassen, ein Textprogramm starten, den Drucker manuell auf die Benutzerschrift (a) stellen und jeden Text in der neuen Schrift drucken. Um den Editor sinnvoll nutzen zu können, kommt man nicht um die Lektüre des Druckerhandbuchs betreffend der ladbaren Zeichensätze umher (Kapitel 12). Bei der Definition der Zeichensätze müssen bestimmte Sachen beachtet werden: 1) Die Matrix: Es existieren verschiedenene Matrixen für Draft , LQ 10 cpi, LQ 12 cpi und Proportionalschriften. Der Editor wird auf die Korrektheit der Eingaben achten, wichtig ist eine Klärung der Begriffe und Bezeichnungen (A entspricht Anzahl der (Druck-) Pixel links vom Zeichen, B entspricht Anzahl der Pixel des Buchstabens (Breite), C enstpricht Anzahl der (Druck-) Pixel rechts vom Zeichen, H entspricht der Höhe des Zeichens bzw. der "Base Line", wie es im Handbuch genannt wird. 2) Die Pixel (Druckpositionen) Beim Zeichnen des Buchstabens im Editor sind die Vorschriften des Handbuchs bezgl. des horizontalen Abstands zwischen den einzelnen Druckpositionen zu beachten (Kein Berühren zweier benachbarter Punkte in horizontaler Richtung, immer einen Zwischenraum lassen). Der Editor nimmt die Punkte auch direkt nebeneinander an, der Drucker druckt jedoch dann (lt. Handbuch) nur jeden zweiten Punkt. Anwendungsbereiche des Programmes Mit diesem Programm lassen sich Schriftsätze für den Drucker wandeln und erstellen, die man abspeichern kann und dann jederzeit zur Hand hat, um sie in den Drucker zu laden und dann z.b. mittels einer Textverarbeitung zu benutzen, um mehr Vielfalt in die Schriften und Schriftarten des Druckers zu bringen. Bestimmte Textverarbeitungen unterstützen die Benutzung von Druckern mit Font - Cartridges oder von Druckern mit mehreren eingebauten Schriften z.b. Letter gothic o.ä.. Bei diesen Textverarbeitungen lässt sich dann der Treiber für den P6 so abändern, daß man Zeilen, Abschnitte oder ganze Briefe mit der geladenen Schrift schreiben kann. Als Beispiel hierfür wäre z.b. "Beckertext" zu nennen, wo man die geladene Druckerschrift nach Abänderung des Treibers direkt anwählen kann, die Änderung des Treibers ist weiter unten beschrieben und ist im Prinzip auf jede Textverarbeitung anwendbar, deren Druckertreiber editierbar ist. (Mir fällt da auf Anhieb noch Word-Perfect und UBM - Text ein.) Eine andere Anwendung wäre z.b. die Definition einzelner Sonderzeichen, die man benötigt, so kann man z.b. statt des § ein Pi definieren, und es dann relativ einfach mit einer Textverarbeitung benutzen: Im Editor wird ein Pi anstelle des § gemalt, daß man mittels "Zeichensatz > Drucker" in den Drucker bringt, dabei werden gleichzeitig die restlichen, nicht neu definierten Zeichen aus der normalen Druckerschrift kopiert, sodaß sich ein kompletter Zeichensatz (mit pi statt §) im Ram -Bereich des Druckers befindet. Dann kann man entweder im Treiber des Druckers den Initialisierungs-string so ändern, daß bei der Initalisierung, die die Textverarbeitung beim Drucker vornimmt, die Schrift "A" eingestellt wird (also "Userdefined Charset 1") oder man kann, wenn die Initialisierung gelaufen ist (meist nach der ersten Seite) den Drucker manuell auf "A" stellen und hat sein pi an den Stellen, wo im Text ein § steht (ein Blatt Verlust). Vereinbarungen: Sämtliche Angaben über Ascii - Codes beziehen sich auf die Ascii - Tabelle des Druckers, so wie sie im Handbuch steht und so wie sie (Doitscher Zeichensatz gewählt) das Programm ausgibt. Das ist deshalb so, weil der Amiga die deutschen Sonderzeichen (Umlaute: äÄöÖüÜ sowie z.b §) in seltsamsten Bereichen (196,246,220,214... etc.) liegen hat, aber nicht im Bereich der "normalen" Buchstaben und nicht so zusammenliegend wie der Drucker (35,36,64,91-94,123-126). Beim P6 wird der kursive Zeichensatz gewählt, nicht der IBM - Zeichensatz (Charset 2). Ich habe es nicht weiter verfolgt, IBM - Sonderzeichen umzudefinieren, weil ich hier einen Amiga habe und Prioritäten bei den Buchstaben gesetzt habe, außerdem: wer schreibt schon Arbeiten mit Integralzeichen oder exotischen griechischen Buchstaben auf dem Amiga und vor allen Dingen: mit welcher Textverarbeitung überhaupt? Ich benutze eine DIP - Switch - Einstellung beim Drucker, die ich als richtig für die Zusammenarbeit mit dem Amiga ansehe und mit der ich keine Probleme habe: Dip-switch Stellung Funktion SW1 1 0 1 Zoll Perforationssprung aus 2 1 Seitenlänge Din A 4 3 0 - 4 1 Draft 10 cpi beim Einschalten 5 0 Darstellung der Null: O nicht 0 6 0 Linker Rand 1 (unwichtig für p6) 7 0 LF= Wagenrücklauf + CR 8 0 CR= nur CR SW2 1 0 \ 2 1 \ 3 0 Sonderzeichen : Deutsch 4 0 / 5 0 Italic Zeichensatz, nicht IBM 6 0 Nadelbestromung ein (soll normal sein) 7 1 Select in Signal unwirksam 8 0 Autofeed XT signal wirksam (?) Schwierigkeiten könnte es bei SW1 7/8 geben, da bei anderer Stellung die Ascii - tabelle keine Tabelle ist, alles andere steht hoffentlich so oder so ähnlich. Wo wir gerade beim Drucker sind habe ich noch eine kleinere Anmerkung zu machen bezgl. des Resets an dem mich 2 Sachen stören : Gibt man dem Amiga den Reset, wird der Drucker mit resettet (samt Lüfter, Einstellung und allem), obwohl ich dafür eigentlich keinen Grund sehe. Schaltet man den Amiga aus und vergisst, den Drucker auszuschalten, so rattert der Drucker nach kurzer Zeit gewaltig los, weil er ständig seinen Kopf nach links zum Anschlag bringt. Dies liegt daran, weil nach dem Ausschalten des Computers die Spannung an den Ausgängen des Druckerports langsam abfällt. Irgendwann liegt auch die Reset-leitung auf low, sodaß der Drucker meint, daß er ständig resettet wird. Abhilfe (wen es stört): man trennt im Stecker am Amiga einfach die Reset-Leitung ab oder setzt einen Schalter rein. (Pin 25 bei A-1000) Vorteil: beim Reset bleibt der Drucker ruhig und nach dem Ausschalten auch Nachteil (?): Kein Reset beim Amiga-Reset, muß softwäremässig gemacht werden (Warum eigentlich nicht ein kleines C - Programm im c: Verzeichnis ?) oder man muß ihn bei Bedarf kurz aus und wieder anmachen. Das Problem mit dem Reset betrifft natürlich nur die Leute, in deren Druckerkabel das Reset - Signal verbunden ist. Das Programm Nach dem Starten stehen verschiedene MenÜpunkte zur freien Wahl: I) ZEICHENSATZ 1) Laden (auch über rechte Amiga-Taste + l) Hiermit kann ein vorher definierter Zeichensatz geladen werden. Die mit dem Editor definierten Zeichensätze besitzen die Endung ".p6" Dem Editor wird die Matrix, Schriftart etc. mitgeteilt, sodaß man sofort z.b. editieren kann. 2) Speichern (auch über rechte Amiga-Taste + s) Hier wird der aktuelle Zeichensatz samt Matrix, Schriftart etc. gespeichert. Die Endung ".p6" wird, falls nicht schon vorhanden, angehängt. 3) Editieren (auch über rechte Amiga-Taste + e) Falls noch keine Schriftart gewählt ist, wird dem Benutzer jetzt eine Entscheidung abverlangt: erstens ist die Schriftart zu wählen (Draft, Lq 10 cpi, Lq 12 cpi oder Proportional), dann kann man die Matrix der Zeichen festzulegen (Also A,B,C und H, siehe auch oben) oder die voreingestellten Werte übernehmen. Es erscheint jetzt ein Auswahlfenster für den Ascii-Code des zu editierenden Buchstaben, die Auswahl geschieht über Maus oder durch direkte Eingabe nach Anklicken von "Direkte Eingabe", wodurch auch Ascii- codes außerhalb vom Buchstabenbereich bis hin zu Steuercodes (weiß der Henker, wofür das gut sein soll, aber vielleicht brauchts ja jemand) umdefiniert werden können. Schon definierte Zeichen des Buchstabenbereichs erscheinen Rot. Das folgende Gitter ist zum Eintragen des Aussehens des zu definierenden Zeichen gedacht. Bei gewählter Schriftart Proportional muß man nach dem Übernehmen des Buchstabens nocheinmal die individuelle Matrix dieses ganz besonderen Buchstabens eingeben / übernehmen. Seit der Version 2.0 dieses Programms kann man praktischerweise mit der Space-taste zwischen "Punkt setzen" und "Punkt löschen" umschalten. Es wird jedoch wahrscheinlich auch in der Version 9.0 (oder doch, vielleicht) keine Möglichkeit zum Flächenfüllen oder füllen mit perspektivischen Mustern geben, also zielt mal ein bißchen (Nieder mit der Sprühdose, ob mit oder ohne FCKW) Man entkommt aus dem Editiermodus, indem man im Auswahlfenster "Editieren beenden" anwählt 4) Konvertieren (auch über rechte Amiga-Taste + k) Seit der Version 2.0 dieses fabelhaften Editors existieren Prozeduren, mit denen man Amiga-Fonts (das sind diese komischen Verzeichnisse mit den Zahlen drin) in Druckerfonts konvertieren kann. Nach langem Wälzen des Rom Kernel Reference Manual (Libraries and Devices) und mittelgroßen Verzweiflungsprogrammen entstanden die Prozeduren "getfont" und "fontkonvert". Hiermit können "normale" Schriften in Draft-, LQ 10-, und Proportionalschriften für den P6 gewandelt werden, Proportional- schriften lassen sich (sinnvollerweise) nur in Proportionalschriften wandeln. Bedienung: Nach Anwahl dieses MenÜpunktes erscheint der bekannte Filerequester und bittet um Auswahl einer Schrift. Das wäre bei Topaz/11 das File namens "11" im Verzeichnis Fonts:topaz/ . Also bitte nicht topaz.font, sondern das File, wo das Aussehen der Fonts gespeichert ist. Als nächstes ist bei normalen Fonts die Schriftart (also draft,lq10,lq12 oder Proportionalschrift) zu wählen. Jetzt erscheint wieder die Aufforderung zum Festlegen der Matrix (Also o.k. anklicken oder nach Anklicken von "Ändern" A,B und C festlegen (s.o).). Bei Proportionalschriften erscheint diese Aufforderung sofort, da sie immer in Proportionale Druckerzeichensätze konvertiert werden. Noch ein Wort zur Matrix: Die Proportionalschriften auf dem Amiga sind teilweise sehr eng, d.h. zwischen den Buchstaben ist sehr wenig Zwischenraum gelassen (CharSpace = CharWidth, Kerning = 0 oder 1). Da das auf dem Drucker ziemlich beschissen aussieht, geht das Programm bei der Konvertierung so vor: Der Grundabstand zwischen den Buchstaben auf dem Drucker ergibt sich aus A + C (welche ja bei der Grundeinstellung des Druckerlayouts zu bestimmen sind. Dies gilt für Lq,Draft und Proportionalschrift. Dazu kommt bei Proportionalschriften der Abstand, der in der Amigaschrift durch Charspace, CharWidth und Kerning definiert ist und dann entsprechend dem Breitenvergrößerngsfaktor b.f auf den Drucker umgerechnet wird. (Siehe Rom-Kernel Libraries & Devices, Seite 207; Beschreibung der Prozeduren getfont, fontkonvert.) Bei "normalen" Schriften, die gewandelt werden, sind alle Buchstaben ja gleich breit definiert. Trotzdem ist der Zeichenkörper vom I z. B. nur 2 Pixel breit, während das O sich z. B. über die ganze Zeichenbreite von z. B. 8 Pixel erstreckt. Bei "normalen" Schriften kommen also zusätzlich die als Abstand in der Schrift definierten Buchstabenzwischenräume zu A + C dazu. (Langer Rede kurzer Sinn: Bei zu großen Zwischenräumen im Druckbild A, C verkleinern (Bei der Festlegung des Druckerlayouts), bei zu kleinen Zwischenräumen A, C vergrößern, nochmal konvertieren und probedrucken, solange bis die Abstände einigermaßen passen. Wenn es immer noch zu kompliziert ist : einfach o.k. drücken, meistens passt es.) Die beiden Prozeduren versuchen nun, alle lesbaren Zeichen im Bereich von (ascii) 33 bis 126 und die Umlaute auszulesen, zu vergrößern/ verkleinern und zu übernehmen. Dies dauert seine Zeit, ist jedoch jederzeit durch gedrückt halten der linken Maustaste abzubrechen. Ich denke, daß die Wandlungszeit nicht zu lange ist, da man im Grunde Zeichensätze nur einmal konvertiert. Sinnvoll ist es, den dabei entstehenden P6 - Zeichensatz als erstes nach Beendigung der Konvertierung auf Diskette o.ä. abzuspeichern. Anmerkung: Diese beiden Prozeduren haben mich sehr viel Zeit gekostet, da es sehr sehr viele Zeitgenossen nicht für notwendig halten, sich an die Konventionen der Amiga-Zeichensätze zu halten. Da werden Zeichensätze mit xsize=8 abgespeichert, in denen 30 Pixel breite Buchstaben definiert sind, Umlaute werden als definiert eingetragen, obwohl an der entsprechenden Stelle nur Müll steht, und das nicht nur bei Public-Domain - Schriften, sondern auch in ultrateuren Video oder DTP - Schriften. Fazit ist, daß diese Prozeduren meine ca. 80 Schriften, die ich mit der Zeit für sammelnswert hielt, ohne größere Fehler oder gar Programmabbrüche anstandslos konvertiert. Auch 2- oder 4- farbige Colorfonts werden konvertiert, jedoch nur die erste Bitmap. Wie dieser Menüpunkt gedacht ist: Bei der Konvertierung von Amiga-Fonts sind nur wenige Schriften sofort "druckreif", d.h. benutzbar oder auch zumutbar. I) Bei nahezu allen Schriften, die nicht auf der Workbench sind, fehlen die Umlaute. Diese sind jedoch sehr einfach zu besorgen. In der neu geschaffenen Menüleiste "Zeichen" existiert der Menüpunkt "kopieren", mit dem ganz einfach z.b. das a nach ä kopiert werden kann, die beiden Punkte kann ja wohl JEDER selber malen. (Kleiner Tip am Rande: das ß lässt sich meist wunderbar aus dem großen B formen. II) Manche Zeichensätze sehen einfach beknackt aus. Wer versucht, aus "Broadway/56" eine Super Draft-Schrift zu machen, verschwendet seine Zeit. Garnet/9 wird auch keine gute Proportional- schrift werden. Am sinnvollsten konvertiert man Schriften, die im Größenbereich von 12-35 liegen, bei kleineren wirds eckig, bei größeren wirds oft eng und unlesbar. III) Nur bei ziemlich wenigen Amiga-fonts wird man nach der ersten Ascii-tabelle sofort entzückt aufschreien "Das ist ja absolute Korrespondenzqualität!". Meist finden sich bei bestimmten Buchstaben eben noch Rundungen, die NOCH runder sein könnten. Also: die entstehenden Druckerzeichesätze sind gedacht als VORLAGE oder ANHALTSPUNKT für eine Schrift, die eine Konkurrenz zu den eingebauten Schriften oder den Schriften aus Font-Cartridges anderer Drucker sein kann. Nach meinen Erfahrungen würde ich nur jede 10. gewandelte Schrift auf Anhieb in einem Brief oder Ausdruck verwenden, der nicht nach NLQ oder Draft oder Printshop aussehen soll, sondern nach LQ. Trotzdem kann man ziemlich einfach mit wenig Aufwand aus den konvertierten Schriften astreine Zeichensätze machen, wenn man sie noch mit dem Editor bearbeitet. IIIa) Die Konvertierroutine weiß ja nix von der Beschränkung, daß man laut Druckerhandbuch nur jeden 2. Pixel in horizontaler Richtung setzen darf und setzt Punkt an Punkt. In sehr, sehr wenigen Fällen geschieht es, daß der Drucker Punkte an Stellen setzt, wo laut Editor keiner ist. Meterlange HEX-Listings haben mich zu der Überzeugung geführt, daß diese ziemlich ominöse Vorschrift doch ihren Sinn hat: Der Drucker macht sonst manchmal Mist. (Obwohl richtig übertragen wird, kommen falsche Punkte) Dies geschieht wie gesagt aber sehr selten (in ca. 4 von meinen 80 Schriften fiel es mir auf) und ist auch leicht zu beseitigen, wenn nicht der ganze Zeichensatz übersäht ist (1 von 80), indem man die Buchstaben, wo ein falscher Punkt ist entsprechend der "2 Pixel Abstand "-Regel gestaltet. Ansonsten kann der Drucker anscheinend mehr, als er vorgibt: bei Schriftsätzen mit ziemlich breiten Strichen druckt er sogar jede Zeile 2 mal und setzt die fehlenden Punkte. Fazit: Die Konvertierroutine hat meine Erwartungen voll übertroffen, kein Vergleich zwischen guten konvertierten Amiga-Fonts und einem entsprechenden "Viza - Write" oder "NotePad" - Ausdruck. Man muß jedoch noch ein klein wenig "Arbeit" hineinstecken, auf alle Fälle : Das Werkzeug ist jetzt da. 5) Reset (auch über rechte Amiga-Taste + r) Mittels dieser Option können alle bisher getätigten Aktionen wie Wahl der Schriftart, der Matrix, und des Aussehens der Buchstaben mit einem Schlag vernichtet werden. 6) Ende (auch über rechte Amiga-Taste + q) Ende. Löscht alle Variablen, macht das Fenster zu (Erna, es zieht!) und gibt einen astreinen Reset an den Drucker, ohne jedoch den Puffer mit den kostbaren Benutzerzeichen anzutasten. Jetzt kann man z.b mit den gerade editierten original sambduktanischen "Sonderzeichen" mit Beckertext drucken, indem man nach der ersten Seite manuell am Drucker die Font "a" wählt. (Weitere,bessere Tips zur Benutzung: s.o.) 7) Info (Nur durch mühsame, zeitraubende Mausauswahl zu erhaschen) Dieser bestens funktionierende Zeichensatzeditor stammt von: (Copyright: ) Henrich Deppenmeier Turnerstr. 50 4800 Bielefeld 1 Tel.: 0521/177755 (wer hat da gelacht?). Bei Gefallen wird um Spenden auf das Konto 732 149 bei der Sparkasse Bielefeld (BLZ: 480 501 61) gebeten. II) DRUCKER 1) Druck (auch über rechte Amiga-Taste + d) Dieser Menüpunkt ist ein Flag. Wird er zum ersten Mal angewählt, so wird der Drucker initialisiert, bei (evtl.) gewählter Schriftart wird der entsprechende druckerinterne Zeichensatz in den Ram - Bereich kopiert und bei evtl. geladenen oder editiertem Zeichensatz werden die bereits definierten (und nur diese!) Zeichen des Benutzer- Zeichensatzes zum Drucker übertragen, sodaß sich auf jeden Fall ein kompletter Zeichensatz im Drucker befindet. (Entweder, ein Zeichen ist definiert und dann auch durch das umdefinierte Zeichen ersetzt oder es befindet sich eine Kopie des Originalzeichens im Benutzer- Bereich. Ist Druck angewählt, so wird nach dem Editieren eines Zeichens das Zeichen in den Benutzerzeichensatz des Druckers übertragen und in Originalgröße und vergrößert ausgedruckt. Ich warne davor, den Requester (Drucker anschalten + selektieren) mit Return zu beantworten, wenn kein Drucker angeschlossen ist, da der Rechner dann circa 10 - 12 Jahre auf das Acknowledge-Signal des nicht angeschlossenen Druckers warten wird. Spätestens seit der Version 2.0 dieses Programms glaubt man auch nicht mehr, daß der Computer abgeschmiert ist, wenn man die "Select"-Taste am Drucker nicht gedrückt hat: statt langem, merkwürdig geduldigen Warten auf die Select - Taste erscheint jetzt vor jedem Druckeransprechen ein netter Requester, der zum Selectieren aufruft, wenn der Drucker nicht selectiert ist. (Toller Trick, siehe auch Procedure selecttest, fast wie beim C-64, diese genialen Peeks, wah?) 2) Ascii-Tabelle drucken / Def.- Zeichen (auch rechte Amiga-Taste + b) Dieser Menüpunkt wirft eine wunderschöne Ascii - Tabelle mit dem neu definiertem Zeichensatz aus, für den Proportionalzeichensatz wird kein Ausdruck garantiert, bei dem die Zeichen untereinander stehen. 3) Ascii-Tabelle drucken / Normal - Zeichen (auch rechte Amiga-Taste + n) Siehe oben, nur mit den original Zeichen des normalen (Kursiv-) zeichensatzes des P6. Dient zum Rumkrakeln im Zeichensatz, ankreuzen, zerreißen (Bitte ins Altpapier) und zur Information (auch im Druckerhandbuch in abgewandelter Form zu finden). Es ist der Sonderzeichensatz mit den Umlauten (äöüÄÖÜß) gewählt. (Im Programm durch @druck(deutsch$)) 4) Zeichensatz > Drucker (auch über rechte Amiga-Taste + c) Dient zum Kopieren aller definierten Zeichen des aktuellen Zeichen- satzes zum Drucker z.b. nachdem die Option "Druck" längere Zeit inaktiv war oder wenn man sich nur in diesem Programm befindet, um sich kurz einen Zeichensatz für den Brief an die Firma "ECO - Soft" (betr.: Weitergabe oder Verkauf meiner Adresse an die Provinzial-Versicherung) in den Drucker zu hieven. (Eine wahre Geschichte, zurückverfolgbar anhand eines Schreibfehlers meiner Adresse). III) Zeichen Dieses Menü ist nur erreichbar, wenn man einen Buchstaben editiert 1) Verschieben > Hiermit kann man den gerade editierten Buchstaben nach rechts verschieben. Nach Anwahl erscheint ein Fenster, in dem man aufgefordert wird, die Anzahl der Pixel, um die der Buchstabe verschoben werden soll, einzugeben. 2) Verschieben < Hiermit kann man den gerade editierten Buchstaben nach links verschieben. Nach Anwahl erscheint ein Fenster, in dem man aufgefordert wird, die Anzahl der Pixel, um die der Buchstabe verschoben werden soll, einzugeben. 3) Verschieben ^ Hiermit kann man den gerade editierten Buchstaben nach oben verschieben. Nach Anwahl erscheint ein Fenster, in dem man aufgefordert wird, die Anzahl der Pixel, um die der Buchstabe verschoben werden soll, einzugeben. 4) Verschieben v Hiermit kann man den gerade editierten Buchstaben nach unten verschieben. Nach Anwahl erscheint ein Fenster, in dem man aufgefordert wird, die Anzahl der Pixel, um die der Buchstabe verschoben werden soll, einzugeben. Zu 1-4: die Verschiebung bezieht sich grundsätzlich auf die Position, in der der Buchstabe bisher gespeichert ist. Der Buchstabe wird nach Anwahl verschoben wieder eingelesen, um ihn in der verschobenen Position abzulegen, muß man dann "Buchstabe übernehmen" anklicken. 5) Löschen Nach einer Sicherheitsabfrage wird der Buchstabe gelöscht, d.h. als nicht definiert gewertet. 6) Kopieren Um einen Buchstaben an eine beliebige Stelle zu kopieren, wählt man "Editieren", wählt den Buchstaben, wohin kopiert werden soll(z.B.: ä), betätigt "Kopieren" und wählt dann den Buchstaben, der an diese Stelle kopiert werden soll.(z.B.: a). Benutzung des Programms zusammen mit Beckertext Möglichkeit a) (Nicht so ganz toll) In den Treiber für P6 (nec_px.prt) müssen folgende 2 Zeilen zusätzlich aufgenommen oder verändert werden: \F0 27,37,0 * Benutzerdefinierte Schrift aus \F1 27,37,1 * Benutzerdefinierte Schrift ein (Normalerweise ist \F0 und \F1 auch schon genauso belegt, da es jedoch scheinbar mehr als 3 verschiedene Versionen gibt, nochmal im Klartext. Wer genau wissen will, wie das alles funktioniert, den verweise ich auf das Handbuch Seite 266 ff.) Damit wird die Benutzerdefinierte Schrift auf die Druckerschrift "Font 1" im Menü "Schrift" / "Druckerfont" gelegt, "Font 0" entspricht demgegenüber der normalen Schrift. Hat man jetzt einen Text geschrieben, von dem man einen Absatz in der anderen Schrift schreiben will, muß man den Absatz markieren und dann im Menü Schrift "Font 1" bei Druckerfont wählen. Dabei ist zu beachten: Hat man eine Proportionalschrift geladen, muß der Absatz, der in der anderen Schrift geschrieben werden soll, auch in PS geschrieben sein (Menü "Schrift" unter "Zeichendichte" "Proport." anwählen). Ebenso sollte bei einer Lq 10 Schrift 10 cpi angewählt sein, bei Lq 12 entsprechend 12 cpi. Man kann bei Lq Schriften jedoch auch mit einer 12 cpi Schrift in 10 cpi schreiben und umgekehrt. Auch 17 Cpi geht. Innerhalb dieses Absatzes kann man nun mit der neuen Schrift alle Attribute benutzen, die Beckertext bietet, sei es Fettschrift, Unterstreichungen,etc. Einschränkung: benutzt man super- oder subscript, wird dies in der normalen Druckerschrift gedruckt. Hat man den Absatz beendet, MUß man die nächstfolgende Textzeile in der Druckerfont 0 (Menü: Schrift/Druckerfont/Font 0) schreiben, damit der Drucker den Befehl erhält, wieder auf die interne Schrift umzusteigen. Daraus erfolgt auch schon eine (wie ich finde) wichtige Einschränkung: Die selbstdefinierte Schrift lässt sich nur über den Raum von mindestens einer Zeile benutzen. Einzelne Wörter in einer anderen Schrift sind also auf diese Weise ausgeschlossen. Dafür gibt es jedoch: Möglichkeit b) (besser) Die Funktion "rot" im Menü "Schrift" unter "Schriftart" wird ersetzt: Bisher ist sie im Treiber als "Lq ein / aus" definiert (ist ja wohl auch ein Witz, weil dann einige Sachen im Handbuch nicht funktionieren, z.b. Anmerkungen zu Masken in rot) und wird jetzt durch "Benutzerdefinierte Schrift ein /aus" ersetzt : Treiberänderung: \4+ 27,'%',1 * Benutzerdefinierte Schrift ein \4- 27,'%',0 * Benutzerdefinierte Schrift aus jetzt ist die geladene Schrift einfach ein Schriftattribut und somit lassen sich einzelne Wörter / Absätze etc. in der geladenen Schrift schreiben, indem man sie einfach in "rot" schreibt. Die neue Schrift lässt sich natürlich wieder bestens mit Fettdruck, Unterstreichungen etc. mischen. Einschränkung: Es muß bei Proportionalschrift wieder in "Proport." bzw. sonst in 10/12 cpi geschrieben werden und sub/supersript geht nur in Original- P6 - schrift. Ich persönlich bevorzuge Möglichkeit b), andere Textverarbeitungen, bei denen der Treiber editierbar ist sollten auch ganz gut zu verändern sein (Papier kaufen, Probieren, Probieren, Probieren). und jetzt: Das "Who is Who" des Programmes Proceduren und ihre Funktionen: init: Festlegen der Steuerzeichenstrings für p6. Die Funktionen der entspr. Strings sind aus dem Namen zu entnehmen. bein$ = Benutzerdef. Zeichensatz ein. Ansonsten: Window auf, Farben an, Variablen gedimmt. anfangsauswahl: Wahl der Schriftart (Draft,lq10,1q12, oder ps), setzen der entsprechenden Parameter (a%,b%,c%,h%,maximale Breite der Buchstaben samt Zwischenräumen (max.x%) sowie nur des Buchstabens (max.b%),String für das Einschalten der richtigen Schrift geschieht in den proceduren Draft: für Draft Lq10: für Lq 10 cpi Lq12: für Lq 12 cpi Ps: für Proportionalschrift char_edit: Besorgt den Bildschirmaufbau und die Mausabfrage für das Editieren der einzelnen Buchstaben. fill: füllt das Kästchen des Gitters mit den Koordinaten x,y mit der Farbe f übernehmen: Besorgt das richtige Einsortieren der Punkte des neu definierten Zeichen in die Bits des Arrays d|(asci,....). Asci ist der ascii-code des soeben definierten Zeichens, in d|(asci%,117)...d(asci%,119) stehen A,B,C, bei Ps wird die Breite des soeben definierten Zeichens festgestellt, das Zeichen nach links verschoben einsortiert und nach A,B und C gefragt buchstabendruck: drückt den neu definierten Buchstaben in normal und groß aufs papier druck: es gibt 2 Möglichkeiten, Zeichen zum Drucker zu schicken: 1. PRT: Vorteil: Wandlung von Amiga-ascii zu Drucker-ascii findet über den Treiber statt. Nachteil: Der Treiber killt die ganzen lieben Steuercodes 2. PAR: Vorteil: Steuercodes kommen ganz klasse beim Drucker rüber Nachteil: Die Wandlung von Amiga-Ascii in Drucker-Ascii findet nicht statt, müssen wir selber für sorgen Ich benutze fast immer Par: und sorge mittels eines Unterprogramms (Hier: convert_drucker (ascii_code%)) für Wandlung, druck zerlegt dabei die Strings. ascii_tabelle: Wie der Name schon sagt, drucken wir hier ein Assembler- Listing des Walzentreibers aus, parameter$ wird dabei vorher zum Drucker geschickt. drucktest: Fragt, ob ein Drucker da ist, falls ja: Druck wird gesetzt, die Daten im Benutzerbereich aktualisiert, zurückgemeldet, daß der Drucker dran und bereit ist (Drucktest!=true) asci_Auswahl:Fenster auf, Ascii-Code rein, Fenster zu, Ascii-Code zurückmelden. convert_Amiga(a%): Wandelt Ascii-Code a% in Amiga-Code für dieses Zeichen convert_drucker(a%): Wandelt Amiga-Code a% in Druckercode für dieses Zeichen gitter (breit%): Zeichnet Gitter zum Editieren oder zum Festlegen der Standardmatrix am Anfang matrix: Dient zum Festlegen der Standardmatrix der Zeichen, zur Eingabe von A,B,C,H einlesen: Liest das Bitfeld eines schon definierten Zeichens beim erneuten Editieren in das Gitter ein, besorgt Verschiebungen für die Menüpunkte III) 1-4 menuauswertung: Wertet die Tageszeit und das Wetter sowie die Luftfeuchtigkeit bei voll besetzter Badewanne aus. reset: reset. speichern: speichert den aktuellen Zeichensatz, indem das komplette array d|(255,120) gespeichert wird. Vorteil: schnell,einfach Nachteil: auch bei nur 2 definierten Zeichen kommt auf diskette ein File mit 30976 Bytes raus Speichern mit byteweiser Verarbeitung dauerte bei ungünstigen Bedingungen (viele Buchstaben def.) ca 2,5 min. Laden: lädt den neuen Zeichensatz, indem das komplette Array d|(255,120) Speicherbereichsmäßig geladen wird. Macht alles fürs editieren bereit (Wahl der Matrix, Schriftart, etc.) Menu_an, Menu_aus, Menu2_an, Menu2_aus: Besorgt das Ein- und Ausschalten der Menüs, damit auch immer nur die menüs erreichbar sind, die in Funktion sind. selecttest: testet, ob der Drucker selectiert ist (select-Taste). Fragt direkt im Portchip den Zustand der Select-Leitung ab. Bittet um Drücken der Select-Taste, falls der Drucker nicht selectiert ist. getfont: nette Prozedur. versucht, angewähltes Fontfile zu laden, testet, ob es auch ein Font ist und holt sich dann die wichtigen Werte diese Schrift betreffend raus. Bestimmt bei Proportionalschriften den Buchstaben mit der größten Breite, errechnet Vergrößerungsfaktor und bestimmt, welcher Bereich von Zeichen gewandelt wird. Die Variablen sind ähnlich benannt wie im Rom-Kernel (libraries & devices, Seiten 204-211). Das ganze geht mit sehr viel peek & poke, einzige Alternative wäre gewesen, die Font über Betriebsystemaufrufe zu setzen und dann die Parameter auszulesen. Vergrößern/Verkleinern wäre aber wohl schwierig gewesen. (Zuviel Aktion, deshalb auf althergebrachter, Basic-bewährter Methode) fontkonvert: auch ne nette Prozedur. es wird aus der höhe der Schrift (ysize%) der Höhenvergrößerungsfaktor h.f ,aus der Breite (ysize%) oder der größten Zeichenbreite (bmax%) je nach Schrift der Breitenvergrößerungsfaktor b.f errechnet (schon in proc. getfont) Für jedes Zeichen im zu wandelnden Bereich konvanfang% - konvende% wird die Bitmap (das Aussehen) des Buchstabens (sofern nicht völlig wirre Daten) grafikmässig auf den Schirm gebracht, das Gitter drübergelegt und festgestellt, ob die einzelnen kästchen gesetzt sind. Dies geschieht ganz einfach, indem der Punkt in der Mitte des Kästchens abgefragt wird. Dabei kann es natürlich vorkommen, daß Kästchen gesetzt werden, die man normalerweise nicht setzen würde, nur weil der Punkt in der Mitte gesetzt ist. Nach einigen Probeläufe mit Auswertungsroutinen, die mehrere Punkte abtesten (z.b. die Eckpunkte und den Mittelpunkt oder die Anzahl der überhaupt gesetzten Punkte in einem Kästchen) habe ich mich entschlossen, der Geschwindigkeit wegen doch diese Methode mit dem Mittelpunkt zu benutzen, da die Unterschiede absolut minimal waren (bezogen auf das spätere Druckbild). Das gesäuberte Aussehen der Buchstaben wird sodann völlig normal mit der procedure übernehmen in das Array d| gebracht. Leuten, die sich näher für das alles interessieren, müssen mal das Rom-kernel wälzen. (siehe oben, unten) Delta_input: Eingaberoutine für anzahl der Pixel bei Buchstabenverschiebung Variablen: wo es geht, integer a$(): Menuitems d|(255,120):In diesem Array wird ALLES abgelegt d|(asci,0) :asci-code d|(asci,1)-d|(asci,116):Bitfeld des Buchstabens d|(asci,117) :A \ d|(asci,118) :B des Buchstabens mit Ascii-code asci d|(asci,119) :C / d|(0,0):Schriftart (1=draft,2=lq10,3=lq12,4=ps) d|(0,1):A \ d|(0,2):B d|(0,3):C Der Standardmatrix d|(0,4):H / A,B,C der Standardmatrix sind nur bei ps anders als d|(asci,117..119) mx,my Mauskoordinaten p1x,p1y obere rechte Ecke eines Gitterfeldes p2x,p2y untere rechte Ecke eines Gitterfeldes a%,b%,c%,h% A;B;C;H asci% enthält den ascii-code des augenblicklichen Buchstabens f% enthält die Füllfarbe für Gitterkästchen ps! proportional oder nicht proportional, das ist die Frage druck! Druckmodus ein drucktest! Drucker da set! Punktsetzmodus ein cancel! cancel gewählt wahl! Schriftart und Matrix sind gewählt Rest: teilweise selbsterklärend, teilweise nicht auf Anhieb erklärbar (insbesondere bei proc. getfont, fontkonvert), Rest: keine Lust. Ende des "WHO is WHO". Dieses Programm ist Public-Domain und von: (Copyright: ) Henrich Deppenmeier Turnerstr. 50 4800 Bielefeld 1 Tel.: 0521/177755 Spenden erbeten: Konto 732149 bei Sparkasse Bielefeld BLZ 480 501 61 Ende der Anleitung Bitte Hier Abschneiden: _________________________________________________________________________ Dedications: Danke an: Stefan für konstruktive Kritik Gfa für ein gutes Basic (wo bleibt der Compiler ? (seit 5.11.89: wo bleibt der fehlerlose Compiler? (Seit 20.02.90: Wo bleibt der Gfa Basic Compiler, der auch Programme compilieren kann, die hinter- her größer als 64 KB reiner Code sind ?))) Ane - Sowieso Grüße an: FoebuD e.V. // Bionic (0521/171188 1200/2400 Baud 8N1) Pool-Processing & alle Agenten. Art-Cor & alle Mitwirkenden. Compi-Mate, DER Computerladen in Bielefeld. Gemischte Gefühle bei: Rom-Kernel, Abschnitt Diskfont: ja, es steht irgendwie drin, aber auf die Situation bezogen, das alles vom Betriebssystem gemacht wird und man nur die Fonts laden oder Speichern muß. Kein einziges Wort, an welchen Stellen die Parameter z.b. in Topaz/11 auf Diskette stehen. (naja, zumindestens die Reihenfoge steht drin.) Aufwand zum Rumprobieren und Rausfummeln: 2 Wochen Feierabend, 3 Kilo Hartnäckigkeit, 2.9 Kilo Frustration 1 Einarbeitung in FED (Bommodohre Fonteditor), 1 Nachmittag vergebliches Bücherwälzen bei Gemini (Der unheimlich liberale Schweinebuchladen, der so groß und feist ist, daß man alle Bücher aufmachen darf) Dazu meterlange Hex-listings, Markierstifte, etc. Fonts auf Diskette / den Entwicklern O.k., Die haben sich da ein Verfahren ausgedacht, mit dem man Disk-Fonts wirklich sehr platzsparend ablegen kann. Aber für unsereins, arme Programmierwürstchen mit begrenztem Geldbeutel für Originalunterlagen, Büchern, Utilities und begrenztem Aufnahmevermögen hätt man es doch ein ganz klein bißchen einfacher machen können. Ich möcht jedenfalls meine Abende noch etwas anders verbringen könnes als am Rande der Frustrationsgrenze bei dem Versuch, etwas über die Schreibschutzkerbe und die Maustasten hinauszuschauen. GFA wegen dem Editor (Warum findet der einen zu suchenden Begriff nur einmal pro Zeile, warum kann man nach Verbesserungen einer Zeile nicht mehr in den Einfügemodus, warum muß man den Cursor VOR der Blockoperation an die richtige Stelle stellen?) Andererseits scrollt der natürlich gut. Und an das Einklappen haben wir uns ja auch gleich dran gewöhnt. Schande über: GFA für eine Bedienungsanleitung, bei der man alles selber rausfummeln muß (menubefehle: den Befehl menu x,y liest man wohl besser in dem Rom-Kernal Intuiton (Seite 136f) nach und die richtigen y-Werte gibts bei: Aztec-C-Compiler, Abteilung: Includes/intuition/intuition.h oder auch im Rom-Kernel Intuition Seite B-11) GFA fürs Basic (warum ging BLOAD genau SO, daß nur die ersten 4 Pixel der Buchstaben wieder geladen werden, anstatt auf einen Fehler im Schweinebasic kommt man da doch erst auf einen Programmfehler im eigenen Programm) GFA für "BASRO" (Ein RunOnlyBasic, daß ein Programm der Form GOSUB unter END PROCEDURE unter PRINT "GFA-BASRO kann auch Unterprogramme" RETURN mit "Procedure not found" abbricht, ist kein RunOnlyBasic, sondern ein dicker, fetter ERROR und taugt höchstens etwas für Programme wie das wunderschöne "Demo.GFA". (Dieser Punkt: Zurückgenommen mit Wirkung vom 2.5.89) (Erhalt des Gfa-Basic 3.03 - Updates) Gfa für eine erste Compilerversion voller Fehler Gfa für einen Compiler, der nur Programme bis 64 KB reinem Code compilieren kann: Sprünge in Unterprg. grundsätzlich mit jsr -blabla(A4) = supergroße Asche. Amiga-Font-Designer, egal ob professionell oder Freizeit-Enthusiasten für das ständige Mißachten der Kon- ventionen. (s.o) Das Amiga Magazin und Kickstart fürs Ignorieren und Warten lassen. (Kickstart größtenteils zurückgenommen, Grüße an Markus Nerding !) (Amiga Magazin nochmal bekräftigt, nach 1 Jahr keine Reaktion! Keine Mark fürs Amiga-Magazin!) Das Amiga Magazin und die Veranstaltungsleitung der Amiga-Expo in Köln. Ich biete für die nächste Amiga-Expo die Gymnastikhalle der Grundschule in Hinterhausen an. Die Aussteller werden zu 'Messepreisen' aus den reichlich vorhandenen Stahlspinden verkaufen. Kartenvorverkauf zum Sonderpreis von 20 DM pro Stunde Aufenthalt (Tageskasse 32,- pro Stunde) beginnt ab sofort. (Keine Garantie, daß man dann auch reinkommt.) __________________________________________________________________________