Post Reply 
HP 75 - GLOBALS file anyone?
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: 17)
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: HP 75 - GLOBALS file anyone? - Martin Hepperle - 11-24-2016 04:02 PM



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