

Assembly Evolution P1: Accessing Memory and the strange case of the Intel 4004 - alecco
http://blog.julien-oster.de/2011/10/assembly-evolution-part-1-accessing.html

======
drallison
The 4004 is not the ancestor of the 8008; it was a completely different
processor family with different antecedents. The 4004 came from Busicom in
Japan and was designed by Masatoshi Shima; the 8008 followed an architecture
developed by Victor Poor at Computer Terminal Corporation (later Datapoint).

Tom Pittman wrote an assembler for the 4004 which was shipped in a EPROM with
the earliest development board. I (Dennis Allison) wrote the resident
assembler for the Intel Development System which targeted the 4004 and its
successor, the 4040. The 4040 was essentially a 4004 with logical operations
as well as arithmetic ones.

The native assembler had to be completely compatible with the cross assembler
which ran on IBM 360 machines (256KB partition) which was written by Bill
Byerly. The cross assembler was interesting since it was completely driven by
a mechanically generated bottom-up parser.

The native development system assembler fit in 4KB of EPROM memory and
included a bootstrap monitor and a rudimentary paper-tape editor. For large to
moderate programs, the development system needed a memory extension as there
was precious little space to for the symbol table in a bare bones development
system. It was slow, but designed to work with a 10CPS teletype.

The architecture of the 4004 was targeted to calculator-like devices and not
general purpose computing. The chip family included:

    
    
        * 4001 - 256-bit mask ROM and 4-bit I/O device,
        * 4002 - 320-bit RAM and 4-bit I/O device,
        * 4003 - 10-bit shift register,
        * 4008 and 4009 - standard memory and I/O interface set. 
    

The 4002 memory was organized into four blocks, each block consisting of 16
4-bit words and 4 4-bit status values rather than providing a uniform 80
nibble address space. The architecture presumed that the 16-nibble blocks
would be used to hold floating point or fixed point data and the 4 status
registers would hold exponent and scaling information.

~~~
julienn
> The 4004 is not the ancestor of the 8008; it was a completely different
> processor family with different antecedents.

Sorry, I didn't mean to imply that the 4004 was really an ancestor of the
8008, which is why I wrote:

> Overall, it bears little to no resemblance to its successor in name, the
> Intel 8008 (except for the internal stack, which both had--I will cover that
> in another posting).

I am pretty sure that the 8008 has its name because of the 4004, at least that
is what Wikipedia told me (not a reliable source, I know). I will fix the
article to make that more clear.

I have no experience with CPU-design, though, so I wrote the article from a
("modern") assembler developer's perspective.

Thanks for your comment, really interesting tidbits!

------
alecco
(Via <http://www.pagetable.com/?p=663>)

