Post Reply 
HP-41 and Hepax Filesystem
02-06-2020, 12:14 AM
Post: #1
HP-41 and Hepax Filesystem
Hi folks

Does anyone here either know, or know where to find something documenting or detailing the ins and outs of the Hepax filesystem? The standard Hepax manuals offer a few tantalising hints before stopping short with a statement that “the filesystem works by magic and voodoo and you should pay no attention to the man behind the curtain and let us take care of everything for you.” Or something like that.

I really could do with details of the file headers; the directory is pretty simple.

Any insight *greatly* appreciated.

Pablo
Find all posts by this user
Quote this message in a reply
02-06-2020, 04:07 AM (This post was last modified: 02-06-2020 04:09 AM by Sylvain Cote.)
Post: #2
RE: HP-41 and Hepax Filesystem
I never found that information but I did spent some time reverse engineering it.

HEPAX file header uses 10 bytes
HEPAX data record use 6 bytes

4K page structure (warning: it may contains errors) [P means page address -> P001 could be 8001, 9001, etc]
Code:
P000  00B  < XROM Number (ROM assign an unused ID)
P001  000  < CAT Entry 00
P002  000  / FAT Space (64 fn + eof)
...        | (64*2)+2 = 130d = 82h
P083  000  \ Unused by HEPAX
P084  000  / Unused by HEPAX
P08F  000  \
Code:
P090  000  / 
...        | HEPAX DATA
PFE5  000  \
Code:
PFE6  000  < ? spacer ?
PFE7  000  < HEPAX pages linked list: prev page (0 = end of list)
PFE8  009  < HEPAX pages linked list: next page (0 = end of list)
PFE9  091  / Address of the first file in page
PFEA  000  \ 0091
PFEB  000  / Address of the active File
PFEC  000  \ 0000 (0000 = None)
Code:
PFED  090  / Start of usable page address
PFEE  000  \ 0090
PFEF  091  / Next file free space address
PFF0  000  \ 0091
PFF1  0E5  / End of usable page address
PFF2  00F  \ 0FE5
PFF3  200  < ? marker ? 512 what ?
Code:
PFF4  000  IVT Pause Loop
PFF5  000  IVT Main Running Loop
PFF6  000  IVT Deep Sleep Wake up, no key down
PFF7  000  IVT Off
PFF8  000  IVT I/O Service
PFF9  000  IVT Deep Sleep Wake up
PFFA  000  IVT Cold Start
Code:
PFFB  000  /
PFFC  000  | ROM Trailer
PFFD  000  | 
PFFE  000  \ 
PFFF  000  < Checksum
Find all posts by this user
Quote this message in a reply
02-06-2020, 06:13 AM (This post was last modified: 02-06-2020 06:26 AM by Ángel Martin.)
Post: #3
RE: HP-41 and Hepax Filesystem
(02-06-2020 12:14 AM)pablo2000 Wrote:  Hi folks

Does anyone here either know, or know where to find something documenting or detailing the ins and outs of the Hepax filesystem? The standard Hepax manuals offer a few tantalising hints before stopping short with a statement that “the filesystem works by magic and voodoo and you should pay no attention to the man behind the curtain and let us take care of everything for you.” Or something like that.

Check the description of HEPINI in page #34 in the PowerCL_Extreme Manual posted at:
http://systemyde.com/hp41/documents.html

Code:
Address Byte value                  Comment
x000    ROM id# => not same as pg#   Always done
xFE7    Previous HRAM page#         (zero if 1st.) Always done
xFE8    Next HRAM page#             (zero if last) Always done
xFE9    Fixed value = 091           Won’t be overwritten if not zero
xFED    Fixed value = 090           Done always
xFEF    Fixed value = 091           Won’t be overwritten if not zero
xFF1    Fixed value = 0E5           Done always
xFF2    Fixed value = 00F           Done always
XFF3    Fixed value = 200 (or 100)  Done always

"Two of the byte values shown in the table above located at addresses 0xpFE9 and 0xpFEF have a different treatment: they will be branded only if the previous content is zero. They denote the initial address in the page where the next file or program will be written using HSAVEP, HCRFLAS and HCRFLD. Their values will vary as more programs or content is written to the HRAM page, thus should not be overwritten by HEPINI – or else the HEPAX FileSys catalog will become corrupt."

HTH,
ÁM

"To live or die by your own sword one must first learn to wield it aptly."
Find all posts by this user
Quote this message in a reply
02-07-2020, 11:35 AM (This post was last modified: 02-07-2020 12:22 PM by pablo2000.)
Post: #4
RE: HP-41 and Hepax Filesystem
Many thanks to both of you - some useful stuff in there, although I was already aware of much, but by no means all, of it.

The key information I'm after is this bit ->
(02-06-2020 04:07 AM)Sylvain Cote Wrote:  HEPAX file header uses 10 bytes
HEPAX data record use 6 bytes

I can reverse engineer it if I have to, but it strikes me as odd that a module as revered, almost a cult following, as Hepax has so little publicly available information. And believe me, I've trawled all the old publications, forums and corners of the internet! It may help if I share a little of the purpose for it. Apologies if this is a little long.

I have been a user, and advocate, of the HP-41 since I bought one when the 'C' first came out. As a student it was expensive - but I knew I'd never outgrow it, and I was right. Thirty some-odd years on and it's still my goto machine if I'm away from a PC, even though I have others including a Prime. I really like the Prime and I really wanted to 'love' it. But sadly it's made for the current calculator market, which is school students not professional engineers, and it's lacking in many areas - but I love the connectivity for storing and loading programs, and the ability to upload text files and compile them on the machine.

A couple of months ago I bought one of Monte's brilliant CL boards, which is great - and I told him so. But despite the serial port, loading and saving programs is still a clunky affair - bespoke utilities and special cables etc. Motivated by this, I thought it would be good to bring the whole '41 world up to the 21st century connectivity. So I conceived a device, which I dubbed the 'IOnix'. I promise this is not a sales pitch or product 'plug' - just sharing what I'm doing with this project which is now nearly complete.

So, the IOnix has the following attributes/capabilities:
* Has Hepax embedded to provide the filing system. It had to be usable on _any_ machine, and Ext memory may or may not already be present, but Hepax can always be removed if already present.
* I've implemenmted the complete Hepax instruction set, including ROMBLK, so it correctly performs the page re-location, remapping of RAM and filesystem housekeeping - no need to edit magic numbers. It works *exactly* as per the manual.
* It has 32k Hepax ram, implemented using MRAM devices, which are non-volatile without battery or capacitor backup and have a guaranteed minimum retention of ~20 years. The RAM is dual-ported so is accesible from the '41 and the IOnix mcu simmultanteously.
* Although not it's primary purpose, it is a 'multi' or 'super' ROM - can load single and multi bank, 4k/8k/12k ROMs from .rom or .mod files.
* If RAM is swapped out fror a ROM, when the ROM is 'unplugged' the RAM is restored with its contents. HEPAX forsaw this and a calculator OFF/ON rebuilds the filesystem.
* When saving a file on the HP-41 to hepax, simultaneously the file is available on the uSD card which mirrors the hepax file system - literally HSAVEP a program, remove the uSD card and stick it in a desktop of any kind (PC/Mac/Linux) and in the HepFS folder you will find the file. But also, in other directories you will find a .raw, a decompiled focal file and a gif barcode .bar file.
* Data files a exported raw and as .txt files.
* To upload a file to the '41, just copy it into the aprroriate directory (focal, .raw or native HepFS), put the card in the IOnix HEPDIR and it's there. No fuss. And any focal text files are compiled and loaded if necessary.
* It has a very simple 3 button user interface, so roms can be changed or options set/unset from the device.
* It has a serial port for I/O at RS232 and TTL levels simultaneously, accessed using PEEK/POKE to a set of address. The serial parameters (baud, stop bits etc) are independent of the '41 so, for example, 115200 baud operates correctly even if the '41 cant keep up (which it can't!).
* It has a USB port wich can be used for serial I/O and also powers both the IOnix and the calculator, for extended use.
* It employs some quite sophisticated power management techniques to maximise battery life when powered by the calculator batteries.
* The case is made from a very tough industrial polymer and produced on a high resolution litho-printer, and then has a 3 coat protective paint and UV sealer - so it won't go brittle over the years like the HP card reader etc have tended to do.
* It is a 'half-height' module allowing the continued of of 2 wired peripherals (HP-IL, printer, barcode reader etc)
* It is entirely built 'from new' and doesn't require salvaged connectors or anything else.

Here are a few pics, but I *must* stress, this is bench prototype, so the paint finish is not to spec and has also suffered some abuse!
Find all posts by this user
Quote this message in a reply
02-07-2020, 12:00 PM (This post was last modified: 02-07-2020 12:26 PM by pablo2000.)
Post: #5
RE: HP-41 and Hepax Filesystem
[Image: IMG_2439.jpg]
[Image: IMG_2441.jpg]
[Image: IMG_2446.jpg]
[Image: IMG_2445.jpg]
Find all posts by this user
Quote this message in a reply
02-07-2020, 12:04 PM
Post: #6
RE: HP-41 and Hepax Filesystem
Just about everything is working now, but for the HepFS->uSD transfers, I've had to hard code 'magic numbers' for the files in HepaxRam. Just need to be able to parse the file headers!

So, unless anyone has any enlightenment, I'll guess I'll have to stare at lots of data and see what changes!

Any feedback or comments very welcome of course.

Pablo
Find all posts by this user
Quote this message in a reply
02-07-2020, 12:21 PM (This post was last modified: 02-07-2020 01:58 PM by Ángel Martin.)
Post: #7
RE: HP-41 and Hepax Filesystem
Sounds fantastic but the links were not functional...
now they work, and sure it looks great!

"To live or die by your own sword one must first learn to wield it aptly."
Find all posts by this user
Quote this message in a reply
02-07-2020, 12:49 PM
Post: #8
RE: HP-41 and Hepax Filesystem
Looks and sounds great, thank you for sharing these news!

Please keep us posted, I will be a customer for sure.

Greetings,
    Massimo

-+×÷ ↔ left is right and right is wrong
Visit this user's website Find all posts by this user
Quote this message in a reply
02-07-2020, 02:05 PM
Post: #9
RE: HP-41 and Hepax Filesystem
Amazing project!!

Thanks for sharing all these details; like Massimo, I am looking forward to getting one of these.

Please keep the Forum updated as you make progress.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
02-07-2020, 04:04 PM
Post: #10
RE: HP-41 and Hepax Filesystem
Wow! What a great project.
Like the others, let us know when you are ready to sell this little gem, I will also be a happy customer.
Find all posts by this user
Quote this message in a reply
02-07-2020, 04:25 PM
Post: #11
RE: HP-41 and Hepax Filesystem
Quite intriguing! But how did you manage the connection to the 41 bus? Even the MLDL2000 and similar projects required a recycled connector. Wish I had an answer to your header question!

Remember kids, "In a democracy, you get the government you deserve."
Find all posts by this user
Quote this message in a reply
02-07-2020, 05:55 PM (This post was last modified: 02-07-2020 06:41 PM by pablo2000.)
Post: #12
RE: HP-41 and Hepax Filesystem
(02-07-2020 04:25 PM)mfleming Wrote:  Quite intriguing! But how did you manage the connection to the 41 bus? Even the MLDL2000 and similar projects required a recycled connector. Wish I had an answer to your header question!

Well I had to engineer a new connector. The main PCB runs almost 2/3 of the length of the 'nose'. Then there's phosphour-bronze fingers that I had stamped in China which are tipped with gold contacts - all soldered together during the reflow process. The physical support - the black plastic block of the old connectors - is built into the lower case half and 'nose' cover. The case is in three pieces: bottom, main top and connector top.

There aren't enough old modules kicking around to cannibalize, just to extract an already 30-40 year old part from.
Find all posts by this user
Quote this message in a reply
02-07-2020, 07:48 PM
Post: #13
RE: HP-41 and Hepax Filesystem
Would really love to know what's inside, and a source for the connector would be great. Respect for this piece of work

Regards, Meindert
Find all posts by this user
Quote this message in a reply
02-07-2020, 07:52 PM
Post: #14
RE: HP-41 and Hepax Filesystem
(02-07-2020 05:55 PM)pablo2000 Wrote:  
(02-07-2020 04:25 PM)mfleming Wrote:  Quite intriguing! But how did you manage the connection to the 41 bus? Even the MLDL2000 and similar projects required a recycled connector. Wish I had an answer to your header question!

Well I had to engineer a new connector. The main PCB runs almost 2/3 of the length of the 'nose'. Then there's phosphour-bronze fingers that I had stamped in China which are tipped with gold contacts - all soldered together during the reflow process. The physical support - the black plastic block of the old connectors - is built into the lower case half and 'nose' cover. The case is in three pieces: bottom, main top and connector top.

There aren't enough old modules kicking around to cannibalize, just to extract an already 30-40 year old part from.

Excellent project! Like Mark, I am interested in the new connector, because I am resorting to cannibalism to get connectors for my Flexible Hardware Module. But I am also interested in the housing, because of the GPS module that I am working on. If you can contact me via email I would like to discuss this more.

There are also some things that you might be able to do to make this more CL-friendly. For example, I'm not sure that the HEPAX automatic relocation plays well with the CL memory management. If you are using a peripheral page address for the serial port it would be nice to coordinate the address with the things I am working on. And depending on how the serial port is done and connected with the USB it might be possible to adapt the CL update process to use that communication path.

Please don't take this in any way as criticism or stepping on toes. I really like the project and am just offering my help.

Monte
Visit this user's website Find all posts by this user
Quote this message in a reply
02-07-2020, 07:52 PM
Post: #15
RE: HP-41 and Hepax Filesystem
(02-07-2020 05:55 PM)pablo2000 Wrote:  
(02-07-2020 04:25 PM)mfleming Wrote:  Quite intriguing! But how did you manage the connection to the 41 bus? Even the MLDL2000 and similar projects required a recycled connector. Wish I had an answer to your header question!

Well I had to engineer a new connector. The main PCB runs almost 2/3 of the length of the 'nose'. Then there's phosphour-bronze fingers that I had stamped in China which are tipped with gold contacts - all soldered together during the reflow process. The physical support - the black plastic block of the old connectors - is built into the lower case half and 'nose' cover. The case is in three pieces: bottom, main top and connector top.

There aren't enough old modules kicking around to cannibalize, just to extract an already 30-40 year old part from.

This should be subject to a great presentation at the next HHC!

Günter
Find all posts by this user
Quote this message in a reply
02-07-2020, 10:25 PM (This post was last modified: 02-07-2020 10:31 PM by pablo2000.)
Post: #16
RE: HP-41 and Hepax Filesystem
(02-07-2020 07:52 PM)Monte Dalrymple Wrote:  Excellent project! Like Mark, I am interested in the new connector, because I am resorting to cannibalism to get connectors for my Flexible Hardware Module. But I am also interested in the housing, because of the GPS module that I am working on. If you can contact me via email I would like to discuss this more.
Sure thing. I'll email you over the weekend.

(02-07-2020 07:52 PM)Monte Dalrymple Wrote:  There are also some things that you might be able to do to make this more CL-friendly. For example, I'm not sure that the HEPAX automatic relocation plays well with the CL memory management. If you are using a peripheral page address for the serial port it would be nice to coordinate the address with the things I am working on. And depending on how the serial port is done and connected with the USB it might be possible to adapt the CL update process to use that communication path.
We will no doubt chat this further, but just for the sake of a public response for everyone else to see: They play quite nicely together - remember for my own use, I wanted this to use with my CL. Obviously there are some considerations - an IOnix slot has to be empty if it's configured in the CL MMU and vice versa; it's a spectacularly bad idea to have Hepax loaded in both at the same time (unless you like staring at your calculator with the batteries out for an hour!) - but apart from that they're best buddies. I'm sure we could scheme some use cases that would cause problems, but nothing obvious. Normally Hepax will relocate to page 0x7, but if I for example load YFNZ there, Hepax quite happily shifts down to 0x6 or stays at 0x8 (default) if my printer is connected. I've used it with CL configured modules in all slots except 1 (0x8 and 0x9) and the IOnix relocates itself to 0x7 and enables 8k Hepram in those pages. Works no problem. There are (literally) one or two wierdies that have cropped up - I haven't yet decided if they're a 'me' thing (because a fully internal CL-Hepax setup doesn't do it), a 'you' thing (because only the CL has it, not C, CV or CX) or just 'a' thing. Still looking at that.

In any event, the IOnix knows if it's in a CL or not and sets a flag - haven't found a significant use for it yet, but included it 'because I could'. I'm sure we can dream up some use for it, perhaps the update path you mentioned? Or using the IOnix display to show CL configured ROMs along with IOnix ones. As I said, the ROMs were not the principal purpose of the thing, but then not everyone has a CL and there seems to be no real offering at the moment for a multi-rom which works with _any_ '41.
Find all posts by this user
Quote this message in a reply
02-08-2020, 10:31 AM
Post: #17
RE: HP-41 and Hepax Filesystem
Awesome project! Sign me up as a customer and guinea pig!

Cheers

PeterP

Cheers,

PeterP
Find all posts by this user
Quote this message in a reply
02-08-2020, 09:21 PM
Post: #18
RE: HP-41 and Hepax Filesystem
(02-07-2020 07:52 PM)Guenter Schink Wrote:  
(02-07-2020 05:55 PM)pablo2000 Wrote:  Well I had to engineer a new connector. The main PCB runs almost 2/3 of the length of the 'nose'. Then there's phosphour-bronze fingers that I had stamped in China which are tipped with gold contacts - all soldered together during the reflow process. The physical support - the black plastic block of the old connectors - is built into the lower case half and 'nose' cover. The case is in three pieces: bottom, main top and connector top.

There aren't enough old modules kicking around to cannibalize, just to extract an already 30-40 year old part from.

This should be subject to a great presentation at the next HHC!

Günter

Or better in Allschwil, Switzerland - is much clother and I would like to see / get one too Wink
Visit this user's website Find all posts by this user
Quote this message in a reply
02-08-2020, 10:34 PM
Post: #19
RE: HP-41 and Hepax Filesystem
(02-08-2020 10:31 AM)PeterP Wrote:  Awesome project! Sign me up as a customer and guinea pig!

Cheers

PeterP

+1

Günter
Find all posts by this user
Quote this message in a reply
02-08-2020, 10:39 PM
Post: #20
RE: HP-41 and Hepax Filesystem
(02-08-2020 09:21 PM)HP-Collection Wrote:  Or better in Allschwil, Switzerland - is much clother and I would like to see / get one too Wink

Neither necessarily exclusive

Günter
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 2 Guest(s)