[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.