An easy to build MCS-48 (8748 / 8749 / 8741 / 8742 / 8048 / 8049 / 8050 / 8755) Programmer / Reader

Recently I was repairing an old piece of equipment which was based on Intel’s first microcontroller: The MCS-48.

The nice thing about the MCS-48 is that it largely predates the concept of code security. With the exception of some newer dated parts, usually 8042 / 8049, if you’ve got the thing, you can steal the code from it, disassemble it, and learn lots about the equipment it’s fitted to.

In the past I have built a series of Arduino shields for programming old UV erasable devices for which programming hardware is difficult to come by (read more here). This is not so much the case for MCS-48 as hardware can be obtained for a hundred dollars or so, however, I wasn’t going to pass up on the opportunity to build another one of these, and, mine can be built for less money plus it has the ability to read mask ROMs.

At the same time as I designed the shield, I also built an entirely new project based on one of these. More about that here.

Programming and reading the list of devices mentioned in the title requires quite a range of different voltages including 5V, 12V, 18V, 21V, 23V and 25V. This programmer can generate all of them and software select between them as needed.

Supported devices

Regular UV erasable MCS-48

Parts 8748 and 8749. Vpp = 21V.

These were made also made under license by NEC. This programmer supports both NEC and Intel parts.

UV erasable UPI-41/42

Parts 8741 and 8742. Vpp = 21V for 8742. Vpp = 25V for 8741.

As with above, NEC parts also supported.

Mask ROM MCS-48

Read code only. Parts 8048, 8049 and 8050. EA = 12V. Note that not all MCS-48 mask ROM parts will allow the code to be read out.

8755A

An adapter is required to program the 8755A. There is a little bit of backstory about it here.

Build resources are linked to at the end of the page.

Warning to those building other designs

All home-brew MCS-48 programmers have pin drivers resembling the above, mine differs in that it uses a P-Ch FET to get the fastest possible rise time, and a 2K2 “pull-down” is also present to keep fall times within specification (< 2μS).

This is particularly important when programming CMOS parts, otherwise the timings specified in Intel datasheets cannot be achieved, instead arbitrary delays would have to be inserted throughout the programming algorithm to allow charge to bleed away from these inputs, as is frequently seen in other efforts.

The most important difference however, is the 220Ω resistor. Some batches (particularly 8742’s and some 8749’s) are very sensitive to over-current on the PROG pin. I purchased about 50 MCS-48 samples when designing my programmer, and blew a quarter of them discovering this.

This value was chosen because it reliably programs the earliest 1K NMOS parts, which require more current on this pin, and don’t appear to have this problem, while not destroying sensitive 2K parts.

Host software / firmware

Please see the main project page for more information.

Schematic

  • Can be downloaded from here.

Gerbers

There are two versions of the gerbers. A “Long” version which has the exact dimensions of an Arduino Mega. Choose this if your PCB house doesn’t charge extra for exceeding 100x100mm dimensions. Total size is 101.5mm x 53.5mm.

The “Short” version has the tab at the end clipped to keep it under 100mm. Total size is 99.95mm x 53.5mm.

BOM

Can be downloaded from here (or here CSV).

8755A Adapter

The 8755A adapter only has 3 parts:

  • 0.1uF (or whatever) bypass capacitor.
  • Samtec APA-640-T-A 40 position IC plug. These are a little difficult to come by. Instead have a search around for “male IC pins” there are various snap off types available. I wouldn’t recommend using regular 2.54″ pin headers as they’ll potentially damage the socket in the base unit.
  • 3M 240-3346 40 pin IC socket (anything roughly this form factor will do).

22 thoughts on “An easy to build MCS-48 (8748 / 8749 / 8741 / 8742 / 8048 / 8049 / 8050 / 8755) Programmer / Reader

  1. What a great compact little Intel 8749 programmer! Got the PCB made – can’t wait to try it out.
    Didn’t think I’d find one for this old mcu chip.

  2. Hi Matt,

    I’m building your MCS-48 reader and ordered the parts at Mouser, but the transistors are going to take until October to be restocked which is not ideal.

    Are there any equivalent transistors that would fit the bill?

    Thank you for your great projects!

      1. Thank you!

        I’ll send you some pictures once I have it complete.

        Later I’d like to build your 2708 reader too, as they are quite complicated to dump.

        Best regards,
        Rob

  3. Very interesting project. I might decide to build one just for the fun of it 😉 But with your experience, do you know any way to read a 8749 device? The datasheet doesn’t mention anything in this regard.

    All the best, Marcel

    1. Reading is explained in the datasheet. This project does it, source code and schematics all available of course.

  4. Ooops, of course your right, I only remembered the combined “program/verify” cycle. Cool, I’ll give it a try when I’m again ordering some PCB, thanks!

    1. P.S.: Turns out I’m not completely insane, the original P8049/P8749 datasheet only specifies reading of ROM chips. The later D8749 datasheet also shows a verify mode 😉 In any case, good to know that it works, thanks!

  5. OK, technically I don’t *really* need a programmer, but this is so cool that I went ahead and built one anyway 😉 https://www.kilgus.net/images/mcs-48.jpg is the result. Haven’t done this much through-hole in quite some time 😮 But worked perfectly on the first try, yay! I should probably now to continue to write the MCS-48 plug-in for IDA Pro…

    One comment, the avrdude supplied with my Arduino IDE needed “-c wiring” as a parameter instead of “-c arduino” to work.

    Anyway, great stuff, thank you!

      1. And Hex Rays wrote to me that nobody has ever requested a MCS-48 CPU module from the before 😉 So I started writing one based on the MCS-51, but it’s still tedious work and there is the slight chance that he original author of the code I’m after recovers the sources some time…
        The free Ghidra has MCS-48 support, but so far I’m not liking the user interface too much.

  6. Hei!
    Anyone close to Norway and/or willing to let me borrow or sell a kit/complete unit here?
    I’m trying to resurrect a Roland SDE-1000 mono delay with a veeeery temperature sensitive 80c49 (Crashes above 12 degC), so I need to dump the maskROM while it is freezing cold and burn a 87c49.
    Really hope there is someone willing to help here as I’ve spent years to diagnose this problem.
    Thanks in advance!

    1. Sounds like a daring adventure. I didn’t have much success dumping mask rom MCS-48s. I purchased 10 or so off eBay and only 2 could be read out.

        1. Least you can buy it if unable to! Programming a new 8749 will be a piece of cake if you have the programmer.

  7. The Xf551 Atari 8-bits disk drive uses an 8040 and usually an eprom for the firmware. However, I got in my hands a drive without eprom with an 8050 without eprom. Nobody, that I know of in the Atari community, has been able to dump the firmware of this version of the 8050.
    As part of this preservation effort and kind of Indiana Jones endeavor, I would like to contact someone willing to try to extract the fiwmare from this 8050 chip.
    manterola@hotmail

Leave a Reply

Your email address will not be published. Required fields are marked *