At 08:57 PM 2/9/2014, Kyle Owen wrote:
- The OS/8 system handlers use some PDP-8/E and later
instructions. If
someone wants to help go back through and track these down, we can see
if a
more compliant version will still fit in the allotted space.
I had a quick look at the code and it's not going to be particularly
hard to get rid of the BSW instructions.
I got distracted trying to remember where the three-instruction BSW
subroutine is found. In TSS/8 somewhere IIRC.
- There's definitely an issue present. Running
BASIC with a simple test
program halts the computer after 10206. I've not had a chance to further
investigate why.
That's not good. How about Fortran? That's another good test as it runs
with interrupts enabled.
- The server does its best to check that a disk write
will not go outside
the boundaries of the disk.
- The server does its best to verify that a disk read will not overwrite
the system handler
OS/8 handlers generally haven't bothered with this. Some of them are
pretty horrid.
Also, if an OS/8 guru can help me out, I'd
appreciate it. Will a
read/write
from SYS: on an RK05 past block 3248 (decimal) succeed? That is, can a
read
or write carry over from one side of the platter to the other? After
looking at the RK8E system handler, I would say this is a yes. It looks
like a call to SYS: with a block number of 6260 (octal) is the same as a
jump to the second entry point. However, is this behavior desirable or
needed? I would have expected the two sides to be logically separated in
the handler. My server attempts to do just that by essentially
chopping the
.rk05 image in half. If a transfer goes past the end of either half, an
error occurs. However, if this is not what should happen, I can change
that.
Yes, if you give the handler a block greater than the size of the disk,
it'll overflow into the other half. As above, the OS/8 handlers assume
that you know what you're doing.
I wouldn't much bother about reproducing that behavior, however. It's
remotely possible that something somewhere takes advantage of it, but
I'd be really surprised if that was the case.
It's not "sides" actually - the blocks alternate sides. You read all 16
sectors on the top, flip to the bottom, read all those, then flip back
to the top. There's a CJL (Charles J. Lasner) rant about the fact that
the OS/8 system handler does it wrong, causing a full rotation when the
side is switched so a full-disk read on OS/8 is far slower than it
needs to be.
-Rick