; Test program for simultaneous reading of the DMEM. A random test pattern is initialy stored in the ; all DMEM lockations by cpu3 via local bus. Then cpu3 reads certain location of the DMEM and copy ; the data red to grf[3]. All cpus simultaneously read the same location of the DMEM and compare ; the result with grf[3]. The errors occured are accumulated and stored in D-bank at address 0xF00n ; for cpu(n). #def MEMWR=0xD000 #def DALAST=0xFFC #def DAFIRST=0x0 nop mov c0 r10 ; error counter is r10 (cleared initialy) sem 0x8 ; mask for synchronization #ifdef cpu3 mov b1_0_0_00_01_11111 r0 ; initializing the random test pattern spio r0 0x201 ; generator iext 0xAAAAAAAA mov 0xAAAAAAAA r0 spio r0 0x200 nop nop mov DALAST r13 mov DAFIRST r15 nxt: lpio 0x202 r0 nop sra+ r0 cmp r13 r15 jmp cc_nzero nxt mov c0 g3 #else syn #endif ; all cpus expect cpu3 to finish the initialization of the DMEM mov DAFIRST r15 mov DALAST r13 sem 0x8 #ifdef cpu3 mov b1_0_0_00_01_11111 r0 ; initializing the random test pattern spio r0 0x201 ; generator iext 0xAAAAAAAA mov 0xAAAAAAAA r0 spio r0 0x200 nop mov c0 g3 #else syn #endif ; all cpus expect cpu3 to finish the initialization of the DMEM cyc: sem 0x8 #ifdef cpu3 ; generate again the pseudorandom sequnce! lpio 0x202 r0 nop ; lra4 r3 ; lra4 r3 mov r0 g3 #else syn #endif lra4 r0 lra4+ r0 cmp r0 g3 jmpr cc_zero 2 add r10 c1 r10 cmp r13 r15 jmp cc_nzero cyc sem 0x7 ; set synchronization mask to finish iext 0xF000 mov 0xF000 r14 add r14 c5 r14 ; result is displayed by DBK jmpr cc_busy 0 sgio r10 r14 #ifdef cpu3 syn jmpr cc_busy 0 mov 0x12 r0 sgio r0 0xA04 #endif #ifdef cpu0 mov c1 g0 #endif #ifdef cpu1 mov c1 g1 #endif #ifdef cpu2 mov c1 g2 #endif jmpr cc_uncond 0