1 .title M9312 11/60-70 Diagnostic/Console ROM 2 3 ; This source code is an exact copy of the DEC M9312 23-616F1 console PROM. 4 ; 5 ; This console/diagnostic PROM is for 11/60-70 CPUs. 6 ; 7 ; Standard devices are 82S137, 74S573 or other compatible bipolar PROMs 8 ; with a 1024x4 TriState 18pin DIP architecture. 9 10 000000 .asect 11 165000 .=165000 12 13 165000 base =. 14 15 165000 010037 000700 START: mov r0,@#700 ; 16 165004 010137 000702 mov r1,@#702 ; 17 165010 010437 000704 mov r4,@#704 ; 18 165014 005037 000706 clr @#706 ; 19 20 165020 .=base+20 21 165020 052737 100000 177776 DIAG: bis #100000,@#177776 ; 22 165026 032737 040000 177776 bit #040000,@#177776 ; 23 165034 001402 beq L1 ; 24 165036 005237 000706 inc @#706 ; 25 165042 005037 177776 L1: clr @#177776 ; 26 165046 000401 br L2 ; 27 165050 000000 halt ; 28 29 165052 005006 L2: clr sp ; 30 165054 100404 bmi L3 ; 31 165056 102403 bvs L3 ; 32 165060 101002 bhi L3 ; 33 165062 002401 blt L3 ; 34 165064 101401 blos L4 ; 35 165066 000000 L3: halt ; 36 37 165070 005306 L4: dec sp ; 38 165072 100003 bpl L5 ; 39 165074 001402 beq L5 ; 40 165076 002001 bge L5 ; 41 165100 003401 ble L6 ; 42 165102 000000 L5: halt ; 43 44 165104 006006 L6: ror sp ; 45 165106 102002 bvc L7 ; 46 165110 103001 bcc L7 ; 47 165112 001001 bne L8 ; 48 165114 000000 L7: halt ; 49 50 165116 012706 125252 L8: mov #125252,sp ; 51 165122 010600 mov sp,r0 ; 52 165124 010001 mov r0,r1 ; 53 165126 010102 mov r1,r2 ; 54 165130 010203 mov r2,r3 ; 55 165132 010304 mov r3,r4 ; 56 165134 010405 mov r4,r5 ; 57 165136 160501 sub r5,r1 ; 58 165140 002401 blt NODIAG ; 59 165142 001401 beq L9 ; 60 61 165144 .=base+144 62 165144 000000 NODIAG: halt ; 63 64 165146 006102 L9: rol r2 ; 65 165150 103001 bcc L10 ; 66 165152 002401 blt L11 ; 67 165154 000000 L10: halt ; 68 69 165156 060203 L11: add r2,r3 ; 70 165160 005203 inc r3 ; 71 165162 005103 com r3 ; 72 165164 060301 add r3,r1 ; 73 165166 103401 bcs L12 ; 74 165170 003401 ble L13 ; 75 165172 000000 L12: halt ; 76 77 165174 006004 L13: ror r4 ; 78 165176 050403 bis r4,r3 ; 79 165200 060503 add r5,r3 ; 80 165202 005203 inc r3 ; 81 165204 103402 bcs L14 ; 82 165206 005301 dec r1 ; 83 165210 002401 blt L15 ; 84 165212 000000 L14: halt ; 85 86 165214 005100 L15: com r0 ; 87 165216 101401 blos L16 ; 88 165220 000000 halt ; 89 90 165222 040001 L16: bic r0,r1 ; 91 165224 060101 add r1,r1 ; 92 165226 003001 bgt L17 ; 93 165230 003401 ble L18 ; 94 165232 000000 L17: halt ; 95 96 165234 000301 L18: swab r1 ; 97 165236 020127 052125 cmp r1,#052125 ; 98 165242 001004 bne L19 ; 99 165244 030405 bit r4,r5 ; 100 165246 003002 bgt L19 ; 101 165250 005105 com r5 ; 102 165252 001001 bne L20 ; 103 165254 000000 L19: halt ; 104 105 165256 112700 177401 L20: movb #177401,r0 ; 106 165262 100001 bpl L21 ; 107 165264 000000 L22: halt ; 108 109 165266 077002 L21: sob r0,L22 ; 110 165270 005001 clr r1 ; 111 165272 005201 L23: inc r1 ; 112 165274 077002 sob r0,L23 ; 113 165276 005700 tst r0 ; 114 165300 001002 bne L24 ; 115 165302 005701 tst r1 ; 116 165304 001401 beq L25 ; 117 165306 000000 L24: halt ; 118 119 165310 012706 000776 L25: mov #776,sp ; 120 165314 004767 165322' jsr pc,L26 ; 121 165320 000000 N2: halt ; 122 123 165322 022716 165320 L26: cmp #N2,(sp) ; 124 165326 001401 beq L27 ; 125 165330 000000 halt ; 126 127 165332 012716 165342 L27: mov #N3,(sp) ; 128 165336 000207 rts pc ; 129 165340 000000 halt ; 130 131 165342 005046 N3: clr -(sp) ; 132 165344 012746 165354 mov #N4,-(sp) ; 133 165350 000002 rti ; 134 165352 000000 halt ; 135 136 165354 000137 165362 N4: jmp @#N5 ; 137 165360 000000 halt ; 138 139 165362 012705 160000 N5: mov #160000,r5 ; 140 165366 005037 000006 clr @#6 ; 141 165372 012737 165400 000004 mov #N6,@#4 ; 142 165400 012706 000776 N6: mov #776,sp ; 143 165404 005745 tst -(r5) ; 144 165406 012737 165714 000114 mov #N12,@#114 ; 145 165414 005037 000116 clr @#116 ; 146 165420 012703 177746 mov #177746,r3 ; 147 165424 012713 000014 mov #14,(r3) ; 148 165430 012702 001000 mov #1000,r2 ; 149 165434 010200 mov r2,r0 ; 150 165436 010010 L28: mov r0,(r0) ; 151 165440 005720 tst (r0)+ ; 152 165442 020005 cmp r0,r5 ; 153 165444 101774 blos L28 ; 154 165446 010200 mov r2,r0 ; 155 165450 011001 L30: mov (r0),r1 ; 156 165452 020001 cmp r0,r1 ; 157 165454 001401 beq L29 ; 158 165456 000000 halt ; 159 160 165460 005120 L29: com (r0)+ ; 161 165462 020005 cmp r0,r5 ; 162 165464 101771 blos L30 ; 163 165466 014001 L32: mov -(r0),r1 ; 164 165470 005101 com r1 ; 165 165472 020001 cmp r0,r1 ; 166 165474 001401 beq L31 ; 167 165476 000000 halt ; 168 169 165500 020002 L31: cmp r0,r2 ; 170 165502 001371 bne L32 ; 171 165504 005016 clr (sp) ; 172 165506 012704 125252 mov #125252,r4 ; 173 165512 012713 000030 mov #30,(r3) ; 174 165516 012700 004000 mov #4000,r0 ; 175 165522 012702 001000 L39: mov #1000,r2 ; 176 165526 005104 L36: com r4 ; 177 165530 010410 mov r4,(r0) ; 178 165532 005110 com (r0) ; 179 165534 005110 com (r0) ; 180 165536 021004 cmp (r0),r4 ; 181 165540 001401 beq L33 ; 182 165542 000000 halt ; 183 184 165544 006037 177752 L33: ror @#177752 ; 185 165550 103402 bcs L34 ; 186 165552 000000 halt ; 187 165554 000461 br L35 ; 188 189 165556 105116 L34: comb (sp) ; 190 165560 001362 bne L36 ; 191 165562 000402 br L37 ; 192 193 165564 .=base+564 194 165564 000167 165000' RESTRT: jmp START ; 195 196 165570 005720 L37: tst (r0)+ ; 197 165572 077223 sob r2,L36 ; 198 165574 012713 000044 mov #44,(r3) ; 199 165600 012700 006000 mov #6000,r0 ; 200 165604 105166 000001 comb 1(sp) ; 201 165610 001344 bne L39 ; 202 165612 012702 001000 mov #1000,r2 ; 203 165616 010200 mov r2,r0 ; 204 165620 010010 L40: mov r0,(r0) ; 205 165622 005720 tst (r0)+ ; 206 165624 020005 cmp r0,r5 ; 207 165626 101774 blos L40 ; 208 165630 012701 000003 mov #3,r1 ; 209 165634 005016 clr (sp) ; 210 165636 005737 000706 tst @#706 ; 211 165642 001020 bne L41 ; 212 165644 012716 000030 mov #30,(sp) ; 213 165650 010200 L45: mov r2,r0 ; 214 165652 005110 L44: com (r0) ; 215 165654 005110 com (r0) ; 216 165656 020010 cmp r0,(r0) ; 217 165660 001401 beq L42 ; 218 165662 000000 halt ; 219 220 165664 005720 L42: tst (r0)+ ; 221 165666 006037 177752 ror @#177752 ; 222 165672 103402 bcs L43 ; 223 165674 000000 halt ; 224 165676 000410 br L35 ; 225 226 165700 020005 L43: cmp r0,r5 ; 227 165702 101763 blos L44 ; 228 165704 011613 L41: mov (sp),(r3) ; 229 165706 005016 clr (sp) ; 230 165710 077121 sob r1,L45 ; 231 165712 000404 br L46 ; 232 233 165714 000000 N12: halt ; 234 165716 000402 br L46 ; 235 236 165720 012713 000014 L35: mov #14,(r3) ; 237 165724 013700 000700 L46: mov @#700,r0 ; 238 165730 013701 000702 mov @#702,r1 ; 239 165734 013704 000704 mov @#704,r4 ; 240 165740 000164 000002 jmp 2(r4) ; 241 242 165744 013704 177570 mov @#177570,r4 ; 243 165750 042704 177000 bic #177000,r4 ; 244 165754 052704 173000 bis #173000,r4 ; 245 165760 113700 177571 movb @#177571,r0 ; 246 165764 006200 asr r0 ; 247 165766 000241 clc ; 248 165770 000114 jmp (r4) ; 249 165772 000000 halt ; 250 251 ; ------------------------------------------------------------ 252 253 165774 .=base+774 254 165774 060 102 verson: .ascii "0B" ; version ID 255 256 165776 .=base+776 257 165776 025055 crc16: .word <025055> ; CRC-16 will go here 258 259 .end 259 Symbol table . =****** L17 =165232 L28 =165436 L4 =165070 L9 =165146 BASE =165000 L18 =165234 L29 =165460 L40 =165620 N12 =165714 CRC16 =165776 L19 =165254 L3 =165066 L41 =165704 N2 =165320 DIAG =165020 L2 =165052 L30 =165450 L42 =165664 N3 =165342 L1 =165042 L20 =165256 L31 =165500 L43 =165700 N4 =165354 L10 =165154 L21 =165266 L32 =165466 L44 =165652 N5 =165362 L11 =165156 L22 =165264 L33 =165544 L45 =165650 N6 =165400 L12 =165172 L23 =165272 L34 =165556 L46 =165724 NODIAG=165144 L13 =165174 L24 =165306 L35 =165720 L5 =165102 RESTRT=165564 L14 =165212 L25 =165310 L36 =165526 L6 =165104 START =165000 L15 =165214 L26 =165322 L37 =165570 L7 =165114 VERSON=165774 L16 =165222 L27 =165332 L39 =165522 L8 =165116 Program sections: . ABS. 166000 000 (RW,I,GBL,ABS,OVR,NOSAV) 000000 001 (RW,I,LCL,REL,CON,NOSAV)