C 64
Software-Hilfe

Tips und Tricks zu Vizawrite (Teil 9)

Gibt es etwas, das Sie an Vizawrite 64 noch verbessern möchten? Wünschen Sie sich beispielsweise eine DIN-Tastatur? Dann ändern Sie doch einfach die Tastaturbelegung! Viele Änderungen und Erweiterungen können Sie nun leicht selbst vornehmen. Weiterhin zeigen wir Ihnen die einfachste und eleganteste Möglichkeit, ein nicht gespeichertes Dokument nach einem versehentlichen »QUIT« zu retten.

Ein besonders großer Nachteil für »Blindschreiber« ist, daß bei Vizawrite 64 zwar die deutschen Umlaute an die richtigen Stellen der Tastatur gelegt wurden, die Buchstaben »X« und »Y« jedoch vertauscht sind. Auch das »ß« befindet sich auf einer unüblichen Taste. Nichts ist also naheliegender als die nachträgliche Installation einer DIN-Tastaturbelegung.

Vizawrite 64 ließ sich bislang nur sehr eingeschränkt verändern, da das Programm mit einem Autostart versehen und <RUN/ STOP+RESTORE> abgeschaltet ist. Die einzige Möglichkeit für eine nachträgliche Änderung am Programm selbst ist, Vizawrite 64 zunächst mit einem Hardware-Reset zu verlassen. Hierbei werden jedoch im Normalfall wichtige Speicherstellen gelöscht, so daß ein Neustart des veränderten Programms mit einem SYS-Befehl aussichtslos wäre (lediglich modifizierte Betriebssysteme einiger Floppy-Speeder bieten einen Reset, der weitgehend alle Speicherinhalte unbeeinflußt läßt). Vor einem erfolgreichen Neustart von Vizawrite 64 ist es deshalb unbedingt notwendig, einige Speicherstellen zu »restaurieren«. Listing 1 übernimmt diese wichtige Aufgabe. Dieser Basic-Lader erzeugt ein kurzes Maschinenprogramm, das automatisch auf Diskette gespeichert wird. Dieses kann nun bei Bedarf mit »LOAD"VIZA.PATCH",8,1« in den Bildschirmspeicher geladen und mit »SYS 1024« gestartet werden (löschen Sie bitte vor dem Laden den Bildschirm <SHIFT+CLR>). Das Programm verändert einige Speicherstellen und schaltet auf den Vizawrite-Zeichensatz um (siehe Assembler-Programm Listing 2). Danach meldet sich der Computer mit dem bekannten »READY.«. Mit SYS 2100 gelangen Sie nun zurück ins Vizawrite-Hauptmenü. Wollen Sie in den Editor, ohne das darin enthaltene Dokument zu löschen, geben Sie bitte SYS 5103 ein (SYS 5072 bei der englischen Version) und drücken <RETURN>. Dieser Einsprung funktioniert jedoch nur dann fehlerfrei, wenn sich auch tatsächlich Text im Speicher befindet. In vielen Fällen wird hierbei vor dem Text eine zusätzliche Formatzeile eingefügt, die Sie am besten sofort löschen. Danach sollten Sie das Dokument besser speichern und zum weiteren Überarbeiten Vizawrite 64 erneut laden, da bei diesem Warmstart nicht für die Funktion aller Vizawrite-Routinen garantiert werden kann.

Wollen Sie Änderungen an Vizawrite 64 vornehmen, müssen Sie im Prinzip wie folgt vorgehen:

  1. Vizawrite 64 laden und mit Reset verlassen.
  2. Veränderungen vornehmen.
  3. VIZA.PATCH laden und mit SYS 1024 starten.
  4. Vizawrite 64 mit SYS 2100 erneut starten.

Die Punkte 2 bis 4 lassen sich jedoch auch zusammenfassen. In diesem Fall brauchen Sie nach dem Reset lediglich ein Programm nachzuladen, das die gewünschten Änderungen vornimmt, den Original-Inhalt der Speicherstellen vor dem Reset wiederherstellt und Vizawrite 64 danach automatisch startet. Als Beispiel hierfür dient die oben angekündigte Vertauschung der Tasten <X> und <Y> (Listing 3).

Installation einer DIN-Tastatur

Dieses Vorhaben wird durch die deutsche Version von Vizawrite 64 selbst unterstützt, da eine Tastentausch-Routine bereits im Programm enthalten ist. Jedes Zeichen, das von der Tastatur empfangen wird, wird von Vizawrite 64 zunächst mit einigen Bytes einer Tabelle ($7546 bis $7552) verglichen und gegebenenfalls umgewandelt. Drücken Sie beispielsweise die <£>-Taste, die ebenfalls in dieser Tabelle enthalten ist, übernimmt Vizawrite 64 anstelle dessen den ASCII-Code des »ß«. Dieser Wert befindet sich in einer zweiten, entsprechenden Tabelle von $7554 bis $7560.

Wollen Sie weitere Tasten vertauschen, brauchen Sie lediglich eine erweiterte Tabelle in einen nicht genutzten Speicherbereich zu legen und Vizawrite 64 mitzuteilen, wo sich diese Tabelle befindet. Das kurze Maschinenspracheprogramm (Listing 3) enthält die Initialisierungs-Routine von »VIZA.PATCH« und darüber hinaus die erweiterten Tabellen mit den alten und neuen Werten für »X« und »Y«. Diese Tabellen können Sie, wenn Sie wollen, sogar noch um weitere Zeichen erweitern. Sie brauchen hierzu lediglich die ASCII-Werte der zu tauschenden Zeichen an die erste Tabelle (ab $03A9) und die Werte der gewünschten, neuen Zeichen an die zweite anzufügen (ab $03D1). Überschreiben Sie hierzu einfach die notwendige Anzahl von Nullbytes mit den entsprechenden ASCII-Werten und speichern das erweiterte Programm hinterher auf Diskette. Dies ist mit einem Monitor (zum Beispiel SMON) leicht zu bewerkstelligen.

Laden Sie dieses Programm bitte nach dem Reset von Vizawrite 64 mit LOAD"VIZA.KEY",8,1 und starten es mit SYS 828. Vizawrite 64 wird automatisch neu gestartet und steht Ihnen mit veränderter Tastaturbelegung zur Verfügung. Gleichzeitig können Sie nun auch die spitzen Klammern verwenden (<SHIFT+> <SHIFT—>). Falls Sie diese Zeichen benutzen wollen, ohne den Tastentausch, können Sie auch nach einem Reset im Direktmodus eingeben: »POKE 300043,60: POKE 30045,62«.

Wollen Sie kleinere Routinen einbinden, ist es für Sie wichtig, zu wissen, wie Vizawrite 64 den Speicher des C 64 nutzt:

$033C — $0364 genutzt als Zwischenspeicher
$0365 — $03f7 ungenutzt (Kassettenpuffer)
$0800 — $7917 Vizawrite 64 Programmspeicher
$7918 — $FE3D Textspeicher
$FE3E — $FFFF vielfältig genutzt

Wie Sie aus dieser Aufstellung ersehen können, kann im Normalfall lediglich der größte Teil des Kassettenpuffers für eigene Erweiterungen genutzt werden. Mit einem kleinen Trick ist es jedoch möglich, den Textspeicher von Vizawrite 64 beliebig zu verkleinern und so beispielsweise den Bereich $E000 bis $FE3D für eigene Routinen zu nutzen. Es steht dann zwar weniger Speicherplatz für Texte zur Verfügung, was aber nahezu bedeutungslos ist, da man Vizawrite-Dokumente bekanntlich mit dem »GLOBAL«-Befehl verknüpfen kann. Listing 4 rechnet das gewünschte neue Textspeicherende in das notwendige LO/HI-Format um. Die ausgegebenen Werte müssen vor dem Neustart von Vizawrite 64 in die Speicheradressen 45/46 ($2D/$2E) geschrieben werden. Am besten ändern Sie aber zur Verkleinerung des Textspeichers die entsprechenden Befehle in »VIZA.PATCH« (Listing 2, Zeile 1140 und 1160 oder in Listing 1 das 10. und 14. DATA-Element der Zeile 100).

Druckeranpassung

Wenn Sie bisher Schwierigkeiten hatten, Umlaute korrekt auf Ihrem Drucker auszugeben, obwohl er dazu hardwaremäßig in der Lage wäre, und die herkömmlichen Methoden versagten, können Sie mit Listing 5 die Druckercodes für die Umlaute anpassen. Dies ist im Prinzip auch per POKE möglich. Die Tabelle mit diesen Werten befindet sich bei der deutschen Version von Vizawrite 64 (Versionsnummer B1) in der Reihenfolge »öÖäÄüÜß« ab Adresse $75B0 (dezimal 30128) im Speicher. Wenn Sie nach der Veränderung Vizawrite 64 wie oben beschrieben erneut starten, werden die neudefinierten Umlaute an den Drucker gesendet.

Eigene Programme in Vizawrite 64

Alle bisher in Tips und Tricks zu Vizawrite 64 veröffentlichten Veränderungen, Anpassungen und Verbesserungen arbeiten nach einem gemeinsamen Schema. Die neue Routine wird beispielsweise in den Kassettenpuffer gelegt und ein Standardvektor (zum Beispiel der OUTPUT-Vektor $0326/0327) auf dieses Unterprogramm »verbogen«. In der vorliegenden Ausgabe haben Sie eine Möglichkeit kennengelernt, Vizawrite 64 direkt durch Überschreiben zu verändern und erneut zu starten. Es gibt jedoch noch einen weit interessanteren Weg. Wie Sie sicherlich bereits wissen, versucht Vizawrite 64 nach der Tastenkombination <CBM> + <SHIFT> <RUN/STOP> eine Programmdatei mit dem Namen »VIZA*« (Vizaspell) nachzuladen und bei Erfolg zu starten. Genau hier können Sie einsetzten. Denn wenn sich auf der Diskette nicht Vizaspell, sondern ein anderes Programm befindet, das aber die gleichen Kennzeichen besitzt, wird dieses von Vizawrite 64 sebstverständlich auf die gleiche Weise behandelt. Es ist also theoretisch möglich, eigene Maschinenprogramme innerhalb des Texteditors zu benutzen. Doch wie ist dies zu erreichen?

— Das Programm muß in einem ganz bestimmten Speicherbereich ($5DBC-$752F) lauffähig und mit SYS 24000 (JMP $5DC0) startbar sein.

— Die ersten vier Bytes müssen der Vizaspell-Kennung entsprechen ($53 $FF $00 $00).

— Das Programm darf möglichst keinen anderen Speicherbereich beeinflussen.

— Das Programm muß mit der folgenden Befehlsfolge enden:

LDX  #$03
JSR  $0849
JMP  $083A

(Rücksprung zu Vizawrite 64).

Beachten Sie bitte bei der Erstellung eigener Programme innerhalb Vizawrite 64, daß das Register 1 der Zeropage beim Start von Vizaspell den Wert 48 ($30) enthält. Das heißt, wenn Betriebssystem- oder Basic-Interpreter-Routinen verwendet werden sollen, muß dieses Register entsprechend verändert werden. Auch die CHRGET-Routine wird von Vizawrite 64 für eigene Zwecke geändert: Das Register $7b der Zeropage enthält den Wert $08 anstelle der normalerweise notwendigen $02.

Völlig neue Dimensionen

Vizawrite 64 ist auch ohne Ergänzung eines der leistungsfähigsten Textverarbeitungsprogramme für den C 64. Es ist jedoch damit zu rechnen, daß in Zukunft Programme unserer Leser das bisher Unglaubliche wahr machen. Grafikfähigkeit, 80-Zeichendarstellung, Rechen- und DFÜ-Option in Vizawrite müssen nicht länger Illusion bleiben. Lassen Sie sich überraschen. Bereits in den nächsten Ausgaben werden wir die ersten Erweiterungen veröffentlichen.

(nj)
100 data 169,24,133,43,169,121,133,44,169,37,133,45,169,133,133,46,169,45
110 data 141,25,3,141,23,3,169,152,141,24,3,141,22,3,169,177,141,248,7,169
120 data 120,141,0,208,169,52,141,1,208,169,30,141,24,208,169,14,141,39,208
130 data 169,8,76,210,255
140 fori=1to62:reada:b=b+a:next
150 if b<>6718 thenprint"fehler in datas":end
160 print"diskette einlegen! <return>"
170 geta$:ifa$<>chr$(13)then170
180 restore
190 open2,8,2,"viza.patch,p,w"
200 print#2,chr$(0);chr$(4);: rem ladeadresse $0400
210 fori=1to62:reada:print#2,chr$(a);:next
220 close2
Listing 1. Dieser Basic-Lader speichert »VIZA.PATCH« als Maschinenprogramm auf Diskette
1000 open4,4:cmd4
1010 sys9*4096
1020 .opt p2
1030 *= $0400
1100 lda #$18  ; textspeicheranfang
1110 sta $2b   ; $7918 (dez. 31000)
1120 lda #$79  ; nach $2b/$2c
1130 sta $2c
1140 lda #$25
1150 sta $2d   ; textspeicherlaenge
1160 lda #$85  ; $8525 (dez. 34085)
1170 sta $2e   ; nach $2d/$2e
1180 lda #$2d
1190 sta $0319 ; nmi- und brk-vektor
1200 sta $0317 ; "verbiegen"
1210 lda #$98
1220 sta $0318
1230 sta $0316
1240 lda #$b1
1250 sta $07f8 ; spritepointer setzen
1260 lda #$78
1270 sta $d000 ; x-koordinate sprite
1280 lda #$34
1290 sta $d001 ; y-koordinate sprite
1300 lda #$0e
1310 sta $d027 ; spritefarbe hellblau
1320 lda #$1e  ; zeichensatz
1330 sta $d018 ; aktivieren
1340 lda #$08
1350 jmp $ffd2 ; <shift> <cbm> sperren
Listing 2. Assembler-Listing von »VIZA.PATCH«
PROGRAMM : VIZA.KEY       033C 03D2
-----------------------------------
033C : A9 18 85 2B A9 79 85 2C   8D
0344 : A9 25 85 2D A9 85 85 2E   C0
034C : A9 2D 8D 19 03 8D 17 03   11
0354 : A9 98 8D 18 03 8D 16 03   AB
035C : A9 B1 8D F8 07 A9 78 8D   1B
0364 : 00 D0 A9 34 8D 01 D0 A9   35
036C : 1E 8D 18 D0 A9 98 8D 65   D1
0374 : 75 8D 6B 75 A9 C0 8D 72   F5
037C : 75 A9 03 8D 66 75 8D 6C   59
0384 : 75 8D 73 75 4C 34 08 00   D2
038C : 00 00 00 00 00 00 00 00   8D
0394 : 00 00 00 00 3A 5B 40 BA   89
039C : 3B 5D 3E DD 3C DB 5C A9   38
03A4 : 7E 59 5A D9 DA 00 00 00   4E
03AC : 00 00 00 00 00 00 00 00   AD
03B4 : 00 00 00 00 00 00 00 00   B5
03BC : 00 00 00 00 B6 BA B8 BB   58
03C4 : A5 B9 3A 3E 3B 3C BC 5C   DD
03CC : 40 5A 59 DA D9 00         63
Listing 3. Maschinenprogramm zur Installation einer DIN-Tastatur.
10 print"{clr}{swlc}{down}gewuenschte Textspeichergrenze (neu):"
20 input"{down}dezimale Adresse:  65085{left}{left}{left}{left}{left}{left}{left}";a
25 ifa>65085 or a<40000 then print"{down}ungueltiger Wert":end
30 b=a-31000
40 c=int(b/256)
50 d=b-c*256
60 print"{down}erforderliche Werte fuer Speicherstellen"
70 print"45 ($2d):{rvon}"d
80 print"{down}46 ($2e):{rvon}"c
90 print"{down}Textspeicher (neu):"b-8"Zeichen"
100 print"(ohne Formatzeile)"
Listing 4. Basic-Programm zur Berechnung der notwendigen POKEs für die Textspeicher-Dezimierung
PROGRAMM : VIZA.UMLAUTE   C000 C181
-----------------------------------
C000 : 20 9B C0 A9 1E 8D 18 D0   A3
C008 : A9 08 20 D2 FF A9 C1 A0   AD
C010 : C0 20 1E AB A9 00 85 FB   86
C018 : A0 0C A2 08 86 FC 20 75   24
C020 : C0 A6 FC E8 E8 86 FC E0   08
C028 : 16 D0 F3 A9 00 85 FB A0   36
C030 : 1A A2 08 86 FC 20 5A C0   2A
C038 : A6 FC E8 E8 86 FC E0 16   B3
C040 : D0 F3 A9 39 A0 C1 20 1E   70
C048 : AB 20 E4 FF C9 4A F0 07   FD
C050 : C9 4E D0 F5 4C 0D C0 4C   FC
C058 : 4E C1 20 0C E5 20 60 A5   3D
C060 : A2 00 86 7A 20 79 00 20   01
C068 : 9E B7 8A A6 FB 9D B0 75   B4
C070 : E6 FB A0 1A 60 20 0C E5   C2
C078 : A6 FB BD BA C0 20 D2 FF   3B
C080 : A6 FC A0 1A 20 0C E5 A6   57
C088 : FB BD B0 75 A8 20 A2 B3   BA
C090 : 20 DF BD 20 1E AB E6 FB   E6
C098 : A0 0C 60 A9 0C 8D 20 D0   DB
C0A0 : 8D 21 D0 A9 18 A0 C1 20   F5
C0A8 : 1E AB 20 E4 FF C9 4A F0   9A
C0B0 : 06 C9 4E D0 F5 68 68 60   4D
C0B8 : EA EA B6 BA A5 B9 B8 BB   9F
C0C0 : BC 93 11 12 20 20 20 20   90
C0C8 : D6 49 5A 41 57 52 49 54   D7
C0D0 : 45 20 36 34 20 C4 52 55   56
C0D8 : 43 4B 45 52 2D C1 4E 50   17
C0E0 : 41 53 53 55 4E 47 20 20   2A
C0E8 : 20 20 20 20 0D 12 20 20   47
C0F0 : 20 20 20 20 20 20 DA 45   25
C0F8 : 49 43 48 45 4E 3A 20 20   15
C100 : 20 20 20 20 C1 D3 C3 C9   9A
C108 : C9 2D C3 4F 44 45 3A 20   DA
C110 : 20 20 20 20 20 20 92 00   9A
C118 : 93 90 20 56 49 5A 41 57   E1
C120 : 52 49 54 45 20 49 4D 20   96
C128 : 53 50 45 49 43 48 45 52   4E
C130 : 20 28 4A 2F 4E 29 20 3F   0A
C138 : 00 11 20 49 4E 20 CF 52   BC
C140 : 44 4E 55 4E 47 20 28 4A   75
C148 : 2F 4E 29 20 3F 00 A9 18   B8
C150 : 85 2B A9 79 85 2C A9 25   AF
C158 : 85 2D A9 85 85 2E A9 2D   5A
C160 : 8D 19 03 8D 17 03 A9 98   4E
C168 : 8D 18 03 8D 16 03 A9 B1   F7
C170 : 8D F8 07 A9 78 8D 00 D0   06
C178 : A9 34 8D 01 D0 A9 00 18   49
C180 : 60                        C2
Listing 5. Maschinenprogramm zur Veränderung der ASCII-Codes für die deutschen Sonderzeichen.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →