Skip to content

The SDK-85

The SDK-85 page is a different machine from the rest of Sim8085, not a mode of it. Instead of 64K of RAM and no peripherals, you get an Intel SDK-85 as it was shipped in 1977: Intel’s monitor in ROM, 256 bytes of RAM, a six-digit display and a twenty-four key keypad, all driven by the same 8085 the simulator uses everywhere else.

There are two ways to work with it, and they are the same machine being commanded the same way.

Every control on the page that names a monitor command — SUBST MEM beneath the memory panel, EXAM REG beneath the registers, GO and SINGLE STEP above the editor — does not implement that command. It queues the command’s keys on the 8279, one at a time, and Intel’s own SUBST, EXAM, GOCMD and SSTEP routines in ROM are what run.

That is why the display reacts the same way whichever you use: it is the monitor driving it, not the page. Press SUBST MEM in the memory panel and you will watch the address arrive digit by digit on the seven-segment display exactly as if you had keyed it, because that is what is happening. Each button shows the sequence it sends underneath it, the key lights up on the keypad as it goes in, and a strip under the board lists the keys still on their way.

You can mix the two freely, including halfway through a command: start SUBST MEM from the panel, key the byte on the keypad, and press . on either. While a command is open the other commands are refused, because the monitor is inside a command and would read their keys as its own.

Two things on the page are not monitor commands, and say so:

  • Assemble & Load writes the assembled bytes into RAM directly. Keying 192 bytes in through SUBST MEM is precisely the tedium the editor exists to spare you; the bytes are the same bytes.
  • Pause and Step one instruction stop the emulated processor itself, which no key on a real board can do. They stop the monitor along with everything else — that is the point of them.

Six seven-segment digits, in two fields:

FieldDigitsShows
Address4 leftan address, a register name, or a message
Data2 rightthe byte at that address, or the contents of that register

The decimal point is the monitor’s cursor: it marks the field that is waiting for you to type. A few messages use the digits as letters — Err for a command the monitor did not understand, and E alone in the address field while your program is executing.

After RESET the display reads - 8085: the sign-on message, with the monitor’s - prompt in front of it. That dash means the monitor is waiting for a command.


RESET VECT C D E F
INTR
SINGLE GO 8 9 A B
STEP
SUBST EXAM 4 5 6 7
MEM REG
. , 0 1 2 3
EXEC NEXT

. and , are the two keys everything ends with: , (NEXT) moves on to the next location or register, and . (EXEC) finishes the command.

RESET and VECT INTR are wired to the processor rather than to the keyboard controller, so they work even when the monitor is busy. Everything else is read by the monitor’s interrupt routine, which means the board has to be running for a key to do anything — a key pressed while the board is paused is queued and read when it resumes.

On the page, the hex keys and ., , and Enter (as GO) can also be typed on your own keyboard, as long as the editor does not have focus.


SUBST MEM 2 0 0 0 , show what is at 2000H
3 E , store 3EH there, then move to 2001H
, leave 2001H alone, move to 2002H
. done

Press SUBST MEM, key the four hex digits of an address, then ,. The address field holds the address and the data field shows the byte there. From then on:

  • Type up to two hex digits to change the byte. The last two you type are what is stored.
  • , stores what you typed — nothing, if you typed nothing — and moves to the next address.
  • . ends the command.

If a byte does not store, the monitor shows Err. That is the monitor reading back what it wrote and finding it unchanged, which is what happens at a ROM address like 0000H or in the empty expansion space.

EXAM REG A , show the accumulator, then move on to B
F F , store FFH in that register, move on
. done

Press EXAM REG and then one key to say which register. The register’s name appears in the address field and its contents in the data field; typing hex digits changes it, , moves to the next register in the order below, and . ends the command.

Note that the register keys are not the letters you might expect — the keypad has no S, P or I keys, so the digits stand in for them:

KeyRegisterKeyRegister
AA, the accumulator3I, the interrupt mask
BB4SPH, stack pointer, high byte
CC5SPL, stack pointer, low byte
DD6PCH, program counter, high byte
EE7PCL, program counter, low byte
FF, the flags8H
9L

Pressing , walks the registers in the order the monitor keeps them: A, B, C, D, E, F, I, H, L, SPH, SPL, PCH, PCL. After PCL there is nowhere further to go and the command ends.

These are the registers as they were saved when the monitor took control. Changing one changes what will be restored when your program next runs, which is how you set up its inputs.

GO 2 0 0 0 . run from 2000H
GO . carry on from where the program was

Press GO, key the address to start at, and press .. The display shows E while your program has the processor.

Keying no address and pressing . straight away resumes from the saved program counter — after a SINGLE STEP, or after your program returned to the monitor.

Your program gets the processor entirely; the monitor sees it again when the program executes RST 1, when you press VECT INTR, or when you press RESET.

SINGLE STEP 2 0 0 0 , execute the instruction at 2000H
, and the next one
. done

Press SINGLE STEP, optionally key an address to start at, then , for each instruction. The address field shows the program counter — where the next instruction is — so you can follow the program as it goes. . ends the command.

Between steps, EXAM REG shows what the instruction did.

RESET restarts the monitor, exactly as the key on the board did: the processor starts again at 0000H, the 8279 and the 8155 are reset with it, and the display goes back to - 8085. It does not clear RAM, so a program you keyed in or loaded is still there afterwards, and GO will run it.

VECT INTR raises RST 7.5 on the processor. On a real board it is the way to interrupt a program that has stopped responding — the monitor’s RST 7.5 handler takes control back and shows the program counter.

The Power off / Power on buttons in the Machine panel are the mains switch, and the difference from RESET is the one that mattered in 1977: a power cycle comes up with the ROM as burned and RAM empty, and anything queued in the 8279 is gone with it. RESET keeps RAM.

While the board is off the display is dark and the keypad does nothing, because there is nothing there to read the keys.


An SDK-85 as shipped has three chips answering on the bus and nothing else:

AddressesWhat is there
0000–07FFthe 8355 ROM: the monitor. Writes are ignored.
1800–19FFthe 8279 keyboard and display controller
2000–20FFthe 8155: 256 bytes of RAM
everything elseempty. Nothing answers; reads float.

Of that RAM, the monitor keeps 20C0–20FF for its stack and its register save area. Your program has 2000–20BF: 192 bytes. That is the real constraint of the machine, not a limit of the simulation — programs on a real SDK-85 were this size unless you bought the expansion RAM.

Writing into 20C0 and above overwrites the monitor’s own state, and the board will usually stop making sense shortly afterwards. The memory panel dims those addresses for that reason.


Write your program in the editor beside the board and press Assemble & Load. The assembler is the same one the rest of Sim8085 uses, so the syntax, directives and expressions are all the ones documented here.

Two things are particular to the board:

  • Start with ORG 2000H. Without it the program assembles at 0000H, which is ROM on this machine. Bytes that would land outside 2000–20FF are reported instead of written, because on the real board they would have gone nowhere.
  • End with RST 1 where you want control to go back to the monitor. RST 1 is the monitor’s warm-start entry: it saves your registers — which is what makes EXAM REG afterwards worth looking at — and returns to the prompt.

A program that adds two bytes:

ORG 2000H
START: LXI H, DATA
MOV A, M ; first number
INX H
ADD M ; add the second
INX H
MOV M, A ; leave the sum at RESULT
RST 1 ; back to the monitor
DATA: DB 2AH, 18H
RESULT: DB 0
END START

Press Run on the board and the monitor’s GO runs it from the start address — registers restored from its save area, exactly as GO always did. SUBST MEM 200B , then shows the sum, and so does the memory panel.

ControlWhereSends
Run on the boardabove the editorGO <start> .
Single step, Step again, Finish steppingabove the editorSINGLE STEP <address> , then , … .
SUBST MEM, Store & next, Next, Donememory panelSUBST MEM <address> , then <byte> , … .
EXAM REG, Store & next, Next, Doneregisters panelEXAM REG <key> then <byte> , … .
VECT INTRmachine panelRST 7.5, the pin itself
RESETmachine panelthe RESET key

And the two that are the simulator’s rather than the board’s:

ControlWhat it does
Assemble & Loadwrites the assembled bytes straight into RAM
Pause / Resumestops and restarts the emulated processor, monitor included
Step one instructionone instruction, wherever the processor is — including inside the monitor’s own code
Power off / Power ona power cycle: ROM reburned, RAM lost

Step one instruction and the monitor’s SINGLE STEP are different things. The monitor’s version steps user programs, using the 8155’s timer to fire TRAP one instruction later — that is what the board did, and you can watch it do it. Step one instruction steps the 8085 itself, anywhere, which no SDK-85 could.


The board is the 8085, the 8355 ROM, the 8155 RAM and its timer, and the 8279 keyboard and display controller. The monitor running on it is Intel’s, assembled from its published source, and it is checked byte for byte against Intel’s own object code.

The serial teletype interface, the expansion sockets and the second 8355/8155 pair an expanded SDK-85 could carry are not fitted. Neither is the 8279’s sensor-matrix mode, which the SDK-85 does not use.