Posted on Leave a comment

8048 processor IDE

MAB8048H

This is a page about my freeware 8048 / 8049 IDE program which is an editor / emulator / debugger / assembler / disassembler for the 8048 all in one portable Windows executable. Many years ago when I was programming professionally and at home, tools were very expensive. There was not much freeware or opensource, but trough my employer I had most of the tools I needed. I wrote a lot of programs in assembler. The 8048 was a genius design for its time and its funny that this processor is still used. For development and debugging 8048 assembler code, this freeware IDE can be used. Regards, Hein Pragt.

I also have a Facebook Group on Retro Computing and Electronics, feel free to join!

8048 editor / assembler / emulator / debugger

8052 Workbench

To be able to program for the 8048 you need an assembler or compiler. I personally still like to write in assembler but I could no longer find tools for MS Windows. There were still some programs to download but most of them worked at DOS level, had serious bugs or did not fit my needs. After some searching I decided that it was time for a new project, building a complete integrated 8048 development environment, using the framework I used for all my othe IDE’s. I found a pretty good assembler and old code in my code library. The result is 8048 workbench, a portable x64 and x32 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a VT100 terminal window, a seven segment display with 8 LEDs and keyboard support. The program is portable and will run under Linux as well using WINE. (This is the way I use it).

Installation

Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system. On Linux unpack the zip file on your disk and use WINE to execute the program. I use Q4Wine as interface on Linux.

First time use

To practice there is an example4.asm file in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. You can now modify the program, reassemble it and run it again.

There are more example files, a lot of them I made myself when testing the IDE and some I found on the Internet and are free to use.

By means of the step button you can execute the program instruction by instruction and check the output and the registers. You can also enter the break address, the emulator will then stop at a run command at this address and display the registers of that moment. When 0000 is entered in the break field it will be ignored.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real 8048 circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run tis code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.

I/O map

The 8048 has no I/O space so the LEDS and seven segment display are mapped on port 1 and 2. You can put the leds on port 1 or 2 and the display on lines port 1 or 2 and character port 1 of 2. You can select this with the top menu, or with some extra assembler directives I added. Look in the example files to see how they work.

LED I/O modes

In led I/O mode 1 the leds are connected to port 1 and a 1 on the port makes the led light up, directive is ;#LED1


In led I/O mode 2 the leds are connected to port 2 and a 1 on the port makes the led light up, directive is ;#LED2

Seven segment display modes

In Seven segment mode 1 the leds are connected to port 1 is select of segment and port 2 is display data. The data is latched so the displays keep their value even if they are no longer selected. Directive is ;#SEVEN12


In Seven segment mode 2 the leds are connected to port 2 is select of segment and port 1 is display data. The data is latched so the displays keep their value even if they are no longer selected. Directive is ;#SEVEN21

Interrupt pins configuration

The IDE has a button that will activate the interrupt line to simulate external interrupt.

User define buttons configuration

There are also four user define buttons on the seven segment panel, these are connected to P2.8 to P2,5 to simulate I/O lines.

Supported development board

I use this development board that I build usinf an Arduin Nano as ram/rom/ IO simulator. It is simple to buid and the IDE can generate the C code array to include in the Arduno sketch below.

Download

Here you can download the latest version if this IDE. This download is a zip file containing a portable x64 (and a x32 version) Windows exe programs, an assembler directory and a examples directory. After weeks of debugging I think the project is ready for release, if you find any bugs please report them to me.

Note *) I stopped using expensive (400 $ a year) code signing certificates to bypass the “smartscreen” on Windows so this IDE (and the next version of the others) is free. So if you want to use this IDE just tell smartscreen that you trust this software. On de Linux it is has never been a problem using this IDE.

Version 1.01

  • Initial release, it might be not completely bug free, I will test on, wait for remarks and release the next version soon.

8048 links, tips and documents

More pages on software development

[catlist name=”Software development”]

Posted on Leave a comment

Intel MSC-48 chips

MAB8048H

One of the forgotten microprocessors / microcontrollers is the Intel MCS-48 family which was  Intel’s first microcontroller and was released in 1976 and was manufactured into the 1990ties. At the bottom of this page I have a overview of the many members of this microcontroller family. The 8048 is the most prominent member of the family. Finally the MCS-48 chips were replaced by the very successful MCS-51 series processors that are still manufactured (and used) today.

The MCS-48 microcontroller series was the first range of microcontroller from Intel and it was  originally released in 1976. The first chips were the 8048, 8035 and 8748 and the 8048 is probably the most used chip of this family. The first chips were produced using NMOS  and in the early 1980s they became available in CMOS. The chips were produced until the 1990tie but there are still a lot around these days.

The MCS-48 microcontroller series has a modified Harvard architecture, with internal or external program ROM and 64 to 256 bytes of internal (on-chip) RAM. The I/O is mapped into its own address space, separate from programs and data and that made it a perfect controller in f.i. keyboards and toys. The original IBM PC keyboard used an 8048 as its internal microcontroller.

Common chips that are still available today are:

DeviceInternalMemoryRemarks
8035none64 × 8 RAM
8038none64 × 8 RAM
8039none128 × 8 RAM
8040none256 × 8 RAM
80481K × 8 ROM64 × 8 RAM27× I/O ports
80492K × 8 ROM128 × 8 RAM27× I/O ports
80504K x 8 ROM256 × 8 RAM
87481K × 8 EPROM64 × 8 RAM4K program memory expandable, 2× 8-bit timers, 27× I/O ports
87492K × 8 EPROM128 × 8 RAM2× 8-bit timers, 27× I/O ports

NEC UPD8022C (Processor)

In 1976 Intel and NEC agreed that NEC could make second source chips from Intel and NEC also made and 8022 from Intel. The 8022 is as standard MCS-48 series chip and has a modified Harvard architecture, with 2K × 8 ROM 64 × 8 RAM + A/D-converter. I cannot find any datasheet on this chip.

wikipedia MCS-48 / 8035 (Processor) (Eng)



Intel 8035 (Processor)

In 1976 Intel introduced the MCS-48 microcontroller series, its first members were 8048, 8035 and 8748. In the beginning these chips were using NMOS technology, later they became available in CMOS technology. The MCS-48 series has a modified Harvard architecture, with internal or external program ROM and 64–256 bytes of internal (on-chip) RAM. The I/O is mapped into its own address space, separate from programs and data.The MCS-48 series was later replaced by the very successful MCS-51 series but the chips are still used in cheap consumer electronics devices such as TV remotes, computer keyboards. and toys. Compared to the standard 8048 the 8035 has no internal ROM and 64 x 8 bytes internal RAM memory.
wikipedia MCS-48 / 8035 (Processor) (Eng)
UPD80C35 Processor Datasheet



Intel 8039 (Processor)

The 8039 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8039 equals to a 8035 and has no internal ROM and 128 x 8 bytes internal RAM memory on chip.
wikipedia MCS-48 / 8035 (Processor) (Eng)
P8039AHL Processor Datasheet



>

Intel 8039 (Processor)

The 8040 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8040 equals to a 8035 and has no internal ROM and 256 x 8 bytes internal RAM memory on chip.
wikipedia MCS-48 / 8035 (Processor) (Eng)
P8039AHL Processor Datasheet



8041 (UPI)

The 8041 is also a member of the MCS-48 processor family and it use is a Universal Peripheral Interface 8 bit Slave Microcontroller. It has 1024 x 8 ROM and 64 x 8 RAM on chip. The 8041 is essentially a ‘‘slave’’ microcontroller, or a microcontroller with a slave interface included on the chip. Interface registers are included to enable the UPI device to function as a slave peripheral controller in the MCS Modules and iAPX family, as well as other 8-, 16-, and 32-bit systems.
wikipedia 8048 (Eng)
UPD8041 DatasManual



D8741 (UPI)

The 8741 is also a member of the MCS-48 processor family and it use is a Universal Peripheral Interface 8 bit Slave Microcontroller. It has 1024 x 8 EPROM and 64 x 8 RAM on chip. The 8741 is essentially a ‘‘slave’’ microcontroller, or a microcontroller with a slave interface included on the chip. Interface registers are included to enable the UPI device to function as a slave peripheral controller in the MCS Modules and iAPX family, as well as other 8-, 16-, and 32-bit systems. I have four D8741 from NEC and two D8741 from Intel in my collection.
wikipedia 8048 (Eng)
D8741 DatasManual



8042 (UPI)

The 8042 is also a member of the MCS-48 processor family and it use is a Universal Peripheral Interface 8 bit Slave Microcontroller. It has 4096 x 8 ROM and 256 x 8 RAM on chip. The 8042 is essentially a ‘‘slave’’ microcontroller, or a microcontroller with a slave interface included on the chip. Interface registers are included to enable the UPI device to function as a slave peripheral controller in the MCS Modules and iAPX family, as well as other 8-, 16-, and 32-bit systems.
wikipedia 8048 (Eng)
MBL8042 DatasManual



8048 (MCU)

The 8048 is also a member of the MCS-48 processor family. The 8048 has 1Kb x 8 bytes ROM and 64 x 8 bytes internal RAM memory on chip, and 27 I/O lines. I have two PE8048 from Intel and four MAB8048 from Philips in my collection.
wikipedia 8048 (Eng)
8048 DatasManual



P8748 (MCU)

The 8748 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8748 has 1Kb x 8 bytes PROM and 64 x 8 bytes internal RAM memory on chip, and 27 I/O lines.
wikipedia 8048 (Eng)
P8748 DatasManual



8049 (MCU)

The 8049 is also a member of the MCS-48 processor family. Compared to the standard 8048 the 8049 has 2Kb x 8 bytes ROM and 128 x 8 bytes internal RAM memory on chip.
wikipedia 8048 (Eng)
MBL8042 DatasManual



8050 (8 bit Microsontroller)

M5M8050H Datasheet (pdf)



Simple processor

The 8048 is a very simple (but powerful) processor, with only one A4 page of instructions. You can use the internal ROM and have a lot of I/O pins, but when activating the EA pin, you can also map the ROM to outside and use a eeprom or eprom to hold the code.

Pinout 8048 microcontroller

Internal diagram of the 8048

Schematic 8048 driven by Arduino Nano

Most so called Retroshields are based on the Arduino Mega because of the internal memory and the huge amount of I/O pins. But the Arduino Mega in combination with the Retroshield is rather expensive (compared to an Arduino Nano) and the Arduino Nano has just enough I/O pins to interface to an 8048 (in my case a 8049) processor. You will have to use a CMOS version of the 8048 because this one is static and will run a a low speed. I have added 8 leds and 4 input buttons to experiment with.

There is no PCB for this so it will be old fashion soldering, but I did it in one hour on a piece of prototyping board. You just assemble the 8048 sourcecode you have written and convert it to hex. In the Arduino source code there is an array called rom and you just paste the hex code there. The Arduino will act as a 4K rom and 256 bytes external ram to the 8048 processor. In the standard Arduino source code file I included as moving lights demo, so you can see the board is working. You will see that the hardware is almost the same as the circuit diagram below. I am currently working on an 8048 IDE program, I will publish this on this website when its is ready. It is a lot of fun playing around with this old processor.

Her is the sip file with the Arduino Nano sourcode.

Schematic 8048 with external Eprom


Intel_8048_Single_Board_Computer on GitHub

https://github.com/jim11662418/Intel_8048_Single_Board_Computer

A simple Intel 8048 Single Board Computer. The firmware was assembled with the Macro Assembler AS with full schematics and sourcecode of the project, even the sourcecode of a monitor programm. It is fun to play with such aq simple, but yet powerful, micrcontroller. There is a good open source assembler:

http://john.ccac.rwth-aachen.de:8000/as/

Documentation and downloads