Post Reply 
Nut Processor Information
01-12-2018, 08:21 PM
Post: #1
Nut Processor Information
I've decided I want to write yet another Nut emulator to run Voyager ROMs. What fun is a wheel if you didn't reinvent it yourself?! I've been googling and digging through these forums and most of what I can find is people talking about the emulator they wrote, but very little about where they found enough information to do so. I'm trying to avoid looking at any existing emulator code so I can work through it myself.

Are the processors in Voyager and 41 exactly the same only differing in amount of RAM? Or are there other differences too?

Can anyone point me towards documentation about the architecture?
Find all posts by this user
Quote this message in a reply
01-13-2018, 02:23 PM
Post: #2
RE: Nut Processor Information
Back in 2004, I was thinking of writing a Saturn emulator. Like you, I wanted to create a hardware-level calculator emulator, although my motivation was a bit different .I wasn't looking for a let's-reinvent-the-wheel challenge; rather, I wanted to avoid porting Christoph Gießelink's code from Emu42, since it was full of Win32 API calls, and it was multi-threaded, both of which were major obstacles to targeting PalmOS -- and the PalmOS platform was the one that I most wanted to support.

I went looking for Saturn documentation, and found a lot. This isn't surprising since HP actually published documentation on this architecture themselves. However, there were some grey areas, where people commented that certain instructions or behaviors were different between different versions of the Saturn, or even within different production runs of the same product.

I came to realize that writing a Saturn emulator, without knowing the language well, and with no knowledge at all about how the calculator's ROM code works, was doomed to failure, and I gave up on that approach and ended up writing a user-code-level simulator instead.

The state of documentation of the Nut architecture is probably even worse, since this is one for which HP didn't publish exhaustive documentation like they did for the Saturn. (There must have been some, though, or how else did anyone manage to develop Mcode modules for the HP-41?) But my impression is that the people who have managed to create successful Nut emulators tend to be people who know their way around hardware, and feel at ease with a logic analyzer like I do with a debugger.
Visit this user's website Find all posts by this user
Quote this message in a reply
01-13-2018, 03:12 PM
Post: #3
RE: Nut Processor Information
If you really want to go to the ground level of the Nut processor, the Verilog description of the 41CL implementation would be a place to start. The accompanying documentation provides a very good description of architecture and instruction set.

http://systemyde.com/hp41/index.html

I seem to recall seeing a similar attempt at a hardware implementation of the Saturn, but could be mistaken. At any rate, a good place to start for information on the Saturn would be our old friend hpcalc.org and all of the documentation there.

Quite a task you've set for yourself!
~Mark

Remember kids, "In a democracy, you get the government you deserve."
Find all posts by this user
Quote this message in a reply
01-13-2018, 03:20 PM
Post: #4
RE: Nut Processor Information
Hi,
do you have any experience writing emulators for other platforms?

If not, I would suggest to start with a basic 6502 emulator so you can figure out the basic structure that your code should have, and then move on to the Nut. This way you can actually be more efficient by breaking down the emulator project in 2 distinct phases, one to set up the general architecture and the second phase to emulate the correct instruction set code and registers.

Software Failure: Guru Meditation

--
Antonio
IU2KIY
Find all posts by this user
Quote this message in a reply
01-13-2018, 06:00 PM (This post was last modified: 01-13-2018 06:09 PM by emece67.)
Post: #5
RE: Nut Processor Information
I'm also reinventing the wheel, but instead of writing an emulator, I'm writing a synthesizable HDL description of the NUT processor in order to build a real machine around a FPGA. I know, Monte Dalrymple did it years ago, but as the TP said: What fun is a wheel if you didn't reinvent it yourself [twice]? To not repeat the very same thing, I'm using VHDL instead of Verilog and writing also a battery of testbenches in order to simulate the whole hp41 in a cycle accurate way. Surely this is a task Monte has also performed but, AFAIK, such code is not available.

The documentation you can find at TOS is highly valuable and a primary reference. If you do not know what TOS means, look inside this thread http://www.hpmuseum.org/forum/thread-9880.html .

As Mark has said, the Systemyde page (that's: Monte's page) is also really valuable, although, in my experience (I've seen it many times in students), the HDL description of some hardware is sometimes hard to cope with for people not used to the paradigms of such languages. The technical documentation of Monte's NEWT processor is really interesting and comprehensive.

Hope this helps, regards.
Find all posts by this user
Quote this message in a reply
01-13-2018, 06:46 PM (This post was last modified: 01-13-2018 06:49 PM by pier4r.)
Post: #6
RE: Nut Processor Information
Digression about rediscovering the wheel.

I always stumble about the question "why do I want to do it again by myself, if it exists already?"

I find that if one wants to really learn a procedure or technique he has to do it by himself, if possible following only the major directions from an existing solution (because the details alone will be hard enough to solve).

Otherwise it is like using a (non trivial) function on a calculator without thinking much about it. One knows what to expect as result, but one is unable to produce a similar function.

Moreover once one rediscovered the wheel, and learned how to go through the process, one can shape the wheel in different ways that may be useful for others.

So free42 might be at first a partial replacement of the hp 42s, but thanks to its availability everywhere and other factors, it is now a great software on its own.

I myself have to be more aware that having multiple implementations of the same thing seems to be healthy. Like proving the same theorem over and over (in different ways or providing different expositions of it).

Wikis are great, Contribute :)
Find all posts by this user
Quote this message in a reply
01-14-2018, 12:10 AM
Post: #7
RE: Nut Processor Information
you forgot the best part: reinventing the wheel is fun Big Grin

Software Failure: Guru Meditation

--
Antonio
IU2KIY
Find all posts by this user
Quote this message in a reply
01-15-2018, 04:12 AM
Post: #8
RE: Nut Processor Information
(01-12-2018 08:21 PM)emg Wrote:  Are the processors in Voyager and 41 exactly the same only differing in amount of RAM? Or are there other differences too?

They use different voltage and the Voyagers runs at a slower speed, otherwise they are identical. This is described in the internal Nut CPU document from HP.

Håkan
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)