Problembeschreibung |
Speicherstelle |
CBM
4008 |
CBM
4032 B (VICE) |
CBM
4032 (VICE) |
Tastaturabfrage
(letzte gedrückte Taste) |
Der
Grund, warum bei meinen Spielen im Emulator die Tastatursteuerung mit [RETURN]
und [RVS/OFF] versagte. |
|
$97
(151)
oder
auch
$A6
(166) |
Inhalt:
Position der gedrückten Taste in der Tastaturcodetabelle (Grafiktastatur). |
 |
![[Tastatur technisch]](pic_keybord_t.jpg) |
 |
Dies
ist die gleiche Methode wie bei der 3001 Serie. Z.B.: |
27
für [RETURN] und |
8
für [RVS/OFF] |
|
Inhalt:
Position der gedrückten Taste in der Tastaturcodetabelle (Businesstastatur). |
 |
![[Tastatur business]](pic_keybord_b.jpg) |
 |
Leider
unterscheiden sich die Tabellen total! Z.B.: |
52
für [RETURN] und |
16
für [RVS/OFF] |
|
Inhalt:
PETSCII-Code
der gedrückten Taste. |
Diese
Änderung findet sich auch beim 8032 und sorgt dafür, dass unabhängig
vom Tastaturtyp (technisch / business / national) in der Speicherstelle
immer der gleiche Wert steht. Z.B.: |
13
für [RETURN] und |
18
für [RVS/OFF] |
|
IRQ-Routine
benutzt Cassettepuffer #2
($033A
bis $03F9) |
Leider
der Grund für diverse Abstürze, da der Casettenpuffer #2 schon
immer gern für Maschinencode benutzt wurde... |
Besonders
fatal wirkt sich $03EB aus. Hier wird im neuen ROM die Länge des Tastaturpuffers
bestimmt. Wird der Wert über 10 erhöht, überschreibt der
Tastaturpuffer den Cassettenpuffer #1. Dort abgelegte Maschinenroutinen
werden gnadenlos zerschossen. |
|
$03E9
- $03F9 |
Für
Umrechnungen in der IRQ-Routine (Tastaturabfrage) wird nur die Speicherstelle
$03F8 benötigt. |
identisch
zum 4008 |
Für
Umrechnungen in der IRQ-Routine (Tastaturabfrage) und als zusätzliche
Datenspeicher werden die Speicherstellen $03E9 bis $03EE benötigt. |
Das
ist eine fatale Änderung (mit garentiertem Absturz), denn dieser Bereich
wird üblicherweise von Maschinenprogrammen benutzt. Man kann dies
nur als undurchdacht bezeichen (es ist auch keine Notwendigkeit für
diese Änderung an eben dieser Stelle erkennbar). |
|
Editor-Sprungtabelle
/ [CLR/HOME]-Routine |
$E04B
bzw.
$E015 |
Der
direkte Einsprung in die CLR-Home-Routine liegt bei $E04B. |
Es
gibt (wie beim CBM 3001 Series) noch keine Sprungtabelle für den Editor
(bei $E000). |
|
identisch
zum 4008 |
Der
Einsprung erfolgt über eine Sprungtabelle bei $E015. |
Wie
auch beim 8032 wurde bei $E000 eine Editor-Sprungtabelle eingeführt
(auch noch beim C64 und C128 vorhanden). Die eigentliche CLR/HOME-Routiene
liegt beim 4032 bei $E042 und beim 8032 bei $E051. |
|
Zeilenanfang
Low-Byte-Tabelle |
$E65b
bzw.
$E798 |
Tabelle
der Low-Bytes der Zeilenanfänge ab $E65b im ROM. |
identisch
zum 4008 |
Tabelle
der Low-Bytes der Zeilenanfänge ab $E798 im ROM. |
Beim
CBM 8032 liegt diese Tabelle im ROM ab $E755 |
|
Zeilenanfang
High-Byte-Tabelle |
Nur
ein Problem bei Verwendung eines CBM 8032 im 40-Zeichen-Modus (via "cbm4032_any_hz") |
|
$E0
- $F8 |
Tabelle
der High-Bytes der Zeilenanfänge ab $E0 in der Zeropage. |
identisch
zum 4008 |
Beim
CBM 8032 liegt diese Tabelle im ROM bei $E76E (andere Tabelle, da 80 Zeichen
pro Zeile verwaltet werden müssen und gleichzeitig die Zeilenverkettung
entfällt) |
Der
Bereich bei $E0 bis $F8 wird für andere Parameter des Editors benutzt |
|