Mit dem Drucker sprechen
Mit sinnvollen Kurzbefehlen erleichtert PROS V2.1 nicht nur die Arbeit mit dem Commodore 64 und dem Drucker MPS 802 ganz erheblich, es hält auch noch ein paar andere, ganz besondere Leckerbissen bereit. Und dabei arbeitet es sogar mit dem DOS V5.1 zusammen.
OPEN 1,4,7:CMD 1:LIST und dann PRINT#1:CLOSE 1, das ist es, was der gequälte Druckerbesitzer eingeben muß, bloß um ein paar eingegebene Basic-Programmzeilen schwarz auf weiß in den Händen halten zu können. Und da diese Eingabe nur im Direktmodus ohne weiteres möglich ist, fällt die endlose Tipperei jedesmal von neuem an.
Das hat jetzt ein Ende! Das PROS V2.1 nämlich bietet MPS802-Benutzern für solch umfangreiche Befehlssequenzen sehr einfache Abkürzungen an. Aber auch Besitzer anderer Drucker, besonders des MPS 801, sollten ruhig weiterlesen. Denn wenn das Programm Anklang findet, ist eine baldige Entwicklung eines Zwillings für diese Drucker nicht auszuschließen.
Das Format der PROS-Befehle dürfte Floppy-Besitzern in ähnlicher Form bereits vom DOS V5.1 auf der Demo-Diskette bekannt sein. Sie alle bestehen lediglich aus dem Pfund-Symbol (oben rechts, die dritte Taste) und einem weiteren Zeichen. Das oben genannte Listen sähe mit dem PROS zum Beispiel ganz einfach so aus:
£+ (Pfund) und (Plus)
um die Ausgabe auf den Drucker zu lenken,
LIST
um das Programm zu listen und
£— (Pfund) und (Minus)
um die Ausgabe wieder auf den Bildschirm zu holen.
Dem LIST-Befehl können Sie selbstverständlich auch Zeilenangaben beifügen, ganz wie Sie es bisher gewohnt waren.
Außer der normalen Ausgabeumleitung besteht noch die Möglichkeit, den Ausdruck zu formatieren. In der vorliegenden Version ist ein 40 Zeichen breites Ausgabefeld in Papiermitte eingestellt. Dieses Format ist zum Beispiel beim Ausdruck von Disk-Directories und disassemblierten Maschinenprogrammen sehr nützlich. Wie Sie die entsprechenden Parameter im PROS bereits bei der Eingabe ändern können, lesen Sie bitte weiter hinten.
Die Ausgabebefehle sind natürlich längst noch nicht alles, was das PROS zu bieten hat. Die Befehlsübersicht informiert Sie über die Einsatzmöglichkeiten der restlichen zehn PROS-Befehle.
Doch ich sprach eingangs von einigen besonderen Leckerbissen. Ich habe nämlich bei der Erstellung des Programms die Gelegenheit beim Schopfe ergriffen, noch einige andere Unbequemlichkeiten aus dem Weg zu räumen. So stört es zum Beispiel oft genug, daß beim Commodore 64 auf den Einbau einer Escape-Taste verzichtet wurde. Im PROS wird deshalb die Commodore-Taste zusätzlich mit dieser Funktion belegt, ohne dadurch in sonstigen Funktionen eingeschränkt zu werden.
Außerdem bekamen noch die beiden Funktionstasten F1 und F3 einen Auftrag zugewiesen: die Stop-Funktion. Wenn Sie in Zukunft einen ganz bestimmten Teil Ihres Basic-Programms suchen, sind Sie nicht mehr auf die CTRL-Taste angewiesen, um den LIST-Befehl zu verlangsamen. Sie brauchen nur F1 zu drücken und schon »schläft« der Computer. Erwecken Sie ihn dann mit der F3-Taste zu neuem Leben, so setzt er seine Arbeit genau dort fort, wo er sie zuvor unterbrochen hat.
Die Funktion dieser beiden Routinen beruht auf dem »Verbiegen« des Interrupt-Vektors in der Zeropage (Adresse 788/789). Bei Betätigung der Tasten RUN/STOP-RESTORE wird dieser Vektor jedoch automatisch wieder mit seinen Ursprungswerten versehen, das heißt die beiden Funktionen sind nicht mehr ohne weiteres verfügbar. Um Ihnen nun einen Neuaufruf des PROS (SYS 51555) zu ersparen, kann mit Hilfe von [Pfund] [Pfund] [Return] der entsprechende Programmteil neu aktiviert werden.
Ebenfalls neu aktiviert werden dabei der Kleinschriftmodus und die Repeat-Funktion für alle Tasten. Wollen Sie auf eine der beschriebenen Funktionen von vornherein verzichten, finden Sie auch hier die notwendigen Angaben zur Änderung weiter hinten.
Das Funktionsprinzip der eigentlichen PROS-Befehle basiert auf einer Veränderung des Vektors, der auf den Anfang jener Schleife zeigt, die einen Basic-Befehl holt und ausführt (Speicherstellen 776/777). Wann immer der Computer eine Basic-Zeile liest, im Programm oder im Direktmodus nach Drücken der Return-Taste, wird er nun zunächst prüfen, ob das jeweils gelesene Zeichen ein Pfundzeichen ist. Ist es das nicht, so wird der Prüfvorgang in der normalen Basic-Befehlstabelle fortgesetzt und gegebenenfalls der entsprechende Basic-Befehl ausgeführt. War das Zeichen hingegen tatsächlich ein »Pfund«, so wird jetzt in die PROS-Befehlstabelle gesprungen, um anhand des zweiten Zeichens den richtigen PROS-Befehl herauszusuchen.
Die Arbeitsgeschwindigkeit des Computers wird also kaum verringert, denn zunächst wird ja nur auf ein Zeichen mehr als üblich geprüft. Mit den zusätzlichen Befehlscodes wird erst verglichen, wenn feststeht, daß das PROS tatsächlich angesprochen werden soll.
Für die Abfragetechnik diente mir übrigens der Artikel »Maschinenprogramme auf Tastendruck« von P. Fleig in der 64’er, Ausgabe 12/84, Seite 80, als nützliche Vorlage.
Kommen wir nun zur Speicherbelegung des PROS V2.1. Es belegt die 648 Bytes von $C963 (dez. 51555) bis einschließlich $CBEA (dez. 52202). Daß ich genau diesen Speicherplatz gewählt habe, hat mehrere Gründe:
Erstens läßt das PROS so mehr als dreiviertel des Maschinenspeichers ($C000 - $CFFF) zusammenhängend frei.
Zweitens ist die Startadresse (51555) beim SYS-Aufruf denkbar leicht und entsprechend schnell einzutippen.
Und drittens beträgt der Abstand zum DOS 5.1, das sich ja bei Floppy-Benutzern großer Beliebtheit erfreut, nur genau 22 Bytes. So lassen sich das PROS, das DOS und sogar noch ein weiteres Programm, zum Beispiel das (verschobene) UNNEW (siehe D. Kossmann: Die Ebenen des Absturzes, 64’er, Ausgabe 11/84, Seite 92), mit Hilfe eines Maschinensprachemonitors hintereinander auf Diskette abspeichern und später auch zusammen wieder laden, ohne viel Speicherplatz zu verschwenden.
Um ein solches Kompaktprogramm noch besser nutzen zu können, enthält das PROS noch ein weiteres Extra: Die Speicherstellen $C96D-C96F (MSE-Listing: zweite Zeile, dritte bis fünfte Zahl) enthalten die Werte 4C, 70 und C9. Sie bewirken lediglich einen Sprung in die nächste Speicherstelle. Und doch liegt genau darin der Sinn dieser drei Bytes: Wenn Sie sie nämlich durch die Werte 20, 00 und CC ersetzen, wird beim Aufruf des PROS mit SYS 51555 das DOS (das Sie ja gleich mitgeladen haben) von hier aus mit aufgerufen. Sie sparen sich durch diese kleine Änderung also jedesmal den Aufruf des DOS.
Das PROS besteht aus zwei Teilen. Im ersten Abschnitt, das ist der, welcher beim Aufruf angesprungen wird, werden die erwähnten Vektoren in der notwendigen Weise geändert. Die ebenfalls bereits angesprochenen Interrupt-Routinen werden aktiviert und das Titelbild wird auf den Bildschirm gebracht.
Automatische Grundeinstellung
Auch mit diesem Titelbild hat es eine besondere Bewandtnis: Neben dem Namen des Programmierers, ich spreche von mir, enthält es eine Zeile, in der sich bereits einige PROS-Befehle, durch Doppelpunkte voneinander getrennt, befinden. Wenn sich der Computer nun nach dem Aufruf mit »READY« wieder meldet, befindet sich der Cursor genau in dieser Zeile. Sie brauchen also nur noch »RETURN« zu drücken und schon haben Sie ein paar notwendige Grundeinstellungen für den Drucker getroffen.
Diese Grundbefehle sind im einzelnen folgende:
- Drucker in Grundstellung setzen
- Fehlermeldungen des Druckers ermöglichen
- zu druckende Zeilen pro Seite festlegen und
- Seitenaufteilung anschalten.
Auch hier erhalten Sie weiter unten die notwendigen Informationen, die für eine Änderung beziehungsweise eine Ergänzung der Grundeinstellung notwendig sind.
Der zweite Abschnitt des PROS V2.1 beginnt bei $C974 (dez. 51572). Hier wird zunächst der Befehl geprüft und dann zu der entsprechenden Unterroutine gesprungen.
Das Programmlisting wurde mit Hilfe des MSE erstellt und wird mit ihm eingegeben.
Die Änderungen können mit einem Maschinensprachemonitor, zum Beispiel dem SMON, eingegeben werden.
Bedienungsanleitung
1. Aufruf
Das PROS V2.1 muß absolut geladen werden. Danach genügt die folgende Eingabe zum Aufruf:
NEW [Return]
SYS 51555 [Return]
Danach können die Grundeinstellungen durch nochmaliges Drücken der Return-Taste aktiviert werden.
2. Sonderfunktionen
Durch die Inbetriebnahme des PROS werden gleichzeitig einige besondere Funktionen eingeschaltet. Diese Funktionen werden durch die Tastenkombination RUN/STOP-RESTORE desaktiviert, können aber durch [Pfund] [Pfund] [Return] wieder aufgerufen werden.
Die Funktionen sind im einzelnen folgende:
Stop-Funktion
Ein Druck auf die Funktionstaste F1 läßt den Computer augenblicklich seine derzeitige Arbeit unterbrechen.
Durch Betätigen der Taste F3 wird der Arbeitsvorgang an der gleichen Stelle fortgesetzt, an der er unterbrochen wurde.
Escape-Taste
Die Commodore-Taste bekommt zusätzlich die Funktion einer Escape-Taste zugewiesen. Wird sie gedrückt, so verläßt der Computer den Quote-Modus (Hochkomma-Modus), das heißt, innerhalb von Anführungszeichen werden bei Benutzung der Cursortasten nicht mehr die Steuerzeichen ausgegeben.
Repeat-Funktion
Alle Tasten werden mit der Repeat-Funktion ausgestattet. Das einer Taste entsprechende Zeichen wird solange immer wieder ausgegeben, wie diese Taste gedrückt ist.
Groß-/Kleinschrift
Der Groß-/Kleinschriftmodus wird eingeschaltet.
3. Befehle
Alle PROS-Befehle beginnen mit dem Pfundzeichen. Dem folgt ein weiteres Zeichen und gegebenenfalls ein Parameter mit Werten zwischen 1 und 127.
Als PROS-Befehle werden anerkannt:
£S, <Parameter>
Festlegen des Zeilenabstandes. Drei Schritte entsprechen einer Punktbreite.
£P, <Parameter>
Festlegen der zu druckenden Zeilen pro Seite. Europäische Norm für Endlospapier: 66 Zeilen. Amerikanische Norm: 60 Zeilen.
Bei verändertem Zeilenabstand muß auch die Zahl der Zeilen pro Seite geändert werden, um eine saubere Seitenaufteilung zu erreichen. Es bieten sich dabei folgende Kombinationen an:
S24 - P102; S27 - P90; S32 - P75
S36 - P66 (Grundstellung)
S48 - P48; S54 - P42; S72 - P36
(bezogen auf die europäische Norm)
£(, £), [runde Klammer auf beziehungsweise zu]
Seitenaufteilung an- oder ausschalten. Bei angeschalteter Seitenaufteilung wird die festgelegte Zahl der Zeilen pro Seite gedruckt. Dann erfolgt ein Zeilenvorschub von sechs Zeilen und der Druck wird auf der nächsten Seite fortgesetzt.
£[ ,£ ] ,[eckige Klammer auf beziehungsweise zu] Fehlermeldungen des Druckers ermöglichen beziehungsweise unterdrücken (Grundstellung).
£+, [Plus]
Ausgabe auf den Drucker lenken. Dieser Befehl entspricht in Basic der Befehlsfolge
OPEN 1,4,7:CMD 1
£F
Formatierte Ausgabe auf den Drucker lenken. In der Grundversion des PROS V2.1 ist ein 48 Zeichen breites Ausgabefeld in der Papiermitte, wie es zum Ausdruck von Disk-Direktories und disassemblierten Maschinenprogrammen nützlich ist.
Achtung: Soli der Ausdruck mit Hilfe eines Maschinensprachemonitors erfolgen, empfiehlt es sich, vorher die Ausgabe von Fehlermeldungen zu unterdrücken, da unter Umständen der Ausgabeabschluß nicht korrekt erfolgen kann. Auf die Arbeitsweise mit dem Drucker hat diese Fehlermeldung sonst keine Auswirkungen.
£—, [Minus]
Aufheben des durch £ + oder £ F erreichten Ausgabemodus. Nach diesem Befehl erfolgt die Datenausgabe wieder auf dem Bildschirm.
£#, (Doppelkreuz)
Wiederherstellung der Druckergrundstellung (Einschaltzustand).
££ [Pfund]
Wiederaktivieren der PROS-Sonderfunktionen.
£Q
Verlassen des PROS V2.1. Nach Eingabe dieses Befehls sind alle PROS-Befehle außer Betrieb. Um wieder mit dem Programm arbeiten zu können, muß es mit SYS 51555 neu aufgerufen werden.
Die Sonderfunktionen werden durch diesen Befehl nicht aufgehoben.
Änderungsvorschläge
1. PROS-Befehlscode [Pfund] ändern
Sollen die PROS-Befehle mit einem anderen Zeichen als dem »Pfund« beginnen, so muß der ASCII-Code des gewünschten Zeichens in der Speicherstelle $C978 (dez. 51576) stehen. In der Normalversion lautet dieser Wert $5C (dez. 92).
2. Änderung beziehungsweise Ergänzung der Grundbefehle in der Titelseite
Die Grundbefehle befinden sich in den Speicherstellen $CA58 - $CA7c (dez. 51800 - 51836). Die Befehle müssen als hexadezimale ASCII-Codes eingegeben werden. Der Code für das Pfundzeichen lautet $5C (92).
3. Ausschalten der Kleinschrift
Um beim PROS-Aufruf den Großschriftmodus beizubehalten, müssen die Bytes $CA90 - $CA95 mit dem Wert $EA (Befehlscode für NOP) aufgefüllt werden.
Um auch im Ausgabemodus (PROS-Befehl [Pfund] und [Plus]) im Großschriftmodus zu bleiben, muß die Speicherstelle $CBA5 (dez. 52133) statt $07 den Wert $00 erhalten.
4. Ausschalten der Repeatfunktion für alle Tasten
Um diesen Effekt zu vermeiden, sind die Bytes $CA8B -$CA8F mit dem Wert $EA aufzufüllen.
5. Ausschalten der Stop-Funktion und der Escape-Taste
Die entsprechenden Routinen lassen sich umgehen, indem in den Speicherstellen $C9E7 (dez. 51687) und $CB9F (dez. 52127)jeweils der Wert $7F durch $8B ersetzt wird.
Der Bereich $CA7F - $CA8A (dez. 51839 - 51850) wird dadurch übersprungen und kann zum Beispiel für individuelle PROS-Erweiterungen als Speicherplatz dienen.
6. Änderung der Tastenbelegung der Stop-Funktion
Um die Tastenbelegung für die Stop-Funktion (normalerweise F1 und F3) zu ändern, müssen die Tastaturcodes der gewünschten Tasten in die Speicherstellen $CA9A (statt F1-Taste) und $CAB3 (statt F3-Taste) geschrieben werden. Die Dezimalwerte der Adresse: 51866 und 51891.
7. Escape-Taste verlegen
In der PROS V2.1 Normalversion versieht die Commodore-Taste zusätzlich den Dienst einer Escape-Taste. Ersatzweise können auch die Taste [CTRL] oder [Pfeil nach links] mit dieser Aufgabe betraut werden. Dazu muß die Stelle $CABB den Wert $FB (dez. 251) beziehungsweise $FD (dez. 253) bekommen.
8. Änderung der Gerätenummer
Das PROS V2.1 kann der Gerätenummer des benutzten Druckers angepaßt werden, indem der neue Wert in die Stelle $CACE (dez. 51918) geschrieben wird.
9. Verändern des formatierten Ausgabefeldes
Das in der Normalversion festgelegte formatierte Ausgabefeld (40 Zeichen breit in Papiermitte) kann wie folgt verändert werden:
Die gewünschte Breite des linken Randes ist in der Speicherstelle $CBC8 (dez.52168), die des Ausgabefeldes in $CBD2 (dez. 52178) abzulegen.
Hinweis: Auf der Leserservice-Diskette befindet sich einmal das PROS V2.1 selbst und zusätzlich mit integriertem DOS V5.1 und dem Programm UNNEW. Aufruf von UNNEW: SYS 53166.
(Peter T. Schmidt/gk)PROGRAMM : PROS V2.1 C963 CBEB ----------------------------------- C963 : A9 74 8D 08 03 A9 C9 8D 6A C96B : 09 03 4C 70 C9 20 D9 C9 B0 C973 : 60 20 73 00 C9 5C F0 06 0F C97B : 20 79 00 4C E7 A7 20 73 05 C983 : 00 4C 8A C9 4C AE A7 A2 A3 C98B : 00 DD AC C9 F0 0A E8 E8 B3 C993 : E8 E0 27 F0 E3 4C 8C C9 3A C99B : BD AD C9 8D AA C9 BD AE A0 C9A3 : C9 8D AB C9 6C AA C9 56 47 C9AB : CB 53 23 CB 50 2B CB 5B A6 C9B3 : 33 CB 5D 38 CB AE 4B CB 21 C9BB : 28 56 CB 29 61 CB 51 6C B9 C9C3 : CB 23 93 CB 5C 9E CB AA BD C9CB : A4 CB AB B4 CB 46 BF CB 5C C9D3 : 20 73 00 4C 87 C9 A2 00 88 C9DB : BD E9 C9 20 D2 FF E8 E0 96 C9E3 : 96 D0 F5 4C 7F CA 11 20 BB C9EB : 20 20 20 20 20 20 20 20 EB C9F3 : 20 2A 2A 2A 2A 20 D0 52 84 C9FB : 4F 53 20 20 D6 32 2E 31 1A CA03 : 20 2A 2A 2A 2A 0D 11 20 98 CA0B : 20 20 20 20 20 20 20 D0 6D CA13 : 52 49 4E 54 45 52 20 CF 2F CA1B : 50 45 52 41 54 49 4E 47 22 CA23 : 20 D3 59 53 54 45 4D 0D AC CA2B : 11 20 20 20 20 28 43 29 FB CA33 : 20 42 59 20 D0 45 54 45 E2 CA3B : 52 20 D4 2E 20 D3 43 48 D6 CA43 : 4D 49 44 54 2C 31 39 38 72 CA4B : 34 2F 38 35 0D 11 11 11 8B CA53 : 11 11 11 91 91 20 20 20 3E CA5B : 20 5C 23 20 3A 20 5C 5B 43 CA63 : 20 3A 20 5C 50 36 36 20 04 CA6B : 3A 20 5C 28 20 20 20 20 95 CA73 : 20 20 20 20 20 20 20 20 73 CA7B : 20 20 91 91 78 A9 96 8D 8C CA83 : 14 03 A9 CA 8D 15 03 58 1B CA8B : A9 FF 8D 8A 02 A9 17 8D CD CA93 : 18 D0 60 48 A5 CB C9 04 1C CA9B : F0 04 68 4C B8 CA A9 CA 4F CAA3 : 48 A9 B0 48 08 48 8A 48 72 CAAB : 98 48 4C B8 CA A5 CB C9 2E CAB3 : 05 D0 EB F0 E5 A5 91 C9 9F CABB : DF D0 06 A9 00 85 D4 85 44 CAC3 : D8 4C 31 EA 00 00 88 AD E8 CACB : C9 CA A2 04 AC C7 CA 20 97 CAD3 : BA FF A9 00 20 BD FF 20 27 CADB : C0 FF AE C9 CA 20 C9 FF 54 CAE3 : 60 AD C8 CA 20 D2 FF A9 91 CAEB : 0D 20 D2 FF 60 20 CC FF F7 CAF3 : AD C9 CA 20 C3 FF A9 00 1E CAFB : 8D C7 CA 8D C8 CA A9 88 6B CB03 : 8D C9 CA 60 20 79 00 20 42 CB0B : 9B B7 8E C8 CA 20 19 CB E8 CB13 : 20 79 00 4C 87 C9 20 CA 56 CB1B : CA 20 E4 CA 20 F0 CA 60 FD CB23 : A9 06 8D C7 CA 4C 07 CB EE CB2B : A9 03 8D C7 CA 4C 07 CB 75 CB33 : A9 04 4C 3D CB A9 09 4C 60 CB3B : 3D CB 8D C7 CA A9 0A 8D F7 CB43 : C8 CA 20 19 CB 4C D3 C9 9E CB4B : A9 0C 8D C8 CA 20 19 CB 20 CB53 : 4C D3 C9 A9 93 8D C8 CA 8F CB5B : 20 19 CB 4C D3 C9 A9 13 DD CB63 : 8D C8 CA 20 19 CB 4C D3 D4 CB6B : C9 A9 E4 8D 08 03 A9 A7 82 CB73 : 8D 09 03 A2 00 BD 86 CB 3A CB7B : 20 D2 FF E8 E0 0D D0 F5 C7 CB83 : 4C D3 C9 0D 20 47 4F 4F E5 CB8B : 44 20 42 59 45 20 21 0D 8F CB93 : A9 0A 8D C7 CA 20 19 CB 47 CB9B : 4C D3 C9 20 7F CA 4C D3 6E CBA3 : C9 A9 07 8D C7 CA A9 89 41 CBAB : 8D C9 CA 20 CA CA 4C D3 AF CBB3 : C9 A9 89 8D C9 CA 20 F0 BA CBBB : CA 4C D3 C9 A9 02 8D C7 4A CBC3 : CA 20 CA CA A2 14 A9 20 5B CBCB : 20 D2 FF CA D0 F8 A2 28 5D CBD3 : A9 41 20 D2 FF CA D0 F8 0B CBDB : A9 0D 20 D2 FF 20 F0 CA C8 CBE3 : A9 01 8D C7 CA 4C A9 CB B6