[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Test: the cycle
On Fri, 17 Feb 2012, ict@ccess wrote:
My Apple IIGS technical reference manual does not even list $C036
Check the Hardware Reference, page twenty-something IIRC.
but even if all these bits are used on startup as you say, then they
can be preserved since they don't have any immediate effect on any
hardware, other than possibly the shadow bit. �But I notice that
shadowing does not take effect until something is stored in shadowed
memory, but turning of shadowing of any screen, text or graphics, ,
then immediately back on should not show any effects on the screen. To
preserve the $C036 register without using the accumulator, you can do
it this way
CLC
ASL C036
ROR C036
Missed a CLC
should be
CLC
ASL C036
CLC
ROR C036
So, yes this works
Type in this program and you can hear the difference
300:A2 10 20 20 03 CA D0 FA A0 00 88 D0 FD 18 0E 36
310:C0 18 6E 36 C0 A2 10 20 20 03 CA D0 FA 60 00 00
320:A9 20 85 A4 A9 02 20 A8 FC 8D 30 C0 A9 24 20 A8
330:FC 8D 30 C0 C6 A4 D0 EC 60 D0 EC 60 00 00 00 00
Nothing else is affected and probably only works on a real IIGS
The problems here are:
- eventual write on reserved bit (don't know what value it is)
- eventual write on global shadow enable bit (should be 0)
If we assume that all floppy disks are off, shuffling their enable values
for a bit isn't a problem.
For the two problematic bits, trouble might arise if CDA is entered at
this time or an interrupt occurs. Global enabling of shadowing will make
each page (not just $00 and $01) thrash something in $E0/$E1.
Disabling interrupts (which I think also disables CDA?) should prevent
this. I guess Michael's case is his PWM, so interrupts are disabled. I
just want to stress upon the risks of this technique for general use.
As to the reserved bit - no idea what the ASIC does with it. I wouldn't
change it myself.