Skip to content

Archive

Tag: Commodore

The Final Chesscard by TASC was released in 1989 for the Commodore 64/128 and PC. The C64/C128 version plugs into the Expansion(cartridge) slot and the PC version comes with an ISA Card.

The Chesscard forms a stand-alone computer with 32K of ROM, 8K of RAM and an extra CPU running at 5 Mhz. Program software was delivered on disk for the PC and the C64 software is loaded from an additional 32K ROM on the C64/128 cartridge.

 

The Final Chesscard C64/C128

Unfortunately my Chesscard only displayed a black screen with white stripes, so I began to investigate it.

The C64/C128 Chesscard has two 32K ROMs which I dumped with an eprom reader. One ROM with software for the external CPU and the other has software for the C64. This also revealed my Chesscard was in the german language.

The C64-ROM consists of two banks, both 16K at $8000-$bfff. The bank is selected by setting $DE00 to $40 or $41. The Chess-ROM is 32K at $8000-$ffff and boots independently with reset vectors pointing to $FF22.

I needed a way to test the ROMs. The same company was involved in making the “Final Cartridge III” which has 16K sized banks and uses $DE00 for bank swapping. I created a TFC3-type cartridge ROM for emulators(.crt) and wedged in code to set $DE00 accordingly. The Final Chesscard now started up in the Vice emulator, displaying a black screen with white stripes.

Now it became much easier to debug. After examining the code, I could see the “black screen with stripes” was waiting for the extra CPU to acknowledge it was running (possibly these two communicate with each other using zeropages $04-$0e). I removed the checks and had the Chesscard running graphically, the chess engine itself was of course not working.


The Final Chesscard in Vice (Working partially without the extra hardware support)

 

I eventually figured out the extra CPU did not start up properly. I took out my desolder gun and removed the CPU. It was tested OK on another equipment. After desoldering the crystal I noticed that one of the legs was broken, and while at it, I decided to clean up the whole PCB for documentation purposes. You will find scans and pictures of the PCB below.

 

Component list:
74LS04
74LS30
74LS32 x 2
74LS74
74LS174
74LS374 x 2
SRAM = 8Kx8 TC5565/MCM6064
CPU = G65SC02P-4
ROM1/ROM2 = 27256 Eprom
D1-D6 = Diode 1N4148
ZD1 = Zener diode 2V7
C1-C2 = Tantalum 1uF 35V
C3-C6 = Ceramic 0.1uF
C7-C9 = Ceramic 1.0nF
C10 = Ceramic 0.56nF
X1 = Crystal 5Mhz
Resistor 2.2 KOhm x2
Resistor 680 Ohm x2
Resistor 330 Ohm
Reset button

 

Everything back in place and all IC:s socketed.
 


Final mount. The Final Chesscard is now fully functional with english language.

 
ROM Downloads:
There are two language options for the Chesscard; english and german. The language is hardcoded on the ROM. The english ROM has been quite hard to get hold of(until now). There are demo-versions out of both, which are easy to find, but they are not compatible with the ROM version.

With information from studying the code, I managed to make a C64 tool to extract the ROM and thanks to Ratuv at Lemon64, who kindly run the tool on his english Chesscard, there is now an english ROM available for download.

 
 

Here are scans of my Commodore Service Bulletins by RCA Service Company.

 

 

 

 

GEORAM is a 512K memory expansion unit made by Berkeley Softworks for use with GEOS. It can also be used for other programs, but is not compatible with Commodore REU. There are several programs that support GEORAM though, for example Maniac Mansion GOLD.

The Shareware PLUS Commodore 64 & 128 Blog has redesigned the GEORAM to fit inside a standard cartridge case and it does not require a heavy duty powersupply like the Commodore REU would. You can find the new GEORAM at The Shareware PLUS Commodore 64 & 128 Blog

 
 


The new GEORAM comes with a box and a manual.

 
 


Just for comparison. The original geoRAM to the left is very bulky and the PCB had to be exposed so it would fit into the C128D. I was always afraid to break something by mistake when handling the geoRAM. The new design is much better.

 
 


Contents of the original geoRAM and the new GEORAM.

 
 

Spectacular Copy Turbo to Disk, SCT2D, has become a widely used tool for preserving turbo tapes. It was originally part of the “Spectacular Copy” suite by Stephan Senz. “Turbo to disk” was extracted and has undergone many improvements on the way.

Latest addon to the tool is a Fast I/O save routine for 1541-family drives.

You can find the tool at CSDB, http://csdb.dk/release/?id=144377

 
SDT2D Changelog:

v1.2 by SAILOR of TRIAD
* Fastsave I/O for 1541 drives.

v1.1 by WACKEE of ARISE:
* Automatic replacing of invalid chars (,*?) before save [option].
* Accurate block size calculation.
* Proper handling of 0-byte files.
* Fixed resave on diskerror.
* Rename without space-fill.
* Tapeload with sound.
* Changed default settings.

v1.0 by SAILOR of TRIAD:
* Asks for disk change if file is larger than free blocks on disk.
* Resave option on diskerror.
* Option to rename file.
* Can use other devices than #8.
* Autotransfer mode option.
* Load error detection.

 

 


Xiny6581 has made a speed comparsion between SCT2D v1.1 and v1.2. Make sure to read his excellent tutorial on preserving tapes at http://sidpreservation.6581.org/how-to-preserve-tapes/.
 

 

d2d64_3

I needed a program to transfer C64 disks to .d64 images with a good overview of the process, but more importantly, it had to be fast and with minimial interaction to be used for reading disks in large batches. I ended up making a modified version of Nibread which i decided to call d2d64 so it would not be mixed up with the original Nibread. Nibread is part of the Nibtools utilities by Pete Rittwage at the C64 Preservation Project (http://c64preservation.com/).

d2d64 should not be used for preserving originals, it is only for making backups of your unprotected disks.

 
d2d64 has a new UI with a progressbar and colors to indicate status. It saves the disk as a .d64, defaults to 35 tracks, uses errorinfo if appliciable and will not reset/bump between reads. It also has an option for creating filenames based on the A/B-side of a disk. All you need to do is press Enter between the disksides.
 


I made a video on youtube that shows the process of transferring a disk. The whole video is 41 seconds, including initializing drive, turning disk and reading two disksides. Reading one diskside takes about 15-18 seconds. Hardware is a 1571 with serial cable (-s: SRQ) and a Zoomfloppy. OS is Windows 10.

 

There are two versions of d2d64 available. First one is based on nibtools (with SRQ support) for xum1541/Zoomfloppy users. This is probably the one you want. The second one is an older version based on mnib(predecessor to nibtools) and should be used with XMP/XAP1541 cables(LPT-connected drives). You can scroll down to the “Short history” part of this post for a brief explanation on the hardware differences. The older version I made between 2007-2010 when Zoomfloppy was not available. I decided to include it here in case some of you (like me) still have their XA/XM1541 systems running.
 

Download:


 

If you want to preserve your originals, visit these links below:
Kryoflux: http://www.kryoflux.com/
nibtools: http://c64preservation.com/nibtools

 

Short history
The Commodore drives communicate with serial communication through a DIN-6 plug cable between the drive and computer. For faster speeds, a parallel cable evolved allowing 8-bits to travel in parallel. The drive parallelcable was not a previous standard, but a cable soldered directly to the second VIA-chip on the drive and then connected to the C64 Userport.
 

The 15×1 drives don’t have a standard communication port and therefor you need a special cable to hook the drive to a PC. Early software even transferred files and images through the V.24/RS232-serial protocol.
 

Later on(1992-) came the X1541-cables which provided multiple options to connect your drive to the PC. The drive was connected to the PC through the LPT-parallelport which required exact timing to work. There were incompatibilities with some motherboards which were circumvented by different versions of the 1541-cable. The drive parallelcable was also available for the X1541 cables and added a “P” to the name.

Even later came OpenCBM, based on CBM4Linux, making it possible to communicate with drives under Windows NT/2K/XP with XA/XM1541 cables.

You can read everything about the X1541-cables at Joe Forsters homepage: here
 


My x1541 breakout box from the early days. This connected to the LPT-parallelport on a PC and disk transfering was done in DOS. Old PC-hardware did not work properly with all x1541-cables so i needed a device for testing combinations and different low level components.
 


XMP1541 in the making…
 

USB to the rescue
The LPT-Parallelport became more and more obsolete when the PC hardware evolved. Lots of tinkering with timings and settings was also required to get it working.
 
Till Harbaum worked on an USB adapter called xu1541 until he lost interest in 2007. Nate Lawson, with Wolfgang Moser and Spiro Trikaliotis, continued the project and developed it even further. In early 2009 the xum1541(pronounced “zoom”) was introduced, a full speed USB device with support for parallel transfers. Best known xum1541 implementation is the Zoomfloppy. Today OpenCBM also supports the xum1541.

 
Read more on the following links:
xum1541: http://www.root.org/~nate/c64/xum1541/
Zoomfloppy: http://www.go4retro.com/products/zoomfloppy/

 


 

A collection of disk covers that I have acquired during the years, also known as “Cover Art”. Use arrow keys or mouse scrollwheel to navigate though the covers and press enter or klick on the picture for a larger version.

Most of these covers are photocopies and some of them have had a rough life in the snailmail process. Addresses have been removed due to privacy reasons.

Thanks to Tech for a huge amount of covers.

 

2015-10: Added 183 covers.
2016-02: Added 3 covers by Microboy

 


 

 


 

FD-148 is a third party floppydrive for the Commodore 64.

 

 


 

 


Remove the screws marked with red and lift the cover.
 


You need to loosen 4 screws to remove the shielding and additional 3 screws to release the PCB.
 


Detach the white connectors and lift the main PCB. There is a ribbon cable beneath the PCB which also needs to be detached. The back plate can now be removed.
 


Remove the 3 screws marked in the picture. There are spacers below that PCB which you need to take care of.
 


Spacers marked with red.
Two voltage regulators(7805/7812) are fastened to the black heatsink to the right.

 


Flip the drive around and remove the 4 screws.
The drive mech is now loose, lift the plastic casing.
 


 


 


 


 

I have repaired a fair amount of drives, and every time I find myself loading a test or a diagnostic software from disk. This is a bit of a contradiction since the drive being tested, or repaired, might not even be able to load a program. I also have a variety of tools for different purposes and wanted to have everything in one place.

 

This is why i created a 1541 Diagnostic Cartridge.


 

The challenge was to get all these tools to fit into a 8K cart. I wanted to keep the hardware simple and a 16K cart would have overwritten the Basic interpreter.

Therefor I have optimized both code and visual on the tools to keep the size down. Some tools are old, others were written from scratch and a few I rewrote in machine code instead of basic. A couple of the tools are still in Basic, but optimized.

The cartridge is an 8K ROM at $8000-$9FFF

You can also use RESTORE to return to the menu.

You may need to send a “I0:” or turn the drive off/on before running further tests if an previous error has occurred.

 

 
Update 2017.09: The Cartridge is also available at the Protovision shop.
 
Update 2015.12: Upon request from their customers, The Shareware PLUS Commodore 64 & 128 Blog asked me if they could offer the 1541 diagnostic cartridge in their product sortiment. The 1541 Diagnostic Cartridge is now available in their eBay shop.

 

 

I had a broken 1571 on which I located the problem to the powersupply.

The PSU is relatively easy to refurbish with new caps and so forth, but I wanted to try out a switching powersupply i had.

The new powersupply is a MeanWell PT-65A and is rated 5VDC/7A and 12VDC/3,2A. It also has a -5VDC/0.7A output which was not used. This specific model was on a €4 sale at a electronics distributor and the current ratings were good, hence the selection.

 

WARNING! LETHAL VOLTAGES ARE PRESENT ON THE POWERSUPPLY.

 

 


1571 with original powersupply.

 

 


Mounting plate.

 


Testmount.

 


A very tight fit, I had to make a cut on the left side.
The PCB is mounted on spacers and the cables were crimped.

 

Finished assembly.

 

 

 

 

 

 

This post spawned out of a discussion at a facebook group http://www.facebook.com/groups/retrodatorer/. Thanks to Jonny Hylander, Fredric QJ Blåholtz and Krister Andersson for ideas and suggestions.

Update 2016-07-20 : Thanks to Marty/Radwar for sending me a huge list of different kernal checksums. The diag586220+ v0.4 is able to identify a staggering 49 different kernals, for example Professional Dos, RapiDos, DolphinDos and Speeddos. Download the v0.4 sourcecode for a full list.

Update 2016-11 : KiWi at www.SX-64.de sent me a version that now works correctly on the SX-64. Scroll down for the download and sourcecode. See his page here.

Update 2017-04 : Added a standalone ROM Checksum program with diag586220+ v0.5 tables.

 


 

The diagnostic 586220 does a checksum on the kernal ROM to verify if it is ok. It will only identify the original CBM ROMs. All other (even good, for example JiffyDos) kernals will be marked as “BAD”.

The 586220 was used since i have done an reassembly/disassembly of it earlier.

Code to calculate the checksum.

Depending on $FF80(Kernel revision) the checksum is either $E0 or $E1. This determines if Kernal is marked as “OK” or “BAD” by the diagnostic test.

I remembered that the C128 diagnostic cart displays the checksum. When running the C128 diagnostic(789010) the checksum on the C64 Kernal is reported as $D4. After investigating the code, which is identical to the one above except for the fact that only $1F00 of memory is checked. This is probably a mistake since the kernal is 8K ($2000 bytes).

We shared ideas about how this would be accomplished, but also noticed that some of the different kernals generated the same checksum. This might be deliberate for them to pass a diagnostic test.

 

All code below is compatible with 64tass (i.e. Turbo Assembler compatible).

The new checksum routine. To make a distinction, the address lowbyte is xor:ed and therefor not resulting in an identical checksum.

 

 

…I made a program that can identify the kernal ROM.

 

A table is used for the checksum and a pointer(.word) to the matching ROM name. You can easily add new checksums and ROMs to the code.

 

 


 

Incorporate the checksum with Diagnostic 586220
 
The goal is to replace the original checksum routine with the code above.

As we can see in the disassembly, the routine for ROM tests are at $890E. Further investigations reveal that code between $890E and $8A44 can be replaced. This area also has the routines to check BASIC and CHARACTER ROM.

 

Checksum routine is located a few lines below $8926.

After inserting the code, you can now assemble(compile) the code with c64tass. I won’t go into details about the code itself, but it is presented and downloadable further down on the page.

 

The output file (.o64) can now be written to an eprom. Skip the two first bytes (0x00, 0x80) which is the loadingadress of the file.
 

You can also test the cart in vice by converting it to a crt. Cartconv.exe is included with the Vice emulator.

 

586220-
586220+ diagnostic, it is now possible to identify the kernal ROM.

 

 

Download package with the sourcecode for diag586220+ and original disassembly of the 586220 diagnostic. Compare these two files to see how the implementation was made.

 

Download package for diag586220+ v0.4 by Marty / Radwar. It identifies 49 different kernals.

 

Download package for diag586220+ v0.5 by KiWi / www.SX-64.de. Fixes an issue with SX-64.

 

Standalone ROM Checksum program with diag586220+ v0.5 tables

 


 

The new checksum code.

Checksums for BASIC and CHAR are also displayed.