.title M9312 11/60-70 Diagnostic/Console ROM ; This source code is an exact copy of the DEC M9312 23-616F1 console PROM. ; ; This console/diagnostic PROM is for 11/60-70 CPUs. ; ; Standard devices are 82S137, 74S573 or other compatible bipolar PROMs ; with a 1024x4 TriState 18pin DIP architecture. .asect .=165000 base =. START: mov r0,@#700 ; mov r1,@#702 ; mov r4,@#704 ; clr @#706 ; .=base+20 DIAG: bis #100000,@#177776 ; bit #040000,@#177776 ; beq L1 ; inc @#706 ; L1: clr @#177776 ; br L2 ; halt ; L2: clr sp ; bmi L3 ; bvs L3 ; bhi L3 ; blt L3 ; blos L4 ; L3: halt ; L4: dec sp ; bpl L5 ; beq L5 ; bge L5 ; ble L6 ; L5: halt ; L6: ror sp ; bvc L7 ; bcc L7 ; bne L8 ; L7: halt ; L8: mov #125252,sp ; mov sp,r0 ; mov r0,r1 ; mov r1,r2 ; mov r2,r3 ; mov r3,r4 ; mov r4,r5 ; sub r5,r1 ; blt NODIAG ; beq L9 ; .=base+144 NODIAG: halt ; L9: rol r2 ; bcc L10 ; blt L11 ; L10: halt ; L11: add r2,r3 ; inc r3 ; com r3 ; add r3,r1 ; bcs L12 ; ble L13 ; L12: halt ; L13: ror r4 ; bis r4,r3 ; add r5,r3 ; inc r3 ; bcs L14 ; dec r1 ; blt L15 ; L14: halt ; L15: com r0 ; blos L16 ; halt ; L16: bic r0,r1 ; add r1,r1 ; bgt L17 ; ble L18 ; L17: halt ; L18: swab r1 ; cmp r1,#052125 ; bne L19 ; bit r4,r5 ; bgt L19 ; com r5 ; bne L20 ; L19: halt ; L20: movb #177401,r0 ; bpl L21 ; L22: halt ; L21: sob r0,L22 ; clr r1 ; L23: inc r1 ; sob r0,L23 ; tst r0 ; bne L24 ; tst r1 ; beq L25 ; L24: halt ; L25: mov #776,sp ; jsr pc,L26 ; N2: halt ; L26: cmp #N2,(sp) ; beq L27 ; halt ; L27: mov #N3,(sp) ; rts pc ; halt ; N3: clr -(sp) ; mov #N4,-(sp) ; rti ; halt ; N4: jmp @#N5 ; halt ; N5: mov #160000,r5 ; clr @#6 ; mov #N6,@#4 ; N6: mov #776,sp ; tst -(r5) ; mov #N12,@#114 ; clr @#116 ; mov #177746,r3 ; mov #14,(r3) ; mov #1000,r2 ; mov r2,r0 ; L28: mov r0,(r0) ; tst (r0)+ ; cmp r0,r5 ; blos L28 ; mov r2,r0 ; L30: mov (r0),r1 ; cmp r0,r1 ; beq L29 ; halt ; L29: com (r0)+ ; cmp r0,r5 ; blos L30 ; L32: mov -(r0),r1 ; com r1 ; cmp r0,r1 ; beq L31 ; halt ; L31: cmp r0,r2 ; bne L32 ; clr (sp) ; mov #125252,r4 ; mov #30,(r3) ; mov #4000,r0 ; L39: mov #1000,r2 ; L36: com r4 ; mov r4,(r0) ; com (r0) ; com (r0) ; cmp (r0),r4 ; beq L33 ; halt ; L33: ror @#177752 ; bcs L34 ; halt ; br L35 ; L34: comb (sp) ; bne L36 ; br L37 ; .=base+564 RESTRT: jmp START ; L37: tst (r0)+ ; sob r2,L36 ; mov #44,(r3) ; mov #6000,r0 ; comb 1(sp) ; bne L39 ; mov #1000,r2 ; mov r2,r0 ; L40: mov r0,(r0) ; tst (r0)+ ; cmp r0,r5 ; blos L40 ; mov #3,r1 ; clr (sp) ; tst @#706 ; bne L41 ; mov #30,(sp) ; L45: mov r2,r0 ; L44: com (r0) ; com (r0) ; cmp r0,(r0) ; beq L42 ; halt ; L42: tst (r0)+ ; ror @#177752 ; bcs L43 ; halt ; br L35 ; L43: cmp r0,r5 ; blos L44 ; L41: mov (sp),(r3) ; clr (sp) ; sob r1,L45 ; br L46 ; N12: halt ; br L46 ; L35: mov #14,(r3) ; L46: mov @#700,r0 ; mov @#702,r1 ; mov @#704,r4 ; jmp 2(r4) ; mov @#177570,r4 ; bic #177000,r4 ; bis #173000,r4 ; movb @#177571,r0 ; asr r0 ; clc ; jmp (r4) ; halt ; ; ------------------------------------------------------------ .=base+774 verson: .ascii "0B" ; version ID .=base+776 crc16: .word <025055> ; CRC-16 will go here .end