Re: Additional SIDs

From: Rainer Buchty <>
Date: Thu, 1 Dec 2011 19:05:32 +0100 (CET)
Message-ID: <alpine.DEB.2.00.1112011827450.18713@localhost>
On Thu, 1 Dec 2011, Richard Atkinson wrote:

> What I'd really, really, really like to see attached to a C64 is an 
> Ensoniq 5503 DOC. Rainer, you probably know more about this chip than 
> anyone else on this list. It's designed for 6809 bus accesses isn't 
> it? Might be possible to add to a C64 in $DFxx or wherever with 
> minimal extra hardware.

The problem with the DOC is that it wants to be the bus master (hence 
the use of 6809E in Mirage/ESQ1/SQ80).

It takes an (8MHz, but up 10MHz is ok according to the data sheet) input 
clock and derives the remaining timing from that (1MHz E/Q clocks, 
RAS#/CAS# signals, where RAS# can be used as a 2MHz clock as it is done 
in ESQ1 and SQ80, audio channel strobing).

The playback rate is clk_in/(8*(#active_oscs+2)), so for NTSC machines 
and 32 active oscs the playback rate is 28409Hz, for PAL machines 

I don't know the C64's timing well enough to judge whether it will work 
w/o hassle to feed the VIC's dotclock (being close to 8MHz) into the DOC 
and just use a bunch of Phi2-driven 74245 to attach it to the bus. 
Presumably, Phi2 and the DOC-generated E clock need to be combined into 
a common gate signal in order to avoid bus collisions.

In worst case, of course, some mailbox-like solution should work, which 
however would make reading DOC registers somewhat more complex.

Regarding fancy sound effects, the osc-generated interrupt is 
unfortunatley quite rudimentary and rather unusable as it will always 
signal the last interrupting oscillator instead of FIFO-buffering them. 
Therefore, for fancy stuff like Wavestation-like wave sequencing, you 
need a fast processor. Judging from my Mirage running SoundProcess 
(forgetting incoming Note off messages from time to time because the DOC 
interrupt is priorized), a 1MHz 6809 is not enough.

> Imagine having a 24 bit phase accumulator and 16 bit frequency 
> registers, but instead of sending 12 bits to a DAC, having an 8 bit 
> memory access for every step and outputting the result on a DAC. Then 
> multiplex that phase accumulator up to 32 times for up to 32 channel 
> sound. That's basically what the Ensoniq DOC is. It really is the 
> spiritual successor of SID.

Of course, you also will need 128kB of sample RAM (if you go for a 
single audio channel, then up to 2MB of sample RAM, 1MB for stereo, is 
possible by abusing the channel address bits as additional wave address 

Using the C64's RAM won't work as the DOC will, like the VIC, use the 
"CPU-free" half bus cycle for its own memory accesses.

I/O-wise it requires an entire page.

I do have some spare DOCs, so if there's sufficient interest I could be 
talked into donating some for hacking purposes. Would be fun to see what 
further capabilities reside in that chip (apart from the sync bug).


       Message was sent through the cbm-hackers mailing list
Received on 2011-12-01 19:00:21

Archive generated by hypermail 2.2.0.