Korg Poly800/EX800 Users group photo

Yahoo Groups archive

Korg Poly800/EX800 Users

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

Message

Decoding 800 Mk1 Cassette Data

2012-08-21 by bereiden

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!

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.