The credit card size DM-15CC/DM-15 and the original size DM-15L are HP-15C clones offered by SwissMicros. They feature a miniUSB-RS232 command line interface for reading and writing data. Via this interface the HP-15C simulator can exchange data with these devices.
This documentation does not distinguish between the DM-15CC, the DM-15 and the DM-15L. They are all called DM-15.
If you order a DM-15 because of my simulator please mention that in your order at SwissMicros. For "How did you find us?" select "firstname.lastname@example.org".
An illustrated walkthrough of the setup procedure for Windows can be found here.
USB To Serial Driver InstallationBefore the DM-15 interface can be used, a CP2102 USB to UART bridge driver must be installed on your computer. Drivers for various operating systems can be downloaded here. Recent Linux systems should come with the necessary cp210x kernel modules. The module may not be actived or loaded by default. See the modprobe and lsusb man pages for more details.
Simulator DM-15 SupportTo enable the DM-15 support on the simulator open the Preferences dialogue box and activate "DM-15 Support" on the "DM-15" tab. With enabled DM-15 support
- the ON pop-up menu has an additional sub-menu "DM-15" with the two entries "Read" and "Write".
- the "File" menu in the main menu bar has two additional entries "Read DM-15" and "Write DM-15".
Serial Port ConfigurationStart the DM-15 with C–ON (Press and hold C, then press and release ON). The display will read "
SERIAL CONSOLE". Connect the DM-15 to your computer and determine the "Serial Interface Port" number the USB connection is mapped to:
Open the Windows Device Manager. In "Ports (COM & LPT)" find the entry "Silicon Labs CP210x USB to UART Bridge (COM
##)" and note the port number.
Look for a device /dev/ttyUSB*. By default, and if no other serial interface 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.
- Mac OS X
The device /dev/cu.SLAB_USBtoUART does not take a port number.
FirmwareThere are three types of DM-15 firmwares. Each provides a different number of registers:
- Standard: 64 registers
- MEM80 or M80: 128 registers
- MEM1B or M1B: 229 registers
Start the DM-15 with E–ON. The firmware information is displayed as long as you hold the ON key. Select the "Number of registers" that complies with the firmware of your DM-15.
It is recommended to have the same number of registers on the HP-15C simulator and the DM-15. If the number of registers differs, it is likely that not all data can be exchanged between the two devices. The data transfer also depends on the allocation of memory. For more details on allocation of memory see "Appendix C Memory Allocation" in the HP-15C LE Owner's Handbook.
The setup is completed. You should now be able to exchange data between the DM-15 and the HP-15C simulator.
Verifying The SetupTo verify the connection start the DM-15 into the serial console and connect it to your computers. On the simulator open the ON pop-up menu and select "DM-15 ▶ Read" or use the shortcut Ctrl–↑. A dialogue window titled "DM-15 read" opens. Ensure that a least one of the four options is checked and click "OK". You should get a message "Data read successfully.". If you get another message, see the Messages section below.
The following sections assume that you have set up the DM-15 support in the HP-15C simulator successfully. The option "Ask for each operation" should be off.
Writing And Reading A DM-15 Program
At first, load a program, e.g. one of the examples that came with the simulator, into the simulator. Then start the DM-15 into the serial interface and connect it to your computer. From the ON pop-up menu select "DM-15 ▶ Write" or use the shortcut Ctrl–↓. In the dialogue window titled "DM-15 write" check "Program", uncheck the other options and click "OK". You should get a message "Data written successfully.".
Disconnect the DM-15 from your computer and then restart it or wait until the serial interfaces has timed out. Switch the DM-15 to Program mode and press SST several times to double check that the program has been transferred successfully to the DM-15.
To read a program from the DM-15 to the HP-15C simulator start the DM-15 into the serial interface and connect it to your computer. From the ON pop-up menu select "DM-15 ▶ Read". In the dialogue window titled "DM-15 read" check "Program", uncheck the other options and click "OK". You should get a message "Data read successfully.".
Reading and Writing Other Data
In the dialogue window that opens when you select to read or write you can choose which data will be exchanged between the DM-15 and the simulator. You can choose any combination of program memory, data storage registers, stack or flags. An area not selected for exchange remains unchanged on the target device.
The settings will be stored as default. If you do not want to be asked on every read or write operation, uncheck the option "Ask for each operation" under preferences.
Differing ConfigurationsThe HP-15C simulator and the DM-15 can be configured independently. This applies to the number of available registers, the allocation of memory and all states like Complex mode, trigonometric modes etc. The allocation of memory on the target device is never changed automatically, even if not all data can be transferred. This leads to the following behaviour:
A program is transferred if the target device configuration provides at least as many registers in the common pool as the program allocates. Let us assume a HP-15C simulator with 46 program registers and a DM-15C with the 128 register firmware and the standard layout with 110 program registers. All programs from the simulator can be written to the DM-15, but not the other way round.
Increasing the number of data storage registers on the DM-15 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 allocating up to 29 registers can be written to the DM-15. Although the total number of registers on the DM-15 (128) is higher than that on the simulator (64).
- Data Storage
The data storage registers are transferred only 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." occurs. If you see this message, check the memory configuration on both devices with g MEM.
For example, the Simulator shows "19.110 0-0" and the DM-15 shows "30. 99 0-0". The 19 storage registers on the Simulator can be transfered to the first 19 of the 30 registers on the DM-15 without any problems. If you try to transfer data in the opposite direction, not all 30 register can be transfered and the message is shown.
Additional data storage registers on the target device remain unchanged.
The real stack can always be transferred. The complex stack can be transferred only 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.
Only the flags 0 through 7 can be transferred. Flag 8, Complex mode, and flag 9, display blinking, are never transferred.
- Error when connecting via serial port #
This error occurs when no device is connected to the serial port interface configured under 'Preferences'.
- Connection timed out
After some time of inactivity (~ 60 seconds) the command line interface on the DM-15 times out and switches to Run mode. Restart the DM-15 with C–ON to reactivate the command line interface.
- Error while writing [reading]
An error occured while writing [reading] the DM-15 memory.
Please ensure that you have installed firmware version 9 or higher on your DM-15. If the problem persists, please contact me.
- Memory not initialised
The DM-15 memory was not completely loaded.
- Firmware requires ## register mode. See Preferences dialogue box
The DM-15 firmware provides more registers than configured in the simulator. Open the 'DM-15' tab in the Preferences dialogue box and select a suitable register size.
- Too many data storage registers for current memory configuration
On the source device are more data storage registers configured 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#' might not be recognized as a serial device.