I gifted myself with a second HP-71B (ROM version 1BBBB). I’ve posted on this great machine in the past. This pocket computer from 1984 is really a nice machine. Among the many cool features, it has one of the best BASIC I’ve seen up to now. Although I’ve used the SHARP PC-1500 extensively when I was a teenager (the HP-71B was out of reach financially), I do consider the HP BASIC to be way superior to the SHARP implementation. As a little test, I’ve ported the running man graphic animation of the PC-1500 to the HP-71B (see video & pics).
The systems are pretty equivalent with few noticeable differences besides the different commands’ syntax. The HP memory/variable management is interesting in the sense that you can manage precisely the amount of memory used by each variable, program, and file. For example, you can adapt the type of variables (or array) to match your values’ range and shave off a few precious bytes. Most interestingly, you have to explicitly retire your variable (DESTROY instruction). This is a great feature I wish the PC-1500 had back then. But the SHARP is better at assigning HEX values to a string array, and way more flexible when it comes to doing bitmap graphics, thanks to the GCURSOR instruction. Indeed, to advance the running man, on the PC-1500, it suffices to set the graphics cursor to the next column, when with the HP-71B, I had to build a filler string (with as many 0 characters as the column to display the bitmap) and concatenate them while using the GDISP instruction. Surprisingly, form a performance point of view, both versions of the program are comparable.
SHARP PC-1500 -> HP-71B
"0000207f0000" -> CHR$(0)&CHR$(0)&CHR$(32)&CHR$(127)&CHR$(0)&CHR$(0)
"0000663f1800" -> CHR$(0)&CHR$(0)&CHR$(102)&CHR$(63)&CHR$(24)&CHR$(0)
"0044221f3400" -> CHR$(0)&CHR$(68)&CHR$(34)&CHR$(31)&CHR$(52)&CHR$(0)
"0024221f1224" -> CHR$(0)&CHR$(36)&CHR$(34)&CHR$(31)&CHR$(18)&CHR$(36)
"0014221f2440" -> CHR$(0)&CHR$(20)&CHR$(34)&CHR$(31)&CHR$(36)&CHR$(64)
"0000163f6400" -> CHR$(0)&CHR$(0)&CHR$(22)&CHR$(63)&CHR$(100)&CHR$(0)
If you want to know more about BASIC, I recommend the following link: https://youtu.be/WYPNjSoDrqw