Image Map Image Map
Page 3 of 5 FirstFirst 12345 LastLast
Results 21 to 30 of 42

Thread: Interest in I4004

  1. #21


    I was looking at the memory usage of the Maneuver board program. I believe if you only enter one target ship one can run it on just two 4002-1's, rather than the full complement of 5ea 4002-1's and 4ea 4002-2's that would allow 10 target ships.
    If anyone is interested, I have it posted on GitHub.
    Slob would need to modify the display to handle the non-7segment displays. That wouldn't be too much work though.
    It would be more work translating my assembly code to work with a different assembler. It is almost 4K of code. You might need to make some hardware to deal with the 25 switch keyboard but I'd think some arduino work and a couple more LS244s would be enough to deal with a fake keyboard from a PC on serial or usb.
    My PC board is coming along. I'm fighting the frustrating KiCad footprint library. The footprints they have are never exactly what I want it is is an uphill battle to get the footprint I want to select. It is confusing. I wanted to use different IC boarders and such but it seems to fight my all the way. The 7seg displays have only 12 pins instead of 14. I made the display schematic piece from a 14 pin part but left those pins there. The footprint I made was missing 2 pins and the tool wouldn't let me use the 12 pin one with the 14 pin schematic, even though I made the pins as no connects. It was frustrating. I needed to go back and fix my schematic element to remove the pins that were not there.
    As I said, things are coming along, just a little slow. It prints out a pile of error since my switch are treated a passives and a bunch of input have no source. I don't know if I'll just leave it that way and ignore the errors.
    Last edited by Dwight Elvey; February 9th, 2019 at 08:32 PM.

  2. #22


    I was intrigued enough to look up the Practical Electronics Magazine PE Champ mentioned by mnbvcxz on page 2 of this thread. It's actually a ten part series (September 1977 through June 197 available here: It uses the 4040 instead of the 4004.

  3. #23

    Default Tools for 4004 Development

    2716/08 "Promulator"

    As I had mentioned, in order to develop the 4004/4040 boards I needed a "promulator" so that I wouldn't have to constantly "burn and learn" with UVEPROMS. Even the tedium of installing/removing a 28C16 EEPROM would be a PITA. So, here is my design, using a PIC 16F18877 40-pin DIP, and a IDT7132SA100P 2kx8 dual port RAM. I used this particular PIC because it has lots of ports, RAM, flash for code, is a DIP, and is fairly cheap to buy, use, and to program (no crystal is really needed). Communications are handled serially at 9600 via a USB serial adapter. Pictures and acreen shot of the menu is attached. I THINK that this will work with 2708's or '16's. Note that there is an external +5 power supply. You MIGHT be able to get away with having the target board power it but I didn't want to take that chance.

    A much better programmer than I am could, I believe, substitute hardware for software here with basically no loss of functionality. This is a pretty fast chip (32 Mhz), and it might be possible to write interrupt-driven change of pins or change of CE/read code to present new data given the address, therefore, you wouldn't really need the dual-port RAM (somewhat rare, expensive, and no longer made) at all. The older UVEPROM chips had an access time of about 500 nsec; this is enough time for interupt overhead and a little code at a 32mhz clock. You might have to patch in some assembly to pull this off.

    As it is, this is a two-chip design; but it would be pretty cool to get it down to one!

    The code was in "free" version Microchip C with MPLAB X as the environment. A Pickit 3 was used for programming and debugging. I was not very happy with the action of the debugger but at this price who can complain. I'm thinking about getting an ICD3 which is on sale for a few more days now that the ICD4 is out. THAT is a much better debugger, and although I stink at C coding, I am a very determined debugger and can basically make anything work if I can debug it.

    2708 (04?) Programmer

    Although I've already built my 4040/4004 boards around 2716's, they REALLY would have been more period-accurate with 2708's. I had some 2708's, but no programmer for them. With code and I/O very similar to the promulator, I modified that using "control-c control-u" object oriented programming into a 2708 programmer, also shown. It seems to work fine. You may laugh at the power supply design, a USB wall wart going into FIVE (count them, five) DC-DC converters. Why?

    One is for the +25 programming pulse for the 2708
    One is for the +12 supply to the 2708
    The +12 goes through another DC-DC converter to get down to +5 for the 2708,PIC, and 7407. USB power supplies can be a little off on the voltage and noisy, so I chose this route.
    An isolated DC-DC converter (meant for Ethernet boards?) produces -9, which I bring down to -5 through ANOTHER DC-DC converter for the 2708.

    I don't think that I paid more than 75 cents each for any of these items, and it was expedient. The regulation of the Chinese boards at "rated" loads is questionable according to others due to barely-adequate coils and capacitors. I might have been able to do without one of them but I didn't want to press it.

    This will probably be "it" for the 4004/4040 project until the fall/winter.


  4. #24


    Interesting. I'm using a IDT7134 4KX8 dual-port RAM to act as a 2732 EPROM for my 4004 SBC.

  5. #25


    Hi Jim
    I've noticed that you've use a 100 ohm resistor on the VDD lead or the 4201. I'd not seen this on the Intel sheets but I've seen it a couple of times now. What is the purpose?

  6. #26


    The resistor is on the "Clock Generator Implementation" figure in the 4201A Data Sheet. Intel refers to it as a current limiting resistor. I didn't want to tempt fate by not using it.

  7. #27


    Quote Originally Posted by jim121049 View Post
    The resistor is on the "Clock Generator Implementation" figure in the 4201A Data Sheet. Intel refers to it as a current limiting resistor. I didn't want to tempt fate by not using it.
    I basically copied what you did; after looking at this on an oscilloscope, I think that it rounds off the square wave from the oscillator (less harmonics, ringing?). The need for the resistor is apparently load-dependent (i.e., how many chips you hang on the output).

  8. #28


    I'd seen resistors on the clock lines and assumed these were to deal with rise time issues. I'm in the process of laying out my board. I guess it wouldn't be too bad an issue to add a location for a resistor. I do already have resistors on the clock signals. I have 9 ea 4002s so I have quite a bit of load. I expect I may have to adjust the clocks for enough rise time. The PMOS in general don't have hard pull down to VDD but the clock generator has to have hard VDD. I suspect that they my have some overlap of the pull up and pull down outputs transistors. This may be there to deal with cross over issues. None of my data sheet show the resistor but I guess it is best if I add it as well. This is my first time using the 4201. I have a SIM4-01 board but it uses a discrete transistor clock driver.
    My board is large. It is now 5X8 inches. I expect to use OSH Park. They are not the cheapest but then they are not the Cheapest either. I've had good results from them in the past.

  9. #29


    Oh Jim
    I was looking at the code snippets you have on your web page. The maneuver board code has quite a few good snippets of code. There are things like decimal multiply, divide and others. Of course it has the codic code for sines and cosines but that is a little heavy for general 4004. It makes use of quite a few of the useful snippets. The divide routine was originally written by Gary Kildall! I believe I've posted where you can see the original code. I have it in my assemblers syntax but that might be harder to transfer except to use to verify some of the bad print in the original PDF. I also have a HEX code on github that could be used to compare to. You'd just assemble at a matching address and compare the results. The code works on 16 decimal digits ( one register of RAM memory ) at a time.

  10. #30


    Thanks, I'll take a look at it.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts