Dwight
I need to dig deeper, but I was thinking I would go for the last revision of the boards. That may be misguided but I lived through the constraints of writing programs with 256 bytes of ram and 2 kbit of rom and, frankly, I prefer having more of each. So I was thinking the additional capabilities and flexibility of later revisions would be my preference. Sure, if this was just going to hang on my wall, the first version and earliest date codes would be important.
What would be your thoughts for the most enjoyable system?
Craig
The 4040 with a 4289 is more what your looking for. Both are Harvard architecture but the 4040, used with the 4289 can be used with some added instructions that allow the 4040 to write to program memory where there might be RAM as well as ROM. The 4008/4009 combination doesn't allow one to do that. The 4040 has the ability to expand both RAM and ROM beyond what the 4004 can handle.
You do know that the RAM ( 4002-1 and 4002-2 ) for the 4004/4040 has special access that was intended for things like floating point exponent and such. It is difficult to emulated these RAMs with standard RAMs.
One of the disadvantages of using RAM in the program space is that one can only read a value from code on the same page. That means that to read some location A to location B, you'll need to use up some RAM space on each page to read the data. Of course if you only intended to use that RAM space for experimental program space, you can always execute anywhere in program space. It is also possible to setup that RAM space for data only but that is better to just be in normal RAM space without the exponent status nibbles. Both can be done with the 4289 by clever decoding.
The MOD4/40 has much of these features built in, that the SIM4-01 didn't. Still, you have to think in terms of program space and data space as separate, like a 8051 or 8048. Not that these couldn't have such mixing for development purposes with some clever decoding.
The Maneuver Board code, that I've been working on ( not my original code ), runs a display, keyboard input as well as calculates range, distance, time of closest approach, absolute speed and direction for up to 10 targets. It uses a cordic algorithm to calculate sine and cosine, given angle information. It does all that in less than 4K of code ( not really all that well optimized ). 4K is quite a bit but the 4004/4040 is not really all that well an optimized processor. One has to do a lot of LIM xx dd, SRC xx for just about any operation not in the internal registers.
Dwight