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) |