MCODE (what else?): Creating a new ROM from the 41 --> Transfer?


Up until now, I have created the ICEBOX rom within the SDK41 (many thanks to Warren Furlow). But as I am now exploring doing the work on the 41 itself, I wonder what the best solution is for creating the final rom image; I make the rom with David Assembler, then I.... What is the best way of getting that final rom out into the ICEBOX.ROM image file on the PC. Bear in mind I do have the PIL BOX (finally got around to using that, works great).

Edited: 18 Jan 2010, 3:14 a.m.


It depends what HW you have at hand and what you consider as "best way". I would save the page (or two?) to a LIF-disk (real or emulated), read this disk on a DOS system and apply a converter. If this is too simple use a disassembler and store the listing to disk instead of printing it. Then you still need a converter.



Hi, Geir;

I make the rom with David Assembler, then I.... What is the best way of getting that final rom out into the ICEBOX.ROM image file on the PC.
When you say you make the ROM with David assembler you refer to a complete 4K- page or part of it (i.e. some functions)? If you complete a 4K ROM, then I guess the image itself is ready to run, like a regular one, right? Then you apply the same procedure you have already applied with any other ROM image.

If you are using Diego´s NoV-32 or NoV-64, there is an affordable way to transfer files from the modules to the PC once you have the hardware to (PIC programmer): try here.

Hope this is what you are talking about.

Success! (many of us, including me, are willing to see and use this new ROM...)

Luiz (Brazil)

Edited: 18 Jan 2010, 1:21 p.m. after one or more responses were posted


Ah, the RAM2ROM - I had forgot about that one. Anyone knows if it can be used with the NoV-64 burning a page from the fourth RAM block?



RAM2ROM was writen to work with NoVRAM and NoV-32 processor.

Migrating this program to NoV-64 shouldn't be difficult, just allow me a few days to check for the coding differences.

Best from Spain.



Great. That would be the most elegant solution.


You may tweak the ROM in the HP41 with DAVID, but I would recommend to feed this back into the original SDK41 source, so the changes are commented and you have more than a 'write-only' product.

User code is a bit tricky, AFAIK this can only be generated on the HP41 for inclusion in ROMs with the proper tools (M2K ROM has these). Documenting is SDK41 sources will soon be possible when my disassembler in M2kM fully support SDK41 mode, so the User Code disassembly listings can be copied and inserted in an SDK41 source.

I must comment that M2K ROM has anice collection of tools, but most of it is not original work. Many routines are based on Assembler 3 and the Eramco MLDL ROM.



I'm afraid I must not be getting the point because to me preparing a ROM is as simple as writing the MCOde (or user code) on a Excel sheet, then use a program Diego wrote a few years back to convert the MCODE instructions (in ASCII) to a ROM file.

I admit that User code is a bit trickier, as it requires compiling the distances. I use the HEPAX emulation on V41 to read the important bytes directly using HEXEDIT.

So once I've got the ROM file I could (but I don't because I don't need it) run D41 to list it using the reference you all seem to consider the standard (for good reasons, I'm sure).

Or I can use the disassembler in the MLDL2k. There are many ways to skin a cat...



I am actually looking at doing MCODE'ing on the HP-41 itself (like when I am on vacation :) - complete the rom using David Assembler and then transfer that rom to a PC. The RAM2ROM utility from Diego would do the trick given that I can get a version that can accommodate for the two extra RAM blocks of the NoV-64 over the NoV-32.


Ouch, you are really trying to program MCODE on the hp41? I guess people did that back when they did not really have much computers.

Back then, I quickly redesigned my 6502 assembler on my Commodore 64 to do MCODE programming. Then I downloaded the results to my home built MLDL using a parallel cable that simulated the hp41 bus running WROM instructions to the ram page. I believe it took some 37 seconds to get it down. The assembler itself was very quick, being written in 6502 assembler, but reading them from the slow 1541 floppy was not (as source was too big to fit in memory). I also had an EPROM burner to do more lasting images that I just plugged into the MLDL.

I never did any programming on the hp41 itself, just paper and pen, then to the C64.

Today I would not even dream on trying it either. But if you think it is fun, why not? Then the David Assembler should be way to go.

If I where to do it on vacation with limited resources, I think I would get a small netbook and use some tools on that one instead.

As always there is the trouble of transferring to and from the hp41, it has always been like that...


Wow. MCODE on a C64... very cool.

Well, my idea of MCODE'ing on the 41 is mostly for fun but also to do simple test runs of small routines. Right now I am working on a better random number generator, and the 41 is with me everywhere (unlike my laptop).


To me the key to a better random number generator is in the seed. Using the timer to create a true random seed makes the trick, and
what a poetic justice, considering that Hakan has posted to this thread.- as he wrote that routine!

It's in the SandMath module, see functions SEEDT and RAND.



I never tried programming MCODE directly on the HP41, as I could not afford the David assembler. Sounds like a cool thing to do though.

I tended to write my code using paper and pen, then transferring it to the computer. If working directly on the HP41, I think a printer could be very addition as well (something I could not afford in the past either).

Please report back later with your experiences.


While I do all my MCODING in SDK, if I would make anything on the 41 I would export it via emu41 to a HDRIVE1 and save it as a rom file, which is pretty fast.




Hi Ángel,

Wow! I'm *really* happy to know this tiny encoding tool is still useful... ;-)

Keep up the good job!




Ángel, how do you create the excellent source code listings?


As I indicated above, I use MS Excel. The "blueprints" are direct pdf printouts from the XLS documents.

I like it because I use hyperlinks to jump along the code, a real breeze when dealing with that much stuff.



Possibly Related Threads…
Thread Author Replies Views Last Post
  HP-41(CL): The easiest way to transfer FOCAL programs from a Linux PC to the HP-41 Geir Isene 13 5,670 12-05-2013, 02:40 AM
Last Post: Hans Brueggemann
  HP-41 MCODE: The Last Function - at last! Ángel Martin 0 1,041 11-08-2013, 05:11 AM
Last Post: Ángel Martin
  Creating an App, and evolution for the extreme beginner (me) Geoff Quickfall 4 1,976 10-20-2013, 01:27 AM
Last Post: Geoff Quickfall
  41CL :TROUBLE IN FILE TRANsFER aurelio 22 6,111 06-18-2013, 03:44 PM
Last Post: aurelio
  41-MCODE: Auto XEQ+ALPHA possible? Ángel Martin 5 1,951 05-29-2013, 06:15 AM
Last Post: Ángel Martin
  HP 41 Mcode related Questions Michael Fehlhammer 4 1,956 05-10-2013, 07:09 PM
Last Post: Michael Fehlhammer
  HP85 Programmable ROM cardtridge 82929A-service ROM not working- inaki 2 1,871 04-25-2013, 08:08 AM
Last Post: inaki
  HP71B to HP 41 Translator ROM Manual Michael Lopez 5 2,110 04-25-2013, 03:51 AM
Last Post: Mike (Stgt)
  HP-41 ROM Polling Point at FF5 Dan Grelinger 2 1,354 01-11-2013, 06:00 PM
Last Post: Monte Dalrymple
  shelf life time of a ROM, EEPROM, EPROM vs Mask Rom Guido (Canada) 6 2,966 01-11-2013, 04:09 PM
Last Post: Thomas Falk

Forum Jump: