strange number corruption on pdp11/34

Don North ak6dn at mindspring.com
Thu Jan 29 23:37:54 CST 2015


So here is the octal print routine in the M9312 console boot prom for the '34:

	; print an octal number followed by one <SP>
	;
	; R0 = register value to print
	; R1 = return address
	; R2 = temp char
	; R3 = temp addr

prtoct:	mov	#<'0/bit1>,r2		; ascii 0 right 1b
	sec				; shift a 1 into R0 lsb as done bit
1$:	rol	r0			; msb out of R0
	rolb	r2			; into lsb of R2
	mov	pc,r3			; ret addr
	br	txchar			; print char in R2
	mov	#<BL*bit8>+200+<'0/bit3>,r2 ; ascii SP upper, ascii 0 right 3b lower
2$:	asl	r0			; msb out of R0
	beq	3$			; when R0 has gone to zero we are done
	rolb	r2			; into lsb of R2
	bcs	2$			; loop once more if flagbit was set
	br	1$			; go get last bit and print char
3$:	swab	r2			; move the SP from upper byte to lower
	mov	pc,r3			; ret addr
	br	txchar			; print the space char in R2
retR1:	cmp	(r1)+,(r1)+		; bump return address ptr R1 by +4
	jmp	-2(r1)			; return to (R1)-2

So I would speculate either 'rol' or 'rolb' are always rotating in a 0 bit instead of the
c-bit, or possibly the c-bit is stuck at zero.

-----Original Message-----
>From: Jacob Ritorto <jacob.ritorto at gmail.com>
>Sent: Jan 29, 2015 7:08 PM
>To: "General Discussion: On-Topic and Off-Topic Posts" <cctalk at classiccmp.org>
>Subject: Re: strange number corruption on pdp11/34
>
>So, pardon the large post, but here's the real comparison between my
>'mysterious zero bug' KD11E-A cpu board M8266, and my good one:  First is
>the bad.  Note that even at power on, I have to halt and restart the
>console emulator at 165200.  Look at the registers, all blanked to zeroes
>and missing digits, too.  It did manage to boot xxdp, but when I tried to
>enter the correct address and vector to ZRLG??, it actually told me I was
>wrong and couldn't even run the test on the device that way.  Then I just
>accepted the default (which was presented as zeroes) and it did run.  Two
>passes.  Blinking lights and audible head movement.  I let it run for two
>passes, but it presented even that as zero passes and spit a bunch of
>zeroes in the results.  Just for kicks, I then booted (and very promptly
>crashed) RSX.  It crash-dumped, giving a whole lot of zeroes.  Next post
>will be same test with the good KD11E-A; stay tuned..
>
>thx
>jake
>
>
>�@
>000000 000 00000 000000
>@
>0 000 00000 00000
>@
>0 000 00000 00000
>@
>0 000 00000 00000
>@
>0 000 00000 00000
>@
>0 000 00000 00000
>@DL�
>
>
>BOOTING UP XXDP-XM EXTENDED MONITOR
>
>
>XXDP-XM EXTENDED MONITOR - XXDP V2.5
>REVISION: F0
>BOOTED FROM DL0
>124KW OF MEMORY
>UNIBUS SYSTEM
>
>RESTART ADDRESS: 152000
>TYPE "H" FOR HELP !
>
>.R ?RLG??
>NRLGA0.BIC
>
>DRSSM-G2
>CNRLG-A-0
>CNRLG TESTS CONTROLLER FUNCTIONS, INTERFACE LOGIC, REGISTER OPERATION
>UNIT IS RL01,RL02
>RSTRT ADR 000000
>DR>START
>
>CHANGE HW (L)  ? Y
>
># UNITS (D)  ? 1
>
>UNIT 0
>RL11=1, RLV11=2, RLV12=3 (O)  0 ? 1
>BUS ADDRESS (O)  0 ? 174400
>
># TOO LARGE
>BUS ADDRESS (O)  0 ? 174400
>
># TOO LARGE
>BUS ADDRESS (O)  0 ?
>VECTOR (O)  0 ? 160
>
># TOO LARGE
>VECTOR (O)  0 ?
>
>TOO MANY VALUES INPUT
>VECTOR (O)  0 ?
>DRIVE (O)  0 ?
>DRIVE TYPE = RL01 (L) Y ? N
>BR LEVEL (O)  0 ? 5
>
>CHANGE SW (L)  ? N
>
>NXT TST MAY ZERO LD UNIT. DOIT ANYWAY?Y
>
>
> ILL INTER 000
> PC 000000 PS 000000
>DR>START
>
>CHANGE HW (L)  ? Y
>
># UNITS (D)  ?
>
>NO DEFAULT
># UNITS (D)  ? 1
>
>UNIT 0
>RL11=1, RLV11=2, RLV12=3 (O)  0 ? 1
>BUS ADDRESS (O)  0 ?
>VECTOR (O)  0 ?
>DRIVE (O)  0 ?
>DRIVE TYPE = RL01 (L) Y ? N
>BR LEVEL (O)  0 ?
>
>CHANGE SW (L)  ? N
>
>NXT TST MAY ZERO LD UNIT. DOIT ANYWAY?Y
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG EOP    0
>    0 TOTAL ERRS
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG DVC FTL ERR  00000 ON UNIT 00 TST 000 SUB 000 PC: 000000
>BAD SEEK-TEST OF DIFFENCE WORD
>CONTROLLER: 000000  DRIVE: 0
>BEFORE COMMAND: CS: 000000 BA: 000000 DA: 000000 MP: 000000
>TIME OF ERROR:  CS: 000000 BA: 000000 DA: 000000 MP: 000000?
>LAST: 000000 PRES: 000000 EXP'D: 000000
>
>CNRLG EOP    0
>    0 TOTAL ERRS
>^C
>DR>^C^C
>DR>
>XIT^U
>EXIT
>�@
>000000 000 00000 000000
>@
>0 000 00000 00000
>@
>0 000 00000 00000
>@
>0 000 00000 00000
>@DL�
>    DEVICE DD000: NOT IN CONFIGURATION
>DEVICE DD100: NOT IN CONFIGURATION
>DEVICE DY002: NOT IN CONFIGURATION
>DEVICE DY102: NOT IN CONFIGURATION
>DEVICE NI002: NOT IN CONFIGURATION
>
>  RSX-11M V4.1 BL35   124.K MAPPED
>
>SYSTEM CRASH AT LOCATION 000000
>
>REGISTERS
>
> R0=000000 R1=000000 R2=000000 R3=000000
>
> R4=000000 R5=000000 SP=000000 PS=000000
>
>SYSTEM STACK DUMP
>
> LOCATION CONTENTS
>
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>  000000   000000
>
>
>CRASH -- CONT WITH SCRATCH MEDIA ON DY0
>
>On Thu, Jan 29, 2015 at 9:30 PM, Jacob Ritorto <jacob.ritorto at gmail.com>
>wrote:
>
>> ok, now with my 'good' 11/34 board set (not the set with the mysterious
>> zero bug) installed, I re-ran xxdp against the rl02.  I'm getting proper
>> prompts with the address and vectors supplied with non-zero numbers as
>> defaults. I just hit return like I had been doing with the 'zero-bug' cpu
>> boards and this time, the tests run, the drive blinks wildly like before,
>> and I get real results with real numbers filled in.  I think this pretty
>> conclusively proves that there's something really weird (mysterious zero
>> bug) going on with my other board set.
>>
>> On Thu, Jan 29, 2015 at 7:15 PM, Johnny Billquist <bqt at update.uu.se>
>> wrote:
>>
>>> On 2015-01-29 20:14, Pete Turnbull wrote:
>>>
>>>> On 29/01/2015 18:32, Jacob Ritorto wrote:
>>>>
>>>>> Johnny, you're insisting that I put in the real numbers for address
>>>>> and csr
>>>>> for testing the drive (for instance).  I'm going to do that next, here.
>>>>> But are you understanding that some of us think that the reason it
>>>>> prompts
>>>>> a zero default is that it's a manifestation of the zero bug and that the
>>>>> real value *is* actually safe but hidden in memory?  Did you see the
>>>>> RSX-11M crash dump I posted in the other thread?
>>>>>
>>>>
>>>> I didn't see a crash dump, but did you see what I posted yesterday?
>>>>
>>>
>>> I haven't seen any crash dumps either.
>>>
>>>  The default in XXDP for CSRs is very often zero, and I'm pretty sure it
>>>> is so in the RL02 diagnostics (I've ont checked the listing for that
>>>> particular one, but I did look at some others that were more readily to
>>>> hand).  So when it asked you for input and you just hit "return", you
>>>> really did tell it zero.  Applying the principle of Occam's Razor, and
>>>> assuming the simplest solution is the correct one, you got a lot of
>>>> zeros back because it was accessing memory instead of the controller you
>>>> wanted.
>>>>
>>>> It's hard to believe you have a CPU fault that consistently prints
>>>> numbers as zeros yet happily boots three different OSs.  Still, I'll
>>>> change the tune if you re-run XXDP with sensible inputs.
>>>>
>>>
>>> Totally agree with that one.
>>>
>>>
>>>         Johnny
>>>
>>> --
>>> Johnny Billquist                  || "I'm on a bus
>>>                                   ||  on a psychedelic trip
>>> email: bqt at softjar.se             ||  Reading murder books
>>> pdp is alive!                     ||  tryin' to stay hip" - B. Idol
>>>
>>
>>



More information about the cctech mailing list