Hypra-Text
Wieder einmal können wir Ihnen ein Programm oder besser gesagt ein Programmsystem aus unserer Hypra-Reihe präsentieren, das alle erforderlichen Befehle enthält, die zu einem komfortablen Textverarbeitungsprogramm gehören.
Hypra-Text ist für den kommerziellen Einsatz geschrieben worden. Daher sind in diesem Programm alle deutschen Umlaute und zusätzliche Sonderzeichen zur Druckersteuerung (Bild 1) wie zum Beispiel »unterstreichen ein/aus« integriert. Es sind Funktionen vorhanden, die kaum ein anderes Programm dieser Art enthält.

So handelt es sich bei Hypra-Text um ein Mehrbenutzersystem, das es gestattet, persönliche Texte mit einem Codewort zu versehen. Dadurch kann nur derjenige auf den Text zugreifen, der das Codewort kennt. Für alle anderen sind diese Texte gesperrt. Das heißt sie können weder editiert, geladen noch gedruckt werden. Eine der hervorstechendsten Eigenschaften von Hypra-Text ist die klare und intelligente Benutzerführung. Sobald Sie sich im Hauptmenü (Bild 2) befinden, macht Sie das Programm darauf aufmerksam, welche sinnvollen Funktionen mit welchen Tasten gewählt werden können.

Weiterhin ist die Möglichkeit zur Verwendung von sogenannten Textvariablen erwähnenswert. Wörter oder kurze Sätze wie zum Beispiel eine Anrede-Formel (»Sehr geehrter Herr…«) oder Schlußsätze (»Mit freundlichen Grüßen…«) lassen sich in Variablen speichern. Mit drei Tastendrücken lassen sich diese Textbausteine in Ihren Text einsetzen. Weiterhin können Sie sehr einfach sogenannte Masken erstellen. Das sind zum Beispiel Briefformulare, die Sie sehr oft brauchen. Sie tippen den Vordruck wie einen normalen Text ein, und setzen an alle Stellen, die später ergänzt werden müssen (Name, Adresse, etc.) eine Markierung. Diese Maske können Sie dann mit einem Tastendruck ausfüllen. Dies sind alles Merkmale, die bei einem Programm zum Abtippen durchaus nicht selbstverständlich sind.
Hypra-Text ist zum größten Teil in Basic geschrieben. Dadurch läßt es sich leicht an eigene Bedürfnisse anpassen. Alle Routinen, die in Basic zu viel Zeit beanspruchen, sind in Maschinensprache realisiert worden. Trotzdem ist es angebracht, Hypra-Text zu compilieren. Dazu eignet sich allerdings nur der Austro-Compiler. In compilierter Form erreicht Hypra-Text etwa die gleiche Geschwindigkeit, wie vergleichbare Programme in reiner Maschinensprache. Neben dem eigentlichen Textverarbeitungsprogramm wird in der nächsten Ausgabe ein Druckertreiber mit integrierter Centronics-Schnittstelle erscheinen, mit dem, im Gegensatz zu den meisten anderen Textverarbeitungsprogrammen, sogenannte Formblätter erstellt werden können. Sie geben dem auszudruckenden Schriftstück eine bestimmte Form. So lassen sich mit ihm Fuß- und Kopfzeilen mit und ohne automatischer Seitennumerierung definieren. Außerdem gehört zu Hypra-Text noch eine kompfortable Adreßverwaltung, die wir ebenfalls in einer der nächsten Ausgaben veröffentlichen.
(Oliver Fendt/ah)Mit Hypra-Text haben Sie ein sehr leistungsfähiges Programm vorliegen. Besonders die Arbeit mit Textvariablen und die umfangreichen Möglichkeiten bei der Druckeransteuerung sind hervorzuheben. Hypra-Text gehört sicherlich zu den besten Programmen, die man abtippen kann.
Tippen Sie zuerst das Hauptprogramm (Listing 1) ab und speichern es auf Diskette. Anschließend ist noch eine Maschinenroutine »PROFIP V1.0« (Listing 2) und das Programm »Zloader« (Listing 3) einzugeben. Die Maschinenroutine übernimmt alle Aufgaben, die in Basic zu lange dauern würden. Das Programm »Zloader« ist ein in sich geschlossenes Basic-Programm, das es Ihnen erleichtert, einen beliebigen Drucker an das Programm anzupassen. So läßt sich mit diesem Programm zum Beispiel sehr leicht der Code eines Zeichens ändern, das zum Drucker gesendet wird. Um Ihnen Tipparbeit zu ersparen, ist in diesem Programm eine Routine integriert, die einen Großteil des Zloaders selbst generiert. Haben Sie das Programm »Zloader« abgetippt, ist es das erste Mal mit »RUN20000« zu starten. Auf dem Bildschirm erscheinen nun nacheinander die erzeugten Basic-Zeilen. Meldet sich das Programm mit READY, sind zwei Tabellen erzeugt worden.
Die erste Tabelle steht in den Zeilen 8000 bis 8500. Hier wird jedem Zeichen, das hinter der DATA-Anweisung steht, ein Drucker-Code zugeordnet. Sie werden feststellen, daß in den Zeilen 8000 bis 8060 statt des Zeichens nur ein Punkt steht. Dieser Punkt steht für die Tastenkombinationen, die zusammen mit der »CTRL-Taste« erreicht werden. So bedeutet der erste Punkt in Zeile 8000, hinter dem eine 1 steht, »CTRL A«. Der zweite in Zeile 8002, hinter dem eine 2 steht, bedeutet folglich »CTRL B«. Möchten Sie zum Beispiel einen Drucker an den User-Port über die im Programm »Profiprint« (erscheint in der nächsten Ausgabe) integrierte Centronics-Schnittstelle betreiben, so sind in den Zeilen 8000 bis 8500 alle Codes für Großbuchstaben durch die entsprechenden Codes für Kleinbuchstaben und die Codes für Kleinbuchstaben durch die entsprechenden Codes für Großbuchstaben zu ersetzen. Der Grund dafür ist, daß die meisten Drucker, die über eine Centronics-Schnittstelle betrieben werden, die Zeichen im ASCII-Format drucken. Der Commodore-Zeichensatz weicht jedoch insofern von dem Standard-ASCII-Zeichensatz ab, daß die Codes für Groß- und Kleinbuchstaben vertauscht sind. Achten Sie bei der Anpassung des Zeichensatzes darauf, daß im Zeilenbereich 8000 bis 8500 weder Zeilen hinzugefügt noch gelöscht werden dürfen. Auch ist es unzulässig, Zeichen zwischen den Anführungszeichen zu ändern.
Ein besonderer Leckerbissen befindet sich in der zweiten Tabelle, in den Zeilen 8500 bis 9000. Hier werden alle Umlaute und Sonderzeichen sowohl für den Bildschirm wie auch für den Drucker definiert.
Ersetzen Sie die erzeugten Zeilen durch das Listing 4. Denn in diesem Listing wurden die Steuerzeichen so definiert, wie sie in der Anleitung zu »Hypra-Text« erklärt werden. Sollten Ihnen die auf dem Bildschirm erzeugten Umlaute und Sonderzeichen nicht gefallen, oder stimmen die Drucker-Steuerzeichen nicht mit Ihrem Drucker überein, so besteht die Möglichkeit, die Umlaute, Sonderzeichen und Drucker-Steuerzeichen dem eigenen Bedarf anzupassen. Die Zeilen in Listing 4 sind ähnlich aufgebaut, wie die von 8000 bis 8500. Hier steht jedoch nicht nur ein Code, sondern acht Codes für das Bildschirm-Zeichen und acht Codes für das Drucker-Steuerzeichen. Die acht Codes für ein Bildschirmzeichen werden wie folgt erstellt:
- Zeichnen Sie ein 8x8-Punkte-Raster (Bild 1).
- Wo später ein Punkt auf dem Bildschirm gesetzt werden soll, füllen Sie das entsprechende Kästchen aus.
- Addieren Sie die Spaltenwerte der ausgefüllten Kästchen und schreiben Sie sie hinter die Zeile.
- Übernehmen Sie die Zeilenwerte der Reihe nach in die DATA-Zeile.
Beispiel:
8534 DATA"{Commodore-E}",102,0,60,102,102,102,60, 0,185,196,196,196,185,128,0,0
definiert das Bildschirm- und Druckerzeichen »ö«.
- Die Zahlenreihe »102,0,60,102,102,102,60,0,« definiert das Bildschirm-Zeichen,
- die Zahlenreihe »185,196,196,196,185,128,0,0« definiert das Drucker-Zeichen.
Bestimmte Drucker-Steuerzeichen verlangen weniger als acht Codes. So bedeutet zum Beispiel 27, 45, 49 »unterstreichen ein« auf einem Epson-Drucker. Soll eine solche Befehlssequenz an den Drucker übergeben werden, so ist diese nach der Definition des Bildschirmzeichens unmittelbar einzugeben. Der Rest der Zeile ist mit Nullen aufzufüllen. In diesem Fall mit fünf Nullen.
Beispiel:
8500 DATA"(Zeichen)",1,2,3,4,5,6,7,8,27,45,49,0,0,0,0,0
Es müssen also nach der Definition des Bildschirmzeichens immer acht Codes für das Drucker-Steuerzeichen folgen, auch dann, wenn weniger Codes an den Drucker übergeben werden. Nullen im Drucker-Steuerzeichen sind durch den ASCII-Wert 48 zu ersetzen.
Wollen Sie das Bildschirm-Zeichen beibehalten, so ist nach dem in Anführungsstrichen stehenden Zeichen die Zahl 999, gefolgt von den acht Drucker-Codes, einzugeben. Alle Codes müssen, wie üblich bei DATA-Anweisungen, durch ein Komma getrennt werden.
Beispiel:
8500 DATA"(Zeichen)",999, 27,45,49,0,0,0,0,0
Wenn Sie in den Zeilen 8500 bis 9000 etwas ändern, ist darauf zu achten, daß Zeilen weder gelöscht, übersprungen oder hinzugefügt werden dürfen. Auch ist unbedingt darauf zu achten, daß die Reihenfolge der Steuerzeichen und Umlaute eingehalten wird. Denn das in der nächsten Ausgabe erscheinende Programm »Profiprint« erkennt aufgrund der Reihenfolge, ob es sich um ein Drucker-Sonderzeichen oder einen Umlaut handelt.
Haben Sie den Zeichensatz Ihren Wünschen angepaßt, ist das Programm »ZLOADER« nochmals mit »RUN« zu starten. Auf dem Bildschirm erscheinen jetzt nacheinander die neu definierten Sonderzeichen und Umlaute. Gefällt Ihnen eines der Zeichen nicht, so können Sie das Programm mit der RUN/STOP-Taste jederzeit unterbrechen, die entsprechende DATA-Zeile ändern und das Programm noch einmal mit RUN starten. Sind alle Zeichen zu Ihrer Zufriedenheit definiert, erzeugt das Programm zwei Files auf Diskette. Einen Bildschirm-Zeichensatz mit dem Namen »ZEICHEN DIN« und einen Drucker-Steuersatz mit dem Namen »ZEICHEN DDIN«. Außerdem wird der Zloader unter dem Namen »LOADER DIN 2.1« mit den abgeänderten DATA-Zeilen gespeichert.
Noch eines vorweg: Im Hauptprogramm von Hypra-Text werden Sie gefragt, ob Sie mit der DIN- oder normalen C 64-(CBM-)Tastatur arbeiten möchten.
Der Unterschied zwischen den beiden Tastaturen liegt darin, daß bei der DIN-Tastatur die Tasten so belegt sind, wie Sie es von einer Schreibmaschine gewohnt sind. Es stimmen also die Zeichen die auf dem Bildschirm erscheinen nicht mit dem überein, was auf den Tasten steht. Wählen Sie dagegen die CBM-Tastatur, so erscheint genau das auf dem Bildschirm, was auf den Tasten steht. Trotzdem existieren auch hier die deutschen Umlaute, die über die Commodoretaste plus E,R,T,Z,U,I erreichbar sind. Um aber mit der CBM-Tastatur arbeiten zu können, erwartet Hypra-Text zwei Files auf der Diskette, die noch nicht erwähnt wurden. Bei den beiden Files handelt es sich um »ZEICHEN B« und »ZEICHEN D«. Diese beiden Files können aber sehr einfach generiert werden. Ersetzen Sie einfach im Programm »Zloader« in Zeile 40040 »ZEICHEN DIN« durch »ZEICHEN B« und in Zeile 40001 »ZEICHEN DDIN« durch »ZEICHEN D«. Anschließend ist das Programm Zloader nochmals mit RUN zu starten. Die erforderlichen Files werden nun auf der Diskette generiert.
Im weiteren Verlauf dieser Anleitung wird Ihnen auffallen, daß vor jeder Funktion zwei Zahlen stehen, die jeweils durch einen Punkt getrennt sind. So lesen Sie zum Beispiel »1.1.Eingabe des Textes«. Um diese Funktion zu erreichen, drücken Sie vom Hauptmenü aus einfach zweimal die »1«.
Das Hauptprogramm von »Hypra-Text«
Bevor Sie die Arbeit mit Hypra-Text beginnen, überzeugen Sie sich davon, daß sich folgende Files auf Ihrer Diskette befinden:
- HYPRA-TEXT (in Basic, oder was zu empfehlen ist, in compilierter Form. Da im Programm SYS-Aufrufe mit zusätzlicher Parameterübergabe enthalten sind, eignet sich zum Compilieren nur der Austro-Compiler. Die Leser-Service-Diskette enthält neben dem Basic-Programm auch das compilierte File.)
- PROFIP V1.0 (Maschinenroutinen)
- ZEICHEN DIN (Bildschirm-Zeichen)
- ZEICHEN DDIN (Drucker-Steuerzeichen)
und wenn die CBM-Tastatur gewünscht ist:
- ZEICHEN B (Bildschirm-Zeichen)
- ZEICHEN D (Drucker-Steuerzeichen)
Bevor Sie das Programm mit RUN starten, müssen Sie eine persönliche Kennung und die Laufwerksnummer Ihrer Floppy eingeben. Die Kennung dient dem Datenschutz: Außer Ihnen hat niemand Zugriff auf persönliche Daten und Texte. Dies geschieht mit folgenden Befehlen:
POKE 930,ASC("1.Buchstabe"):POKE 931,ASC("2.Buchstabe") :POKE 932,Laufwerksnummer
Als Kennung können Sie zum Beispiel die Initialen Ihres Namens eingeben. Die Laufwerksnummer ist im Normalfall »8«.
In einer der nächsten Ausgaben wird, passend zu Hypra-Text, eine Adreßverwaltung erscheinen, die diese POKEs durch die automatische Abfrage eines Geheimwortes überflüssig macht.
Nun werden Sie gefragt, ob Sie mit der DIN- oder der CBM-Tastatur arbeiten wollen. Ist die DIN-Tastatur gewünscht, drücken Sie einfach auf die RETURN-Taste. Ansonsten ist das Wort »din« durch »cbm« zu ersetzen. Es werden dann automatisch die erforderlichen Files nachgeladen.
Hypra-Text erwartet jetzt die Eingabe des Datums im Format TTMMJJ. Der 1. Januar 1986 wird zum Beispiel mit 010186 angegeben.
1.Text erstellen
Nach Wahl dieses Punktes kommen Sie in ein Untermenü.
1.1.Eingabe des Textes
Die Eingabezeile, also die Zeile, in der der Cursor steht, befindet sich immer in der Mitte des Bildschirms. Nach jeder abgeschlossenen Zeile wird der gesamte Text um eine Zeile nach oben geschoben. Um einen eingetippten Text zu editieren, können Sie mit RETURN den Text eine Zeile nach unten und mit F5 eine Zeile nach oben schieben. Die Tasten »Cursor rechts« und »Cursor-Iinks« behalten ihre alte Funktion bei. Mit »Cursor-hoch« und »Cursor-runter« können Sie ein Wort vor oder zurückspringen. Die HOME-Taste hat bei Hypra-Text die Funktion »Tabulator«. Dazu befindet sich in der fünften Bildschirmzeile von oben eine Tabulatorzeile. Wenn die Taste HOME gedrückt wird, so springt der Cursor bis zur nächsten »+«-Marke. Der Leerraum bei einem Tabulator-Sprung wird mit Punkten gefüllt, die aber nicht gedruckt werden.
Weiterhin sind die folgenden Tasten mit Drucker-Steuerzeichen belegt, vorausgesetzt, Listing 4 wurde wie abgedruckt in den Zloader übernommen:
Commodore-Taste und
- n: Breitschrift an
- m: Breitschrift aus
- g: Fettschrift an
- h: Fettschrift aus
- j: Italic-Schrift an
- k: Ialic-Schrift aus
- c: Unterstreichen an
- v: Unterstreichen aus
Diese Steuerzeichen sind natürlich nur dann sinnvoll, wenn der angeschlossene Drucker sie auch ausführen kann.
Die CLR-Taste löscht die Zeile, in der sich der Cursor befindet. SHIFT-RETURN markiert einen Absatz.
Die Funktionstasten sind wie folgt belegt:
- F1: zum Hauptmenü (der erstellte Text bleibt natürlich erhalten)
- F2: Einfügen. Man hat jetzt zwei Möglichkeiten, den Text einzufügen:
- F3: Der Computer fügt ab der Cursor-Zeile die eingegebene Anzahl an Leerzeilen in den Text ein,
- F5: Alles was rechts vom Cursor steht wird verschoben, und zwar so lang, bis eine Funktionstaste gedrückt wird.
- F3: mehrere Zeilen löschen. Ab der Cursorzeile wird die eingegebene Anzahl an Zeilen gelöscht.
- F4: Block kopieren. Die aktuelle Cursorposition wird nun als Blockanfang interpretiert; das Blockende wird mit den Tasten F5 und F7 verschoben und mit F3 markiert. Danach müssen Sie mit den selben Tasten angeben, an welche Stelle im Text dieser Block kopiert werden soll.
- F5: Cursor eine Zeile hoch.
- F6: Nach Drücken dieser Taste können Sie mit F5 oder F6 eine Textseite vor- oder zurückblättern.
- F7: Diese Taste schaltet zwischen den Hilfstafeln im unteren Teil des Bildschirms hin und her.
- F8: Text nachladen. Nach der Eingabe des Namens wird der Text geladen und ab der Cursor-Zeile eingefügt.
Die Druckerbefehle von Hypra-Text
Diese Befehle bewirken nur etwas, wenn der Text auf dem Drucker ausgegeben wird. Auf dem Bildschirm werden sie nicht ausgeführt! Alle Befehle werden direkt in den Text hineingeschrieben.
noformat
Druckt den Text so, wie er auf dem Bildschirm steht.
mittezen
Druckt den Text mittezentriert.
rechtsfo
Druckt den Text rechtsbündig.
formnorm
Hebt »mittezen« und »rechtsfo« auf.
dezlen=xy
Dient zur Formatierung von Zahlen innerhalb des Textes. dezlen=34 bedeutet zum Beispiel, daß alle Zahlen auf drei Stellen (=x) vor, und vier Stellen (=y) nach dem Komma formatiert werden.
1.2.Eingabe des Textnamen
Der hier eingegebene Name kann in Punkt 5.5. durch »=« übernommen werden. Er wird im Hauptmenü angezeigt.
1.3.Eingabe über Maske
Die Erstellung einer Maske (zum Beispiel für Serienbriefe) ist äußerst einfach.
Sie tippen im Texteingabemodus Ihre Maske als normalen Text ein. An alle Stellen, an denen Sie später zum Beispiel eine Adresse eingeben wollen, setzen Sie eine Markierung (Commodore-Taste und »Klammeraffe«). Dann speichern Sie die fertige Maske ab, und wählen Punkt 1.3.
1.4.Text löschen
Es wird der gesamte, im Speicher befindliche Text gelöscht. Der Computer zeigt dabei an, welche Zeile er gerade löscht. Sicherheitshalber verlangt er vorher noch eine Bestätigung.
1.5.Text ausfüllen
Hier können Sie an alle Zeilen Punkte oder bestimmte Zeichen anhängen. Ob links oder rechts vom Text, und ab welcher Zeile bestimmen Sie. Dies ist zum Beispiel sinnvoll, wenn Sie eine Tabelle haben und an jede dritte Zeile einen Namen oder ähnliches anhängen wollen.
Wenn Sie die Frage »Neben den Text (j/n)« mit »n« beantworten, so werden alle angegebenen Zeilen gelöscht und durch die Änderung ersetzt.
1.6.Eingabe Tabulatorzeile
Hier können Sie die Tabulatorzeile des Texteingabemodus ändern. Dazu benützen Sie die Cursor-Tasten. Mit »+« markieren Sie einen Tabulator-Stop.
2.1.Text ändern
Entspricht der Eingabefunktion (Punkt 1.1.). Sie geben nur zusätzlich mit an, ab welcher Zeile Sie ändern wollen.
2.2.Worttausch
Sie können den Text nach einem bestimmten Wort durchsuchen und durch ein anderes ersetzen lassen. Der Computer fragt Sie nach jedem gefundenen Wort, ob Sie es ändern wollen.
2.3.Text löschen
Identisch mit Punkt 1.4.
3.Profiprint laden
Um einen Text auszudrucken, benötigt man das Programm Profiprint. Dieses wird in der nächsten Ausgabe veröffentlicht.
4.Bildschirmausgabe
Über diesen Punkt können Sie sich eine Übersicht über Ihren Text verschaffen. Es wird neben dem Text eine Zeilenmarkierung ausgegeben. (Diese Funktion ist auch mit F3 erreichbar.)
5.1.Text vergleichen
Der im Arbeitsspeicher befindliche Text wird mit dem gleichnamigen auf Diskette verglichen.
Diese Funktion ist auch hervorragend geeignet, um sich einen auf Diskette befindlichen Text anzusehen, ohne den gerade bearbeiteten zu löschen. Der Computer druckt nämlich alle Zeilen des Textes aus, die nicht mit dem Text im Speicher übereinstimmen. Nach jeder Zeile ist eine Taste zu drücken.
F1 bricht diesen Vorgang vorzeitig ab.
5.2.Text umbenennen
Entspricht dem RENAME-Befehl der Floppy. Man kann einem auf Diskette befindlichen Text einen anderen Namen geben.
5.3.Text löschen
Entspricht dem SCRATCH-Befehl der Floppy. Ein Text wird von Diskette gelöscht.
5.4.Text laden
Ein Text wird von Diskette geladen. Sie haben dabei die Wahl zwischen:
5.4.1.Text löschen und neuen Text laden
Der Arbeitsspeicher wird zuerst gelöscht, und dann der gewünschte Text geladen.
5.4.2.Text hinter alten Text laden
Der zu ladende Text wird an den Text angehängt, der im Arbeitsspeicher steht.
5.5.Text speichern
Der Inhalt des Arbeitsspeichers wird auf Diskette abgelegt.
5.6.Inhaltsverzeichnis
Es wird dabei nicht das gesamte Directory der Diskette ausgegeben, sondern nur alle Texte mit Namen, Datum der Eingabe, und der persönlichen Kennung, die verwendet wurde. (POKE 930,…)
Dabei ist wichtig, daß man nur auf seine eigenen Texte zugreifen kann.
6.Rechnen
Hier ist ein kleiner Taschenrechner eingebaut. Die Rechenergebnisse werden in drei Variablen gespeichert, und können im Text verwendet werden.
Textvariable
7.Variablen
Die Arbeit mit Textvariablen ist eine der ganz großen Stärken von Hypra-Text. Wenn Sie einen Text schreiben, in dem zum Beispiel sehr oft das Wort »Computer« vorkommt, dann speichern Sie dieses Wort einfach in einer der 50 (fünfzig!) Textvariablen und wählen bei der Texterstellung diese Variable durch » @ « und einer zweistelligen Variablennummer an. (Aus Variable 1 wird 01 usw.) Hypra-Text ersetzt diese Variablennummer nach dem nächsten RETURN automatisch durch ihren Inhalt. Voraussetzung ist allerdings, daß Sie mit Punkt 7.3. diese Funktion aktiviert haben.
7.1.Variablen zeigen
Der Inhalt aller fünfzig Variablen wird auf dem Bildschirm ausgegeben. Durch beliebigen Tastendruck können Sie weiterblättern.
7.2.Variablen eingeben
Der Inhalt einer Variable darf maximal 40 Zeichen lang sein.
7.3.Variablen an
Damit wird Hypra-Text mitgeteilt, daß man mit Textvariablen arbeiten möchte.
7.4.Variablen aus
Die Variablenfunktion wird ausgeschaltet.
7.5.Variablen in Text umwandeln
Man hat zum Beispiel einen Serienbrief erstellt. Für die Adresse wurden Variablen verwendet. Diese sollen erst später durch einen entsprechenden Inhalt ersetzt werden.
Man läßt also bei der Texterstellung die Variablen ausgeschaltet (7.4.), und speichert den Text. Später gibt man unter Punkt 7.2. zum Beispiel eine bestimmte Adresse in die Variablen ein. Dann wählt man Punkt 7.5. Hypra-Text ersetztjetzt die Variablen durch Klartext.
7.6.Variablen in Textspeicher schreiben
Wenn Sie eine Anzahl von Variablen erstellt haben, so möchten Sie diese natürlich zur späteren Verwendung speichern. Dieser Menüpunkt schreibt den Inhalt der Variablen in den Textspeicher in die Zeilen 1-50. Von dort aus können Sie die Variablen dann wie einen normalen Text speichern.
7.7.Textspeicher in Variablen schreiben
Um einmal definierte Variablen später wieder verwenden zu können, laden Sie den unter 7.6. gespeicherten Variablentext in den Arbeitsspeicher und rufen dann diesen Punkt auf. (Variablen anschalten nicht vergessen!)
7.8.Variablen aus Dateiverwaltung
In einer der nächsten Ausgaben wird eine Dateiverwaltung veröffentlicht. Mit diesem Menüpunkt können Sie Daten aus der Dateiverwaltung in Hypra-Text übernehmen. Genauere Angaben folgen.
(Oliver Fendt/ah/tr)
0 goto10 1 ifpeek(198)>0thengeta$:return 2 gosub30600:goto1 3 print"{down}{down}{down}{down} + Bitte warten + Ich a r b e i t e + ":return 4 poke908,0:poke918,30:poke920,11:poke917,36:poke924,0:a$="":return 5 sys50176,a$,a$:f=peek(913):return 9 goto30001 10 goto 22000 11 gosub31000:poke650,128:poke2,184 12 gosub40000 14 print:l$=a6$ 15 kl=1:printchr$(14) 17 dima$(600):an=0:max=600 26 print"{clr}";pt$;"{down}" 27 goto100 30 a$=left$(a$,len(a$)-1):return 31 ifright$(a$,1)=" "thengosub30:goto31 32 return 40 a$=left$(a$(t),len(a$(t))-1):return 70 rem ** unterprogramm ** 71 print:print"Geben sie ein,von welcher Zeilennr (0=Anfang)" 72 inputv:ifv=0thenv=1 73 print"Geben sie ein,bis zu welcher Zeilennr (0=Ende)" 74 inputb:ifb>maxthenprint"Zu gross !":goto74 75 ifb=0thenb=an 79 return 80 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}":return 90 printleft$(a6$,mb):return 95 gosub80:fori=1to4:gosub90:next:gosub80:return 100 print"{clr}";pt$;:close2:close15:close5:poke198,0:ba=0:dr=0:br=0:sp=0 101 ifan/max>0.7thenb1$="{rvon}"+str$(int((an/max)*100))+" % VOLL !!!{rvof}":x=fre(9) 102 ifan/max>0.7thenb2$="{rvon}[5] = Speichern{rvof}":b3$="{rvon}ACHTUNG{rvof}":sp=1 103 v$(50)=d$:v$(47)=ba$:v$(46)=str$(rr):v$(45)=str$(rr+rr*(mw/100)) 104 v$(44)=str$(rr*(mw/100)) 105 poke54296,0:ifpeek(1022)=200thenam=2 107 print"{home}";pt$; 109 poke53265,27 110 print"{down} Datum: ";d$ 111 gosub300:print"{home}{down}{down}{down}" 112 print" {SHIFT--} {rvon}System {rvof} :";b1$ 113 print" {SHIFT--} {rvon}Empfehlung{rvof} :";b2$ 114 print" {SHIFT--} {rvon} {rvof} :";b3$ 115 print"{down} {SHIFT--} Text name :";t1$ 116 print" {SHIFT--} Platz :";max-an;"Zeilen frei" 120 rem ** menu ** 125 print"{down}{down}{rght}{rght}{rght}-1- Text erstellen" 130 print"{rght}{rght}{rght}-2- Text aendern" 132 print"{rght}{rght}{rght}-3- Profiprint laden" 134 print"{rght}{rght}{rght}-4- Bildschirmausgabe" 135 print"{rght}{rght}{rght}-5- Arbeiten mit Diskette " 136 print"{rght}{rght}{rght}-6- ";fu$ 137 print"{rght}{rght}{rght}-7- Arbeiten mit Variablen" 145 print"{down}{down}{rght}{rght}Die Funktionstasten" 147 print"{rght}{rght}f1= Eingabe f3=Bildschirmausgabe" 148 print"{rght}{rght}f5= Ende "; 149 ifsp=1thengosub30601 150 geta$:ifa$=""then150 154 ifa$="{f3}"then7000 155 ifa$="{f1}"then1015 156 ifa$="{f5}"then8000 197 ifval(a$)<1orval(a$)>8then150 199 x=val(a$):onxgoto1000,2000,56100,7100,5000,20000,9700 200 goto 100 260 return 300 rem ** bs aufbau ** 301 ifba=1thenreturn 310 a1$=" {CBM-A}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-S}" 320 a2$=" {CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W}" 330 a3$=" {CBM-Z}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-X}" 340 a4$=" {SHIFT--}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{SHIFT--}" 350 print"{home}{down}{down}":printa1$:printa4$:printa4$:printa4$:printa2$ 360 printa4$:printa4$:printa2$ 370 fort=1to9:printa4$:next:printa2$ 380 printa4$:printa4$:printa4$:printa3$; 499 ba=1:return 1000 print"{clr}";pt$ 1001 print"{home}{down}{down}{rvon} * * Textprogramm * * Eingabe * * {down}{rvof}{down}{down}";:ta=0:ta$="" 1003 print"{rvon}=1= Eingabe des Textes" 1004 print"=2= Eingabe des Textnames" 1005 print"=3= Eingabe ueber Maske" 1007 print"=4= Text loeschen" 1008 print"=5= Den Text ausfuellen":print"=6= Eingabe Tabulatorzeile" 1009 gosub1 1010 ifa$="0"ora$="{f1}"then100 1011 b1$="Aendern [2]":b2$="Speichern [5]":t=val(a$) 1013 ift=0then1009 1014 ontgoto1015,1850,33000,1300,9400,1830,100 1015 print"{clr}";pt$:print"{home}{down}{down}{rvon} * * Textprogramm * * Eingabe * * {down}{rvof}";:ta=0 1016 b1$="Aendern [2]" 1017 b2$="Speichern [5]" 1018 b3$="Ansehen [f3]" 1020 a=an:goto2014 1040 ifk1$="{rvon}TASTEN{rvof} f7=HELP f5=Zeile hoch"then1050 1046 k1$="{rvon}TASTEN{rvof} f7=HELP f5=Zeile hoch" 1047 k2$="Home = Tabulator RETURN=Zeile runter" 1048 k3$="crsr hoch = Wort vor :crsr => rechts" 1049 k4$="crsr runter=Wort zurueck:crsr <= links":return 1050 k1$="{rvon}Funktionst.{rvof} f1=Ende : f2=Einfuegen" 1051 k2$="f3= Zeilen Loeschen : f4=Block copieren" 1052 k3$="f5=Zeile hoch : f6=Seite +/-" 1053 k4$="{rvon}f7=HELP {rvof} : f8=Block laden":return 1100 fori=g8tomax 1110 gosub1400 1120 iflen(a$(i+1))<m8thenreturn 1130 next:return 1300 gosub1301:goto1000 1301 print"{clr}";pt$;"{down}{rvon} Text loeschen " 1302 print"{down}Bist du sicher? [j/(n)] ":gosub1:ifa$<>"j"then100 1305 print"{down}{down}":fort=1tomax:print"{up}";t:a$(t)="":next 1310 an=0:return 1400 b=len(a$(i)):fora=m8to1step-1 1410 ifmid$(a$(i),a,1)=" "ormid$(a$(i),a,1)="{$a0}"then1430 1420 next:print"Zeile zu lang:fehler":return 1430 a$(i+1)=right$(a$(i),b-a)+" "+a$(i+1):a$(i)=left$(a$(i),a) 1450 return 1460 print"{clr}":fort=0toan:printa$(t):next:print"{up}{up}" 1470 return 1830 print"{clr}";pt$ 1831 input"Maximale Zeilelaenge (39)";m8:gosub1832:goto1000 1832 m8=m8+2:ifm8<10thenm8=39 1833 print"{clr}";pt$:print"Eingabe Tabulatorzeile":print"!=Start +=Tab.Stop -=Nicht 1834 t7$=left$(t7$,len(t7$)-1) 1835 a$=left$(t7$,m8):gosub9:t7$=a$ 1840 m8=m8-2:t7$=left$(t7$+"----------------------------------------",m8-1) 1841 fort=1tolen(t7$):ifmid$(t7$,t,1)="!"thencb=t 1842 next:t7$=t7$+"!":poke917,m8 1845 return 1850 print"{clr}{down}{down}{down}{down}Textname":a$=t1$:gosub9:t1$=a$:goto1000 2000 print"{clr}";pt$ 2001 print"{home}{down}{down}{rvon} + + Textprogramm + + Aendern + + {down}{rvof}";:print"{down}{rvon}Aendern [1]{rvof}" 2002 print"{down}{down} >0< Menu":print"{down} >1< Text aendern" 2003 print"{down} >2< Wort tausch" 2005 print"{down} >3< Text loeschen{down}{down}" 2006 gosub1 2008 ifa$="0"ora$="{f1}"then100 2009 b1$="Speichern [5]":b2$="Ansehen [f3]":b3$="Hilfe [f7]" 2010 t=val(a$):ift<1ort>3then2006 2011 ontgoto2012,2900,1300 2012 gosub80:print" 0 = Ende : 1 = Anfang" 2013 input"{down}Ab Zeile";a:a=a-1:ifa=-1thena=an 2014 gosub1046 2020 a=a+1:ifa>anthenan=a 2030 ifa<1thena=1 2031 y=t:a$=a$(a) 2040 ee=1:a$=a$(a):g8=a:gosub30000 2041 ifu9=1thena$(a+1)=left$(a6$,cb-1)+r$+" "+a$(a+1):u9=2 2050 a$(a)=a$:iflen(a$(a))>m8then2040 2060 ifa$(a)=">"thena$(a)="" 2061 pp=a:iff=3then2600 2062 iff=7thengosub1040:goto2030 2063 ifin=1andf<>0thenin=0:gosub2560:iff=1thenf=0 2064 iff=1thenee=0:goto100 2065 iff=6then2200 2070 ifin=1thengosub2350 2071 iff=2then2500 2072 iff=4then2800 2073 iff=8then2100 2075 iff=5thena=a-1:goto2030 2080 a$=a$(a):y=t:goto2020 2100 print"{home}{down}{down}{rvon} * * Textprogramm * * Block laden * *" 2110 gosub95:gosub4:poke920,22 2120 print"Name des Blockes":gosub5:iff=1then2020 2121 a$=">"+ba$+"??????"+a$ 2125 close2:close5:open2,fa,15:open5,fa,2,a$+",s,r":gosub34000:ifen<>0then2100 2130 input#5,z:gosub2530 2140 fort=1toz:gosub34100:gosub34000:ifa$=">"thena$="" 2150 a$(pp+t)=a$:next:close2:close5:a=a+z:gosub2560:goto2020 2200 gosub95 2201 print"f5= Seite + " 2202 print"f6= Seite - " 2203 print"{down}Bitte waehlen" 2210 gosub1:ifa$="{f1}"thena=a-1:goto2020 2220 ifa$="{f5}"thena=a+10:goto2020 2230 ifa$="{f6}"thena=a-12:goto2020 2240 goto2210 2300 z=1:gosub2530 2320 a$(a+1)=right$(a$(a),len(a$(a))-peek(925)):cc=999:in=1 2330 a$(a)=left$(a$(a),peek(925)) 2340 ifleft$(a$(a+1),1)=" "thena$(a+1)=right$(a$(a+1),len(a$(a+1))-1):goto2340 2345 a$(a)=a$(a)+"{$a0}":a=a-1:goto2360 2350 z=1:gosub2530 2360 print"{home}{down}{down}{rvon}!!! Textprogramm !!! Aufschiebemodus !!!":return 2500 print"{home}{down}{down}{rvon} * * Textprogramm * * Aufschieben * *":gosub2510:goto2020 2510 gosub95 2511 print"f3 = X - Zeilen f5 = bis [f1]" 2512 gosub1:ifa$="{f1}"then2560 2513 ifa$="{f5}"then2300 2520 print"Wieviele Zeilen":inputz:pp=pp-1:a=a-1 2530 foro=an+ztopp+zstep-1 2540 a$(o)=a$(o-z):next 2550 foro=pp+1topp+z:a$(o)="":next:an=an+z 2560 print"{home}{down}{down}{rvon} + Textprogramm + Eingabe / Aendern + ":return 2600 print"{home}{down}{down}{rvon} * * Textprogramm * * Loeschen * * " 2610 gosub95 2620 print"Wieviele Zeilen":inputz 2630 foro=pptoan+z 2640 a$(o)=a$(o+z):next 2650 foro=an-ztoan:a$(o)="":next:an=an-z:gosub2560:a=a-1:goto2020 2800 print"{home}{down}{down}{rvon} * * Textprogramm * * Copieren * *":z=0:z1=0 2810 gosub95:print"Markieren sie das untere Ende mit [f3]" 2820 print"[f1] = Ende : [f3] = Markieren" 2825 print"[f5] = hoch : [f7] = runter" 2829 z=1 2830 ifz+pp<1orz+pp>maxthenz=1 2831 g9=pp+z-6:gosub30705:poke781,11:poke782,0:sys58636 2832 print"{rvon}";a$(pp+z);"{rvof}" 2833 gosub1:ifa$="{f1}"then2030 2834 ifa$="{f5}"thenz=z-1 2835 ifa$="{f7}"thenz=z+1 2836 ifa$="{f3}"then2850 2840 goto2830 2850 ifz1=0thenz1=z:gosub80:print"Markieren sie wohin der Block soll ":goto2830 2860 z2=pp+z-1 2881 g9=pp+z-6:gosub30705:poke781,11:poke782,0:sys58636 2886 fort=pptopp+z1:a$(((t+1)-pp)+z2)=a$(t):next 2887 ifan<((t+1)-pp)+z2thenan=((t+1)-pp)+z2 2890 goto7000 2900 print"{clr}{down}{down}{down}Nach welchem Wort soll gesucht werden":a$="" 2901 gosub9:c$=a$:iff<>0then100 2902 print"{clr}{down}{down}{down}Welches Wort soll dafuer eingesetzt werden":gosub9:b$=a$ 2903 print"{clr}";pt$;"{down} (j) = Aendern (n)=Lassen{down}{down}{down}" 2910 l1=len(c$):l2=len(b$):l3=l2-l1 2920 fort=1toan+1:x=0:g=1:cc=0:gosub30400 2921 ifcc=999thengosub2960:cc=0 2925 x=len(a$(t)):ifx=0thennext:goto100 2930 forg=1tox 2935 ifmid$(a$(t),g,l1)<>c$thennext:next:goto100 2939 print"{home}{down}{down}{down}{down}{down}{down}";a6$;a6$;a6$ 2940 print"{home}{down}{down}{down}{down}{down}{down}";right$(" "+str$(t),3);" ";left$(a$(t),g-1)+"{rvon}"+c$+"{rvof}"; 2941 printright$(a$(t),len(a$(t))-g-len(c$)+1) 2942 gosub1:ifa$="n"then2950 2945 a$=left$(a$(t),g-1)+b$+right$(a$(t),x-(g+l1)+1):x=x+l3:gosub30400:a$(t)=a$ 2946 ifcc=999thengosub2960 2950 next:next:goto100 2960 a$(t)=a$:a$(t+1)=r$+" "+a$(t+1):iflen(a$(t+1))<m8thenreturn 2970 z=1:pp=t+1:gosub2530:a$=a$(t+1):gosub30400:a$(t+1)=a$:a$(t+2)=r$:return 4000 print"{clr}";pt$ 4001 print"{rvon} + Variablen aus der Dateiverwaltung + " 4002 print"{down}{down}-1- Nach Nummer" 4011 print"{down}-2- Nach Namen" 4020 gosub1:ifa$="{f1}"then100 4030 ifa$="1"theninput"{down}Nummer";y:goto4499 4040 print"{clr}";pt$:print"{down}{down}{down}Name":gosub4:gosub5:b$=a$:iff=1then100 4050 gosub4100:iff<>999then4499 4060 goto4230 4100 close2:open2,fa,15:open5,fa,2,"ad,s,r":gosub34000:ifer<>0then100 4110 gosub34100:input#5,a 4120 ifleft$(a$,len(b$))=b$thenclose2:close5:y=a:return 4150 if(st and 64)=64thenclose2:close5:goto4200 4160 goto4110 4200 f=999:print"{clr}";pt$ 4210 print"{down}{down}Datensatz ";b$ 4220 print"nicht vorhanden.":return 4230 print"{down}{down}Bitte [f1] druecken":gosub1:goto100 4499 gosub4500:goto4560 4500 close2:close5 4501 hb=int(y/256):lb=y-hb*256 4510 open2,fa,15:open5,fa,2,"asalem,l,"+chr$(254) 4520 print#2,"p"+chr$(2)+chr$(lb)+chr$(hb)+chr$(1) 4522 input#2,en 4525 ifen<>0thenprint"{rvon}ERROR Falsche Diskette !!!":return 4530 b=20:gosub4700:gosub4750:v$(1)=b$ 4531 b=20:gosub4700:gosub4750:v$(2)=b$ 4532 b=20:gosub4700:gosub4750:v$(3)=b$ 4533 b=4:gosub4700:v$(4)=b$ 4534 b=20:gosub4700:gosub4750:v$(4)=v$(4)+" "+b$ 4536 b=16:gosub4700:v$(5)=b$ 4537 b=2:gosub4700:v$(6)=b$+".":gosub4700:v$(6)=v$(6)+b$+".":b=4:gosub4700 4538 v$(6)=v$(6)+b$:b=10:gosub4700:v$(7)=b$ 4539 b=2:gosub4700:v$(8)=b$ 4542 b=10:gosub4700:v$(9)=b$ 4544 b=10:gosub4700:v$(10)=b$ 4546 b=20:gosub4700:gosub4750:v$(11)=b$ 4548 b=20:gosub4700:v$(12)=b$ 4549 b=20:gosub4700:gosub4750:v$(13)=b$ 4550 b=20:gosub4700:gosub4750:v$(14)=b$ 4555 close2:close5:return 4560 print"{clr}";pt$:print"Datensatz ";v$(2) 4561 ifba$<>v$(8)andpr=0thenv$(7)="passwort geschuetzt" 4565 print:fort=1to14:printv$(t):next:print"{down}Bitte [f1] druecken":gosub1:goto100 4599 goto100 4700 poke917,b-1:poke915,5:sys50182,b$ 4740 ifright$(b$,1)=" "thenb$=left$(b$,len(b$)-1):goto4740 4749 return 4750 a$=left$(b$,1):ifasc(a$)<65orasc(a$)>90thenreturn 4760 b$=right$(b$,len(b$)-1):b$=chr$(asc(a$)+32)+b$:return 5000 goto5500 5001 print"{clr}";pt$:print"{down}{down}Laden von Diskette" 5010 print"{down}{down} -1- Text loeschen und neuen Text laden" 5020 print"{down} -2- Hinter alten Text laden" 5021 print"{down} -3- Listings laden" 5025 print"{down}Befehl"; 5030 gosub1 5040 ifa$="{f1}"then100 5041 b1$="Ansehen [f3]":b2$="Aendern [2]" 5042 ifa$="1"ora$="3"thengosub1305:goto5050 5043 ifa$="2"then5050 5045 goto5030 5050 print"-";a$;"-":i=0:ifa$="3"theni=999 5060 print"{clr}{down}{down}{down}{down}{down}Name der Datei":a$="":gosub9:t1$=a$:b$=a$:iff=1then100 5061 ifleft$(a$,1)<>"@"then5066 5062 a$=right$(a$,len(a$)-1):t=val(a$):a$=v$(30+t) 5063 ift>borb=0then5060 5064 goto5100 5066 print"{home}{down}{down}{down}{down}{down}Aufzeichnungsdatum:":a$="??????":gosub9 5070 ifpr<>1thena$=">"+ba$+a$+b$ 5071 ifpr=1thena$=b$ 5100 rem 5102 open2,fa,15,"i0" 5103 gosub34000 5104 open5,fa,5,"0:"+a$+",s,r" 5105 ax=0:gosub34000:ifen=62then100 5106 ifi=999then5200 5107 input#5,ax:fort=1toax 5110 rem 5111 gosub34100:a$(t+an)=a$:ifa$(t+an)=">"thena$(t+an)=" " 5112 gosub34000 5113 geta$:ifa$="{f1}"thenclose2:close5:goto100 5114 next 5115 an=an+ax 5120 close2:close5:goto100 5200 rem 5210 an=an+1 5211 geta$:ifa$="{f1}"thenclose2:close5:goto100 5220 gosub34100:a$(an)=a$:ifst<>64then5210 5230 close2:close5:goto100 5400 print"{clr}";pt$:print"{down}{down}Vergleichen von Diskette" 5401 a$=t1$:print"Name":gosub9:iff=1then100 5402 open2,fa,15,"i0":gosub70 5403 gosub34000:ifpr<>1thena$=">"+ba$+"??????"+a$ 5404 open5,fa,5,"0:"+a$+",s,r" 5405 gosub34000:ifen<>0then100 5407 input#5,ax:ifb<>0andax<>b-vthenprint"Zeilenanzahl falsch" 5408 fort=1toax 5410 gosub34100:ifa$=">"thena$=" " 5412 printa$:poke198,0:wait198,1:geta$:ifa$="{f1}"then5420 5413 gosub34000 5415 next 5420 close2:close5:print"Taste druecken":gosub1:goto100 5500 print"{clr}";pt$ 5501 print"{rvon} + Menu Disketten-Operationen + " 5502 print"{down} laden [4]" 5503 print" speichern [5]" 5510 rem 5520 print"{down} -0- Menu" 5521 print" -1- Text vergleichen" 5525 print" -2- Text umbenennen" 5527 print" -3- Text loeschen" 5529 print" -4- Text laden" 5530 print" -5- Text speichern" 5532 print" -6- Inhaltsverzeichnis" 5534 ifpr=1thenprint" -7- Disk formatieren" 5536 ifpr=1thenprint" -8- Disk Name + ID aendern" 5550 gosub1 5551 ifa$="0"ora$="{f1}"then100 5552 ifval(a$)=0then5500 5553 onval(a$)goto5400,5650,5700,5001,6000,5800,5600,5900 5555 return 5600 print"{clr}";pt$:pa$="":ifpr=0then100 5610 print"{rvon} D i s k e t t e F o r m a t i e r e n " 5630 a$="Disketten Name":gosub9:b$=a$:iff=1then100 5631 print"{home}{down}{down}{down}{down}Schuetzen?":a$="n":gosub9:ifa$="j"theninput"Passwort";pa$ 5633 ifa$="j"andlen(pa$)<10thenpa$=pa$+chr$(0):goto5633 5634 a$="id" 5635 print"{home}{down}{down}{down}{down}Disketten ID ":gosub9:id$=a$:a$=left$(b$+"................",16) 5640 id$=left$(id$+"te",2) 5641 gosub3 5642 open2,fa,15,"n:"+a$+","+id$:close2:ifpa$=""thengoto100 5643 open15,fa,15,pr$:open2,fa,2,"#" 5644 print#15,"b-r 2 0 18 0":print#15,"b-p 2 164" 5645 print#2,chr$(0)+chr$(0)+chr$(0):print#15,"b-p 2 180":print#2,pa$ 5646 print#15,"b-p 2 2":print#2,"o"; 5647 print#15,"b-w 2 0 18 0":close2:close15:goto100 5650 print"{clr}";pt$:print"{rvon} + T e x t u m b e n e n n e n + " 5651 print"{home}{down}{down}{down}{down}Alter Name":a$="":gosub9:iff=1then100 5652 b$=a$:a$="ttmmjj":print"{home}{down}{down}{down}{down}Datum":gosub9 5655 c$=a$:print"{home}{down}{down}{down}{down}Neuer Name":gosub9 5656 ifpr=1thengosub3:a$=">"+a$:b$=">"+b$ 5657 ifpr=0thengosub3:a$=">"+ba$+da$+a$:b$=">"+ba$+c$+b$ 5660 open2,8,15,pr$ 5670 print#2,"r:"+a$+"="+b$:gosub34000:close2:goto100 5700 print"{clr}";pt$:print"{rvon} + T e x t l o e s c h e n + " 5715 print"{home}{down}{down}{down}{down}Name":gosub9:b$=a$:iff=1then100 5716 a$="??????":print"{home}{down}{down}{down}{down}Datum ":gosub9:gosub3 5717 ifpr<>1thena$=">"+ba$+a$+b$ 5718 ifpr=1thena$=">"+b$ 5719 open2,fa,15,pr$ 5720 print#2,"s0:"+a$:close2:goto100 5800 close15:close2:open15,fa,15,"i":print"{clr}";pt$ 5801 print"{clr}";pt$:print"{rvon} + Inhaltsverzeichnis der Diskette + {down}{down}{down}" 5810 open2,fa,2,"#" 5811 print#15,"b-r 2 0 18 0":print#15,"b-p 2 165" 5812 get#2,a$:ifa$<>""then5816 5813 print#15,"b-p 2 180":pa$="":fort=1to10:get#2,a$:pa$=pa$+a$:next 5814 print"Die Diskette ist geschuetzt: Geben Sie das Passwort ein" 5815 inputa$:ifa$<>pa$thenclose2:close15:goto100 5816 b$="":x=999:gosub5910:x=0:b$="{f3}" 5817 ifa$(2)="inhalt"thenan=an+2:a$(an)=id$+" "+n$:an=an+1 5820 t=18:s=1:b=0 5821 gosub5898 5830 print#15,"u1 2 0";t;s 5840 v=0 5841 get#2,x$:x$=x$+chr$(0):t=asc(x$) 5842 get#2,x$:x$=x$+chr$(0):s=asc(x$) 5845 forx=0to7:print#15,"b-p 2";x*32+2 5846 get#2,x$,a$:z=asc(x$+chr$(0)):ifz<>8*16+1andpr=0 then5855 5847 gosub5890 5848 ifb=10thenb=0:print"{down}Bitte f3 druecken{down}":wait198,1:getb$:gosub5898 5849 ifb$="{f1}"then100 5850 x$="{wht}seq ":ifz<>0andpr=1thengosub5870 5851 ifpr=0andz<>0thenprint"{wht} ";b,"{left}";ff$:v$(30+b)=c$ 5852 ifpr=1thenprint"{wht} ";x$,ff$ 5855 nextx 5856 ift<>0then5830 5860 print"{down}{down}Bitte f1 druecken":gosub1 5865 goto100 5870 ifz=130thenx$="prg " 5871 ifz=129thenx$="seq " 5872 ifz=194thenx$="prg<" 5873 ifz=131thenx$="usr " 5874 ifz=193thenx$="seq<" 5875 ifz=195thenx$="usr<" 5880 ifa$(1)="p"andz<>130andz<>194thenreturn 5881 ifa$(2)<>"inhalt"thenreturn 5885 an=an+1:a$(an)=id$+" "+x$+ff$:return 5888 goto100 5890 ifpr=1then5897 5891 get#2,a$,a$:ifa$<>">"thenz=0:return 5892 get#2,a$,b$:ff$=a$+b$:ifff$<>ba$andba$<>"--"thenz=0:return 5893 c$=">"+a$+b$:get#2,a$,b$:ff$=ff$+" "+a$+b$+".":c$=c$+a$+b$ 5894 get#2,a$,b$:ff$=ff$+a$+b$+".":c$=c$+a$+b$ 5895 get#2,a$,b$:ff$=ff$+a$+b$+" {$a0}":c$=c$+a$+b$ 5896 fory=1to7:get#2,a$:c$=c$+a$:ff$=ff$+a$:nexty:b=b+1:return 5897 ff$="":get#2,a$:fory=0to15:get#2,a$:ff$=ff$+a$:next:b=b+1:return 5898 print"{clr}";pt$:print"Disk: ";n$;" ID:";id$;"{down}" 5899 print" Nr. Wer Datum Name{down}":return 5900 ifpr=0then100 5901 print"{clr}";pt$:print"{rvon}Aendern des Disknamens oder der Disk ID" 5902 print"{down}Die zu Aendernde Diskette einlegen und":print" [f3] druecken" 5903 poke198,0:gosub1:ifa$<>"{f3}"then100 5908 b$="" 5909 open15,8,15,"i":print#15,pr$:open2,8,2,"#" 5910 print#15,"b-r 2 0 18 0":print#15,"b-p 2 144":fort=1to20:get#2,a$:b$=b$+a$:next 5920 n$=left$(b$,16):id$=right$(b$,2) 5921 ifx=999thenreturn 5925 print"Name ";n$:input"{up}Name";n$ 5927 print"ID ";id$:input"{up}ID ";id$ 5930 n$=n$+"{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}{$a0}":id$=id$+"++":n$=left$(n$,16):id$=left$(id$,2) 5940 print#15,"b-p 2 144":print#2,n$;id$;:print#15,"b-w 2 0 18 0" 5945 close2:close15 5950 input"Passwort";pa$:ifpa$="0"then100 5960 iflen(pa$)<10thenpa$=pa$+chr$(0):goto5960 5970 goto5643 6000 print"{clr}";pt$:print"{rvon}+ + T e x t A u f z e i c h n e n + +" 6001 print"{down}Textname: ";t1$ 6002 print"{down}{down} [f1]=Ende [=] = Textname{down}" 6004 a$="=":gosub9:iff=1then100 6005 ifa$="="thena$=t1$:ift1$=""thenprint"Name fehlt":goto6004 6006 t1$=a$:b$=">"+ba$+"??????"+a$ 6007 print"{down}Alle Vorgaenger loeschen (j/n)?":gosub1 6008 ifa$="j"thenopen2,8,15,"s:"+b$:close2 6009 b1$="Drucken [3]":b2$="Ende [f5]" 6015 a$=t1$:gosub70 6016 t1$=a$:open2,fa,15,"i0":a$=">"+ba$+da$+a$:print#2,pr$ 6017 gosub34000 6018 open5,fa,5,"@0:"+a$+",s,w" 6021 gosub34000 6022 ax=b-v:print#5,str$(ax) 6024 fort=vtob:ifa$(t)=""ora$(t)=" "thena$(t)=">" 6030 print#5,a$(t):ifa$(t)=">"thena$(t)="" 6031 gosub34000 6032 next:close2:close5:goto100 7000 t=0:x=0 7002 ifx<0thenx=0 7003 gosub7030:fort=1to20 7004 print"{rvon}";right$(str$(t+x*20),1);"{rvof}";a$(t+x*20) 7006 nextt 7007 print"{down}f1=Ende f3=Seite + f5=Seite - " 7008 b1$="Aendern [2]" 7009 b2$="Speichern [5]":b3$="Hilfe [f7]" 7010 gosub1 7011 ifa$="{f1}"then100 7012 ifa$="{f5}"thenx=x-1:ifx>=0then7002 7013 ifa$="{f3}"thenx=x+1:ifx*20<anthen7002 7014 ifx*20>=anthenx=0:goto7002 7015 ifx<0thenx=int(an/20):goto7002 7020 goto7010 7030 print"{clr}{rvon} +T e x t 6 4 +Bildschirm+Zeile " 7031 print"{home}{rvon} +T e x t 6 4 +Bildschirm+Zeile";x*20;"-" 7032 return 7100 print"{clr}";pt$:print"{rvon} + + Bildschirmausgabe + + " 7105 input"{down}{down}Ab Zeile";x:ifx<1orx>anthenx=1 7106 x=int(x/20):goto7002 8000 print"{clr}";pt$ 8002 g=0 8006 print"{down} -1- Neustart des Programms" 8007 print"{down} -2- Info ueber Speicherplatz" 8008 print"{down} -3- Ton aus" 8009 print"{down} -4- Ton an" 8010 gosub1 8011 ifa$="1"then10000 8013 ifa$="0"ora$="{f1}"then100 8014 ifa$="1"thenrun 8015 ifa$="2"thenprintfre(9);"Zeichen frei":print"{down} Taste druecken":gosub1:goto26 8016 ifa$="{home}"theninput"code";a$:ifa$="susi"then55555 8017 ifa$="{CTRL-P}"and(ba$="--"orba$="of")thenpr=1:print"{down}{down}{down}Prog ok":gosub1:goto100 8018 ifa$="{CTRL-O}"thenpr=0:print"{down}{down}{down}Programmierer aus":gosub1:goto100 8019 ifa$="3"thent9%=1:print"{down}Ton aus":goto100 8020 ifa$="4"thent9%=0 8021 ifa$="{wht}"andpr=1thenend 8099 goto100 9400 rem*** fill *** 9401 print"{clr}";pt$:print"{home}{down}{down}{rvon} * * Textprogramm * * Ausfuellen * * " 9407 f2=0:print"Neben den Text [j/n]":gosub1:ifa$="j"thenf2=1 9408 ifa$="{f1}"then100 9409 iff2=1thenprint"Links/Rechts [l/r]":gosub1:g=1:ifa$="r"theng=2 9410 gosub70 9421 input"Schrittweite";s:ifs<=0then9421 9429 print"{clr}{down}{down}{down}{down}Was ?" 9430 a$="":gosub9:iff=1then100 9440 ifb>anthenan=b 9450 fort=vtobsteps 9452 iff2=0thena$(t)=a$ 9453 iff2=1andg=1thena$(t)=a$+a$(t) 9454 iff2=1andg=2thena$(t)=a$(t)+a$ 9455 next:goto7000 9689 return 9700 print"{clr}{rvon}";pt$;"{down}" 9710 print"{down} 1 Variablen zeigen" 9712 print"{down} 2 Variablen eingeben" 9713 print"{down} 3 Variablen an" 9714 print"{down} 4 Variablen aus" 9715 print"{down} 5 Variablen zu Text" 9717 print"{down} 6 Variablen als Text 1-50" 9718 print"{down} 7 Text als Variablen 1-50" 9719 print"{down} 8 Variablen aus Dateiverwaltung" 9750 gosub1 9755 ifa$="0"ora$="{f1}"then100 9760 onval(a$)goto9800,9900,9780,9785,9850,9790,9795,4000 9770 goto9750 9780 v9=1:print"Variablen an":fort=1to999:next:goto9700 9785 v9=0:print"Variablen aus":fort=1to999:next:goto100 9790 fort=1to50:a$(t)=v$(t):an=50:next:goto100 9795 fort=1to50:v$(t)=a$(t):next:goto100 9800 print"{clr}";pt$ 9801 fort=1to50:printt,v$(t) 9810 ift/20=int(t/20)thengosub1:print"{clr}";pt$ 9820 next:gosub1:goto100 9850 gosub3:v9=1 9860 fort=1toan:a$=a$(t):gosub30300:a$(t)=a$:next:v9=0:goto100 9900 print"{clr}";pt$:print"{down} + + Variablen EINGABE + +{down}{down}{down}{down}" 9901 input"Variablen Nr.";a:ifa>40then9900 9910 a$="":gosub9:v$(a)=a$ 9920 print:print"Noch eine? [j/n]" 9930 gosub1 9940 ifa$="n"then100 9950 goto9900 10000 print"{clr}";pt$:b$=a$ 10010 print"{down}{down}ACHTUNG !!! Text unbedingt SPEICHERN" 10020 print"{down}Ist der Text schon gespeichert? [j/n]" 10030 gosub1:ifa$<>"j"then6000 10040 a$=b$:poke930,0:goto8013 20000 print"{clr}";pt$:print"{down}{rvon} + + Textprogramm + + R E C H N E N + +" 20009 print"{down} [e]= Ende" 20010 print"{down} [c]= Speicher loeschen" 20011 print"{down} [m]= Mehrwertsteuer eingeben" 20013 print"{down} [+] [-] [*] [:] = Rechenoperationen" 20015 rr=int((rr*100)+0.5)/100 20019 print"{down}{down}{rvon}";rr;"{rvof}"; 20020 gosub1 20030 ifa$="c"thenrr=0:goto20000 20031 ifa$="e"ora$="{f1}"then100 20032 ifa$="m"theninput"Steuer in % 14{left}{left}{left}{left}";mw:goto20000 20034 ifa$<>"+"anda$<>"-"anda$<>"*"anda$<>":"then20020 20040 printa$;" ";:inputx 20050 ifa$=":"andx=0thenprint"Fehler... nicht durch 0 dividieren":goto20020 20060 ifa$=":"thenrr=rr/x 20061 ifa$="*"thenrr=rr*x 20062 ifa$="+"thenrr=rr+x 20063 ifa$="-"thenrr=rr-x 20064 goto20000 22000 ifpeek(1022)=0thengosub22100 22001 ifpeek(1022)=0thenpoke1022,1:load"zeichen b",8,1 22002 ifpeek(1022)=250thenpoke1022,240:load"zeichen din",8,1 22003 ifpeek(1022)=1thenpoke53272,11:poke56576,peek(56576)and252:poke648,192 22004 ifpeek(1022)=240thenpoke53272,11:poke56576,peek(56576)and252:poke648,192 22005 ifpeek(1022)=1thenpoke1022,2:load"zeichen d",8,1 22006 print"{clr}":ifpeek(1022)=240thenpoke1022,199:load"zeichen ddin",8,1 22007 ifpeek(1022)=2thenpoke1022,3:load"profip v1.0",8,1 22008 ifpeek(1022)=199thenpoke1022,200:load"profip v1.0",8,1 22009 ifpeek(1022)=111thenpoke53272,11:poke56576,peek(56576)and252:poke648,192:end 22010 goto11 22100 printchr$(14);"{clr}{rvon} Textverarbeitungsprogramm O.Fendt " 22105 print"{down}{down}Was fuer eine Tastaturbelegung?" 22106 input"{down}{down} [din] - [cbm]{rght}{rght}{rght}din{left}{left}{left}{left}{left}";a$ 22107 ifa$="din"thenpoke1022,250 22108 gosub3:return 30000 g9=g8-6:gosub30700:xt=0:iflen(a$)>m8thena$=left$(a$,m8) 30001 poke922,am:cf=1:ifu9=2thenu9=0:cp=len(r$)+cb:goto30020 30002 ifcc=999thencp=len(a$(g8)):cc=0:goto30020 30010 cc=0:x=0:cp=cb 30020 ifcp=0thencp=1 30021 poke908,cp-1:poke918,m8-(m8/5):poke920,11:poke917,m8:poke924,0 30040 sys 50176,a$,a$ :f=peek(913):ifa$="> "thena$="" 30045 gosub31 30053 iff=9thengosub30550:goto30020 30054 iff=15thena$="":a$(g8)="":goto30000 30055 iff=11thengosub30400:a$(g8)=a$ 30056 iff=20thencc=999:f=5 30057 iff=16thenf=0:ifright$(a$,1)<>"{CBM-F}"thena$=a$+"{CBM-F}" 30099 gosub30300:gosub30400:print:return 30300 rem ** variablen test ** 30301 ifv9=0thenreturn 30310 forb=1tolen(a$)-2 30320 ifmid$(a$,b,1)<>"@"thennext:return 30330 x=val(mid$(a$,b+1,2)):ifx>50thenx=0 30340 a$=left$(a$,b-1)+v$(x)+right$(a$,len(a$)-b-2):goto30310 30350 next:return 30400 iflen(a$)<m8thenreturn 30401 iflen(a$)>80then30440 30403 cc=999:fori=m8to1step-1 30410 ifmid$(a$,i,1)<>" "thennexti:goto30440 30420 r$=right$(a$,len(a$)-i):a$=left$(a$,i-1):u9=1 30421 ifright$(r$,1)=" "thenr$=left$(r$,len(r$)-1):goto30421 30430 iflen(a$)>=m8thennext:goto30440 30431 return 30440 gosub95:print"{down}>> Zeile zu lang << Fehler !!":poke198,0 30441 a$=left$(a$,m8-1) 30442 gosub30601:ifpeek(198)<1then30442 30443 poke198,0:return 30550 ifcp+1>len(t7$)orxt=1thenreturn 30560 x=0:forz=cp+1tolen(t7$):ifmid$(t7$,z,1)="+"andx=0thenx=1:cp=z 30570 next:ifx=0thenxt=1 30580 iflen(a$)<cpthena$=a$+"{$a0}":goto30580 30590 return 30600 rem ** error system ** 30601 ift9%=1thenreturn 30602 poke53280,1 30603 poke54296,15:poke54277,25:poke54278,4*16+4 30610 poke54273,29:poke54272,69:poke54276,17 30619 fort=1to200:next 30620 poke53280,0:fort=1to200:next 30621 poke54276,0:poke54277,0:poke54278,0:return 30700 rem ** fenster ** 30701 print"{home}";pt$:print"{down}{down}";t7$ 30702 gosub80:gosub30750 30705 print"{home}":fori=0to10:poke781,i+5:poke782,0:sys58636 30710 ifg9+i<=0thengosub90:goto30740 30720 v=mb-len(a$(i+g9)):ifv<0thenv=0 30730 printa$(i+g9)+left$(a6$,v) 30740 next:gosub90:return 30750 printk1$;left$(a6$,(mb+2)-len(k1$)) 30751 printk2$;left$(a6$,(mb)-len(k2$)) 30752 printk3$;left$(a6$,(mb)-len(k3$)) 30753 printk4$;left$(a6$,(mb)-len(k4$)):return 31000 rem ***************************** 31001 rem ***************************** 31002 rem ** initialisierung ** 31003 rem ***************************** 31004 rem ***************************** 31006 pt$="{wht}{rvon}Hypra-text V1.0 by Oliver Fendt{rvof}":me=100:print"{clr}";pt$ 31009 fu$="Rechnen":mw=14 31010 dimv$(50) 31016 poke53281,0:poke53280,0:ifm8<=7thenm8=36 31019 t7$="!----+----+----+----+----+----+----------" 31020 gosub46000:b1$=str$(m8)+" Zeichen Modus" 31048 a6$=" " 31060 b1$="Laden [5]" 31061 b2$="Eingabe [f1]" 31062 b3$="Hilfe [f7]" 31063 gosub1840:pr$="m-w"+chr$(1)+chr$(1)+chr$(1)+"a" 31150 print"{clr}";pt$:print"{down}{down}Guten Tag,";v$(1) 31160 print"{down}Bitte geben Sie das Datum ein." 31199 return 33000 rem *** formblatt *** 33001 print"{clr}";pt$:print"{home}{down}{down} + M a s k e ausfuellen + Von Menu 1 +":a=cb 33004 b1$="Speichern [5]":b2$="Aendern [2]" 33010 forpq=1toan 33020 a$=a$(pq):a$(pq)=a$ 33021 iflen(a$)=0thennext:goto33099 33022 forpx=1tolen(a$):l=0 33025 ifmid$(a$,px,1)="{CBM-@}"thencb=px:goto33050:ifcc=4andc8=0then100 33027 next:g9=pq-6:gosub30700:next:goto33099 33050 forpx=cbtolen(a$):ifmid$(a$,px,1)="{CBM-@}"thennext 33060 a$=left$(a$(pq),cb)+left$(a6$,px-cb-1) 33061 x=len(a$(pq))-px+1:ifx>0thena$=a$+right$(" "+a$(pq),x) 33062 a$(pq)=a$ 33070 g8=pq:gosub30000:a$(pq)=a$:iff=1then100 33072 goto33022 33099 cb=a:goto100 33200 return 34000 rem ***************************** 34001 rem * * 34002 rem * floppy control * 34003 rem * * 34010 rem ***************************** 34020 input#2,en,em$,et,es:ifen=0thenreturn 34050 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}";en;" ";em$ 34060 print"{down}{down}Taste druecken" 34070 gosub1 34080 ifen=62orxy=999thenreturn 34090 print"Kontrollieren und nach dem beheben [f1] druecken" 34091 gosub1:ifa$<>"{f1}"then34091 34092 print#2,"i":goto100 34100 poke915,5:poke908,0:poke917,m8:sys50182,a$ 34110 gosub31:return 34500 fort=20767+8500 to65000 34510 ifpeek(t)<>0thennext 34520 x=t 34530 printpeek(x)+peek(x+1)*256 34540 x=x+2 34550 ifpeek(x)=0thenx=x+3:print:goto34530 34560 printchr$(peek(x));:x=x+1:goto34550 40000 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}Datum:":a$="------":gosub9:da$=a$ 40010 ifda$="------"then40000 40020 d$=left$(da$,2)+"."+mid$(da$,3,2)+".19"+right$(da$,2):return 43000 rem 43040 am=1 43060 return 46000 print"{clr}";pt$;chr$(14):m8=39:cb=1:mb=39:t9%=1 46001 print"{down}Parameterdiskette einlegen{down}" 46002 ifpeek(930)<>0thenba$=chr$(peek(930))+chr$(peek(931)):fa=peek(932):goto46070 46003 print"Floppy Adr.: 8":gosub1:fa=val(a$):ifa$=chr$(13)thenfa=8 46004 iffa<8orfa>9then46003 46005 t9%=1:print"{down}{down}Name ":gosub4:gosub5:b$=a$:t=0:print 46006 ifval(b$)<>0theny=val(b$):gosub4500:goto46010 46007 gosub4100:iff<>999thengosub4500 46010 iff=999oren<>0thenprint"{down}Benutzer nicht registriert":gosub1:goto46000 46013 ifpeek(1022)=200thenam=2 46050 m8=39 46053 ifv$(7)="-"thenprint"Keine Zugriffsberechtigung":gosub1:goto46000 46055 ift>2thenprint:print"{wht}Passwort falsch":gosub1:goto46000 46056 print"{home}{down}{down}{down}{down}{down}{down}{down}{down}Codewort{blk}":gosub4:gosub5:print"{wht}":ifa$<>v$(7)thent=t+1:goto46055 46058 ba$=v$(8) 46060 poke930,asc(left$(ba$,1)) 46061 poke931,asc(right$(ba$,1)) 46062 poke932,fa 46070 xy=0:return 55555 close15:open15,8,15,"i":close15 55556 print"{clr}{down}{down}{down}{down}ich speichere": save"@:pt"+da$,8 55557 poke2,0 55560 print"{home}{down}{down}{down}{down}{down}{down}{down}ist gespeichert":end 56100 print"{clr}";pt$ 56101 print"{down}{down} {rvon}ACHTUNG !!!{rvof}" 56102 print"{down} Nur wenn der Text schon gespeichert" 56103 print" ist, dann die Hypra-text Diskette" 56104 print" einlegen, und [f8] druecken !!!" 56106 gosub1:ifa$<>"{f8}"then100 56107 print"{clr}";pt$:print"{down}{down}Ich lade nun Profiprint" 56108 print"{down} Bitte warten ..." 56109 poke2,0:load"profiprint",8
PROGRAMM : PROFIP V1.0 C400 CBAF ----------------------------------- C400 : 4C 1E C4 4C 05 C9 4C 52 8A C408 : C9 4C A9 C9 4C 54 CA 4C C6 C410 : 81 CA 4C AA CA 4C 10 CB 46 C418 : 4C 21 CB 4C 40 CB 20 2B AA C420 : C4 20 3B C4 20 71 C4 20 3D C428 : D8 C8 60 A2 00 8E 94 03 9E C430 : A0 FE A9 20 99 FF CE 88 A4 C438 : D0 F8 60 EA 20 FD AE 20 E7 C440 : 9E AD 20 A6 B6 AA 8E 93 B4 C448 : 03 A0 00 E8 CA F0 10 B1 90 C450 : 22 99 00 CF C8 C9 0D D0 E9 C458 : F3 20 E5 AA 4C 4C C4 AD C0 C460 : 8C 03 8D 90 03 A9 00 8D 7C C468 : 91 03 8D 92 03 8D 97 03 31 C470 : 60 4C 7F C6 EA A5 C6 F0 88 C478 : FC 20 B4 E5 C9 03 F0 F5 D2 C480 : 8D 92 03 AC 9A 03 C0 01 73 C488 : D0 03 20 17 C7 AC 9A 03 17 C490 : C0 02 D0 06 20 17 C7 20 60 C498 : 81 C7 4C 41 C7 C9 9D D0 1B C4A0 : 14 AE 90 03 D0 08 A9 14 AC C4A8 : 8D 91 03 4C DE C6 CA 8E B5 C4B0 : 90 03 4C 7F C6 C9 1D D0 96 C4B8 : 17 AE 90 03 E8 EC 95 03 FD C4C0 : D0 08 A2 00 8E 90 03 4C 4F C4C8 : 7F C6 8E 90 03 4C 7F C6 7E C4D0 : C9 AA D0 08 A9 01 8D 99 2F C4D8 : 03 AD 92 03 C9 A7 D0 08 E4 C4E0 : A9 00 8D 99 03 AD 92 03 0E C4E8 : C9 13 D0 08 A9 09 8D 91 AC C4F0 : 03 4C DE C6 C9 93 D0 08 36 C4F8 : A9 0F 8D 91 03 4C DE C6 5A C500 : C9 8D D0 08 A9 10 8D 91 39 C508 : 03 4C DE C6 C9 85 D0 08 DE C510 : A9 01 8D 91 03 4C DE C6 6B C518 : C9 86 D0 08 A9 03 8D 91 65 C520 : 03 4C DE C6 C9 87 D0 08 06 C528 : A9 05 8D 91 03 4C DE C6 85 C530 : C9 88 D0 08 A9 07 8D 91 9F C538 : 03 4C DE C6 C9 89 D0 08 2E C540 : A9 02 8D 91 03 4C DE C6 1B C548 : C9 8A D0 08 A9 04 8D 91 A0 C550 : 03 4C DE C6 C9 8B D0 08 56 C558 : A9 06 8D 91 03 4C DE C6 35 C560 : C9 8C D0 08 A9 08 8D 91 D9 C568 : 03 4C DE C6 AE 90 03 EC 77 C570 : 96 03 D0 30 A9 15 8D 01 3D C578 : D4 A9 50 8D 00 D4 A9 0F 52 C580 : 8D 18 D4 A9 19 8D 05 D4 3F C588 : A9 14 8D 06 D4 A9 11 8D 59 C590 : 04 D4 A0 50 A2 FF CA D0 27 C598 : FD 88 D0 F8 A9 00 8D 18 2D C5A0 : D4 8D 04 D4 AE 90 03 AD AD C5A8 : 92 03 C9 0D D0 03 4C DE E4 C5B0 : C6 C9 14 D0 22 AE 95 03 6E C5B8 : E8 8E 93 03 AE 90 03 F0 8A C5C0 : 13 BD 00 CF 9D FF CE E8 93 C5C8 : EC 93 03 D0 F2 AE 90 03 46 C5D0 : CA 8E 90 03 4C 7F C6 C9 D5 C5D8 : 94 D0 1A AE 90 03 AC 95 30 C5E0 : 03 B9 FF CE 99 00 CF 88 83 C5E8 : CC 90 03 D0 F4 A9 20 9D 30 C5F0 : 00 CF 4C D4 C5 C9 91 D0 18 C5F8 : 27 AE 90 03 E8 BD 00 CF 17 C600 : C9 20 F0 12 C9 00 EC 95 D3 C608 : 03 D0 F1 AE 95 03 CA CA F8 C610 : 8E 90 03 4C 7F C6 E8 4C 9B C618 : 1A C6 8E 90 03 4C 7F C6 69 C620 : C9 11 D0 23 AE 90 03 E0 48 C628 : 00 D0 03 4C 74 C4 CA CA 09 C630 : BD 00 CF C9 20 F0 0C E0 96 C638 : 00 30 D0 D0 F2 8E 90 03 8A C640 : 4C 7F C6 E8 4C 3D C6 AD 40 C648 : 92 03 C9 20 D0 0B AE 90 13 C650 : 03 EC 96 03 30 03 4C DE D9 C658 : C6 AE 90 03 9D 00 CF E8 E5 C660 : 8E 90 03 AC 99 03 C0 02 45 C668 : D0 09 A9 A0 9D 00 CF E8 26 C670 : 8E 90 03 AC 99 03 C0 01 53 C678 : D0 05 A0 02 8C 99 03 AE 32 C680 : 98 03 AC 9C 03 20 0C E5 86 C688 : A2 00 AC 95 03 BD 00 CF C6 C690 : 20 47 AB E8 88 F0 06 20 C4 C698 : E5 AA 4C 8D C6 AD 90 03 B9 C6A0 : 18 6D 9C 03 A8 AE 98 03 5F C6A8 : 20 0C E5 A9 12 20 47 AB 13 C6B0 : AC 90 03 B9 00 CF 20 47 2A C6B8 : AB A9 92 20 47 AB AE 90 8E C6C0 : 03 EC 95 03 10 08 AE 90 1C C6C8 : 03 30 0B 4C 74 C4 A9 0B 5A C6D0 : 8D 91 03 4C DE C6 A9 0C 53 C6D8 : 8D 91 03 4C DE C6 AE 98 88 C6E0 : 03 AC 9C 03 20 0C E5 A2 00 C6E8 : 00 AC 95 03 BD 00 CF 20 5F C6F0 : 47 AB E8 88 F0 06 20 E5 E3 C6F8 : AA 4C EC C6 EA AD 90 03 41 C700 : 8D 9D 03 BD 00 CF C9 20 BA C708 : D0 08 CA F0 03 4C FD C6 C5 C710 : A2 00 E8 8E 90 03 60 EA 37 C718 : C9 59 D0 06 A9 5A 8D 92 4B C720 : 03 60 C9 D9 D0 06 A9 DA 9A C728 : 8D 92 03 60 C9 5A D0 06 8A C730 : A9 59 8D 92 03 60 C9 DA 4C C738 : D0 06 A9 D9 8D 92 03 60 EB C740 : 60 EA C9 81 F0 2B C9 95 73 C748 : F0 27 C9 96 F0 23 C9 97 8F C750 : F0 1F C9 98 F0 1B C9 99 97 C758 : F0 17 C9 9A F0 13 C9 9B 9F C760 : F0 0F C9 12 F0 0B C9 92 40 C768 : F0 07 C9 22 F0 0B 4C 9D 66 C770 : C4 A9 00 8D 92 03 4C 74 16 C778 : C4 A9 B6 8D 92 03 4C 9D 1E C780 : C4 AD 92 03 4C 2E C8 C9 0D C788 : 3A D0 06 A9 B1 8D 92 03 B9 C790 : 60 C9 5B D0 06 A9 B2 8D 59 C798 : 92 03 60 C9 3B D0 06 A9 A3 C7A0 : A3 8D 92 03 60 C9 5D D0 7A C7A8 : 06 A9 B7 8D 92 03 60 C9 79 C7B0 : 40 D0 06 A9 B8 8D 92 03 57 C7B8 : 60 C9 BA D0 06 A9 A2 8D 19 C7C0 : 92 03 60 C9 2B D0 06 A9 CA C7C8 : A6 8D 92 03 60 C9 3C D0 21 C7D0 : 06 A9 3B 8D 92 03 60 C9 82 C7D8 : 3E D0 06 A9 3A 8D 92 03 95 C7E0 : 60 C9 23 D0 06 A9 AF 8D 8F C7E8 : 92 03 60 C9 3D D0 06 A9 13 C7F0 : 23 8D 92 03 60 C9 27 D0 71 C7F8 : 06 A9 2F 8D 92 03 60 C9 A7 C800 : DB D0 06 A9 3F 8D 92 03 AB C808 : 60 C9 2F D0 06 A9 2D 8D B0 C810 : 92 03 60 C9 2A D0 06 A9 0A C818 : 2B 8D 92 03 60 C9 C0 D0 08 C820 : 06 A9 2A 8D 92 03 60 60 BB C828 : 60 60 60 60 60 60 AD 8E B9 C830 : 02 C9 01 D0 03 4C BE C8 90 C838 : C9 02 F0 0D C9 04 D0 03 E6 C840 : 4C 85 C8 AD 92 03 4C 87 B8 C848 : C7 AD 92 03 C9 3C D0 06 B9 C850 : A9 3C 8D 92 03 60 C9 3E A4 C858 : D0 06 A9 3E 8D 92 03 60 98 C860 : C9 5B D0 06 A9 5B 8D 92 9D C868 : 03 60 C9 5D D0 06 A9 5D 58 C870 : 8D 92 03 60 C9 3D D0 06 E9 C878 : A9 40 8D 92 03 60 EA AD 31 C880 : 92 03 4C 87 C7 AD 92 03 D2 C888 : C9 85 D0 08 A5 01 8D 9B 19 C890 : 03 4C 87 C7 C9 86 D0 08 B8 C898 : A5 02 8D 9B 03 4C 87 C7 55 C8A0 : C9 87 D0 08 A5 03 8D 9B 42 C8A8 : 03 4C 87 C7 C9 88 D0 08 E0 C8B0 : A5 04 8D 9B 03 4C 87 C7 6E C8B8 : A9 20 8D 92 03 60 AD 92 36 C8C0 : 03 C9 30 D0 06 A9 3D 8D 8C C8C8 : 92 03 60 C9 3D D0 06 A9 F3 C8D0 : 27 8D 92 03 60 4C 87 C7 D9 C8D8 : 20 FD AE 20 8B B0 85 49 8D C8E0 : 84 4A 20 A3 B6 AD 90 03 27 C8E8 : 20 75 B4 A0 02 B9 61 00 77 C8F0 : 91 49 88 10 F8 C8 A2 00 AA C8F8 : BD 00 CF 91 62 E8 C8 EC 46 C900 : 90 03 D0 F4 60 20 2B C4 22 C908 : 20 3B C4 A9 00 8D 97 03 FD C910 : AE 93 03 E8 20 FD C6 8E 90 C918 : 93 03 BD 00 CF C9 BB F0 B8 C920 : 2A C9 A5 F0 26 C9 B4 F0 1C C928 : 22 C9 B5 F0 1E C9 A1 F0 53 C930 : 1A C9 AA F0 16 C9 A7 F0 28 C938 : 12 C9 BC F0 0E C9 BE F0 88 C940 : 0A C9 AC F0 06 CA 30 09 02 C948 : 4C 1A C9 EE 97 03 4C 45 3F C950 : C9 60 20 2B C4 AE 95 03 D5 C958 : E8 8E 95 03 AD 93 03 AE 2E C960 : 93 03 AC 93 03 20 1E E1 80 C968 : A2 00 E8 20 12 E1 C9 0D BA C970 : F0 16 AC 8C 03 C0 FF D0 00 C978 : 04 C9 20 F0 26 9D FF CE 74 C980 : EC 95 03 F0 03 4C 6A C9 E6 C988 : 8D 91 03 8E 90 03 20 FD 0E C990 : C6 8E 90 03 A9 00 85 99 06 C998 : AE 95 03 CA 8E 95 03 20 0D C9A0 : D8 C8 60 CA F0 C2 4C 88 B5 C9A8 : C9 20 05 C9 A9 01 85 9B EC C9B0 : A9 00 8D 91 03 AD 97 03 F1 C9B8 : 8D 8C 03 AD 93 03 18 ED 8F C9C0 : 97 03 8D 97 03 EE 97 03 3B C9C8 : AD 97 03 CD 96 03 30 46 8A C9D0 : CD 95 03 F0 41 AE 91 03 1D C9D8 : 10 0F AE 93 03 CA 8E 91 72 C9E0 : 03 E6 9B A5 9B C9 1E F0 54 C9E8 : 2D BD 00 CF C9 20 F0 20 8F C9F0 : CA 8E 91 03 4C C8 C9 18 28 C9F8 : AD 91 03 E5 9B 8D 91 03 5E CA00 : CD 95 03 10 03 4C C8 C9 A4 CA08 : A2 00 8E 91 03 4C C8 C9 C9 CA10 : 20 1E CA 4C F7 C9 A2 F0 B6 CA18 : 20 FD C6 4C D8 C8 AE 91 24 CA20 : 03 EC 95 03 30 01 60 AE 49 CA28 : 91 03 10 01 60 AD 95 03 2F CA30 : 6D 8C 03 A8 B9 FF CE 99 C3 CA38 : 00 CF 88 CC 91 03 10 F4 37 CA40 : A9 20 9D 00 CF AC 93 03 17 CA48 : C8 8C 93 03 AC 97 03 C8 C1 CA50 : 8C 97 03 60 A5 A4 8D 67 F9 CA58 : CA A5 A5 8D 68 CA 78 A9 22 CA60 : 35 85 01 AC 95 03 B9 33 EC CA68 : 33 99 00 CF C0 00 F0 04 3A CA70 : 88 4C 66 CA A9 37 85 01 7E CA78 : AD 95 03 8D 90 03 4C D8 66 CA80 : C8 20 2B C4 20 3B C4 78 9C CA88 : A9 35 85 01 A5 A4 8D 9D 3E CA90 : CA A5 A5 8D 9E CA AC 95 66 CA98 : 03 B9 00 CF 99 00 50 88 5E CAA0 : 30 03 4C 99 CA A9 37 85 7A CAA8 : 01 60 78 A9 FF 8D 03 DD 61 CAB0 : AD 02 DD 09 04 8D 02 DD 67 CAB8 : AD 00 D0 09 04 8D 00 D0 09 CAC0 : A9 10 8D 0D DD AD 0D DD B2 CAC8 : A9 E3 8D 26 03 A9 CA 8D 4F CAD0 : 27 03 A9 1B 20 F7 CA A9 87 CAD8 : 43 20 F7 CA A9 48 20 F7 D0 CAE0 : CA 58 60 48 A5 9A C9 04 56 CAE8 : F0 03 4C CD F1 68 C9 0D CA CAF0 : D0 05 20 F7 CA A9 0A 8D 87 CAF8 : 01 DD AD 00 DD 29 FB 8D 85 CB00 : 00 DD 09 04 8D 00 DD AD 5D CB08 : 0D DD 29 10 F0 F9 18 60 50 CB10 : 20 2B C4 20 3B C4 AC 93 AF CB18 : 03 88 8C 90 03 20 D8 C8 BB CB20 : 60 20 2B C4 20 3B C4 A0 24 CB28 : 00 B9 01 CF 99 00 CF C8 A9 CB30 : CC 93 03 D0 F4 AC 93 03 AA CB38 : 88 8C 90 03 20 D8 C8 60 38 CB40 : A9 60 85 A5 A9 00 85 A4 29 CB48 : A0 FF A9 20 91 A4 88 D0 58 CB50 : F9 E6 A5 A5 A5 C9 C0 D0 28 CB58 : F1 60 A5 02 8D 20 D0 AD 9B CB60 : 92 03 C9 FF D0 02 A9 7E A7 CB68 : C9 E0 30 03 38 E9 40 C9 75 CB70 : C0 30 03 38 E9 60 C9 A0 1A CB78 : 30 26 38 E9 A0 0A 0A 0A 9D CB80 : 48 A9 A2 85 9E A9 04 85 48 CB88 : 9F 90 06 A9 00 65 9E 85 D7 CB90 : 9E 68 A8 B1 9E F0 08 48 E5 CB98 : 20 EE CA C8 4C 93 CB 60 4C CBA0 : A8 A9 01 8D 20 D0 B9 02 82 CBA8 : 04 4C EE CA FF 50 28 85
0 data169,240,32,71,3,169,160,32,71,3,96,133,89,120,169,51,133,1,169,0 1 data169,0,133,88,133,90,133,95,169,224,133,91,169,208,133,96,32,191,163 2 data169,160,169,55,133,1,88,96 1000 fort=0to46:readx:poket+828,x:next 1010 sys828 1060 poke53272,8:poke56576,peek(56576)and252:poke648,192:print"{clr}" 1100 fort=1to128:reada$,x:poke1026+t,x:ifa$<>"end"thennext 1110 print1027+t 2000 goto5000 3000 z1=36864+t*8+x+20472+7 3040 pokez1,x(x) 3050 pokez1+256*8,x(x) 3051 pokez1+128*8,255-x(x) 3052 pokez1+384*8,255-x(x) 3060 z1=z1-5*16^3 3070 pokez1,x(x) 3080 pokez1+256*8,x(x) 3081 pokez1+128*8,255-x(x) 3082 pokez1+384*8,255-x(x) 3999 return 4000 rem 4010 forx=1to8 4020 gosub3000:next 4030 print"{down}{down}{down}":goto5030 4900 rem ****************************** 4901 rem * * 4902 rem * drucker steuercodes * 4903 rem * 1=sonderz. an * 4904 rem * 2=sonderz. aus schmal * 4905 rem * 3=sonderz. aus breit * 4906 rem * * 4907 rem * 1 2 =>3* 4909 rem ****************************** 5000 xx=1200:poke1024,8:poke1025,15:poke1026,14 5030 reada$:a$(1)=a$:ifa$="end"then10000 5040 fort=1to8:readx(t):ifx(1)=999then5042 5041 next 5042 fort=1to8:ready(t):next 5050 gosub6500 5055 ifx(1)=999then5030 5060 goto6000:goto5030 6000 print"{clr}";a$(1):printpeek(49152) 6010 t=peek(49152):goto4000 6500 rem ** druckercode ** 6510 as=asc(a$):as=as-160 6520 as=(as*8)+1200:fort=1to8:d(t)=y(t):next 6540 fort=1to8:pokeas+t,d(t):next 6550 return 7000 rem ****************************** 7001 rem * * 7002 rem * druckercodes fuer die * 7003 rem * cbm codes 1-126 * 7004 rem * (keine sonderzeichen * 7005 rem * sondern alpha ...) * 7006 rem * * 7007 rem * * 7008 rem * * 7009 rem ****************************** 8499 data "end",0 9999 data"end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,,0,0,0,0,,0,0,0,0,0,0,0 10000 print"{clr}":goto12000 12000 gosub40000 13000 print"{clr}{down}{down}{down}{down}das programm wird gespeichert":poke46,38 13001 print"{down} - bitte warten - " 13003 save"@:loader din 2.1",8 13004 verify"loader din 2.1",8 13005 print"das programm ist gespeichert":end 20000 x= 160 :l= 8500 20001 ifx>191then30000 20010 print"{clr}{down}{down}":print"20000 x=";x+1;":l=";l+2 20020 printl;"data"+chr$(34)+chr$(x)+chr$(34);",999,";x;",0,0,0,0,0,0,0" 20030 print"goto20000{home}" 20040 poke198,5:fort=631to631+5:poket,13:next:end 30000 x= 1:l= 8000 30001 ifx>127 thenprint"{clr}fertig":end 30010 print"{clr}{down}{down}":print"30000 x=";x+1;":l=";l+2 30019 ifx=34thenprintl;"data"+chr$(34)+"''"+chr$(34);",";x:goto30030 30020 ifx>31thenprintl;"data"+chr$(34)+chr$(x)+chr$(34);",";x 30021 ifx<32thenprintl;"data"+chr$(34)+"."+chr$(34);",";x 30030 print"goto30000{home}" 30040 poke198,5:fort=631to631+5:poket,13:next:end 40000 rem *** save file *** 40001 open 2,8,1,"@:zeichen ddin" 40010 print#2,chr$(0);chr$(4); 40020 fort=4*16^2to2048:print#2,chr$(peek(t));:next 40030 close2 40040 open2,8,1,"@:zeichen din" 40050 print#2,chr$(0);chr$(14*16); 40060 fort=9*16^3to9*16^3+4096 40070 print#2,chr$(peek(t));:next 40080 close2:return
8500 data"{$a0}",0,0,0,24,0,0,0,0, 32 ,0,0,0,0,0,0,0 8502 data"{CBM-K}",0,112,34,38,34,112,0,0,27, 53,0,0,0,0,0,0 8504 data"{CBM-I}",102,0,102,102,102,102,60,0,93,0,0,0,0,0,0,0 8506 data"{CBM-T}",102,0,60,6,62,102,62,0,123,0 ,0,0,0,0,0,0 8508 data"{CBM-@}",999, 241 ,0,0,0,0,0,0,0 8510 data"{CBM-G}",0,12,74 ,106,74,12,0,0,27 ,69,0,0,0,0,0,0 8512 data"{CBM-+}",60,54,60,54,60,48,96,0,126,000,000,000,000,000,0,0 8514 data"{CBM-M}",0,224,178,230,178,224,0,0, 27,87,48,0,0,0,0,0 8516 data"{CBM-POUND}",999,168,0,0,0,0,0,0,0 8518 data"{SHIFT-POUND}",60,66,153,161,161,153,66,60,203 ,0,0,0,0,0,0,0 8520 data"{CBM-N}",0,28,150,220,150,28,0,0, 27 ,87,49,0,0,0,0,0 8522 data"{CBM-Q}",999, 244 ,0,0,0,0,0,0,0 8524 data"{CBM-D}",0,0,124,56,16,0,0,0, 32,0,0,0,0,0,0,0 8526 data"{CBM-Z}",999, 246 ,0,0,0,0,0,0,0 8528 data"{CBM-S}",999, 242 ,0,0,0,0,0,0,0 8530 data"{CBM-P}",12,26,24,44,24,88,48,0,64,0,000,000,000,000,0,0 8532 data"{CBM-A}",999, 240 ,0,0,0,0,0,0,0 8534 data"{CBM-E}",102,0,60,102,102,102,60,0,124,000,000,000,000,000,0,0 8536 data"{CBM-R}",102,60,102,102,102,102,60,0,92,000,000,000,000,000,0,0 8538 data"{CBM-W}",999, 249,0,0,0,0,0,0,0 8540 data"{CBM-H}",0,96 ,82 ,86 ,82 ,96,0,0, 27 ,70,0,0,0,0,0,0 8542 data"{CBM-J}",0,28,136,200,136,28,0,0, 27 ,52,0,0,0,0,0,0 8544 data"{CBM-L}",102,102,102,0,0,0,0,0,34,0,0,0,0,0,0,0 8546 data"{CBM-Y}",102,24,60,102,126,102,102,0,91,000,000,000,000,000,0,0 8548 data"{CBM-U}",102,0,102,102,102,102,59,0,125,000,000,000,000,000,0,0 8550 data"{CBM-O}",999,185,0,0,0,0,0,0,0 8552 data"{SHIFT-@}",999, 186 ,0,0,0,0,0,0,0 8554 data"{CBM-F}",0,16,48,112,48,16,0,0, 32 ,0,0,0,0,0,0,0 8556 data"{CBM-C}",0,18,146,210,146,12,0,0, 27 ,45,49,0,0,0,0,0 8558 data"{CBM-X}",999, 189 ,0,0,0,0,0,0,0 8560 data"{CBM-V}",0,144,146,150,146,96,0,0,27 ,45,48,0,0,0,0,0 8562 data"{CBM-B}",999, 191 ,0,0,0,0,0,0,0 8564 data"{SHIFT-*}",999, 241 ,0,0,0,0,0,0,0