Article · Wikipedia archive · Last revised May 28, 2026

National Semiconductor SC/MP

National Semiconductor's SC/MP for Simple Cost-effective Micro Processor, is an early 8-bit microprocessor which became available in April 1976. It was designed to allow systems to be implemented with the minimum number of additional support chips. SC/MP included bus-access control signals that allowed several processors to share a common memory bus in a daisy-chained multiprocessor arrangement, or to support direct memory access hardware.

Last revised
May 28, 2026
Read time
≈ 15 min
Length
3,390 w
Citations
56
Source
National Semiconductor SC/MP
PMOS SC/MP (ISP-8A/500)
General information
LaunchedApril 1976 (April 1976)
Common manufacturer
Performance
Max. CPU clock rate1 MHz to 4 MHz
Data width8 bits
Address width16 bits
Physical specifications
Package
History
SuccessorsSC/MP II (INS8060)
70-Series (INS807x)

National Semiconductor's SC/MP (pronounced scamp) for Simple Cost-effective Micro Processor, is an early 8-bit microprocessor which became available in April 1976. It was designed to allow systems to be implemented with the minimum number of additional support chips. SC/MP included bus-access control signals that allowed several processors to share a common memory bus in a daisy-chained multiprocessor arrangement, or to support direct memory access hardware.

The SC/MP was followed by the SC/MP II, also known as the INS8060. National Semiconductor later introduced the 70-Series (also known as the INS8070 Series).12 Some later sources refer to this family as “SC/MP III” or “SC/MP-3”,3 terminology not used in contemporary National Semiconductor documentation.12

Designed to be as low-cost as possible, the SC/MP emphasized simple control logic and built-in multiprocessor bus arbitration. It is significantly slower than contemporary designs like the Intel 8080 or MOS 6502.a Another oddity was that the program counter could only increment the lower 12-bits of the 16-bit address; the upper 4-bits had to be set using special instructions. The result was that instructions accessed main memory as sixteen 4 KB "pages" and reaching memory outside those pages required multiple instructions.b

The combination of slow speed and paged memory limited its attractiveness outside the embedded markets it was aimed at, and in this market it competed against the Fairchild F8 which had a number of useful additional features and cost less than a dollar more at 100-unit quantities. The system saw relatively little use. Signetics licensed the design as a second source but it is unclear whether they produced any.

Design

NS SC/MP registers
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (bit position)
Main registers
  AC Accumulator
  E Extension
Pointer registers
Page P0/PC Program Counter
Page P1 Pointer 1
Page P2 Pointer 2
Page P3 Pointer 3
Program Status Register
7 6 5 4 3 2 1 0 (bit position)
CY OV SB SA IE F2 F1 F0 Status

ALU and main registers

The arithmetic logic unit (ALU) was accumulator-based, with a single 8-bit accumulator, AC. A second 8-bit register, "Extension", or E, can be used as a backup for AC. E cannot be accessed directly by most instructions; one cannot load data from memory directly into E. Instead, the value in AC can be read from E, or AC and E can be swapped. E can also be used as the source value for the seven logical/arithmetic operations supported by the ALU, so one can ADD to AC using memory, an immediate, or E. If E is not being used for other operations, it can also be used in a fashion similar to the mirror registers seen in designs like the Zilog Z80, with E acting as a quicker way to store the value of AC during an interrupt.4

A major purpose of E is to act as a buffer for the built-in serial I/O system.5 This is driven by the SIO instruction, which bit shifts the least significant bit in E to a latch which is connected to the SOUT pin on the processor. Repeated calls to SIO presents bits of the 8-bit E value one at a time to the output or reverses this operation for reading from the SIN pin.6 Once a complete 8-bit value had been read or written, the value can be sent to memory by exchanging the value with AC and then loading or storing AC to memory.4 E can also be used as the source for logical operations on AC, so one can read a status byte in from the serial port and then AND that value with a mask in AC, to check for various status bits read from an external device.7

The E register can also be substituted as the offset for PC-relative, indexed, and auto-indexed memory reference instructions. When the second byte of these instructions equals -128 (0x80), E is added to the specified P register.8

The separate Status Register is 8-bits. The three least-significant-bits, 0 through 2, are connected directly to output pins, providing an easy way to output single bits.4 A further two pins, Sense A and Sense B, are connected to bits 4 and 5. Sense A was normally used to service interrupts (see details below). Interrupts can be turned off by setting bit 3, Interrupt Enable (IE) to 0 with the Disable Interrupt instruction, DINT, and enabled with IEN, or by moving the value to and from AC and manipulating it there. Sense B is an additional single bit input. Bits 6 and 7 are conventional overflow and carry flags.9 Although there is no explicit zero flag, zero is determined from the current content of AC.

Addressing and index registers

PMOS SC/MP die (ISP-8A/500) source ↗

Like most 8-bit microprocessors of the era, the SC/MP is based around a 16-bit address bus and an 8-bit data bus. To reduce pin count, the external address bus contains only 12 pins, multiplexing 4 pins on the data bus to create a complete 16-bit address.5 The processor only directly modifies the lower 12-bits of the program counter. There are separate instructions to set the upper four bits by copying an 8-bit value into the high byte. This provides a memory map of sixteen four-kilobyte pages. Program code cannot refer to code or PC-relative data outside its own page.8 This leads to a curiosity of the design: when the program counter reaches the end of a page, it does not move to the next page, it returns to the start of the current page.5

Addressing was further limited by the two-byte instruction format, which used one byte for the opcode and a second one to indicate an offset between -128 and +127, which was added to a value in a register to produce a 12-bit address. For instance, an address might refer to a location in memory by saying it is +10 locations from the value in the program counter, or +10 from the value in one of the 16-bit index registers. To access a location outside that range, the page has to be explicitly stored in one of the index registers.8 Because the registers are 16-bit, and the accumulator that loads values is 8-bit, setting a complete address requires several instructions.10

As indexes were critical to the addressing model, the SC/MP included four index registers, the "Pointer Registers" P0 through P3. P0 was the program counter, and not normally manipulated by user programs. By convention, P1 was normally used as a pointer into ROM, P2 into RAM, and P3 was used to store an address during interrupts and subroutine calls.9 The SC/MP did not have a stack, where return values were normally stored on most contemporary designs. Programs had to save return addresses with explicit code.10

There were four primary addressing modes, PC-relative, indexed, immediate (meaning a constant in the instruction's second byte as opposed to an offset), and auto-indexed. PC-relative addressing was actually the same as indexed, selecting P0 as the index register.8

Auto-indexing aids in the construction of loops. If the displacement is less than zero, the contents of the Pointer Register is decreased by the displacement before the contents of the effective address are fetched or stored. If the displacement is equal to or greater than zero, the contents of the Pointer Register are used as the effective address, and the contents of the Pointer Register are increased by the displacement after the contents of the effective address are fetched or stored. This removes the need for a separate instruction to change the value in the register, so one could store the starting value of a block of data in memory in a pointer register and then loop through all of the data by calling a single instruction.8 If the offset is negative, @-1(P2), it performs the decrement before accessing the final value. If it is positive. @1(P2), it does a post-increment.10 This predecrement-postincrement behavior makes it possible to create a LIFO stack. Top of stack is accessed with (P2).

Interrupt handling

The system includes automatic handling of interrupts on the Sense A line. When an interrupt is received and IE is high (enabled), before starting to fetch the next instruction the system instead clears IE to prevent another interrupt, and then exchanges the values in PC and P3 using XPPC. This has the effect of saving the return address in P3 and sending the next instruction into the interrupt handler entry point previously stored in P3.11

The system does not include the equivalent of a return-from-interrupt. This can be performed with another XPPC, copying the previously-saved address in P3 back to the PC and execution continues where it left off. However, this leaves the wrong address in P3, not the start of the interrupt handler, but the end. To address this, the common solution is to place the XPPC that returns to the main code one instruction above the handler entry point, rather than at the end. When the handler completes, it jumps back to this instruction, so when XPPC is executed, the PC is pointed one location before the proper entry point. Because the system increments the PC before calling an instruction, this means the next interrupt will result it in entering at the correct entry point. This "exit handler" normally also sets the IE to 1 to re-enable interrupts.12

Interrupt latency is not quick. When an interrupt is encountered, the SC/MP requires 17 instructions generating 26 bytes of object code to save its status. The older Intel 8080 requires just four instructions generating four bytes.13

Bus control

National Semiconductor SC/MP Development System source ↗

A feature of the SC/MP family was its bus-access logic, using bus-request, enable-input and enable-output signals. In the original PMOS SC/MP documentation these are named BREQ, ENIN and ENOUT; in SC/MP II / INS8060 documentation the corresponding active-low signals are named NBREQ, NENIN and NENOUT.1415 These signals supported external direct memory access (DMA) hardware and allowed multiple SC/MP processors to be connected in a daisy-chained shared-bus arrangement.1415 National Semiconductor's PMOS SC/MP documentation gives example DMA and multiprocessor configurations, contrasting an external DMA controller with the SC/MP's built-in bus-access logic.14 The INS8060 datasheet documents the corresponding SC/MP II bus-access signals, NBREQ, NENIN and NENOUT, for DMA and multiprocessor use.15 Williamson and Dale give the equivalent SC/MP II explanation in the context of the MK14.16

In DMA applications, data transfers between memory and a peripheral could be made without the processor being involved in the actual data transfer, apart from control functions.17 In functional terms, a processor requested the shared bus on its bus-request line and was granted access through its enable-input line. In the PMOS SC/MP documentation, this is described as BREQ high and ENIN high; in the SC/MP II / INS8060 documentation, the corresponding active-low signals are NBREQ and NENIN.1815 For multiprocessor use, the processor's enable-output line was connected to the enable-input line of the next processor in the chain. While one processor controlled the bus, later processors in the chain were locked out; when it released the bus, the enable signal was passed to the next processor. If several processors requested the bus at the same time, they were served in daisy-chain priority order. National noted for the PMOS SC/MP that typically no more than three processors were used in a cascade arrangement without an external priority-logic controller.19 Osborne's review of the system stated it was the "microprocessor of choice in any multi-processor application"20 but this market seems to have been limited as sales were never particularly strong.

Unusual features

The SC/MP does not include a jump-to-subroutine instruction. Instead, the assembler language includes a JS macro that writes a series of instructions to implement this functionality. The macro loads the high byte of the address into AC, and then executes XPAH to move it to the high byte of a selected pointer register. It then repeats this for the low byte using XPAL. It then executes XPPC to transfer the resulting 16-bit value from the pointer register to the PC. This sequence generates five bytes and overwrites AC. Since XPPC exchanges the two values, the current value of the PC is thus stored into the selected pointer register, and the return-from-subroutine can be implemented with a single XPPC to copy the value back. Nested subroutines are not supported though they can be implemented with additional code.21

SC/MP increments the program counter before fetching the instruction, so that on reset it actually starts executing instructions from location 0001, not 0000. This also needs to be taken into account for calculating displacements, since the offset will be added to the program counter which will be still pointing to the location of the displacement and not the next instruction.

The system included a Delay instruction, DLY, which took a single parameter, P. This stopped operation for a period of 13 + (2 x P) + (2^9 x P) + (2 x AC) microcycles, which it did by continually decrementing the value in AC until it reached zero.22 This meant it could produce a delay between 13 and 131,593 cycles.20 This was normally used with the serial pins; a program could set the value in AC to the time it took to transmit a single bit at a given speed and then check the value of one of the flag pins to see if it was ready for the next one.22 Osborne notes that this feature is of limited practical use, the processor is "spinning" during the delay and this could be accomplished by writing a loop.20

The processor was not particularly picky about timing, and in low-speed applications it did not need to use a crystal oscillator and this could be replaced with a simple capacitor instead.23

Implementations

NMOS SC/MP-2 die (ISP-8A/600) source ↗

The SC/MP included an internal clock oscillator. This was common in nMOS designs like the 6502, but unusual for a chip originally fabricated in P Channel MOS (pMOS). Most pMOS processors required a separate external oscillator and clock driver, so this was an advantage for this design as it eliminated the need for one external chip. This did, however, limit the speed to 1 MHz. The SC/MP-2 used N Channel MOS (nMOS) fabrication but was otherwise identical, which allowed it to be clocked at up to 4 MHz.5

The SC/MP family evolved through three main implementations:

  • SC/MP-1 (ISP-8A/500), clocked at 1 MHz, first implementation in pMOS. It requires both +5 volt and -7 volt power supplies for TTL compatibility.
  • SC/MP-2 (INS8060 ISP-8A/600), clocked at 4 MHz (internally 2 MHz) first nMOS version (single +5V supply)
  • 70-Series (INS807x), clocked at 4 MHz (internally 2 MHz), included variations with up to 4 KB ROM and optional onboard BASIC (NIBL).12

Uses

Montgomery Elevator of Moline, Illinois, later acquired by KONE in 199424, used the SC/MP in its first microprocessor based elevator, the "MIPROM Hydro elevator-controller system" released in 1975. Montgomery described MIPROM as a "microprocessor elevator logic control" system25, and a later Otis PC-board catalogue26 identifies board MTGMP-15783 as a "CPU MIPROM SC/MP II Board". The corresponding P-15783 CPU card is illustrated in the MIPROM I troubleshooting guide27, and a TK Elevator spare-parts listing identifies P-15783 as a refurbished Montgomery MIPROM CPU board; the board photograph in that listing shows the processor package marked "INS8060N" and "ISP-8A/600N"28. The MIPROM I troubleshooting guide also lists CPU card P-15783 as a replacement for P-16782, but the replaced P-16782 is not shown clearly enough to identify the processor used on P-16782.

The SC/MP was used as the basis of a single board microcontroller produced by Science of Cambridge (later Sinclair Research Ltd) called the MK14. This was based on National's own Introkit design, and National offered Sinclair a deal on completed sets which could not be matched by building their own. This allowed the MK14 to sell for the extremely low cost of £39.95.

Doug Neubauer, best known as the author of Star Raiders, had moved to Atari after working at National on a product identified only as a "home computer product".29 This had progressed to the stage of a wire wrapped prototype before the company killed it.30

Example code

The following assembler source code is for a subroutine CPYMEM that copies bytes from one location to another. This routine can be used to copy between pages but cannot cross a page. It can be executed from ROM or RAM. If executing from RAM, loop counting could be accelerated with a DLD instruction using a PC-relative counter. This routine uses an unusual @1(P1) addressing mode that is used to auto-index through the memory. Unlike other processors with auto-index such as the 68000, the SC/MP auto-index stride can be larger than the datum size.

 
 
 
1000
1000 03
1001 01
1002 C5 01
1004 CE 01
1006 C4 FE
1008 70
1009 9C F6
100B 3F
; Copy memory words addressed by P1 to location addressed
; by P2 for a length of up to 255 bytes. Length is passed
; in AC (accumulator). Return address in P3.
        =       X'1000
CPYMEM: SCL                   ; Set carry for upcoming ADD
CPYLP:  XAE                   ; Save count in E
        LD      @1(P1)        ; Get byte to copy, inc P1
        ST      @1(P2)        ; Save save it, inc P2
        LDI     -2            ; -2 to AC to decrement
        ADE                   ; E (set carry made it -1)
        JNZ     CPYLP         ;Continue for all bytes
        XPPC    P3            ;Return to caller
Notes

Notes

  1. The original SC/MP takes 11 "microcycles" to do an 8-bit add immediate (ADI) with each microcycle requiring two clocks, 22 clocks total (22µS at 1 MHz). Contemporaneous CPUs are faster: The 8080's add immediate (ADI) takes seven clocks (3.5µS at 2 MHz). A 6502 add immediate (ADC) takes two clocks (2µS at 1 MHz).
  2. This segmented memory approach was more famous in the Intel 8088.
References

References

Citations

  1. "INS8070-Series Microprocessor Family" (PDF). National Semiconductor. October 1980. Retrieved 4 May 2026.
  2. "70-Series Microprocessor User's Manual" (PDF). National Semiconductor. 1979. Retrieved 4 May 2026.
  3. "NS INS8070 - SC/MP III". Semiconductor Collection Exhibition Hall (in Japanese). Archived from the original on 18 April 2001. Retrieved 4 May 2026.
  4. Handbook 1977, p. 1.6.
  5. Osborne & Kane 1981, p. 3.3.
  6. Handbook 1977, p. 1.2, 1.10.
  7. Handbook 1977, p. 1.13.
  8. Handbook 1977, p. 1.11.
  9. Handbook 1977, p. 1.3.
  10. Osborne & Kane 1981, p. 3.4.
  11. Osborne & Kane 1981, p. 3.14.
  12. Osborne & Kane 1981, p. 3.16.
  13. Handbook 1977, p. C.5.
  14. Technical Description 1976, pp. 2-4–2-6.
  15. INS8060 Datasheet 1978, pp. 10–11.
  16. Williamson & Dale 1980, pp. 183–187.
  17. Handbook 1977, p. 1-2.
  18. Technical Description 1976, p. 2-4.
  19. Technical Description 1976, pp. 2-5–2-6.
  20. Osborne & Kane 1981, p. 3.1.
  21. Handbook 1977, p. 1.5.
  22. Handbook 1977, p. 2C3.9.
  23. Handbook 1977, p. 1.1.
  24. "History". KONE Corporation. Retrieved 5 May 2026.
  25. "Miprom: Microprocessor Elevator Logic Control for the Mass Elevator Market" (PDF) (Brochure). Montgomery Elevator Company. pp. 1–3. Retrieved 5 May 2026 – via KONE Spares.
  26. Otis PC Board Catalog (PDF). Otis Elevator Company. November 2010. p. 73. Retrieved 5 May 2026.
  27. MIPROM I Troubleshooting Guide. Montgomery Elevator Company. October 1990. pp. 14, 69. 61111-753. Retrieved 5 May 2026.
  28. "Refurbished MIPROM CPU Board Montgomery P-15783". TKE Spare Parts. TK Elevator Manufacturing, Inc. Retrieved 5 May 2026.
  29. Fleming, Jeffrey (September 20, 2007). "Video Games' First Space Opera: Exploring Atari's Star Raiders". Archived from the original on February 27, 2008. Retrieved May 28, 2024.
  30. Neubauer, Doug. "The Atari Years".

Bibliography

External links