Adresdecoding the CSA Transputer interface.

I have get a question about the picture of the interface I have build.

Adress

In my interface I have hardwired the adres 150 Hex for the Interface and 160 Hex for the System Signals. The question about the schema for the IMSC011 in place of the IMSC012. I have just take the datasheet’s for the both part’s and connect the right signal to the right place. So there is no different schema for the IMSC011

End of RC2016/10

This evening some people of the local hackerspace “B+ Westland” visit my place to look at the 4004 project. We have study some assembly code for the 4004. This was very nice.

20161031_220015-1

We have look at the result of my project and we have also study some other project’s from other people.

This is the end of the RetroChallenge 2016/10. I wish I have more progress the last month, but I am still happy with the result. This week I go to make/finish some little program’s to do the challenge for the Roborama-game’s of the Dutch Computer Club next weekend.

Here is my goal not to win, but to do the challenge.

 

 

 

 

 

 

Keep moving the Intel 4004

Last week i have a very little time so I couls only make some little progress. I have program some little routine’s for the 4004 processor in assembly to make some little demo’s

 

Next week I hope to have some more time so I can work on some bigger programm’s. With this bigger program’s I could run the Roborama challenge on November 5 2016.

I have so much to do in so less time !!

But, during this Retrochallenge 2016/10 I have a lot of fun. Working with the assembly for Intel 4004 processor is a nice challenge for my. I keep going during the next couple month’s.

I would thank’s the organization of the Retrochallenge to motivate me to work on this project.

 

Robot car

I want to show you the robot car I have build for the Intel 4004 processor. The frame-work fot the robot is a vero-board print. Mounting 2 motor’s under it, a line-following sensor strip in the front and a powerpack an motordriver on the top of the print. A voltage meter fot the level of the LiPo accu’s complete the frame-work.

20161015_144845

On the 4002 RAM I have 4 output pin’s. These are connected to the motordriver. 2 Bit’s for direction for the 2 motor’s and two bit’s to set the motor ON or OFF. On the 4001 ROM I have 4 input pin’s. Tree of them are connected to the line-following sensor en the last one is connected to a press-button on the back of the robot-frame-work. I can use this one for start or stopping the robot in the program for example. After testing the hole setup it is time to program some stuff in 4004-assembly to finish the Robot-game’s.

First I must go to describe very good the goal of the game for myself.

Halfway the Retrochallenge 2016/10 and still a lot of things to do. Let’s GO !!

 

Running 4004 on 736 kHz

Last day’s I have work on the speed of the Intel 4004 microprocessor. In the Propeller assembly program I have do a lot of tuning and debugging and now I run at a clock speed of the 4004 processor of 736 kHz. This is very nice. Also I have test the I/O at this speed. It work’s !!

Now I go to build my 4004 system on a robot car.

Debug the Assembly program

Last months I have write some program’s for the 4004 system to emulate a ROM by a Propellerchip. I write these emulation program’s in the SPIN  language for the Propellerchip. This  SPIN program work’s fine but is relative slow. I use the Propeller olso for the clock for the 4004 and my maximum clock speed in the SPIN language is around 30 kHz. But the original speed of the 4004 is 740 kHz so I want to speedup my clock. I decide to rewrite the emulation program for the Propellerchip in Assembly.

This give me a lot of trouble. I am not very familiar with writing program’s in assembly but I don’t give up. The whole weekend I spend a lot of time to write and debug my assembly program.

20161009_debugI use a ZIF-socket with some resistor’s, to use as voltage-dividers, to bring down the 15 Volt for the 4004 down to 5 Volt, to measure the signal level’s with a logic analyser.

20161010_a_debug_byte_shift

After some very long debug-session’s I have the 4004 processor working with a clockspeed of 300 kHz. This is just the beginning. It work’s and more speed come’s later. My goal is to work with a speed of at least 600 kHz.

For this moment I am very happy, a littele [-NOP and jump to zero-] program works good with the assembly program for the ROM emulation. Now I have to write a program for the 4004 to use the I/O to read from the 4001 and write to the 4002.

This challenge give me a lot off energy.

 

Setup my Intel 4004 system

A couple years ago I get a white ceramic gold pinned Intel 4004 processor. I was so happy to have it and I put it in a very nice box. Later I ask myself: “Could it work”. Or a better question: “Could I bring this 4004 processor  to live”.

2 Years ago a read the blog from Frank Buss and this was my start to build around and program the Intel 4004 processor. Frank Buss use a Pic-processor to clock the 4004 and also hold the ROM image with the program for the 4004 processor. I have make some project’s with the Propellerchip from Parallax and decide to use this chip as clock and also as ROM, but the ROM-image for the 4004 I store on a SD-cart. So when I want to change a program for the 4004 I need to change the file on the SD-cart. On a vero bord I build a system for the 4004. I use a couple 16-pin’s ZIF-socket for the 4001, 4002 and 4004.

2016_1005_b

There are 3 powersupply’s, the first is a 15 Volt for the MCS-4 chipset and the second is a 3.3 Volt for the Propellerchip. There are some glue-chip’s to convert the 15 Volt from the MCS-3 chipset to the 3.3 Volt of the Propellerchip. And at the left under side there is the SD-cart in it’s holder.

The Intel 4004 processor is a 4 bit processor with a 4-bit multiplexed adres bus. An 4001 ROM contain’s 256 byte memory and 4-bit’s I/O. You could connect 16 ROM’s to the system wich give’s you a 4K memory.  A 4002 RAM hold’s 4 bank’s of 20 4-bit’s memory’s and 4-bit output. And there is a 4003 serial in, paralel output chip. This 4 chip’s are called together the MCS-4 chipset.

I decide to use only the originel MCS-4 chip’s added with the propellerchip with act as ROM for the 4004-program. The I/O from the 4004 to the real world I want to do with the 4001 and 4002.  This bring’s me to a big problem. The normal around these time’s of the 4004 you send your papertape with the program for the ROM to Intel and the make them. Include the metal-mask setting’s for the I/O. You must to specify the pin’s for Input or Output. When I want to use a real ROM as input of my system I need a 4001 which have NOT the internal numer of zero (because the system start on ROM page-0 witch is the propellerchip) but the I/O pin’s set to Input. So I search on the internet for 4001-ROM chip’s. I buy 10 of them and first I read the internal page-number. 6 of the 10 have the number-zero so the are useless for me. The other 4001-ROM’s I tested to write to and read from the I/O and at least 1 4001-ROM have 4 Input’s.

So I have a 4004 microprocessor, a good 4001 ROM with 4 Input pin’s and a 4002 RAM with 4 Output pin’s. With this I could build a system to control a robot.