[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: TWGS: What is AppleTalk/IRQ setting for?



Tim Haynes <timhaynes@no.spam.please.alumni.uwaterloo.ca> wrote:

> I'd like to be able to turn off the AppleTalk/IRQ setting my TWGS control
> panel.  When it's off, my GSOS bootups scream.  When it is on, my bootups
> crawl.
> 
> I do use AppleTalk... so should I leave it turned on?

Maybe.

The short version:

If you are running System 6.0.1, you should be able to turn off this
option and AppleTalk should still work properly.

If you are running an older system version, you must enable this option
if you want to use AppleTalk.

Some background theory:

The purpose of this option is presumably to allow AppleTalk to work
properly.  AppleTalk is an extremely time-critical protocol, and it uses
software delay loops to implement some of the timings.

If you have an accelerator, these software loops would run too quickly,
resulting in communiation errors, possibly preventing AppleTalk from
working at all.

I expect this option works by detecting the start of an interrupt for
the AppleTalk protocol stack, and disabling the accelerator for a fixed
time delay or until the end of the interrupt handler.  This avoid the
timing problem, but has the side effect of causing a serious performance
hit if you use AppleTalk.  (It might cause delays for other interrupts
as well, in which case it will degrade the performance of the whole
machine whether or not AppleTalk is enabled and/or there is any bus
activity.)

Digging a little deeper:

Apple originally implementing the AppleTalk protocol stack timing delay
loops by using "fast" mode and relying on the known speed of the CPU
(2.8 MHz or thereabouts).  This differs from most other software delay
loops, which operate in "slow" mode (1.023 MHz or thereabouts), such as
drivers for the 5.25" drive.

The TransWarpGS and ZipGS have settings which allow for accurate timing
in most cases by switching to normal speed whenever the CPU is set to
run in "slow" mode.

They switch to full (accelerated) speed whenever the CPU is set to run
in "fast" mode.

This means that software timing loops running in "slow" mode will work
the same with or without an accelerator, but software timing loops
running in "fast" mode will be a lot faster (and therefore inaccurate)
if you have an accelerator.

In System 6.0.1, Apple finally acknowledged this problem by modifying
the AppleTalk protocol stack so that it switched to "slow" mode for all
critical timing loops.

In principle, this means that if you are using System 6.0.1 (and I sure
hope everyone is by now!), you should be able to use AppleTalk reliably
if you have an accelerator even if you turn off the "AppleTalk/IRQ"
option.

If you are running an older system version, you will have to enable
AppleTalk/IRQ in order to use AppleTalk (or turn off the accelerator).

-- 
David Empson
dempson@actrix.gen.nz