Post Reply 
HP 75 - GLOBALS file anyone?
11-24-2016, 11:47 AM (This post was last modified: 11-24-2016 04:09 PM by Martin Hepperle.)
Post: #1
HP 75 - GLOBALS file anyone?
HI,

I am setting up a process to assemble HP 75 LEX files on Everett Kasers HP 85 emulator, extracting the assembled code from the LIF image, add the HP 75 header and finally writing the result to a LIF image to be used with e.g. PIL box or LIFUTIL and a real HP 75.

I have also started the tedious work of typing in global addresses for the HP 75 ROMs that would go into the GLOBALS file. So far I have all from the ROM0 and a few additional ones.
I found extensive entry point lists in the PPC CoJ (unfortunately rather poor scans) and also selected addresses in the handful of assembler source files for the HP 75 (most are for the Forth assembler) in PPC-J and DATAFILE.

I have also taken apart the NOMAS PDF documents, split the quadrants and reassembled the individual pages to be more easily readable.

Now I was wondering whether someone might already have such a list of HP 75 ROM entry points in machine readable form?

Martin
Find all posts by this user
Quote this message in a reply
11-24-2016, 03:23 PM
Post: #2
RE: HP 75 - GLOBALS file anyone?
(11-24-2016 11:47 AM)Martin Hepperle Wrote:  I am setting up a process to assemble HP 75 LEX files on Everett Kasers HP 85 emulator...

Cool project Martin! Any chance of an HP-86/87 version as well? I know the emulator can be configured for all models, but I still prefer real machines...

A slightly related question: I've recently discovered the HP-75 HELP LEX file, which lists all keywords in installed ROMS and LEX files. (btw, some very curious looking commands in there, e.g. "ARE YOU THERE", "HICUP", "KUBLA KHAN", etc.)

Are you aware of any roughly equivalent command for Series-80 (in my case 86/87)?

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
11-24-2016, 04:02 PM (This post was last modified: 11-24-2016 04:04 PM by Martin Hepperle.)
Post: #3
RE: HP 75 - GLOBALS file anyone?
(11-24-2016 03:23 PM)rprosperi Wrote:  A slightly related question: I've recently discovered the HP-75 HELP LEX file, which lists all keywords in installed ROMS and LEX files. (btw, some very curious looking commands in there, e.g. "ARE YOU THERE", "HICUP", "KUBLA KHAN", etc.)

Are you aware of any roughly equivalent command for Series-80 (in my case 86/87)?

I think there is no BPGM for the Series-80 computers that does this.

In case of the HP 75 it is relatively easy to look at LEX files because the file system is in memory. In case of the Series 80 you would have to load the BPGM into memory first. Then you could use a PEEK() function to walk along the keyword table, very similar to how I handle ROM keywords.
One could of course write something like that for the 86 by reading the disk using a READSECTOR routine but as I already have a Java program mentioned in the next paragraph this is sufficient for my purpose.

What I have written is a HP 86 program which does a "system inventory". It can list the installed ROMs, the interfaces and for ROMs can also list the keywords found in that ROM. I have nothing to handle BPGMs directly on the HP 86.

For BPGMs and other files I use a Java program which opens a LIF image file and lists all files with their content. For BPGMs it dumps something like the following, including the keywords:
Code:
==============================================================
file name      = "IPBIN87   "
file type      = e00a (Series 80 binary program (file security 2) file)
start record # = 204 = 0xcc
extent from 52224 to 56048 = 0xcc00 to 0xdaf0 (bytes from start of file)
data length    = 3825 = 0xef1 (bytes)
block count    = 15 = 0xf (256 byte records)
volume info    =  volume # = 1, (last volume)
serial number = 0x00000000
implementation data for 'HP-85'
start sector/record        = 204
length in sectors/records  = 15
length in bytes            = 3825
bytes per sector/record    = 256

------------------------------
content of file:    Series-80 Binary Program: 
------------------------------
program control block:
    BPGM name:' IPBI'
    { HP-86/87 Binary
    file name: 'IPBIN87   '
    BPGM#:     18
    absAddr:  0 (if absolute)
    }
    length:    3825 bytes
    Type:      2
    sec.flag:  0
    baseAddr:  36952 (start of BPGM)
------------------------------
    runtime:   34
    asciis:    158
    parse:     80
    errmsg:    2850
    init:      419
------------------------------
23 keywords:
- 'CPRINT' runtime @ 1939 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CLINE' runtime @ 1636 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CCURSOR' runtime @ 1686 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CCLEAR' runtime @ 1718 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CWRITE' runtime @ 1859 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CDISP' runtime @ 1939 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'ON KBD' runtime @ 567 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'OFF KBD' runtime @ 697 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'ON CCODE' runtime @ 1558 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'OFF CCODE' runtime @ 1623 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CLPOS' runtime @ 1755 (type=0, class=45d=\055o) (function or other, numeric function)
- 'CCPOS' runtime @ 1734 (type=0, class=45d=\055o) (function or other, numeric function)
- 'CCHR$ ( N, N )' runtime @ 1776 (type=0, class=46d=\056o) (function or other, string function)
- 'KBD$' runtime @ 719 (type=0, class=46d=\056o) (function or other, string function)
- 'FIND ( $ )' runtime @ 803 (type=0, class=45d=\055o) (function or other, numeric function)
- 'CONVERT KBD PAIRS ; ' runtime @ 841 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CONVERT KBD INDEX ; ' runtime @ 846 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'CONVERT KBD' runtime @ 871 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'SGCLEAR' runtime @ 881 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'KEYBOARD IS' runtime @ 2922 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- 'LINPUT' runtime @ 1231 (type=2, class=33d=\041o) (BASIC statement, legal after THEN, reserved word)
- '~' runtime @ 1236 (type=0, class=36d=\044o) (function or other, invisible)
- 'HGL$ ( $ )' runtime @ 2312 (type=0, class=46d=\056o) (function or other, string function)
==============================================================

Attached is a tab separated list of some HP 86/87 BPGMs with their keywords which I extracted from three disks recently uploaded to the Series-80 IO.Group. These disks contain most of the available BPGMs for the 86/87.
This file was created by my Java program and filtering its output using a Python script. You can read it into e.g. Excel to produce a searchable/filterable table.
Note that the BPGM defines the valid arguments only for functions - for keywords there is no way to automatically find out how to use them (except by looking into the source code of the parser).

Martin


Attached File(s)
.txt  assembler-keywords.tab.txt (Size: 48.13 KB / Downloads: 15)
Find all posts by this user
Quote this message in a reply
11-25-2016, 04:33 PM
Post: #4
RE: HP 75 - GLOBALS file anyone?
I searched to file list that comes with the German HP 75 Assembler ( distributed by W&W ), but unfortunately there is only one text file that contains just 10 entry points; it obviously is only meant as an example file how to create one's own GLOBALS file.

Are (or will be) your modified NOMAS pdf files available publicly?
Also, can you please provide the link to the mentioned series-80 BPGM disks?
Find all posts by this user
Quote this message in a reply
11-26-2016, 08:40 AM
Post: #5
RE: HP 75 - GLOBALS file anyone?
(11-24-2016 11:47 AM)Martin Hepperle Wrote:  Now I was wondering whether someone might already have such a list of HP 75 ROM entry points in machine readable form?

There was a HP75 LEX file called ENTRYPNT that was used to decode hex addresses into symbolic labels (the entry points). It is mentioned in the note 2 at the end of this document:
ftp://www.hpmuseum.org/lif/swap/swap10/disasmdc.txt

Fortunately, I found this file in one of my archive LIF disc images!
Here is a dump of the beginning of the LEX:
-addr- 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
000000 8c 86 00 2b 8d 4c 8a de 69 9e 45 4e 54 52 59 50 ...+.L..i.ENTRYP
000010 4e 54 32 03 0c 00 14 00 10 00 1d 00 21 00 e6 09 NT2.........!...
000020 24 00 e6 09 ff ff 41 44 44 52 45 53 53 a4 ff 00 $.....ADDRESS...
000030 ff 61 02 9e 18 2e 58 ce 12 1f 5a 0a e3 c9 07 00 .a....X...Z.....
000040 fa 04 ce ac 4c 59 62 18 a5 40 a8 22 41 ce 03 0e ....LYb..@."A...
000050 40 88 5a 8a f6 f6 41 b1 fb 09 ce 18 24 04 f8 d3 @.Z...A.....$...
000060 6e 0a e5 56 e5 54 a9 81 00 d3 a3 82 7c 14 e1 f6 n..V.T......|...
000070 04 ce ac 4c 22 40 a8 29 40 88 43 14 e0 01 a2 f5 ...L"@.)@.C.....
000080 f7 cf 7f a2 40 88 41 b1 fb 09 6a 22 c1 f6 dd 7c ...@.A...j"...|
000090 16 e5 9e 45 41 43 37 41 2e 5a 45 52 cf 46 42 43 ...EAC7A.ZER.FBC
0000a0 44 41 42 4f 52 d4 33 41 34 33 41 42 53 b5 33 41 DABOR.3A43ABS.3A
0000b0 34 36 41 42 53 35 ad 46 38 45 41 41 42 54 48 52 46ABS5.F8EAABTHR
0000c0 c4 33 35 46 32 41 43 4d 4e c4 37 32 31 30 41 43 .35F2ACMN.7210AC
0000d0 52 45 41 d4 33 38 30 41 41 44 44 31 b5 33 38 30 REA.380AADD1.380
0000e0 46 41 44 44 32 b0 33 38 30 34 41 44 44 b9 46 30 FADD2.3804ADD.F0
0000f0 34 32 41 44 44 d2 33 37 44 34 41 44 44 52 4f c9 42ADD.37D4ADDRO.

The entry points are stored in a list of strings with the labels sorted from EAC7 A.ZERO, FBCD ABORT, ... to 0899 ZZZZZZ.

Attached is a LIF disc image with the LEX. It should not be too difficult for you to extract the table. Please share the result !

Note: I was unable to find the equivalent HP71 EQSORTED LEX mentioned in the same document, although there is a text file (also named EQSORTED) on the swap07 disc.

J-F


Attached File(s)
.zip  HP75ENTR.zip (Size: 7.05 KB / Downloads: 18)
Visit this user's website Find all posts by this user
Quote this message in a reply
11-27-2016, 01:27 AM
Post: #6
RE: HP 75 - GLOBALS file anyone?
(11-26-2016 08:40 AM)J-F Garnier Wrote:  Attached is a LIF disc image with the LEX. It should not be too difficult for you to extract the table. Please share the result !

Thanks for the LEX file.
Here are the extracted symbolic names and addresses with the ROM-id added.

Jakob


Attached File(s)
.xlsx  HP-75 ENTRYPNT.xlsx (Size: 37.49 KB / Downloads: 15)
Find all posts by this user
Quote this message in a reply
11-27-2016, 09:20 AM
Post: #7
RE: HP 75 - GLOBALS file anyone?
(11-27-2016 01:27 AM)Jakob Sorensen Wrote:  Here are the extracted symbolic names and addresses with the ROM-id added.

Thanks! How did you separate the entries for the ALTROM and MELROM?

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
11-27-2016, 04:43 PM
Post: #8
RE: HP 75 - GLOBALS file anyone?
(11-24-2016 04:02 PM)Martin Hepperle Wrote:  I think there is no BPGM for the Series-80 computers that does this.

I've since found the BINTAB program, part of the set of BPGM files uploaded by the other Martin (sixtiestex) which is supposed to do this.

(11-24-2016 04:02 PM)Martin Hepperle Wrote:  ...
What I have written is a HP 86 program which does a "system inventory". It can list the installed ROMs, the interfaces and for ROMs can also list the keywords found in that ROM. I have nothing to handle BPGMs directly on the HP 86.

It would be great if you could upload this system inventory program (on the Series-80 list makes more sense than here) as together with BINTAB, will provide all the keyword info in the system.

(11-24-2016 04:02 PM)Martin Hepperle Wrote:  ...
Attached is a tab separated list of some HP 86/87 BPGMs with their keywords which I extracted from three disks recently uploaded to the Series-80 IO.Group. These disks contain most of the available BPGMs for the 86/87.
This file was created by my Java program and filtering its output using a Python script. You can read it into e.g. Excel to produce a searchable/filterable table.
Note that the BPGM defines the valid arguments only for functions - for keywords there is no way to automatically find out how to use them (except by looking into the source code of the parser).

Martin

Thanks very much for sharing this useful data Martin! Excel will make this easy to locate entries for what seems to be just about all the (general purpose) BPGMs available for S86/87 use.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
11-27-2016, 09:03 PM
Post: #9
RE: HP 75 - GLOBALS file anyone?
(11-27-2016 09:20 AM)J-F Garnier Wrote:  Thanks! How did you separate the entries for the ALTROM and MELROM?

Tedious use of the PPC list and some sorting in Excel.
Find all posts by this user
Quote this message in a reply
11-29-2016, 10:25 AM (This post was last modified: 11-29-2016 11:38 AM by Martin Hepperle.)
Post: #10
RE: HP 75 - GLOBALS file anyone?
(11-27-2016 01:27 AM)Jakob Sorensen Wrote:  
(11-26-2016 08:40 AM)J-F Garnier Wrote:  Attached is a LIF disc image with the LEX. It should not be too difficult for you to extract the table. Please share the result !

Thanks for the LEX file.
Here are the extracted symbolic names and addresses with the ROM-id added.

Jakob
Jean-Francois and Jacob,

thank you very much for the list - I will crosscheck with my Excel list and if I have more entry points merge both lists. My list has a few more like the I/O addresses and some of the EQUates. But now my eyes are tired from typing them in...

I am using it with Everett Kasers Series-80 Disassembler to disassemble the
HPILCMD LEX file (using the I/O ROM listing to check and understand).

Finally I am able to report that I have re-assembled the RIOWIO LEX file from assembler source code on the HP 85 (Emulator) and load it into my HP 75 via the PIL-box. A HP 85 program is used to convert the BPGM to a LEX file.
And: it works like the original RIOWIO file. This opens a new way for me to make LEX files in a more comfortable way than trying to do it on the HP 75 with its limited memory.
Now I have to document the process and the tools and put everything onto some web site.

Martin
Find all posts by this user
Quote this message in a reply
11-29-2016, 11:30 AM
Post: #11
RE: HP 75 - GLOBALS file anyone?
(11-25-2016 04:33 PM)Michael Fehlhammer Wrote:  I searched to file list that comes with the German HP 75 Assembler ( distributed by W&W ), but unfortunately there is only one text file that contains just 10 entry points; it obviously is only meant as an example file how to create one's own GLOBALS file.

Are (or will be) your modified NOMAS pdf files available publicly?
Also, can you please provide the link to the mentioned series-80 BPGM disks?

Michael,
  • That W&W assembler - was it running on the HP 75? I understand that it was a try to make some money from some knowledge (limited at the time) about the HP 75 and HP 86/87 and its assembler language and maybe not worth to try it today. And there still seems to be a difficulty with the copyright of W&W products (do they still believe that they can make money from these old things?).
  • Of course I can make the modified NOMAS documents available. My copies are now bookmarked - not very systematic, but better than nothing. One would have to sort them pages one day to group them into topics.
    In principle it would make sense to put them on this web site to complement the original documents or even replace the original copies. Not sure how to proceed here.
  • The mentioned Series 80 binary program disk images can be found on the IO Group site
    https://groups.io/g/hpseries80/
    in the files/Binary/Program listsings (sic!) folder. There are 3 image files, named HP-87XX. They contain a nice collection of most (all?) known BPGMs for the 86/87. Provided by Martin Cragg, I believe.

Martin
Find all posts by this user
Quote this message in a reply
11-29-2016, 11:39 AM (This post was last modified: 12-07-2016 09:41 AM by Martin Hepperle.)
Post: #12
RE: HP 75 - GLOBALS file anyone?
(11-27-2016 01:27 AM)Jakob Sorensen Wrote:  
(11-26-2016 08:40 AM)J-F Garnier Wrote:  Attached is a LIF disc image with the LEX. It should not be too difficult for you to extract the table. Please share the result !

Thanks for the LEX file.
Here are the extracted symbolic names and addresses with the ROM-id added.

Jakob
Jean-Francois and Jacob,

thank you very much for the list - I will crosscheck with my Excel list and if I have more entry points merge both lists. My list has a few more like the I/O addresses and some of the EQUates. But now my eyes are tired from typing them in...

I am using it with Everett Kasers Series-80 Disassembler to disassemble the
HPILCMD LEX file (using the I/O ROM listing to check and understand).

Finally am able to report that I was able to re-assemble the RIOWIO LEX file on the HP 85 (Emulator) and load it into my HP 75 via the PIL-box. A HP 85 program is used to convert the BPGM to a LEX file.
And: it works like the original RIOWIO file. This opens me a new way to make LEX files in a more comfortable way than trying to do it on the HP 75 with its limited memory.
Now I have to document the process and the tools and put everything onto some web site.

Martin

[EDIT: 2-DEC-2016: added my consolidated ROM address table with a text column suitable for usage with Everett Kaser's Series-80 disassembler program. This can be used to disassemble HP 75 LEX files.]
[EDIT: 6-DEC-2016: Excel table updated (1 typo in DADs corrected).]


Attached File(s)
.xlsx  HP-75-ROM-Addresses.xlsx (Size: 145.25 KB / Downloads: 4)
Find all posts by this user
Quote this message in a reply
12-02-2016, 09:05 AM
Post: #13
RE: HP 75 - GLOBALS file anyone?
(11-27-2016 04:43 PM)rprosperi Wrote:  It would be great if you could upload this system inventory program (on the Series-80 list makes more sense than here) as together with BINTAB, will provide all the keyword info in the system.
Bob,

I have updated a HP86TOOLS.ZIP file to Files/Software folder in the https://groups.io/g/hpseries80 web site.
It contains the simple system inventory, a memory dump and a disk dump program as well as the HP 75 LEX file converter, adapted to the HP 86/87.

Martin
Find all posts by this user
Quote this message in a reply
12-02-2016, 01:48 PM
Post: #14
RE: HP 75 - GLOBALS file anyone?
(12-02-2016 09:05 AM)Martin Hepperle Wrote:  Bob,

I have updated a HP86TOOLS.ZIP file to Files/Software folder in the https://groups.io/g/hpseries80 web site.
It contains the simple system inventory, a memory dump and a disk dump program as well as the HP 75 LEX file converter, adapted to the HP 86/87.

Martin

Wow, thanks Martin, I will download it and check it out. I appreciate you sharing your tools to help exploration of S80, should be illuminating.

The 75 LEX converter also looks interesting. I'm not even sure how 75 LEX files were built back in the day; as far as I recall, there were no HP tools provided, the only option being a BASIC program to 'POKE' the hex (octal?) bytes into RAM.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
12-02-2016, 03:07 PM
Post: #15
RE: HP 75 - GLOBALS file anyone?
(12-02-2016 01:48 PM)rprosperi Wrote:  ... I'm not even sure how 75 LEX files were built back in the day; as far as I recall, there were no HP tools provided, the only option being a BASIC program to 'POKE' the hex (octal?) bytes into RAM.
Bob,

so far I have seen three main methods to create LEX files for the HP 75, all running on the HP 75:
  1. Entering HEX bytes into a file (either POKEing directly into a HP 75 memory file or writing to a 82161 cassette) and setting the file type/access bits to "LEX".
    HEX listings for a few LEX files can be found e.g. in Datafile or the PPC journal. The drawback is that only the HEX bytes were printed and no assembler input file. This was the most common method, suitable for everyone without the need to have an assembler. Just a BASIC program, a POKE LEX file and often the I/O ROM.
  2. Using a RAM based Forth system with an assembler written in Forth. While this shows the power of the Forth system the drawback is that the Forth words used make the input file read a bit funny compared to what one is used from the S-80 assembler. But close and much better than just having HEX bytes.
    Also free memory was very limited, only suitable for small LEX files.
  3. Using a BASIC program (e.g. ASM75 or one that was sold by W&W in Germany). Here "real" mnemonics can be used, close or identical to the S-80 assembler syntax.

All these methods use the tight RAM of the HP 75 and often required the purging of intermediate files or swapping programs.

So far I have not read anything about people using external development tools (like my S-80 assembler approach).

Also I am not sure whether HP provided any development tools (except some for the module emulator). They obviously used HP 1000 systems with their KARMA assembler, probably the same setup as used for on-house S-80 development work.

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




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