|HP-15C Emulator (long)|
Message #2 Posted by Michael F. Coyle on 24 July 2003, 1:42 a.m.,
in response to message #1 by Nelson M. Sicuro
I don't think there is an emulator for any Voyager calculator. I'd really like to see one though. Perhaps the time is right to start thinking about writing one.
At the risk of telling you what you already know, I will describe what needs to be done to write an HP-15 emulator. I will also point out any questions we would need the answers to. Perhaps some of the other (very knowledgeable) contributors to this Forum can supply some of the answers. This could be a really interesting project; what I’m really trying to do is entice others into thinking so, too.
First, we would need to know the instruction set of the 15C CPU. The MoHPC Web site describes the Voyager CPU as an enhanced version of the HP-41 CPU (the so-called “nut” CPU). If this is so, most of our work is done.
(QUESTION: Is there any published description of the Voyager CPU? Any comparisons with the 41 CPU?)
Second, we would need a ROM dump to obtain the entire 15C program. Unless someone shows up with an HP-generated assembly listing of the 15, we will have to do it ourselves. This would be done by building some special hardware and reading the bits right from the ROM(s). I have been looking into doing this for the Woodstock machines (specifically the HP-21 and HP-25) and most of what I’m thinking about should work for the Voyagers too.
There is one requirement which absolutely must be met for this to work: The entire ROM of the machine must be accessible to external probing. If all the ROM is outside of the CPU, fine. But if the CPU also contains some ROM, it may be impossible to get the bits out. Signs that the CPU has ROM: different part numbers for different model calculators; swapping CPUs between calculators doesn’t work. Signs that the CPU is only a CPU: same part number across all models; CPUs will work in different calculators.
(QUESTION: See above. Anyone with Voyager repair experience: what part numbers are Voyager CPUs? Have you tried swapping CPU among different models? Did it work?)
Third, we would need to know exactly I/O works on the Voyager machines. If there’s an article out there, fine. If not, we could probably figure it out by assuming it’s similar to the HP-41, then reverse-engineer the firmware and probe the hardware to figure it all out. Hard, but doable. Tools needed: ROM dump, oscilloscope, brain.
(QUESTION: Any published info?)
Finally, we would have to write the emulator itself. Once we’ve got all the other stuff mentioned above, this is the easy part! The HP-45 emulator written by Eric Smith and modified by Dave Hicks could be used as the starting point since the newer CPUs are similar to the CPU used in the Classic machines. The emulator code itself is well-written and clear and is worth reading if you are unfamiliar with emulators.
(QUESTION: Is there anything I’ve missed?)
(QUESTION: Is anyone else interested in getting a project started?)