On 02/11/2014 12:30 PM, Kyle Owen wrote:
On Tue, Feb 11, 2014 at 5:24 AM, Rick Murphy <rick
at rickmurphy.net> wrote:
- 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.
Interrupts! I hadn't even considered those...oops! I don't have enough
space in my system handler to 1) check if interrupts are enabled, 2)
disable them, and 3) re-enable them if necessary. Just to see if it would
do something different, I disabled interrupts altogether in my subroutine.
Sure enough, it completely broke the functionality of the system. I guess I
can safely assume that programs don't disable interrupts prior to entering
a handler.
Two ways usualy the OS block interrupts for critical parts or the driver
can
get the interrupt state, turn them off, and restore on exit.
Any ideas? If I get caught up in an interrupt halfway
through a disk
transfer, I'm screwed. The buffer will overrun, and all will be lost. I'm
going to play around with the KIE instruction to see if that's all it
needs. Perhaps my choice of using the aux TTY ports was a bad idea. I guess
it's possible that other programs might need to rely on that for some
reason. Another possible solution is just implement reader run control.
I'll have to make sure that my output buffer on the server end won't
overrun though.
I've solved a similar problem for my 8F, no disks but two
serial cards.
I modded
one to get TTL levels for TX data, Rxdata, RXbufferfull (its there on
the 8555).
I used RXbufferfull to jam the TX (CTS clear to send) on the host (not a
pc!).
Ramped th data rate up and the host will send bytes at whatever rate the
PDP-8F can take. My "disk" is a program running on a CP/M machine
and has a partition or three on a big hard disk (aka CF).
I mostly stumbled through getting a driver for the 8F working as a HSR
(high speed reader/punch) device. Never did one for OS/8. Next project.
Allison