New firmware for the Swissmicros DM15L
|
06-05-2023, 02:44 AM
(This post was last modified: 11-03-2024 01:48 AM by jebedeo.)
Post: #1
|
|||
|
|||
New firmware for the Swissmicros DM15L
A bunch more features are implemented, see the end of the thread for updates. I am leaving the original post below here for reference. The latest firmware version is going to be attached on this post.
Key facts: | -------------------------- | --- HP15C --- | --- LF15C ---- | | -------------------------- | ------------- | -------------- | | Internal Data ------------ | BCD --------- | double complex | | Precision Digits --------- | 10 ---------- | 15 ----------- | | Programming mode --------- | op codes ---- | human readable | | Stack Size --------------- | 4 ----------- | 4+ ----------- | | Register Size ------------ | 21 ---------- | 100 ---------- | | Program Memory ----------- | up to 672 --- | 2000 --------- | | Program Labels ----------- | 25 ---------- | 100 ---------- | Current implemented features: | --------------------- | HP15C | LF15C | | --------------------- | ----- | ----- | | Complex numbers ----- | - x - | - x - | | Programmability ----- | - x - | - x - | | Statistical Functions | - x - | - x - | | Integrate ----------- | - x - | ----- | | Solve --------------- | - x - | - x - | | Matrix -------------- | - x - | ----- | ----- ORIGINAL POST BELOW ----- Although I love my DM15L I couldn't help but notice that its modern matrix LCD has plenty of room to display two lines and a lot more digits, so I thought it'd be fun to write my own firmware and implement some of the things I wish the DM15L had. I use this calculator with my firmware on a daily basis (IC engineer) for quick calculations and that reflects what is implemented here and what isn't. I would love to hear from people whether they're interested at all, and get some feedback as I implement the rest of the functionalities. * What is this firmware for? - Swissmicros DM15L owners that want to try a more modern firmware. - I only have the DM15L calculator so it's only tested on this platform. Might work on the DM15 too. * What's implemented? - Two lines to look at X and Y registers in all their glory - All single key functions like square root, logs, trig functions, et cetera. - Store and Recall operation with support for + - * / operations (like on the HP42s) - FIX/SCI/ENG formats - Statistic functions and registers R2 through R7 * What's missing? - No complex numbers - No matrix support - No programmability - No integration - No solver * How do I get set up? - Download the attached file LF15L_beta230604.txt - Follow the usual steps to update the firmware for you DM15L (https://technical.swissmicros.com/voyage...are_update) - TLDR: from linux, something like $ lpc21isp LF15L_beta230604.txt /dev/ttyUSB0 115200 12000 |
|||
06-05-2023, 07:01 AM
Post: #2
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
That's interesting, and thanks for sharing! Did you start from the SDK SwissMicros provided?
I've been thinking about writhing my own DM15L firmware as well, but my intention is to still simulate the Nut processor. I just want to modify the 15C microcode in various ways that the SwissMicros firmware can't support. |
|||
06-05-2023, 02:30 PM
Post: #3
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-05-2023 02:44 AM)jebedeo Wrote: - I only have the DM15L calculator so it's only tested on this platform. Might work on the DM15 too. Is this new DM15L f/w discussion a proposal looking for interest, or does it actually exist? If the latter, one would have expected a photo of the 2-line screen as an attention grabber and proof it's working? --Bob Prosperi |
|||
06-05-2023, 04:06 PM
Post: #4
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
brouhaha: Yes, I used the SDK from swissmicros.
rprosperi: Good point! I edited my original post with a picture of the DM15L running the new firmware. I also clarified in the description that it's an existing firmware that you can download from the forum and flash on your device. |
|||
06-05-2023, 04:59 PM
Post: #5
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L | |||
06-05-2023, 05:14 PM
Post: #6
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L | |||
06-05-2023, 08:12 PM
Post: #7
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-05-2023 04:06 PM)jebedeo Wrote: brouhaha: Yes, I used the SDK from swissmicros. Thanks for the update, and a hearty atta-boy for sharing this. However, be very careful asking in this Forum what else folks might want... it's almost a sure bet they'll tell you! Just to clarify for other readers - this is a completely new f/w for the DM15 hardware, and is not a 2-line Display version of the 15C ROM application. --Bob Prosperi |
|||
06-05-2023, 08:13 PM
Post: #8
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-05-2023 04:59 PM)Sylvain Cote Wrote:(06-05-2023 02:30 PM)rprosperi Wrote: Is this new DM15L f/w discussion a proposal looking for interest, or does it actually exist?The attached file on his post seems to be the actual firmware in Intel Hex format. I saw that, I sure as heck don't read hex, and no (accessible) linux machines to load it with. --Bob Prosperi |
|||
06-05-2023, 08:20 PM
Post: #9
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-05-2023 08:13 PM)rprosperi Wrote:(06-05-2023 04:59 PM)Sylvain Cote Wrote: The attached file on his post seems to be the actual firmware in Intel Hex format. I guess you can just use SwissMicro's Voyage Firmware Tool on Windows. — Ian Abbott |
|||
06-05-2023, 08:23 PM
(This post was last modified: 06-05-2023 08:24 PM by rprosperi.)
Post: #10
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-05-2023 08:20 PM)ijabbott Wrote:(06-05-2023 08:13 PM)rprosperi Wrote: I saw that, I sure as heck don't read hex, and no (accessible) linux machines to load it with. Not as fast as I can ask questions here.... Also, I think that's only for binary file, not a hex dump, but it's been 2+ years since I've used it so maybe it does??? --Bob Prosperi |
|||
06-06-2023, 09:53 PM
Post: #11
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-05-2023 08:23 PM)rprosperi Wrote:(06-05-2023 08:20 PM)ijabbott Wrote: I guess you can just use SwissMicro's Voyage Firmware Tool on Windows. The DM1xL firmware files downloadable from SwissMicros are Intel HEX format too. — Ian Abbott |
|||
06-06-2023, 10:53 PM
Post: #12
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-06-2023 09:53 PM)ijabbott Wrote:(06-05-2023 08:23 PM)rprosperi Wrote: Not as fast as I can ask questions here.... Thanks! I clearly should know that, and probably knew that at some point, but I've only loaded binary images. I gotta give this a try. Thx again --Bob Prosperi |
|||
06-07-2023, 11:01 AM
Post: #13
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
I like the idea very much (looks like my HP42S screen like this), but I am missing key functions like complex and matrix...
HP-15C CE (SN : 00877) HP-32S HP-42S (two of them:)) |
|||
06-07-2023, 05:31 PM
Post: #14
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-07-2023 11:01 AM)paf Wrote: I like the idea very much (looks like my HP42S screen like this), but I am missing key functions like complex and matrix... Would there be even sufficient storage to include all that on the flash memory? I thought the current SM DM15 firmware only barely fits and the latest firmware versions don't even install on older hardware due to storage constraints. |
|||
06-07-2023, 05:50 PM
Post: #15
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-07-2023 05:31 PM)johanw Wrote:(06-07-2023 11:01 AM)paf Wrote: I like the idea very much (looks like my HP42S screen like this), but I am missing key functions like complex and matrix... That depends -- some space would be saved by removing the Nut CPU emulator and the original 15C microcode. In return for that, space will be taken up instead with native ARM (presumably, actually mostly Thumb?) instructions implementing the new functionality. |
|||
06-07-2023, 09:43 PM
Post: #16
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
Hey guys, here are some answers:
The attached file is a txt file of the hex format firmware. I'm not sure why but the form wouldn't let me attached a file with .hex extension although it's a normal text file. So I just renamed it and tested that I can flash it anyways. I'd love to hear from people if they are able to flash and use the firmware, cause so far I've only tested it on my DM15L and there might be differences in hardware revisions. As mentioned, this firmware file should work on windows and mac, as well as linux which is where I work on. The firmware right now takes ~54k of memory, so there is another 10k left before the ROM is maxed out on this particular calculator. From what I have seen the built in c functions (like sin, atan, et cetera) are the pieces of code that take the most memory. Since those are all implemented, adding complex numbers, matrix, and programmability "should" be possible. (06-07-2023 11:01 AM)paf Wrote: I like the idea very much (looks like my HP42S screen like this), but I am missing key functions like complex and matrix... That's right, I made the font to look like the HP42s since it looks great and the LCDs of the DM15L is almost the same size... |
|||
06-07-2023, 10:10 PM
Post: #17
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-07-2023 09:43 PM)jebedeo Wrote: From what I have seen the built in c functions (like sin, atan, et cetera) are the pieces of code that take the most memory. So I presume you're using the typical, just-about-IEEE754-compliant, binary floating point emulation library which is typically supplied by the arm-gcc compiler? |
|||
06-07-2023, 11:05 PM
(This post was last modified: 06-07-2023 11:05 PM by jebedeo.)
Post: #18
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
Quote:So I presume you're using the typical, just-about-IEEE754-compliant, binary floating point emulation library which is typically supplied by the arm-gcc compiler? That’s right! I’m using doubles so this should have more precision than the original 15C firmware. |
|||
06-08-2023, 06:53 AM
Post: #19
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-07-2023 09:43 PM)jebedeo Wrote: The firmware right now takes ~54k of memory, so there is another 10k left before the ROM is maxed out on this particular calculator. From what I have seen the built in c functions (like sin, atan, et cetera) are the pieces of code that take the most memory. The 15C ROM was 12 kwords (equivalent to about 15kB), with all the features. Your current implementation (w/o complex, matrix, solve&integrate, even no prog) is closer to the 11C that was just using 6 kwords (~7.5kB). Code of that era was extremely compact ! J-F |
|||
06-08-2023, 12:34 PM
(This post was last modified: 06-08-2023 12:42 PM by goosnarrggh.)
Post: #20
|
|||
|
|||
RE: New firmware for the Swissmicros DM15L
(06-08-2023 06:53 AM)J-F Garnier Wrote:(06-07-2023 09:43 PM)jebedeo Wrote: The firmware right now takes ~54k of memory, so there is another 10k left before the ROM is maxed out on this particular calculator. From what I have seen the built in c functions (like sin, atan, et cetera) are the pieces of code that take the most memory. It probably helps that the original Nut instruction set was heavily optimized specifically to perform the kinds of BCD floating point tasks that were required in a device such as a calculator. It could operate on decimal nibbles, either in isolation or sequentially covering a selectable range of nibbles, all encoded within a single 10-bit instruction. It makes it rather straightforward to implement very compact elementary BCD floating point operations using just a couple of instructions. The ARM7TDMI instruction set, on the other hand, only really knows how to operate on bytes, 16-bit half-words, or 32-bit words, in an integer binary sense. Any kind of floating point operation will easily require substantially more instructions to complete. Hopefully, though, each elementary operation only needs to be implemented once, and then called as a subroutine in each additional instance where it's needed. But it certainly does make a persuasive argument in favour of focusing the ARM code solely on the task of emulating the elementary Nut instruction set, and then implementing the core logic in Nut instructions to take advantage of its compactness. |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 5 Guest(s)