Skip to content

Archive

Category: Commodore
    A friend of mine, Hedning/Genesis Project, sent me pictures of a 1541-clone that neither of us recognized and we asked around if anyone knew the name of the drive. Moloch contacted us with pictures and said it is known in the US by the name “Commander II”. It might been stripped of the labels when imported to Euro-Land and sold as a different product. The Commander II was reviewed in Ahoy issue 16, 1985 (pages. 28-38).

     

    Update:
    2020-10: Added scan of the manual, thanks to Steve Stroebel !
    2016-07: Hedning was generous and gave me one of his drives, thanks a lot! I added a few more pictures of the drive.
    2016-04: Thanks to Moloch we now have a name for this previously unknown clone. It was sold in the US by the name “Commander II”.

     

     


     

    The LEDs might been replaced with green/red since some traces were broken. I also removed a home-made deviceswitch due to its bad construction.

     

    The +5V is connected to the large area on this side of the PCB.

     

    The mech is a Chinon F-051.

     

     

    +5V/+12V PSU.

     


     

    Pictures by Hedning

     

     

     


    Serialports are located on the side of the drive.

     


    “Diskett” was a local Commodore computer shop/service center located in Malmö, southern sweden.
    The second drive, with serial 841633, does not have this sticker.

     

     

     

    1541clone_hp64_7

     


     

    Pictures by Moloch

     

     

     

     

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.

 
Alignment
Occasionally I get questions about alignment and aligning the drive. There are some differences of opinion how to align a diskdrive, my personal view, and how I do it, is to use a special analogue disk and a dual trace oscilloscope. The analogue disk is a factory produced disk and has patterns written on specific tracks. An analogue alignment disk can not be duplicated.

1541 Diagnostic Cartridge Alignment Check. This program was distributed with a computer magazine and gives a quick drive alignment health instead of hooking up an oscilloscope. The program was completely disassembled, compacted (code and texts) and disk routines rewritten to share I/O routines just to fit onto the cart with the other tools.

The Alignment check program can (I, however, do not recommend doing it this way) be used to adjust the alignment but it will only be as accurate as the drive, or system, the disk was written with.

The two first columns should be identical, otherwise the alignment is off by a whole track(or more), most often this indicates an incorrectly positioned head stop. The third column indicates how well the drive can read data off each track, its alignment, and should be 100%, or atleast very close to. Fourth column is between tracks (or half tracks), this value can fluctuate a bit even on a well aligned drive. The 1541 allows for some tolerance and therefore some values can be within reasonable limits.

It is very seldom when you actually need to align a drive for proper functionality. If the drive works in daily usage and does not make noise or do continious re-reads or searches it is probably ok. If a drive fails to read disks, begin with cleaning the head and lubricate the rails. If this does not help, the R/W head might be damaged, quite often seen on the Mitsumi D500 mechanism. You can verify it by measuring the R/W head using an ohm-meter. Remember that a slightly misaligned drive is probably able to format and read its own formatted disk.

Most important, if it works, don’t fix it 😉

Recommended reading : Commodore Diskette Diagnostic Manual Version 2 (3140451-01) and Commodore 1541 Troubleshooting & Repair Guide (SAMS)

 

 
Update 2020.09: C64iSTANBUL designed a PCB, You can find it on pcbway 🙂
Update 2019.12: A few words about alignment.
Update 2019.12: TFW8B is selling their version of the cartridge.
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.

 

 

1541 Diagnostic PCB by C64iSTANBUL. Looking great, thanks ! 🙂

 

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 about the commodore diagnostics reporting errors when using custom kernals. I decided to modify the kernal detection routine to identify good known kernals from a checksum table. Thanks to Jonny Hylander, Fredric QJ Blåholtz and Krister Andersson for ideas and suggestions.

586220+ : Initial version. Disassembly and kernel identification routines by www.worldofjani.com.

586220+ v0.4 : Marty/Radwar sent a huge list of kernal checksums. This version 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.

586220++ v0.5 SX-64 Tape Port check removal : KiWi at www.SX-64.de sent me a version which works correctly on the SX-64. Scroll down for the download and sourcecode. See his page here.

586220++ v0.5 Expanded window for paddle test by Sven Arke. Klick here.

586220* Proper chip number display for SX-64 and C-64 by Ted Saari. Readme.

See Diagnostic Carts and Manuals for information about the harness for this ROM.

2020-06 : giox sent me an updated standalone program which identifies 137 kernals. There is an ID clash (which can be expected at some point) for 901246-01(4064 Kernal) and Armageddon.

 

Sourcecode for diag586220+ and original disassembly of the 586220 diagnostic. Compare these two files to see how the implementation was made.
Diag586220+ v0.4 by Marty / Radwar. It identifies 49 different kernals.
Standalone ROM Checksum program with diag586220+ v0.4 tables
Standalone ROM Checksum program for 137 kernals, thanks to giox for the work!
Diag586220++ v0.5 by KiWi / www.SX-64.de
Diag586220++ v0.5 Paddle Update 08/2017
Diag586220* Proper chip number display for SX-64 and C-64 by Ted Saari 07/2018
Sourcecode for Diag586220*

 


 

Background.

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 due to $FF00-$FF04 belong to the MMU.

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.

 

The new checksum code.

Checksums for BASIC and CHAR are also displayed.

 

 

Information on how to build a VU-Sette.

Read more about the “VU-Sette” here: http://blog.worldofjani.com/?p=1127

 

The following articles/documentation have been used as information for this project:
64er 1985/10 p.xx (http://www.64er-online.de/download/1985/index.html)
Svenska Hemdator Nytt 1990-05 p.34 (http://www.selda.se/sub/hemdatornytt/1990_05/)
C2N/1530/1531 Service Manual Preliminary 314002-002 (1984 Oct).

 

 

The VU-Meter


The VU-Meter was pulled out from a “Precision Batterychecker mini” from ebay 😉

 

 

Prototype

An azimuth tape and Winter Games original was used for inspecting the signal.

 


…and more testing.

 

 

Circuit diagram for the VU-Sette.

I made a sketch with the information i had gathered. Connection points for “green” and “purple” can be found at the bottom of this page.

Component list:
IC1: LF356
R1 : 10 KOhm
C1 : 470uF
R2 : 62 Ohm 0,5W
Q1 : 2N3904
Speaker: 8 Ohm 0,5W

You might need to adjust the values to match the make and model of your VU-Meter/speaker. The speaker and the VU-Meter are independent of eachother. Either one can be left out if wanted.

 

Potentiometer R1 is for zero-adjusting the VU-Meter. The tape read-head signal and R1 must be adjusted to match. When the signal peaks, you want the VU-Meter be at the max position. You can use an original game, or a tape recorded with correct adjustment, to find the peak. Note that not all originals have a “good” recording signal to prevent duplicating.

The initial adjustment can be a bit tricky, but when it is done, you will only need to adjust the tape read-head when loading a tape.

I can think of some cases where you want to adjust the sensitivity further; for very bad/old tapes, or that the reference tape had a signal that was “too good” and you need to bring the level down a bit.

 

 


A Veroboard was used for the first build. I also needed to know much room there is inside the datasette for the pcb and VU-Meter. This version does not have the speaker.

 

 

PCB Layout


I ordered a few PCBs to test the concept. In retrospect, I would rather use solderpads for the speaker and for the VU-Meter. The VU-Meter would probably be able to hold the weight of the PCB and wouldn’t need any further mounting. The extra potentiometer snuck into the upper left corner can probably be left out, I wasn’t sure if there was a need for extra adjustment of the VU-Meter.

 

 

 

Assembly


A 22 mm hole for the VU-Meter was drilled 6 mm inwards from the junction.

 

 

Parts for the VU-Meter. The rightmost VU-Meter is from another batterytester i found on ebay. Both work with the VU-Sette, but the leftmost is easier to fit into the datasette.

 

 


VU-Meter with everything cluttered into the bottom left corner. 🙂

 

 


Fully assembled.

 

 

 


 

Finding the signal
The read-signal is amplified and filtered four times before leaving the datasette. Therefor the signal strength will be different depending on which stage you choose to tap the signal from. VU-Sette has been successfully implemented with the PCBs and connection points below. You might need to do some testing to find out which output stage is most suitable for your equipment. YMMW.

 

Datasette with one OP.Amp (PCB: 1530, 1531, NP-136H):


1530

1531

NP-136H

 

 

Datasette with one OP.Amp (PCB: CMR-001):


CMR-001

 

 

Datasette with two OP.Amps (PCB NP-090B):


NP-090B

 

 


 

 

 

 

The C128 Cartridge functionality is different than in the C64. Maximum size has been doubled to 32K and an EPROM socket (U36) has been provided inside the machine in addition to the cartridge port.

An external cartridge is referred as “External(Function ROM)” and the internal EPROM socket is referred as “Internal(Function ROM)”. This will focus on how to create an external cartridge.

A 8-bit machine can only “see” 64K at a time, and the same goes for the C128.

There are two areas in the C128 memory where cartridges can be located; the MID ($8000-$BFFF) and HIGH ($C000-FFFF). A cartridge can be started up in either these 16K areas or single 32K cartridge can be used. It is possible to have both an internal “cartridge” and an external cartridge installed, but the external has preference over the internal.

C128 memory is managed by a chip called the Memory Management Unit(MMU) and does not use the PLA(GAME/EXROM lines) like the C64.

MMU is controlled by its primary registers at $D500- and its secondary registers at $FF00-. The secondary registers are available to make it possible to switch out the I/O area at $D000-DFFF and still be able to access the MMU. This creates a memory “hole” at $FF00-$FF04 which can not be used for code.

Note that both cartridge areas (MID and HIGH) are always switched in together. If you set up a 16K cartridge in MID area and want to access Kernal routines, you will need to bank in Kernal at the HIGH space.

 

Cartridge Autostart
When a C128 is booted, a cartridge presence is checked. First it checks if GAME or EXROM lines are low. If this is the case, a C64 mode cartridge is connected and the machine starts in C64 mode. Otherwise the C128 memory is checked for an identifier(“CBM”) string at $8007 and $c007, this is done both for the external and internal slots. The banks are checked in the following order: External Mid, External High, Internal Mid and Internal High.

 

Code at $E27A- is used to verify if a cartridge is inserted:

 
 

16K Cartridge code example at $8000(MID) with Kernal ROM banked in.

 
Test the code above with WinVICE:

 


C128 16K Cartridge $8000-$BFFF (MID)
 

 
You can add another 27128 and connect RH to /OE on that chip to get 32K.

 

I have two Action Replay 6 clones, one i got from an auction and it had a german ROM and the other is a polish clone called “Atrax 7.3”. Both are probably Atrax clones from the beginning… I have successfully run stock AR6 ROMs in both of these.

Update: Added two more pictures on the other one

 

 
 


 

 

 

 

I was making backups of old turbo-tapes to disk and noticed that the quality was very poor on some tapes. I have a LOAD-IT datasette with a signal meter. Problem with it was, that I could turn the knob (head alignment) 45 degrees and still have same two(lousy) bars on the meter. There was a need for something more accurate when adjusting the alignment to get the best signal while reading the tapes.

 

My solution was to implement an analogue VU-Meter to show the signal strength and a possibility to listen in on the signal to determine if its data or other information(music).
 
Update 2015-04
Information on how to build a VU-Sette : http://blog.worldofjani.com/?p=1477
 

 

vu-sette1
Down right, a 22 mm hole is drilled for the (obvious) VU-Meter.

 

vu-sette2
The VU-meter itself is from a batterytester, hence the text 🙂

 


In action

 

FinalTAP Result
A quick comparison with FinalTAP on two .tap images. Left tape has been read with “VU-Sette” and right tape with LOAD-IT. I tried several reads with LOAD-IT but the result was pretty much the same. There is nothing wrong with LOAD-IT, as long as you got a good signal on the recorded media.

In my case, “VU-Sette” allowed me to adjust the head more precisely and get out a (much)better read of the tape. For you who are not familiar with FinalTAP, its a tool for examining, cleaning and restoring digitized data cassette tapes (TAP files) for the Commodore 64 computer.

 

 

 


The first version of c128d had the same motherboard as the c128. The later c128dcr (cost reduced) had a different motherboard.

Pictures of c128 and c128d (not dcr) for comparsion.

c128mobo

c128dmobo