DM15
The credit card sized DM-15CC/DM-15 and the originl size DM15L 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.
Simulator Support
Menus
To enable the DM15 support in the Simulator, open the Preferences dialogue box. On the "DM15" tab enable "DM15 Support". When the DM15 support is enabled, the following additional menu items are available:- the ON popup menu has an additional submenu "DM15"
- the "File" menu in the main menu bar has three additional items
Menu item | Shortcut | Description |
---|---|---|
Read DM15 | Ctrl–↑ | Read data from the DM15 to the Simulator. |
Write DM15 | Ctrl–↓ | Write data from the Simulator to the DM15. |
System Info DM15 | Ctrl–I | Read the system information from the DM15. |
DM15 Firmwares
There are three types of the DM15 firmware available. 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.
Serial Port
A full description of the DM15 Serial Console and the driver installation can be found in the SwissMicros Voyager Series User Manual.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.
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-####".
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.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.
Usage
The following sections assume 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.".
Reading and Writing Other Data
In the dialogue box that opens when you select Read or Write, you can select what data is to be exchanged between the DM15 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.
Differing Configurations
The HP-15C Simulator and the DM15 can be configured independently. This applies to the number of registers available, the memory allocation and all states such as Complex mode, trigonometric modes etc. The memory allocation on the target device is never changed automatically, even if not all data can be transferred. This results in the following behaviour:
- 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
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." will occur. If you get this message, check the memory configuration on both devices with g MEM.
Example: 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.
Additional data storage registers on the target device remain unchanged.
- Stack
The real stack can always be transferred. The complex stack can be only 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.
- Flags
Only the flags 0 to 7 can be transferred. Flag 8, Complex mode, and flag 9, display blinking, are never transferred.
Messages
- 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.
- Error while writing [reading]
An error has occured 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. - Memory not initialised
The DM15 memory has not been fully loaded.
- Firmware requires ## register mode. See Preferences dialogue
The DM15 firmware provides more registers than configured in the Simulator. Open the "DM15" tab in the Preferences dialogue and select a suitable register size.
- Too many data storage registers for current memory configuration
There are more data storage registers are configured on the source device than on the target device.
- Unknown code '##'.
The program to be loaded contains an unknown key code.
- Program too large for current memory configuration
A program allocates more registers than are available on the target device.
- '/dev/ttyUSB#' was not recognised as a serial device
On some Linux systems "
/dev/ttyUSB#
" may not be recognised as a serial device.