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