; ; Ullrich von Bassewitz, 10.08.1998 ; ; int DbgIsRAM (unsigned Addr); ; .export _DbgIsRAM .import popax, return0, return1 .importzp ptr1 _DbgIsRAM: sta ptr1 ; Store the address stx ptr1+1 ldy #0 php ; Save I flag sei ; Disable interrupts lda (ptr1),y ; Get old value pha ; ...and save it 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 ; No RAM at this address 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 .rodata TestVal: .byte $55, $AA, $33, $CC