Druckdateien von Tempus Word gelöscht?

„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

Heinrich Emmerl
Aus: ST-Computer 10 / 1991, Seite 74

Links

Copyright-Bestimmungen: siehe Über diese Seite