Discussion about the Korg PolySix synthesizer group photo

Yahoo Groups archive

Discussion about the Korg PolySix synthesizer

Index last updated: 2026-04-28 23:40 UTC

Message

Re: [PolySix] Re: Replacing the Key assigner MCU

2015-12-19 by Bob Grieb

Not a master of anything.   Just a guy who was around back when this was the technology to use.

I agree that it would be nice to have a drop-in replacement instead of having to add wires.   But 
the Teensy is useful for other things as well, so it's actually lucky that it works so well in a Z80 socket.
I don't think that was intended by the designers.   Actually, the power pins are placed nicely for emulating 
a 6809 (Matrix 6/1000).   The Teensy uses an Atmel AVR CPU.   Not ARM or PIC, but any of those three
would be much more powerful than a Z80.   A lot of the power comes from having the code and RAM inside,
since instructions can be wider than 8 bits, and accessed a lot faster as well, and a lower power.

Emulating a Z80 and running with the existing external code EPROM doesn't seem to accomplish much, 
it seems to me.   You would be slowed by the access to external memory chips.   Emulation is a lot more 
complicated than simply writing equivalent code.   And writing code in C would be easier than coding in assembly
as the original programmers were required to.   The newer CPUs mentioned above all have more powerful instruction 
sets than the Z80, so running in "native" mode with internal Flash and RAM would be a lot faster than emulating
the Z80 and running from slow 1980's external memory.  But using external battery-backed RAM for patches 
still makes sense, I think, although patches could also be stored in Flash or in EEPROM possibly, although most
of the SOC chips I am familiar with don't have enough EEPROM for that.

BTW, the old code for some of those 80's synths does lots of extra work to compress and decompress
 patches and to get them to fit into the available RAM.   And some other tricks were played to get things to go 
fast enough.  Someone programming using a modern CPU would not want to do some of the things they did, 
as it can make the code a lot harder to follow and understand.   With enough speed, you can code things in a 
logical, straightforward manner, (in C) and it will still be fast enough.

One idea I had was to write translation code that would map instructions from, say, a Z80 or 8049 to something 
more powerful like a PIC or AVR chip.   The mapped code could execute at maybe 10 MHz in a PIC or 16 in an AVR,
and might be fewer instructions besides, so it would run a whole lot faster.   For reference, the Z80 in a P5 runs at
2.5 MHz, and in the Six trak at 4 MHz, but every instruction takes at least 4 clocks.    A PIC or AVR can do many 
of its instructions in just one clock cycle, so there is a big speed up.   The 8048/49 is even slower than the Z80,
which explains why they needed two of them in the Poly Six.   So I guess it depends on the goal.
Some synths seem to need a speed-up, maybe others just need a bug fix or two.

Sorry if this was boring...


--------------------------------------------
On Fri, 12/18/15, grantbt@jps.net [PolySix] <PolySix@yahoogroups.com> wrote:

 Subject: [PolySix] Re: Replacing the Key assigner MCU
 To: PolySix@yahoogroups.com
 Date: Friday, December 18, 2015, 10:08 PM
 
       Bob, 
 
 You seem
 like the Z80 master. Regarding your comment about the P600
 upgrade. I think rather than have a few wires added to a
 teensy board, that someone should just make a drop in
 replacement board for the Z80 (could be otherwise the same
 or nearly so to the teensy). I don't know if it would be
 better for developers to write code from scratch for that
 CPU (is it an ARM or PIC?), or if Z80 emulation is
 possible?
 
 There are so many
 synths, especially from the US, that used Z80 The 8051 has
 nice upgraded versions with so much more speed, memory etc.
 
 
 GB
 
     
      
 
     
     
 
 
 
 #yiv4817411968 #yiv4817411968 --

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.