74 lines
2.0 KiB
OpenEdge ABL
74 lines
2.0 KiB
OpenEdge ABL
MEMPF_READ = $0001
|
||
MEMPF_WRITE = $0002
|
||
MEMPF_DMAREAD = $0004
|
||
MEMPF_DMAWRITE = $0008
|
||
MEMPF_ALL = MEMPF_READ | MEMPF_WRITE | MEMPF_DMAREAD | MEMPF_DMAWRITE
|
||
|
||
IF NEWAGE_DEBUG
|
||
|
||
UAEExitWarp MACRO
|
||
pea 1.w
|
||
pea .ob\@(pc)
|
||
clr.l -(sp)
|
||
pea .wm\@(pc)
|
||
pea -1.w
|
||
pea 82.w
|
||
jsr $f0ff60
|
||
lea .bc\@(pc),a0
|
||
move.l a0,8(sp)
|
||
jsr $f0ff60
|
||
lea 6*4(sp),sp
|
||
bra.s .s\@
|
||
.ob\@ dc.l 0
|
||
.wm\@ dc.b "warp false",0
|
||
.bc\@ dc.b "cycle_exact true",0
|
||
cnop 0,2
|
||
.s\@
|
||
ENDM
|
||
|
||
UAEExit MACRO
|
||
move.l #13,-(sp)
|
||
jmp $f0ff60
|
||
ENDM
|
||
|
||
; UAEMemProtect address,size,bits
|
||
|
||
UAEMemProtect MACRO
|
||
move.l #\3,-(sp)
|
||
move.l #\2,-(sp)
|
||
pea \1
|
||
jsr $f0ff54
|
||
lea.l 12(sp),sp
|
||
ENDM
|
||
|
||
WinUAEBreakpoint MACRO ;to stop here in WinUAE, enter "w 4 4 4 w" in the debugger window (shift+f12) to place the breakpoint, and enter "w 4" to remove it
|
||
move.l 4.w,4.w
|
||
ENDM
|
||
|
||
; The UAE debugger doesn‘t know about any symbols your program might have defined,
|
||
; so setting a breakpoint to some address is no big help.
|
||
; The trick is to use the fi (find instruction) command to break at a specific opcode.
|
||
; You cannot use any common opcode, of course, otherwise the debugger will constantly
|
||
; stop in all kinds of processes. Use an opcode which doesn‘t appear anywhere else and
|
||
; which, preferably, has no effect. Something like EXG A7,A7 ($cf4f).
|
||
|
||
; Insert this opcode into your code at the position you want to start debugging.
|
||
; Then enter fi cf4f into the debugger. Start your program and begin tracing your program flow.
|
||
; t executes a single instruction, z executes code over subroutines, m does memory dumps.
|
||
|
||
ELSE
|
||
|
||
UAEExitWarp MACRO
|
||
ENDM
|
||
|
||
UAEMemProtect MACRO
|
||
ENDM
|
||
|
||
UAEExit MACRO
|
||
ENDM
|
||
|
||
WinUAEBreakpoint MACRO
|
||
ENDM
|
||
|
||
ENDC
|