Firmware V25 for DM1x/DM41(L) units

Firmware updates will be announced in this forum. The forum is marked as read-only, so if you have a problem with a new version then please report it in either the "DM1x/DM41 Usage tips, tricks and questions" forum or if you think it is a bug, then in the "DM1x/DM41 Bug reports" forum.
grsbanks
Posts: 1122
Joined: Tue Apr 25, 2017 11:23 am
Location: Preston, Lancs, UK
Contact:

Firmware V25 for DM1x/DM41(L) units

Post by grsbanks »

Firmware V25 has been released for DM1x and DM41 units.

DM1x:
  • LCD font change
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
Alarm catalog

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
The first line is the model, which is checked in order to ensure that you don't try and load a dump from one type of machine into another. The final three lines are representations of the emulated Nut CPU's internal registers. The rest is a dump of the emulated machine's RAM organised in lines of four registers with the address of the first register on the left.

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
DO NOT ATTEMPT TO LOAD SUCH A DUMP AS IS INTO A DM41 RUNNING FIRMWARE V24 OR EARLIER

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.
In other words, if you want to be able to handle any dump version, you should upgrade to firmware V25!


The new firmware and instructions on how to update it are to be found on this page: http://www.swissmicros.com/firmware.php
There are only 10 kinds of people in the world: those who understand binary and those who do not.
Boub65
Posts: 231
Joined: Tue Sep 12, 2017 4:34 pm
Location: Rabat, Morocco

Re: Firmware V25 for DM1x/DM41(L) units

Post by Boub65 »

Hi,
this release is really great and upgrading went smoothly on my DM15L and DM41L.

The X-Mem module is really a surprise!

But... as you might expect it brings some new questions : why did you only add one (1) X-Mem module?
- max available memory, or
- you are keeping space for future ROM loading ability ( :D :D :D )

Thanks again SM...
Last edited by Boub65 on Fri Jan 19, 2018 5:55 pm, edited 1 time in total.
Sincèrement, Sincerely, 73,
Boubker

DM15L, DM41L, DM42 #00855 (domes upgraded), DM41X #00707
HP48SX (with dark screen), HP42s, HP32SII (1990 with fraction bug), HP41C/CV
TI-89 titanium, CASIO fx-cg50 and Numworks (to play with micropython)
toml_12953
Posts: 795
Joined: Wed May 03, 2017 7:46 pm
Location: Malone, NY USA

Re: Firmware V25 for DM1x/DM41(L) units

Post by toml_12953 »

Boub65 wrote:
Fri Jan 19, 2018 5:33 pm
Hi,
this release is really great and upgrading went smoothly on my DM15L and DM41L.

The X-Rom module is really a surprise!

But... as you might expect it brings some new questions : why did you only add one (1) X-Mem module?
It's because Xavier had enough. Oh wait. You said, "X-Mem". Sorry, my bad. :lol:
Tom L

Some people call me inept but I'm as ept as anybody!
DM10L SN: 059/100
DM41X SN: 00023 (Beta)
DM41X SN: 00506 (Shipping)
DM42 SN: 00025 (Beta)
DM42 SN: 00221 (Shipping)
WP43 SN: 00025 (Prototype)
Boub65
Posts: 231
Joined: Tue Sep 12, 2017 4:34 pm
Location: Rabat, Morocco

Re: Firmware V25 for DM1x/DM41(L) units

Post by Boub65 »

Isn't the DM41L an HP mutant with exceptional powers?
Sincèrement, Sincerely, 73,
Boubker

DM15L, DM41L, DM42 #00855 (domes upgraded), DM41X #00707
HP48SX (with dark screen), HP42s, HP32SII (1990 with fraction bug), HP41C/CV
TI-89 titanium, CASIO fx-cg50 and Numworks (to play with micropython)
grsbanks
Posts: 1122
Joined: Tue Apr 25, 2017 11:23 am
Location: Preston, Lancs, UK
Contact:

Re: Firmware V25 for DM1x/DM41(L) units

Post by grsbanks »

Boub65 wrote:
Fri Jan 19, 2018 5:33 pm
Hi,
But... as you might expect it brings some new questions : why did you only add one (1) X-Mem module?
- max available memory, or
- you are keeping space for future ROM loading ability ( :D :D :D )
Available memory.

As you may know, the DM41 is basically an emulator running the original HP ROM very slightly patched for some key assignments. The LPC1115 chip used (see https://www.nxp.com/docs/en/data-sheet/LPC111X.pdf) has 8KB of SRAM on board, some of which is of course allocated to the virtual machine for it to use as its own RAM. With the additional X-Mem module stuffed in there, the final accessible register address in the virtual 41CX's address space is 0x2ef, and given that each register is 7 bytes in size, that's already a chunk of over 5KB allocated. The emulator obviously needs a fair amount of working space for itself including a stack to work with. With this in place, there's a 1400-byte stack available to the LPC1115, about 500 bytes of which are in use most of the time. So, memory is getting tight! A second X-Mem module would mean allocating another 1680 bytes to the emulated machine and we just don't have that memory available.

What you do have with the DM41 is an HP-41CX on steroids running much faster than the original and with the extra X-Mem module built in. What you sadly don't get is the expandability with an HP-IL interface, card reader etc. but you do, however, get the connectivity with a host computer to retrieve memory dumps and update the firmware.
There are only 10 kinds of people in the world: those who understand binary and those who do not.
Boub65
Posts: 231
Joined: Tue Sep 12, 2017 4:34 pm
Location: Rabat, Morocco

Re: Firmware V25 for DM1x/DM41(L) units

Post by Boub65 »

Great info you are giving here @grsbanks. Thanks.
Sincèrement, Sincerely, 73,
Boubker

DM15L, DM41L, DM42 #00855 (domes upgraded), DM41X #00707
HP48SX (with dark screen), HP42s, HP32SII (1990 with fraction bug), HP41C/CV
TI-89 titanium, CASIO fx-cg50 and Numworks (to play with micropython)
toml_12953
Posts: 795
Joined: Wed May 03, 2017 7:46 pm
Location: Malone, NY USA

Re: Firmware V25 for DM1x/DM41(L) units

Post by toml_12953 »

grsbanks wrote:
Sat Jan 20, 2018 11:21 am
What you do have with the DM41 is an HP-41CX on steroids running much faster than the original and with the extra X-Mem module built in. What you sadly don't get is the expandability with an HP-IL interface, card reader etc. but you do, however, get the connectivity with a host computer to retrieve memory dumps and update the firmware.
What we don't have is a portrait version! I have a 41 but rarely use it because that landscape orientation is just too cumbersome for me. The 42, OTOH, is great for me.
Tom L

Some people call me inept but I'm as ept as anybody!
DM10L SN: 059/100
DM41X SN: 00023 (Beta)
DM41X SN: 00506 (Shipping)
DM42 SN: 00025 (Beta)
DM42 SN: 00221 (Shipping)
WP43 SN: 00025 (Prototype)
Boub65
Posts: 231
Joined: Tue Sep 12, 2017 4:34 pm
Location: Rabat, Morocco

Re: Firmware V25 for DM1x/DM41(L) units

Post by Boub65 »

@grsbanks I still have an un-answered question for you or SM.

DM15L is an LPC1115 emulator for NUT CPU running HP-15c ROM.
DM41L is also an LPC1115 emulator for NUT CPU running HP-41CX ROM.

So here is my question?
Why would the HP-41CX be way faster than the HP-15c (8 Queens benchmark) and their ROM emulation on DMxx plateform be the opposite (DM15L is 5x faster than DM41L).
Sincèrement, Sincerely, 73,
Boubker

DM15L, DM41L, DM42 #00855 (domes upgraded), DM41X #00707
HP48SX (with dark screen), HP42s, HP32SII (1990 with fraction bug), HP41C/CV
TI-89 titanium, CASIO fx-cg50 and Numworks (to play with micropython)
User avatar
akaTB
Posts: 794
Joined: Tue May 02, 2017 1:56 pm
Location: Milan, Italy

Re: Firmware V25 for DM1x/DM41(L) units

Post by akaTB »

toml_12953 wrote:
Sat Jan 20, 2018 6:24 pm
What we don't have is a portrait version! I have a 41 but rarely use it because that landscape orientation is just too cumbersome for me. The 42, OTOH, is great for me.
Exactly :!: :!: :!:
Greetings,
    Massimo
ajcaton
-+×÷ left is right and right is wrong :twisted: Casted in gold
grsbanks
Posts: 1122
Joined: Tue Apr 25, 2017 11:23 am
Location: Preston, Lancs, UK
Contact:

Re: Firmware V25 for DM1x/DM41(L) units

Post by grsbanks »

Boub65 wrote:
Sat Jan 20, 2018 7:04 pm
Why would the HP-41CX be way faster than the HP-15c (8 Queens benchmark) and their ROM emulation on DMxx plateform be the opposite (DM15L is 5x faster than DM41L).
I honestly don't know.

I suspect that part of it is down to the HP-41CX's CPU running significantly faster than that of the HP-15C while the emulated CPUs in the DM15/41 are both running at the same speed. However, that doesn't explain how disporportionate the results observed are.
There are only 10 kinds of people in the world: those who understand binary and those who do not.
Post Reply