Interesting. This is a prototype and has some programmable logic on it that's probably a different from the final release.
Please pardon my naivete, but what is all this for, exactly?
Ahhhh, that makes sense!I'm trying to document Apple Sound Chip behavior on every 68k Mac. The main purpose is to help improve sound support in 68k Mac emulators.
I was super curious if your prototype's EASC chip would behave any differently, but honestly I think it's the same. I'm guessing that it's occasionally normal for that second interrupt to happen. Thanks again for testing that!
I am not surprised. This one was used by an Apple developer for a few years after it was made. The board on this one dates to about 6 months before the release, but the firmware is flashed to Terror F1 from July 1991 which is, from what I can tell, identical to the release version.
Here's a few pics of the logic board. There are some changes to the silk screen on the release, and programmable chips on this one have other info printed on them.
Is there any manual that describes ASC/EASC registers? Everything I got so far is a commented assembly for the startup bong located in the Cordyceps ROM that reveals merely sound register names. Their layout can be partially guessed from the comments.Interesting. On the Q630/LC580 (and the Q800 and Q605 generations) the startup bong is normal and System 7.1 acts completely normally, but 7.5.3+ force the 16-bit path, and the intended behavior there doesn't completely make sense yet. There's also usage of a couple of registers in the EASC range that don't exist on a real EASC.
Is there any manual that describes ASC/EASC registers? Everything I got so far is a commented assembly for the startup bong located in the Cordyceps ROM that reveals merely sound register names. Their layout can be partially guessed from the comments.
Many thanks!There are ERSes for ASC and EASC but they're much less helpful than you'd think, which is why ASCTester is necessary. Prior to the test program most of what I knew about them was from staring at IDA Pro.
0x800 - chip version: 0xB0 - Batman, 0xBB - Wombat, 0xBC - Sonora, 0xE0 - Elsie0x802 - chip control, not chip overflow0x803 - FIFO control0x804 - FIFO interrupt control: cleared on reads, sets interrupts on writes0x806 - Volume control: bits 7-5 set sound volume, bits 3-1 must be writable for 16-bit sound playback0xF00 - write pointer A is a 16-bit register0xF02 - read pointer A is a 16-bit register0xF04 - src time increment A is a 16-bit register0xF06 - scale factor A is written as a 16-bit register0xF08 - FIFO control A: bit 7 controls sample rate conversion, bits 0-1 determine compression kind (0 - no compression, 1- CDXA 2:1, 2 - CDXA 4:1)0xF09 - interrupt control A: bit 0 masks sound interrupts for channel A0xF20 - write pointer B is a 16-bit register0xF22 - read pointer B is a 16-bit register0xF24 - src time increment B is a 16-bit register0xF26 - scale factor B is written as a 16-bit register0xF28 - FIFO control B: bit 7 controls sample rate conversion, bits 0-1 determine compression kind (0 - no compression, 1- CDXA 2:1, 2 - CDXA 4:1)0xF29 - interrupt control A: bit 0 masks sound interrupts for channel B0xF2E that will be read in a loop in the boot beep code. That loop finishes when 0x2C is read from this register.# ---------------------------------------------------------------------------# Extended sound HW identification.# ---------------------------------------------------------------------------fn_FFF04EA4: lisori r4, 0x50F14000 # load ASC base address li r6, 0 # initial return value lbz r5, 0x800(r4) # read ascVersion register cmpwi r5, 0xBB # is it Batman? bne l_FFF04EE4 # return 0 if it isn't li r6, 2 # assume return value of 2 (?) lbz r5, 0x806(r4) # save current value for ascVolControl li r7, 0xEE # stb r7, 0x806(r4) # write test value 0xEE to ascVolControl eieio # lbz r7, 0x806(r4) # read back ascVolControl cmpwi r7, 0xEE # does 0xEE stick? bne l_FFF04EE0 # return 2 if it doesn't li r6, 3 # otherwise, return 3l_FFF04EE0: stb r5, 0x806(r4) # restore previous value for ascVolControll_FFF04EE4: blr # return result0x1000 - extended sound FIFO A0x1800 - extended sound FIFO B