| Bits in BRKFLG | ||
|---|---|---|
| Bit | Wert | Bedeutung |
| 0 | 0 | Nur in meinem Eigenbau! Bei Erreichen eines Breakpoints erfolgt die Ausgabe der Unterbrechungsadresse, aber nicht automatisch die Anzeige der Registerinhalte der CPU (ZDS-konform). |
| 1 | Bei Erreichen eines Breakpoints erfolgt zusätzlich zur Ausgabe der Unterbrechungsadresse automatisch die Anzeige der Registerinhalte der CPU (default bei mir). | |
| 1 | unbenutzt | |
| 2 | Nur in meinem Eigenbau! NMI durch Single-Step. |
|
| 3 | Nur in meinem Eigenbau! NMI bei GO-Kommando nach Start von einem Breakpoint. |
|
| 4 | unbenutzt | |
| 5 | 0 | Das QUIT-Kommando des Debuggers ist wirkungslos.
Der Debugger erwartet erneut die Eingabe eines Kommandos. Das ist der Grundzustand, wenn der ROM-Monitor nicht explizit aus einem Anwendungsprogramm aufgerufen wurde. |
| 1 | Das QUIT-Kommando des Debuggers führt zum Verlassen des Debuggers.
Das Programm wird an der in der Variablen
EXTRET gespeicherten Adresse fortgesetzt. Das ist der Fall, wenn der Debugger aus einem Anwendungsprogramm als Unterfunktion genutzt wird und mit dem QUIT-Kommando eine Rückkehr ins übergeordnete Programm erfolgen soll. (Siehe Codebeispiel) |
|
| 6 | internal use (intern benutzt) | |
| 7 | 0 | Bei Erreichen eines Breakpoints wird dieser mit der Debugger-internen Behandlungsroutine bearbeitet. |
| 1 | Bei Erreichen eines Breakpoints wird dieser mit einer Behandlungsroutine bearbeitet, deren Adresse in der Variablen BRKRTN gespeichert ist. | |
| Codebeispiel: Aufruf des PROM Debuggers aus einem RIO Dienstprogramm | |
|---|---|
| Beschreibung | Das Beispiel zeigt eine Subroutine, die aus einem RIO Anwendungsprogramm den ROM-residenten Debugger aufruft. Das QUIT-Kommando des Debuggers bewirkt die Rückkehr ins Anwendungsprogramm. |
external EXTRET, BRKFLG, STACK, PDEBUG
global entry
entry ... any code ... ; Main routine
call calldb ; Call the PROM debugger
... any other code ...
ret ; Return to RIO OS
; Subroutine to call the PROM debugger
; Prepare the environment
calldb ld (spret),sp ; Save the stackpointer
ld sp,STACK ; Use PROM-Monitor's stackpointer for debugger
ld hl,retdb ; Returnpoint to this program
ld (EXTRET),hl
ld hl,BRKFLG
set 5,(hl) ; Set flag for return to external program
jp PDEBUG ; Go to the PROM debugger
; After the debuggers QUIT command we are here
retdb ld sp,(spret) ; Restore program's stackpointer
ld hl,BRKFLG
res 5,(hl) ; Clear Flag
ret ; Return to main routine
spret defs 2 ; Space to save program's stackpointer
| |