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 comes in 2 versions. One requires the Ultimate II cartridge command interface and a 'standalone' version which does not require the Ultimate II cartridge, but offers only the core functionality.

To use, put the c128dm_u2-*.crt file on a storage device connected to your U2 cartridge, activate the U2 builtin file browser, find the .crt file, press enter and select 'copy to flash'.
Now go to the U2 setup menu (F2), C64 and cartridge settings, and set cartridge to the file you just copied to flash. 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 (_u2 version only)
  • ctrl+restore key combination to reset vdc registers and character set (_u2 version only)
  • 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 (_u2 version only)
  • Integrated versions of servant128 and basic 8 (_u2 version only)
  • Freeze/resume C128 software (_u2 version only)
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 2.00 requires firmware 3.10 or later for the UII+ cartridge.
  • Version 2.00 (standalone .bin version) can be used as an internal rom in U36.
  • 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'.
  • 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.
  • Legacy version 1.99 supports firmware versions as far back as 3.2, features will be en/disabled based on what is supported by the available firmware

Download

Version 2.00 build 31127 is now available. It requires firmware version 3.10 or later.
Version 1.99 is now available, will run on any firmware from 3.2 and up, and is required for versions > 3.9.
Legacy version 1.12 is still available for those who do not need or cannot use 1.99.

Changes

  • 2.00: split into u2 and standalone version
  • 2.00: support chaining servant128 and basic 8 function roms
  • 2.00: can run Vizastar software without needing its copy protection cartridge
  • 2.00: change to hardware type 1 subtype 2 .crt file
  • 2.00: implements the first practical C128 freezer (check files in /temp after freezing the system)
  • 2.00: extended break handler for 128 mode (which creates a snapshot of all ram in /temp)
  • 1.99: support the new C128 .crt format (hardware type 1, subtype 1) as implemented, and required by UII(+) firmware v3.10
  • 1.99: autostart a program from usb storage on startup
  • 1.99: recognize REU preloaded with GEOS128 and allow booting it
  • 1.99: no longer change device id for boot device to 8, instead allow booting from any device number.
  • 1.99: support muting UII+ 1571 and 1581 emulated drives
  • 1.99: use devid byte provided by the UII+ for udrive default id, if available (3.10)
  • 1.99: code cleanup and many bug fixes
  • 1.99: more compact and efficient io code especially in the precious de00-dfff io range
  • 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 tech notes


C64 device #8 selection for game/demo mode

Supported configurations

  • Combination with REU is supported
  • Ultimate Command Interface must be enabled (starting with version 2.00 this will be forced by the .crt file)
  • 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.