Maschinensprachemonitor

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. Monitor (Begriffsklärung).


Ein Programm zum Betrachten, Auslesen oder Bearbeiten des Speichers eines Computers wird Monitor genannt (angemerkt sei, dass es auch z.B. Monitore für Datenträger gibt, sog. "Diskmonitore"). Monitore werden auch insbesondere zum Anzeigen und Modifizieren von Maschinensprache-Programmen genutzt und enthalten typischerweisen einen einfachen (Dis-)Assembler, der Maschinensprache bzw. Binärcode in die leichter verständliche Assemblerdarstellung überführen kann.

Ein Monitor stellt die Speicherbelegung normalerweise als Hexadezimalzahlen dar (z.B. $C000, $FF, $A), beherrscht aber häufig auch weitere Darstellungsmöglichkeiten wie Dezimal- und Dualzahlen (auch Oktalzahlen, aber seltener) oder auch Sprite- oder PETSCII-Darstellung.

Es gibt Maschinensprachemonitore, die entweder zusätzlich über Steckmodule (z.B. in der Final Cartridge 3, Action Replay) bzw. nach dem Einladen von Diskette oder Datasette (z.B. MLM64 Plus aus INPUT 64) verfügbar gemacht werden können, oder bereits fest im ROM vorhanden sind, siehe Implementierungen. Ein Spezialfall sind Monitore, die in Emulatoren eingebaut sind, siehe Einschränkungen.

Funktionsumfang[Bearbeiten]

Der Vorteil bei den nicht "eingebauten" Maschinensprachemonitoren ist, dass sie oft komfortabler zu bedienen sind als die computerinternen und einen erweiterten Funktionsumfang aufweisen. Als Standardfunktionen findet man oft:

  • CPU-Zustand (Register, Flags etc.) anzeigen und ändern.
  • Programm an einer gewünschten Adresse ausführen.
  • Anzeigen und Ändern von Speicherbereichen, typischerweise in verschiedenen Formaten (als Hexdump, PETSCII, Sprite-Daten etc.)
  • Abspeichern von Speicherbereichen bzw. das Laden von Daten in einen Speicherbereich auf ein bzw. von einem Massenspeicher.
  • Speicherbereich mit Wert/Muster/Zeichenfolge füllen.
  • Wert/Muster/Zeichenfolge in einem Speicherbereich suchen.

Zu den erweiterten Funktionen zählen:

  • Disassemblieren/assemblieren in der entsprechenden Assemblerdarstellung der CPU.
  • Breakpoint in Maschinencode setzen und verarbeiten.
  • Tracing/Singlestepping von Maschinencode-Programmen.
  • Verschieben von Speicherbereichen.
  • Verschieben von Maschinencode mit Anpassung der absoluten Referenzen des dort befindlichen Programms (Program Relocation).
  • Suche nach Verwendung von Adressen bzw. Adressbereichen in einem Programm.
  • Maschinencodebefehle/-sequenz in bestehendes Programm einfügen bzw. daraus entfernen (mit Anpassung der absoluten Referenzen).
  • Zahlenkonversionen
  • Berechnung von arithmetischen und logischen Ausdrücken.
  • Ein-/Ausgabefunktionen für Drucker und Massenspeicher bzw. Floppy-Befehle.
  • BASIC-Vektoren oder BASIC-Programme reparieren/korrigieren.
  • Sprite-Funktionen

Einschränkungen[Bearbeiten]

Normale Monitore sind einigen Einschränkungen unterworfen, so lässt sich z.B. ein Programm, das im Grafikmodus läuft, nicht debuggen, da der Monitor den Textmodus benötigt. Auch etliche andere in Programmen benutzte Techniken (eigene Interrupts etc.) sind problematisch, und nicht zuletzt gerät beim Debuggen das Timing des jeweiligen Programms komplett durcheinander. Das Debugging von Rasterzeilen-Interrupts oder Schnelllader-Routinen ist deswegen unmöglich. Die in Emulatoren wie VICE eingebauten Monitore haben diese Probleme nicht und können teilweise neue Funktionalität anbieten, zum Beispiel einen 100%igen Freeze des aktuellen Rechnerzustands (dump bzw. undump in VICE), was sie zu einem sehr mächtigen Werkzeug werden lässt, während normale Monitore in der Praxis von mäßigem Nutzen wenigstens bei der Analyse von Programmen sind.

Implementierungen[Bearbeiten]

Während im BASIC V2.0 kein Maschinensprachemonitor eingebaut ist, inkludiert Commodore ab BASIC 3.5 einen entsprechenden Maschinensprachemonitor namens TEDMON, der mit dem BASIC-Befehl MONITOR oder mit SYS 1024 aufgerufen wird. Für den PET und spätere CBM-II-Serie existiert der Maschinensprachemonitor TIM, der allerdings erst ab der CBM20xx-Serie (noch nicht bei den Modellen, die als PET bezeichnet wurden) fest im ROM verankert wurde.

Name Typ Aufruf
(aus BASIC oder via Tastatur)
Quelle
SuperMon64[1] zum Nachladen (kleiner 4 Kbyte),
kompatibel zu TIM und TEDMON
SYS 49152
(für Version beginnend an Adresse $C000)
Compute! Magazin Issue 32, Jan. 1983, p. 162
Autor: Jim Butterfield
Supermon+64[2] muss vorher geladen werden (weniger als 3 Kbyte, unterhalb von $A000),
kompatibel zu TIM und TEDMON
erstmalig RUN bzw. später mit SYS 8 The Transactor: Transactor Disk 9
Autor: Jim Butterfield
RAT MON 64 zum Nachladen (4 KByte) SYS 49152
(für Version beginnend an Adresse $C000)
CHIP Magazin, Jan. 1984
SMON zum Nachladen (4 KByte) SYS 49152
(für Version beginnend an Adresse $C000)
64'er Magazin, Feb. 1985
MADS-Monitor zum Nachladen (4 KByte) SYS 32768 (für Version beginnend an Adresse $8000)
SYS 49152 (für Version beginnend an Adresse $C000)
Commodore, 1982
MLM64 Plus zum Nachladen (4 KByte) SYS 49152
(für Version beginnend an Adresse $C000)
INPUT 64, März 1985
MON-64 TIM-Clone zum Nachladen (1 KByte) SYS 49187
(für Version beginnend an Adresse $C000)
mc Zeitschrift, Okt. 1983
TEDMON ROM MONITOR
(BASIC 3.5, 7.0)
Commodore
TIM ROM, zum Nachladen (1 KByte) SYS ... (verschieden je nach Modell) Commodore
Final Cartridge 3 Steckmodul MON oder F2  Steckmodulhersteller
Action Replay Steckmodul MON oder F8  Steckmodulhersteller
Help, Help Plus Steckmodul, zum Nachladen Befehl "]" Steckmodulhersteller
EMON Steckmodul, zum Nachladen (4 KByte) SYS 49152
(für Version beginnend an Adresse $C000)
Print-Technik
HES Mon 64[3] Steckmodul, zum Nachladen (4 KByte) SYS 49152
(für Version beginnend an Adresse $C000)
HES
Autor: Terry Peterson
Speed-DOS Alternativ-ROM F2  Umbausatzhersteller

Implementierungen für andere Umgebungen[Bearbeiten]

Angepasste Monitorprogramme, die direkt auf einem modifizierten C64 (z.B. Turbokarte mit anderer CPU, z.B. 65816) lauffähig sind und die erweiterten Eigenschaften unterstützen oder völlig außerhalb einer C64-Hardware laufende Monitorprogramme typischerweise in der Umgebung eines Emulators:

Name Beschreibung Verwendung Quelle
SuperMon64 Zum Nachladen
Autor: Jim Butterfield
SuperCPU
Zum Nachladen, Aufruf (aus dem Emulationsmodus): SYS 28672
für Variante bei Adresse $7000
Compute! Magazin, Issue 32, Jan. 1983, Page 162 von Jim Butterfield
Adaptierter Source-Code auf ffd2.com
Jamaicamon (Jammon) Monitor für den Native-Modus einer 65816-CPU.
Autor: Stephen L. Judd
Basiert auf SuperMon
SuperCPU
mit Anpassung auch andere 65816-Turbokarten
Source-Code und Dokumentation auf ffd2.com
VICE-Monitor Im Emulator integrierter Monitor für alle emulierten Plattformen (auch SuperCPU). Aufruf via Tastatur:
ALT +M 
ALT +H 
Siehe VICE-Weblinks

Referenzen[Bearbeiten]

  1. Compute! Issue 32, Jan. 1983, p. 162: Supermon64 Sprache:englisch
  2. Transactor Disk 9 u.a. mit Supermon+ für C64, VC20 (VIC) und PET. Sprache:englisch
  3. HES Mon 64 Anleitung auf archiv.org Sprache:englisch