; int DbgIsRAM (unsigned Addr);
;
- .export _DbgIsRAM
- .import popax, return0, return1
- .importzp ptr1
+ .export _DbgIsRAM
+ .import popax, return0, return1
+ .importzp ptr1
_DbgIsRAM:
- sta ptr1 ; Store the address
- stx ptr1+1
+ sta ptr1 ; Store the address
+ stx ptr1+1
- ldy #0
- php ; Save I flag
- sei ; Disable interrupts
+ ldy #0
+ php ; Save I flag
+ sei ; Disable interrupts
- lda (ptr1),y ; Get old value
- pha ; ...and save it
+ lda (ptr1),y ; Get old value
+ pha ; ...and save it
- ldx #3
-L1: lda TestVal,x
- jsr CheckCell
- bne L2
- dex
- bpl L1
+ ldx #3
+L1: lda TestVal,x
+ jsr CheckCell
+ bne L2
+ dex
+ bpl L1
; This seems to be RAM
- pla
- sta (ptr1),y ; Restore old value
- plp ; Restore old I flag
- jmp return1
+ pla
+ sta (ptr1),y ; Restore old value
+ plp ; Restore old I flag
+ jmp return1
; No RAM at this address
-L2: pla
- sta (ptr1),y ; Restore old value
- plp ; Restore old I flag
- jmp return0
+L2: pla
+ sta (ptr1),y ; Restore old value
+ plp ; Restore old I flag
+ jmp return0
; Check one memory cell
CheckCell:
- sta (ptr1),y
- cmp (ptr1),y ; Could we write it?
- rts
+ sta (ptr1),y
+ cmp (ptr1),y ; Could we write it?
+ rts
.rodata
TestVal:
- .byte $55, $AA, $33, $CC
+ .byte $55, $AA, $33, $CC