Readme zum STARFAX - 'FDDKIT'                            07.06.93

Mit dem beiliegendem BASIC Source-code sollte jeder, der etwas besser
programmieren kann, in der Lage sein, seine eigenen FAX-Treiber zu
erstellen. Der Quellcode kann in GFA-Basic mit 'Merge' geladen werden.
Beiliegend befinden sich noch ASSEMBLER-Inline-Codes, welche in die
INLINE-Zeilen (auf die Zeilen gehen und dann HELP drcken!)
eingeladen werden mssen.

Das weitere Konzept ist eigentlich ganz einfach:

Zuerst wird in einem Speicherbereich die Fax-Seite als groes,
blicherweise 1728 Pixel breites, Rasterbild aufgebaut.
(Das ist eigentlich fr euch das schwierigste an der Sache.)
Ich empfehle dafr 256 Bytes pro Rasterzeile zu verwenden.
Nun mu man nur noch die Procedure 'Sicher_seite' aufrufen und
als Parameter die Speicher-Adresse und Zeilenzahl der Seite angeben.
Fertig! War doch nicht so kompliziert, oder?

So, nun fr alle BASIC-Hasser, Assembler-Freaks, Neugierige und
die, die nicht meinen GFA-Basic Sourcecode verwenden wollen, folgt
nun noch eine Beschreibung der Parameter fr die Assembler(Inline) -Routiene:

Die Routiene mu irgendwie das Listing eingebunden werden. Dies geschieht
z.B: in GFABASIC ber INLINE, im TURBO-ASSEMBLER ber IBYTES 'Dateiname':

   INLINE faxdrive%,2100

Nun wird ein 5-stelliger String mit den ersten 5 Buchstaben fr den
Dateinamen bestimmt.

  a$="BILD_"

Nun gibt es bisher 4 Funktionen:

Funktion 1: Datei anlegen
=========================

Nun ruft man den Assembler-Code mit Parameter 1 (fr Datei-anlegen)
und den Dateinamen-Anfang auf. Die Parameter werden auf dem STack als
WORDs und LONGS bergeben. ( Die Funktionsnummer kommt _zuletzt_ auf den
STack ! )

  ~C:faxdrive%( 1 ,          L:  V: a$ )
                |              |
Funktionsnr. fr neue Datei   LONG:Zeiger auf Dateiname

Nach dem Aufruf der Funktion ist die Datei bereits angelegt.
Man braucht sich um Dateipfade etc.. _NICHT_ zu kmmern, das geschieht
anhand der Datei STARCALL.SET automatisch.
Diese Funktion mu immer aufgerufen werden, bevor Daten geschrieben werden.

Funktion 2: Daten schreiben
===========================

Mit Parameter 2 werden Daten einer Rastergrafik aus dem Speicher
in die bestehende Datei geschrieben. Die Rastergrafik sollte
1728 Pixel breit sein, mit links und rechts ca. 64 Pixel Rand.
Fr den Aufbau der Seite im Speicher empfehle ich eine Breite
von 256 Bytes pro Zeile (2048 Pixel).

 ~C:faxdrive%(2, L: faxbild% , 256, lines& ) !FAX-Daten sichern
              |         |        |     |
 Funktionsnr.-+         |        |     +--  Anzahl Raster-Zeilen
                        |        |
LONG: Adresse der Daten-+        +- Breite des Rasters in Bytes

Trotz Assembler-Code dauert das Codieren und Sichern einer Seite
noch eine ganze Zeit. Ich emfpfehle, die zu erstellenden Seite
in mehre Teilstcke zu zerlegen, und die Funktion mehrmals aufzurufen,
so kann z.B. eine Ausgabe der Konvertierung in % gemacht werden, oder
anderes Dargestllt werden. (Ich verndere gerne den Mauszeiger)

Funktion 3: Titel einfgen
==========================

Fgt die Datei FAX_HEAD.FAH aus dem Sende-Verzeichnis als Kopfzeile
ein. Diese Funktion sollte normalerweise vor Funktion 2 ausgefhrt werden.

 ~C:faxdrive%(3) !Fgt einen Titel ein

Funktion 4: Faxdatei abschlieen
================================

Die mit Funktion 1 geffnete FAX-Datei wird abgeschlossen.

 ~C:faxdrive%(4) !Close File

Funktion 5: Datei wiedererffnen
================================

ffnet die mit Funktion 1 zuletzt erstellte Datei erneut, wenn Sie bereits
mit Funktion 4 geschlossen wurde. Fr die programmierung eigener
Fax-Treiber ist das sicher uninteressant, aber weil es die Funktion gibt,
habe ich Sie auch dokumentiert. Ich brauchte Sie z.B. fr den Calamus-
Treiber.

 ~C:faxdrive%(5) !Reopen File

Zum Schluss:
============

- Der Fax-treiber ist Multi-Tos-tauglich und kann Faxe im Hintergrund
erstellen. Ein Warten ist dann nicht mehr ntig.
- brigens: ein FAX hat 1728 Pixel/Zeile bei 196 DPI, sollte 2200 Zeilen
nicht berschreiten.
- Fr Zeichenstze empfehle ich eine Gre von ca. 16*32 Pixel, das
reicht fr mehr als 100 Zeichen/Zeile und mehr als 65 Zeilen.
- Programmiertip: Zum Erstellen der groen FAX-Seiten sind die VDI-Raster-
funktionen COPY_RASTER ganz hilfreich.
- Fax-Seiten sind natrlich monochrome, also bitte 1 Bitplane!
- Bitte sendet mir selbst erstellte Fax-Treiber zu, ich kann Sie dann
auch anderen Usern zur Verfgung stellen. Gibt dann auch eine kleine
Gegenleistung dafr.

So, das wars. Bei Fragen ruft mich doch einfach mal an.

Ingo Linkweiler (INLI)

