Lesson 14 of 48 intermediate

Minimum Mode vs Maximum Mode

How the MN/MX pin changes the entire system architecture — single processor vs multiprocessor

Open interactive version (quiz + challenge)

Real-world analogy

Minimum mode is like a solo chef running a small kitchen — they do everything themselves: take orders, cook, plate, and serve. Maximum mode is like a head chef in a large restaurant who calls out orders while a sous chef (8288 bus controller) manages the kitchen staff (bus signals) — the head chef focuses on cooking while the sous chef coordinates everything else.

What is it?

The MN/MX pin on the 8086 selects between minimum mode (single-processor, CPU generates all control signals directly) and maximum mode (multiprocessor-capable, CPU outputs encoded status that an 8288 bus controller decodes into control signals). Minimum mode is simpler and cheaper; maximum mode supports coprocessors, bus locking, and advanced arbitration.

Real-world relevance

The original IBM PC used the 8086's close cousin, the 8088, in maximum mode specifically to support the optional 8087 math coprocessor. Engineers who wanted faster floating-point math could plug an 8087 into the coprocessor socket. The RQ/GT lines and queue status pins made this seamless. Simpler 8086 trainer kits used minimum mode to keep costs down.

Key points

Code example

; Comparing minimum and maximum mode system designs

; === MINIMUM MODE SYSTEM ===
; MN/MX pin tied to VCC
; CPU directly controls the bus

; Memory read in minimum mode:
;   CPU outputs: ALE, M/IO=1, RD=0
;   8282 latch captures address on ALE
;   8286 transceiver enabled by DEN, direction by DT/R
;   Memory places data on bus
;   CPU reads data in T3/T4

; === MAXIMUM MODE SYSTEM ===
; MN/MX pin tied to GND
; 8288 bus controller generates signals

; Memory read in maximum mode:
;   CPU outputs: S2=1, S1=0, S0=1 (memory read)
;   8288 decodes status -> asserts MRDC, ALE, DEN, DT/R
;   8282 latch captures address on ALE
;   8286 transceiver enabled by DEN
;   Memory places data on bus
;   CPU reads data in T3/T4

; Coprocessor sync (maximum mode only):
;   8087 monitors QS0, QS1 to track instruction flow
;   8087 uses RQ/GT0 to request bus for memory operands
;   LOCK prefix prevents bus takeover during critical ops

Line-by-line walkthrough

  1. 1. In minimum mode, the CPU directly drives ALE, M/IO, RD, WR, DEN, and DT/R — these pins physically output the control signals that memory and I/O devices need.
  2. 2. M/IO=1 tells the system this is a memory access. The 8282 latch captures the address when ALE pulses — same as before.
  3. 3. DEN (Data Enable) activates the 8286 bus transceivers, and DT/R sets the direction — LOW for read (receive data from memory).
  4. 4. In maximum mode, the same physical pins output different signals: S0, S1, S2 encode the bus cycle type as a 3-bit status code.
  5. 5. The 8288 bus controller reads S2:S1:S0 = 101 and knows this means 'memory read' — it asserts MRDC, ALE, and DEN on behalf of the CPU.
  6. 6. The 8087 coprocessor monitors QS0 and QS1 to know when the 8086 is fetching instructions from the queue — this keeps both processors in sync.
  7. 7. RQ/GT0 allows the 8087 to request and be granted the bus using a compact 3-pulse handshake — faster than HOLD/HLDA.
  8. 8. LOCK prevents any other bus master from taking the bus during an atomic XCHG instruction — critical for multiprocessor mutual exclusion.

Spot the bug

; Maximum mode system — 8087 coprocessor not working
; Hardware connections:
;   8086 MN/MX = GND (maximum mode)
;   8288 connected to S0, S1, S2
;   8087 connected to AD0-AD15, A16-A19
;   8087 RQ/GT connected to 8086 RQ/GT0
;   8087 QS0, QS1 NOT connected (floating)
;
; Symptom: 8087 executes wrong instructions
; or hangs during ESC (coprocessor) opcodes
Need a hint?
How does the 8087 know which instruction the 8086 is currently executing?
Show answer
Bug: QS0 and QS1 are not connected to the 8087. The 8087 coprocessor uses these queue status lines to track exactly when the 8086 fetches and decodes each instruction byte — this is how it identifies ESC (coprocessor) opcodes meant for itself. Without QS0/QS1, the 8087 cannot synchronize with the 8086's instruction stream and either executes the wrong operation or misses its instructions entirely. Fix: Connect QS0 and QS1 from the 8086 to the corresponding inputs on the 8087.

Explain like I'm 5

Imagine you are a kid building with LEGO. In minimum mode, you build everything yourself — you pick the bricks, stack them, and clean up. It is simpler but you can only do so much. In maximum mode, you have a helper friend (the 8288) who hands you the right bricks when you call out what you need. Now you can work faster and even let other kids help build different parts at the same time!

Fun fact

The 8288 bus controller chip was designed to work in pairs — in some advanced systems, two 8288s were used: one for the system bus and one for a local bus. This dual-bus architecture was a precursor to the modern concept of front-side bus and back-side bus in Pentium-era processors.

Hands-on challenge

Design two 8086 systems on paper — one using minimum mode and one using maximum mode. List every support chip needed for each design (latches, transceivers, bus controller). Draw the signal flow for a memory read operation in both modes, showing which chip generates each control signal. Then explain why the IBM PC chose maximum mode even though it cost more.

More resources

Open interactive version (quiz + challenge) ← Back to course: Microprocessor A–Z