Emu64 Help Banner

Emu64 Portal Emu64 Forum Emu64 Download Emu64 Help
 


Menüpunkt: Debugger / Disassembler

Menü: Tools → Debugger / Disassembler → Debugger / Disassembler

Mit Aufruf dieses Menüpunktes öffnest du eines der mächtigsten Programmierhilfswerkzeuges des Emu64, der Debugger / Disassembler. Der Debugger ermöglicht es einem Programmierer die verschiedenen Zustände von Registern und Leitungen beim Programmablauf anzusehen. Ein Disassembler wandelt den Maschinencode im RAM-Speicher in „Assembler“ um, wodurch man ein bereits fertiges und laufendes Programme besser, ja überhaupt erst lesen und verstehen kann.

Solche Funktionen werden von Programmierern zur Fehlersuche und zur Untersuchung von Programmabläufen benötigt. Hierbei sind Kenntnisse der C64 Hardware und Assemblerprogrammierung notwendig. Im Debugger / Disassembler Fenster kannst du wie in einem Assembler-Monitor ein Programm schreiben und sofort auf Herz und Niere testen. Der Debugger wird komplett intuitiv bedient und du musst keine Befehle auswendig lernen.

Bild: Debuggerfenster mit div. Hilfsmakierungen

Dieses Fenster ist in 8 Teilbereichen aufgeteilt. Du kannst 5 weitere Informationsfenster öffnen und den Modus zwischen C64 & Floppy 1541 wechseln.

Im oberen Pull-Down Menü (A) wechselst du zwischen dem C64 - und 1541 Floppymodus. Beim Wechsel ändert sich dementsprechend die Anzeige. Mit den Knöpfen (G) und (H) klappst du Teilbereiche des Debuggerfensters zur besseren Übersicht ein- und auf. Über die Knöpfe (B), (C), (D), (E) und (F) zeigst du weitere kleine Fenster mit gesonderten Informationszuständen der Customs Chips VIC, SID, CIA 1, CIA 2 und IEC-BUS Leitungen an. Die einzelnen Fenster schließt du, indem du einmal auf (X) oben rechts im Fenster klickst.

CPU Register

Teilbereich (1) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster C64 CPU 6510 Register
Bild: Teilabschnitt Debuggerfenster Floppy CPU 6502 Register

Entsprechend der Einstellung im Pull-Down Menü (A) C64 oder Floppy, werden die möglichen CPU Register angezeigt.

Die Register von PC bis SR lassen sich beliebig verändern. Sobald du mit der Maus eine Zahl hinter der Registerbezeichnung anklickst, wird ein Eingabefeld aktiv. Nun kannst du Werte als Dezimal-, Hexa-($) oder Dualzahl(%) eingeben. Eine Eingabe bestätigst du mit der Taste RETURN.

Den Status der einzelnen Flags des Status Registers wechselst du mit einem Klick auf deren LED.

Teilabschnitt Debuggerfenster SR Flags
Prozessorstatus - Register
N = Negativ
V = Overflow
/ = unbenutzt (sollte immer high sein)
B = Break
D = Dezimal
I = Interrupt
Z = Zero
C = Carry

CPU 65xx Interne Register

Teilbereich (2) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster C64 CPU 6510 Interne Register

Dieser Bereich ist sehr interessant, wenn du ein Programm zyklengenau testen möchtest. Hier siehst du ganz genau was im nächsten Zyklus passiert. Ändern lässt sich hier nichts. Die LED „CPU Wait“ zeigt an, wenn die CPU vom VIC „betäubt“ wurde.

Der Micro Code ist eine Erfindung von mir, das bedeutet das jeder C64 Befehl aus sogenanntem Micro Code besteht. In jedem Zyklus wird ein Micro Code Befehl ausgeführt. Was der Micro Code dann macht steht im grünen Bereich.

Bild: Teilabschnitt Debuggerfenster Floppy CPU 6502 Interne Register

Da im C64II (6510) und 1541-II (6502) unterschiedliche Prozessoren verwendet wurden, ändert sich bei einem Wechsel zwischen C64 und Floppymodus dementsprechend die Ausgabe der CPU Internen Register.

CPU Debug Control

Teilbereich (3) des Debuggerfensters

Hiermit kannst du den Programmablauf steuern.

es wird genau ein Zyklus abgearbeitet
es wird genau ein Opcode ausgeführt
es wird das Programm ausgeführt, wobei alle Änderungen angezeigt werden.
Stoppt die Programmausführung

Über den Schieberegler kannst du einen Wert (Zyklus in Sekunden) zwischen 1 und 59901 einstellen, der Einfluss auf die animierte Ablaufgeschwindigkeit im Debuggerfenster hat.

Leitungen

Teilbereich (4) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster C64 CPU 6510 Leitungen
Bild: Teilabschnitt Debuggerfenster Floppy CPU 6502 Leitungen

Entsprechend deines gewählten Modus werden die wichtigsten Leitungszustände zur CPU 6502 oder CPU 6510 (low oder high) angezeigt.

Disassembler / Assembler

Teilbereich (5) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster Disassembler / Assembler

In diesen Teilabschnitt des Debuggerfensters steht dir ein Disassembler zur Verfügung. Der angezeigte Speicherbereich wird als disassambly angezeigt.

In der ersten Spalte stehen die Speicheradressen, in der zweiten die Opcodes (illegale Opcodes werden rot dargestellt) und in der dritten Spalte steht der Inhalt (Wert / Adresse) des Opcodes.

Mit dem Schiebebalken kann du die Speicherbereichsansicht ($0000 bis $FFFF) verändern.

Mit den drei Eingabefeldern kannst du direkt Opcodes in den Speicher schreiben.

Im Fensterbereich des Disassembler / Assembler kannst du ein Kontexmenü aufrufen. Hierbei stehen dir folgende Funktionen zur Verfügung.

Liste ab…Anzeigen Gib Speicheradresse an, ab welchem Punkt die Anzeige erfolgen soll.
Exportieren Gib hier den Anfangs- und Endpunkt des Speichers an, der ausgewählte Bereich wird dann als Textdatei (TXT), C64 Programm (PRG) oder RAW Datei gespeichert.
Anfang markieren Hiermit setzt du den Anfangspunkt mit Übertrag zur Exportierung.
Ende markieren Hiermit setzt du den Endpunkt mit Übertrag zur Exportierung.

Haltepunkte

Teilbereich (6) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster Haltepunkte

In diesen Teilabschnitt des Debuggerfensters kannst du per Kontexmenü Haltepunkte aktivieren bzw. deaktivieren. Wenn du eine Haltepunktmatrix hinzugefügt hast, kannst du die Werte durch anklicken auf den Zahlen verändern. Es wird ein Eingabefeld aktiv, in welchem du die Eingabe des Zahlenwertes mit der Taste RETURN bestätigt musst. Den Name des Haltepunktes kannst du ebenfalls frei wählen.

PC Verlauf (Programm Counter)

Teilbereich (7) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster PC Verlauf

Im Programm Counter Verlauf werden die letzten 100 PC Werte gespeichert. Auch in diesen Fensterabschnitt kannst du ein Kontexmenü öffnen, wobei sich die Exportierfunktion auf den Disassembler / Assembler Bereich bezieht.

Speichermonitor

Teilbereich (8) des Debuggerfensters

Bild: Teilabschnitt Debuggerfenster Speicher C64
Bild: Teilabschnitt Debuggerfenster Speicher Floppy 1541-II

Der letzten Teilabschnitt des Debuggerfensters wartet mit einen Speichermonitor und weiteren Statusanzeigen auf. Die Statusanzeige wird nur im C64 Modus aktiv, ansonsten wird sie ausgeblendet. Über die Statusanzeige sind Lese- und Schreibzugriff auf RAM, LO-RAM, HI-RAM, Kernal-ROM, BASIC-ROM, Char-ROM und I/O Block sichtbar. Im Speicherbereich hast du die Möglichkeit Manipulationen vorzunehmen. In den beiden unteren Eingabefeldern kannst du Speicheradresse und Wert eingeben. Ist das Auswahlkästchen Auto Adresse aktiviert, wird nach einem Return Befehl im Wert - Eingabefeld die Adresse um eins erhöht. Ein Kontexmenü zum Exportieren von Speicherbereichen steht dir hier ebenfalls zur Verfügung. Der Speicherbereich wird mit Start- und Endadresse definiert und kann als Textdatei (TXT), C64 Programm (PRG) oder RAW Datei gespeichert werden.

VIC (Video Interface Chip)

Auswahlknopf (B) des Debuggerfensters

Leider steht die Funktion noch nicht zur Verfügung.

Zukünftig soll über ein extra Fenster der Status des Video Interface Chip sichtbar sein.

SID (Sound Interface Device)

Auswahlknopf (C) des Debuggerfensters

Leider steht die Funktion noch nicht zur Verfügung.

Zukünftig soll über ein extra Fenster der Status des Sound Interface Device sichtbar sein.

CIA 1 und CIA 2 (Complex Interface Adapter)

Auswahlknopf (D) und (E) des Debuggerfensters

Bild: CIA1 Statusfenster
Bild: CIA2 Statusfenster

In einem C64 sind zwei CIA Bausteine eingebaut, die die meisten Ein- und Ausgabevorgänge steuern, sowie den internen Timer (Uhr) des Rechners enthalten. Sobald du den Knopf CIA1 oder CIA2 drückst, öffnet sich ein weiteres Fenster mit Informationen zu den entsprechenden CIA Chip. Es ist nicht möglich Werte oder Zustände über dieses Fenster zu ändern.

IEC-BUS

Auswahlknopf (F) des Debuggerfensters

Bild: IEC BUS Statusfenster

Dieses Statusfenster aktivierst du, indem du den Kopf IEC BUS anklickst. Es werden die wichtigsten Leitungen des IEC Busses angezeigt. Sobald der C64 oder die Floppy nach außen eine der abgebildeten Leitungen nutzt, wird die LED aktiv und leuchtet grün.

Signalbezeichnung Signalbeschreibung
DATA
Serial Data In/Out
Die Daten werden auf dieser Leitung Bit für Bit nacheinander übertragen. Bei einem Byte wird zuerst das niederwertigste Bit 0 (LSB) und am Ende das höherwertige Bit 7 (MSB) übertragen.
CLK
Serial Clock In/Out
Dieses Signal ist der Zeittakt für die gesendeten Daten. Der Takt wird immer von dem Gerät erzeugt, das gerade sendet. Bei der steigenden Flanke wird vom Empfänger das Datenbit (DATA) übernommen.
ATN
Serial Attention In/Out
Wenn dieses Signal LOW ist und ein Byte gesendet wird, interpretieren die am seriellen Bus angeschlossenen Geräte dies als einen Befehl. Sobald der C64 das Signal auf Low legt, warten alle anderen Geräte am Bus auf eine Übertragung der Adresse (Gerätenummer). Das adressierte Gerät muss innerhalb einer festgelegten Zeit antworten, ansonsten nimmt der C64 an, dass das adressierte Gerät nicht vorhanden ist und gibt einen Fehler aus. Nach der Geräteadresse wird die Sekundäradresse gesendet, dabei bleibt die Leitung auf Low. Vor dem ersten „normalen“ Byte geht sie dann wieder auf High.

Rasterstrahlanzeige im C64-Fenster

Screenshot: Emu64 V4.30 (C64.dll V4.32) / Rasterstrahl im Debug-Modus

Beim Aufruf des Debugger / Disassembler wird seit dem C64.dll Patch auf V4.32 im C64-Fenster die Rasterstrahlposition optisch dargestellt.




Emu64 Handbuch V4.xx Navigation V4.xx: Inhaltsverzeichnis
Portal: old-archiv

Hilfetext für Emu64 bis Version 4.32.

de/old-archiv/emu64_v4/menuepunkt-debugger_disassembler.txt · Zuletzt geändert: 2013/04/20 11:26 (Externe Bearbeitung)
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-NonCommercial-NoDerivs 3.0 Unported License
credits to Impressum