The Intel 8085 is an 8-bit microprocessor introduced by Intel in 1977. It was binary-compatible with the more-famous Intel 8080 but required less supporting hardware, thus allowing simpler and less expensive microcomputer systems to be built.
The "5" in the model number came from the fact that the 8085 requires only a +5-volt
(V) power supply rather than the +5V, −5V and +12V supplies the 8080
needed. Both processors were sometimes used in computers running the CP/M operating system, and the 8085 also saw use as a microcontroller, by virtue of its low component count. Both designs were eclipsed for desktop computers by the compatible Zilog Z80, which took over most of the CP/M computer market as well as taking a share of the booming home computer market in the early-to-mid-1980s.
The 8085 had a long life as a controller. Once designed into such products as the DECtape controller and the VT100
video terminal in the late 1970s, it continued to serve for new
production throughout the life span of those products (generally longer
than the product life of desktop computers).
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 was instead multiplexed with the lower part of the 16-bit address bus
to limit the number of pins to 40. Pin No. 40 is used for the power
supply (+5v) and pin No. 20 for ground. Pin No. 39 is used as the hold
pin. Pins No. 15 to No. 8 are generally used for address buses. The
processor was designed using nMOS
circuitry and the later "H" versions were implemented in Intel's
enhanced nMOS process called HMOS, originally developed for fast static
RAM products. Only a 5 Volt supply is needed, like competing processors
and unlike the 8080. The 8085 uses approximately 6,500 transistors.
The 8085 incorporates the functions of the 8224 (clock generator) and
the 8228 (system controller), increasing the level of integration. A
downside compared to similar contemporary designs (such as the Z80) was
the fact that the buses required demultiplexing; however, address
latches in the Intel 8155, 8355, and 8755 memory chips allowed a direct
interface, so an 8085 along with these chips was almost a complete
system.
The 8085 has extensions to support new interrupts, with three maskable interrupts (RST 7.5, RST 6.5 and RST 5.5), one non-maskable interrupt
(TRAP), and one externally serviced interrupt (INTR). The RST n.5
interrupts refer to actual pins on the processor, a feature which
permitted simple systems to avoid the cost of a separate interrupt
controller.
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 was 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 8085 is a binary compatible follow up on the 8080, using the same basic instruction set as the 8080. Only a few minor instructions were new to the 8085 above the 8080 set.
Programming model
The processor has seven 8-bit registers
accessible to the programmer, named A, B, C, D, E, H, and L, where A is
the 8-bit accumulator and the other six can be used as independent
byte-registers or as three 16-bit register pairs, BC, DE, and HL,
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 could be accessed as pseudoregister M. It also
has a 16-bit stack pointer to memory (replacing the 8008's internal stack), and a 16-bit program counter. HL pair is called the primary data pointers.
Commands/instructions
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 could be an immediate operand, a memory address, or a port number.
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 were 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. The most sophisticated
command was 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
Most 8-bit 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. Direct copying is
supported between any two 8-bit registers and between any 8-bit register
and a HL-addressed memory cell. Due to the regular encoding of the
MOV-instruction (using a quarter of available 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. 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 interrupt occurred.
16-bit operations
Although the 8085 is an 8-bit processor, it also has some 16-bit
operations. Any of the three 16-bit register pairs (BC, DE, HL) or SP
could be loaded with an immediate 16-bit value (using LXI), incremented
or decremented (using INX and DCX), or added to HL (using DAD). LHLD
loaded HL from directly-addressed memory and SHLD stored HL likewise.
The XCHG operation exchanges the values of HL and DE. Adding HL to
itself performs a 16-bit arithmetical left shift with one instruction.
The only 16 bit instruction that affects any flag was DAD (adding HL to
BC, DE, HL or SP), which updates the carry flag to facilitate 24-bit or
larger additions and left shifts (for a floating point mantissa
for instance). 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) included comparisons of signed integers as well
as multiply and divide.
Input/output scheme
The 8085 supported up to 256 input/output
(I/O) ports, accessed via dedicated Input/Output instructions—taking
port addresses as operands. This Input/Output mapping scheme was
regarded as an advantage, as it freed up the processor's limited address
space.
Development system
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 was a large and heavy desktop box, about a 20" cube (in the Intel
corporate blue colour) which included a CPU, monitor, and a single 8
inch floppy disk drive. Later an external box was available with two
more floppy drives. It ran the ISIS operating system and could also operate an emulator pod and an external EPROM
programmer. This unit used 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 was a portable unit, about 8" x 16" x 20", with a
handle. It had a small green screen, a keyboard built into the top, a 5¼
inch floppy disk drive, and ran the ISIS-II operating system. It could
also accept a second 8085 processor, allowing a limited form of
multi-processor operation where both processors ran simultaneously and
independently. The screen and keyboard could be switched between them,
allowing programs to be assembled on one processor (large programs took
awhile) while files were edited in the other. It had a bubble memory
option and various programming modules, including EPROM and Intel 8048
and 8051 programming modules which were plugged into the side, replacing
stand-alone device programmers. In addition to an 8080/8085 assembler,
Intel produced a number of compilers including PL/M-80 and Pascal languages, and a set of tools for linking and statically locating programs to enable them to be burnt into EPROMs and used in embedded systems.