Post Reply 
LIF File Types: HP 41, 71, 75, series 80
09-26-2014, 06:22 PM
Post: #1
LIF File Types: HP 41, 71, 75, series 80
Many of you might still use DOS tools like LIFUTIL to manipulate LIF images or physical LIF disks, the file system used by our beloved IL controllers HP 41C, 71B and 75C, as well as by the series 80 workstations.

Since today we have the PIL box and windows tools for it, I'd prefer a modern version of LIFUTILS to add or extract single files to/from a LIF image, or to rename or delete a file. In fact such a tool for the windows platform already exists, although it seems to be relatively unknown. I am talking about HPDir, together with its plug-ins for the Total Commander file system explorer ( Shareware ).
See HPDir.

There is one drawback with this tool: It has been developped by Ansgar Kückes with focus on the HP 9845 machine. In the LIF file system directory entries there is a two-bytes-field "file type". Until now HPDir translates file types to meaningful text only for a few HP 9845 file types, the software knows nothing about HP calculators' file types. Therefore, if you look at a listing of HP 71b lex files in Total Commander, you'll see (in column "extension") "#e208", the hex-repesentation of the HP 71b lex file type, instead of "LEX", or even better, "LEX71", in order to differentiate from "LEX75".
I asked Ansgar Kückes whether he could upgrade his software by adding a means of defining one's own extensions - for example, by providing a simple user-editable and expandable .ini file that lists file types in hex representation along with the corresponding file type name.
Fortunately he is planning to upgrade HPDir anyway, and he is willing to extend the tool to meet the needs of us calculator enthusiasts.
What he would like to have is an initial version of such a file type data base.

So please, dear HP 41, 71b 75 and series 80 specialists: Please collect and contribute all file types and let us build the ultimate LIF file type list!


I am aware that there are some ( small ) lists around on the web, but they are all far from complete. Many software modules defined their own file types. One example: the W&W Rambox operating system for the HP 41 defines a Page dump file type (#e070).
I took this example from Jürgen Keller's article about the HP 41CY on his site "calculator nostalgia" (HP 41 CY .
This example shows that there is another problem with LIF files:
When adding a file from the DOS environment to a LIF image, you must provide not only the correct file type, but also ( in some cases ) additional information that has to be inserted in the "General Purpose" field of the LIF directory entry( 4 bytes, even six bytes when combined with the "Volume" field, see descriptions of LIF file structure ).
Jürgen Keller mentions that the page dump file would not be recognized by the calculator if the "General Purpose" field in the directory entry did not contain the right "magic bytes", the correct file type woudn't be sufficient.

So please provide us the necessary additional information "General Purpose" directory entry ) along with the file types, if applicable!

By the way, Ansgar Kückes seems to be very helpful. If you come across other deficiencies of HPDir from our calculator-affine perspective - please leave your comments, we might have a chance that suggested improvements turn into reality.
Find all posts by this user
Quote this message in a reply
09-26-2014, 07:46 PM (This post was last modified: 09-26-2014 07:54 PM by Dave Frederickson.)
Post: #2
RE: LIF File Types: HP 41, 71, 75, series 80
Hi Michael,

I've found HPDir to work nicely with text file types, but have found little use for LIF binary files in the DOS file system. The exception is HP-71 ROM images which can be installed in the Emu71 emulators.

For 41/71/75 files you need look no further than the Museum's FTP site or Joe Horn's LIF-Disc Web Archive Project.

Since the LIF "General Purpose" Implementation Bytes are lost in the DOS file system I see no means of automatically restoring them when adding a file from DOS to a LIF image. Note that LIFUTIL prepends a LIF Header to a file when copying it to DOS to maintain the file date, file type, implementation bytes, etc when copying it back to a disc.

The best source of information for the HP-71 file types I've found is Appendix D of the HP-71 HP-IL Module Owner's Manual. Note that for HP-71 binary files the implementation bytes are the file size in nibbles.

Dave
Find all posts by this user
Quote this message in a reply
09-26-2014, 07:48 PM (This post was last modified: 09-26-2014 07:50 PM by rprosperi.)
Post: #3
RE: LIF File Types: HP 41, 71, 75, series 80
(09-26-2014 06:22 PM)Michael Fehlhammer Wrote:  I asked Ansgar Kückes whether he could upgrade his software by adding a means of defining one's own extensions - for example, by providing a simple user-editable and expandable .ini file that lists file types in hex representation along with the corresponding file type name.
Fortunately he is planning to upgrade HPDir anyway, and he is willing to extend the tool to meet the needs of us calculator enthusiasts.
What he would like to have is an initial version of such a file type data base....

Excelent news Michael, thanks for motivating Ansgar on behalf of us calculator fans. Only this past weekend at HHC in Reno we had a discussion on this exact topic - how to extract from or add into a LIF archive file - for use with 71, 75, and 41. I did recommend HPDIR (with links to the site) but noted the limitations of the "file type" and "implemetation bytes", which are the 2 items you have described (I believe). Having these improved in a new version of HPDIR would be quite useful for manipulating LIF files.

Where should information on requested File Types / Implementaiton Bytes be sent? Should suggesitons simply be added via post here, or are you collecting them, should they be sent to Ansgar, etc?

Good news indeed, thank you for sharing this news and for helping to make these improvements possible!

Edit: I just knew Dave would beat me!

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
09-26-2014, 08:03 PM
Post: #4
RE: LIF File Types: HP 41, 71, 75, series 80
If the LIF binary file in the DOS file system has the correct extension, #e208 for example, HPDir will correctly type the file when adding it to a LIF image, but there's still the issue of the implementation bytes.
Find all posts by this user
Quote this message in a reply
09-26-2014, 09:02 PM
Post: #5
RE: LIF File Types: HP 41, 71, 75, series 80
(09-26-2014 06:22 PM)Michael Fehlhammer Wrote:  So please, dear HP 41, 71b 75 and series 80 specialists: Please collect and contribute all file types and let us build the ultimate LIF file type list!

In my ILvlif tool ( a tool to list catalog of various LIF discs, using the HP9114 and the PIL-Box) on my HP-IL resource page, I decoded most of the types of the HP41, HP71, HP75, series 80 (HP85/87), HP9000 (series 200/300 Basic and Pascal workstations).
Some specific types may be missing because I didn't find them in my physical archive LIF discs, and I don't have information on the implementation bytes, that are only needed when trying to build a new entry from scratch.

Here are the types (expressed as signed integer) I know:
Code:

        type = record(10) : type = (type << 8) + record(11)
        If type > 32767 Then type = type - 65536 ' for signed 16-bit number
  ...
        Select Case type
            Case 0 : DisplayStr("(NUL)")
            Case 1 : DisplayStr("ASCII")
            Case -8184 : DisplayStr("BIN8x")
            Case -8176 : DisplayStr("DTA8x")
            Case -8160 : DisplayStr("BAS8x")
            Case -8128 : DisplayStr("ALL41")
            Case -8112 : DisplayStr("KEY41")
            Case -8110 : DisplayStr("TXT75")
            Case -8109 : DisplayStr("APP75")
            Case -8080 : DisplayStr("X-M41")
            Case -8064 : DisplayStr("PGM41")
            Case -8056 : DisplayStr("BAS75")
            Case -8055 : DisplayStr("LEX75")
            Case -8054 : DisplayStr("WKS75")
            Case -7984 : DisplayStr("SDATA")
            Case -7951, -7952 : DisplayStr("DTA71")
            Case -7676 : DisplayStr("BIN71")
            Case -7669, -7670, -7671, -7672 : DisplayStr("LEX71")
            Case -7667, -7668 : DisplayStr("KEY71")
            Case -7656 : DisplayStr("FTH71")
            Case -7657, -7658, -7659, -7660 : DisplayStr("BAS71")
            Case -7652 : DisplayStr("ROM71")
            Case -5822 : DisplayStr("SYS9k")
            Case -5813 : DisplayStr("HP-UX")
            Case -5808 : DisplayStr("BAS9k")
            Case -5791 : DisplayStr("BDA9k")
            Case -5775 : DisplayStr("BIN9k")
            Case -5622 : DisplayStr("DTA9k")
            Case -5582 : DisplayStr("COD9k")
            Case -5570 : DisplayStr("TXT9k")
            Case Else : DisplayStr(type)
        End Select

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
09-26-2014, 10:01 PM (This post was last modified: 09-26-2014 10:01 PM by Joe Horn.)
Post: #6
RE: LIF File Types: HP 41, 71, 75, series 80
(09-26-2014 09:02 PM)J-F Garnier Wrote:  Here are the types (expressed as signed integer) I know...

Please add 255 (hex 00FF), the "disabled HP-71 lexfile" type, which is displayed as "D-LEX" by the JPCROM and most of the filetype extension lexfiles for the HP-71. This filetype is supported by many other HP-71 lexfiles and programs.

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
09-26-2014, 10:03 PM
Post: #7
RE: LIF File Types: HP 41, 71, 75, series 80
Hi Bob,
thank you for your support; the easiest way to build up a collection is to post file type information here. After the accumulation of new file types will slow down and we come near to completion, I will build a text file from it and send it to Ansgar. Finally the list should be available for download at the museum; what could be the appropriate location for that?
Below I will start the list with the HP 71b file types described in Appendix D of th IL-Manual Dave pointed us to.
Hi Dave, the problem with the implementation bytes ( I will stick to that term from now on; I called it "General Purpose field" ) is resolvable, I think.
But at first I would like to give my view to your doubts about the general benefit of a tool that allows us to exchange files between DOS file system and LIF image.
You mentioned that it is convenient to extract an HP 71 ROM image to DOS for use with an emulator. Of course the same holds true for HP 41 rom files, not only for use in an emulator, but also for upload to a 41CL via serial interface, for example.
But these special cases are beside the point. I want to have a tool that allows me to compose my personal LIF files in a convenient way, in a graphical environment (Windows). For example I want to combine HP 41C programs that share a certain aspect in one LIF image. Some of the files may reside in the swap disks, some may have been written by myself, another one might have been sent to me as an email attachment. I don't want a whole LIF image for every single file.
And now about the lost information: the implementation bytes.
One way to preserve that information was to add a LIF header to the file.
Another way ( see series80 web site ) was to add the information as a leader ( prefix bytes ) to the file itself, a very similar solution.
I propose a different approach: Addition of the implementation bytes to the file name.
Exactly that is already done with the file type ( in HPDir), it is appended in the form ".#FFFF", where FFFF is a four digit hex number denoting the file type.
Why shouldn't we expand that mechanism and build the file name that way:
"AAAAAAAAAA#XXXXXX.#FFFF", where the A's build the 10 character file name, and the 6 hex digits "XXXXXX" denote the implementation bytes?
Maybe that doesn't look nice as a file name in a list, but HPDir could suppress the additional information when displaying file names, of course.
Now we could freely copy and move files between LIF images (which show up as folders in HPDir) without loss of any information.
By the way, the next step in realizing the perfect LIF tool could be: Implementation of viewers for (the most common) file types. A double click on an HP 71 Basic File should automatically start something like "TRANSFORM INTO TEXT" (by invoking HP71Emu, for example, not necessary to reinvent the wheel ) and show the corresponding text file.

The main file types for the HP 71B:
some file types come in different flavors, due to additional flags for PRIVATE and SECURED; I denote these with _S, _P or _SP respectively.

File Type (hex) Name Description
0001 TEXT
E0D0 SDATA HP 41 - file type
E0D5 TEXT_S
E0F0 DATA
E0F1 DATA_S secured DATA file
E204 BIN71 binary program
E205 BIN71_S binary prog. secured
E206 BIN71_P binary prog. private
E207 BIN71_SP bin. prog. secured private
E208 LEX71
E209 LEX71_S
E20C KEY71
E20D KEY71_S
E214 BAS71
E215 BAS71_S
E216 BAS71_P
E217 BAS71_SP

Dave told us that the implementation bytes for the HP 71 binary files ( LEX and BIN, I suppose ) are the file size in nibbles.
Does anyone know whether the other file types listed above make use of the implementation bytes?
Find all posts by this user
Quote this message in a reply
09-26-2014, 10:24 PM
Post: #8
RE: LIF File Types: HP 41, 71, 75, series 80
Thank you J-F,
yes it seems that detailed knowledge of the implementation bytes is not necessary for our purposes, it is just important to preserve that information during the process of copying ( or adding / extracting from/to DOS ).
Nevertheless it would be nice to have as much detailed information as possible for our new database.

I will translate J-Fs signed integers to 4 digit hex tomorrow. Hey, seems to be a nice little task for a programmable calculator! :-)
What about the file types created by AMPI Stat? Are there special files created by DATA TRANS or DATA COM modules, or by Curve Fit ?
Even software that wasn't included in a rom, but distributed on disks or tape, could have established their own file types. Wasn't there a spreadsheet program similar to HP 75 Visicalc for the HP 71? Certainly there is a file type for spread sheets?

What about file types for the 41? Files for buffers, X-Memory, Rom-Images in different formats, ...
Angel? Where are you? :-)

I am sure there are many more file types, but nevertheless J-Fs list a very good starting point, thank you!
Find all posts by this user
Quote this message in a reply
09-26-2014, 10:42 PM (This post was last modified: 09-26-2014 10:49 PM by Dave Frederickson.)
Post: #9
RE: LIF File Types: HP 41, 71, 75, series 80
(09-26-2014 10:03 PM)Michael Fehlhammer Wrote:  Now we could freely copy and move files between LIF images (which show up as folders in HPDir) without loss of any information.

There's more to the LIF header than that. You'd loose the file creation date and time, for one thing, but that's not critical. Or, we could encode it into the filename, like the implementation bytes. Smile

(09-26-2014 10:03 PM)Michael Fehlhammer Wrote:  Does anyone know whether the other file types listed above make use of the implementation bytes?

The last page of Appendix D in the above manual lists the implementation bytes for the HP-71 file types.

Dave
Find all posts by this user
Quote this message in a reply
09-27-2014, 07:58 AM
Post: #10
RE: LIF File Types: HP 41, 71, 75, series 80
(09-26-2014 10:42 PM)Dave Frederickson Wrote:  There's more to the LIF header than that. You'd loose the file creation date and time, for one thing, but that's not critical. Or, we could encode it into the filename, like the implementation bytes. Smile

The DOS file system also maintains file attributes and metadata like creation time and date, we could make use of that.
Find all posts by this user
Quote this message in a reply
09-27-2014, 09:34 AM
Post: #11
RE: LIF File Types: HP 41, 71, 75, series 80
I always preferred the approach of putting the LIF directory entry into the first 32 bytes of the file on non-LIF filesystems, so that host software can tell what kind of file it is, and record lengths and such. However, not much software supports that.
Find all posts by this user
Quote this message in a reply
09-27-2014, 04:43 PM (This post was last modified: 09-27-2014 06:36 PM by Dave Frederickson.)
Post: #12
RE: LIF File Types: HP 41, 71, 75, series 80
(09-27-2014 09:34 AM)brouhaha Wrote:  I always preferred the approach of putting the LIF directory entry into the first 32 bytes of the file on non-LIF filesystems, so that host software can tell what kind of file it is, and record lengths and such. However, not much software supports that.

I was going to suggest that as well. Why create a new scheme to maintain the LIF header information when one already exists. HPILLINK prepends the LIF header when copying the file to the DOS file system and then utilizes that information when copying the file to a LIF disc or image. What would be useful is to enhance HPDir to:
  1. Have a command to strip the header from the DOS file so, for example, a ROM image could be used with an emulator.
  2. Have a command to create the LIF header. See J-F Garnier's aLIFHdr and Appendix II of Dan McDonald's HP-IL Files article.
  3. This might just be wishful, but add support for copying DOS files to/from DOS images for use with the Portable PLUS.
Consider that there may be people with files with the LIF headers or that could benefit from a tool that runs on newer systems. Also, the entire LIF/SWAP folder on the Museum's FTP site is in this format.

Dave
Find all posts by this user
Quote this message in a reply
09-27-2014, 05:19 PM
Post: #13
RE: LIF File Types: HP 41, 71, 75, series 80
I going through the text files to see what is interesting. I am like a kid in a candy store - even though I do not have a PIL box.
Visit this user's website Find all posts by this user
Quote this message in a reply
09-27-2014, 06:41 PM
Post: #14
RE: LIF File Types: HP 41, 71, 75, series 80
(09-27-2014 05:19 PM)Eddie W. Shore Wrote:  I am like a kid in a candy store - even though I do not have a PIL box.

It's too late. You "drank the Kool-Aid". I predict that you will soon be the proud owner of a PIL-Box. Smile
Find all posts by this user
Quote this message in a reply
09-28-2014, 12:29 AM
Post: #15
RE: LIF File Types: HP 41, 71, 75, series 80
(09-27-2014 05:19 PM)Eddie W. Shore Wrote:  I going through the text files to see what is interesting. I am like a kid in a candy store - even though I do not have a PIL box.

For those not at HHC 2014, you may be happy to hear that ALL the text files on all 33 swap disks (LIF1 and HP-75 text), as well as all the text files on my 66 LIF disks, are available online as ordinary text files that you can see on your computer screen with a single click. Just visit the subfolders here:

SWAP disks
HORN disks

The HP-75 text files have .75.txt as their extension. The LIF1 files have just .txt as their extension. Happy spelunking!

The files with a .dat extension are binary images of the entire disk, mountable via ILPer and a PIL-Box. Most of the other files are indexes and other useful stuff.

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
09-29-2014, 12:44 AM
Post: #16
RE: LIF File Types: HP 41, 71, 75, series 80
Dave, I can see the benefit of prepending a header to a LIF file ( when extracting it to DOS ), if there are programs which make use of that.
Obviously there are - at least - two variants:
a) a complete LIF header is added, thus simulating a complete LIF image, including volume name etc., and a directory with just one entry. Advantage: The (.dat or .hpi) file can be used as input for PIL-box, without further additions.
b) only the 32 bytes - directory entry is added; seems more logical and saves space ( unimportant, of course ). The entry contains all information about the file, that is: size, type, creation date/time and implemetation bytes.
We would have to agree on one of these variants.

I proposed to add the implementation bytes ( along with the file type ) to the DOS file name, because this might be closer to the current implementation of HPDir and probably less effort for Ansgar Kückes to realize.


Thanks to J-F's ILvlif tool and LIFDISK.txt from the swap disks we now have the most common file types:

File Type (hex) Name Description
0001 TEXT
00FF D-LEX Disabled LEX file (HP 71)
E008 BIN8x Series 80 binary prog.
E010 DTA8x
E020 BAS8x
E040 ALL41 HP 41 Write all file
E050 KEY41
E052 TXT75
E053 APP75
E058 DAT75
E060 STA41 HP 41 Status
E070 X-M41 Rom files ( W&W Rambox, Eramco ) and X-Mem files
E080 PGM41
E088 BAS75
E089 LEX75
E08A WKS75 Visicalc worksheet
E0D0 SDATA HP 41 Data
E0D5 TEXT_S
E0F0 DAT71 HP 71b Data
E0F1 DAT71_S secured DATA file
E204 BIN71 binary program
E205 BIN71_S binary prog. secured
E206 BIN71_P binary prog. private
E207 BIN71_SP bin. prog. secured private
E208 LEX71
E209 LEX71_S
E20A LEX71_P ?
E20B LEX71_SP ?
E20C KEY71
E20D KEY71_S
E214 BAS71
E215 BAS71_S
E216 BAS71_P
E217 BAS71_SP
E218 FTH71 Forth 71
E21C ROM71
E942 SYS9k Series 9000
E946 HP-UX
E950 BAS9k
E961 BDA9k
E971 BIN9k
EA0A DTA9k
EA32 COD9k
EA3E TXT9k

I am sure there are several HP 41 modules which define their own file formats ( HEPAX, e.g. ? ), as well as HP 71 modules ( Data Acquisition, AMPI Stat ? ).
Who knows the details?
Find all posts by this user
Quote this message in a reply
09-29-2014, 02:25 AM
Post: #17
RE: LIF File Types: HP 41, 71, 75, series 80
(09-29-2014 12:44 AM)Michael Fehlhammer Wrote:  I am sure there are several HP 41 modules which define their own file formats ( HEPAX, e.g. ? ), as well as HP 71 modules ( Data Acquisition, AMPI Stat ? ).
Who knows the details?

This is going very well, thanks to all that are contributing, and to Michael again for opening the door to make this happen.

I recently got a '71 Data Acq Pac; I will review the docs to see what custom file types it uses.

Also, I will be receiving a '75 Surveying ROM manual shortly and will check that and report as well.

Finally, I recently also got a '75 I/O ROM and have not read all of the manual yet. I will look to see if it too uses custom file types, but it seems unlikely.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
09-29-2014, 02:36 AM
Post: #18
RE: LIF File Types: HP 41, 71, 75, series 80
(09-29-2014 12:44 AM)Michael Fehlhammer Wrote:  I can see the benefit of prepending a header to a LIF file ( when extracting it to DOS ), if there are programs which make use of that.
As I mentioned, the reason to consider the 32-byte LIF header being prepended to the file is because there are programs that make use of this format. HPILLink and Link Plus are two programs that come to mind.

Dave
Find all posts by this user
Quote this message in a reply
Post Reply 




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