Assembler for MIMD-TRAP2/3 (c) V.Angelov, v3.6, Dec 2007 SVN Revision 0, SVN Date 2007-12-27 Please send any comments to: angelov@kip.uni-heidelberg.de 17:58:31 / 21 Apr 2008 Source code file: src/DMMtst.asm Memory initialisation file: Log file: wrk/cpu0.log Program memory size in words: 4096 Default constants, read from /cad/tools/bin/asm_mimd.inc 1 CPU0 = 2 TRAP3 = 3 CC_SIGNED = 0X14 4 CC_NSIGNED = 0X04 5 CC_ZERO = 0X11 6 CC_NZERO = 0X01 7 CC_OVERFL = 0X13 8 CC_NOVERFL = 0X03 9 CC_NEG = 0X12 10 CC_NNEG = 0X02 11 CC_CARRY = 0X10 12 CC_NCARRY = 0X00 13 CC_BUSY = 0X17 14 CC_NBUSY = 0X07 15 CC_DIVB = 0X15 16 CC_NDIVB = 0X05 17 CC_ERRDIV = 0X16 18 CC_NERRDIV = 0X06 19 CC_UNCOND = 0X0F 20 CC_EQ = 0X11 21 CC_NEQ = 0X01 22 CC_NEG = 0X12 23 CC_POS0 = 0X02 24 CC_LTS = 0X14 25 CC_GES = 0X04 26 CC_LTU = 0X10 27 CC_GEU = 0X00 28 CC_LES = 0X19 29 CC_GTS = 0X09 30 CC_LEU = 0X18 31 CC_GTU = 0X08 32 RR_BYTE = 3 33 RR_WORD = 1 34 RR_DWORD = 0 35 LRA1 = LRA 3, 36 LRA2 = LRA 1, 37 LRA4 = LRA 0, 38 LRA4+ = LRA+ 0, 39 XOR = EOR 40 NOT = COM 41 SHLT = SHL 42 ANDT = AND 43 R0 = PRF[0] 44 R1 = PRF[1] 45 R2 = PRF[2] 46 R3 = PRF[3] 47 R4 = PRF[4] 48 R5 = PRF[5] 49 R6 = PRF[6] 50 R7 = PRF[7] 51 R8 = PRF[8] 52 R9 = PRF[9] 53 R10 = PRF[10] 54 R11 = PRF[11] 55 R12 = PRF[12] 56 R13 = PRF[13] 57 R14 = PRF[14] 58 R15 = PRF[15] 59 G0 = GRF[0] 60 G1 = GRF[1] 61 G2 = GRF[2] 62 G3 = GRF[3] 63 G4 = GRF[4] 64 G5 = GRF[5] 65 G6 = GRF[6] 66 G7 = GRF[7] 67 G8 = GRF[8] 68 G9 = GRF[9] 69 G10 = GRF[10] 70 G11 = GRF[11] 71 G12 = GRF[12] 72 G13 = GRF[13] 73 G14 = GRF[14] 74 G15 = GRF[15] 75 F0 = FIT[0] 76 F1 = FIT[1] 77 F2 = FIT[2] 78 F3 = FIT[3] 79 F4 = FIT[4] 80 F5 = FIT[5] 81 F6 = FIT[6] 82 F7 = FIT[7] 83 F8 = FIT[8] 84 F9 = FIT[9] 85 F10 = FIT[10] 86 F11 = FIT[11] 87 F12 = FIT[12] 88 F13 = FIT[13] 89 F14 = FIT[14] 90 F15 = FIT[15] 91 C0 = CON[0] 92 C1 = CON[1] 93 C2 = CON[2] 94 C3 = CON[3] 95 C4 = CON[4] 96 C5 = CON[5] 97 C6 = CON[6] 98 C7 = CON[7] 99 C8 = CON[8] 100 C9 = CON[9] 101 C10 = CON[10] 102 C11 = CON[11] 103 C12 = CON[12] 104 C13 = CON[13] 105 C14 = CON[14] 106 C15 = CON[15] 107 ASM_SVN_REV = 0 1: ; Full test of the DMEM locations via global bus a 2: ; The number of the errors, counted by cpu(n) is s 3: 4: ; DEFINITIONS, USED IN THE PROGRAM CODE: 5: 6: #def work=PRF[1] ; register for current opera 7: #def rdata=PRF[2] ; data red by test_programs 8: #def tdata=PRF[3] ; test_vector to be writen 9: #def errnum=PRF[4] ; contains the number of err 10: #def return1=PRF[5] ; return address (at first l 11: #def return2=PRF[6] ; return address (at second 12: #def return3=PRF[7] ; return address (at third l 13: #def tdgen=PRF[8] ; test data generator code l 14: #def itdgen=PRF[9] ; init tdgen code label 15: #def psrmask=PRF[10] ; mask for test_vector 16: #def bitnum=PRF[12] ; =32 minus the number of bi 17: ; prf11 and prf13 are used inside the testing rout 18: 19: #def ioaddr=PRF[14] ; contains the autoincrement 20: #def errstore=PRF[15] ; autoincrement address for 21: 22: #def firstaddress=grf[1] ; first address of the t 23: #def lastaddress=grf[2] ; last address of the te 24: 25: #def MEMRW=0xD000 ; the address of the registe 26: ;#def IAFIRST=0xE000 ; first address of IMEM 27: ;#def IADEND =0xEFFF ; last address of IMEM 28: #def DAFRSTG=0xC000 ; first address of DMEM via 29: #def DADENDG=0xC3FF ; last address of DMEM via G 30: #def DAFIRST=0x0000 ; first address of DMEM as R 31: #def DADEND =0x0FFC ; last address of DMEM as RA 32: ;#def DBFST=0xF000 ; first address of DBANK (t 33: ;#def DBEND=0xF0FF ; last address of DBANK (tr 34: 35: ; masks of certain length 36: #def BITMASK24=0x0FFFFFF 37: #def BITMASK32=0xFFFFFFFF 38: #def BITMASK12=0x00000FFF 39: #def BITMASK13=0x00001FFF 40: 41: start: nop 0000 : 0000_0000_0000_0000_0000_0000 42: #ifdef cpu0 ; in re 43: iext 0xF005 0001 : 0101_0000_0000_0000_0000_1111 44: mov 0xF005 r0 0002 : 1100_0110_0000_0000_1010_0000 45: iext 0xF000 0003 : 0101_0000_0000_0000_0000_1111 46: mov 0xF000 r14 0004 : 1100_0110_0000_0000_0000_1110 47: iext 0xEF01 0005 : 0101_0000_0000_0000_0000_1110 48: mov 0xEF01 r1 0006 : 1100_0111_1110_0000_0010_0001 49: jmpr cc_busy 0 0007 : 0000_0100_0000_0000_1111_0111 50: sgio+ r1 0008 : 0011_1100_0001_0000_0000_0000 51: cmp r14 r0 0009 : 1000_1000_1110_0000_0000_0000 52: jmpr cc_ltu -3 000A : 0000_0100_0000_0000_1111_0000 53: 54: iext 0x3055 000B : 0101_0000_0000_0000_0000_0011 55: mov 0x3055 r14 000C : 1100_0110_0000_1010_1010_1110 56: lgio 0 r14 000D : 1110_1000_0000_0001_1100_0000 57: jmpr cc_busy 0 000E : 0000_0100_0000_0001_1101_0111 58: lpio 0x300 r0 000F : 1110_0110_0110_0000_0000_0000 59: jmpr cc_busy 0 0010 : 0000_0100_0000_0010_0001_0111 60: 61: and r0 c1 r0 0011 : 1010_0110_0000_0110_0010_0000 62: cmp r0 c1 0012 : 1000_1000_0000_0110_0010_0000 63: cmp r0 c1 0013 : 1000_1000_0000_0110_0010_0000 64: jmp cc_eq go 0014 : 0000_0100_0000_0000_0001_0001 65: 66: mov c1 r1 0015 : 1100_0010_0000_0110_0010_0001 67: jmpr cc_busy 0 0016 : 0000_0100_0000_0010_1101_0111 68: sgio r1 r14 0017 : 0010_0100_0001_0001_1100_0000 69: 70: jmpr cc_busy 0 0018 : 0000_0100_0000_0011_0001_0111 71: mov c0 r0 0019 : 1100_0010_0000_0110_0000_0000 72: sgio r0 0xA21 001A : 0010_1000_0000_1010_0010_0001 73: 74: mov 0x012 work 001B : 1100_0110_0000_0010_0100_0001 75: sgio work 0xA04 001C : 0010_1000_0001_1010_0000_0100 76: jmpr cc_uncond 0 001D : 0000_0100_0000_0011_1010_1111 77: go: 78: 79: mov c0 r1 001E : 1100_0010_0000_0110_0000_0001 80: jmpr cc_busy 0 001F : 0000_0100_0000_0011_1111_0111 81: sgio r1 r14 0020 : 0010_0100_0001_0001_1100_0000 82: #endif 83: 84: mov 0 errnum ; clear th 0021 : 1100_0110_0000_0000_0000_0100 85: 86: 87: #ifdef cpu0 88: ; mov b0001_00_0 work ; initiate 89: ; jmpr cc_busy 0 90: ; iext MEMRW 91: ; sgio work MEMRW 92: #def HCNTD0=0xD014 93: 94: iext DAFRSTG 0022 : 0101_0000_0000_0000_0000_1100 95: mov DAFRSTG firstaddress 0023 : 1100_0110_0000_0000_0001_0001 96: iext DADENDG 0024 : 0101_0000_0000_0000_0000_1100 97: mov DADENDG lastaddress 0025 : 1100_0110_0111_1111_1111_0010 98: mov c0 bitnum 0026 : 1100_0010_0000_0110_0000_1100 99: iext BITMASK32 0027 : 0101_0001_1111_1111_1111_1111 100: mov BITMASK32 psrmask 0028 : 1100_0111_1111_1111_1110_1010 101: 102: mvpcr +2 return1 ; call tes 0029 : 1100_0110_0000_0101_0110_0101 103: jmp cc_uncond cltst 002A : 0000_0100_0000_0000_0000_1111 104: 105: mov c0 work 002B : 1100_0010_0000_0110_0000_0001 106: iext HCNTD0 002C : 0101_0000_0000_0000_0000_1101 107: sgio work HCNTD0 002D : 0010_1000_0001_0000_0001_0100 108: 109: iext 0xF000 002E : 0101_0000_0000_0000_0000_1111 110: mov 0xF000 work 002F : 1100_0110_0000_0000_0000_0001 111: jmpr cc_busy 0 ; storage 0030 : 0000_0100_0000_0110_0001_0111 112: sgio errnum work ; via GIO 0031 : 0010_0100_0100_0000_0010_0000 113: mov c0 errnum 0032 : 1100_0010_0000_0110_0000_0100 114: #endif 115: 116: mvpcr +2 return1 ; call tes 0033 : 1100_0110_0000_0110_1010_0101 117: jmp cc_uncond sltst 0034 : 0000_0100_0000_0000_0000_1111 118: 119: jmpr cc_busy 0 ; storage 0035 : 0000_0100_0000_0110_1011_0111 120: iext 0xF001 ; in 0xF0 0036 : 0101_0000_0000_0000_0000_1111 121: mov 0xF001 work 0037 : 1100_0110_0000_0000_0010_0001 122: add work c5 work 0038 : 1000_0010_0001_0110_1010_0001 123: sgio errnum work 0039 : 0010_0100_0100_0000_0010_0000 124: 125: #ifdef cpu3 126: jmpr cc_busy 0 127: mov c0 work 128: sgio work 0xA26 129: mov 0x012 work 130: sgio work 0xA04 131: jmpr cc_uncond 0 132: #else 133: ; turns on cpu N+1 ... 134: mov 1 rdata 003A : 1100_0110_0000_0000_0010_0010 135: ; jmpr cc_busy 0 136: mov 1 ioaddr 003B : 1100_0110_0000_0000_0010_1110 137: add ioaddr c5 ioaddr 003C : 1000_0010_1110_0110_1010_1110 138: shl 1 ioaddr ioaddr 003D : 1011_0010_0001_0001_1100_1110 139: mov 0xA20 work 003E : 1100_0111_0100_0100_0000_0001 140: add ioaddr work ioaddr 003F : 1000_0010_1110_0000_0010_1110 141: sgio rdata ioaddr 0040 : 0010_0100_0010_0001_1100_0000 142: jmpr cc_busy 0 0041 : 0000_0100_0000_1000_0011_0111 143: sub ioaddr c2 ioaddr 0042 : 1000_1010_1110_0110_0100_1110 144: mov c0 rdata 0043 : 1100_0010_0000_0110_0000_0010 145: #ifdef cpu0 146: add ioaddr c1 ioaddr 0044 : 1000_0010_1110_0110_0010_1110 147: #endif 148: sgio rdata ioaddr 0045 : 0010_0100_0010_0001_1100_0000 149: jmpr cc_uncond 0 0046 : 0000_0100_0000_1000_1100_1111 150: ; ... and stops itself 151: #endif cpu3 152: 153: 154: ; BEGIN THE TESTING ROUTINE (uses testin 155: cltst: mov 1, prf[11] 0047 : 1100_0110_0000_0000_0010_1011 156: mov 1, prf[13] 0048 : 1100_0110_0000_0000_0010_1101 157: 158: nt: mov wlk0, tdgen ; call walkin 0049 : 1100_0110_0000_0000_0000_1000 159: mov iwlk0, itdgen 004A : 1100_0110_0000_0000_0000_1001 160: mvpcr +2, return2 004B : 1100_0110_0000_1001_1010_0110 161: jmp cc_uncond, tstgio 004C : 0000_0100_0000_0000_0000_1111 162: 163: mov wlk1, tdgen ; call walkin 004D : 1100_0110_0000_0000_0000_1000 164: mov iwlk1, itdgen ; 004E : 1100_0110_0000_0000_0000_1001 165: mvpcr +2, return2 004F : 1100_0110_0000_1010_0010_0110 166: jmp cc_uncond, tstgio 0050 : 0000_0100_0000_0000_0000_1111 167: 168: mov psr, tdgen ; call pseudo 0051 : 1100_0110_0000_0000_0000_1000 169: mov ipsr, itdgen 0052 : 1100_0110_0000_0000_0000_1001 170: mvpcr +2, return2 0053 : 1100_0110_0000_1010_1010_0110 171: jmp cc_uncond, tstgio 0054 : 0000_0100_0000_0000_0000_1111 172: 173: add prf[13], c3, prf[13] ; next init 0055 : 1000_0010_1101_0110_0110_1101 174: shl 1, prf[11], prf[11] ; testing r 0056 : 1011_0010_0001_0001_0110_1011 175: jmp cc_carry, return1 0057 : 0000_1000_0101_0000_0001_0000 176: mov bitnum work 0058 : 1100_0010_0000_0001_1000_0001 177: mov 15 rdata 0059 : 1100_0110_0000_0001_1110_0010 178: mov prf[11] prf[0] 005A : 1100_0010_0000_0001_0110_0000 179: cmp rdata bitnum 005B : 1000_1000_0010_0001_1000_0000 180: jmpr cc_ncarry 3 005C : 0000_0100_0000_1011_1110_0000 181: shl 15 prf[0] prf[0] 005D : 1011_0010_1111_0000_0000_0000 182: sub work rdata work 005E : 1000_1010_0001_0000_0100_0001 183: shlt work, prf[0] ; if MSB of th 005F : 0111_0000_0001_0000_0000_0000 184: jmp cc_ncarry, nt 0060 : 0000_0100_0000_0000_0000_0000 185: jmp cc_uncond return1 0061 : 0000_1000_0101_0000_0000_1111 186: ; END OF THE TESTING ROUTINE 187: 188: 189: 190: ; BEGIN OF THE SUBROUTINE (used by testin 191: ; rolls all addresses and tests by w/r th 192: tstgio: mvpcr +2, return3 0062 : 1100_0110_0000_1100_1000_0111 193: jmp cc_uncond, itdgen ; go to ini 0063 : 0000_1000_1001_0000_0000_1111 194: ; BEGIN WRI 195: mov firstaddress, ioaddr 0064 : 1100_0010_0000_0010_0010_1110 196: wd: jmpr cc_busy, 0 0065 : 0000_0100_0000_1100_1011_0111 197: ; mov c0 tdata 198: sgio+ tdata ; writing t 0066 : 0011_1100_0011_0000_0000_0000 199: mvpcr +2, return3 ; runs the 0067 : 1100_0110_0000_1101_0010_0111 200: jmp cc_uncond, tdgen 0068 : 0000_1000_1000_0000_0000_1111 201: cmp ioaddr, lastaddress ; 0069 : 1000_1000_1110_0010_0100_0000 202: jmp cc_carry, wd ; if yes: 006A : 0000_0100_0000_0000_0001_0000 203: 204: ; BEGIN COM 205: mov firstaddress, ioaddr 006B : 1100_0010_0000_0010_0010_1110 206: 207: mvpcr +2, return3 006C : 1100_0110_0000_1101_1100_0111 208: jmp cc_uncond, itdgen ; and go to 006D : 0000_1000_1001_0000_0000_1111 209: 210: wc: jmpr cc_busy, 0 ; here is t 006E : 0000_0100_0000_1101_1101_0111 211: lgio+ 0; ; reading e 006F : 1111_0100_0000_0000_0000_0000 212: jmpr cc_busy, 0 ; comparing 0070 : 0000_0100_0000_1110_0001_0111 213: lpio 0x300, rdata ; data stor 0071 : 1110_0110_0110_0000_0000_0010 214: cmp rdata, tdata ; 0072 : 1000_1000_0010_0000_0110_0000 215: jmp cc_zero, noerr ; if err_or 0073 : 0000_0100_0000_0000_0001_0001 216: add errnum, c1, errnum ; errnum is 0074 : 1000_0010_0100_0110_0010_0100 217: 218: 219: noerr: mvpcr +2, return3 0075 : 1100_0110_0000_1110_1110_0111 220: jmp cc_uncond, tdgen ; get nex 0076 : 0000_1000_1000_0000_0000_1111 221: 222: cmp ioaddr, lastaddress ; is tne 0077 : 1000_1000_1110_0010_0100_0000 223: jmp cc_carry, wc ; if not 0078 : 0000_0100_0000_0000_0001_0000 224: 225: jmp cc_uncond, return2 0079 : 0000_1000_0110_0000_0000_1111 226: 227: ; prepares the next data - walking 1 228: wlk1: shl 1, tdata, tdata 007A : 1011_0010_0001_0000_0110_0011 229: and tdata, psrmask, tdata 007B : 1010_0110_0011_0001_0100_0011 230: jmp cc_nzero, return3 007C : 0000_1000_0111_0000_0000_0001 231: mov 1, tdata 007D : 1100_0110_0000_0000_0010_0011 232: jmp cc_uncond, return3 007E : 0000_1000_0111_0000_0000_1111 233: ; end of walking 1 234: 235: ; prepares the next data - walking 0 236: wlk0: com tdata, tdata 007F : 1011_1110_0000_0000_0110_0011 237: shl 1, tdata, tdata 0080 : 1011_0010_0001_0000_0110_0011 238: and tdata, psrmask, tdata 0081 : 1010_0110_0011_0001_0100_0011 239: jmpr cc_nzero, +2 0082 : 0000_0100_0001_0000_1000_0001 240: mov 1, tdata 0083 : 1100_0110_0000_0000_0010_0011 241: com tdata, tdata 0084 : 1011_1110_0000_0000_0110_0011 242: and tdata, psrmask, tdata 0085 : 1010_0110_0011_0001_0100_0011 243: jmp cc_uncond, return3 0086 : 0000_1000_0111_0000_0000_1111 244: ; end of walking 0 245: 246: ; prepares the next data by pseudo random generato 247: psr: lpio 0x202, tdata 0087 : 1110_0110_0100_0000_0100_0011 248: and tdata, psrmask, tdata 0088 : 1010_0110_0011_0001_0100_0011 249: jmp cc_uncond, return3 0089 : 0000_1000_0111_0000_0000_1111 250: ; end random generator 251: 252: ; init walking 1 253: iwlk1: mov prf[11], tdata 008A : 1100_0010_0000_0001_0110_0011 254: jmp cc_uncond, return3 008B : 0000_1000_0111_0000_0000_1111 255: 256: ; init walking 0 257: iwlk0: com prf[11], tdata 008C : 1011_1110_0000_0001_0110_0011 258: and tdata, psrmask, tdata 008D : 1010_0110_0011_0001_0100_0011 259: jmp cc_uncond, return3 008E : 0000_1000_0111_0000_0000_1111 260: 261: ; init psr 262: ;#ifdef trap3 263: ipsr: mov b1_0_0_00_01_11111, tdata 008F : 1100_0111_0000_0111_1110_0011 264: ;#else 265: ;ipsr: mov b1_0_0_00_01_1111, tdata 266: ;#endif 267: mov 31 prf[0] 0090 : 1100_0110_0000_0011_1110_0000 268: sub prf[0] bitnum prf[0] 0091 : 1000_1010_0000_0001_1000_0000 269: ;#ifdef trap3 270: ;#else 271: ; cmp prf[0] 16 272: ; jmpr cc_carry 2 273: ; mov 15 prf[0] 274: ;#endif 275: or tdata prf[0] tdata 0092 : 1010_1010_0011_0000_0000_0011 276: spio tdata, 0x201 0093 : 0010_0000_0011_0010_0000_0001 277: mov prf[13], tdata 0094 : 1100_0010_0000_0001_1010_0011 278: spio tdata, 0x200 0095 : 0010_0000_0011_0010_0000_0000 279: nop 0096 : 0000_0000_0000_0000_0000_0000 280: nop 0097 : 0000_0000_0000_0000_0000_0000 281: lpio 0x202, tdata 0098 : 1110_0110_0100_0000_0100_0011 282: jmp cc_uncond, return3 0099 : 0000_1000_0111_0000_0000_1111 283: 284: ; BEGIN DIRECT DMEM TESTING 285: 286: dsra: mvpcr +2, return3 009A : 1100_0110_0001_0011_1000_0111 287: jmp cc_uncond, itdgen 009B : 0000_1000_1001_0000_0000_1111 288: 289: iext DAFIRST 009C : 0101_0000_0000_0000_0000_0000 290: mov DAFIRST, errstore 009D : 1100_0110_0000_0000_0000_1111 291: sd: ;mov c0 tdata 292: sra+ tdata 009E : 0011_1000_0011_0000_0000_0000 293: mvpcr +2, return3 009F : 1100_0110_0001_0100_0010_0111 294: jmp cc_uncond, tdgen 00A0 : 0000_1000_1000_0000_0000_1111 295: iext DADEND 00A1 : 0101_0000_0000_0000_0000_0000 296: cmp errstore, DADEND 00A2 : 1100_1000_1111_1111_1111_1100 297: jmp cc_carry, sd 00A3 : 0000_0100_0000_0000_0001_0000 298: 299: mvpcr +2, return3 00A4 : 1100_0110_0001_0100_1100_0111 300: jmp cc_uncond, itdgen ; and go 00A5 : 0000_1000_1001_0000_0000_1111 301: 302: iext DAFIRST 00A6 : 0101_0000_0000_0000_0000_0000 303: mov DAFIRST, errstore 00A7 : 1100_0110_0000_0000_0000_1111 304: nop 00A8 : 0000_0000_0000_0000_0000_0000 305: ws: lra4 rdata ; this do 00A9 : 1101_0010_0000_0000_0000_0010 306: lra4+ rdata ; in the 00AA : 1111_0010_0000_0000_0000_0010 307: cmp rdata, tdata 00AB : 1000_1000_0010_0000_0110_0000 308: jmp cc_zero, neerr 00AC : 0000_0100_0000_0000_0001_0001 309: add errnum, c1, errnum 00AD : 1000_0010_0100_0110_0010_0100 310: 311: cmp errnum 0x3F ; first 63 er 00AE : 1100_1000_0100_0000_0011_1111 312: jmp cc_geu neerr ; lead to sto 00AF : 0000_0100_0000_0000_0000_0000 313: mov 0x3E work ; F005-F042 - 00B0 : 1100_0110_0000_0111_1100_0001 314: mul32 work c5 work ; F043-F080 - 00B1 : 1001_0000_0001_0110_1010_1001 315: iext 0xF004 ; F081-F0BE - 00B2 : 0101_0000_0000_0000_0000_1111 316: mov 0xF004 g4 ; F0BF-F0FC - 00B3 : 1100_0110_0000_0000_1001_0100 317: add work g4 work 00B4 : 1000_0010_0001_0010_1000_0001 318: add work errnum work 00B5 : 1000_0010_0001_0000_1000_0001 319: sgio errstore work 00B6 : 0010_0100_1111_0000_0010_0000 320: 321: neerr: mvpcr +2, return3 00B7 : 1100_0110_0001_0111_0010_0111 322: jmp cc_uncond, tdgen ; get nex 00B8 : 0000_1000_1000_0000_0000_1111 323: 324: iext DADEND 00B9 : 0101_0000_0000_0000_0000_0000 325: cmp errstore, DADEND 00BA : 1100_1000_1111_1111_1111_1100 326: jmp cc_carry, ws ; if not 00BB : 0000_0100_0000_0000_0001_0000 327: jmp cc_uncond, return2 00BC : 0000_1000_0110_0000_0000_1111 328: 329: ; END DIRECT DMEM TESTING 330: 331: ; BEGIN THE TESTING ROUTINE (uses testin 332: sltst: mov 1, prf[11] 00BD : 1100_0110_0000_0000_0010_1011 333: mov 1, prf[13] 00BE : 1100_0110_0000_0000_0010_1101 334: ;#ifdef dmem_as_ram 335: st: mov wlk0, tdgen ; call walk 00BF : 1100_0110_0000_0000_0000_1000 336: mov iwlk0, itdgen 00C0 : 1100_0110_0000_0000_0000_1001 337: mvpcr +2, return2 00C1 : 1100_0110_0001_1000_0110_0110 338: jmp cc_uncond, dsra 00C2 : 0000_0100_0000_0000_0000_1111 339: 340: mov wlk1, tdgen ; call walk 00C3 : 1100_0110_0000_0000_0000_1000 341: mov iwlk1, itdgen 00C4 : 1100_0110_0000_0000_0000_1001 342: mvpcr +2, return2 00C5 : 1100_0110_0001_1000_1110_0110 343: jmp cc_uncond, dsra 00C6 : 0000_0100_0000_0000_0000_1111 344: 345: mov psr, tdgen ; call pseu 00C7 : 1100_0110_0000_0000_0000_1000 346: mov ipsr, itdgen 00C8 : 1100_0110_0000_0000_0000_1001 347: mvpcr +2, return2 00C9 : 1100_0110_0001_1001_0110_0110 348: jmp cc_uncond, dsra 00CA : 0000_0100_0000_0000_0000_1111 349: 350: add prf[13], c3, prf[13] ; next init 00CB : 1000_0010_1101_0110_0110_1101 351: shl 1, prf[11], prf[11] ; testing r 00CC : 1011_0010_0001_0001_0110_1011 352: jmp cc_carry, return1 00CD : 0000_1000_0101_0000_0001_0000 353: mov bitnum work 00CE : 1100_0010_0000_0001_1000_0001 354: mov 15 rdata 00CF : 1100_0110_0000_0001_1110_0010 355: mov prf[11] prf[0] 00D0 : 1100_0010_0000_0001_0110_0000 356: cmp rdata bitnum 00D1 : 1000_1000_0010_0001_1000_0000 357: jmpr cc_ncarry 3 00D2 : 0000_0100_0001_1010_1010_0000 358: shl 15 prf[0] prf[0] 00D3 : 1011_0010_1111_0000_0000_0000 359: sub work rdata work 00D4 : 1000_1010_0001_0000_0100_0001 360: shlt work, prf[0] ; if MSB of th 00D5 : 0111_0000_0001_0000_0000_0000 361: jmp cc_ncarry, st 00D6 : 0000_0100_0000_0000_0000_0000 362: ;#endif 363: jmp cc_uncond return1 00D7 : 0000_1000_0101_0000_0000_1111 364: ; END OF THE TESTING ROUTINE 365: 366: Source file read, 0 error(s), 0 warning(s).