;/* SCRAMmer V37.3 - 28th July 1992 ;** ------------------------------- ;** ;** Copyright (c) ;** Giuliano C. Peritore ;** Via Amaseno, 6 ;** 04100 Latina ;** ITALY ;** ;** Phone: (+39) 773 491692 Voice Only ;** ;** EMAIL mc6040@mclink.it ;*/ SECTION "Chip",CODE XDEF _ScramTest ;Execute in Disable() XDEF _TestFastInChip ;Execute in Disable() RAMSEY EQU $00de0003 ;Ramsey DMACON EQU $00dff096 INTENA EQU $00dff09a _ScramTest: move.l 4(a7),a0 ;Get address to test movem.l d2-d5,-(a7) ;Preserve registers move.l #$5ac35ac3,d2 ;Data for test move.l #$ac35ac35,d3 ;Data for test move.l #$c35ac35a,d4 ;Data for test move.l #$35ac35ac,d5 ;Data for test move.l #$01010101,(a0) cmp.l #$01010101,(a0) bne.s 8$ move.l #$10101010,(a0) cmp.l #$10101010,(a0) bne.s 8$ move.b RAMSEY,d0 ;Set PageDetect ori.b #%00000001,d0 move.b d0,RAMSEY 1$ move.b RAMSEY,d0 btst #0,d0 beq.s 1$ move.l d4,(a0) ;Write Data move.l d5,4(a0) ;Write Data move.l d6,8(a0) ;Write Data move.l d7,12(a0) ;Write Data move.b RAMSEY,d0 ;UnSet PageDetect and.b #%11111110,d0 move.b d0,RAMSEY 2$ move.b RAMSEY,d0 btst #0,d0 bne.s 2$ cmp.l (a0),d4 ;Check Data bne.s 3$ cmp.l 4(a0),d5 ;Check Data bne.s 3$ cmp.l 8(a0),d6 ;Check Data bne.s 3$ cmp.l 12(a0),d7 ;Check Data bne.s 3$ moveq #$01,d0 ;SCRAM bra.s 4$ 3$ moveq #$02,d0 ;PAGE 4$ movem.l (a7)+,d2-d5 rts 8$ moveq #0,d0 bra.s 4$ ;/*------------------------------------------------------------------*/ _TestFastInChip: ; move.w #$0200,DMACON ;Disable DMA move.l 4(a7),a0 ;Get Address move.l 8(a7),d0 ;Get Size move.l 12(a7),d1 ;Get Mask (0x00000f00) movem.l d2-d3,-(a7) cyc: move.l (a0),d3 ;Preserve memory contents move.l d1,(a0) ;Write mask move.l (a0),d2 ;Read val and.l d1,d2 ;mask it cmp.l d2,d1 ;Check bne.s err clr.l (a0) ;Clear bits move.l (a0),d2 ;Read val and.l d1,d2 ;mask result tst.l d2 ;Check bne.s err move.l d3,(a0)+ subq.l #4,d0 bne.s cyc moveq #0,d0 bra ex err: move.l d3,(a0) ;Restore location move.l a0,d0 cmp.l $f80000,d3 bne.s ex moveq #0,d0 bra ex ex: movem.l (a7)+,d2-d3 ; move.w #$8200,DMACON ;Enable DMA rts