DM1x:
- LCD font change
The rather "blocky" 7-segment LCD font has been replaced with something lighter and easier on the eye.
The [ON]+[7] sequence allows you to switch between three fonts embedded in the calculator. See https://www.swissmicros.com/instructions.php
DM41:
- CAT 5/ALMCAT scrolling slowed down
- GETKEY timeout
- X-Mem module added
Using [f] [CAT] [5] or ALMCAT to view a list of alarms currently stored in memory would result in a list scrolling by far too quickly. This has been slowed down to a speed more comparable to that of the original making it possible now to stop the listing and view details of each individual alarm.
GETKEY timeout
According to the relevant manuals, the GETKEY command is supposed to return the key code of the first key pressed or zero if no key was pressed within approximately 10 seconds. The DM41 did not wait this long and would return zero to the X register after approximately 1.3 seconds at 48MHz or 5 seconds at 12MHz. V25 corrects this by waiting for 10 seconds at both CPU clock frequencies.
X-Mem module
The HP-41CX that is emulated by the DM41 had the HP-82180A Extended Functions module built in. This X-Func module also provided 124 registers of Extended Memory. The DM41 reproduced this faithfully in firmware versions up to V24. From V25, the DM41 adds one HP-82181A X-Mem module bringing the total usable X-Mem space to 362 registers.
A NOTE ON BACKWARDS COMPATIBILITY
There are a few things to be aware of. Memory dumps from DM41 firmware V25 are not necessarily going to be backwards-compatible with earlier firmware versions. Please refer to this diagram of the HP-41C's memory map to help understand why: http://www.hpmuseum.org/prog/synth41.htm#mm
The memory of the HP-41C/CV/CX (and therefore the DM41) is organised in 56-bit words (registers) at addresses ranging from 0 to a maximum that varies according to the model and the modules plugged in. The highest address is 0x1ff (hexadecimal) for a 41CX with no X-Mem module plugged in. If you now plug a X-Mem module into a 41CX, the highest address is 0x2ef.
Now, if you look at the structure of a DM1x/41 memory dump you see something like this (this is not a real dump so don't try and load it into your DM41!):
Code: Select all
DM41
00 05857933154000 00000000000000 00000000000000 00000000000000
04 03500000000002 0000004c4f4753 00000000000000 00000000000000
08 4b050000000000 7351fffffff0ff 000000000109cb 00000000000000
0c 000000000041c7 1d9001691ce1ba 0000002c048000 00000000007fff
1c 00000000000000 00000000000000 00000000000000 43200000000032
1c0 f24f4b7eb55200 b400759773b3d3 41630000000000 00131511714150
1c4 151003a6579072 530010a66b0013 545354f44c4f47 b2a285c606f400
1c8 4150a669759773 02001315119072 10a66b00131510 131510a64b0000
A: c000f50046494c B: 0000002c0480fd C: 0000002c0480fd
S: 00101100000000
M: 00011cd5ff73cb N: 00000000000000 G: 97
There is no RAM from 0x200 onwards on a 41CX with no X-Mem module plugged in and therefore nor is there on a DM41 running firmware prior to V25. There is, however, RAM from 0x200 to 0x2ef on a 41CX with an X-Mem module and therefore also on a DM41 running firmware V25 and above, which means that you are liable to see lines in a memory dump that start with addresses in this range. For example:
Code: Select all
200 f24f4b7eb55200 b400759773b3d3 41630000000000 00131511714150
204 151003a6579072 530010a66b0013 545354f44c4f47 b2a285c606f400
208 4150a669759773 02001315119072 10a66b00131510 131510a64b0000
The consequences of doing so are, at best, going to be a "MEMORY LOST" or, at the worst, a total lockup requiring a RESET. Either way round, you won't get at the storage registers in this dump on your V24 DM41.
So, you might well be saying to yourself, "OK, if I just remove the lines starting with an address from 200 to 2ec then I'll be fine except that I won't have the contents of the X-Mem module, right?"
The answer to that is, "probably not."
Remember the Extended Memory included with the X-Func module? That's still there, living between addresses 0x40 and 0xbf. Now, bear in mind that files in Extended Memory can straddle multiple modules. For example, you can create a data file of 300 registers in Extended Memory. It will fill the X-Func module's 124 registers and spill over to the X-Mem module. In this case, the safest option for you is to remove references to all Extended Memory zones, so that's any lines with addresses in the range 40 to bc and 200 to 2ec.
The following guidelines show what to do when handling cross-version dumps.
- Loading a V24 dump into a V24 machine: No caveats, all works as expected.
- Loading a V24 dump into a V25 machine: No caveats, all works as expected.
- Loading a V25 dump into a V24 machine: Delete any lines from the dump that refer to addresses from 40 to bc and from 200 to 2ec before loading into the V24 machine.
- Loading a V25 dump into a V25 machine: No caveats, all works as expected.
The new firmware and instructions on how to update it are to be found on this page: http://www.swissmicros.com/firmware.php