The 1541 Ultimate II+ is a floppy drive emulator and utility cartridge for the Commodore 64. It can however also be used with the Commodore 128 and 128D(CR) but with some limitations and precautions. This article documents some of those limitations and some things you should pay attention to when using this setup.
This article is based on the version 3.3 firmware for the Ultimate II+ cartridge. Older firmware may have unresolvable timing issues with the 128D especially. The limitations mentioned are not specific to the system I use, they are inherent limitations to the current firmware, or to all Commodore systems with internal floppy drives due to how some custom disk loaders work. The oddities and configuration comments are based on my own test hardware, and may work out slightly differently on other systems, especially the regular Commodore 128.
Briefly testing with the 3.4 firmware suggests the below comments are still accurate, I'll update them as I gain experience with the 3.4 firmware.
There is one limitation which applies to all C128 models, in C64 + cartridge settings, the alternate kernal setting does not work properly. It is possible to get a C64 kernal to boot, but it will not work reliably and 128 mode will not be available.
For the 128D and DCR, the internal 1571 drive can pose a problem for some software when running that software from a virtual 1541 drive. This is actually a limitation of certain custom loaders used by many demos and some modern games. The same issue exists with other 64 compatible machines with internal floppy drives such as the SX.
There are some ways to address this, one is to install a disable switch for the internal 1571, but that can be a somewhat nasty mod, and many people do not want to make holes in the case of their machine for installing such a switch. Alternatively, there are some ways to temporary disable the drive by means of software.
For the 128 DCR specifically, if you want to use the optional tape interface, you will need a longer cable for it due to the location of the tape connector on this system.
The 128 D(CR) will fail to properly boot in 128 mode inmediately after power on when any of the virtual 1541 drives or the software IEC devices of the 1541 Ultimate II+ are enabled. Pressing the reset button on the cartridge will solve this. Directly booting to 64 mode (either by means of a virtual cartridge, or by holding the C= key at power on, will also solve this.
Some discussion with Gideon and checking the firmware of various Commodore drives strongly points at the 1541 reset code being the root cause of this. When the system tries to use a drive, it will signal the drive to get its attention. If this happens while a 1541 is executing its reset code, the drive will respond by holding the data line true, but will forget about doing this, and fail to handle the request. This in turn causes the system to wait forever for the drive to respond. The 1571 and presumably the 1570 have fixes for this, and will pickup the request and handle it once done with their reset function.
More in detail, at the start of the reset code, the 1541 configures the port responsible for the iec interface, making it respond to the ATN line becoming true by raising an interupt and holding DATA true. This interupt is responsible for (among other things) handling communications on the IEC bus, but it never gets handled, and after reset finishes, the drive fails to respond, leaving the bus in a stuck state while system will keep waiting for DATA to become false, so it requires a reset or runstop+restore.
A little trivia, on older CBM drives, there were 2 CPUs, one of which was responsible for communications, and this 'multiplexing' of tasks wasn't needed, it is more a kind of hack to make a cheaper drive with a single cpu possible. As I no longer own any of the 2 cpu drives, I do not know if those have the same bug (actually, a little testing and checking the rom for the sfd-1001 shows they don't have this bug), but all single cpu drives before the 157x models seem to have this bug.
So this is actually caused by a bug in the original 1541 roms, and is also present in all 1541 related jiffydos roms. It can be reproduced on a c64 with 1541 by sending an UJ command to the drive, and trying to use it inmediately after that, or turning it on and inmediately trying to use it. It is however especially noticeable with a 128 because the timing at power on is such that 128 mode autoboot will try to check for a boot record before the emulated 1541 is done with its reset routine.
Sean Noble pointed out this does not happen with the 1541 C (verified on firmware 3.4 on PAL and NTSC hardware, regular 128 and 128D, and in theory should be ok for 3.3 firmware as well)
The Commodore 128 device manager rom introduces a little delay at boot to prevent this timing issue completely.
Another oddity specific for 128D/DCR models is the behavior of the integrated reset button. While the reset button on the cartridge behaves as expected, the one on the system itself will prevent the use of
C64 virtual cartridges, and generally seems to change the reset sequence enough to potentially cause other issues. Use the reset button on the cartridge to prevent this.
Yet another odditiy, if you have a feature rom installed in U36, you may also want to enable the 'C128 option rom' as cartridge type in the C64 and cartridge config menu (unverified)
Configuration can require a bit of experimenting with the timing settings of the Ultimate II+
The most important setting to check is the 'Address valid after phi2' setting in the C64 + cartridge settings menu. In general, 80 is a good starting point for this value, but especially 128DCR models may require setting it a bit higher, ie 96 or 128. There seem to be 2 indicators of not having a proper value for this setting:
- When set too high, C64 cartridges and 128 external feature roms will fail to start properly. Additionally, some demos (like Edge of Disgrace by Booze design) will fail.
- When set too low, C64 cartridges and 128 external feature roms will suffer from instability, as will many demos and games.
Other notesMany features also work in native 128 mode, including:
- Ram expansion unit
- UDOS command interface and networking
- audio interface
- virtual 1541 drives and software IEC
- C128 external function rom
Those are the more important limitations and oddities to keep in mind, I'm sure I forgot some minor oddities, and there being oddities I am not aware of yet, please comment below if you know of any.
When keeping the above limitations and notes in mind, the combination works very well, and adds significant features to your 128, also for 128 mode, and I hope you will enjoy this setup as much as I do.
Test system details
C128 DCR, German version.
- 8580 SID
- German KERNAL replaced with international JiffyDOS kernal v6.01, hardware switchable to international CBM kernal.
- External switch for JiffyDOS selection (128 only, internal drive always uses JiffyDOS rom)
- Optional fan installed
- Heatsinks for CPU, 6526s, SID, MMU and RAM. Modern cooling paste for VIC IIe and VDC with standard shielding/heatsink in place.
- Except for new kernal roms for system and drive, all original factory installed parts
System is reliably VSP safe in 64 mode, but has intermittent VSP instability in 128 mode for code located in ram bank 1. It runs all 64 demos I have tried (which is the large majority of the more popular demos from the last 10 years) from its internal 1571 drive without issues when not having a 1541 Ultimate II+ installed, and also runs all of those from its internal drive with the U2+ installed, when observing the configuration notes above. It runs most demos from a D64 image from a virtual 1541 drive, but I found a few demos which fail to properly talk to the virtual drive due to the internal 1571 still being on the bus eventho it was muted with either of the mentioned software methods. Currently I know of 2 such demos:
- Artillary by Shape (absolutely wonderful demo and runs fine from internal drive)
- Dutch Breeze by Black Mail (a landmark demo, and aged very well, also runs fine from internal drive)