Version 5.1.00, Build 6608
© 2026 Torsten Manz
HP-15C Simulator
For Windows, Linux and macOS

# Devices

## Overview

### DM15

The original size DM15L and the credit card sized DM-15CC/DM-15 are HP-15C clones offered by SwissMicros. They have a miniUSB/RS232 or, on newer models, a USB-C/RS232 command line interface for reading and writing data. This interface allows the HP-15C Simulator to exchange data with these devices.

This documentation does not distinguish between the DM-15CC, the DM-15 and the DM15L. They are collectively referred to as the DM15.

### HP 15C Collector's Edition

The HP 15C Collector's Edition ('HP 15C CE' for short) is the second reincarnation of the original HP-15C from HEWLETT-PACKARD, now HP Inc. after the HP 15C Limited Edition released in 2011.

The HP 15C CE has a POGO pin connector on the back that can be used with the optional Data Cable. This allows it to update the firmware, back up and restore HP 15C CE backups and to exchange data with the simulator.

### HP-15C Simulator

To enable the support for the above calculators in the Simulator, open the Preferences dialogue box. On the "Devices" tab enable the "DM15 Support" or the "HP 15C CE Support". You can also enable both. When the DM15 or the HP 15C CE support is enabled, additional menu items are available:

- the ON popup menu has additional submenus for the DM15 and the HP 15C CE
- the main menu bar has an additional menu item "Devices"

The additional menus have the following entries for the DM15 and the HP 15C CE:

Menu item | Shortcut | Description
--- | --- | ---
Read DM15 | Ctrl–↑ | Read data from a DM15 to the Simulator.
Write DM15 | Ctrl–↓ | Write data from the Simulator to a DM15.
System Info DM15 | Ctrl–I | Read the system information from a DM15.
Read HP 15C CE | Ctrl–Shift–↑ | Read data from an HP 15C CE to the Simulator.
Write HP 15C CE | Ctrl–Shift–↓ | Write data from the Simulator to an HP 15C CE.
Load HP 15C CE backup | Ctrl–Shift–↑ | Load data from an HP 15C CE backup file into the Simulator.
Save HP 15C CE backup | Ctrl–Shift–↓ | Save data from the Simulator to an HP 15C CE backup file.
HP 15C CE backup size | - | This sets the size, 96 or 192 registers, for writing an HP 15C CE backup file.

When the DM15 support or the HP 15C CE support is disabled, the respective submenus and the menu items are not present.

◀ Calculators ▲ Top

## DM15

The full description of the DM15 USB connection, the serial console and the installation of the necessary driver can be found in the SwissMicros Voyager Series User Manual.

### USB To Serial Driver Installation

To support the DM15 interface, a "CP2102 USB to UART bridge driver" must be available on your computer.

- Windows

  Download and install the Windows driver from the Silicon Labs drivers page.

- Linux

  Current Linux systems should come with the necessary cp210x kernel modules. The module may not be enabled or loaded by default. See the modprobe and lsusb man pages for more details.

- macOS

  For macOS Catalina and earlier versions, download and install the driver from the Silicon Labs drivers page.

  Since macOS Big Sur a suitable driver is already built into the system. If you experience timeout problems with this driver, use the Silicon Labs driver.

### Serial Port Configuration

Start the DM15 with C–ON (press and hold C, then press and release ON). The display will show "`SERIAL CONSOLE`". Connect the DM15 to your computer and determine the number of the "Serial Interface Port" to which the USB connection is mapped:

- Windows:

  Open the Windows Device Manager. Under "Ports (COM & LPT)" find the entry "Silicon Labs CP210x USB to UART Bridge (COM`##`)" and note the COM port number.

- Linux

  Look for a device /dev/ttyUSB*. By default, and if no other serial port is connected, the port number should be 0.

  Make sure that you are a member of the same UNIX group, usually dialout, as the tty device. Otherwise you may not be able to read from or write to the device.

- macOS

  The Silicon Labs driver creates a device /dev/cu.SLAB_USBtoUART which does not take a port number.

  The devices of the built-in driver have the form "/dev/tty.usbserial-####".

Open the Preferences dialogue box on the Simulator. On the "DM15" tab select the port number from the "Serial Interface Port" pull-down menu. This is not necessary for the macOS Silicon Labs driver.

### Verifying The Setup

To check the connection start the DM15 into the serial console and connect it to your computer. On the Simulator open the ON popup menu and select "DM15 ▶ Read" or use the shortcut Ctrl–↑. A dialogue box entitled "DM15 read" will open. Ensure that at least one of the options is ticked and click "OK". You should see the message "Data read successfully". If you see a different message, refer to the Messages section below.

### Firmwares

There are three different firmware available for the DM15. Each provides a different number of registers:

- DM15: 64 registers; like the original HP-15C
- DM15_M80: 128 registers
- DM15_M1B: 229 registers

Start the DM15 by holding down E and then pressing ON. The firmware information will be displayed as long as the ON key is held down. On the Simulator set the "Number of registers" to the number provided by the firmware of your DM15.

It is recommended that the HP-15C Simulator and the DM15 have the same number of registers. If the number of registers is different, it is likely that not all data can be exchanged between the two devices. Data transfer also depends on the memory allocation. For more details on memory allocation see "Appendix C Memory Allocation" in the HP-15C LE Owner's Handbook.

Note: You must install firmware version 9 or higher on your DM15. Earlier versions have problems with the command line interface and will not work.

### System Information

The menu item "System Info DM15" opens a new window with the following information about the DM15:

- Firmware and version

  The firmware type, with the total number of registers and the firmware version.

- Date and time

  The date and time on the DM15 in the format "YYYY-MM-DD HH:MM:SS" and the time difference, in seconds, to your computer.

  The "Synchronise" button synchronises the DM15's clock with the computer's clock. Computer clocks are (usually) synchronised with an NTP server on the Internet and are more accurate than the DM15's internal clock.

  The computer's date and time are written to the DM15 and then read back from the DM15 for validation. This can result in a time difference of 1 second, which can be ignored.

- Battery voltage and remaining power

  The current battery voltage and the estimated remaining power.

  Measuring of the voltage affects the measurement itself. Immediately consecutive measurements may give different voltages. Batteries from different manufacturers have different discharge characteristics. The remaining power is therefore only an estimate.

  This information is not available on the first batch of the credit card sized DM-15CCs.

### Data Exchange

The following section assumes that you have successfully set up DM15 support in the HP-15C Simulator. The "Ask for each operation" option should be enabled.

First load a program into the Simulator, e.g. one of the examples available for download from the Simulator homepage. Connect the DM15 to your computer and start the DM15 into the serial port console. Select "DM15 ▶ Write" from the ON popup menu or use the shortcut Ctrl–↓. The "DM15 write" dialogue box appears. Check "Program", uncheck the other options and click "OK". You should see the message "Data successfully written.".

Disconnect the DM15 from the computer and restart it or wait until the serial port console times out. Switch the DM15 to PRGM mode and press SST several times to check that the program has been successfully transferred to the DM15.

To read a program from the DM15 into the HP-15C Simulator, start the DM15 into the serial port console and connect it to your computer. Select "DM15 ▶ Read" from the ON popup menu. In the "DM15 read" dialogue box check "Program", uncheck the other options and click "OK". You should see the message "Data read successfully.".

◀ DM15 ▲ Top

## HP 15C CE

### Modes

The HP 15C CE firmware supports a standard mode with 96 registers and an (unofficial) mode with 192 registers. To switch between the two modes, follow these steps:

1. Turn off the calculator
2. Press and hold g and ENTER simultaneously
3. Press and release ON
4. The display sbows 1.L 2.C 3.H. Press 4 [sic]
5. The display shows 15 15.2  16. Press ex for mode 15 with 92 registers and yx for mode 15.2 with 196 registers

### USB HID access

The simulator requires the operating system's `libhidapi-hidraw` library to communicate with the HP 15C CE. Depending on the operating system, the library may already be available or needs to be installed:

- Windows:

  No additional installation is required; the Windows package has the `hid.dll` library included.

- Linux, Raspberry

  Install the HIDAPI library using the operating system's package manager (apt, pacman, dnf, …). If you are using a different package manager, e.g. homebrew, make sure that the library can be found.
  The actual package name varies; for example, it is `libhidapi-hidraw0` for Ubuntu derivatives and `hidapi` for homebrew.

  Note: Under Linux, unprivileged users do not have access to HID devices via the hidapi. Run the `HP-15C-CE_hid_rule.sh` script to create a specific `udev` rule that grants access to the HP 15C CE device for unprivileged users.

- macOS

  macOS does not have a built-in package manager, but you can install the library using the Homebrew package manager.

To enable the communication between the Simulator and the HP 15C CE, the device must be in HID mode:

- Turn off the calculator
- Press and hold f and ENTER simultaneously
- Press and release ON

Note 1: There is no indication in the HP 15C CE display, that the device is in HID mode. The only way to varify this, is to trigger a read or write operation from the simulator.

Note 2: For the HID mode to function properly, the battery voltage of the HP 15C CE must still be sufficiently high. If you access an HP 15C CE in HID mode and you get the message “No ‘HP 15C CE’ connected”, the battery power is probably too low. The impact of the batteries is greater when writing to an HP 15C CE than when reading from it.

### VoyagerSave

Under Windows, backup and restore operations on the HP 15C CE can also be performed using the VoyagerSave application, which saves the HP 15C CE's memory to a file or reads a file and sends it back to the device. You can download the complete VoyagerSave Instructions from the hpcalcs.com home page.

### Backup Files

The Simulator can read and write backup files in the VoyagerSave format on all supported platforms. VoyagerSave files should have the file extension "`.15CE`" or "`.HP15CE`".

When reading a backup file, the simulator automatically detects the mode in which it was written.

So that the Simulator can write a file without first reading data from an HP 15C CE, it has two built-in memory dumps. One for the 96 register mode and one for the 192 register mode. Both reflect the memory state in the respective mode after a reset, i.e. when the display shows PR ERROR .

When writing a file, the output mode, i.e. the total number of registers, must be specified. The output mode is selected from the 'HP 15C CE Output Mode' menu item in the ON popup menu and the 'Device' submenu in the main menu bar.

The following output file settings are made automatically:

- The digit separators are set as in the Simulator
- The number of storage registers is set as in the Simulator
- If the number of storage registers on the Simulator exceeds 97, the output file will be set to 97 storage registers
- Complex mode is switched on in the output file, if the Simulator is in Complex mode

◀ HP 15C CE ▲ Top

## Simulator

### Memory Configuration

The HP-15C Simulator and the calculators are all configured completely independently of each other. This applies to the total number of registers, the memory allocation and all states such as complex mode, trigonometric modes etc.

The total number of registers of the simulator can only ever be set according to one DM15 firmware or one HP 15C CE mode. In other words, only one of the five possible values, i.e. 64, 96, 128, 192 and 229, is active at any one time.

The memory allocation on the target device is not changed automatically, even if not all data can be transferred.

There are exceptions to this rule when writing an HP 15C CE backup file. On the one hand, the total number of registers is determined by the selection of the memory dump with 96 or 192 registers. Secondly, the number of storage registers is set to the same value as in the simulator.

### Differing Configurations

This section describes the results of different memory configurations on the source and target devices in detail.

- Program

  A program is transferred if the target device configuration provides at least as many registers in the common pool as the program allocates. For example, let's take the following combination: An HP-15C Simulator with 46 program registers and a DM15 with the 128 register firmware and the standard layout with 110 program registers. All programs from the Simulator can be written to the DM15, but not vice versa.

  Increasing the number of data storage registers on the DM15 to 100, key sequence 1 0 0 f DIM (i), reduces the number of registers in the common pool to 29. Now only simulator programs that allocate up to 29 registers can be written to the DM15. Even though the total number of registers on the DM15 (128) is higher than that on the Simulator (64).

- Data Storage Registers

  The data storage registers are only transferred if the target device has at least as many data storage registers as the source device. Otherwise, the error "Too many storage registers for current memory configuration. X registers available, Y required" will occur. If you get this message, check the memory configuration on both devices with g MEM and adapt them accordingly.

  Example 1: The Simulator shows 19.110 0-0 and the DM15 shows 30. 99 0-0. The 19 storage registers on the Simulator can be transferred to the first 19 of the 30 registers on the DM15 without any problem. If you try to transfer data in the opposite direction, not all 30 registers can be transferred and the message is shown.

  Example 2: The Simulator shows 19.211 0-0 and the HP 15C CE shows 94. 99 00-0. Although the total number of registers on the Simulator is 229, there are not enough storage registers to read them all into the HP 15C CE. On the other hand, all program steps on the HP 15C CE can be read into the Simulator.

  Additional data storage registers on the target device remain unchanged.

- Stack

  The real stack can always be transferred. The complex stack will only be transferred if both the source and the target device are in Complex mode. No warning or error message is shown, if the complex stack is not transferred.

  When the Simulator is in Complex mode, the backup files for the HP 15C CE are written with Complex mode on. The complex stack is transferred in that case.

- Flags

  The flags 0 to 7 are always transferred. Flag 9, display blinking, is never transferred.

  Flag 8, Complex mode, is not transferred between the Simulator and the DM15 in both direction. Flag 8 is transferred from the Simulator to the HP 15C CE, but not in the other direction.

### Reading and Writing Data

In the dialogue box that opens when you select Read or Write, you can select what data is to be exchanged between a calculator and the Simulator. Any combination of program memory, data storage registers, matrices, stack or flags can be selected. An area not selected for exchange will remain unchanged on the target device.

The settings are saved as defaults. If you do not want to be prompted for each and every read or write operation, uncheck the "Ask for each operation" option in the preferences.

◀ HP-15C Simulator ▲ Top

## Messages

This section describes the error messages that may occur during data transfer between the simulator and the devices.

### All devices

- Firmware not identified.

  When reading from the DM15 or from an HP 15C CE backup file, the Simulator could not retrieve the firmware from the data.
  A correct firmware identification is needed to detect conflicting memory configurations between the Simulator and the device.

- Unknown code '##'.

  The program to be loaded contains an unknown key code.

- Memory not initialised

  The memory from the device, DM15 or HP 15C CE, has not been fully loaded.

- Too many data storage registers for current memory configuration. n registers available, m required.

  On the source device are more registers assigned as data storage than on the target device.

- Too many matrix elements for current memory configuration. n registers available, m required.

  There are not enough free registers in the pool to transfer all matrix elements.

- Program too large for current memory configuration. n registers available, m required.

  The programs allocate more registers than are available on the target device.

### DM15

- Error while reading / writing

  An error has occurred when writing [reading] the DM15 memory.
  Please ensure that you have firmware version 9 or higher installed on your DM15. If the problem persists, please contact me.

- Error when connecting via serial port #

  This error occurs when there is no device connected to the serial port that is configured in the "Preferences".

- Connection timed out

  After a period of inactivity (~ 60 seconds) the DM15's command line interface will time-out and switch to Run mode.
  Restart the DM15 with C–ON to reactivate the command line interface.

- '/dev/ttyUSB#' was not recognised as a serial device

  On some Linux systems "`/dev/ttyUSB#`" may not be recognised as a serial device.

- Serial Port not configured. See Preferences dialogue.

  The port number for the serial port is not set in the preferences.

### HP 15C CE

- No 'HP 15C CE' connected

  No HP 15C CE is connected properly via USB or it is not in USB HID access mode. If a device is connected and in USB HID access mode, please check whether the batteries still have sufficient power. See USB HID access for more details.

- Error while opening the connection. (Permission denied)

  The most likely cause of this message is a lack of permission to write to HID devices under Linux. See USB HID access for more details.

- Error while encoding / decoding the backup file.

  An error occured while encoding/decoding the HP 15C CE memory into/from a backup file.

  This in an internal error that should not happen. If it occurs, please contact me.

- Invalid file size

  An HP 15C CE backup file has not the correct length of 2048 bytes.

- Error while reading / writing the backup file

  The correct number of 2048 bytes could not be written to a backup file or read from a backup file.

◀ Messages ▲ Top

Preferences ▶