[comp.sys.apple2] GS/OS / ProDOS 8 SSC

shawn@marilyn.UUCP (Shawn P. Stanley) (05/20/90)

Ack!  I need help here.  I'm trying to help someone link their software
with my software across GS/OS and ProDOS 8.  Their application is a
ProDOS 8 application, and mine runs under ProDOS 16 and GS/OS.

The problem is that they're using a modem card that adheres to the
Super Serial Card standard, and thus as far as *I* know, there isn't a
way to turn off SSC interrupts between applications.  (Is there?)

What happens is, when an online user is exiting the ProDOS 8 application
and entering the GS/OS application (or vice-versa) and hits a key (or
line noise occurs), an unclaimed interrupt condition occurs and crashes
the system.

I grab an interrupt vector for use during SSC handling under GS/OS, and
I've tried to implement a tool which will continue to accept characters
until the ProDOS 8 application tells it to shut up and hand over control.

The problem is that during the switch from GS/OS to ProDOS 8 (and
vice-versa), the interrupt vector is reset, which means my tool no longer
has control over handling the interrupts.

Is there a vector that won't be reset, which I can use for such
interrupts?  Is there a way to turn off SSC interrupts without dropping
the online user?  An answer to either one will help greatly.  I haven't
been able to find an answer in any documentation I have, so maybe an
Apple person can help me find an answer if nobody else can.

(By the way, the only SSC interrupts I'm processing are receive-ints.)

If you reply by E-mail, note the address down below.  (I don't have the
ability to fix my domain under news yet.)
--
Shawn P. Stanley         shawn@marilyn.marilyn.mn.org
bungia!marilyn!shawn     {rosevax,crash}!orbit!marilyn!shawn

GRAY@ADMIN.HumberC.ON.CA (Kelly Gray) (06/07/90)

> Is there a vector that won't be reset, which I can use for such
> interrupts?  Is there a way to turn off SSC interrupts without dropping
> the online user?  An answer to either one will help greatly.  I haven't
> been able to find an answer in any documentation I have, so maybe an
> Apple person can help me find an answer if nobody else can.

According to the databook I have on the 6551 ACIA chip (The one used in the SSC)
the interrupts can be turned off by writing 1s into bits 1 & 3 of the Command
Register. Be careful not to change bit 0 of the command register though, since
that will change the DTR setting, and could force the modem to hang up the
phone.
 The ACIA Command register on the SSC is located at $C08A+$n0
where n is the slot number the SSC is in.
 In Assembler, the following code should do the job, assuming that the X
register has been loaded with $n0.

    LDA $C08A,X      ;read current command value
    ORA #$0A         ;set bits 1 & 3
    AND #$F0         ;optional, clear bit 2
    STA $C08A,X      ;set new value back in the command register

You may also want to make sure that bit 2 is a zero when you disable the
interrupts, since setting bits 2 and 3 high at the same time will transmit a
BREAK, possibly causing problems.

      <o_o>
           Kelly Gray (GRAY@ADMIN.HUMBERC.ON.CA)