PDP-11/45 RSTS/E boot problem

Paul Koning paulkoning at comcast.net
Thu Jan 3 19:17:49 CST 2019



> On Jan 3, 2019, at 11:51 AM, Fritz Mueller via cctalk <cctalk at classiccmp.org> wrote:
> 
> Hi Paul,
> 
>> On Jan 3, 2019, at 7:01 AM, Paul Koning <paulkoning at comcast.net> wrote:
>> 
>> I have a Monitor ODT manual from RSTS V4, I should find a way to make that available.  It's pretty nearly standard ODT, there are a few extensions for mapping addresses
> 
> Bitsavers has some docs for ODT from contemporaneous versions of RSX-11, which have seemed close enough to get me going with some experimentation.
> 
>> To find LOG$DK, you can either look in the link map (RSTS.MAP) from the SYSGEN, or ask the init PATCH option to tell you
> 
> So, I don’t see a LOG$DK in my V06C RSTS.MAP (though I do have LOG$KB and LOG$TM).  PA returns “address above module bounds” when looking for it, which I assume means it searched without finding it. 

What we have here is a confusion on my part.  The LOG$xx symbols are for the most part defined in the kernel definitions file KERNEL.MAC.  They are EMT instructions with a device code in the low byte; in the kernel an EMT is handled as a request to invoke the error logging machinery.

Dispatching for that goes through a table indexed by the EMT code, so what you actually need is to look in the correct entry of that table to find the RK11 driver logging entry point.  A breakpoint set there should trigger when a disk error is reported by the driver.  Here's how:

RSTS V06C-03 FRITZTS (DK0)


Option: PA
File to patch? ERRTBL
Illegal file name
File to patch? 
Module name? ^C

Option: PA
File to patch? 
Module name? 
Base address? ERRTBL
Offset address? LOG$DK-104000
 Base   Offset  Old     New?
030162  000030  055230  ? ^Z
Offset address? ^Z
Base address? 55230
Offset address? 0
 Base   Offset  Old     New?
055230  000000  004537  ? ^C

Option: 

So in this example, 55230 is the error logging entry point for the RK11 driver.  In V10.1, that code looks like this; I suspect the V6C code is the same or nearly so:

.SBTTL	ERROR LOGGING

	ERRENT	LOG$DK

	CALLX	ERLDSK,R5	;;;USE COMMON ROUTINE
	  .BYTE	ERC$DK		;;;ERROR CODE
	  .BYTE	-1		;;;OVERLAPPED SEEK
	  .BYTE	RKDS,6		;;;OFFSET, 6 REGISTERS
	  .BYTE	0,0		;;;THAT'S ALL
	RETURN			;;; AND BACK

In any case, that doesn't really matter.  If you have a breakpoint at this location, you'll be able to capture the controller CSR contents which -- I hope -- will explain why the system is not happy.

The way to set the breakpoint is simply to enter control/P for ODT, then 55230;B to set the breakpoint, then P to proceed.

	paul



More information about the cctalk mailing list