I'm a new 41C owner, and I have a basic question about HP's general programming scheme.
As I understand the evolution of HP calculators:
1) The HP 9100A onward had functions, available via dedicated keys (or with shift keys)
2) User-written programs were built from sequences of those functions (and other actions, including branching logic; conditionals; flags etc.) and then stored in memory or on magnetic media — the larger cards for the 9100A; the smaller cards for the HP 65, HP 67 and HP 97
3) The interchangeable card format allowed HP to release "pacs" of various programs (of different levels of sophistication) so the calculators could perform specialized routines.
Here's where the taxonomy gets tricky. As far as I understand, the early programmable HP calculators of this era allowed several user programs to occupy memory — you executed the one you wanted by knowing where it was in the numbered series of all registers. But running the program you had loaded from a card, just meant pressing "execute" — once you'd loaded (say) a surveying program off a single card, you didn't have to tell an HP 67 which program to run; you just said "XEQ" (or whatever the key is on that machine) and it ran the loaded program from the card, right?
Anyway with the 41C, the scheme changes, because of two technical innovations:
4) First, because of the alphanumeric interface, programs (and functions) are retrievable by name — the keyboard no longer has to show every function; there are now dozens of them, available by means of their names (and you get a convenient catalog).
5) Second, replacing the card reader with Atari-like ROM cartridges means that, rather than buying a "pac" of dozens of cards, you buy a single "module" with many programs on it, accessible by name, just like the functions on the calculator.
And here's where I get fundamentally confused, unfortunately. Because the distinction between "functions" — built-in actions that manipulate data in single steps, executed by name — and "programs" — sequences of those steps, including functions — is suddenly confusing.
With the 67/97, you would get a card, and load the program into memory. Then you could single-step it, and (presumably) edit it, creating your own version that you'd save on your own card, or rewriting over the card version (if you were running your own, user-authored program from a non-copy-protected card). But there was one program; there was no ambiguity about what you meant when you went into "PROGRAM" mode and said "SST" or whatever: you were referring to "the" program that you'd loaded. (I apologize for my fuzzy understanding of how the cards worked; I don't have one of those machines.)
But suppose there's a specific program on a module, and you want to see how it works, or re-write it, or just read its lines (as you could in the days when those programs were sold by HP as text in books that you'd enter yourself). As far as I can tell, the only action you can perform on a program running from a ROM module is to "XEQ" it — exactly as if it was a function. In fact, with the exception of the user-created programs in the machine's non-volatile memory, the programs for the 41C seem to be totally opaque and impenetrable: they may as well be functions, since all you can do is "XEQ" them, like functions.
So — unless I'm misunderstanding something — the 41C doesn't distinguish, functionally, between built-in "functions" and module-based programs. Whether they're some internal microcode-based routine (like SIN or LOG) or a series of CORDIS-based steps and logic, from the user perspective it's all the same: just "XEQ" and provide the name of the function/program. You can't do anything else.
(I realize you can interrupt a program and go through it step by step, or even see the steps...but you can't do that unless you're executing the program; you can't see or edit the steps of an arbitary module-based program unless the program is executing.)
Obviously you can't edit a program that's running off a ROM cartridge...but can you read it? Can you load it into "your own" RAM (on the machine or in a memory module), creating an editable copy — even if it's just so you can go into "program" mode and see what makes that program tick?*
Apologies if I'm being long-winded, or obtuse. Thanks in advance for the patience to address this, if anyone's kind enough to clear up my "newbie" confusion.
Jordan