The HELP lex75 file on the hpcc88 swap disk was mentioned in an early DATAFILE article. This utility lists all the keywords in memory, including those in RAM resident LEX files, and ROMs. The text file describing this is HELPDOC on the same swap disk. I reproduce it here courtesy of Tony Duell's nice LIF utilities for Linux. Following that is the result of running HELP on my HP-75C with the Math ROM and one of the peek/poke LEX files loaded. This last was obtainable because of JF Garnier's great EMU41, which allows me to redirect display output to a DOS file. (This is really a Linux file since EMU41 is running under DOSEMU, a virtual machine for DOS, and FreeDOS under Slackware Linux. I just love these hall-of-mirrors layers, don't you? 8)
THE HP-75 LEX COLUMN
CATALOGUE OF KEYWORDS
I recently discovered that very few owners of HP-75s, other than those who got
them in the early days and were then members of PPC-UK (as HPCC then was), know
that there is a LEXFILE which works rather like CAT 2 on the HP-41. With the
HELP Lexfile all the keywords in LEXFILES in RAM and in ROM can be listed
together with an indication of type (operator, statement, keyword etc) and a
little more information including, for functions, the types of parameters.
The HELP Lexfile adds one keyword to the system, HELP. The syntax is
HELP
or
HELP 'keyword'
HELP without a parameter will scan through all the LEXFILES, starting in RAM.
When using this form of HELP, DELAY should be set to a large value (eg 1000).
After invoking HELP almost any keyhit will move to the next available keyword.
Hitting [ATTN] will jump to the beginning of the next LEXFILE. Running off the
end of the list of keywords will end the HELP program. Alternatively, DELAY can
be set to zero and a printer set as the DISPLAY IS device. The listing will
then be printed.
HELP with a 'KEYWORD' as a parameter will display the available information
about that keyword only.
The information provided by HELP takes the form:
NNN x TYPE: NAME (parameter list)
where
NNN is the ROM ID as a decimal number
x is a character giving the version number of the LEXFILE
TYPE is the type of keyword which may be
STMT: programmable statement legal after THEN etc
stmt: programmable statement not legal after THEN etc
CMND: not programmable
FNC$: string function
FNC#: numeric function
OP#1: numeric unary operator
OP#2: numeric binary operator
OP$1: string unary operator
OP$2: string binary operator
OTHR: none of the above
In the case of functions the parameter list will be shown.
Parameters are defined as follows
$ string parameter
# numeric parameter
#() numeric array parameter
$() string array parameter
Below is a hexadecimal dump of the HELP LEXFILE that can be keyed in and turned
into the LEX file by following the instructions given in my article on pages 28
and 29 of Volume 7 Number 2 (March 1988) of Datafile. In this case call the
TEXT file HELPX (EDIT 'HELPX',TEXT) and MAKELX75 will produce the LEXFILE with
the name HELP. If you need copies of the MAKELX75 and PEEKPOKE files mentioned
in that article send me media (1 disk, 1 tape or 2 cards) and return postage and
I will get them to you as quickly as possible.
HELP L 524 Bytes ROM ID: 101
Line -------------------- Data -------------------- Check
1 4F B4 FA 01 8D 4C A1 26 0D 9F 48 45 4C 50 20 20 B8
2 20 20 65 00 0A 00 12 00 0C 00 17 00 1A 00 2D 00 2C
3 1B 00 FF FF 48 45 4C D0 FF 96 80 1D 9E CE 6D 46 1B
4 50 12 6C A9 B4 65 00 00 6F 0A E2 6C E5 9E A1 98 1A
5 74 93 CE 3A 1F F9 0C CE CC FD CE 11 1F 76 0A E3 33
6 5C 34 A3 56 B1 A3 82 7B 16 B5 53 00 7E A9 60 00 85
7 C3 7B B7 53 00 CE 48 48 0A BF 40 A9 65 00 CE 61 F2
8 47 9E 74 06 E5 56 E5 5E B9 A3 82 CE 8A 01 58 A9 1D
9 64 84 68 B1 FB 09 18 A7 CE 5A F3 68 B1 64 84 4C 34
10 06 E3 74 E3 98 50 B1 A3 82 18 A3 12 A3 10 B5 04 3E
11 00 D3 A5 82 58 18 B5 02 00 D3 A5 82 52 12 B5 0A 44
12 00 D3 A5 82 8B 8B 40 A8 30 40 8A 41 C8 20 F7 F9 13
13 40 88 88 41 12 A4 42 B9 A3 82 F6 04 58 CB 48 00 D2
14 42 18 E1 56 A9 74 84 CE 4B 08 F9 07 CE A3 07 56 28
15 0C A1 9E 42 10 E0 C8 80 F7 06 C8 FF F7 F1 F0 07 71
16 18 E1 F0 EF 42 10 E0 43 02 A0 CF 7F 16 E4 02 C0 01
17 F7 F2 74 91 F7 1E 7C 34 A1 40 16 A1 CD 74 84 3E 56
18 C1 F6 BD A9 74 84 42 00 E0 43 3C E0 02 C0 F6 B0 07
19 7E 8B F6 F2 7E 18 A5 D3 A5 82 78 3E B5 F8 FF 43 D4
20 3F A0 CF C0 F7 27 C8 40 F6 08 64 A9 43 4D 4E 44 C8
21 F0 12 C8 80 F6 08 64 A9 53 54 4D 54 F0 06 64 A9 A7
22 73 74 6D 74 42 A9 CF 01 0C C3 06 E5 9E 7F CF 3F 6F
23 C8 28 FA 3D C8 2C FB 20 64 A9 4F 50 20 20 7F C8 70
24 2A 66 FA 04 A8 24 F0 02 A8 23 7F 90 F3 05 67 A8 34
25 32 F0 03 67 A8 31 F0 17 F7 17 C8 2F FB 13 64 A9 93
26 46 4E 43 20 7F 90 67 F3 04 A8 23 F0 02 A8 24 F0 E3
27 06 64 A9 4F 54 48 52 64 C8 46 F6 35 99 78 81 81 07
28 81 98 F9 2D 42 A8 28 16 E4 7F 90 F5 05 42 A8 24 69
29 F0 03 42 A8 23 16 E4 78 85 7F 90 F5 05 42 A9 28 1A
30 29 E5 78 85 42 A8 2C E4 9B F8 DE 56 8B 42 A8 29 72
31 E4 64 B3 6E 84 66 A9 3A 20 B3 72 84 68 B3 65 84 0B
32 67 B2 6D 84 56 CD 65 84 B2 64 84 A9 64 84 CE E3 FA
33 07 42 18 E1 A9 C1 00 0C C3 06 E5 9E 09
34 F360
Roger Wiley, 1 Goughs Lane, BRACKNELL, Berkshire, RG12 2JR
And here is what the command produces on my machine. No wonder that "PEEK" alone didn't work!
101 � STMT: HELP
816 b STMT: HPOKE
816 b STMT: APOKE
816 b FNC$: HPEEK$($,#)
816 b FNC$: APEEK$($,#)
816 b FNC$: HEXEC$($,$,$)
816 b FNC$: AEXEC$($,$,$)
8195 a STMT: REDIM
8195 a STMT: MAT INPUT
8195 a STMT: MAT READ
8195 a STMT: MAT
8195 a STMT: CONT
8195 a FNC#: LOG2(#)
8195 a FNC#: LOGA(#,#)
8195 a FNC#: SINH(#)
8195 a FNC#: COSH(#)
8195 a FNC#: TANH(#)
8195 a FNC#: ASINH(#)
8195 a FNC#: ACOSH(#)
8195 a FNC#: ATANH(#)
8195 a FNC#: ROUND(#,#)
8195 a FNC#: TRUNCATE(#,#)
8195 a FNC#: FACT(#)
8195 a FNC#: BVAL($,#)
8195 a FNC$: BSTR$(#,#)
8195 a FNC#: FNORM(#())
8195 a FNC#: CNORM(#())
8195 a FNC#: RNORM(#())
8195 a FNC#: DOT(#(),#())
8195 a FNC#: DETL
8195 a FNC#: DET(#())
8195 a FNC#: LBND(#(),#)
8195 a FNC#: UBND(#(),#)
8195 a FNC#: SUM(#())
8195 a FNC#: ABSUM(#())
8195 a FNC#: MAXAB(#())
8195 a FNC#: AMAX(#())
8195 a FNC#: MINAB(#())
8195 a FNC#: AMIN(#())
8195 a OTHR: CRTOP
8195 a OTHR: CPTOR
8195 a OTHR: CACOSH
8195 a OTHR: CACOS
8195 a OTHR: CASINH
8195 a OTHR: CASIN
8195 a OTHR: CATANH
8195 a OTHR: CATN
8195 a OTHR: CCOSH
8195 a OTHR: CCOS
8195 a OTHR: CDET
8195 a OTHR: CEXP
8195 a OTHR: CINV
8195 a OTHR: CLOG
8195 a OTHR: CONJ
8195 a OTHR: CRECP
8195 a OTHR: CSINH
8195 a OTHR: CSIN
8195 a OTHR: CTANH
8195 a OTHR: CTAN
8195 a OTHR: INV
8195 a OTHR: PROOT
8195 a OTHR: TRN
8195 a OTHR: CTRN
8195 a OTHR: RSUM
8195 a OTHR: CSUM
8195 a OTHR: LUFACT
8195 a OTHR: CSQR
8195 a OTHR: FOUR
8195 a OTHR: CADD
8195 a OTHR: CSUB
8195 a OTHR: CDIV
8195 a OTHR: CMULT
8195 a OTHR: CPOWER
8195 a OTHR: CROSS
8195 a OTHR: SYS
8195 a OTHR: CSYS
8195 a OTHR: CMMULT
8195 a OTHR: CROOT
8195 a OTHR: CON
8195 a OTHR: ZER
8195 a OTHR: IDN
8195 a OTHR: CIDN
8215 a FNC#: FNGUESS
8215 a FNC#: IVALUE
8215 a FNC#: IBOUND
8215 a FNC#: INTEGRAL(#,#,#,$())
8215 a FNC#: FNROOT(#,#,$())
0 3 OP$2: &
0 3 OTHR: ;
0 3 OTHR: (
0 3 OTHR: )
0 3 OP#2: *
0 3 OP#2: +
0 3 OTHR: ,
0 3 OP#2: -
0 3 OTHR: .
0 3 OP#2: /
0 3 OP#2: ^
0 3 OP$2: #
0 3 OP$2: <=
0 3 OP$2: >=
0 3 OP$2: <>
0 3 OP$2: =
0 3 OP$2: >
0 3 OP$2: <
0 3 OP#1: -
0 3 OP#2: #
0 3 OP#2: <=
0 3 OP#2: >=
0 3 OP#2: <>
0 3 OP#2: =
0 3 OP#2: >
0 3 OP#2: <
0 3 OTHR: @
0 3 stmt: ON ERROR
0 3 STMT: OFF ERROR
0 3 STMT: DEF KEY
0 3 STMT: FN
0 3 STMT: AUTO
0 3 STMT: CAT ALL
0 3 STMT: LIST IO
0 3 FNC$: CAT$(#)
0 3 STMT: DISPLAY IS
0 3 STMT: CAT
0 3 STMT: LIST
0 3 STMT: NAME
0 3 STMT: DELAY
0 3 STMT: MERGE
0 3 STMT: CALL
0 3 STMT: READ #
0 3 STMT: FETCH KEY
0 3 STMT: WIDTH
0 3 STMT: POP
0 3 STMT: RUN
0 3 stmt: REAL
0 3 STMT: DISP
0 3 STMT: FETCH
0 3 STMT: PWIDTH
0 3 STMT: DEFAULT
0 3 STMT: GOTO
0 3 STMT: GOSUB
0 3 STMT: PRINT #
0 3 STMT: MARGIN
0 3 STMT: RESTORE #
0 3 STMT: INPUT
0 3 STMT: ASSIGN #
0 3 STMT: LET FN
0 3 STMT: LET
0 3 STMT: STANDBY
0 3 stmt: ON TIMER #
0 3 STMT: OFF TIMER #
0 3 STMT: ON
0 3 STMT: BYE
0 3 STMT: WAIT
0 3 STMT: PROTECT
0 3 STMT: PRINTER IS
0 3 STMT: PRINT
0 3 STMT: PLIST
0 3 STMT: RANDOMIZE
0 3 STMT: READ
0 3 STMT: RESTORE IO
0 3 STMT: RESTORE
0 3 STMT: RETURN
0 3 STMT: UNPROTECT
0 3 STMT: EDIT
0 3 STMT: OFF IO
0 3 STMT: STOP
0 3 STMT: PUT
0 3 STMT: TRACE FLOW
0 3 STMT: TRACE OFF
0 3 STMT: TRACE VARS
0 3 STMT: ENDLINE
0 3 STMT: CLEAR VARS
0 3 STMT: COPY
0 3 STMT: PURGE
0 3 STMT: RENAME
0 3 stmt: INTEGER
0 3 stmt: SHORT
0 3 STMT: DELETE
0 3 STMT: ROM missing
0 3 STMT: REM
0 3 stmt: OPTION BASE
0 3 stmt: END DEF
0 3 stmt: DATA
0 3 stmt: DEF FN
0 3 stmt: DIM
0 3 STMT: RENUMBER
0 3 STMT: END
0 3 STMT: !
0 3 stmt: FOR
0 3 stmt: IF
0 3 stmt: IMAGE
0 3 stmt: NEXT
0 3 STMT: BEEP
0 3 STMT: ASSIGN IO
0 3 STMT: CLEAR LOOP
0 3 STMT: CONT
0 3 STMT: CLEAR
0 3 OTHR: '
0 3 OTHR: TEXT
0 3 OTHR: BASIC
0 3 OTHR: LIF1
0 3 FNC#: RES
0 3 OP#2: INTO
0 3 OP#2: OR
0 3 OTHR: TO
0 3 OTHR: ON
0 3 OTHR: OFF
0 3 FNC#: IP(#)
0 3 FNC#: EPS
0 3 FNC#: FP(#)
0 3 FNC#: CEIL(#)
0 3 FNC#: MAX(#,#)
0 3 FNC#: SQR(#)
0 3 FNC#: MIN(#,#)
0 3 FNC#: MEM
0 3 FNC#: ABS(#)
0 3 FNC#: SGN(#)
0 3 FNC$: KEY$
0 3 FNC#: COT(#)
0 3 FNC#: CSC(#)
0 3 OTHR: APPT
0 3 FNC#: EXP(#)
0 3 FNC#: INT(#)
0 3 FNC#: LOG10(#)
0 3 FNC#: LOG(#)
0 3 FNC$: VER$
0 3 FNC#: SEC(#)
0 3 FNC$: CHR$(#)
0 3 FNC$: STR$(#)
0 3 FNC#: LEN($)
0 3 FNC#: NUM($)
0 3 FNC#: VAL($)
0 3 FNC#: INF
0 3 FNC#: PI
0 3 FNC$: UPRC$($)
0 3 OTHR: USING
0 3 OTHR: THEN
0 3 OTHR: TAB
0 3 OTHR: STEP
0 3 OP#2: EXOR
0 3 OP#1: NOT
0 3 OP#2: DIV
0 3 FNC#: ERRN
0 3 FNC#: ERRL
0 3 OTHR: CARD
0 3 OP#2: AND
0 3 OTHR: KEYS
0 3 OTHR: ELSE
0 3 FNC#: SIN(#)
0 3 FNC#: COS(#)
0 3 FNC#: TAN(#)
0 3 OP#2: TO
0 3 OTHR: [
0 3 OTHR: ]
0 3 OP#2: \
0 3 FNC#: POS($,$)
0 3 FNC#: DEG(#)
0 3 FNC#: RAD(#)
0 3 FNC#: FLOOR(#)
1 " STMT: ALARM
1 " STMT: LOCK
1 " STMT: OPTION ANGLE DEGREES
1 " STMT: OPTION ANGLE RADIANS
2 � STMT: TRANSFORM
2 � STMT: PACK
2 � STMT: INITIALIZE
2 � FNC$: TIME$
2 � FNC$: DATE$
2 � FNC#: TIME
2 � FNC#: DATE
2 � FNC#: ANGLE(#,#)
2 � FNC#: ACOS(#)
2 � FNC#: ATN(#)
2 � FNC#: ASIN(#)
2 � FNC#: RMD(#,#)
2 � FNC#: MOD(#,#)
2 � FNC#: RND