CLASSICCMP(a)trailing-edge.com wrote:
Also the boot
area is 177300 ? so it
is in the upper 4K of the 64KB address space, is it legal to have memory
"above" the I/O page?
Absolutely. In fact, some configurations had only
a 2Kbyte I/O page
to allow a little bit of extra memory, and this still works (albeit not
officially supported) under RT-11 (it was tested before the 5.7
release.)
Jerome Fine replies:
I suspect that having memory above 160000 is very special and that
such must be allowed for in a different manner from normal RAM.
In respect of a 2Kbyte I/O page, I hope you (and I am sure you probably
are - just a slip of the fingers) are referring to 8192 Bytes as being the
normal I/O page (160000 -> 177777) in a 64 KByte address space.
The 2 KWord or 4096 Byte I/O page (170000 -> 177777) is allowed
ONLY for older CPUs like the LSI-11/03 and the PDP-11/23 WHEN
the MMU unit is turned OFF. Some of the older memory boards had
a jumper or a wire wrap setting just for this situation. So you could
run either RT11SJ or RT11FB and get and extra 4 KBytes or 2 KWords
for the user program. In almost all cases, RT11SJ was used since that
monitor is smaller than RT11FB and therefore allows extra space.
NOTE that for the LSI-11/03 and a PDP-11/23 (without an MMU chip
which had to run RT11SJ), this was the only solution to obtain the most
memory for the background job.
In addition, if the background job was very unorthodox and did things
like ISRs (Interrupt Service Routines - if you don't know what they are
don't bother) at non-RT11XM compatible addresses (I ran across this
situation last year with a program that could not run under RT11XM -
remember that 4 KByte I/O page Megan), then a small I/O page
under RT11SJ would indeed be all that could be done.
HOWEVER, this solution was actually self-defeating in most cases. Of
course it required a system with an MMU unit in the case of an 11/23
AND probably at least 128 KBytes of memory. AND for the J11 chip
systems (11/73 etc.), running under RT11XM actually allows far more
memory than even RT11SJ. Note also that no J11 chips allow a 4 KByte
I/O page (as far as I could determine and I think that Megan found the
same result) in any case! Only an 8192 Byte I/O page is allowed.
For anyone who wants a hint, under RT11XM (and now even more so
under RT11ZM when DATA SPACE is allowed in addition to
INSTRUCTION SPACE - also allowed with recent versions of TSX-PLUS)
it is possible to have ISRs in the first 8192 bytes of memory and request
extended memory for the address space where the resident monitor
is located in Kernel Space and even use User Space addresses for where
the I/O page addresses are located if the I/O page is not required.
For example, I know of a version of BINCOM which initially does a LOAD
into only the first 8192 bytes of memory (000000 -> 017776). If RT11FB
is running, the rest of the program is loaded in the normal manner. If RT11XM
is running, the address space 020000 -> 177777) is mapped into extended
memory (if sufficient is available) providing a full 64 KBytes to run the program
and provide buffers for directories and data. THEN, to put the icing on the
cake, TWO more areas of memory are requested (to use double buffering
from 040000 to 177777). Fortunately, the code to use
the buffers lies below
040000 and when the next pair of files needs to be determined
and opened,
the area above 040000 with the original program can be activated and used.
Altogether, 152 KBytes just in extended memory are used compared to a
maximum of about 48 KBytes that are available to the background program
under RT11SJ.
Sincerely yours,
Jerome Fine
RT-11/TSX-PLUS User/Addict