Das 1st_Wordplus-Format

1st_Wordplus ist der Klassiker unter den Textverarbeitungen für den ATARI. Obgleich es viel gescholten wird, ist sein Dateiformat oft die Grundlage für den Datenaustausch zwischen verschiedenen Programmen.

# Lineal

$1F Info-Block
$39 Kennung: Lineal
" " optionaler Rand
"[...]" Lineal (variable Länge, begrenzt durch [])
„0“ Schrifttyp (1 Byte ASCII): 0 = Pica, 1 = Elite, 2 = Schmal, 3 = Breit (noch nicht bei First Word)
„0“ Blocksatz (1 Byte ASCII) 0 = aus, 1 = an (noch nicht bei 1st_Word)
„1“ Zeilenabstand (1 Byte ASCII) (noch nicht bei First Word)
„0“ Proportionalschrift (1 Byte ASCII) 0 = aus, 1 = ein (ab WP 3.20)
CR/LF Ende

Zwischen den eckigen Klammern im Lineal stehen Punkte, falls der „TAB-Zwischenraum“ auf „Leerzeichen“ eingestellt ist. Bei „Zwischenraum = Punkte“ stehen hier Doppelpunkte („:“). Normale Tabulatoren sind in der Version 2.02 als $7F und in der Version 3.15 als $07 dargestellt. Dezimaltabulatoren werden als „#“ dargestellt.

Das Lineal ist die einzige Parametereinstellung, die nicht abwärtskompatibel ist.

Lineal (alte Version)

$1F Infoblock
$36 Kennung: Lineal (alte Version)
" " optionaler Rand
„[...]“ Lineal (variable Länge, begrenzt durch L und R)
CR/LF Ende

Dabei bedeutet „L“ = linker Rand, „R“ = rechter Rand und „T“ = Tabulator.

Papierformat

   
$1F Infoblock
$30 Kennung: Papierformat
„66“ Seitenlange (2 Byte ASCII)
„01“ oberer Rand (2 Byte ASCII)
„03“ Rand Kopfzeile (2 Byte ASCII)
„03“ Rand Fußzeile (2 Byte ASCII)
„05“ unterer Rand (2 Byte ASCII)
„000“ ??? (3 Byte ASCII)
„0“ Zeilenabstand: 0 = Izeilig, 1 = 1,5zeilig (ab WP 3.20)
„132“ Seitenlange in Halbzeilen (3 Byte ASCII) (ab WP 3.20)
„000“ oberer Rand in Halbzeilen (3 Byte ASCII) (ab WP 3.20)
„000“ Rand Kopfzeile in Halbzeilen (3 Byte ASCII) (ab WP 3.20)
„006“ Rand Fußzeile in Halbzeilen (3 Byte ASCII) (ab WP 3.20)
„000“ unterer Rand in Halbzeilen (3 Byte ASCII) (ab WP 3.20)
„000“ ??? (3 Byte ASCII) (ab WP 3.20)
CR/LF Ende

Kopfzeilen

   
$1F Infoblock
$31 Kennung: Kopfzeile
„bla“ Inhalt Kopfzeile links
$1F Trenner
„bla“ Inhalt Kopfzeile Mitte
$1F Trenner
„bla“ Inhalt Kopfzeile rechts
$1F Trenner (ab WP 3.20)
„0“ 0 = nicht auf erster Seite drucken, 1 = auch auf erster Seite drucken (ab WP 3.20)
CR/LF Ende

Bilder

   
$1F Infoblock
$38 Kennung: Bild
„0000“ X-Offset in Buchstaben
„000“ ???
„01“ Zahl der Ebenen, die von Dateipfad entfernt werden müssen, bevor der folgende Pfad angehängt werden kann (dies ist auch der Grund, warum umkopierte Dokumente ihre Bilder nicht mehr finden.)
„\DATEI.IMG“ Pfad des Bildes, der an den Dateipfad (s.o.) angehängt werden muß
CR/LF Ende

Fußzeilen

   
$1F Infoblock
$32 Kennung: Fußzeile
„bla“ Inhalt Fußzeile links
$1F Trenner
„bla“ Inhalt Fußzeile Mitte
$1F Trenner
„bla“ Inhalt Fußzeile rechts
$1F Trenner (ab WP 3.20)
„0“ 0 = nicht auf erster Seite drucken, 1 = auch auf erster Seite drucken (ab WP 3.20)
CR/LF Ende

Folgende Zeichen werden in den Kopf- und Fußzeilen als Platzhalter verwendet:

„#“ aktuelle Seite
„&“ heutiges Datum im US-Format (undokumentiert!)
„$“ heutiges Datum im europäischen Format (undokumentiert!)

Fußnoten

   
$1F Infoblock
$46 Kennung: Fußnotenformat
„0“ ??? (1 Byte ASCII)
„1“ Abstand oben (1 Byte ASCII)
„1“ Abstand unten (1 Byte ASCII)
„0“ ??? (1 Byte ASCII)
„000“ Trennstriche (3 Byte ASCII)
„001“ Fußnoten-Offset (3 Byte ASCII) (ab WP 3.20)
CR/LF Ende

**Die eigentlichen Fußnoten werden am Ende des Textes abgelegt. **

   
$1F Infoblock
$4E Kennung: Fußnotentext
„001“ Nummer (3 Byte ASCII)
„:0000000000“ ??? (11 Byte ASCII)
„02“ Länge der Fußnote in Zeilen
CR/LF Trenner
„Text“ Text der Fußnote
CR/LF Ende
??? $1F Infoblock
??? $45 Kennung: Ende-Fußnote
??? CR/LF Ende

**Zwischen „Anfang-Fußnote“ und „Ende-Fußnote“ steht der Text der Fußnote. Er kann auch mehrere Zeilen lang sein. Fußnotenstellen im Text werden durch **

   
$18 Anfang-Fußnotenstelle
„02 Länge der Fußnote in Zeilen
„,“ Trenner
„1“ Nummer der Fußnote (1 bis 3 Byte ASCII)
$18 Ende-Fußnotenstelle

gekennzeichnet.

   
$1F Infoblock
$52 Kennung: Fußnotenlineal
„ “ ??? (3 Byte ASCII)
„[...]“ Lineal
„0“ Schrifttyp
„0“ Blocksatz
„1“ Zeilenabstand
„0“ Proportionalschrift (ab WP 3.20)
CR/LF Ende

Seitennummern

   
$1F Infoblock
$50 Kennung: Seitennummer
„0001“ Nummer
CR/LF Ende

Um 1WP2FAX, einen FAX-Treiber für 1st Wordplus, schreiben zu können, habe ich das Format ausführlich untersucht - denn eine offizielle Dokumentation ist nicht zu bekommen. (ATARI USA hat eine Dokumentation, die ich allerdings nur vom Hörensagen und in Auszügen kenne. Selbst diese ist aber z.T. unrichtig und unvollständig und basiert ebenfalls nur auf Experimenten.)

Für alle diejenigen, die Konverter, Importfilter o.ä. schreiben möchten oder einfach nur an den Interna des Dateiformates interessiert sind, stelle ich hier das Ergebnis meiner Untersuchungen vor. Die Unterschiede der einzelnen Versionen, z.B. auch das alte lst_Word, sind an den entsprechenden Stellen vermerkt.

Zeilenenden werden durch CR/LF gekennzeichnet. Beim Einlesen sollten Programme aber auch nur CR oder nur LF akzeptieren.

Weiche Zeilenenden werden durch ein Leerzeichen vor dem CR/LF gekennzeichnet.

1st_Wordplus benutzt 4 Arten von Leerzeichen. Wie sie behandelt werden, steht im Handbuch, Kapitel 4.3. Folgende Codes werden abgespeichert:

$1C streckendes Leerzeichen (z.B. bei Blocksatz)
$1D Einzugsleerzeichen
$1E variables Leerzeichen
$20 festes Leerzeichen

Ein fester Seitenumbruch wird mit dem ASCII-Zeichen $C Formfeed (FF) gekennzeichnet.

Bedingte Seitenumbrüche (vom Benutzer gesetzt oder automatisch für eine Fußzeile erzeugt) werden durch $0B markiert, gefolgt von einem Byte, das die Zahl der Zeilen angibt, die mit umgebrochen werden sollen. Von dieser Zeilenzahl ist $10 zu subtrahieren.

Weiche Trennungen werden durch $19 markiert.

Steuersequenzen werden von ESC eingeleitet. Dann folgt das Attribut:

   
Normal $80
Fett $81
Hell $82
Kursiv $84
Unterstrichen $88
Hochstellen $90
Tiefstellen $A0
frei ? $C0

Der Text beginnt mit einer Steuersequenz, der die eingestellten Attribute angibt. Um Attribute zu mischen, werden die Attribute addiert und $80 (Normal) abgezogen. So bedeutet z.B. ESC $89, daß der folgende Text fett und unterstrichen ist.

Die weiteren Informationen über das Seitenformat etc. befinden sich in „Infoblöcken“. Diese Blöcke werden durch $1F eingeleitet, gefolgt von einem Kenn-Byte für die Art der Information, die gegeben wird. Die Länge der Blöcke ist variabel; sie werden durch CR/LF abgeschlossen.

Durch diesen Aufbau der Infoböcke wird eine Kompatibilität zwischen neueren und älteren Versionen des Standards erreicht. Wenn eine Anwendung einen Infoblock findet, muß sie diesen immer bis zur Ende-Markierung lesen. Sie sieht im Kenn-Byte nach, ob sie diese Informationsart auswerten kann. Wenn nicht, wird der Block überlesen. Wenn die Kennung bekannt ist, werden solange die Informationen aus dem Block ausgelesen, bis er zuende ist oder die Anwendung keine weiteren Felder in diesem Block kennt. Falls weitere Felder existieren, so werden diese überlesen.

Übersicht der bisher verwendeten Kennungen:

   
$30 Papierformat
$31 Kopfzeile
$32 Fußzeile
$36 Lineal (alte Version von 1st_Word und Word WriterST)
$38 Bild
$39 Lineal
$45 Ende Fußnotentext (???)
$46 Fußnotenformat
$4E Fußnotentext
$50 Seitennummer
$52 Fußnotenlineal

Jan Willamowius
Aus: ST-Computer 12 / 1993, Seite 136

Links

Copyright-Bestimmungen: siehe Über diese Seite