This post is addressed to users of Ersatz-11. Many of you are aware
that my addiction is running software for the PDP-11 architecture under
the RT-11 operating system. While those of you who use RSX-11 or
RSTS/E may also be interested, I am not sure how to port the PDP-11
portion of the software to a user environment under RSX-11 or RSTS/E.
Specifically, explicit access to the IOPAGE Registers is required. RT-11
allows access either via the Current Data space if the user is able to run
using an unmapped monitor or as a privileged job under a mapped monitor.
In addition, if the user is running as a Virtual Job using VBGEXE under a
mapped monitor, it is possible to use the .Poke EMT request to make the
IOPAGE Registers available via the Previous Data space. If it is possible
under RSX-11 or RSTS/E to meet that requirement, then the enhancements
specified in this post can also be used under these two operating systems.
About 5 years ago, John Wilson made available a plugin named EMEM.DLL
which allowed an RT-11 user to explicitly access the memory of the PC via
four IOPAGE Registers. Early in September of 2008, John made the final
changes to allow EMEM32.DLL to perform the same explicit access of PC
memory under V5.2 of E11. While John's version makes only 8 MB of such
memory available, it is possible to use WatCom to assemble the source code
and link the OBJ file with many enhancements, including any memory size that
the operating system (in this case DOS or some version of Windows) and
hardware on the PC supports. With the current systems being run under
Windows XP, I am confident that 1 GB of memory can be used.
My interest is to use an enhanced EMEM32.DLL when sieving for Prime
Numbers as one example where very large work RAM will substantially
improve the speed of an algorithm. The present 4 IOPAGE Registers
are used in the following manner:
Mov @#CSR+0,R0 ;Fetch word at address CSR+04/CSR+06
Mov @#CSR+2,R0 ;Fetch word as above, auto-increment word
address
Mov @#CSR+4,R0 ;Fetch low 16 bits of address
Mov @#CSR+6,R0 ;Fetch high 16 bits of address
Increasing the number of IOPAGE Registers will facilitate access to
Byte, Word,
Double Word and Quad Word values. Also included will be the ability to Add,
Subtract and Multiply (initially only unsigned) 16 bit, 32 bit and 64
bit values.
The other set of changes which are exclusively for RT-11 are the enhancement
of the HD(X).SYS device driver. Initial tests using HD(X).SYS have provided
the confidence that I/O throughput is approximately double that for the MSCP
or DU(X).SYS device driver. While the initial version of HD(X).SYS which
John has made available supports only 32 MB devices, adding a DU: type
translation table will allow support for up to 2 TB devices. It should
be possible
to modify the simple device drivers for RK05s under RSX-11 and RSTS/E
to support the HD: device under E11. However, I can't help with this
myself.
If anyone is interested, please respond with suggestions and questions. If
no one responds, I will proceed to enhance HD(X).SYS and EMEM32
after which I will send any hobby user a copy if requested. If any
commercial
user of Ersatz-11 is interested, I will first contact John Wilson to be
sure that
such use is allowed.
Sincerely yours,
Jerome Fine