Greetings,
I spent much of the weekend improving my disk server and OS/8 handlers. I
now have some great new features, and it's working well enough for me to
submit to the world. I know there are still issues at present, but I'm
hoping some OS/8 gurus can help debug some of them.
https://github.com/drovak/os8diskserver
I encourage other developers to help each other out (and myself) by
submitting changes to the code base. I'd like to make this as good as
possible for everyone. I'm pretty new to git and GitHub, so please let me
know if I've screwed something up there.
Here's some more notes:
- I'll be releasing an actual how-to guide within the next few days. For
now, the adventurous ones can help beta test it.
- The server has been compiled successfully under Cygwin, Debian on
Raspberry Pi, and OS X Snow Leopard.
- 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.
- The server now uses dumprest/simh .rk05 images exclusively.
- There is a utility to install a new system handler and bootloader on an
.rk05 image. It seems to work fine.
- There is a utility to convert Bernhard Baehr's simulator's format to the
dumprest/simh format. It also seems to work fine.
- The server supports mounting two disk images at once. This requires the
use of the non-system handler which has four entry points. The first two
point to the two that the system handler uses. The non-system handler can
eventually be expanded to support several more disks as well.
- 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.
- PIP and RESORC will likely need to be updated to reflect that the handler
device type supports the same number of blocks as an RK05. This is
described in Appendix B of the OS/8 Software Support Manual.
- 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
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.
As always, feel free to email me if you have any questions or comments. If
you have any ideas for how to make my program better in any way, I'd love
to hear them.
Thank you all for your support,
Kyle