Note: this is a very rough outline, which I intend to rewrite (or maybe not.) It may contain errors or be entirely unreadable. But I hope it is useful to anyone. I certainly could not find anything about this topic anywhere else.
Recently my interest in the CBM64 computer has been revived by a small project I undertook to save my CBM floppy disks. One way of doing this, I figured, would be to display the contents of the disks on the commodore screen, and then capture the output on a PC. The benefit of doing it this way is that no special hardware is needed. (Apart perhaps from a video capture card.)
First, I generated a special character set on the C64 that allowed me to display bit patterns directly on the screen.
The binary representation of the number 37 is
00100101
You can represent this in an 8x8 character cell as follows:
00000000 00000000 11111111 00000000 00000000 11111111 00000000 11111111
Similarly, every 8-bit number can be represented by an 8x8 cell in the manner described above. The benefit of doing it this way is that you get a bit of slack in the horizontal direction when capturing. Fortunately the c64 allows 256 user-defined characters per screen, which is just enough to display all possible 8-bit numbers.
Now, all I had to do was:
The protocol used is very simple. A disk block contains 256 bytes. These bytes are placed at the top of the screen. At positions 256 and 257 I write the track and sector number. For example, the contents of track 18, sector 0 would be displayed as:
By capturing 25 frames per second one can achieve a theoretical transfer rate of 25000 bytes per seconds, which is 0.2Mbit/s. Of course the 1541 is a huge slowing factor.
Michiel Boland
9 October 2004