Flash Software for disk drives

The flash software consists of two parts: the front end which runs on the host computer (VIC-20, C64, C128, C264 series), and the actual flash code that runs in the disk drive itself (2031/154x/157x and compatibles). This makes the program easy to use and quite fast, because the data is directly loaded from disk and does not have to be loaded into the host computer's memory first. Flashing a 32kB ROM image takes about 35 seconds on a 1541 and less than 15 seconds on a 1571 in native mode.

You can read about the hardware on this page.

History

2005-01-04
The previous version contained a nasty bug that I found today when making more enhancements, so I fixed it and here is the new version for download. Sorry if this caused you any trouble.

2004-12-04
I finally finished a new version of the software! It includes several bugfixes and enhancements, you can read about all the changes in the included history file.

2003-01-29
Fixed a bug in the mirror option and added automatic 1571 detection. Support for all VIC-20 versions added.

Usage

First, you need to download the files here (includes source), and transfer the file FLASH64 to your C64. (Or if you use a different machine, use FLASH20, FLASH128 or FLASH264).

Then load and run the file FLASH64 (or e.g. FLASH20) to get the following screen:

screenshot    screenshot20

Some of the text is written in negative letters, this marks the keys you can press to control the program, or the options that are currently active. Some of the options are not self explaining, so I will do this now:

Format: BIN is the file format that is usually found on internet resources like Funet or emulator pages. In contrast to the PRG format it does not contain a two byte loading address. Use this option to adjust the program to the nature of your file.

Mirror: This option works only if the start address is $C000 or above. Use it to flash a mirror copy of a 16kB ROM to $8000-$BFFF as well, some badly written software requires this mirror copy.

Address: The start address of the drive ROM. As a general rule, use $8000 for 32kB ROM images (mostly 1570/1571, some 1541 speeders), $A000 for DolphinDOS 2.0 1541, $C000 for 16kB 1541 ROMs. If you want to use 8kB speeder ROM images, flash them to $E000, but you have to manually flash a copy of the standard $C000 ROM as well. You can find it on Funet, and the part number is 325302-01.

Bank: This option is currently untested and unsupported. It is intended to control the option ROM switches from the VIA lines that also control the bit density in register $1C00. In theory the code should work and you only have to solder two wires, but I didn't test it yet. Without the wires changing this option has no effect.

If you are a hardware hacker and want to try to add the wires, be careful to have the corresponding switches in the off position or you will cause a short circuit which will very probably kill your VIA chip!

Chiptype: The only officially supported chip is the AT29C010, all other types are untested! In theory the AT29C512 should work as well, because it uses the same page size, it just has only half the memory. The program supports the different page sizes of AT29C256, AT29C020 and AT29C040, but these have a different pinout that needs modifications to the hardware or an adaptor socket.
Important: If you got a Winbond 29C020 chip, use the AT29C010 setting in the software, NOT the AT29C020 setting.

Select File: After you set all options correctly, you can start the flashing procedure with this option. The directory entries are printed one at a time and you are asked if you want to flash this file. If you press the Y key, the flashing starts immediately! Press N to advance to the next entry or press the left arrow key to start over.

Note that before you start the flash procedure you have to enable the flashmode jumper on the hardware and also set the option ROM jumpers correctly to select the bank where you want to have the file flashed to. Don't flash the same bank that you currently run the drive ROM from, or your system will crash, and even worse: if this was your only working main ROM bank, you will need the original ROM installed in the drive to restore it.

Restart program and quit program: I think those should be self explaining.

Hints

If you prefer other options than the ones that are preselected when you start the program, just select other options, quit the program and save it to disk. The next time you start the program, it will have your preferred options selected already!

Some drive ROMs do not work correctly if the flashmode is enabled. E.g. Speeddos contains a bug that writes into the ROM area each time a parallel transfer takes place. To fix this issue temporarily, simply unplug the parallel cable for flashing. There are also restrictions with Dolphin DOS 2.0: Because it has RAM in the ROM area, only the upper 24kB of FlashROM are accessible. Don't try to flash larger ROMs, it will overwrite RAM and crash the system.

Examples

1. Flash the 1571 upgrade ROM from Funet (310654-05)
This file is in binary format and since it is 32kB, choose address $8000, format bin, mirror off.

2. Flash the 1541C upgrade ROM from Funet (251968-02)
This file is in binary format and since it is 16kB, choose address $C000, format bin, mirror on.

3. Flash Jochen Adler's Super-Jiffydos ROM for the 1541
This file is in program format and is 32kB: choose address $8000, format prg, mirror off.
You can get it here, it requires a JiffyDOS licence and usually a lot of hardware hacking. With the Flash expansion, you can do it without the hacking, but you still require the license!

4. Flash Dolphin DOS 2.0 for the 1541
The file is usually in binary format and 24kB: choose address $A000, format bin, mirror off. You also have to set the configuration switches to the correct mode, and you need a parallel cable and the corresponding C64 ROM for maximum performance.

5. Flash a generic 8kB speeder ROM
Sometimes you can find speeder ROMs on an old disk you got, therefore it is in prg format. Flash it to $E000, with mirror on. Then get the standard $C000 ROM from Funet and flash it to $C000, with mirror on, and format bin. Easy, isn't it?

6. Flash a C64 Kernal
To be able to do this, you need to have your original ROM in the disk drive, because you have to write to an empty flash chip. A C64 Kernal is 8kB, therefore 16 of them will fit into a 29C010 chip. Select one of the 16 slots by combining the option ROM switches and a start address of $8000,$A000,$C000 or $E000. Then make sure that mirror is off and you set the format according to the nature of your image file. That's all!

7. Flash a C64E or C128 KERNAL or BASIC chip
Here goes almost the same as for 5., but the image files are 16kB and therefore you can choose addresses $8000 or $C000 only. Mirror must be off.

8. Flash a C128DCR KERNAL or BASIC chip
These image files are 32kB and you can only choose $8000 for the start address. You can still put four of these in a 29C010, selectable with the option ROM switches.

Contact

If you have questions about this project,  you can mail me: please visit my contact page.