Hubbry Logo
search
logo
2294865

Intel 8085

logo
Community Hub0 Subscribers
Read side by side
from Wikipedia

Intel 8085
An Intel P8085AH-2 processor variant with black plastic and silver pins
General information
LaunchedMarch 1976
Discontinued2000[1]
Common manufacturer
Performance
Max. CPU clock rate3, 5 and 6 MHz
Data width8 bits
Address width16 bits
Architecture and classification
Technology node3 μm
Instruction set8085
Physical specifications
Transistors
  • 6,500
Package
Socket
History
PredecessorIntel 8080
SuccessorIntel 8086
Support status
Unsupported

The Intel 8085 ("eighty-eighty-five") is an 8-bit microprocessor produced by Intel and introduced in March 1976.[2] It is binary compatible with the more famous Intel 8080. It is the last 8-bit microprocessor developed by Intel. The "5" in the part number highlighted the fact that the 8085 uses a single +5-volt (V) power supply, compared to the 8080's +5, -5, and +12V, which makes the 8085 easier to integrate into systems that by this time were mostly +5V.

The other major change was the addition of four new interrupt pins and a serial port, with separate input and output pins. This was often all that was needed in simple systems and eliminated the need for separate integrated circuits to provide this functionality, as well as simplifying the computer bus as a result. The only changes in the instruction set compared to the 8080 were instructions for reading and writing data using these pins.

The 8085 is supplied in a 40-pin DIP package. Given the new pins, this required multiplexing 8-bits of the address (AD0-AD7) bus with the data bus. This means that specifying a complete 16-bit address requires it to be sent via two 8-bit pathways, and one of those two has to be temporarily latched using separate hardware such as a 74LS373. Intel manufactured several support chips with an address latch built in. These include the 8755, with an address latch, 2 KB of EPROM and 16 I/O pins, and the 8155 with 256 bytes of RAM, 22 I/O pins and a 14-bit programmable timer/counter. The multiplexed address/data bus reduced the number of PCB tracks between the 8085 and such memory and I/O chips.

While the 8085 was an improvement on the 8080, it was eclipsed by the Zilog Z80 in the late 1970s and early 1980s, which took over much of the desktop computer market.

Although not widely used in computers, the 8085 had a long life as a microcontroller. Once designed into such products as the DECtape II controller and the VT102 video terminal in the late 1970s, the 8085 served for new production throughout the lifetime of those products.

Intel 8085A CPU die

Description

[edit]
i8085 microarchitecture
i8085 pinout

The 8085 is a conventional von Neumann design based on the Intel 8080. Unlike the 8080 it does not multiplex state signals onto the data bus, but the 8-bit data bus is instead multiplexed with the lower eight bits of the 16-bit address bus to limit the number of pins to 40. State signals are provided by dedicated bus control signal pins and two dedicated bus state ID pins named S0 and S1. Pin 40 is used for the power supply (+5 V) and pin 20 for ground. Pin 39 is used as the Hold pin.

The Intel 8085 processor was designed using nMOS circuitry, with later "H" versions implemented in Intel's enhanced nMOS process known as HMOS II ("High-performance MOS"), which was originally developed for fast static RAM products.[3] Unlike the 8080, the 8085 requires only a single 5-volt power supply, similar to its competing processors. The 8085 contains approximately 6,500 transistors.[4]

The 8085 incorporates the functions of the 8224 (clock generator) and the 8228 (system controller) on chip, increasing the level of integration. A downside compared to similar contemporary designs (such as the Z80) is the fact that the buses require demultiplexing; however, address latches in the Intel 8155, 8355, and 8755 memory chips allow a direct interface, so an 8085 along with these chips is almost a complete system.

The 8085 has extensions to support new interrupts, with three maskable vectored interrupts (RST 7.5, RST 6.5 and RST 5.5), one non-maskable interrupt (TRAP), and one externally serviced interrupt (INTR). Each of these five interrupts has a separate pin on the processor, a feature which permits simple systems to avoid the cost of a separate interrupt controller. The RST 7.5 interrupt is edge triggered (latched), while RST 5.5 and 6.5 are level-sensitive. All interrupts except TRAP are enabled by the EI instruction and disabled by the DI instruction. In addition, the SIM (Set Interrupt Mask) and RIM (Read Interrupt Mask) instructions, the only instructions of the 8085 that are not from the 8080 design, allow each of the three maskable RST interrupts to be individually masked. All three are masked after a normal CPU reset. SIM and RIM also allow the global interrupt mask state and the three independent RST interrupt mask states to be read, the pending-interrupt states of those same three interrupts to be read, the RST 7.5 trigger-latch flip-flop to be reset (cancelling the pending interrupt without servicing it), and serial data to be sent and received via the SOD and SID pins, respectively, all under program control and independently of each other.

SIM and RIM each execute in four clock cycles (T states), making it possible to sample SID and/or toggle SOD considerably faster than it is possible to toggle or sample a signal via any I/O or memory-mapped port, e.g. one of the ports of an 8155. (In this way, SID can be compared to the SO ["Set Overflow"] pin of the 6502 CPU contemporary to the 8085.)

Like the 8080, the 8085 can accommodate slower memories through externally generated wait states (pin 35, READY), and has provisions for Direct Memory Access (DMA) using HOLD and HLDA signals (pins 39 and 38). An improvement over the 8080 is that the 8085 can itself drive a piezoelectric crystal directly connected to it, and a built-in clock generator generates the internal high-amplitude two-phase clock signals at half the crystal frequency (a 6.14 MHz crystal would yield a 3.07 MHz clock, for instance). The internal clock is available on an output pin, to drive peripheral devices or other CPUs in lock-step synchrony with the CPU from which the signal is output. The 8085 can also be clocked by an external oscillator (making it feasible to use the 8085 in synchronous multi-processor systems using a system-wide common clock for all CPUs, or to synchronize the CPU to an external time reference such as that from a video source or a high-precision time reference).

The 8085 is a binary compatible follow-up on the 8080. It supports the complete instruction set of the 8080, with exactly the same instruction behavior, including all effects on the CPU flags (except for the AND/ANI operation, which sets the AC flag differently).[5] This means that the vast majority of object code (any program image in ROM or RAM) that runs successfully on the 8080 can run directly on the 8085 without translation or modification. (Exceptions include timing-critical code and code that is sensitive to the aforementioned difference in the AC flag setting or differences in undocumented CPU behavior.) 8085 instruction timings differ slightly from the 8080—some 8-bit operations, including INR, DCR, and the heavily used MOV r,r instructions, are one clock cycle faster, but instructions that involve 16-bit operations, including stack PUSH (which decrements the 16-bit SP register) generally one cycle slower. Conditional jumps not taken are three clocks faster on the 8085. As mentioned already, only the SIM and RIM instructions were new to the 8085.[nb 1]

Programming model

[edit]
Intel 8085 registers
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (bit position)
Main registers
A Flags Program Status Word
B C B
D E D
H L H (indirect address)
Index registers
SP Stack Pointer
Program counter
PC Program Counter
Status register
S Z - AC - P - CY Flags
Interrupt Mask Register
SO SE - R7.5 MSE E7.5 E6.5 E5.5 SIM (write)
SI I7.5 I6.5 I5.5 IE E7.5 E6.5 E5.5 RIM (read)

The processor has seven 8-bit registers accessible to the programmer, named A, B, C, D, E, H, and L, where A is also known as the accumulator. The other six registers can be used as independent byte-registers or as three 16-bit register pairs, BC, DE, and HL (or B, D, H, as referred to in Intel documents), depending on the particular instruction.

Some instructions use HL as a (limited) 16-bit accumulator. As in the 8080, the contents of the memory address pointed to by HL can be accessed as pseudo register M. It also has a 16-bit program counter and a 16-bit stack pointer to memory (replacing the 8008's internal stack). Instructions such as PUSH PSW, POP PSW affect the Program Status Word (accumulator and flags). The accumulator stores the results of arithmetic and logical operations, and the flags register bits (sign, zero, auxiliary carry, parity, and carry flags) are set or cleared according to the results of these operations. The sign flag is set if the result has a negative sign (i.e. it is set if bit 7 of the accumulator is set). The auxiliary or half carry flag is set if a carryover from bit 3 to bit 4 occurred. The parity flag is set to 1 if the parity (number of 1-bits) of the accumulator is even; if odd, it is cleared. The zero flag is set if the result of the operation was 0. Lastly, the carry flag is set if a carryover from bit 7 of the accumulator (the MSB) occurred.

Commands/instructions

[edit]

As in many other 8-bit processors, all instructions are encoded in a single byte (including register-numbers, but excluding immediate data), for simplicity. Some of them are followed by one or two bytes of data, which can be an immediate operand, a memory address, or a port number. A NOP "no operation" instruction exists, but does not modify any of the registers or flags. Like larger processors, it has CALL and RET instructions for multi-level procedure calls and returns (which can be conditionally executed, like jumps) and instructions to save and restore any 16-bit register-pair on the machine stack. There are also eight one-byte call instructions (RST) for subroutines located at the fixed addresses 00h, 08h, 10h,...,38h. These are intended to be supplied by external hardware in order to invoke a corresponding interrupt-service routine, but are also often employed as fast system calls. One sophisticated instruction is XTHL, which is used for exchanging the register pair HL with the value stored at the address indicated by the stack pointer.

8-bit instructions

[edit]

All two-operand 8-bit arithmetic and logical (ALU) operations work on the 8-bit accumulator (the A register). For two-operand 8-bit operations, the other operand can be either an immediate value, another 8-bit register, or a memory cell addressed by the 16-bit register pair HL. The only 8-bit ALU operations that can have a destination other than the accumulator are the unary incrementation or decrementation instructions, which can operate on any 8-bit register or on memory addressed by HL, as for two-operand 8-bit operations. Direct copying is supported between any two 8-bit registers and between any 8-bit register and an HL-addressed memory cell, using the MOV instruction. An immediate value can also be moved into any of the foregoing destinations, using the MVI instruction. Due to the regular encoding of the MOV instruction (using nearly a quarter of the entire opcode space) there are redundant codes to copy a register into itself (MOV B,B, for instance), which are of little use, except for delays.[nb 2] However, what would have been a copy from the HL-addressed cell into itself (i.e., MOV M,M) instead encodes the HLT instruction, halting execution until an external reset or unmasked interrupt occurs.[nb 3]

16-bit operations

[edit]

Although the 8085 is an 8-bit processor, it has some 16-bit operations. Any of the three 16-bit register pairs (BC, DE, HL) or SP can be loaded with an immediate 16-bit value (using LXI), incremented or decremented (using INX and DCX), or added to HL (using DAD). LHLD loads HL from directly addressed memory and SHLD stores HL likewise. The XCHG operation exchanges the values of HL and DE. XTHL exchanges last item pushed on stack with HL. Adding HL to itself performs a 16-bit arithmetic left shift with one instruction. The only 16-bit instruction that affects any flag is DAD (adding BC, DE, HL, or SP to HL), which updates the carry flag to facilitate 24-bit or larger additions and left shifts. Adding the stack pointer to HL is useful for indexing variables in (recursive) stack frames. A stack frame can be allocated using DAD SP and SPHL, and a branch to a computed pointer can be done with PCHL. These abilities make it feasible to compile languages such as PL/M, Pascal, or C with 16-bit variables and produce 8085 machine code. Subtraction and bitwise logical operations on 16 bits is done in 8-bit steps. Operations that have to be implemented by program code (subroutine libraries) include comparisons of signed integers as well as multiplication and division.

Undocumented instructions

[edit]

A number of undocumented instructions and flags were discovered by two software engineers, Wolfgang Dehnhardt and Villy M. Sorensen in the process of developing an 8085 assembler. These instructions use 16-bit operands and include indirect loading and storing of a word, a subtraction, a shift, a rotate, and offset operations.[6]

By the time 8085 was designed but not yet announced, many designers found it to be inferior to the competing products already on the market. The next generation 16-bit 8086 CPU was already in development. Intel made a last minute decision to leave 10 out of 12 new 8085 instructions undocumented to speed up and simplify the design of the upcoming 8086 CPU.[7]

Instruction set

[edit]

Differences between the 8080 and the 8085 are highlighted. Compared to the 8080, the 8085 may take more clocks, fewer clocks, or a mixture. For explanations of some symbols, see lower part of the table.

Opcode Operands Mnemonic Clocks Description
7 6 5 4 3 2 1 0 b2 b3
0 0 0 0 0 0 0 0 NOP 4 No operation
0 0 RP 0 0 0 1 datlo dathi LXI rp,data 10 RP ← data
0 0 RP 0 0 1 0 STAX rp 7 (RP) ← A [BC or DE only]
0 0 RP 0 0 1 1 INX rp 6 ↑ RP ← RP + 1
0 0 DDD 1 0 0 INR ddd 4/10 ↓ DDD ← DDD + 1
0 0 DDD 1 0 1 DCR ddd 4/10 ↓ DDD ← DDD - 1
0 0 DDD 1 1 0 data MVI ddd,data 7/10 DDD ← data
0 0 RP 1 0 0 1 DAD rp 10 HL ← HL + RP
0 0 RP 1 0 1 0 LDAX rp 7 A ← (RP) [BC or DE only]
0 0 RP 1 0 1 1 DCX rp 6 ↑ RP ← RP - 1
0 0 0 0 0 1 1 1 RLC 4 A1-7 ← A0-6; A0 ← Cy ← A7
0 0 0 0 1 1 1 1 RRC 4 A0-6 ← A1-7; A7 ← Cy ← A0
0 0 0 1 0 1 1 1 RAL 4 A1-7 ← A0-6; Cy ← A7; A0 ← Cy
0 0 0 1 1 1 1 1 RAR 4 A0-6 ← A1-7; Cy ← A0; A7 ← Cy
0 0 1 0 0 0 0 0 RIM 4 A ← interrupt mask
0 0 1 0 0 0 1 0 addlo addhi SHLD add 16 (add) ← HL
0 0 1 0 0 1 1 1 DAA 4 If A0-3 > 9 OR AC = 1 then A ← A + 6;

then if A4-7 > 9 OR Cy = 1 then A ← A + 0x60

0 0 1 0 1 0 1 0 addlo addhi LHLD add 16 HL ← (add)
0 0 1 0 1 1 1 1 CMA 4 A ← ¬A
0 0 1 1 0 0 0 0 SIM 4 interrupt mask ← A
0 0 1 1 0 0 1 0 addlo addhi STA add 13 (add) ← A
0 0 1 1 0 1 1 1 STC 4 Cy ← 1
0 0 1 1 1 0 1 0 addlo addhi LDA add 13 A ← (add)
0 0 1 1 1 1 1 1 CMC 4 Cy ← ¬Cy
0 1 DDD SSS MOV ddd,sss 4/7 ↓ DDD ← SSS
0 1 1 1 0 1 1 0 HLT 5 ↓ Halt
1 0 ALU SSS ADD ADC SUB SBB ANA XRA ORA CMP sss 4/7 A ← A [ALU operation] SSS
1 1 CC 0 0 0 Rcc (RET conditional) 6/12 ↑ If cc true, PC ← (SP), SP ← SP + 2
1 1 RP 0 0 0 1 POP rp 10 RP ← (SP), SP ← SP + 2
1 1 CC 0 1 0 addlo addhi Jcc add (JMP conditional) 7/10 ↓ If cc true, PC ← add
1 1 0 0 0 0 1 1 addlo addhi JMP add 10 PC ← add
1 1 CC 1 0 0 addlo addhi Ccc add (CALL conditional) 9/18 ↕ If cc true, SP ← SP - 2, (SP) ← PC, PC ← add
1 1 RP 0 1 0 1 PUSH rp 12 ↑ SP ← SP - 2, (SP) ← RP
1 1 ALU 1 1 0 data ADI ACI SUI SBI ANI XRI ORI CPI data 7 A ← A [ALU operation] data
1 1 N 1 1 1 RST n 12 ↑ SP ← SP - 2, (SP) ← PC, PC ← N x 8
1 1 0 0 1 0 0 1 RET 10 PC ← (SP), SP ← SP + 2
1 1 0 0 1 1 0 1 addlo addhi CALL add 18 ↑ SP ← SP - 2, (SP) ← PC, PC ← add
1 1 0 1 0 0 1 1 port OUT port 10 Port ← A
1 1 0 1 1 0 1 1 port IN port 10 A ← Port
1 1 1 0 0 0 1 1 XTHL 16 ↓ HL ↔ (SP)
1 1 1 0 1 0 0 1 PCHL 6 ↑ PC ← HL
1 1 1 0 1 0 1 1 XCHG 4 HL ↔ DE
1 1 1 1 0 0 1 1 DI 4 Disable interrupts
1 1 1 1 1 0 0 1 SPHL 6 ↑ SP ← HL
1 1 1 1 1 0 1 1 EI 4 Enable interrupts
7 6 5 4 3 2 1 0 b2 b3 Mnemonic Clocks Description
SSS DDD 2 1 0 CC ALU RP
B 0 0 0 NZ ADD ADI (A ← A + arg) BC
C 0 0 1 Z ADC ACI (A ← A + arg + Cy) DE
D 0 1 0 NC SUB SUI (A ← A - arg) HL
E 0 1 1 C SBB SBI (A ← A - arg - Cy) SP or PSW
H 1 0 0 PO ANA ANI (A ← A ∧ arg)
L 1 0 1 PE XRA XRI (A ← A ⊻ arg)
M 1 1 0 P ORA ORI (A ← A ∨ arg)
A 1 1 1 N CMP CPI (A - arg)
SSS DDD 2 1 0 CC ALU

Input/output scheme

[edit]

The 8085 supports both port-mapped and memory-mapped I/O. It supports up to 256 input/output (I/O) ports via dedicated Input/Output instructions, with port addresses as operands. Port-mapped IO can be an advantage on processors with limited address space. During a port-mapped I/O bus cycle, the 8-bit I/O address is output by the CPU on both the lower and upper halves of the 16-bit address bus.

Devices designed for memory mapped I/O can also be accessed by using the LDA (load accumulator from a 16-bit address) and STA (store accumulator at a 16-bit address specified) instructions, or any other instructions that have memory operands. A memory-mapped IO transfer cycle appears on the bus as a normal memory access cycle.

Development system

[edit]

Intel produced a series of development systems for the 8080 and 8085, known as the MDS-80 Microprocessor System. The original development system had an 8080 processor. Later 8085 and 8086 support was added including ICE (in-circuit emulators). It is a large and heavy desktop box, about a 20" cube (in the Intel corporate blue color) which includes a CPU, monitor, and a single 8-inch floppy disk drive. Later an external box was made available with two more floppy drives. It runs the ISIS operating system and can also operate an emulator pod and an external EPROM programmer. This unit uses the Multibus card cage which was intended just for the development system. A surprising number of spare card cages and processors were being sold, leading to the development of the Multibus as a separate product.

The later iPDS is a portable unit, about 8" × 16" × 20", with a handle. It has a small green screen, a keyboard built into the top, a 5¼ inch floppy disk drive, and runs the ISIS-II operating system. It can also accept a second 8085 processor, allowing a limited form of multi-processor operation where both processors run simultaneously and independently. The screen and keyboard can be switched between them, allowing programs to be assembled on one processor (large programs took a while) while files are edited in the other. It has a bubble memory option and various programming modules, including EPROM, and Intel 8048 and 8051 programming modules which are plugged into the side, replacing stand-alone device programmers. In addition to an 8080/8085 assembler, Intel produced a number of compilers including those for PL/M-80 and Pascal, and a set of tools for linking and statically locating programs to enable them to be burned into EPROMs and used in embedded systems.

A lower cost "MCS-85 System Design Kit" (SDK-85) board contains an 8085 CPU, an 8355 ROM containing a debugging monitor program, an 8155 RAM and 22 I/O ports, an 8279 hex keypad and 8-digit 7-segment LED, and a TTY (Teletype) 20 mA current loop serial interface. Pads are available for one more 2K×8 8755 EPROM, and another 256 byte RAM 8155 I/O Timer/Counter can be optionally added. All data, control, and address signals are available on dual pin headers, and a large prototyping area is provided.

List of Intel 8085 Models

[edit]
Model Number Technology Process Process Node Clock Speed Temperature Range Current Rating Power Tolerance Package Date of Release Price USD[list 1]
8085A[3] NMOS 3 micron 3 MHz 170 mA ± 5% $6.25
P8085AH[3] HMOS II 2 micron 3 MHz 135 mA ± 10% Plastic July/August 1981 $4.40
8085-2[8] 5 MHz
8085A-2[3] NMOS 3 micron 5 MHz 170 mA ± 5% $8.75
P8085AH-2[3] HMOS II 2 micron 5 MHz 135 mA ± 10% Plastic July/August 1981 $5.80
P8085AH-1[3] HMOS II 2 micron 6 MHz Plastic July/August 1981 $12.45
ID8085[9] 3 MHz Industrial March/April 1979 $38.75
M8085A[10] 3 MHz Military March/April 1979 $110.00
  1. ^ In quantities of 100 and up

Applications

[edit]

The 8085 processor was used in a few early personal computers, for example, the TRS-80 Model 100 line used an OKI manufactured 80C85 (MSM80C85ARS). The CMOS version 80C85 of the NMOS/HMOS 8085 processor has several manufacturers. IBM used the 8085 in the IBM System/23 Datamaster concealed under the reference 4178615.[11] In the Soviet Union, an 80C85 clone was developed under the designation IM1821VM85A (Russian: ИМ1821ВМ85А [ru]) which in 2016 was still in production.[12] Some manufacturers provide variants with additional functions such as additional instructions.[citation needed]

The radiation hardened version of the 8085 has been in on-board instrument data processors for several NASA and ESA space physics missions in the 1990s and early 2000s, including CRRES, Polar, FAST, Cluster, HESSI, the Sojourner Mars Rover,[13] and THEMIS. The Swiss company SAIA used the 8085 and the 8085–2 as the CPUs of their PCA1 line of programmable logic controllers during the 1980s.

Pro-Log Corp. put the 8085 and supporting hardware on an STD Bus format card containing CPU, RAM, sockets for ROM/EPROM, I/O and external bus interfaces. The included Instruction Set Reference Card uses entirely different mnemonics for the Intel 8085 CPU. The product was a direct competitor to Intel's Multibus card offerings.

Western Digital's WD1003-SCS is a 1:1 interleave SCSI disk controller that interfaces to ST506-style disk drives. It is an example of an embedded 8085 application that was just beyond the capabilities of available microcontrollers as its RAM required DMA access.[14]

MCS-85 family

[edit]

The 8085 CPU is one part of a family of chips developed by Intel for building a complete system. Many of these support chips were also used with other processors. The original IBM PC based on the Intel 8088 processor used several of these chips; the equivalent functions today are provided by VLSI chips, namely the "Southbridge" chips.

  • 8085 – CPU
  • 8231 – Arithmetic Processing Unit
  • 8232 – Floating-Point Processor
  • 8205 – 1 of 8 Binary Decoder

Static RAM

[edit]
  • 8155 – 2K-bit static MOS RAM with 3 I/O Ports and Timer. Multiplexed address/data. Active low CE. The industrial version of ID8155 was available for US$37.50 in quantities of 100 and up.[9][15] The military version of M8155 was available for US$100.00 in quantities of 100.[10] There is a MHz version of Intel 8155–2.[8] The available 8155H was introduced using the HMOS II technology which it uses 30 percent less power than the previous generation. The plastic package version of P8155H (3 MHz) and P8155H-2 (5 MHz) are available for US$5.15 and US$6.40 per 100 in quantities respectively.[3]
  • 8156 – 2K-bit static MOS RAM with 3 I/O Ports and Timer. Multiplexed address/data. Active high CE. The industrial version of ID8156 was available for US$37.50 in quantities of 100.[9][15] There is a 5 MHz version of Intel 8156–2.[8] The available 8156H was introduced using the HMOS II technology which it uses 30 percent less power than the previous generation. The plastic package version of P8156H (3 MHz) and P8156H-2 (5 MHz) are available for US$5.15 and US$6.40 per 100 in quantities respectively.[3]
  • 8185 – 1,024 x 8-bit static RAM packaged in a compact 18-pin DIP. It includes three chip selects and an internal address latch driven directly by the 8085's ALE. The 5 MHz version of Intel 8185-2 was available for US$48.75 in quantity of 100.[8]

ROM memory

[edit]
  • 8355 – 2,048 × 8-bit ROM, two 8-bit I/O ports. Multiplexed address/data. The industrial version of ID8355 was available for US$22.00 in quantities of 1000.[9] There is a 5 MHz version of Intel 8355–2.[8]
  • 8755 – 2048 x 8-bit EPROM, two 8-bit I/O ports. Multiplexed address/data. The Intel 8755A-2 is the 5 MHz version. That version was available for US$81.00 in quantity of 100.[8] There was an Industrial Grade version Intel I8755A-8.[15]

RAM controllers

[edit]
  • 8202 – Dynamic RAM Controller. This supports the Intel 2104A, 2117, or 2118 DRAM modules, up to 128 KB of DRAM modules. Price was reduced to US$36.25 for quantities of 100 for the D8202 package style around May 1979.[16]
  • 8203 – Dynamic RAM Controller. The Intel 82C03 CMOS version dissipates less than 25 mA. It supports up to 32x 64K-bit RAM for a total capacity of up to 256 KB.[17] It refreshes every 10 to 16 microseconds. It supports multiplexing of row and column memory addresses. It generates strobes to latch the address internally. It arbitrates between simultaneous requests for memory access and refresh. It also acknowledges memory-access cycles to the system CPU. The 82C03 was available in either ceramic or plastic packages for US$32.00 in 100 pieces quantity.[18]
  • 8207 – DRAM Controller

Periphery

[edit]
  • 8206 – Error Detection & Correction Unit
  • 8210 – TTL To MOS Shifter & High Voltage Clock Driver
  • 8212 – 8-bit I/O Port. The industrial version of ID8212 was available for US$6.75 in quantities of 100.[9]
  • 8216 – 4-bit Parallel Bidirectional Bus Driver. The industrial version of ID8216 was available for US$6.40 in quantities of 100.[9]
  • 8218/8219 – Bus Controller
  • 8226 – 4-bit Parallel Bidirectional Bus Driver. The industrial version of ID8226 was available for US$6.40 in quantities of 100.[9]
  • 8237 – DMA Controller
  • 8251USART Communication Controller
  • 8253Programmable Interval Timer
  • 8254 – Programmable Interval Timer. The 82C54 CMOS version was outsourced to Oki Electronic Industry Co., Ltd.[19]
  • 8255 – Programmable Peripheral Interface
  • 8256 – Multifunction Peripheral. This multifunction chip uses Serial Communications, Parallel I/O, Counter/Timers and Interrupts. The Intel 8256AH was available for US$21.40 in quantities of 100.[20] This integrated circuit chip integrates the chips with the following functionality:
  • 8257DMA Controller
  • 8259Programmable Interrupt Controller
  • 8271 – Programmable Floppy Disk Controller
  • 8272 – Single/Double Density Floppy Disk Controller. It is compatible with IBM 3740 and System 34 formats and provides both Frequency Modulation (FM) or Modified Frequency Modulation (MFM). This version was available for US$38.10 in quantities of 100.[21]
  • 8273 – Programmable HDLC/SDLC Protocol Controller. This device supports ISO/CCITT's HDLC and IBM's SDLC communication protocols. These were available for US$33.75 (4 MHz) and US$30.00 (8 MHz) in quantities of 100.[21]
  • 8274 – Multi-Protocol Serial Controller. This support three different protocols using the following feature of Asynchronous Operation, Byte Synchronous Operation and Bit Synchronous Operation. The Byte Synchronous mode is compatible to IBM's Bisync signal protocol. The Bit Synchronous mode is compatible to IBM's SDLC and the International Standards Organization's HDLC protocol and is compatible with CCITT X.25 international standard as well. It was packaged in 40-pin product using the Intel's HMOS technology. The available version is rated up to 880 kilobaud for US$30.30 in the quantities of 100.[22] NEC μPD7201 was also compatible.
  • 8275 – Programmable CRT Controller. It refreshes the raster scan display by buffering from main memory and keeping track of the display portion. This version was available for US$32.00 in quantities of 100.[21]
  • 8276 – Small System CRT Controller
  • 8278 – Programmable Key Board Interface
  • 8279 – Key Board/Display Controller
  • 8282 – 8-bit Non-Inverting Latch with Output Buffer
  • 8283 – 8-bit Inverting Latch with Output Buffer
  • 8291 – GPIB Talker/Listener. This controller can operate from 1 to 8 MHz. It was available for US$23.75 in quantities of 100.[21]
  • 8292 – GPIB Controller. Designed around Intel 8041A which it has been programmed as an controller interface element. It also controls the bus using three lock-up timers to detect issues on the GPIB bus interface. It was available for US$21.25 in quantities of 100.[21]
  • 8293 – GPIB Transceiver. This chipset supports up to 4 different modes: Mode 0 Talker/Listener Control Lines, Mode 1 Talker/Listener/Controller Control Lines, Mode 2 Talker/Listener/Controller Data Lines, and Mode 3 Talker/Listener Data Lines. It was available for US$11.50 in quantities of 100. At the time of release, it was available in samples then full production in the first quarter of 1980.[23]
  • 8294 – Data Encryption/Decryption Unit + 1 O/P Port. It encrypts and decrypts 64-bit blocks of data using the Federal Information Processing Data Encryption Standard algorithm. This also uses the National Bureau of Standards encryption algorithm. This DEU operates using a 56-bit user-specified key to generate 64-bit cipher words. It was available for US$22.50 in quantities of 100.[21]
  • 8295 – Dot Matrix Printer Controller. This interfaces with LRC 7040 Series dot matrix printers and other small printers as well. It was available for US$20.65 in quantities of 100.[21]

Educational use

[edit]

In many engineering schools the 8085 processor is used in introductory microprocessor courses. Trainer kits composed of a printed circuit board, 8085, and supporting hardware are offered by various companies. These kits usually include complete documentation allowing a student to go from soldering to assembly language programming in a single course. Also, the architecture and instruction set of the 8085 are easy for a student to understand. Shared Project versions of educational and hobby 8085-based single-board computers are noted below in the External Links section of this article.

Simulators

[edit]

Software simulators are available for the 8085 microprocessor, which allow simulated execution of opcodes in a graphical environment.

See also

[edit]

Notes

[edit]

References

[edit]

Further reading

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
The Intel 8085 is an 8-bit microprocessor developed by Intel Corporation and introduced in November 1976 as an enhanced successor to the 8080.[1] It features a complete central processing unit (CPU) implemented in N-channel depletion load silicon gate technology (HMOS), with a 16-bit address bus allowing access to 64 KB of memory and an 8-bit data bus for processing.[2] The chip operates on a single +5 V power supply, significantly reducing power consumption to less than half that of the 8080 while providing faster performance through an integrated clock oscillator and system controller.[1] Housed in a 40-pin dual in-line package (DIP), it includes built-in serial I/O ports and interrupt handling capabilities, enabling simpler system designs with fewer external components compared to earlier processors.[2] The 8085's instruction set comprises 78 instructions from the 8080A augmented by two additional ones (RIM and SIM) for enhanced functionality, supporting a clock speed of up to 6 MHz in variants like the 8085AH-1, with instruction cycle times as low as 0.8 µs.[2] Its architecture includes six general-purpose registers, a stack pointer, and a program counter, facilitating efficient assembly language programming for real-time operations.[3] Binary compatibility with the 8080 allowed seamless software migration, while innovations like the SID (Serial Input Data) and SOD (Serial Output Data) pins supported direct peripheral interfacing without additional hardware.[4] The 8085 played a pivotal role in the proliferation of microcomputer systems during the late 1970s and 1980s, serving as a foundational component in embedded applications such as industrial controllers, microwave ovens, washing machines, and early medical devices.[5] Its low cost, reliability, and ease of integration made it a preferred choice for educational tools, prototyping kits, and control systems in sectors like automotive electronics and instrumentation.[6] Despite being superseded by more advanced processors, the 8085's design principles influenced subsequent Intel architectures and remains a key subject in computer engineering curricula for understanding microprocessor fundamentals.[7]

Overview

Introduction

The Intel 8085 is an 8-bit microprocessor developed by Intel Corporation and introduced in March 1976 as a successor to the 8080, offering full software compatibility while integrating additional on-chip functionality to reduce external component requirements.[8] It was designed using n-channel silicon gate MOS technology, specifically NMOS or HMOS variants, to provide enhanced performance and cost efficiency in microcomputer systems.[9] The processor incorporates an internal clock generator and system controller, enabling simpler system designs compared to its predecessor by eliminating the need for separate clock and control chips.[8] Key specifications of the 8085 include an 8-bit bidirectional multiplexed data bus and a 16-bit address bus, allowing access to up to 64 KB of memory.[8] It operates at clock speeds ranging from 3 MHz to 6 MHz depending on the variant, such as the 8085AH at 3 MHz or the 8085AH-2 at 5 MHz, and requires a single +5 V power supply with low power dissipation.[10] The microprocessor is housed in a 40-pin dual in-line package (DIP), facilitating easy integration into circuit boards.[8] Among its innovations, the 8085 features built-in serial input/output (I/O) ports via dedicated SID and SOD pins for direct communication without additional hardware, support for 256 input and 256 output ports addressed through dedicated instructions, and comprehensive interrupt handling with five interrupt pins: TRAP (non-maskable), RST 7.5, RST 6.5, RST 5.5, and INTR (maskable).[8] These capabilities, combined with compatibility with the MCS-85 family of support devices, allow for versatile peripheral integration.[4] The 8085 played a pivotal role in advancing embedded systems by enabling cost-effective single-chip microcomputer solutions, particularly when paired with peripherals like the 8155 for memory and timing functions, and found widespread adoption in industrial control, instrumentation, and early personal computing applications during the late 1970s and 1980s.[8] Its design emphasized reliability and ease of use, contributing to the proliferation of microprocessor-based systems in resource-constrained environments.[11]

History and Development

The Intel 8085 microprocessor was developed as an evolutionary successor to the Intel 8080, with design work building on the earlier chip's architecture to address limitations in system integration and power requirements. Announced in March 1976 and released in November of that year, the 8085 was produced using Intel's n-channel enhancement/depletion load MOS process, enabling a single +5 V power supply in contrast to the 8080's need for multiple voltages (+5 V, +12 V, and -5 V). First samples became available in 1976, with full production ramping up in 1977 as part of Intel's MCS-85 family of support devices. The development team drew from the expertise behind the 8080, which had been led by engineer Federico Faggin, though Faggin had departed Intel in 1974 to found Zilog; the 8085 effort focused on refining NMOS fabrication techniques to achieve lower power dissipation—approximately 1.25 W maximum compared to the 8080's higher consumption of around 2 W—while maintaining binary compatibility with existing 8080 software.[1][8][12] Key motivations for the 8085's design included reducing the external components required for a functional system, such as integrating an on-chip clock generator and reset circuitry that the 8080 necessitated externally, thereby simplifying board layouts and lowering overall costs. The 8080 chip was priced at around $360 and required several support chips (e.g., 8224 clock generator and 8228 system controller) for a complete system, which typically cost over $300 in kit form like the Altair 8800. The 8085, priced lower at around $10 in high volume, integrated these functions on-chip, enabling simpler systems with fewer components and reduced overall cost.[1][8][12][13] Development challenges centered on incorporating new features like serial input data (SID) and serial output data (SOD) ports for basic serial communication, along with enhanced interrupt capabilities, all while optimizing the NMOS process for efficiency and speed—offering up to 20% faster performance than the 8080 at comparable clock rates. These additions supported vectored interrupts (RST 7.5, 6.5, 5.5) and a non-maskable TRAP, improving real-time responsiveness without compromising the core instruction set.[1][8][12] The 8085 faced market competition from rivals like the MOS Technology 6502, which undercut Intel's pricing at around $25 per unit compared to the 8080's $175-$200, prompting Intel to position the 8085 as a more affordable 8-bit option for hobbyists and OEMs. Market adoption began with early personal computer derivatives, such as upgrades to the Altair 8800 platform, and expanded into embedded control applications like industrial automation and instrumentation during the late 1970s. Production peaked in the 1980s as the MCS-85 ecosystem matured, but Intel discontinued the 8085 in 2000 amid the dominance of more advanced architectures; however, licensed clones and second-sourced variants continue to appear in legacy embedded systems worldwide. A notable innovation was the interrupt system, which facilitated prioritized handling for multitasking environments.[14][8][15]

Architecture

Programming Model

The programming model of the Intel 8085 microprocessor encompasses its internal registers, addressing capabilities, stack management, interrupt mechanisms, and power-saving features, providing programmers with a structured interface to the processor's 8-bit architecture and 64 KB addressable memory space.[8] The register set consists of six 8-bit general-purpose registers (B, C, D, E, H, L), which can be paired into three 16-bit register pairs (BC, DE, HL) for handling larger data values or memory pointers, with the HL pair commonly serving as a data pointer for indirect addressing. An 8-bit accumulator (A) acts as the primary register for arithmetic, logical, load/store, and input/output operations. Additionally, two 16-bit registers support program flow and memory management: the program counter (PC), which holds the address of the next instruction to be fetched and addresses up to 64 KB of memory, and the stack pointer (SP), which points to the top of the stack in external memory. The 8-bit flag register contains five status flags—sign (S), zero (Z), auxiliary carry (AC), parity (P), and carry (CY)—that indicate the results of arithmetic and logical operations, with three unused bits.[8] Upon assertion of the RESET IN pin (low), the program counter (PC) is set to 0000H, the interrupt enable flip-flop is reset (disabling interrupts), the address and data buses are tri-stated, and the contents of internal registers—including general-purpose registers (B, C, D, E, H, L), accumulator, stack pointer (SP), and flag register—are indeterminate or random (not initialized to specific values). When the reset signal goes high, execution begins from address 0000H.[8] Addressing modes in the 8085 enable flexible operand specification, supporting immediate addressing where data is embedded directly in the instruction; register addressing for operations between registers; direct addressing for memory locations specified by a 16-bit address in the instruction; register indirect addressing using the contents of a register pair (typically HL) as the memory address; and implied addressing for instructions that operate on fixed registers like the accumulator without explicit operands. These modes facilitate memory addressing up to 64 KB, either through the 16-bit HL pair for indirect access or via direct 16-bit addresses.[8] Stack operations utilize external memory as a hardware stack, with the SP register pointing to the next available location at the top; the stack grows downward, decrementing the SP by 2 for each PUSH instruction that stores a 16-bit register pair, and incrementing it by 2 for each POP that retrieves a pair. These operations support subroutine calls and interrupt handling by saving and restoring register contents automatically.[8] Interrupt handling includes a non-maskable TRAP interrupt, which is rising edge-triggered and vectors to address 0024H with the highest priority; three maskable restart interrupts—RST 5.5 (vectoring to 002CH), RST 6.5 (0034H), and RST 7.5 (003CH)—that are level-sensitive except for the edge-sensitive RST 7.5, prioritized from lowest to highest; and a maskable INTR interrupt, which is level-sensitive, lowest priority, and software-vectored via an external instruction fetched on the RD signal. The SIM instruction sets interrupt masks and serial I/O control, while RIM reads the interrupt mask and pending status into the accumulator for maskable interrupt management.[8] For power-saving, the HALT instruction suspends processor execution, floating the address and data buses while preserving register and flag contents, until reactivation by a reset, HOLD signal, or interrupt.[8]

Instruction Set

The Intel 8085 microprocessor's instruction set comprises 246 opcodes mapped to 80 unique mnemonics, enabling a range of operations from basic data manipulation to program control. These instructions are grouped into categories including data transfer (e.g., MOV, LXI, LDA), arithmetic (e.g., ADD, SUB, INR), logical (e.g., ANA, ORA, CMP), branch (e.g., JMP, CALL, RET), stack (e.g., PUSH, POP), I/O (e.g., IN, OUT), and machine control (e.g., NOP, HLT). The set maintains full software compatibility with the Intel 8080 while adding support for vectored interrupts and serial I/O via dedicated instructions like RIM and SIM.[16] Instructions follow variable-length formats of 1 to 3 bytes: single-byte opcodes for register operations, two bytes for 8-bit immediate data or port addresses, and three bytes for 16-bit immediates or direct addresses. The processor executes instructions in a fetch-decode-execute cycle, with timings measured in T-states (clock cycles) ranging from 4 to 18 per instruction, depending on whether internal register access or external memory fetches are required. For instance, register-to-register moves complete in 4-7 T-states, while memory-involved operations add wait states for address decoding and data transfer.[16] Data transfer instructions handle both 8-bit and 16-bit movements without altering flags in most cases. 8-bit operations load or store data to/from the accumulator, general registers (B, C, D, E, H, L), or memory addressed by the HL pair, as in MOV r1, r2 (1 byte, 5 T-states for register pairs) or LDA addr (3 bytes, 13 T-states). 16-bit operations target register pairs (BC, DE, HL, SP), such as LXI rp, data16 (3 bytes, 10 T-states) for immediate loads or SHLD addr (3 bytes, 16 T-states) for storing the HL pair to memory.[16] Arithmetic instructions primarily perform 8-bit computations on the accumulator, including addition (ADD r or ADI data8, affecting Z/S/P/CY/AC flags), subtraction (SUB r or SUI data8), and increment/decrement (INR/DCR r, 1 byte, 5-6 T-states, updating Z/S/P/AC but preserving CY). 16-bit arithmetic includes INX/DCX rp (1 byte, 5-6 T-states for BC/DE, 6-7 for HL/SP, no flags affected) for pair increments and DAD rp (1 byte, 10 T-states, affecting CY) for adding a pair to HL. Logical operations apply bitwise AND (ANA r, 1 byte, 4 T-states), OR (ORA r), XOR (XRA r), and compare (CMP r), all setting Z/S/P/CY/AC flags based on the result.[16] Branch instructions facilitate unconditional and conditional jumps/calls, such as JMP addr (3 bytes, 10 T-states) or conditional JC addr (jump on carry, 10/7 T-states taken/not taken). Stack operations like PUSH rp (1 byte, 12 T-states) and POP rp (1 byte, 10 T-states) transfer 16-bit pairs to/from the stack pointer, while I/O uses IN/OUT port8 (2 bytes, 10 T-states each) for direct port access. Machine control includes NOP (1 byte, 4 T-states, no effect) and HLT (1 byte, 5 T-states, stops execution). Indirect addressing appears in PCHL (1 byte, 5 T-states, loads PC from HL).[16] Certain opcodes remain undocumented, with behaviors not specified by Intel and potentially varying by implementation or leading to undefined results. For example, RST 0 through RST 4 may execute as NOPs or trigger partial resets in some cases, while invalid opcodes such as 0x08 (unimplemented) can cause erratic operation or no-op fallback depending on the silicon revision.[17] The following table summarizes representative instructions across categories, highlighting formats, timings, and flag impacts (Z: zero, S: sign, P: parity, CY: carry, AC: auxiliary carry):
CategoryMnemonicBytesCycles (T-states)Flags Affected
Data TransferMOV r, r14-7None
Data TransferLXI rp, data16310None
ArithmeticADD r14Z, S, P, CY, AC
ArithmeticINX rp15-6None
LogicalANA r14Z, S, P, CY, AC
BranchJMP addr310None
StackPUSH rp112None
I/OIN port8210None
Machine CtrlNOP14None

Input/Output Mechanism

The Intel 8085 microprocessor implements a dedicated input/output (I/O) addressing scheme that is separate from its memory addressing, enabling direct access to 256 unique 8-bit I/O ports without encroaching on the 64 KB memory address space. This peripheral-mapped I/O approach uses the IN and OUT instructions to transfer data between the accumulator and a specified port, where the 8-bit port address (ranging from 00H to FFH) serves as the instruction operand and is placed on the lower eight address lines (A0–A7 pins) during the operation. To distinguish I/O cycles from memory cycles, the IO/M (input/output or memory) control signal is driven high, while the upper address lines (A8–A15) are set to all zeros, effectively duplicating the port address across the full address bus for compatibility with external decoding logic. This scheme allows for efficient programmed I/O, where the processor polls or directly controls peripherals, contrasting with memory-mapped I/O that would require dedicating portions of the memory space.[8][18] Serial I/O in the 8085 is supported through two dedicated pins: SID (serial input data) for receiving a single bit of serial data and SOD (serial output data) for transmitting a single bit. Data reception is handled by the RIM instruction, which loads the current state of the SID pin into bit 0 of the accumulator (along with interrupt mask information in other bits), latching the input at the falling edge of the clock during the instruction's execution cycle. Transmission is controlled via the SIM instruction, which examines bit 6 of the accumulator to enable output and places bit 7 of the accumulator on the SOD pin at the appropriate clock edge, allowing software to shift out data bits sequentially. Unlike parallel I/O, serial operations are bit-oriented and asynchronous, with programmable baud rates achieved through software delay loops calibrated to the system clock or, more precisely, by external timers from the MCS-85 support devices, such as the 14-bit interval timer in the 8155 chip, which can generate clock signals for rates from 110 to 9600 baud. This flexibility supports applications like terminal interfaces or modem communication without requiring additional dedicated hardware on the processor itself.[8][19] Interrupt-driven I/O provides an efficient mechanism for handling asynchronous events from peripherals, integrating seamlessly with the processor's execution flow. The 8085 features five interrupt input pins—TRAP, RST 7.5, RST 6.5, RST 5.5, and INTR—that trigger service routines upon assertion, with the processor automatically saving the current program counter to the stack before jumping to a predefined vector address (e.g., 003CH for RST 7.5). Interrupt priority is hardware-enforced in descending order: TRAP (non-maskable, highest priority, rising edge-triggered), followed by RST 7.5 (edge-triggered, maskable), RST 6.5 (level-sensitive, maskable), RST 5.5 (level-sensitive, maskable), and INTR (level-sensitive, maskable, requiring an external vector via RD acknowledge). Masking is managed via the SIM instruction for the RST interrupts, while TRAP cannot be disabled, ensuring critical events like power failure are always serviced. This structure allows peripherals to interrupt the processor for I/O completion or errors, reducing polling overhead in multitasking environments.[8][18] Bus control signals orchestrate the timing and separation of address and data during I/O and memory operations on the 8085's multiplexed bus. The RD (read) signal goes low to enable data output from memory or I/O devices onto the AD0–AD7 lines, while the WR (write) signal goes low to latch incoming data from the processor. For the multiplexed address/data bus, the ALE (address latch enable) signal pulses high during the first clock cycle of an instruction to strobe the lower address byte (A0–A7) into external latches, freeing the bus for data in subsequent cycles. Combined with the IO/M signal (high for I/O, low for memory), these controls ensure precise cycle differentiation: I/O read/write cycles assert IO/M high alongside RD or WR low, typically spanning 3 to 6 clock states depending on the instruction. This design minimizes pin count while supporting reliable interfacing with external I/O devices.[8][18]

Pinout and Electrical Characteristics

The Intel 8085 microprocessor is housed in a 40-pin dual in-line package (DIP), facilitating its integration into embedded systems through a combination of address, data, control, interrupt, clock, and power pins.[8] The address bus consists of unidirectional outputs A8–A15 (pins 21–28) for the upper 8 bits of the 16-bit address, while the lower 8 bits (A0–A7) are multiplexed with the 8-bit bidirectional data bus on pins AD0–AD7 (pins 12–19), latched externally using the Address Latch Enable (ALE) signal on pin 30, which goes active high to demultiplex the bus.[8] Control signals include the active-low Read (RD, pin 35) and Write (WR, pin 31) strobes for memory and I/O operations, the IO/M (pin 29) output to distinguish between memory (low) and I/O (high) accesses, and the READY (pin 11) input to insert wait states for slower peripherals by holding the bus in a wait condition when low.[8] Interrupt pins comprise the non-maskable TRAP (pin 6, rising edge-triggered), maskable RST 7.5 (pin 7, edge-sensitive), RST 6.5 (pin 8, level-sensitive), RST 5.5 (pin 9, level-sensitive), and INTR (pin 10, level-sensitive) for vectored interrupts.[8] DMA support is provided by the HOLD (pin 33) input request and HLDA (pin 32) output acknowledge, while reset functionality includes RESET IN (pin 36, active low input) which initializes the processor—setting the program counter (PC) to 0000H, disabling interrupts by resetting the interrupt enable flip-flop, tri-stating the buses, and leaving the contents of internal registers (including the accumulator, general-purpose registers B, C, D, E, H, L, stack pointer SP, and flag register) indeterminate—and RESET OUT (pin 3, active high output) to synchronize peripherals; execution begins from address 0000H after the RESET IN signal returns high.[8] Serial communication uses SID (pin 5, serial input data) and SOD (pin 4, serial output data), and clock inputs are X1/X2 (pins 1 and 2) for an external crystal oscillator, with CLK (pin 37) providing the divided clock output.[8] Power is supplied via VCC (pin 40, +5 V) and VSS (pin 20, ground).[8] The 8085 employs a tri-state address/data bus, allowing high-impedance states during hold, halt, or reset conditions to enable bus sharing with other devices like DMA controllers, and most control signals such as RD, WR, and interrupts are active-low for compatibility with TTL logic.[8] Read and write cycles typically span 3 clock states, with access times ranging from 200 ns (at 5–6 MHz operation) to 333 ns (at 3 MHz), where the address is valid on ALE's falling edge and data is transferred during the RD/WR assertion.[8] Electrically, the 8085 operates on a single +5 V ±5% to ±10% supply (4.75–5.25 V), drawing a maximum current of 200 mA and dissipating up to 1 W under full load.[8] Input high and low voltage thresholds are 2.0 V (minimum) and 0.8 V (maximum), respectively, with output levels at 2.4 V (minimum high) and 0.45 V (maximum low), supporting a fanout of up to 10 low-power Schottky TTL (LSTTL) loads due to its 2 mA sink and 400 µA source capabilities.[8] The clock system features an on-chip oscillator driven by a 6.144 MHz crystal connected to X1 and X2, internally divided by two to produce a 3 MHz system clock, or an external CLK input mode for testing at up to twice the frequency; higher-speed variants like the 8085A-2 support crystals up to 10 MHz for 5 MHz operation.[8] Operating temperature ranges from 0°C to 85°C for commercial versions and -40°C to 85°C for industrial variants, ensuring reliability in diverse environments.[20]

Variants and Peripherals

Processor Variants

The Intel 8085 microprocessor was produced in several official variants by Intel, primarily differing in clock speed, process technology, and power dissipation to suit various applications. The base 8085A model operated at a 3 MHz clock frequency with an instruction cycle time of 1.3 µs and maximum power dissipation of 1.5 W (typically 1.25 W), implemented in NMOS technology for general-purpose use.[8] The 8085A-2 variant increased performance with a 5 MHz clock (using a 10 MHz crystal) and 0.8 µs cycle time, consuming up to 1.5 W, using NMOS technology. The HMOS equivalent is the 8085AH-2.[8] The 8085AH-1 offered a 6 MHz clock and 0.67 µs cycle time, in HMOS, with similar 1.5 W power draw but enhanced speed for demanding systems.[8] For low-power applications, Intel introduced the CMOS-based 80C85 (also designated 82C03), which significantly reduced consumption to under 25 mA active (approximately 125 mW at 5 V) and featured static power as low as 200 µW in standby, enabling battery-powered and portable designs while maintaining pin and instruction compatibility. These speed grades impacted system performance, with the 8085A's 320 ns minimum instruction fetch time scaling down to 200 ns in the 8085A-2, allowing faster execution in time-critical tasks.[8] Packaging options for Intel 8085 variants included the standard 40-pin dual in-line package (DIP) in plastic for commercial use, ceramic DIP (CERDIP) for higher reliability, and military-grade 8085AM variants with extended temperature range (-55°C to +125°C) for rugged environments.[8] Notable third-party clones and second-source equivalents expanded availability. AMD produced the pin-compatible Am8085A, mirroring the 8085A's 3 MHz NMOS specs for direct replacement in existing systems. NEC's D8085A was another pin-compatible NMOS clone at 3 MHz, targeted at Japanese markets with identical electrical characteristics. The Soviet KR580VM85A served as an NMOS clone of the 8085A, manufactured for domestic computing needs with equivalent 3 MHz performance. A CMOS Soviet clone, the 1821VM85A, emulated the 8085A in low-power CMOS at 3 MHz for energy-efficient applications.[21] Intel discontinued production of the 8085 family in the 1990s, with final support ending around 2000, though clones persist in regions like India and China for legacy system repairs into the 2020s.[22] Modern recreations include FPGA-based implementations that replicate the 8085's functionality for emulation and education, often achieving variable clock speeds beyond original limits.

MCS-85 Support Devices

The MCS-85 family of support devices consists of NMOS peripherals introduced in the late 1970s to complement the Intel 8085 microprocessor, enabling the design of complete microcomputer systems with reduced component counts through integrated functions like memory, I/O, and timing. These devices operate on a single +5V supply and are fully compatible with the 8085's multiplexed bus, supporting both memory-mapped and I/O-mapped operations for seamless integration. By combining multiple capabilities into single chips, the MCS-85 peripherals minimized board space and simplified system architecture, allowing developers to build modular designs around the 8085 CPU.[8]

Memory Devices

The 8155 integrates 256 bytes of static RAM (organized as 256 × 8 bits), two 8-bit I/O ports, one 6-bit programmable I/O port, and a 14-bit timer/counter, directly interfacing with the 8085A via its address and control lines. It supports read access times of 170 ns and address access times of 400 ns, making it suitable for systems clocked at up to 3 MHz, and its I/O ports are controlled using the 8085's standard I/O instructions to reduce external logic needs.[8] The 8156 provides similar features—256 bytes of static RAM, up to 22 I/O lines across two 8-bit and one partial port, plus a timer/counter—but uses edge-triggered inputs on its ports for improved noise immunity in industrial environments. Like the 8155, it operates at the same access speeds and contributes to system efficiency by consolidating RAM and I/O functions.[8] The 8355 combines 2K bytes of mask-programmed ROM (2,048 × 8 bits) with two programmable 8-bit I/O ports and an internal 8-bit address latch, enabling direct connection to the 8085A without additional buffering. It features ROM read access times of 170 ns and address access times of 450 ns, with linear address selection for straightforward memory mapping.[23] The 8755A serves as the erasable and electrically reprogrammable counterpart to the 8355, offering 2K bytes of UV-erasable EPROM alongside the same two 8-bit I/O ports, each line programmable as input or output. With identical access timings (170 ns read, 450 ns address) and pin compatibility with the 8355, it supports prototyping before transitioning to mask ROM in production, further lowering development costs.[24]

RAM Controllers

The 8202A functions as a dynamic RAM system controller, supporting up to 64 KB of memory expansion using appropriate configurations of 16K × 1-bit DRAMs (like the 2117 or 2118) by generating row address strobe (RAS) and column address strobe (CAS) signals, along with refresh and timing logic. It interfaces directly with the 8085A's multiplexed bus, requiring no extra address drivers for systems up to 64K bytes, and includes error detection circuitry for reliable operation.[25] The 8205 provides a high-speed 1-of-8 binary decoder for address latching and I/O decoding in static or dynamic RAM interfaces, accepting a 3-bit input code to select one of eight outputs while minimizing propagation delays to 18 ns. Designed for low-power static RAM applications, it reduces the need for multiple decoding chips, typically using one 8205 per eight memory or I/O sections in 8085-based designs.

Peripherals

The 8255, a programmable peripheral interface, delivers 24 I/O lines configurable across three 8-bit ports (two input/output and one input or output), with modes for simple I/O, strobed I/O, or bidirectional handshaking. It connects to the 8085A via the system's data bus and I/O address space, supporting read/write recovery times of 850 ns (requiring a wait state at higher 8085 clock speeds), and its versatility eliminates discrete I/O logic in many applications.[26] The 8253 programmable interval timer includes three independent 16-bit counters, each programmable for interval timing, event counting, or square-wave generation, with clock inputs up to 2.2 MHz. Interfaced to the 8085A through I/O ports, it has a read/write recovery time of 1,000 ns and enables precise timing without additional oscillators, though a wait state is needed for full-speed operation.[27] The 8251 universal synchronous/asynchronous receiver/transmitter (USART) manages serial data communications, supporting asynchronous modes up to 19.2 kbps or synchronous modes up to 64 kbps, with programmable parity, stop bits, and baud rates derived from the 8085 clock. It uses the 8085's I/O instructions for control and data transfer, featuring a 200 ns read output time, and integrates modem control signals to interface with RS-232 devices directly.[28] The 8259 programmable interrupt controller handles up to eight vectored priority interrupts, with programmable priority modes (fixed or rotating) and cascading support for up to 64 interrupts in larger systems. Connected to the 8085A via INTA signals and I/O ports, it vectors interrupts to specific memory locations, reducing CPU overhead for interrupt servicing compared to software polling.[29] These MCS-85 devices enhance 8085 system integration by sharing the CPU's bus protocol and control signals, such as the 8155's use of dedicated I/O ports for mode selection, which cuts overall chip requirements—for instance, a basic system might use just the 8085, 8155 for RAM/I/O/timer, and 8755A for program storage. This modularity supported compact designs in embedded applications while maintaining compatibility across the family.[8]

Applications and Legacy

Commercial and Industrial Uses

The Intel 8085 microprocessor was widely adopted in commercial and industrial embedded systems during the late 1970s and 1980s, valued for its single +5 V power supply and low power consumption, which simplified design in battery-powered or space-constrained applications.[30] It powered simple controllers in appliances, industrial automation, traffic control systems, and instrumentation devices, enabling reliable real-time operation in harsh environments.[30] In the medical sector, the 8085 was integrated into devices such as ECG monitors and patient monitoring systems for data acquisition and basic signal processing.[30] Automotive applications included early electronic control units (ECUs) in 1980s Japanese vehicles, where it managed engine timing, diagnostics, and basic vehicle functions.[30] Industrial deployments featured the 8085 in programmable logic controllers (PLCs) for factory process control and material handling, often paired with peripherals like the 8255 for I/O expansion. Telecom equipment, such as modems, utilized the 8085's serial I/O capabilities (via SID/SOD pins) for data communication protocols.[4] The 8085's binary compatibility with the 8080 enabled its use in systems originally designed for that processor, including clones of the Altair 8800 for S-100 bus systems in business and scientific computing.[31] In developing regions, the 8085's affordability facilitated its use in low-cost systems for process automation, contributing to broader access to computing technology.[30] By the 2020s, legacy 8085-based equipment persists in repairs for industrial machinery, underscoring its enduring reliability in critical infrastructure.

Educational and Hobbyist Applications

The Intel SDK-85, introduced in 1977 as part of the MCS-85 family, served as a foundational educational kit for learning the 8085 microprocessor, featuring a single-board system with the 8085A processor running at 3 MHz, 2 KB of ROM (expandable to 4 KB), 256 bytes of RAM, a 24-key hexadecimal keyboard, a 6-digit LED display, and integrated peripherals like an EPROM programmer and assembler tools for hands-on assembly language programming.[32] This kit was widely adopted in university electrical engineering and computer science curricula during the late 1970s and 1980s, enabling students to experiment with basic microprocessor operations, memory interfacing, and I/O without complex setups.[33] In the 1980s, the 8085 became a staple in engineering programs, with courses at institutions like Rochester Institute of Technology incorporating it alongside the Motorola 6800 for topics in CPU architecture, ROM/RAM integration, and assembly programming.[34] Textbooks such as Ramesh S. Gaonkar's Microprocessor Architecture, Programming, and Applications with the 8085 (first published in 1984 by Prentice-Hall) provided detailed guidance on the processor's programming model and applications, making it a standard reference for introductory microprocessor courses that emphasized practical coding and hardware interfacing.[35] The 8085's straightforward von Neumann architecture, built-in interrupt handling, and single +5V power supply made it ideal for teaching core concepts like instruction execution cycles and serial I/O, while its affordable components encouraged experimentation in resource-limited academic environments.[36] Among hobbyists, the 8085 inspired numerous homebrew projects in the 1980s and beyond, including custom trainers for LED matrix displays, simple calculators, and basic games like Simon, often built on breadboards or single-board designs using surplus parts.[37] Modern recreations continue this tradition, with enthusiasts constructing 8085-based systems on breadboards for retro computing challenges or integrating them into DIY projects like minimal single-board computers with EEPROM programming.[38] In contemporary education, the 8085 remains relevant through online platforms such as NPTEL's "Microprocessors and Microcontrollers" course offered by IITs, which uses it to introduce architecture basics, and in digital design labs featuring FPGA-based 8085 implementations for verifying timing and logic in the 2020s. Furthermore, numerous online resources support beginner-friendly learning of 8085 assembly language programming. TutorialsPoint provides a comprehensive tutorial covering the 8085 architecture, pin configuration, addressing modes, interrupts, and instruction sets in simple, accessible language suitable for beginners.[39] The official Intel 8080/8085 Assembly Language Programming Manual offers detailed instruction references, practical examples, and programming techniques.[40] GeeksforGeeks features practical assembly program examples, including operations such as addition, multiplication, and bubble sort, with step-by-step explanations and code to enable hands-on practice.[41] Beginners are recommended to start with fundamentals of architecture, registers, and instruction types—including data transfer, arithmetic, logical, and branch—before proceeding to write simple programs. Retro computing communities, including forums like RetroBrew Computers and Vintage Computer Federation, sustain interest by sharing schematics, emulators, and revival projects that highlight the processor's enduring simplicity for amateur hardware hacking.[42][43]

Development Tools

Original Development Systems

The SDK-85 System Design Kit served as Intel's primary single-board development platform for the 8085 microprocessor, introduced in 1977 as a complete kit for prototyping and initial software development. It featured an 8085A CPU operating at 3 MHz with a 1.3 μs instruction cycle time, 256 bytes of static RAM via one 8155 device (providing RAM, I/O ports, and a timer), expandable to 512 bytes with a second 8155, and 2 KB of ROM (expandable to 4 KB using 8355 or 8755 chips) containing a built-in monitor program for basic input/output and debugging. The board included a 24-key hexadecimal keypad for direct memory and register manipulation, a 6-digit LED display for output, and an RS-232 serial interface for communication with host systems or terminals, along with an expansion connector for adding peripherals. This setup allowed engineers to load, execute, and debug short programs directly on the board without external hardware.[32] Integrated with the SDK-85 was support for the ICE-85 in-circuit emulator, an optional module that replaced the target 8085 in a prototype system for non-intrusive debugging. The ICE-85 connected to an Intellec Microcomputer Development System (MDS) host via a cable and provided real-time execution tracing, breakpoint setting, and memory/register inspection at full processor speed, enabling developers to monitor bus activity and single-step through code in actual hardware environments. It operated under the ISIS-II operating system on the MDS-800 or MDS-85, capturing up to 256 events in trace memory for post-execution analysis.[44] Software development relied on the Intellec MDS platform, which ran the 8080/8085 Macro Assembler (commonly referred to as ASM85), a relocatable assembler that translated mnemonic source code into object files compatible with the 8085 instruction set. Accompanying tools included the linker (LINK85) for combining modules and a simulator for cycle-accurate execution without hardware, all executed on the MDS's 8080 or 8085-based host. For EPROM programming, the Universal PROM Programmer (UPP), a standalone device interfaced to the MDS, functioned as the PROM blower to erase and program devices like the 8755 EPROM, supporting batch production of firmware images. Additional debugging aids encompassed logic analyzer probes, such as those from the Intellec series, which clipped onto the 8085's address, data, and control buses to capture signal timings and states for verifying hardware-software interactions.[45][46] The standard development workflow began with writing assembly code on the MDS using a line editor, followed by assembly via ASM85 to generate hex or object files, optional simulation for validation, and linking into a loadable image. Developers then used the UPP to burn the code onto an EPROM, inserted it into a prototype board or the SDK-85 for testing, and iterated with ICE-85 emulation for complex debugging. By the early 1980s, cross-development from 8086-based hosts like the MDS-86 became feasible through compatible ISIS-II tools and converters, allowing reuse of 8085 code in mixed environments. These 8-bit-centric systems lacked native high-level language support initially, relying on assembly for efficiency, though later additions like PL/M-80 provided limited options; a basic setup including the SDK-85 and UPP typically cost around $1000 in 1978.[47]

Modern Simulators and Emulators

Modern simulators and emulators for the Intel 8085 microprocessor provide software-based recreations of its architecture, enabling developers, educators, and researchers to execute 8085 assembly code without physical hardware. These tools replicate the processor's instruction set, registers, memory, and interrupt handling, often with added debugging capabilities to facilitate learning and legacy system maintenance. They are especially valuable for beginners learning 8085 assembly language programming, providing hands-on practice alongside beginner-friendly resources such as the TutorialsPoint microprocessor tutorial [39], the official Intel 8080/8085 Assembly Language Programming Manual [40], and practical program examples on GeeksforGeeks [48]. Primarily developed in the post-2000 era, they run on contemporary operating systems and web browsers, supporting applications from educational programming exercises to analysis of vintage firmware in industrial contexts.[49] GNUSim8085 stands out as a prominent open-source software simulator, offering a graphical interface for Linux and Windows platforms. It includes an integrated assembler and debugger, allowing users to write, assemble, and step through 8085 programs while viewing register states and memory contents in real time. These integrated features make it particularly ideal for beginners practicing 8085 assembly programming. The tool supports single-step execution and breakpoint setting, making it suitable for instructional purposes in microprocessor courses.[50][49] Web-based simulators, such as Sim8085, extend accessibility by running directly in browsers without installation, providing basic instruction execution and disassembly for quick prototyping. These platforms emphasize offline capability and mobile compatibility, ideal for students experimenting with 8085 code on diverse devices. They typically focus on core emulation rather than advanced peripherals, prioritizing ease of use for introductory assembly programming.[51] Emulation extends to full system recreation in tools like MAME, which accurately models 8085-based arcade hardware from the late 1970s and early 1980s, such as Phoenix and Space Force cabinets. MAME's cycle-accurate CPU core captures the 8085's timing behaviors, including SID/SOD instructions unique to the processor, enabling preservation and play of original ROMs on modern hardware. For hardware-oriented emulation, custom FPGA implementations, like the VHDL-based 8085 system-on-chip project, recreate the processor at the gate level on affordable development boards, achieving near-native performance for retro computing enthusiasts.[52][53][54] Common features across these tools include step-by-step execution, visual displays of registers, flags, and memory maps, and breakpoint debugging to halt execution at specific addresses. Many integrate with assemblers like AS8085, which generates Intel Hex output compatible with simulators, streamlining the development workflow from code entry to verification. Open-source Python-based emulators, such as Sim8085, further support scripting for automated testing and reverse-engineering of legacy firmware, where users can inject custom code to probe undocumented 8085 behaviors.[55][56] The advantages of these modern tools lie in their hardware independence and cross-platform availability, eliminating the need for scarce 8085 chips or vintage boards while running on standard PCs or browsers. Updates in recent versions address undocumented instructions and edge cases, enhancing accuracy for specialized tasks. As of 2025, they remain active in cybersecurity applications, where emulators aid in dissecting firmware from legacy industrial control systems to identify vulnerabilities without risking operational hardware.[57]

References

User Avatar
No comments yet.