← ST-Computer 10 / 1991

Druckdateien von Tempus Word gelöscht?

Programmierpraxis

„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