Device manager startup screen.
A device manager rom for your Commodore 128 (D)

If you are using a Commodore 128 together with an Ultimate II cartridge, you probably encountered some oddities for 128 mode, and for 128 D users, you probably found the internal drive gets in the way at times. The Commodore 128 device manager rom addresses those issues, and provides some nice extra features exclusively for your Commodore 128.

This rom supports the Ultimate II cartridge command interface, and some features are not available if the command interface is not enabled, or no Ultimate II is installed.

To use, put the .bin file on a storage device connected to your U2 cartridge, activate the U2 builtin file browser, find the .bin file, press enter and select 'use as cartridge'.
Now go to the U2 setup menu (F2), C64 and cartridge settings, and set cartridge to 'Custom 128 external rom'. Leave the setup menu, and power cycle your 128 (or press F5 while in the U2 file browser, and select 'reboot C64'.

Features:

  • mute or change id of conflicting drives
  • very fast access to usb storage (firmware 3.9 and later)
  • work around irq/keyscan bug in jiffydos
  • ctrl+restore key combination to reset vdc registers and character set
  • game/demo mode for those demos and games that do not like more than one device on the iec bus.
  • system information, system test and 17xx reu test
  • Syncs clock to the time of day clock of the UII
With exception of the advanced options and game/demo mode device selection menus, all menus will time out after approx 3 seconds, you can use the space bar to cancel this timeout. You can also press space to pause the startup screen.

Why is this usefull?

Let's assume a Commodore 128D with built-in 1571, and an UII+ with drive a enabled. Both devices are set to ID 8.
This would cause a device id conflict, but when using the device manager, this will be detected, and you can decide on how it resolves this.
This means you can select which drive will actually be at id 8 at each boot, and can optionally disable the conflicting drive, or move it to an alternative id.
Video demonstrating selecting a device to use for id 8

When you power on or reset your c128, and just let the device manager do its thing, it will detect conflicts between uII drives and physical drives, and will default to changing the device id of the physical drive. Before doing so, it will give you a few seconds to select an alternative action (press space to cancel the timeout). So lets say you want to run some software from UII drive a, and want to have your 1571 available for reading/writing physical floppy disks (lets say.. to run a copy program). You'd use either option 1 or option 3 (default) from the conflict resolution menu, depending on which of the 2 drives you want to be drive 8.

Game/Demo mode

Many demos and games only want to run with one single device enabled. To run those, use game/demo mode. It will let you select which of the available drives to use, and will try to mute all other drives. If it can't mute the drive, it will ask you to disable it or power it off. It will also check for printers.
Video demonstrating the use of game/demo mode to start a C64 demo.

All this works without having to change ID switches, modify your 128D to add drive enable and ID switches etc.

Notes:

  • Version 1.12 will run on older firmware versions for the UII and UII+ cartridges, but for using all supported functionality, you need firmware 3.9 or later for the UII+ cartridge.
  • While version 1.12 will work on the older Ultimate II cartridge, the ultimate drive (fast filesystem access) is currently not supported on this device. While this device is end of life, this will likely be addressed with a future firmware update.
  • Firmware versions as far back as 3.2 will be detected, and features will be en/disabled based on what is supported by the available firmware
  • Some features cannot be enabled when the ultimate audio interface is enabled, this will be detected automatically.
  • Version 1.12 can be used as an internal rom in U36, but cannot support fast access to usb filesystems or the jiffydos irq fix. Those functions are only supported when using the C128 external rom functionality of a UII(+) cartridge for running the rom (also auto detected)
  • Muting of drives is only supported on 154x, 157x and 1581 drives. Drives like the sd2iec, mIEC etc do not support this functionality.
  • Changing device IDs is not supported currently for UII software IEC devices, and any device reported as 'unknown'.
  • This rom can coexist with well behaved function roms, for example, you can have this rom in the external socket, and servant128 in the internal socket.
  • If the system hangs while probing the IEC bus, you have a conflict between 2 physical devices, or between a physical device and software IEC. This cannot be detected automatically.
  • while it is possible to select a 15xx which is not at id 8 as boot device, this does not work properly. This has no effect for 64 mode, but will cause the drive to reset to its original id in 128 mode. A solution for this will be provided in a future update

Download

version 1.12 is now available, will run on any firmware from 3.2 and up, and is required for versions > 3.7.
Legacy version 1.11 is still available for those who do not need or cannot use 1.12.

Changes

  • 1.12: revamp layout of code, make everything that doesn't need kernal directly run from $e000+. Add support for UII+ rom mirroring in io space, add i/o handler for supporting future UII+ fast filesystem access, add detection of jiffydos and work around a bug in its screen blanking
  • 1.11: VDC detection and test, 2 MHZ support, detect incorrect phi2 settings (UII/UII+), improved memory test, color ram test, early detection of stack and zeropage errors
  • 1.10: remove C128 diag rom and replace it with new system and reu tests. New 1581 mute support, and some minor refinements to sysinfo and bootmanager menus.
  • 1.09: do not destroy reu data when autostarting c64 disk, update diagnostics to rev 789010JB
  • 1.08: autostart disks in 64 mode, add advanced options menu, system info, C128 diagnostics and game/demo mode.
  • 1.07: fix key debouncing between menus, some timing and display fixes
  • 1.06: make menu timeouts more consistent, allow using space bar to stop menu timeouts
  • 1.05: make startup screen more informative, move boot manager to before switching to basic 7 or 64 mode.
  • 1.04: improved error checking, improved handling of unknown devices.
  • 1.03-MIEC: recognize mIEC devices and send proper command for changing their device id.
  • 1.03: better handle unknown drives, cosmetic fixes
  • 1.02: enable go64 feature
  • 1.01: add bootmanager
  • 1.00: rewrite of user interface, fix startup bug with non DCR machines

How does this work?

Read the documentation and tech notes


C64 device #8 selection for game/demo mode

Supported configurations

  • Combination with REU is supported
  • Ultimate Command Interface must be enabled
  • ACIA/Swiftlink is supported but only at $de00 (nmi/irq does not matter)
  • Enabling the Ultimate audio interface will disable the io and nmi handlers due to lack of space in the $df00 area
  • Conflict detection is supported only between UII drive a/b and physical drives, conflicts between physical drives or between a physical drive and the UII software IEC drive is not detected and cannot be resolved
  • The fast usb filesystem access (udrive) will be configured at the same ID as software IEC if that is enabled, or at the first free device ID if software IEC is disabled. You can change the detice ID for this with poke 673,x where x is the desired device ID. This ID does not have to be free, but the underlying drive will not be accessible. This lets you configure the udrive id as 8 for software that insists running from drive 8
  • When software IEC is enabled, the udrive id overlaps with it by default. This is a feature, and makes sure that software that overwrites the io vectors will just disable the high speed filesystem access, but the same files will be available at the same device ID still, just falling back to regular IEC bus speed.
  • Credits

    Gideon Zweijtzer for creating the 1541 Ultimate cartridges.
    Scott Hutter for the firmware change that enables drive management on the UII cartridges.
    Krill for coming up with this approach for muting 154x/157x devices.
    Everyone who helped testing and debugging.