âJetzt schaltet er schon wieder nicht auf âProportional' um. Und der rechte Rand ist auch ganz ausgefranst. Ausserdem kann mein Drucker doch doppelt unterstrichen. Warum macht er das nicht?â âdu brauchst doch bloss mit TWDRUCK.PRG den Treiber entsprechend abzuĂ€ndern.â âAch so! Verflixt, da hatte ich doch mal irgendwo eine .DRK-Datei! Die kann sich doch nicht in luft aufgelöst haben!â
Besitzer des Textverarbeitungsprogramms TEMPUS WORD haben sicher alle so ihre Erfahrungen mit Dokumenten, die nicht im Grafikmodus gedruckt werden sollen, sondern im Textmodus. Nicht immer sieht das Ergebnis so aus, wie man es nach einem Blick auf den Bildschirm erwartet.
Oder man hat, wie im obigen Beispiel angesprochen, einen Drucker, der mehr kann, als der mitgelieferte Treiber zulĂ€Ăt. Ganz einfach: Man ergĂ€nzt die fehlenden Steuercodes oder Proportionaltabellen einfach mit TWDRUCK.PRG - sofern man das zugehörige Text-File hat!
Warum hat man bloĂ keines? DafĂŒr gibt es mehrere GrĂŒnde: 1
1 .Die Firma lieferte keine Textdatei mit, sondern nur den Treiber selbst.
2. Man hat in der Hitze des Gefechts die vielen Icons und Knöpfchen des TWDRUCK.PRG etwas oberflĂ€chlich angesehen und das Original mit einem satten âNichts' ĂŒberschrieben. Das Backup wollte man erst heute Nachmittag machen, jetzt ist gerade Vormittag!
3. Manchmal verhĂ€lt sich auch das TWDRUCK.PRG recht eigensinnig und schlĂ€gt nach dem Klick auf den âSmiley' den File-Namen der Textdatei (.DRK) als Treibernamen vor. Ein unbedachter Klick auf OK, und die Textdatei ist futsch!
Allen, denen es so ergeht wie dem Verfasser, sei nun Hilfe in Aussicht gestellt: Das folgende Programm MAKE_-DRK verwandelt eine TEMPUS WORD-Treiberdatei (.N9, .N24, .LAS, .TYP) zurĂŒck in eine edierbare Textdatei. Diese kann man dann wieder ganz normal mit dem TWDRUCK.PRG laden, bearbeiten, ĂŒbersetzen lassen und ... drucken ... drucken ... drucken.
Das Programm wurde der schnellen VerfĂŒgbarkeit halber in GFA-BASIC 3.5 abgefaĂt und fĂŒr TOS 1.4 und einen monochromen Bildschirm konzipiert. Besitzer von Farbbildschirmen brauchen allerdings nur die mit der PRINT-Funktion ausgegebenen Ăberschriften etwas zu kĂŒrzen. Auf Ă€lteren TOS-Versionen lĂ€uft das Programm, wenn man in bekannter Manier bei den beiden FILESELECT-Aufrufen die Titelzeile (#â...â) weglĂ€Ăt. Auf Schnörkel und eine ausgefeilte BenutzerfĂŒhrung wurde verzichtet, das Programm erklĂ€rt sich dem Benutzer von selbst. NatĂŒrlich sollte man darauf achten, daĂ man die richtigen Treiberdateien bearbeitet. Das Programm ĂŒberprĂŒft nĂ€mlich nicht, ob eine korrekte TW-Treiberdatei geladen wurde oder irgendein âNonsens'.
Die Bedienung ist sehr einfach. Nach dem Programmstart wĂ€hlt man die Treiberdatei an, die man zurĂŒckĂŒbersetzen möchte (wie gesagt: .N9, .N24, .LAS oder .TYP). Nach der Ăbersetzung trĂ€gt man in die Fileselector-Box den Namen der zu erzeugenden Textdatei ein (in der Regel mit der Endung .DRK). Das Programm wurde an den bei TEMPUS WORD mitgelieferten und an einigen âselbstgebastelten' Treibern erprobt. Die nochmalige Ăbersetzung durch TWDRUCK.PRG ergab jedesmal mit dem Original identische Treiberdateien. Damit dĂŒrfte das Programm wohl ausreichend praxistauglich sein. NatĂŒrlich sollte man nicht versĂ€umen, die Textdatei vor dem âSmiley-Klick' noch einmal auf VollstĂ€ndigkeit und sinnvolle Eingaben hin zu ĂŒberprĂŒfen (besonders die Proportionaltabellen!).
Zum Programm-Listing gibt es keine Besonderheiten zu erwĂ€hnen. Das Treiber-File wird zunĂ€chst in voller LĂ€nge in einen mit einem Array reservierten Speicherbereich geladen. Dann macht sich GFA-BASIC systematisch an die Analyse der Daten. Einige Programmzeilen und Unterroutinen bessern die erzeugten Strings optisch etwas auf. Mit der STORE-Funktion schlieĂlich wird ein editorgerechtes Text-File ausgegeben. Fehlerabfragen bezĂŒglich unzulĂ€nglicher Massenspeicher (Disk voll etc.) erfolgen der Einfachheit halber nicht. Wer den Programmlauf auf dem Bildschirm nĂ€her mitverfolgen will, lösche die Apostrophe vor den auskommentierten PRINT-Anweisungen.
FĂŒr diejenigen, die das Programm noch etwas detaillierter im Hinblick auf einzelne Treiberparameter gestalten wollen, hier tabellarisch eine Ăbersicht ĂŒber die Datenstruktur der TEMPUS-WORD-Treiberdatei. Die angegebenen Indizes korrespondieren direkt mit dem String-Feld p$() in BASIC. NĂ€heres ĂŒber den Aufbau der EintrĂ€ge in den Feldern kann man im TEMPUS-WORD-Handbuch nachlesen.
Noch ein wichtiger Hinweis zum SchluĂ: Einige Treiberdateien von TEMPUS WORD unterliegen dem Urheberrecht.
Wenn man schon diese Dateien rĂŒckĂŒbersetzt und seine eigene geistige Leistung dazuinvestiert, sollte man so ehrlich sein, und im Text-File die âQuelle des SchweiĂes' (sofern bekannt) erwĂ€hnen. Da gibt es doch die schöne Möglichkeit, Kommentare hinter Sternchen einzufĂŒgen. Aber schlieĂlich hat man als lizenzierter TWORD-Benutzer ja doch das Recht, einen Treiber leibgerecht auf den Drucker zuzuschneiden, mit dem man sich tagtĂ€glich herumĂ€rgern muĂ!
| Index | 
ErklÀrung | 
| 0 | 
Druckername, vorangestellt âTWDTâ | 
| 1 | 
Druckertyp | 
| 2,3 | 
Druckerinitialisierung | 
| 4 | 
DPI-Spacing-Tabelle | 
| 5...106 | 
Druckercodes | 
| 68,69 | 
Art der Grafikabtastung | 
| 94...98 | 
Zeilenvorschub, Blatt-Offset, Kopfpositionierung | 
| 107...277 | 
Zeichenkonversion | 
| 278...309 | 
Druckercodes fĂŒr ZeichensĂ€tze | 
| 310...481 | 
Proportionaltabellen | 
' MAKE.DRK.GFA
' verwandelt .N9-, .N24- und .LAS-Dateien zurĂŒck in .DRK-Dateien 
' Heinrich Emmerl (c) 1991 MAXON Computer
DIM sp%(5000),p$(500) 
speich%=VARPTR(sp%(0))
CLS
PRINT
PRINT " RĂŒckverwandeln von TEMPUS WORD-Treibern (,N9 .N24 .LAS) in Textfiles (.DRK)"
PRINT SPC(19);"Bitte zuerst die Treiber-Datei auswÀhlen!"
PRINT
FILESELECT #"Treiber-Datei auswÀhlen","","",datei$
IF datei$<>"" AND RIGHT$(datei$,1)<>"\" 
    pfad$=MID$(datei$,1,RINSTR(datei$,"\")) 
    OPEN "I",#1,datei$ 
    l%=LOF(#1)
    BLOAD datei$,speich%
    CLOSE #1 
ELSE 
    END 
ENDIF
PRINT "Ăbersetze Namen"
start%=speich%+1932 
p$(0)=SPACE$(12)
BMOVE start%,VARPTR(p$(0)),12
p$(0)=LEFT$("TWDT"+p$(0)+SPACE$(20),20)+"*"
DO
    null%=INSTR(p$(0),CHR$(0))
    IF null%
        MID$(p$(0),null%,1)=" "
    ENDIF 
LOOP UNTIL null%=0 
' PRINT p$(0)
ADD start%,13
p$(1)=STR$(PEEK(start%))
' PRINT p$(1)
PRINT "Ăbersetze Codes"
i%=1
DO
    fertig!=FALSE 
    INC i%
    SELECT i%
    CASE 4 
    wort(5)
    CASE 94
        INC start%
        IF PEEK(start%)<>255
            p$(i%)=STR$(256*PEEK(start%)+PEEK(start%+l))+" "
            INC start% 
            fertig!=FALSE 
        ELSE
            fertig1=TRUE 
        ENDIF 
    CASE 96 
        wort(2)
    CASE 97,98 
        wort_byte 
    ENDSELECT 
    IF fertig!=FALSE 
        DO
            INC start% 
            p|=PEEK(start%)
            IF p|<>255
                p$(i%)=p$(i%)+STR$(p|)+","
            ENDIF 
        LOOP UNTIL p|=255 
    ENDIF
    IF RIGHT$(p$(i%),1)=" , "
        MID$(p$(i%),LEN(p$(i%)),1)=" " 
        trimmen 
    ENDIF
    ' PRINT p$(i%)
LOOP UNTIL i%=309
'
PRINT "Ăbersetze Prop-Tabellen"
DO
    INC i%
    y%=0
    DO
        INC start% 
        p|=PEEK(start%)
        IF p|<>255 
            INC y%
            IF y%<3
                p$(i%)=p$(i%)+STR$(p|)+","
            ELSE
                p$(i%)=p$(i%)+STR$(p|)+" " 
                y%=0 
            ENDIF 
        ENDIF
    LOOP UNTIL p|=255 OR start%>=speich%+1% 
    trimmen 
    ' PRINT p$(i%)
LOOP UNTIL i%=481
'
CLS
PRINT
PRINT
PRINT SPC(15);"Bitte nun die zu erzeugende Text-Datei auswÀhlen!"
FILESELECT #"Text-Datei speichern (.DRK)",pfad$+"*.DRK","",datei$
IF datei$<>"" AND RIGHT$(datei$,1)<>"\" 
    OPEN "O", #1,datei$
    STORE #1,p$(),482 
    CLOSE #1 
ENDIF
ALERT 2,"|Noch eine ĂŒbersetzen?",1,"NEIN| JA ",dum%
IF dum%=1 
    END 
ELSE 
    RUN 
ENDIF
PROCEDURE trimmen
    p$(i%)=TRIM$(p$(i%))
RETURN
PROCEDURE wort(words|) 
    y%=0
    INC start%
    IF PEEK(start%)<>255 
        DO
            p$(i%)=p$(i%)+STR$(256*PEEK(start%)+PEEK(start%+1))+" "
            ADD start%,2 
            INC y%
        LOOP UNTIL y%=words| 
        trimmen 
    ENDIF
    fertig!=TRUE 
RETURN
'
PROCEDURE wort_byte 
    INC start%
    IF PEEK (start%) 0255
        p$(i%)=p$(i%)+STR$(256*PEEK(start%)+PEEK(start%+1))+" "
        p$(i%)=p$(i%)+STR$(PEEK(start%+2))+"," 
        ADD start%,2 
        trimmen 
        fertig!=FALSE 
    ELSE
        fertig!=TRUE 
    ENDIF 
RETURN