Debugger-Disassember

Menüpunkt: Debugger / Disassembler

Menü: Tools -> Debugger / Disassembler -> Debugger / Disassembler


Mit Aufruf dieses Menüpunktes erhalten Sie eins der mächtigsten Programmierhilfswerkzeuges des Emu64. Es wird ein Debugger / Disassembler - Fenster geöffnet. Über einen Debugger ist es dem Programmierer möglich sich die verschiedenen Zustände von Registern und Leitungen beim Programmablauf anzusehen. Ein Disassembler wandelt den Maschinencode im RAM-Speicher in "Assembler" um, wodurch eine bessere Lesbarkeit eines Programmes entsteht.


Solche Funktionen werden von Programmierer zu Suche von Fehlern und zur Untersuchung von  Programmabläufen benötigt. Hierbei sind Kenntnisse der C64 Hardware und Assemblerprogrammierung notwendig.  In diesem Fenster kann wie in einem Assembler-Monitor Programm geschrieben und sofort auf Herz und Niere getestet werden. Der Debugger wird komplett intuitiv bedient und man braucht keine Befehle auswendig lernen.

Screenshot: Debuggerfenster mit div. Hilfsmakierungen


Dieses Fenster ist in 8 Teilbereichen aufgeteilt. Es können 5 weitere Informationsfenster geöffnet und der Modus zwischen C64 & Floppy 1541 gewechselt  werden.


Im oberen Pull-Down Menü (A) kann zwischen den C64 - und 1541 Floppymodus gewechselt werden. Beim Wechsel ändert sich entsprechend die Anzeigeart. Mit den Knöpfen (G) und (H) können Teilbereiche des Debuggerfensters zur besseren Übersicht ein- und aufgeklappt werden. Über die Knöpfe (B), (C), (D), (E) und (F) können weitere kleine Fenster mit gesonderten Informationszuständen der Customs Chips VIC, SID, CIA 1, CIA 2 und IEC-BUS Leitungen angezeigt werden. Die einzelnen Fenster können Sie durch einmal anklicken über das Symbol (X) oben rechts im Fenster schließen.


CPU Register

Teilbereich (1) des Debuggerfenster

Bild: Teilabschnitt Debuggerfenster C64 CPU 6510 Register

Bild: Teilabschnitt Debuggerfenster Floppy CPU 6502 Register

Entsprechend der Einstellung über das 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 Sie mit der Maus eine Zahl hinter der Registerbezeichnung anklicken, wird ein Eingabefeld aktiv. Nun können Werte als Dezimal-, Hexa-($) oder Dualzahl(%) eingeben. Eine Eingabe muss mit der Taste RETURN bestätigt werden.


Den Status der einzelnen Flags des Status Registers lassen sich mit einem Klick auf deren LED wechseln.

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 Debuggerfenster

Bild: Teilabschnitt Debuggerfenster C64 CPU 6510 Interne Register


Dieser Bereich ist sehr interessant, wenn man ein Programm zyklengenau testen möchte. Hier sieht man 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 sogenannten 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 unterschiedliche Prozessoren im C64II (6510) und 1541-II (6502) verwendet wurde, ändert sich entsprechend die Ausgabe der CPU Internen Register, bei Wechsel zwischen C64 und Floppymodus.


CPU Debug Control

Teilbereich (3) des Debuggerfenster


Hiermit können Sie 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 können Sie einen Wert (Zyklus in Sekunde) zwischen 1 und 59901 einstellen, der Einfluss auf die animierte Ablaufgeschwindigkeit im Debuggerfenster hat.

Leitungen

Teilbereich (4) des Debuggerfenster

Bild: Teilabschnitt Debuggerfenster C64 CPU 6510 Leitungen

Bild: Teilabschnitt Debuggerfenster Floppy CPU 6502 Leitungen

Entsprechend Ihres Modusauswahles werden die wichtigsten Leitungszustände zur CPU 6502 oder CPU 6510 (low oder high) angezeigt.


Disassembler / Assembler

Teilbereich (5) des Debuggerfenster

Bild: Teilabschnitt Debuggerfenster Disassembler / Assembler


In diesen Teilabschnitt des Debuggerfensters steht 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 die Speicherbereichsansicht ($0000 bis $FFFF) verändert werden.

Mit dem drei Eingabefeldern können Sie direkt Opcodes in den Speicher schreiben.


Im Fensterbereich des Disassembler / Assembler kann ein Kontexmenü aufgerufen werden. Hierbei stehen folgende Funktionen zur Verfügung.


Liste ab ... anzeigen

Es kann die Speicheradresse angegeben werden, ab welchen Punkt die Anzeige erfolgen soll.

Exportieren

Es kann der Anfang- und Endpunkt des Speichers angegeben werden, welches dann als Textdatei (TXT), C64 Programm (PRG) oder RAW Datei gespeichert werden kann.

Anfang markieren

Hiermit wird der Anfangspunkt gesetzt mit Übertrag zur Exportierung.

Ende markieren

Hiermit wird der Endpunkt gesetzt mit Übertrag zur Exportierung.

Haltepunkte

Teilbereich (6) des Debuggerfenster

Bild: Teilabschnitt Debuggerfenster Haltepunkte


In diesen Teilabschnitt des Debuggerfensters können Sie per Kontexmenü Haltepunkte aktivieren bzw deaktivieren. Wenn eine Haltepunktmatrix hinzugefügt wurde, können die Werte durch anklicken auf den Zahlen verändern. Hierzu wird ein Eingabefeld aktiv, was nach Eingabe des Zahlenwertes mit der Taste RETURN bestätigt werden muss. Der Name des Haltepunktes kann ebenfalls frei gewählt werden.

PC Verlauf (Programm Counter)

Teilbereich (7) des Debuggerfenster

Bild: Teilabschnitt Debuggerfenster PC Verlauf


Im Programm Counter Verlauf werden die letzten 100 PC Werte gespeichert. Auch in diesen Fensterabschnitt kann ein Kontexmenü geöffnet werden, wobei die Exportierfunktion sich auf das Disassembler / Assembler Bereich bezieht.

Speichermonitor

Teilbereich (8) des Debuggerfenster

Bild: Teilabschnitt Debuggerfenster Speicher C64


Bild: Teilabschnitt Debuggerfenster Speicher Floppy 1541-II


Im letzten Teilabschnitt des Debuggerfenster 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 haben Sie die Möglichkeit Manipulationen  vorzunehmen. In dem  beiden unteren Eingabefelder können Sie  Speicheradresse und Wert eingeben. Ist das Auswahlkästchen Auto Adresse aktiviert, wird nach einem Return Befehl  im Wert - Eingabefeld die Adresse um eins weitergezählt. Ein Kontexmenü zum exportieren von Speicherbereichen steht hier ebenfalls zur Verfügung. Der Speicherbereich wird mit Star- und Endadresse definiert und kann als Textdatei (TXT), C64 Programm (PRG) oder RAW Datei gespeichert werden.

VIC (Video Interface Chip)

Auswahlknopf (B) des Debuggerfenster

Leider steht die Funktion noch nicht zur Verfügung.

Zukünftig sollen über einen extra Fenster der Status des Video Interface Chip sichtbar gemacht werden.

SID (Sound Interface Device)

Auswahlknopf (C) des Debuggerfenster

Leider steht die Funktion noch nicht zur Verfügung.

Zukünftig sollen über einen extra Fenster der Status des Sound Interface Device sichtbar gemacht werden.

CIA 1 und CIA 2 (Complex Interface Adapter)

Auswahlknopf (D) und (E) des Debuggerfenster

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 enthält. Sobald Sie den Knopf CIA1 oder CIA2 drücken, wird ein weiteres Fenster mit Informationen zu den entsprechenden CIA  Chip geöffnet.  Es ist nicht möglich Werte oder Zustände über dieses Fenster zu ändern.

IEC-BUS

Auswahlknopf (F) des Debuggerfenster

Bild: IEC BUS  Statusfenster

Dieses Statusfenster wird durch anklicken des Kopfes IEC BUS aktiviert. Es werden die wichtigsten Leitungen des IEC Busses angezeigt. Sobald der C64 oder die Floppy nach außen einer der abgebildeten Leitungen nutzt wird die LED aktiv ("leuchtet grün").


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.

Copyright © 2009 - 2010, Thorsten Kattanek

Created with the Freeware Edition of HelpNDoc: Full featured Help generator