Archive of the former Yahoo!Groups mailing list: Korg Poly800/EX800 Users

previous by date index next by date
  topic list next in topic

Subject: Decoding 800 Mk1 Cassette Data

From: "bereiden" <bereiden@...>
Date: 2012-08-21

Hi All,

I'm a new member here, having recently received a Poly 800 from a friend ∗for free∗! I am trying to create a C program to interface with the cassette interface in order to perform backups and dumps to a laptop.

What I have been able to determine thus far is that the data is encoded using a 1/2 wave of either 700 ('0') or 1550 Hz ('1'). '0' bits are approximately twice as long as '1' bits when encoded, like so:

| 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
___ ___ ___ _______ ___ ___
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
|___| |_______| |_______| |_______| |___| |

The output data (to the cassette) is filtered through a highpass filter so that bit changes are immediate. The input data (from the cassette) is passed through a low pass filter and a hard limiter before being sent to the SID pin of the uP. This leads me to believe that the Korg decodes the data using the time between zero crossings.

I have been able to successfully decode and verify the sequence and patch data, but need some help with the meaning of some of the other bytes.

byte 1: 0xB3 (I assume this is header info)
byte 2: 0xBF
byte 3: 0x00
bytes 4-259: Sequence data
bytes 260-290: ???
bytes 291-1634: Patch data
byte 1635: ???
byte 1636: Checksum (unsigned sum of bytes 4 through 1635)

Does anyone have any insight into what bytes 260-290 and byte 1635 might be? The factory cassette data is:

( 260): 00000000 (0x00)
( 261): 10110001 (0xB1)
( 262): 00000000 (0x00)
( 263): 00001001 (0x09)
( 264): 00000000 (0x00)
( 265): 00001011 (0x0B)
( 266): 00000000 (0x00)
( 267): 00000011 (0x03)
( 268): 00000010 (0x02)
( 269): 00000001 (0x01)
( 270): 00000000 (0x00)
( 271): 11111111 (0xFF)
( 272): 11111111 (0xFF)
( 273): 11111111 (0xFF)
( 274): 11111111 (0xFF)
( 275): 11111111 (0xFF)
( 276): 11111111 (0xFF)
( 277): 11111111 (0xFF)
( 278): 11111111 (0xFF)
( 279): 11111111 (0xFF)
( 280): 11111111 (0xFF)
( 281): 11111111 (0xFF)
( 282): 11111111 (0xFF)
( 283): 11111111 (0xFF)
( 284): 11111111 (0xFF)
( 285): 11111111 (0xFF)
( 286): 11111111 (0xFF)
( 287): 11111111 (0xFF)
( 288): 11111111 (0xFF)
( 289): 11111111 (0xFF)
( 290): 11111111 (0xFF)

(1635): 01011011 (0x5B)

Thanks!