PSID610

Description:

PSID610 v0.1 is a program that converts SID-tunes to a CBM610 program which plays the tune on a real (or emulated) CBM610.

Windows download:

PSID610.zip

Source-code download:

PSID610.tgz

technical specs:

The tune itself is put in ram bank 2. A bank-switching routine which is put in a piece of shared memory at $0400-$07FF is used to play the tune. Because the SID-chip in the CBM610 is located at $DA00 instead of $D400 as on a C64/C128 the converter translates machine language instructions that put data in the range of $D400-$D41C to subroutine-calls that will do the same thing at $DA00-$DA1C, this translation is not smart (yet) so at that point some tunes could get corrupted. The sid-chip in the CBM610 runs on 2 Mhz instead of 1Mhz as on a C64/C128, therefor the frequencies of the sid-tune are compensated on the fly by the player. The valid ranges for a tune to be played are $0800-$FFFF. The player uses a CIA-timer to play the tune. (I haven't found the right value for the CIA clock yet, if someone knows the right value to use on a CBM610 please email me.)

Tune Limitations:

A tune will definatly not work if the tune does 1 of the following things:

- writing to address $0000 (on the CBM610 this address is used for bank-switching, changing this address might kill the player)

- writing to address $0001 (on the CBM610 this address is used for accessing ram banks, changing this address might cause no sound to be produced)

- writing to address-range $0400-$07FF (the bank-switching routine resides in this range and would be killed)

- jumping to C64 specific rom/kernal routines (since the CBM610 doesn't have the same rom/kernal and because the rom/kernal are mapped out during the playing of the tune, jumping to such a routine would cause unknown conditions, and probably wind up jamming the CPU)

- changing machine-language instructions inside the range that the tune uses (it might cause unknown conditions or no sound to be played)