Don North wrote:
Actually I never said anything about writable, only
that some
words were being used as both data and instructions. See
http://www.ak6dn.com/PDP-11/M9312/23-767A9/23-767A9.lst
on lines 59-79 for what I mean. This is the only boot prom that
I've seen that plays any tricks like this; all the others are
pretty straightforward code.
Funny that the boot prom had to do such strange things to interface
to the 'most intelligent' controller (MSCP), whereas all the other
dumb controllers (RK05, etc) used really simple boot code sequences.
Jerome Fine replies:
That 'most intelligent" controller (MSCP) was supposed to
be needed to handle large disk drives. The HD: interface
(under Ersatz-11) has the capability of handling 2 TB disk
drives and is probably the "dumbest" (perhaps cleanest
and most easily implemented would be better) controller
that I have ever had the pleasure of writing code for.
The MSCP interface seems to be much more complex than is
actually needed. Since I have been successful in producing
a working device driver based on the HD: interface used in
Ersatz-11 for a 22 bit Qbus emulation under RT11XM, I have
also discovered just how much additional overhead must be
present with MSCP code vs the "dumb" HD: interface. As for
the size of the code needed to support MSCP, I haven't, as
yet, started to use a translation table which DU(X).SYS
supports, but the single RT-11 partition version which I
first developed to replace VMX.SYS (which has a LOADed code
footprint of just 87 words) is considerably smaller and much
faster (3 times the speed of VM: and 2 times the speed of
DU:), mostly because far fewer instructions need to be
executed in the device driver for an I/O transfer.
Note that the original version of the HD: device driver
John Wilson wrote in 1995 worked well with unmapped
monitors (RT11SJ and RT11FB), but since it did not support
22 bit Qbus usage, it did not function very well using
PDP-11/73 emulation when I was using RT11XM running under
Ersatz-11.
A post that I just made recently compared how long it takes
to copy an RT-11 MSCP 32 MB partitions vs an RT-11 HD: 32 MB
partitions. Since the overhead should have been averaged
out over many blocks per read / write request and the actual
transfer of data been about the same, I was initially VERY
surprised to observe that an MSCP copy took much more than
twice as long or much more than 2 seconds vs just about
1 second per 32 MB copy using the HD: device driver.
On the other hand, even the overhead of using an EMT request
in RT-11 must be substantial since when subroutine code that
is in user space (i.e. does not use an EMT request) is used,
the speed of a transfer is again twice as fast as using the
device driver. It takes only about 0.5 seconds to copy a
32 MB RT-11 partition using subroutines in user space.
Based on the code in the MSCP device driver in RT-11, it is
very obvious that MSCP code does MUCH more than in the HD:
device driver. Under MSCP, there is also MUCH more code
(I am finally responding directly to Dan's observation)
that needs to be executed. On the other hand, under HD:
all that is required is to transfer the word count, block
number and buffer address to the IOPAGE registers (well
the physical unit number as well which actually takes more
instructions than any of the other variables since the 4 bits
of the unit number are also in the CSR) and initiate the
transfer. So the reason that Dan notes that the MSCP
interface needed so much more code than the other so-called
"dumb" controllers seems (in my opinion) because MSCP is just
far more complex than it needs to be to accomplish the
same result that HD: manages to produce with much less code
and much less overhead.
The statement that MSCP is an intelligent controller and that
the other controllers are "dumb" is, therefore, perhaps correct
in that the MSCP interface is able to handle very large disk
drives. But the unnecessary overhead of MSCP that compares
with the same capability of managing disk drives of up to 2 TB
with HD: seems to indicate that a simple dumb interface can be
much more efficient as well as easier to use - and take much
less code to implement and time to execute.
Sincerely yours,
Jerome Fine
--
If you attempted to send a reply and the original e-mail
address has been discontinued due a high volume of junk
e-mail, then the semi-permanent e-mail address can be
obtained by replacing the four characters preceding the
'at' with the four digits of the current year.