Ŀ
             
                                   
                              
                              
Ĵ
 Free-Font fr PowerBASIC                                       Version 1.3 


 1. Was ist FreeFont?
 2. Wie ist FreeFont entstanden?
 3. Welche Dateien gehren dazu?
 4. Wie installiere ich FreeFont richtig?
 5. Wie baue ich FreeFont in eigene Programme ein?
 6. Welche Funktionen stehen mir dann zur Verfgung?
    6.1. Base-Vga.Inc
    6.2. FreeFont.Inc und FreeFn21.Inc
    6.3. Maus.Inc
    6.4. VMenu.Inc
 7. Wie funktioniert der Editor?
 8. Wie werden die Schriftarten abgespeichert?
 9. Wie geht das mit den Schriftarten im Textmodus?
 10. Was ist neu in dieser Version?
 11. Rechtliches

Ŀ
                            1. Was ist FreeFont?                            


 FreeFont  ist  eine Sammlung von Funktionen  und Routinen fr PowerBASIC. Es
 enthlt unter anderem eine Bibliothek, durch die der VGA-Grafikmodus mit 256
 Farben nutzbar  gemacht wird.  Weiterhin ist  eine komplette  Bibliothek zur
 Maussteuerung vorhanden und einige einfache grafische Menfunktionen.

 Das  Wichtigste  jedoch sind die  FreeFont-Bibliothek und der dazu gehrende
 Editor.  Damit knnen ganz einfach mausgesteuert neue Schriftarten entworfen
 werden,  die  dann sowohl im Textmodus  als auch in jedem beliebigen Grafik-
 modus nutzbar sind.

Ŀ
                      2. Wie ist FreeFont entstanden?                       


 Programmiert  habe ich das alles in  jahrelanger Kleinarbeit - ganz nebenbei
 aus  eigenem Antrieb. Zuerst hat es  mich nur genervt, dass PowerBASIC keine
 VGA-Grafik  mit  256 Farben untersttzt. Dann  habe ich gelernt, wie man das
 ndern kann.  Und schlielich entstand  eine umfangreiche Include-Datei, die
 ich in jedem beliebigen Programm nutzen konnte.

 Bald ergab sich ein weiterer Mangel:  Schrift hat im Grafikmodus immer einen
 schwarzen  Hintergrund.  Das  ist  vllig  inakzeptabel,  wenn  ein Programm
 professionell aussehen soll. Eine mgliche Lsung bietet FreeFont.

 Ich mchte  an dieser Stelle ganz  besonders  Olaf Roguhn und Herbert Wagner
 fr ihre  Mithilfe  und  ihre  (zumeist indirekten)  Verbesserungsvorschlge
 danken. Nur mit ihrer Hilfe konnte diese verbesserte Version entstehen.

Ŀ
                      3. Welche Dateien gehren dazu?                       


 Folgende  Dateien sollten sich zusammen mit diesem Text in einem Verzeichnis
 befinden:

 Base-Vga.Inc - Wichtige Basisfunktionen fr den VGA-Grafikmodus 13h
 FreeFont.Inc - Mehrere grafische Textfunktionen fr PowerBASIC 3.2
 FreeFn21.Inc - Die gleiche Bibliothek fr PowerBASIC 2.1
 Maus.Inc     - Alle notwendigen Funktionen fr die Benutzung der Maus
 VMenu.Inc    - Einfache Fenster und Mens im Grafikmodus 13h
 FF-Edit.*    - Der mausgesteuerte Editor fr komplette Schriftarten
 Beispi*.Bas  - Einige kurze Beispielprogramme
 *.FNT        - Verschiedene Schriftarten mit einer Breite von acht Punkten
 *.FF1        - Schriftarten mit einer festen Breite kleiner als Acht
 *.FF2        - Einige Schriften mit variabler Breite

Ŀ
                  4. Wie installiere ich FreeFont richtig?                  


 Wechseln Sie in das Verzeichnis auf Ihrer Festplatte, in dem sich PowerBASIC
 befindet.  Erstellen  Sie  hier  ein  neues  Unterverzeichnis  mit dem Namen
 FREEFONT  und  kopieren Sie alle Dateien  in dieses leere Verzeichnis. Jetzt
 starten Sie PowerBASIC und aktivieren den Menpunkt "Options / Directories".
 Ergnzen  Sie in dem erscheinenden Dialogfeld die Zeile "Source directories"
 um das soeben erstellte FreeFont-Verzeichnis.

 Jetzt sollten alle Dateien automatisch gefunden werden. An einigen Programm-
 stellen  mssen Sie dennoch die Pfadangaben ergnzen. Zum Beispiel sucht die
 Funktion  LadeFF$  nur im aktuellen  Verzeichnis nach der Schriftdatei. Hier
 mssen Sie den kompletten Pfad angeben oder mit dem Menpunkt "File / Change
 dir" das Verzeichnis wechseln.

Ŀ
             5. Wie baue ich FreeFont in eigene Programme ein?              


 Alle Bibliotheken (erkennbar an der Endung .INC) liegen im Quellcode vor und
 knnen  mit  der Anweisung $INCLUDE  in jedes beliebige Programm eingebunden
 werden.  Sie mssen jedoch einige Regeln  beachten. So sollten die $Include-
 Befehle  bereits am Anfang des Programmes  stehen. Besonders wichtig ist das
 bei den Dateien Maus.Inc und VMenu.Inc, weil gleich am Anfang einige globale
 Variablen definiert werden.

 Auch die Abhngigkeit voneinander ist zu beachten. So bentigt VMenu.Inc die
 Prozeduren  aus Base-Vga.Inc und FreeFont.Inc (bzw. FreeFn21.Inc, siehe dazu
 Beispi04.Bas).  Es  sind sehr viele  Kombinationen  denkbar, von der Nutzung
 einer  einzigen  Datei  bis hin  zum  kompletten Einbindung aller Include's.
 (siehe dazu Beispi03.Bas und Beispi05.Bas)

Ŀ
            6. Welche Funktionen stehen mir dann zur Verfgung?             


 Ich  habe die folgenden Beschreibungen mglichst  kurz gehalten und mich auf
 die wichtigsten Fakten beschrnkt.  Fr den  Anfang sollte das gengen. Wenn
 Sie  spter etwas anpassen wollen, mssen Sie ohnehin jede einzelne Funktion
 im Quellcode betrachten und analysieren.

Ŀ
                             6.1. Base-Vga.Inc                              


 SUB VScreen (Grafikmodus%)  =  Den Grafikmodus  13h knnen Sie nicht mit dem
 SCREEN-Befehl  einstellen.  Verwenden Sie dafr  den  Befehl VScreen mit dem
 Parameter  13.  Auch  wenn ihr Programm  zurck  in  den Textmodus schaltet,
 sollten sie nicht SCREEN 0, sondern VScreen 0 verwenden!

 SUB VCls (Farbe%)  =  Im Grafikmodus 13h  drfen  Sie keine von den normalen
 Basic-Funktionen  verwenden.  Zum  Lschen  des  Bildschirmes beispielsweise
 benutzen  Sie  bitte diese Prozedur. Zustzlich  ist  die Angabe einer Farbe
 mglich, mit der der Bildschirm gefllt werden soll.

 SUB VPset (x%, y%, Farbe%)  = Setzt einen Punkt mit der gewnschten Farbe an
 jede  beliebige  Koordinate des Bildschirmes. Dabei  sind  Werte von 0,0 bis
 319,199 mglich.

 FUNCTION VPoint% (x%, y%)  =  Liefert die  Farbe eines Punktes auf dem Bild-
 schirm  zurck. Verwenden Sie diese Funktion  genauso  wie den gleichnamigen
 POINT-Befehl.

 SUB VLine (x1%, y1%, x2%, y2%, Farbe%, Schrittweite%)  =  Es wird eine Linie
 zwischen  den zwei Koordinaten mit  einer whlbaren Schrittweite gezeichnet.
 Schrittweite 1 erzeugt eine durchgezogene Linie.

 SUB VBox (x1%, y1%, x2%, y2%, Linienfarbe%, Fllfarbe%)   =   Ein Kasten mit
 verschiedener  Rand-  und Fllfarbe wird gezeichnet.  Wenn Sie fr die Fll-
 farbe  den Wert -1 eintragen, arbeitet VBox genau wie LINE mit dem Parameter
 ",B". Die Box bleibt dann leer und nur ein Rahmen wird gezogen.

 SUB VBoxGefuellt (x1%, y1%, x2%, y2%, Farbe%)    =   Fr  einfarbige  Blcke
 sollten Sie diese Funktion verwenden, da sie schneller arbeitet als VBox.

 SUB  VCircle  (x%, y%, Radius%,  Farbe%,  Startwinkel! ,Endwinkel!, Aspekt!,
 Schrittweite%)  =  Dieser Befehl arbeitet nicht besonders schnell aber dafr
 sehr  flexibel.  Der Start- und Endwinkel  mu  in Radiant angegeben werden.
 Durch  den Aspekt wird ein  Streckungs- bzw. Stauchungsverhltnis angegeben.
 Aus  dem Kreis wird dann eine  Ellipse.  Schrittweiten grer als 1 erzeugen
 unterbrochene Linien.  Bei fast allen Parametern  knnen Sie den Wert 0 ein-
 tragen, es wird dann mit einer Standardvorgabe gearbeitet.

 SUB VCircleGefuellt (x%, y%, Radius%, Farbe%, Aspekt!)  = Es wird ein ausge-
 fllter  Kreis gezeichnet, der auch gestaucht bzw. gestreckt sein kann. Wenn
 Sie  fr den Aspekt eine Null eintragen, wird ein normaler, runder Kreis ge-
 zeichnet.

 SUB RGBSetzen (Farbe%, Rotanteil%, Grnanteil%, Blauanteil%)   =  Im Grafik-
 modus  13h  stehen  nur  256 Farben  zur  Verfgung.  Sie knnen jedoch jede
 einzelne  Farbe  verndern, wobei aus einer  Palette  von ber 260000 Farben
 gewhlt  werden  kann. Mischen Sie die  neue Farbe aus den drei Grundfarben,
 wobei jeder Anteil zwischen 0 und 63 liegen darf.

 SUB RGBLesen (Farbe%, Rotanteil%, Grnanteil%, Blauanteil%)   =  Die Umkehr-
 funktion  liest die zur Zeit gesetzten  Farbanteile und speichert sie in den
 drei Variablen ab.

Ŀ
                     6.2. FreeFont.Inc und FreeFn21.Inc                     


 FreeFont.Inc  enthlt alle Funktionen die  ntig sind, um freie Schriftarten
 in  jedem  beliebigen Grafikmodus darzustellen.  Dabei mssen Sie zuerst be-
 achten, welche Version von PowerBASIC Sie besitzen. Unter PowerBASIC Version
 2.1 bis 3.1 mssen Sie die Bibliothek FreeFn21.Inc benutzen. Wenn Sie jedoch
 ber eine neuere Version ab 3.2 verfgen, sollten Sie unbedingt FreeFont.Inc
 aktivieren! Diese Datei enthlt exakt die gleichen Funktionen, aber die sind
 teilweise bis zu doppelt so schnell!

 Die Funktionen im Einzelnen:

 FUNCTION LadeFF$ (Dateiname$)  =  Eine beliebige  Schriftdatei wird geffnet
 und  ihr Inhalt (etwa 800 bis  5000 Bytes) in einer String-Variablen gespei-
 chert. Diese Variable kann dann an alle anderen Funktionen bergeben werden,
 die  eine  Schrift erfordern. Die Funktion  kann  neben Schriftarten mit den
 Endungen FF1 und FF2 auch reine Binrdateien ffnen. Beachten Sie aber, dass
 solche Schriften immer als Typ 1 behandelt werden!

 FUNCTION FFAttribut% (Schriftart$, Attributnummer%)  = Diese kleine Funktion
 liefert  die  Attribute einer Schriftart zurck.  Das erste Attribut ist die
 Hhe  der  Schrift,  Nummer Zwei ist die  Breite  und  das dritte stellt die
 Breite  der Zwischenrume zwischen den Buchstaben  dar. Schriften des Typs 2
 haben  eine  variable  Breite. Hier wird das  Attribut 2  als Breite fr das
 Leerzeichen interpretiert.

 SUB FreeText1 (x%, y%, Farbe%, Text$, Schriftart$)  = Der Text wird an jeder
 beliebigen  Position mit der gewhlten Farbe und Schriftart dargestellt. Die
 Schrift  mu  zuerst  mit  der  Function  LadeFF$  geladen werden. FreeText1
 arbeitet sowohl mit Schriftarten des Typs 1 (*.FF1) als auch mit Binrdatei-
 en (*.FNT).  Beachten Sie bitte, dass diese Prozedur nur in den Grafikmodi 1
 bis 12 funktioniert!

 SUB FreeText2 (x%, y%, Farbe%, Text$, Schriftart$)   =   FreeText1 zeigt nur
 Schriftarten  mit fester Breite an. Das  ist schnell aber nicht immer ideal.
 FreeText2  arbeitet  ausschlielich mit  flexiblen  Schriften (*.FF2). Dabei
 wird  fr  jeden Buchstaben nur soviel  Platz verbraucht, wie ntig. Ein "i"
 ist  also  wesentlich  schmaler als ein  "M".  Die  beiden Schrifttypen sind
 leider  nicht austauschbar, da sie gesondert gezeichnet und in verschiedenen
 Formaten abgespeichert sind!  Auch fr diese Funktion gilt: Sie arbeitet nur
 in den Grafikmodi 1 bis 12!

 SUB VFreeText1 (x%, y%, Farbe%, Text$, Schriftart$)   =  Fr den VGA-Grafik-
 modus  13h gibt es diese zwei  getrennten Funktionen. Sie funktionieren ganz
 genau  so wie die vorigen beiden. Aber  natrlich arbeiten sie nicht mit dem
 Befehl PSET sondern sie schreiben direkt in den VGA-Grafikspeicher.

 SUB VFreeText2 (x%, y%, Farbe%, Text$, Schriftart$)  =  Um flexible Schrift-
 arten   im  VGA-Grafikmodus  13h  darzustellen,  benutzen  Sie  bitte  diese
 Prozedur.

Ŀ
                               6.3. Maus.Inc                                


 MAUS.INC ist eine relativ vollstndige Bibliothek fr die Benutzung der Maus
 in  jedem beliebigen Grafikmodus. Wenn  MAUS.INC in ein Programm eingebunden
 wurde, stehen folgende Variablen, Prozeduren und Funktionen zu Verfgung:

 MausVorhanden%,  MausX%  und  MausY%  sind  globale  Variablen, die an jeder
 beliebigen Stelle im Programm genutzt werden knnen. Wenn MausVorhanden% auf
 Null  gesetzt  ist, dann wurde keine  Maus  gefunden und keine der folgenden
 Prozeduren  wird  funktionieren.  MausX% und  MausY%  speichern die aktuelle
 Position  der  Maus. Diese Variablen sind  immer dann aktualisiert, wenn die
 Funktion Clicked% benutzt wurde.

 SUB MausEin  =  Schaltet den  Mauscursor ein,  so dass er auf dem Bildschirm
 sichtbar wird.

 SUB MausAus  = Schaltet den Mauscursor aus. Beachten Sie bitte: Bevor irgend
 etwas  auf den Bildschirm gezeichnet wird,  sollte die Maus unbedingt ausge-
 schaltet  werden. Sonst kann es zu unerwnschten Effekten kommen. Achten Sie
 auch auf eine Besonderheit dieser Prozeduren: Ein mehrmaliges Abschalten der
 Maus erfordert auch ein mehrmaliges Einschalten!

 FUNCTION Clicked%  =  Diese Funktion liest den aktuellen Status der Maus und
 liefert als Wert die Nummer der gedrckten Maustaste zurck. Auerdem werden
 die Variablen MausX% und MausY% aktualisiert.

 SUB MausUndTasten (Gedrckte_Taste$, Maustaste%, Doppelklick%) = Um Tastatur
 und Maus gleichzeitig abzufragen, benutzen Sie diese Prozedur. Sie wird erst
 dann  beendet,  wenn  ein Ereignis an  Tastatur  oder  Maus auftritt. In den
 Variablen  wird  dann die gedrckte  Taste  oder eine Maustaste gespeichert.
 Auerdem sind die Variablen MausX% und MausY% aktualisiert. Wenn ein zweiter
 Mausklick  innerhalb  einer  zehntel Sekunde  ausgefhrt  wurde, enthlt die
 letzte Variable den Wert 1.

 SUB WarteAufMaus  =  Das Programm wird  so  lange angehalten, bis alle Maus-
 tasten  losgelassen  wurden.  Die Variablen  MausX%  und  MausY% sind danach
 aktualisiert.

 SUB WarteAufTasteOderMaus  = Das Programm  wird solange angehalten, bis eine
 beliebige  Taste an Tastatur oder Maus  gedrckt wurde. Die Variablen MausX%
 und MausY% werden aktualisiert.

 SUB LocateMaus (x%, y%)  = hnlich wie mit  dem Befehl LOCATE wird der Maus-
 cursor auf eine bestimmten Stelle des Bildschirmes positioniert.

 SUB MausGrenzen (x1%, y1%, x2%, y2%)   =  Es  wird ein whlbarer Bereich des
 Bildschirmes  abgegrenzt, in dem sich der  Mauscursor bewegen darf. Wenn Sie
 alle Parameter auf ungltige Werte (zum Beispiel -1) setzen, wird wieder der
 gesamte Bildschirm frei gegeben.

 SUB MausAusschluss (x1%, y1%, x2%, y2%)   =  Es wird ein  Bereich des  Bild-
 schirmes  festgelegt,  in  dem  kein  Mauscursor  erscheinen  darf.  Er wird
 unsichtbar,  sobald  Sie ihn ber diesen  Bereich  bewegen. Ntzlich ist das
 z.B. fr den Teil des Bildschirmes, in dem eine Animation luft.

 SUB MausCursor (Typ%, Vordergrundfarbe%, Hintergrundfarbe%, Zeichen%)  = Ein
 normaler Mauscursor im Textmodus invertiert nur die Farben des Bildschirmes,
 das  darunter  liegende  Zeichen bleibt  sichtbar.  Diese Funktion stellt 10
 verschiedene  Mauscursor zur Verfgung, die sie selbst verndern drfen. Wie
 wre  es zum Beispiel mit einem Symbol,  das immer in Wei dargestellt wird,
 die  Hintergrundfarbe  bleibt  jedoch erhalten?  (das wre dann  Typ 2)  Die
 einzelnen Typen entnehmen Sie bitte der Datei MAUS.INC.

Ŀ
                               6.4. VMenu.Inc                               


 VMENU.INC  stellt drei einfache Prozeduren  zur Verfgung, mit denen Fenster
 und Schalter im VGA-Grafikmodus 13h dargestellt werden knnen. In Verbindung
 mit FREEFONT.INC knnen die Schalter automatisch beschriftet werden.

 VMenuHell%, VMenuFarbe%,  VMenuDunkel%,  VMenuText%  und  VMenuRahmen%  sind
 globale  Variablen,  mit denen die  Farben der folgenden Elemente festgelegt
 werden.   Sie   knnen  die  Variablen   jederzeit  verndern.  (siehe  dazu
 Beispi04.Bas)

 SUB VMenuWindow (x1%, y1%, x2%, y2%, Dicke%, Titeltext$, Schriftart$) = Eine
 Box  mit schattierten Rndern wird gezeichnet.  Der Titeltext wird am oberen
 Rand  in einer whlbaren Schriftart dargestellt.  Wenn Sie keinen Titel wn-
 schen, geben Sie fr den Text und die Schrift jeweils einen Leerstring an.

 SUB VMenuButton  (x1%, y1%, x2%, y2%,  Dicke%,  Text$,  Schriftart$)  =  Ein
 typischer Schaltknopf mit einem zentrierten Text wird dargestellt. Auch hier
 knnen Sie fr Text und Schrift Leerstrings angeben.

 SUB VMenuTief (x1%, y1%, x2%, y2%, Tiefe%, Text$, Schriftart$) = Es wird ein
 Kasten gezeichnet, der durch Schattierung wirkt, als wrde er tiefer liegen.
 Verwenden knnen Sie das z.B. fr Buttons, die soeben gedrckt wurden.

Ŀ
                      7. Wie funktioniert der Editor?                       


 Im  ersten  Men whlen Sie eine  Funktion  aus, indem Sie die entsprechende
 Zahl drcken. Diese Bedienung ist zwar nicht mehr zeitgem, aber fr diesen
 Zweck  ausreichend. Die weitere Benutzung  erklrt sich grtenteils selbst.
 Wenn  Sie es ganz genau wissen wollen,  sehen Sie sich einfach den Quelltext
 an.

 Achten  Sie besonders auf den Unterschied zwischen den Schrifttypen 1 und 2!
 Der erste arbeitet immer mit einer festen Buchstabenbreite. Das Maximum sind
 acht Punkte, wie unter DOS blich. (Fr Techniker: Das liegt daran, dass ein
 Byte aus acht Bit besteht.)  Die Buchstaben im Schrifttyp 2 drfen ebenfalls
 maximal  acht  Punkte breit sein, doch  es  mssen nicht alle Punkte genutzt
 werden.  Die  Prozeduren  FreeText2  und  VFreeText2  zeichnen  jeden dieser
 Buchstaben nur so breit, wie er wirklich ist.

 Hinweis: Achten Sie unbedingt darauf, dass alle Buchstaben des Typs 2 LINKS-
 BNDIG  gezeichnet wurden! Es kann nur der Leerraum ausgeblendet werden, der
 sich rechts vom Buchstaben befindet!

 Wenn  Sie  sich  im  grafischen Teil  des  Editors  befinden, knnen Sie ihn
 komplett  mit  der  Maus  bedienen.  Der  blaue  Balken am  rechten Rand der
 Zeichenflche  dient  dabei als "Marker". Markieren  Sie z.B. den oberen und
 unteren  Rand  der  Buchstaben, so dass am  Ende  auch alle die gleiche Hhe
 besitzen.

 Durch  verschiedene  Tasten knnen Sie  sich die Arbeit erleichtern. Drcken
 Sie einfach den Buchstaben oder das Zeichen, das sie bearbeiten wollen! Auch
 ASCII-Codes knnen eingegeben werden (ALT + Zahl).  Aber Vorsicht:  Der Code
 27 bewirkt das Gleiche wie ein Druck auf ESC. Alle nderungen werden verwor-
 fen!

 Weitere Tasten sind:  F2 zum Speichern, F3 zum Spiegeln und F4 zum Invertie-
 ren einer kompletten Schrift,  F5 zum Kopieren eines einzelnen Zeichens (das
 Zielzeichen   wird  dabei  gelscht),  F10  oder  ESC  zum  Abbrechen  (alle
 nderungen werden verworfen) und ENTF zum Lschen eines einzelnen Zeichens.

Ŀ
               8. Wie werden die Schriftarten abgespeichert?                


 Als  Standardformat werden Binrdateien mit der Endung FNT verwendet. Dieses
 Dateiformat  enthlt  keinen Dateikopf, so  dass  diese Schriften immer acht
 Punkte  breit  sein mssen. Als  Zwischenraum  wird ein Punkt vorausgesetzt.
 (Sie  knnen  diese  Voreinstellung  nur  manuell  verndern.)  Bis  auf den
 fehlenden Dateikopf sind die Formate FF1 und FNT identisch.

 Am Anfang jeder Datei mit der Endung FF1 oder FF2 steht ein drei Byte langer
 Header.  Dieser enthlt die Hhe und  Breite der Buchstaben sowie die Breite
 des  Leerraumes zwischen den Buchstaben. Bei Schrifttyp 2 ist keine Buchsta-
 benbreite notwendig, statt dessen wird an dieser Stelle die Breite des Leer-
 zeichens gespeichert.

 Die eigentlichen Buchstaben sind bitweise abgelegt. Das funktioniert so hn-
 lich wie bei einem schwarz/weien Bitmap: Jeder Punkt bentigt lediglich ein
 Bit  Speicherplatz.  Der Vorteil: Die Dateien  werden recht klein (maximal 5
 Kilobyte) obwohl sie unkomprimiert sind. Nachteil: Die Buchstaben knnen nur
 acht Punkte breit sein, weil ein Byte nun mal nur acht Bit aufnehmen kann.

 Zwischen  den  Schrifttypen 1 und 2  besteht  ein wichtiger Unterschied: Sie
 sind  spiegelverkehrt zueinander. Bei Typ 1  wird mit dem obersten Bit eines
 Bytes  begonnen, bei Typ 2 werden zuerst die unteren Bits benutzt. Ich wei,
 dass  so etwas nicht schn ist, aber  es ist erforderlich. Schrifttyp 1 muss
 kompatibel  zu der Interrupt-Funktion sein, bei  Schrifttyp 2 muss es anders
 sein,  weil  sonst der Rechenaufwand in  den Prozeduren FreeText2 und VFree-
 Text2 steigen wrde.

Ŀ
             9. Wie geht das mit den Schriftarten im Textmodus?             


 Ich  zitiere hier einfach den entsprechenden Teil aus Ralf Browns Interrupt-
 Liste.  Die praktische Anwendung entnehmen  Sie bitte den Beispielprogrammen
 Beispi06.Bas und Beispi07.Bas.

 INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
         AH = 11h
         The following functions will cause a mode set, completely resetting
         the video environment, but without clearing the video buffer
         AL = 00h, 10h: load user-specified patterns
             ES:BP -> user table
             CX    = count of patterns to store
             DX    = character offset into map 2 block
             BL    = block to load in map 2
             BH    = number of bytes per character pattern
         AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
             BL    = block to load
         AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
             BL    = block to load
         AL = 03h: set block specifier (allows dual character sets on screen)
             BL    = block specifier (see #0019)
         AL = 04h, 14h: load ROM 8x16 character set (VGA)
             BL  = block to load

 Notes: The routines called with AL=1xh are designed to be called only
        immediately after a mode set and are similar to the routines called
        with AL=0xh, except that:
               Page 0 must be active.
               Bytes/character is recalculated.
               Max character rows is recalculated.
               CRT buffer length is recalculated.
               CRTC registers are reprogrammed as follows:
                  R09 = bytes/char-1            ; max scan line (mode 7 only)
                  R0A = bytes/char-2            ; cursor start
                  R0B = 0                       ; cursor end
                  R12 = (rows+1)*(bytes/char)-1 ; vertical display end
                  R14 = bytes/char              ; underline loc
                        (*** BUG: should be 1 less ***)
        the current block specifiers may be determined with INT 10/AH=1Bh,
        looking at offsets 2Bh and 2Ch of the returned data (VGA only)

 Bitfields for block specifier:
 Bit(s)  Description
 ---EGA/MCGA---
  0,1    block selected by characters with attribute bit 3 clear
  2,3    block selected by characters with attribute bit 3 set
 ---VGA---
  0,1,4  block selected by characters with attribute bit 3 clear
  2,3,5  block selected by characters with attribute bit 3 set

Ŀ
                     10. Was ist neu in dieser Version?                     


 v1.1  Smtliche Prozeduren und Funktionen sind nun auch unter PowerBASIC 2.1
       lauffhig!

 v1.1  Die Datei FreeFont.Inc existiert jetzt zwei mal: Einmal fr PowerBASIC
       3.2 (FreeFont.Inc) und einmal fr die Version 2.1 (FreeFn21.Inc).

 v1.1  Alle  FreeText-Funktionen sind schneller  geworden. Die Funktionen fr
       PowerBASIC 3.2 sind teilweise sogar doppelt so schnell wie frher!

 v1.1  Die Prozeduren FreeText1 und FreeText2  lassen sich jetzt in jedem be-
       liebigen Grafikmodus nutzen. Allerdings nicht mehr im Modus 13h, dafr
       gibt es zwei neue Funktionen mit den Namen VFreeText1 und VFreeText2.

 v1.1  Mehrere  neue Schriftarten, die  teilweise den Windows-Schriften nach-
       empfunden sind. (z.B. Courier, FixedSys und Sans Serif)

 v1.1  Viele Schriften enthalten jetzt das Euro-Symbol. (ASCII-Zeichen 128)

 v1.1  Der Editor wurde berarbeitet, einige  Fehler wurden entfernt und neue
       Funktionen ergnzt.

 v1.1  Die Kreise der Funktion VCircle werden nun etwas runder.

 v1.1  VCircleGefuellt zeichnet sehr schnell gefllte Kreise im Modus 13h.

 v1.1  Einige fehlerhafte Variablen wurden aus  Beispielprogramm 6  entfernt,
       so dass es jetzt wirklich funktioniert.

 v1.1  VView  und  die entsprechenden  Variablen  zur Begrenzung der Zeichen-
       flche wurden komplett entfernt.

 v1.2  Einige kleinere Fehler wurden aus den Maus-Funktionen entfernt.

 v1.2  Der Editor  kann jetzt Schriftarten  in reinem Binrformat  (also ohne
       Kopfinformationen) im- und exportieren.

 v1.2  Die Funktion LadeFF$ kann jetzt auch Schriften im Binrformat laden.

 v1.2  Einige neue Schriften und ein neues Beispielprogramm wurden ergnzt.

 v1.3  Der Editor  wurde weiter verbessert.  Das Bearbeiten einzelner Zeichen
       kann mit Esc  abgebrochen werden.  Mit F4  kann eine komplette Schrift
       invertiert werden.  Fr Schriftarten mit einer Breite von acht Punkten
       wird  jetzt standardmig das Binrformat FNT benutzt. Die Konvertier-
       funktion kann alle Formate ineinander umwandeln.

 v1.3  Viele  Schriften  wurden berarbeitet und  ins Format FNT konvertiert.
       Ein  herzliches Dankeschn geht an  Olaf Roguhn  fr eine neue Schrift
       aus seinem Lotto-Generator!

 v1.3  Einige  Programmteile  wurden angepasst, so dass eine  Einstellung mit
       $STRING 8 mglich ist.

Ŀ
                              11. Rechtliches                               


 Ich  weiss,  dass  man mit Shareware  nur  in seltenen Fllen Geld verdienen
 kann.  Auerdem wre diese Art fr eine Programmierbibliothek sehr unsinnig.
 Darum  habe ich mich entschlossen, die  komplette Sammlung als Public Domain
 zu vertreiben. Das heit: Sie drfen es in eigenen Programmen verwenden, Sie
 drfen  es nach Belieben verndern oder umschreiben und Sie drfen es belie-
 big oft weiter kopieren.

 Ich bitte  Sie sogar darum!  Kopieren Sie  diese Software  an alle, die sich
 ebenfalls mit PowerBASIC beschftigen!

 Einen Wunsch  habe ich jedoch:  Schreiben Sie mir!  Wenn Sie ein paar schne
 Schriftarten  entworfen  haben oder  wenn Sie  meine  Bibliotheken  in einem
 Programm verwendet haben, dann wrde ich mich sehr ber eine Kopie oder eine
 Nachricht  freuen!  Auch  wenn Sie Fehler  finden  oder  Probleme und Fragen
 haben,  zgern  Sie nicht,  mir zu  schreiben!  Meine Adresse lautet: Thiemo
 Mttig, Hauptstrae 11, D-02627 Hochkirch

 Ich wnsche Ihnen viel Erfolg!

Ŀ
 Mad/OS ^ real.fake                                                Mai 1999 

