From: toddpw@cco.caltech.edu (Todd P. Whitesel)
Subject: Re: System Bad: C000005 (anyone know?)
Organization: California Institute of Technology, Pasadena
Date: Mon, 14 Sep 1992 04:13:04 GMT

irsman@iastate.edu (Ian Schmidt) writes:

>This is becuase the Transwarp doesn't actually speed things up ;-)  (notice
>that NTGS's effective processor speed gauge shows TWGS's as 2.6 mhz, while
>Zips register at much more reasonable values...Todd Whitesel could probably
>explain exactly why this is so). 

Well, not exactly, but it's not really necessary in this case. The way most
accelerators deal with CPU speed dependent code (like Disk ][ access, system 5
appletalk timeout loops, //e-style sound output, and self-tests) is by trying
to detect when the program is doing something speed dependent and temporarily
drop back to normal speed so the program doesn't notice anything wrong. This is
a time-honored technique that dates back to the days of the original SpeeDemon
card (I may be wrong, but it's the oldest one I can think of). The original
TransWarp card from AE also used this technique and nobody has abandoned it yet
since it is simple and works well.

How it works: the accelerator has special logic on it that checks to see if the
CPU tries to access a hardware location (like $C030 for //e 1-bit sound, or
$C070 for the paddle/joystick input) and when it does, it flips a little timer
that causes the accelerator to slow down until the timer runs out -- if one of
those locations is accessed again before it runs out, then the timer is reset
again, so the accelerator will be off until a full timer period after the last
access. The TWGS has a lot of these hardwired into the card, and you can't turn
them off -- there is the AppleTalk/IRQ option but I am not sure exactly what
all that does, whether it uses a timer or if it just disables the accelerator
anytime interrupts are being processed (bleck).

The Zip offers a rather nice range of options in this area: Joystick, Speaker,
Horizontal Video Counter ($C02F), and IRQ (AppleTalk Delay) can all be set
independently to start 5 millisecond timers, and each of the slots can be set
to start 50 millisecond timers. The Zip's controller ASIC will insist that any
slot the IIgs recognizes as containing a Disk ][ card be set, but you can set
the other slots yourself.

My guess is that the TWGS has a timer start whenever the sound chip is accessed
and I know the Zip does not. That explains why the Zip documentation tells you
that test C will always fail if you have the Zip enabled.

What REALLY annoys me is people who tell somebody "just remove the Zip and put
the old CPU back in and try the self-test again". That is totally unnecessary,
and I've seen people saying it on Genie twice already in the past week. All you
have to do is use the Zip control software or the Zippy P8 program (neat app,
BTW) to "disable" the accelerator and then try the self test. When you are
done, "enable" the accelerator the same way and keep going. You do not have to
turn the computer off, and if you have the ZipINIT installed then it may take
care of enabling the accelator for you when you reboot after the self test.

If the Zip is disabled and the self-test still fails, then you have a real
problem and ONLY THEN you should physically remove the Zip and try it again.

Todd Whitesel
toddpw @ cco.caltech.edu