OT BEISPIEL =000DBOT TTT! 000301verweiseextern vrz-wechsel.** wechselt das aktuelle Textverzeichnis (zum Anlegen.** eines Bausteinhandbuchs mu~ "BAUSTEIN" benutzt werden) tvz-seitanz..** Schreibt die Seitenanzahl des Textes ins Verzeichnisdaten in wszch.Ersatz.zch.** Spezielle Zeichen ohne feste Bedeutung in Wordstar.** (individuell zu {ndern) #)06:C !.#)06:CEGILM [ daten dialogdrucksteuerzeichen punktbefehl-ausf}hrung punktbefehl-verzweigungtabulationentextanfangunterprog block-lesen unterprog neue-seite unterprog neue-zeile unterprog nummer-lesenunterprog seite-0unterprog weiterverweisezeilenendezeilenpr}fung -0085BOTTT!T)T1T9TA 000302daten.=====================================================================programm wordstar..=====================================================================daten..----Leer-4<4>.)** zum L|schen in der Info-ZeileText-maske"Konvertierungsliste: !Name des Wordstar-Textes: +neuer Textname: ".Bau-maske"Name des Bausteinhandbuchs: Konvertierungsliste: (Wordstar-Baustein:  neuer Bausteintitel: ".Baustein"BAUSTEIN ".)** Bausteinhandbuch-Verzeichnis. Zeichen, auf die speziell reagiert werden mu~. ---------------------------------------------Steuerzch#000#001!#002)#0041#0089#009A#012.---2.Pitch!Schatt)Doppel1R}ck9TabAFF#013#014!#015)#0191#0209#022A#026.Return1.Pitch!f.Leer)unters1hoch9tiefAEnde#027#028!#029)#0301#0319#032 "_" .------!---)Trenncd1Trenng9LeerAUstr)"*". nur f}r Bausteine:)Stop-Position)#03519"\". nur f}r Kopf- und Fu~zeilen:)Seitennr9Normalzeichen. Ersatz der folgenden Zeichen }ber die Tabelle im Programm "wszch":#005#017!#018)#0231#0069#007.Ctrl-ECtrl-Q!Ctrl-R)Ctrl-W1 Phantom-.(def.)(def.)!(def.))(def.)1Leer9Rubout#003#011!#024)#0251#0169#021A#010. .Druck-links/!durch-)Farb-1Ctrl-P9Ctrl-UALF.pauserechts!str.)band1???9???Aallein. Punktbefehle, die in Butler umgesetzt werden k|nnen. ---------------------------------------------------Punkt-tabelle.()<2>"LH""CW"!"PA")"CP"1"HE"9"FO"A"PN"..ZeilenZeichen!Seiten)bed.1Kopf9Fu~ASeiten.abstanddichte!ende)Seite1zeile9zeileAnummerLaufwerk<1>.** aktuelles Textlaufwerkspeicher dynamisch. .-----------------. Text-Dateien. ------------Vrz-alt <10>.)** Verzeichnis (merken, falls zum.)** Anlegen eines Bausteinhandbuchs.)** das Verzeichnis gewechselt wird)W-textdatei<14>.)** Wordstar-TextTextdatei<8>.)** Butler-TextL-name<8>.)** Listenname (Eingabe)L-name-ttext<14>.)** Listenname incl. Laufwerk + Ext.speicher = L-name-t.L-textdatei<14>.)** Listen-Text. Felder f}r den Text. ------------------- Block-1text<256>.)** Teil aus Wordstar-DateiBlock-2text<256>.)** Kopie davon ohne 1. BitT-zgzeigertext.)** Zeiger auf aktuelle Position.)** in der KopieA-indexnummer.)** Anfangsindex des gerade unter-.)** suchten Textteils innerhalb.)** der KopieTx1text<300>.)** Textfeld zum Aufbau der neuen.)** Butler-ZeileTx2text<300>.)** Textfeld zum Aufbewahren, falls.)** zwischendurch Eintr{ge in Seite 0 Breitenummer.)** Schreibbreite in der akt. SeiteBreite-0nummer.)** Schreibbreite in Seite 0Letztes-zch<1>.)** letztes Zeichen im BlockPunktbefehl<2>.)** zwei Zeichen hinter dem Punkt.)** geben den Befehl anHilfs-texttext<5>.)** f}r Nummer hinter PunktbefehlTiteltext<40>.)** Bausteintitel. Flags. -----Liste<1>.)** Textnamen aus Liste lesenSchatten<1>.)** aktueller DruckmodusDoppel<1>.Unterstr<1>.Hoch<1>. Tief<1>.Feste-seite<1>.)** folgende Seitentrennung ist festKommentar<1>.)** aktuelle Zeile ist KommentarStd-dichte<1>.)** aktuelle DichteZweit-dichte<1>.Seite-0<1>.!** Eintrag f}r aktuelle Seite in Seite 0 vorh.In-seite-0<1>.!** Zeiger steht in Seite 0. aktuelle Werte im Text. ----------------------Std-pitchnummer.)** Werte f}r die beiden DichtenZweit-pitchnummer.Block-l{ngenummer.!** Anzahl Zeilen, die zusammen auf eine Seite  .!** sollen (WS:.CP, hier: Code-( und Code-)). allgemeine Felder. -----------------Zch1<1>.Zch2<1>.Art<1>.!** T(ext) oder B(austein)Num1nummer.Num2nummer.Anzahlnummer.Spaltenummer.Sp-diffnummer.!** Spaltendifferenz f}r TabsSp-plusnummer.!** Spaltendifferenz f}r Einf}gepositionen.!** im Baustein. zum Anzeigen in der Dialogzeile. -------------------------------Seitenummer.Zeilenummer.  -00ADBOTTT!T)T1T9TAT 000303dialogwordstar. hole verwaltung 1 Zch1. wenn nicht Zch1 : anzeigen fehler "bitte }ber Vorgang #034Men}#034 aufrufen".. !)19 "Men}" : r}cksprung. lade "WSZCH.TPS" ende. hole verwaltung 6 Vrz-alt.)1** aktuelles Verzeichnis wenn Vrz-alt.<2,3> = ":" : setze Laufwerk = Vrz-alt. l|sche Liste. t unsichtbar. anzeigen zeile 2 spalte 39 Leer-4.1** Seiten- und anzeigen spalte 57 Leer-4.)1** Zeilenanzahl l|schen l|sche zeile 4 bis 25.!)1** Textfenster l|schentext-bau. hilfe "waa". eingeben zeile 5 "Texte oder Bausteine konvertieren? " Art ende. gro~schr Art. vergleiche Art mit "B"bausteine "T"texte. springe text-bau.. Konvertierung in Bausteine: Verzeichnis wechseln, Namen des. Bausteinhandbuchs einlesen, Handbuch |ffnen oder anlegen . -----------------------------------------------------------bausteine. rufe vrz-wechsel mit Baustein 0 text-bau. maske neu zeile 7 Bau-maske mit Text L-name W-text Titel.bau-maske. l|schen in maske.b-name-ein. hilfe "wab". eingeben in maske Text bau-ende. t datei |ffnen Text Num1 bau-anlegen. t ende text. t anfang zeile. wenn tz : t zeilenschaltung. : l|sche tz.. ** am Ende des Bausteinhandbuchs mu~ immer eine Leerzeile sein  t hole breite Breite. springe bau-nummern.bau-anlegen. t datei anlegen Text b-name-ein. t anfang text. l|sche Breite.bau-nummern. t hole seitennummer Seite. t hole zeilennummer Zeile. springe w-name-ein.bau-ende. rufe vrz-wechsel mit Vrz-alt 0. springe text-bau.. Konvertierung von Texten. ------------------------texte. maske neu zeile 7 Text-maske mit L-name W-text Text.text-maske. l|schen in maske. . Namen der Wordstar-Datei eingeben bzw. aus der Liste lesen. ----------------------------------------------------------w-name-ein. l|sche zeile 11. wenn Liste : ende-eingabe abbrechen. : d lesen zeile Block-1 liste-ende. : wenn Block-1.<1,2> = z-seite : springe w-name-ein. : setze W-text = Block-1. : wenn nicht W-text : springe w-name-ein.  sonst : hilfe "wa". : {ndern in maske W-text w-ende. : wenn e$ = 1 : springe l-name-ein.  suche W-text ":" index Num1. rechne Num1 + 1. wenn Art = "B" : setze Titel = W-text... ** f}r Bausteintitel: Name ohne Laufwerk,. ** aber mit Extension und Gro~/Kleinschreibung gro~schr W-text. anzeigen in maske W-text. a datei |ffnen W-text w-name-ein. vergleiche Art mit "B" bausteintitel. setze Text = W-text... ** f}r Textnamen: Name ohne Laufwerk ... suche Text "." index Num1 t-name-vorschl.  l|sche Text..1** ... und ohne Extensiont-name-vorschl. anzeigen in maske Text. wenn Liste : springe text-anlegen.. Wenn ein einzelner Dateiname eingegeben wurde, mu~ der neue Textname. bzw. Bausteintitel best{tigt werden. Wenn aus einer Liste gelesen wird,. kann nur ein neuer Name eingegeben werden, wenn ein Text oder Titel. mit dem vorgeschlagenen Namen schon da ist.. -----------------------------------------------------------------------t-name-ein. P hilfe "wb". {ndern in maske Text. wenn e$ : a datei schlie~en. : springe w-name-ein. gro~schr Text. anzeigen in maske Text. springe text-anlegen.bausteintitel. setze Titel = Titel. anzeigen in maske Titel. wenn Liste : springe titel-einf.titel-eing. hilfe "wbb". {ndern in maske Titel. wenn e$ : a datei schlie~en. : springe w-name-ein.titel-einf. wenn Zeile > 60 : l|sche Feste-seite. : rufe neue-seite. Pneuer-titel. anzeigen fehler "Titel schon vorhanden". springe titel-eing.. Konvertierung mit Hilfe einer Liste:. Namen der Konvertierungsliste eingeben, Liste |ffnen. ----------------------------------------------------l-name-ein. hilfe "wc". eingeben in maske L-name w-ende. wenn nicht L-name : springe w-name-ein. gro~schr L-name. anzeigen in maske L-name. setze L-name-t = L-name. setze L-name-t = L-name-t.  wenn Laufwerk : bilde L-name-t < Laufwerk ":". bilde L-name-t + ".TXT". setze L-text = L-name-t. d datei |ffnen L-text l-name-ein. d anfang. setze Liste.!** Flag setzen: Namen aus Liste lesen springe w-name-ein.. Eingabe von ENDE, w{hrend nach einer Liste konvertiert wird. -----------------------------------------------------------abbrechen. eingeben neu zeile 11 "Konvertierung abbrechen (j/n)? " Zch1. gro~schr Zch1.   vergleiche Zch1 mit "J" liste-ende-1. springe w-name-ein.liste-ende. eingeben neu zeile 11 "Ende der Liste " Zch1.liste-ende-1. l|sche Liste. d datei schlie~en. vergleiche Art mit "T"text-maske "B"w-name-ein. Q$-0045BOTTT!T)T1T9TAT 000304textanfang. Der Text wird angelegt. ----------------------text-anlegen. info text Text Tx1 Num1 text-anlegen-1. anzeigen fehler "Textdatei schon vorhanden". springe t-name-ein.text-anlegen-1. Q anzeigen zeile 2 spalte 33 Leer-4. anzeigen spalte 51 Leer-4.)** erst alte Nummern l|schen anzeigen spalte 33 Seite.)** Seitennummer anzeigen. alle Flags l|schen. ------------------ l|sche Schatten. l|sche Doppel. l|sche Unterstr. l|sche Hoch. l|sche Tief. l|sche Feste-seite. l|sche Kommentar. setze Std-dichte. l|sche Zweit-dichte. l|sche Std-pitch. l|sche Zweit-pitch. l|sche Seite-0. l|sche In-seite-0. l|sche Block-l{nge. . Anfang der Wordstar-Datei lesen. ------------------------------- setze zeiger T-zg = Block-2.<1>. rufe block-lesen mit fertig. setze direkt Zch1 = T-zg. l|sche Tx1. springe zeilen-anfang.. Dateiende, n{chsten Namen lesen. -------------------------------fertig. a datei schlie~en. vergleiche Art mit "B" w-name-ein.text-schlie~. rufe tvz-seitanz mit Text.)** Seitenanzahl ins Verz. schreiben t datei schlie~en. springe w-name-ein. w-ende. vergleiche Art mit "T" text-bau. rufe tvz-seitanz mit Text.)** Seitenanzahl ins Verz. schreiben t datei schlie~en. springe bau-maske.ende. r}cksprung. -005FBOTTT!T)T1T9TAT 000305zeilenpr}fung. Zeilenanfang: Rand oder Punktbefehl?. ------------------------------------zeilen-anfang. anzeigen spalte 51 Zeile.)1** Zeilennummer anzeigen l|sche Sp-diff. l|sche Sp-plus. vergleiche Zch1 mit "." punkt-befehl. wenn Kommentar : bilde Tx1 + "".1** wieder drucken (Code-]) : rechne Sp-diff + 1. : l|sche Kommentar. wenn Block-l{nge : rechne Block-l{nge - 1.  : wenn nicht Block-l{nge : bilde Tx1 + "".A** Code-) :: rechne Sp-diff + 1. vergleiche Block-1. mit #160linker-rand.)1** Leerzeichen, 1. Bit gesetztzeilen-anf-1. wenn Schatten oder Doppel : bilde Tx1 + z-fett. wenn Unterstr : bilde Tx1 + z-unt.. Zeile auf Steuerzeichen untersuchen. -----------------------------------zeile-umsetzen. weiter T-zg zeichen Zch1 bis zeichen Steuerzch block-ende. bilde Tx1 + T-zg.<,A-index>.  hole index A-index von T-zg. suche Steuerzch Zch1 index Num1. wenn Num1 > 22 und Num1 < 25 und nicht In-seite-0 : weiter T-zg. : springe zeile-umsetzen.. ** "\" und "#" haben nur in Kopf- und Fu~zeilen. ** eine besondere Bedeutung springe Num1 unbekannt zweitdichte schatten doppel r}ckschritt tab formfeed return stddichte fester-leer unterstr hoch ! tief dateiende unbekannt unbekannt unbekannt trenncode trennung leerzeichen ustr-zch einf}gung seitennr normalzeichen.. Ersatz }ber Tabelle im Programm "wszch".. ---------------------------------------- rechne Num1 - 24. bilde Tx1 + wszch:Ersatz.(Num1). springe }berschlagen.. Blockende erreicht. Restlichen Inhalt an das Textfeld anh{ngen.. N{chsten Block lesen, weitersuchen. " . ---------------------------------------------------------------block-ende. bilde Tx1 + T-zg.<,A-index>. rufe block-lesen mit dateiende. springe zeile-umsetzen.. Am Zeilenanfang Leerzeichen, bei dem das 1. Bit gesetzt ist:. Einr}ckung. Linken Rand entspr. der Anzahl setzen.. ------------------------------------------------------------linker-rand. l|sche Anzahl.linker-rand-1. setze zeiger T-zg = Block-1.. weiter T-zg solange zeichen #160. #!Y hole index Num1 von T-zg. rechne Anzahl + Num1. rechne Anzahl - A-index. wenn nicht T-zg : rufe block-lesen. : springe linker-rand-1. rechne Anzahl + 1. setze direkt Zch1 = Anzahl. bilde Tx1 + z-kol Zch1 z-kol. setze A-index = Num1. setze zeiger T-zg = Block-2.. springe zeilen-anf-1. $"-0050BOTTT!T)T1T9TAT 000306drucksteuerzeichen. Schattendruck und/oder Doppeldruck wird in Fettdruck umgesetzt.. Ausschalten ist bei Butler nur n|tig, wenn keine Zeilenschaltung folgt.. -----------------------------------------------------------------------schatten. rufe weiter. wenn Schatten : l|sche Schatten.  sonst : setze Schatten. wenn nicht Doppel und Zch1 nicht = #013 : bilde Tx1 + z-fett. %# springe zeile-umsetzen.doppel. rufe weiter. wenn Doppel : l|sche Doppel.  sonst : setze Doppel. wenn nicht Schatten und Zch1 nicht = #013 : bilde Tx1 + z-fett. springe zeile-umsetzen.. Unterstreichung. ---------------unterstr. rufe weiter. wenn Unterstr : l|sche Unterstr.  sonst : setze Unterstr. wenn Zch1 nicht = #013 : bilde Tx1 + z-unt. springe zeile-umsetzen. &$. Das Unterstreichen gilt bei Wordstar nicht f}r Leerzeichen. Daf}r . werden Unterstreichzeichen innerhalb der Unterstreichung benutzt.. In Butler ist das nicht notwendig.. -----------------------------------------------------------------ustr-zch. wenn Unterstr : bilde Tx1 + z-leer.  sonst : bilde Tx1 + "_". springe }berschlagen.. Hoch-/Tiefstellung wird bei Wordstar ein- und ausgeschaltet,. bei Butler durch den jeweils gegens{tzlichen Code aufgehoben '%. ------------------------------------------------------------hoch. wenn Hoch : l|sche Hoch. : bilde Tx1 + z-tief.  sonst : setze Hoch. : bilde Tx1 + z-hoch. springe }berschlagen.tief. wenn Tief : l|sche Tief. : bilde Tx1 + z-hoch.  sonst : setze Tief. : bilde Tx1 + z-tief. springe }berschlagen.. Umschalten zwischen den beiden m|glichen Werten f}r die Dichte mu~ gemerkt (&. werden, weil sich der Punktbefehl ".CW" auf die jeweils aktuelle Dichte. bezieht. Falls so ein Punktbefehl voranging, wird diese Dichte eingestellt,. sonst gilt der im Programm "wszch" angegebene Wert.. ---------------------------------------------------------------------------stddichte. setze Std-dichte. l|sche Zweit-dichte. rechne Sp-diff + 3. wenn Std-pitch : bilde Tx1 + "" Std-pitch.  sonst : bilde Tx1 + wszch:Ersatz.(14). springe }berschlagen. )'zweitdichte. l|sche Std-dichte. setze Zweit-dichte. rechne Sp-diff + 3. wenn Zweit-pitch : bilde Tx1 + "" Zweit-pitch.  sonst : bilde Tx1 + wszch:Ersatz.(15). springe }berschlagen. *(-0066BOTTT!T)T1T9TAT 000307tabulationen. Tab-Code bedeutet eine Tabulation auf die n{chste durch 8 teilbare . Position + 1 (in Programmen gebr{uchlich). ------------------------------------------------------------------tab. hole spalten Spalte von Tx1. rechne Num1 = Spalte / 8. rechne Num1 + 1. rechne Num1 * 8. rechne Num1 + 1. setze direkt Zch1 = Num1. bilde Tx1 + z-tab Zch1 z-tab. +) springe }berschlagen.. Mehrere Leerzeichen hintereinander werden in eine Tabulation umgesetzt.. Falls sie durch Blocksatz entstanden sind, ist das 1. Bit gesetzt (im. Original!). In diesem Fall werden sie als Leerzeichen }bernommen.. -----------------------------------------------------------------------leerzeichen. vergleiche Block-1. mit #160 leer-normal. l|sche Anzahl.leerzeichen-1. weiter T-zg solange zeichen #032. hole index Num1 von T-zg. ,* rechne Anzahl + Num1. rechne Anzahl - A-index. wenn nicht T-zg : rufe block-lesen. : springe leerzeichen-1. setze A-index = Num1. wenn Anzahl = 1 : bilde Tx1 + z-leer. : springe zeile-umsetzen. rechne Anzahl + Sp-plus. l|sche Sp-plus.. ** zus{tzliche Spalten f}r Einf}geposition im Baustein. ** (belegt in Wordstar eine Spalte, in Butler nicht) wenn Anzahl > Sp-diff : rechne Anzahl - Sp-diff. : l|sche Sp-diff. -+. ** die Spaltendifferenz entsteht durch Zeichen,. ** die in Butler auf dem Bildschirm eine Spalte. ** einnehmen, beim Drucken aber nicht vergleiche T-zg mit #012zeile-umsetzen #013zeile-umsetzen #026zeile-umsetzen.. ** keinen Tab am Zeilen-, Seiten- oder Textende hole spalten Spalte von Tx1. rechne Spalte + 1. rechne Anzahl + Spalte. setze direkt Zch1 = Anzahl. bilde Tx1 + z-tab Zch1 z-tab. ., springe zeile-umsetzen.. Leerzeichen im Blocksatz. ------------------------leer-normal. weiter T-zg. springe zeile-umsetzen.. R}ckschritt, fester Leerschritt, (unwirksamer) Trenncode und Trennung . (wirksamer Trenncode) werden einfach durch die entsprechenden Butler-. Codes ersetzt.. ---------------------------------------------------------------------r}ckschritt. bilde Tx1 + z-r}ck. springe }berschlagen.fester-leer. /- bilde Tx1 + "". springe }berschlagen.trenncode. bilde Tx1 + z-trenn. springe }berschlagen.trennung. bilde Tx1 + z-trenn "-". springe }berschlagen.. Ein Stern steht in einem Baustein f}r eine Einf}geposition,. sonst f}r ein normales Zeichen. ----------------------------------------------------------einf}gung. wenn Art = "B" : bilde Tx1 + z-einf. : rufe weiter. : rechne Sp-plus + 1.  sonst : weiter T-zg. 0. springe zeile-umsetzen.. Null-Byte, Ctrl-[, Ctrl-\ und Ctrl-] k|nnen eigentlich nicht vorkommen.. Wenn doch, Fehlermeldung und }berschlagen.. ----------------------------------------------------------------------unbekannt. setze direkt Num1 = Zch1. anzeigen fehler "unbekannter Control-Code " Num1.}berschlagen.** auch Ansprung nach Bearbeitung anderer Codes rufe weiter. springe zeile-umsetzen. 1/-0046BOTTT!T)T1T9TAT 000308zeilenende. Zeilenende. Wenn im Original #141 steht (Return + 1. Bit gesetzt),. einfaches Zeilenende, sonst feste Zeilenschaltung.. Wenn danach kein Line Feed (#010) folgt, sollen 2 Zeilen }bereinander-. gedruckt werden. Dann wird am Zeilenende Code X eingef}gt oder,. falls die Zeile eine Kommentarzeile war, die folgende auch noch. als Kommentar behandelt. R0. Wenn ein Line Feed mit gesetztem 1. Bit (#138) folgt, ist es das Seitenende.. Wenn vor dem Zeilenende (ohne feste Zeilenschaltung) weder ein Leer-. zeichen noch eine Trennung steht, Trenncode einf}gen.. (Tritt hinter einem Bindestrich auf). --------------------------------------------------------------------return. vergleiche Block-1. mit #141 kein-fzs. rufe weiter. wenn Zch1 nicht = #010 : bilde Tx1 + "". 3R wenn Num1 : setze direkt Letztes-zch = Block-2... !** wenn A-index = 1, steht in Letztes-zch. !** das letzte Zeichen des vorigen Blocks vergleiche Letztes-zch mit #031zeile-einf.!** Wordstar-Trenncode #032leer-l|schen. wenn Tx1 : bilde Tx1 + z-trenn. springe zeile-einf.leer-l|schen. setze Tx1 = Tx1.!** Leerzeichen am Zeilenende l|schenzeile-einf. wenn nicht Tx1 : bilde Tx1 + z-fzs. S2T. ** f}r ganz leere Zeilen (zweizeilige Eingabe bei Wordstar)zeile-einf-1. 5S. Bei Ctrl-L (Formfeed) wird eine feste Seitentrennung eingef}gt.. Falls in der Zeile schon etwas steht, mu~ sie erst eingef}gt werden.. -------------------------------------------------------------------formfeed. wenn Tx1 : rufe neue-zeile. setze Feste-seite. springe neue-seite.. Die Datei endet mit Ctrl-Z (#026). Auch wenn beim Block-lesen das Ende. erreicht wird, wird diese Stelle angesprungen.. ---------------------------------------------------------------------- 64dateiende. rufe neue-zeile.!)** Rest in den Text einf}gen t setze breite Breite.!)** Breite f}r die aktuelle Seite springe fertig. 75-0031BOTTT!T)T1T9TAT 000309punktbefehl-verzweigung. Punktbefehle. ------------punkt-befehl. hole l{nge Num2 von Tx1. rechne Num2 + 1. vergleiche Block-2. mit "." punkt-bef-1. springe kommentar-2.!)** Fortsetzungszeile f}r Kommentarpunkt-bef-1. rufe weiter.!)1** Punkt }berspringen wenn Zch1 < "A" : springe kommentar-1. setze Punktbefehl.<,2> = Zch1. setze Zch2 = Zch1. 86 rufe weiter.!)1** 1. Zeichen hinter Punkt setze Punktbefehl.<2> = Zch1. gro~schreibung Punktbefehl. suche Punkt-tabelle Punktbefehl index Num1 kommentar. rufe weiter.!)1** 2. Zeichen hinter Punkt wenn Kommentar und Num1 < 5 : bilde Tx1 + "".)** wieder drucken (Code-]). !)** nicht vor Eintrag in Seite 0 : rechne Sp-diff + 1. : l|sche Kommentar. springe Num1 zeilenabstand zeichendichte 97 seitentrennung bed-seite kopfzeile fu~zeile seitennummer.. Alle Punktbefehle, die nicht umgesetzt werden k|nnen, weil die entsprechende. Einstellung bei Butler im Format vorgenommen wird oder weil es keine . Entsprechung gibt, sowie unbekannte Punktbefehle werden als Kommentare. in den Text gesetzt (als nicht zu druckender Teil zwischen Code-]).. ----------------------------------------------------------------------------kommentar. :8 bilde Tx1 + Zch2.kommentar-1. bilde Tx1. < ".".kommentar-2. wenn nicht Kommentar : bilde Tx1. < "".1** nicht drucken (Code-]) : rechne Sp-diff + 1. : setze Kommentar. springe zeile-umsetzen. ;9-0077BOTTT!T)T1T9TAT 00030Apunktbefehl-ausf}hrung. .LH n: F}r den Zeilenabstand wird Code-A eingef}gt. Nicht alle Werte,. die in Wordstar m|glich sind, k|nnen in Butler benutzt werden. Es wird. versucht, den Wert soweit wie m|glich anzun{hern.. ----------------------------------------------------------------------zeilenabstand. rufe nummer-lesen mit Num1. wenn nicht Num1 : springe zeile-}berschl. rechne Sp-diff + 4. <: bilde Tx1 + "".!)1** Code-A wenn Num1 > 14 : bilde Tx1 + "2,0". : springe zeile-}berschl. wenn Num1 > 9 : bilde Tx1 + "1,5". : springe zeile-}berschl. wenn Num1 > 6 : bilde Tx1 + "1,0". : springe zeile-}berschl. wenn Num1 > 4 : bilde Tx1 + ",75". : springe zeile-}berschl. wenn Num1 > 2 : bilde Tx1 + ",50".  sonst : bilde Tx1 + ",25". springe zeile-}berschl. =;. .CW n: F}r die Zeichendichte wird Code-D eingef}gt. Nicht alle Werte,. die in Wordstar m|glich sind, k|nnen in Butler benutzt werden. Es wird. versucht, den Wert soweit wie m|glich anzun{hern. Der Wert wird als. Standard- oder Zweit-Pitch gemerkt, je nachdem, welche Dichte gerade gilt.. -------------------------------------------------------------------------zeichendichte. rufe nummer-lesen mit Num1. wenn nicht Num1 : springe zeile-}berschl. rechne Sp-diff + 3. >< bilde Tx1 + "".!)1** Code-D wenn Num1 > 11 : setze Num1 = 10. : springe pitch-merken. wenn Num1 > 8 : setze Num1 = 12.  sonst : setze Num1 = 15.pitch-merken. bilde Tx1 + Num1. wenn Std-dichte : setze Std-pitch = Num1.  sonst : setze Zweit-pitch = Num1. springe zeile-}berschl.. .PA: Die folgende Seitentrennung ist fest.. ------------------------------------------seitentrennung. setze Feste-seite. springe zeile-}berschl. ?=. .CP n: Die folgenden n Zeilen sollen beim Seitenumbruch zusammengeh|ren.. F}r Butler klammern mit Code-( und Code-).. ------------------------------------------------------------------------bed-seite. rufe nummer-lesen mit Block-l{nge. wenn Block-l{nge : bilde Tx1 + "".1** Code-] : rechne Sp-diff + 1. springe zeile-}berschl.. Die Seitennummer, Kopf- und Fu~zeilen werden bei Butler }ber Seite 0, @>. die Zusatzseite zum Drucken, gesteuert. Dazu geh|rt ein Eintrag mit. "A:" (Ab Seite) und der aktuellen Seitennummer und entsprechend "S:",. "K:" oder "F:".. In Bausteinhandb}chern wird keine Seite 0 angelegt, sondern der. entsprechende Text direkt in den Baustein gesetzt, so da~ er in. Seite 0 eines Textes abgerufen werden kann.. .PN n: Die Seitennummer f}r das Drucken wird auf n gesetzt.. Bei Butler in Seite 0 mit "S:" ("Seitennummer:"). A?. -----------------------------------------------------------seitennummer. rufe nummer-lesen mit Num1. wenn nicht Num1 : springe zeile-}berschl. rufe seite-0 mit "S". bilde Tx1 + Num1 z-fzs. rufe neue-zeile.. Rest der Zeile }berschlagen. ---------------------------zeile-}berschl. weiter T-zg zeichen Zch1 bis zeichen #013 zeile-weiter. hole index A-index von T-zg. rufe weiter. springe line-feed.zeile-weiter. rufe block-lesen mit dateiende. B@ springe zeile-}berschl.. .HE text oder .FO text: Kopf- oder Fu~zeile zum Drucken.. Bei Butler in Seite 0 mit "K:" ("Kopfzeile:") oder "F:" ("Fu~zeile:").. ---------------------------------------------------------------------kopfzeile. rufe seite-0 mit "K". springe zeile-umsetzen.fu~zeile. rufe seite-0 mit "F". springe zeile-umsetzen.. Ein Doppelkreuz in einer Kopf- oder Fu~zeile wird beim Drucken durch CA. die Seitennummer ersetzt. Bei Butler ist dies Code-#.. --------------------------------------------------------------------seitennr. bilde Tx1 + "".!)1** Code-# springe }berschlagen.. In einer Kopf- oder Fu~zeile bewirkt ein \, da~ das folgende Zeichen. unver{ndert gedruckt wird (z. B. um ein # zu drucken).. --------------------------------------------------------------------normalzeichen. rufe weiter. weiter T-zg. springe zeile-umsetzen. DB-00B5BOTTT!T)T1T9TAT 00030Bunterprog neue-zeile.=====================================================================unterprogramm neue-zeile..=====================================================================. F}gt das Textfeld als neue Zeile in den Text ein (ohne Ausgleich).. Die Position danach ist in der n{chsten (leeren) Zeile.. Wenn die aktuelle Zeile eine Kopf- oder Fu~zeile ist, also auf Seite 0 EC. steht, wird wieder an das Textende zur}ckpositioniert. Falls f}r die. letzte Zeile schon Text gefunden wurde, wird er von dem Zwischenfeld. Tx2 wieder in das Textfeld Tx1 gesetzt.. ----------------------------------------------------------------------neue-zeile. hole spalten Spalte von Tx1. rechne Spalte + 1. t einf}gen zeile Tx1. l|sche Tx1. wenn In-seite-0 : l|sche In-seite-0. : wenn Art = "T" : springe seite-0. FD wenn Spalte > Breite : setze Breite = Spalte. rechne Zeile + 1. r}cksprung.seite-0. wenn Spalte > Breite-0 : setze Breite-0 = Spalte. : t setze breite Breite-0. t ende text. setze Tx1 = Tx2. r}cksprung.00030Cunterprog neue-seite.=====================================================================unterprogramm neue-seite..===================================================================== GE. F}gt vor der aktuellen Zeile eine Seitentrennung ein. Wenn der Flag. Feste-seite gesetzt ist, eine feste, sonst eine variable. Die Breite. der alten Seite wird auf die L{nge der l{ngsten Zeile gesetzt.. --------------------------------------------------------------------neue-seite. t setze breite Breite. l|sche Breite. wenn Feste-seite : t einf}gen seite =. : l|sche Feste-seite.  sonst : t einf}gen seite. rechne Seite + 1. setze Zeile = 1. HF anzeigen zeile 2 spalte 33 Seite. anzeigen spalte 51 Leer-4. l|sche Seite-0. ** noch kein Eintrag in Seite 0 f}r diese Seite r}cksprung.00030Dunterprog nummer-lesen.=====================================================================unterprogramm nummer-lesen mit Feld..=====================================================================. Liest die Nummer aus einem Punktbefehl. Die Anfangsposition ist  IG. hinter den beiden Befehlsbuchstaben, die Position danach hinter der. gelesenen Nummer. Leerzeichen werden }berschlagen, alle darauf. folgenden Ziffern gelesen und in das Feld gesetzt.. --------------------------------------------------------------------argumente..--------Feldnummer.nummer-lesen. l|sche Hilfs-text.nummer-lesen-1. weiter T-zg solange zeichen z-leer block-lesen-1. hole index A-index von T-zg.nummer-lesen-2. JH weiter T-zg solange zeichen "0123456789". bilde Hilfs-text + T-zg.<,A-index>. wenn nicht T-zg : springe block-lesen-2.dateiende. setze Feld = Hilfs-text. r}cksprung.block-lesen-1. rufe block-lesen mit dateiende. springe nummer-lesen-1.block-lesen-2. rufe block-lesen mit dateiende. springe nummer-lesen-2.00030Eunterprog seite-0.=====================================================================unterprogramm seite-0 mit Zeichen. KI.=====================================================================. Positioniert im Text (nicht im Bausteinhandbuch) an das Ende der Seite 0.. Wenn noch keine Seite 0 vorhanden ist, wird sie angelegt.. Wenn noch kein Eintrag f}r die aktuelle Seite in Seite 0 steht,. wird "A:" und die aktuelle Seitennummer eingetragen.. Das }bergebene Zeichen wird mit einem Doppelpunkt dahinter in das. Textfeld gesetzt.. -------------------------------------------------------------------- LJargumente..--------Zeichen.** Zeichen, das am Zeilenanfang in Seite 0 stehen sollseite-0. setze In-seite-0. vergleiche Art mit "B" seite-0-bau..!** keine Seite 0 im Bausteinhandbuch setze Tx2 = Tx1.!** bisherigen Zeileninhalt aufbewahren l|sche Tx1. t posit seite 0 seite-0-anl.seite-0-pos. t ende seite. wenn nicht Seite-0 : t einf}gen "A:" Seite z-fzs..!** "Ab Seite:" setze Seite-0. springe seite-0-e.seite-0-bau. MK wenn Kommentar : bilde Tx1 + "".)1** wieder drucken (Code-]) : l|sche Kommentar. wenn Tx1 : bilde Tx1 + z-fzs. : t einf}gen zeile Tx1.seite-0-e. bilde Tx1 = Zeichen ":". r}cksprung.. Seite 0 anlegen. ---------------seite-0-anl. t einf}gen seite 0. t posit seite 0. setze Breite-0 = 79. t setze breite Breite-0. springe seite-0-pos.00030Funterprog weiter.=========================================================== NLunterprogramm weiter..===========================================================. Weitersetzen des aktuellen Zeigers und gegebenenfalls Lesen. eines neuen Satzes.. -----------------------------------------------------------weiter. weiter T-zg. wenn T-zg : rechne A-index + 1.  sonst : rufe block-lesen mit dateiende. setze direkt Zch1 = T-zg. r}cksprung.dateiende. setze Zch1 = #026.!)** Ctrl-Z = Dateiende r}cksprung.000310unterprog block-lesen OM.=====================================================================unterprogramm block-lesen mit Dateiende..=====================================================================. Die n{chsten 256 Bytes aus der Wordstar-Datei werden gelesen.. Es wird eine Kopie davon angefertigt, in der das 1. Byte jedes. Zeichens gel|scht ist. Auf diese Kopie wird ein Zeiger gesetzt.. --------------------------------------------------------------------argumente..--------Dateiendemarke. Npblock-lesen. setze direkt Letztes-zch = T-zg.<256>.. ** aufbewahren, falls dahinter eine Zeilenschaltung folgt a lesen Block-1 fertig. setze alles Block-2 = #127. rechne Block-2 und Block-1.)1** 1. Bit ausmaskieren setze A-index = 1. setze zeiger T-zg = Block-2.. r}cksprung.fertig. r}cksprung Dateiende. f t einf}gen titel Titel neuer-titel. hole l{nge Num1 von Titel. rechne Num1 = 79 - Num1. setze direkt Zch1 = Num1.. ** Kommentarzeile: bilde Tx1 = "" z-tab Zch1 z-tab z-fett Titel z-fzs.. **  Tab ' , Fettdruck 9 feste Zeilenschaltung t einf}gen zeile Tx1. rechne Zeile + 2. springe anf-anzeigen. ; t datei anlegen Text t-name-ein. t anfang text. setze Seite = 1. setze Zeile = 1. l|sche Breite.. ab hier gemeinsam f}r Text- und Baustein-Konvertierung. ------------------------------------------------------anf-anzeigen. hilfe " ". anzeigen zeile 11 spalte 59 "bitte warten". 21. ** kein Linefeed hinter dem Return --> kein Zeilenvorschub bilde Tx1 + z-fzs. springe zeile-einf.kein-fzs. rechne Num1 = A-index - 1. 43s rufe neue-zeile.line-feed. wenn Zch1 nicht = #010 : wenn Kommentar : setze Zch1 = ".".9** noch Kommentar. !** (Trick, um zu den Punktbefehlen zu kommen) : springe zeilen-anfang. vergleiche Block-1. mit #010 neue-zeile.neue-seite. rufe neue-seite.neue-zeile. rufe weiter. springe zeilen-anfang.