The Museum of HP Calculators

HP Forum Archive 18

[ Return to Index | Top of Index ]

NoVRAM RAM to PC .ROM file image... Directly!! ;-)
Message #1 Posted by Diego Diaz on 5 May 2008, 1:00 a.m.

...well, almost, you must go thru the PIC programmer to Dump form the Module to the PC; but the whole thing works as expected.

So, there's no need for 9114's, LIF disks, and the bunch of bulky, expensive and difficult to maintain equipment that many of us have been using for years.

The overall procedure is as follows.

Choose a RAM page to dump: #8, #9, #A or #B

Write the control word into H'4100:

- H'200 for page #8

- H'204 for page #9

- H'208 for page #A

- H'20C for page #B

*** WAIT 3 seconds!!!! *** VERY IMPORTANT!!

Check control word, by pressing TAN, the heading "2" should have disappeared.

Plug the NoVRAM in your programmer and perform a READ to a 'filename.HEX' of your convenience.

Run "RAM2ROM.EXE" utility, inserting the source (fiename.HEX) and detination (yourimage.ROM) files... and you're done!!

Please note it's still very experimental, but if anyone out there is interested please contact me thru this forum or by mail, I'll send the required files and more detailed intructions.

Of course you can also post your questions or comments, I'll be glad to read and answer... :-)

Best wishes from the Canary Islands


Addendum... (a little clearer... hope so...)
Message #2 Posted by Diego Diaz on 5 May 2008, 5:44 p.m.,
in response to message #1 by Diego Diaz

Hi all,

I've just re-read my previous post and found it somehow confusing myself, sorry for that. My excuse is that it was 6:00 on a sleepless night and just wanted to let everybody know I've finally got it to work...

Here are the details to clarify things a bit:

- A new code for NoVRAM named RAM2ROM.HEX has been build.

- Use your IC-Prog and PIC programmer to burn it into your NoVRAM module.

- The code is a barebones HEPAX emulation including a Flash ROM self-burning routine, i.e. no extra pages allowed, for two good reasons:

---- Reason 1: We need the Flash ROM area to copy our RAM page into.

---- Reason 2: The self-burning routine also uses part of the extra Flash ROM area.

- Currently the code is only available for NoVRAM, it can be used in NoV-32 but will only access RAM block #0 (i.e. H'4100 = H'000). The full version for NoV-32 allowing both RAM blocks to be selected will be ready in short.

- Ok, you have now your NoVRAM programmed with RAM2ROM.HEX, note that you can use it in the regular way, and use the well known HEPAX features to build your own ROM image into any RAM page #8, #9, #A or #B... or all of'em if you're a M-code guru!!.. ;-) Usually the big deal came in that point, when the user had built his/her ROM image into RAM but the ways to take it to the outer world (i.e. making a .ROM file into your PC hard drive) were complicated... and involved several steps and hard-to-find, bulky, and expensive hardware (IL-PC cards, 9114A/D disk drives, old PC to run LIFUTILS... etc.) NoVRAM allows the average user (and average budget :-) to gain access to HEPAX functionality, but it lacks the possibility of "connecting" the RAM area to your PC. Only Flash ROM is accessible from the PIC programmer... and still is, but, as we say in Spanish: "Si Mahoma no va a la montaña, la montaña tendrá que ir a Mahoma" ("If Mohammed doesn't go to the mountain, the mountain must go to Mohammed") So I started to think in a way to make a copy of RAM into Flash.

- Now that you have your RAM page working all you have to do is run HEXEDIT and write a control word to H'4100. The control word determines which page will be burnt into PIC's Flash: H'200 for page #8, H'204 for #9, H'208 for #A or H'20C for #B.

- As soon as you enter the control word the RAM to ROM dumping process will start. It will take about 2.5 seconds so be patient (if you press any key during this 2.5 seconds the burning process won't be affected but your call will more likely go to [MEMORY LOST] Anyhow be sure that by no means you can harm your calculator or your module even if you press whatever keys you want. This warning is just to avoid [MEMORY LOST]. After waiting for those *eternal* 2.5 seconds (I would rather prefer 3 seconds) you can step back [TAN] to see H'4100 contents. It should have changed deleting the heading "2".

- At this point you have a copy of the RAM page you selected into PIC's ROM. Plug your module back in your PIC programmer, run IC-Prog, and "Read" it giving an appropriate "filename.HEX" (8 character long maximum) to the resulting file.

- Last, run RAM2ROM.EXE and enter the "filename" you've used for the .HEX file in the previous step (Source) as well as the "myromname.ROM" (also 8 character long maximum) for the .ROM image file (Destination)... Yes, that is *the file* we've been doing it all for!!

- Next step, of course, is spread your new, wonderful, and fully-featured .ROM image with the rest of the world!!... But I'm pretty sure you know of a good number of ways to achieve this task by your own... ;-)

Best wishes from the Canary Islands.


PS. As the final version of RAM2ROM.HEX and RAM2ROM.EXE are not ready, these files are not in my web pages, anyone wnating to experiment with the Beta versions is welcome. (Experienced users preferred... ;-)

Re: Addendum... (a little clearer... hope so...)
Message #3 Posted by Meindert Kuipers on 6 May 2008, 2:15 p.m.,
in response to message #2 by Diego Diaz


Could you email me an example .HEX file and the .ROM files that is created from it? I could include the conversion from HEX to ROM (and now even to MOD) in the new MLDL2000 manager. I had some delay in the software due to the fact that I decided to change the backup and restore functions, so I have just a little bit of time to also add reading of your HEX files.



Re: Addendum... (a little clearer... hope so...)
Message #4 Posted by Etienne Victoria on 6 May 2008, 2:58 p.m.,
in response to message #2 by Diego Diaz

Hi Diego!

Thank you for this nice addition to the NovRAM feature!

When you have some spare time, would you mind also uploading the .HEX necessary to reinitialize the NoVRAM with the HEPAX emulation and the ROM images.

I mean the original one.

I think I've screwed up mine completely :-)

Kind regards from a happy Clonix & Novram user!


Re: Addendum... (a little clearer... hope so...)
Message #5 Posted by Diego Diaz on 6 May 2008, 9:04 p.m.,
in response to message #4 by Etienne Victoria

Hi Etienne,

I'll mail you back tomorrow with the files (don't have them handy right now). This is just to call your (or anyone's) attention on *not* to use the files from my webpages as they're *very* out of date, (both for Clonix and NoV's) and can lead to suffer from bugs already fixed, with subsequent -and innecessary- inconveniences for the users.

Clonix web pages will be updated in the near future (as I make sure the latest upgrades are fully operative), in the meantime, whomever needs/want the latest *verified* software please drop me a line or post here. Thanks for your patience... :-)

Meindert, will also mail you back tomorrow with the relevant files. In short, .HEX files are standard for PIC's, EPROMS, EEPROMS, microcontrollers, etc... They're text files with a very simple structure.

An example line of Flash dump into .HEX file follows:


:=Line header

A=Address pointer

S=Separator "00"



All fields are Hexadecimal Text, hence the .HEX extension.

The .ROM file is also well known, every 10 bit word is placed into two bytes. The odd byte of every pair holds the Lower 8 bits from the 10bits word while the remaining 2bits are placed in bits 0 and 1 of the even byte, wasting the 6 upper bits of every even byte.

As the RAM2ROM image is burnt into a fixed address block (H'2000-H'3FFF) of the NoVRAM Flash ROM, it's very easy to filter the AAAAAA *field* from the .HEX file and extract the DDDD...'s from this address ahead. The self-burning routine in ROM2RAM.HEX has been built in such way that the Flash's block (H'2000-H'3FFF) is burnt with .ROM structure itself.

Regarding the .MOD file conversion, just keep in mind that .ROM files are page oriented, thus they can *only* hold one page; while .MOD files are module oriented. In some cases a user may have built an 8k module, therefore two Flash dumps will be required to extract the full module, producing two .ROM files that must be combined into a single .MOD file.

Hope this helps.


[ Return to Index | Top of Index ]

Go back to the main exhibit hall