pcjs/devices/pdp11/rom/M9312/23-616F1.mac

259 lines
3.6 KiB
Text

.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