Saturday, 25 October 2014

Commodore 128 Repair - Part 3 Testing

This is the third part in the Commodore 128 repair. Initially, the whole system was dead, but now, the power supply has been fixed. After that. some keys were not working, which was resolved when the keyboard was refurbished. The mainboard has been cleaned and checked over, and there doesn't seem to be anything wrong with it.
Nice to start off with a working board for a change. One of the things the C128 offers is 'full' C64 compatibility, so I tested it with the Commodore 64 Diagnostic Cartridge and Test Harness.
This shows an error on the user port, even after swaping over the two 6526 PIA chips the error stays on the user port. I also tried two known working chips with the same results.
I've seen this problem on a couple of Commodore 64's as well, I think it may just be an issue with the test algorithm or the loopback, but I've seen it pass on enough machines to know it is wired up correctly and the PIA chips do work.
I've cleaned the contacts and checked for loopback continuity. I think I'll build something with LED's on and a simple BASIC test program to be sure.
This is only testing the lower 64K of memory, all that is visible in Commodore 64 mode. There are Commodore 128 Diagnostics, but I haven't had much success with those. I've found three versions, all 8K cartridge images, so I programmed the latest one in the same way as I had for the other carts, onto an MCM68766 EPROM.
No luck. I tried again with a different EPROM. Still nothing, so I tried the other two versions, and also with a 2764 EPROM in an adapter. I even tried a new C64 cart which takes 2764 EPROMS. All did the same. With the jumpers set for normal mode, I get the C64 screen, with them set for ultimax mode, I get a blank screen?
When it did load up to the C64 BASIC screen (the C128 goes into C64 mdoe when it detects a cartridge), it showed less available memory. 30719 bytes free, rather than the normal 38911 (slightly more than 8K difference).The reduction in memory seemed to imply it's address space was reserved, so I tried executing the code at 0x8000, using 'SYS 32768', I also tried 'SYS 32778', which should have been the start of the code.
That sort of worked, but not particularly well. All the external tests failed? I'll come back to this at a later date.
So there is the Commodore 128. Time to give it a bit of a run through and try out all the modes.