Hamazing/source/includes/uae/uaestuff.i

74 lines
2.0 KiB
OpenEdge ABL
Raw Permalink Normal View History

2023-05-22 16:17:35 +02:00
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 doesnt 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 doesnt 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