|Re: New HP-71B Program - YATZ71|
Message #4 Posted by Howard Owen on 17 Oct 2005, 6:15 a.m.,
in response to message #2 by Garth Wilson
Thanks for the detailed and interesting response, Garth!
The 71 came with only about 17K of RAM, of which 16K was available to the user. Third-party modules allowed adding a whole lot more. My own 71 has an extra 160KB of RAM in two ports, and, if you wanted to pay enough enough back then, there was a company that would hard-wire 256KB inside so it wouldn't take up any of your ports.
I have a 64K CMT module and three HP 4K modules in my work system. That gives me more than a stock Apple ][ had. The theoretical maximum of 512K, or even the 256K you mention, were huge by contemporary standards. But I stand by the description of the machine as "memory constrained," compared to the 1GB in two of my servers, my laptop and my main workstation, that is. 8)
A factor that made HP-71 BASIC potentially so great was the LEX (Language EXtension) file contributions from the user groups which added so many great functions to the BASIC. LEX files are written in assembly and add statements, functions, operators, and program structures that actually become part of the BASIC. They usually come with BASIC programs to get them entered into memory without needing an assembler or text editor. You might be able to get much of that from the CD ROMs offered by this website, hpmuseum.org. I keyed mine in from the CHHU Chronicle, the magazine of the Club of Hewlett-Packard Handheld computer Users in the 1980's.
I can access the swap disks, so I can load all the great LEX files from that source. I agree that's one of the coolest features of the HP-71B, and of the HP-75 before it.
WorkBook 71, by Richard Harvey in Glendale, AZ is a set of programs for spreadsheet, file management, and report generation. He included a full-screen text editor for use with one of the video adapters. Maybe some here knows if WB71 is on the CD ROMs.
I don't think it is. One of my interests in working with these machines is to conserve old software and documentation. If anyone has a copy of this software lying around, I'd love to hear from you.
Although the 71 BASIC variable naming method was definitely suboptimal, their system did allow you to run everything together on a line, with no spaces in most cases, and the 71 could figure it all out. I don't think that would be possible with long variable names.
That's making a virtue from necessity. The underlying problem was the lack of memory.
The Paname module provided other programming structures like a multi-line CASE statement. I never did get that one myself. I don't know if there might be LEX files available that you could key in yourself that might get the same functions.
As HrastProgrammer notes below, I think you mean the JPC ROM. I've played with this great ROM using emu71, including the nice structured programming elements. It certainly goes a long way toward making me more comfortable with the BASIC. With those mods, the HP-71 basic starts to approach the flexibility and power of Rocky Mountain BASIC, which was the best contemporary BASIC I know of.
There's a problem with relying on a custom ROM though. If you want to distribute software, then you have to assume your users will have the ROM you are using. For example, In my current efforts with the HP-71B, I'm trying to disassemble certain LEX files so I can add to them. One disassembler I've come across is DISASMKW, by Mike Markov. Here are the first two lines of that program:
0010 ! DISASMKW - (c) by Michael Markov, 1988/06/13 version 123
0020 ! Needs TSORTLX9, DISASMLX, EDLEX, JPCROM, HPILROM AND STRINGLX
Yikes! Well, I can still use this software, but only under emu71, since I don't have a real JPC ROM at my disposal.
The 71 is sure slow by today's standards, but was very fast at math for its time. With the math module, you could do complex FFTs twice as fast as a PC running GWBASIC, and a whole lot bigger. It took about 40 minutes for me to do 8K-point FFTs on data downloaded from a digital oscilloscope over the IEEE-488 interface. A 1K-point took about 4 minutes, using 12-digit floating-point (which was overkill).
Interesting measure of the performance of this little guy!
In terms of YATZ71, the slowness shows up in the graphics. I first tried to use BINIOR to write a cursor under the dice images. I got this to work, but it was unusably slow. (I could probably get reasonable speed with a custom implementation in assembly.) What I finally ended up doing was toggling the dice images in response to numeric inputs. This is still slow, but borders on being usable.
If you have the program in text form, you can do the search with a text editor. If the program is in BASIC form, there's a variable cross-reference program that lists all the variables used and where they are referenced in the program. You'll find it in the HP-71 Users' Library Solutions, Utilities book, HP number 00071-90066, which again might be available in the CD ROMs available from this website.
No, it's not there. There is a lack of extant material for the 71B on the Internet today. I want to try to remedy that, as far as I can, by providing a repository of such information at retrocalculator,com (or hp71.org, which I've also registered.) If you have any materials that you would like to donate to this effort, I'd be delighted to hear from you. 8)