![]() |
HP-15C Silver Anniversary! (Op-codes, synthetic matrices) - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: HP-15C Silver Anniversary! (Op-codes, synthetic matrices) (/thread-117601.html) |
HP-15C Silver Anniversary! (Op-codes, synthetic matrices) - Karl Schneider - 07-01-2007 tHP-15C fans -- After preparing this lengthy post over the past few days, I checked Craig Finseth's site, which states that 1 July, 1982 was the date of introduction for the HP-15C. Therefore, today is its 25th anniversary of its public availability for purchase! http://www.finseth.com/hpdata/hp15c.html At the upcoming HHC conference in San Diego, we enthusiasts ought to hold an HP-15C silver anniversary observance as an "undercard" to the HP-35 35th anniversary theme.
The HP-15C offers exactly 700 programmable instructions stemming from well over 100 functions, all without benefit of bona fide alphanumerics. It is instructive to examine the fine engineering work that was done, more a quarter-century ago, to make this possible. A complete instruction stored in program memory is identified by a unique operation code, or "op-code". These are not to be confused with key codes on 7-segment displays, which show the sequence of keystrokes for a programmed instruction using key identifiers that are usually numeric, but are sometimes a individual letter. Relation and arrangement of op-codes to functionality is an important design consideration for a programmable calculator. Logically-selected codes facilitate testing and processing. Moreover, an insufficiency of available op-codes will restrict the amount of programmable functionality provided for the user.
First, some background: There are 28 = 256 unique one-byte op-codes. The "starting point" for the HP-15C -- namely, the HP-34C and HP-11C -- each use 255 codes for programmable instructions, with one spare code presumably by design, and a few possibilities omitted by necessity. For example, the HP-34C's sophisticated functions SOLVE and INTEG can be invoked with user-defined programs starting with labels A, B, 0, 1, 2, or 3, but not labels 4 through 9. This restriction due to insufficient op-codes caused William Kahan to make a selective statement in his fine article "Handheld Calculator Evaluates Integrals," in Hewlett-Packard Journal , 31:8, August 1980: Quote: Left unsaid was, "but not all the labels..."
The HP-11C has only flags 0 and 1, omitting flags 2 and 3 that its predecessor HP-34C had. This saved six operations, to get the HP-11C under 256 programmable instructions. Which brings us back to the HP-15C: With all the functionality of the HP-11C, plus SOLVE and INTEG from the HP-34C, pioneering matrix-based and complex-number functionality, as well as extensions of traditional functions, clearly the uniform single-byte op-code would not be sufficient. If the byte were to remain the standard unit of size, some op-codes would require two bytes -- similar to what was done for the HP-41C. Given the limited RAM of the HP-15C (a maximum of 448 bytes programming space), the two-byte codes would need to be intelligently selected, such that the most commonly-used instructions would have one-byte codes.
The complete set of one- and two-byte HP-15C op-codes was revealed in an excellent article published not long after the HP-15C's introduction in mid-1982: "Synthetic Methods on the HP-15C" by Allyn F. Tennant. PPC Calculator Journal, Volume 10, No. 1, January/February 1983, pages 49-53.
The complete hexadecimal contents of the register are "03DECF82BA1099". Here is a complete breakdown: display hex value representing The "DIM I" instruction is displayable as the exponent of the full floating-point number. As stated, the left nibble of the "LBL 3" and the right nibble of the "GTO 0" instructions are not directly displayable. For numbers, these nibbles contain signs for the mantissa and exponent (among other information, such as matrix identifiers and LU decompostion status).
Here's the principle of the synthetic matrix: The ON/yx processor-reset operation rotates the 56-bit content of the x-register 22 bits to the right. So, 1.000000044 (float) = becomes
0001 0001 0000 0000 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 (DCB) after rotation. The first "1" indicates a matrix descriptor; the second "1" is the matrix identifier, which is not among the standard set of A through E that are encoded correspondingly in hexadecimal. (The value "1" in the mantissa is included to prevent automatic normalization to an exponentiated value, which would change the bit pattern.)
The selection and arrangement of the complete set of HP-15C 1-byte and 2-byte op-codes found respectively in Figures 3 and 4 of the PPC article exhibit the thoughtful planning, logical grouping, and overall attention to detail also found in the arrangement of the HP-15C keyboard. Here are some observations:
One-byte codes:
NOTE: There is a list of two-byte instructions on page 218 of the HP-15C Owner's Handbook. This list, however, omits [GSB][.] label , x< > {A-E}, DSE {A-E}, and ISG {A-E} -- the only mistakes I've ever found in that manual.
Of course, a picture is worth a thousand words; the preceding discussion is much easier to follow with the PPC Journal article and its tables at hand. The article is well worth perusing, and there's much more in it than I have discussed -- including a demonstration synthetic program that displays "HEllo PPC" in the display! The article, included within the PPC archives, is available as the 10154-kB file "v10n1.pdf" on CD #1 from Jake Schwartz at http://www.pahhc.org/ppccdrom.htm, or on the Extended Archive DVD available from another site. Tables of op-codes for the HP-11C, HP-34C, and two-byte op-codes for the HP-15C are available at Eric Smith's web pages:
http://www.brouhaha.com/~eric/hpcalc/ -- KS
Edited: 4 July 2007, 1:58 a.m. after one or more responses were posted
Re: HP-15C Silver Anniversary! (Op-codes, synthetic matrices) - Antonio Maschio (Italy) - 07-03-2007 Well, sum up and gather up all the information about the 15C such this, and make an article of it: it's too much interesting, and I'd want a pdf copy to carry with me. You're great. Simply.
-- Antonio Edited: 3 July 2007, 4:22 a.m.
Re: HP-15C Silver Anniversary! (Op-codes, synthetic matrices) - Karl Schneider - 07-03-2007 Hi, Antonio -- I was planning to respond to your reply from yesterday, which you apparently deleted and replaced with a new one. Thank you for the praise, which is admittedly difficult for me or anyone to truly fulfill... :-) In fact, it has been my intent to package the two "short essays" into a full-fledged MoHPC article with tabs. I'd like a little more feedback from others on the latest contribution.
One topic I'd like to be able to illuminate for readers concerns the engineering methods employed for the development of the HP-15C. I'm continually astounded how perfection in product development was nearly achieved -- no detail was overlooked, no feasible function that was necessary or useful was omitted, only one page of the manual contains errors, and only one minor RPN bug This excellence is more astounding, considering the pioneering functionality and fairly-short time of development. Obviously, it didn't happen by chance; some systematic, methodical engineering methods were employed, and I'd like to know what they were. I do have an idea how to find out more about them, but will discuss that when the time comes... Best regards,
-- KS
Re: HP-15C Silver Anniversary! (Op-codes, synthetic matrices) - Gerson W. Barbosa - 07-03-2007 Quote: Karl, Would you please tell me where to find the article in the DVD? (Mine is the "TOS" HP-41 Extended Archive DVD). Thanks! Gerson.
Re: HP-15C op-codes/synthetics PPC article - Karl Schneider - 07-04-2007 Hi, Gerson --
Quote: "Synthetic Methods on the HP-15C" by Allyn F. Tennant. PPC Calculator Journal, Volume 10, No. 1, January/February 1983, pages 49-53 is found in the file "v10n1.pdf", probably installed under \Users Groups\PPC1\Volume10 Best regards, -- KS
Re: HP-15C op-codes/synthetics PPC article - Gerson W. Barbosa - 07-04-2007 Thanks again, Karl! So far I haven't read all through the article, only enough to be able to run the "HEllo PPC" program. It does work! Best regards,
Gerson.
Re: HP-15C Silver Anniversary! (Op-codes, synthetic matrices) - Eric Smith - 07-05-2007 The referenced article "HP-15C Synthetics" by Allyn Tennant, from PPC Calculator Journal V10N1, has been converted to HTML and is available here.
Any errors in the HTML conversion are undoubtedly mine.
HTML conversion of HP-15C synthetics PPC article - Karl Schneider - 07-09-2007 Eric -- Many thanks for posting the link to some diligent work you perfomed in 2004. Your HTML conversion of the 1983 PPC Journal article is much more accessible to people (and easier to read) than the small-print scanned Journal article puchased from Jake Schwartz or "TOS". I couldn't help but notice, though, that the link to the HTML file is a "deep link" that does not appear under http://www.brouhaha.com/~eric/hpcalc/. The user is prohibited from viewing the contents of http://www.brouhaha.com/~eric/hpcalc/hp15c/, where your HP-15C "two byte instructions" spreadsheet is kept. Is this by intent?
-- KS
Re: HTML conversion of HP-15C synthetics PPC article - Eric Smith - 07-10-2007 I just haven't yet updated the "upper" page with links to it yet.
Eric
|