PDP-10 opcodes, numeric order

This page requires a browser that supports tables. The tables are simple enough so that NCSA Mosaic for UNIX version 2.6 can handle them, but they are completely unreadable on text-based browsers, such as lynx.

36-bit Instruction Format

The original PDP-10 instruction format is very similar to RISC systems:
0-8 9-12 13 14-17 18-35
opcode AC @ index addr/imm

Although there are 512 possible values for the 9 bits of op-code, the number if distinct instructions is much smaller, since most instructions come in four flavors:

One way to get a grasp on the instruction set is to treat it as 8 sets of 64 instructions, based on the first octal digit of the op-code.

Opcodes 000-077

Monitor UUOs and Local UUOs

0__ 0_0 0_1 0_2 0_3 0_4 0_5 0_6 0_7
00_ 000000 LUUO01 LUUO02 LUUO03 LUUO04 LUUO05 LUUO06 LUUO07
01_ LUUO10 LUUO11 LUUO12 LUUO13 LUUO14 LUUO15 LUUO16 LUUO17
02_ LUUO20 LUUO21 LUUO22 LUUO23 LUUO24 LUUO25 LUUO26 LUUO27
03_ LUUO30 LUUO31 LUUO32 LUUO33 LUUO34 LUUO35 LUUO36 LUUO37
04_ CALL INITI MUUO42 MUUO43 MUUO44 MUUO45 MUUO46 CALLI
05_ OPEN TTCALL MUUO52 MUUO53 MUUO54 RENAME IN OUT
06_ SETSTS STATO STATUS GETSTS INBUF OUTBUF INPUT OUTPUT
07_ CLOSE RELEAS MTAPE UGETF USETI USETO LOOKUP ENTER
.

Opcodes 100-177

Floating Point, Byte Manipulation, Other

1__ 1_0 1_1 1_2 1_3 1_4 1_5 1_6 1_7
10_ UJEN (101) GFAD GFSB JSYS ADJSP GFMP GFDV
11_ DFAD DFSB DFMP DFDV DADD DSUB DMUL DDIV
12_ DMOVE DMOVN FIX EXTEND DMOVEM DMOVNM FIXR FLTR
13_ UFA DFN FSC IBP ILDB LDB IDPB DPB
14_ FAD FADL FADM FADB FADR FADRL FADRM FADRB
15_ FSB FSBL FSBM FSBB FSBR FSBRL FSBRM FSBRB
16_ FMP FMPL FMPM FMPB FMPR FMPRL FMPRM FMPRB
17_ FDV FDVL FDVM FDVB FDVR FDVRL FDVRM FDVRB
.

Opcodes 200-277

Integer Arithmetic, Jump To Subroutine

2__ 2_0 2_1 2_2 2_3 2_4 2_5 2_6 2_7
20_ MOVE MOVEI MOVEM MOVES MOVS MOVSI MOVSM MOVSS
21_ MOVN MOVNI MOVNM MOVNS MOVM MOVMI MOVMM MOVMS
22_ IMUL IMULI IMULM IMULB MUL MULI MULM MULB
23_ IDIV IDIVI IDIVM IDIVB DIV DIVI DIVM DIVB
24_ ASH ROT LSH JFFO ASHC ROTC LSHC (247)
25_ EXCH BLT AOBJP AOBJN JRST JFCL XCT MAP
26_ PUSHJ PUSH POP POPJ JSR JSP JSA JRA
27_ ADD ADDI ADDM ADDB SUB SUBI SUBM SUBB
.

Opcodes 300-377

Hop, Skip, and Jump (codes 3_0 do not skip or jump)

3__ 3_0 3_1 3_2 3_3 3_4 3_5 3_6 3_7
30_ CAI CAIL CAIE CAILE CAIA CAIGE CAIN CAIG
31_ CAM CAML CAME CAMLE CAMA CAMGE CAMN CAMG
32_ JUMP JUMPL JUMPE JUMPLE JUMPA JUMPGE JUMPN JUMPG
33_ SKIP SKIPL SKIPE SKIPLE SKIPA SKIPGE SKIPN SKIPG
34_ AOJ AOJL AOJE AOJLE AOJA AOJGE AOJN AOJG
35_ AOS AOSL AOSE AOSLE AOSA AOSGE AOSN AOSG
36_ SOJ SOJL SOJE SOJLE SOJA SOJGE SOJN SOJG
37_ SOS SOSL SOSE SOSLE SOSA SOSGE SOSN SOSG
.

Opcodes 400-477

Two-argument Logical Operations

4__ 4_0 4_1 4_2 4_3 4_4 4_5 4_6 4_7
40_ SETZ SETZI SETZM SETZB AND ANDI ANDM ANDB
41_ ANDCA ANDCAI ANDCAM ANDCAB SETM XMOVEI SETMM SETMB
42_ ANDCM ANDCMI ANDCMM ANDCMB SETA SETAI SETAM SETAB
43_ XOR XORI XORM XORB OR ORI ORM ORB
44_ ANDCB ANDCBI ANDCBM ANDCBB EQV EQVI EQVM EQVB
45_ SETCA SETCAI SETCAM SETCAB ORCA ORCAI ORCAM ORCAB
46_ SETCM SETCMI SETCMM SETCMB ORCM ORCMI ORCMM ORCMB
47_ ORCB ORCBI ORCBM ORCBB SETO SETOI SETOM SETOB
.

Opcodes 500-577

Half Word {Left,Right} to {Left,Right} with {nochange,Zero,Ones,Extend}, {ac,Immediate,Memory,Self}

5__ 5_0 5_1 5_2 5_3 5_4 5_5 5_6 5_7
50_ HLL XHLLI HLLM HLLS HRL HRLI HRLM HRLS
51_ HLLZ HLLZI HLLZM HLLZS HRLZ HRLZI HRLZM HRLZS
52_ HLLO HLLOI HLLOM HLLOS HRLO HRLOI HRLOM HRLOS
53_ HLLE HLLEI HLLEM HLLES HRLE HRLEI HRLEM HRLES
54_ HRR HRRI HRRM HRRS HLR HLRI HLRM HLRS
55_ HRRZ HRRZI HRRZM HRRZS HLRZ HLRZI HLRZM HLRZS
56_ HRRO HRROI HRROM HRROS HLRO HLROI HLROM HLROS
57_ HRRE HRREI HRREM HRRES HLRE HLREI HLREM HLRES
.

Opcodes 600-677

Test bits, {Right,Left,Direct,Swapped} with {Nochange,Zero,Complement,One} and skip if the masked bits were {noskip,Equal,Nonzero,Always}

6__ 6_0 6_1 6_2 6_3 6_4 6_5 6_6 6_7
60_ TRN TLN TRNE TLNE TRNA TLNA TRNN TLNN
61_ TDN TSN TDNE TSNE TDNA TSNA TDNN TSNN
62_ TRZ TLZ TRZE TLZE TRZA TLZA TRZN TLZN
63_ TDZ TSZ TDZE TSZE TDZA TSZA TDZN TSZN
64_ TRC TLC TRCE TLCE TRCA TLCA TRCN TLCN
65_ TDC TSC TDCE TSCE TDCA TSCA TDCN TSCN
66_ TRO TLO TROE TLOE TROA TLOA TRON TLON
67_ TDO TSO TDOE TSOE TDOA TSOA TDON TSON
.

Opcodes 700-777

Bits 0-2 = "111", bits 3-9 = I/O device address, bits 10-12 = opcode

7__ op description
700000 BLKI Block Input, skip if I/O not finished
700040 DATAI Data Input, from device to memory
700100 BLKO Block Output, skip if I/O not finished
700140 DATAO Data Output, from memory to device
700200 CONO Conditions Out, 36 bits AC to device
700240 CONI Conditions in, 36 bits device to AC
700300 CONSZ Conditions, Skip if Zero (test 18 bits)
700340 CONSO Conditions, Skip if One (test 18 bits)
.

Internal device codes

adr dev description 000 APR Arithmetic Processor 004 PI Priority Interrupt system 010 PAG Pager 014 CCA Cache Controller 020 TIM Timer 024 MTR Meter
.

External device codes (PDP6, KA10, KI10)

adr dev description 014 CCI Computer to Computer interface (pdp-8/pdp-9) 020 CCI2 Computer to Computer interface (pdp-8/pdp-9) 024 ADC Analog/Digital Converter 030 ADC2 Analog/Digital Converter 100 PTP Paper Tape Punch 104 PTR Paper Tape Reader 110 CDP Card Punch 114 CDR PDP-6 Card Reader 120 TTY Console Teletype 124 LPT Line Printer 130 DIS Display 134 DIS2 Display 140 PLT Plotter 144 PLT2 Plotter 150 CR Card Reader 154 CR2 Card Reader 170 DSK RC10 Small Disk 174 DSK2 RC10 Small Disk 240 DLS DC10 Data Line Scanner 244 DLS2 DC10 Data Line Scanner 260 MDF RA10 Mass Disk File 264 MDF2 RA10 Mass Disk File 320 DTS DECtape, Status 324 DTC DECtape, Control 330 DTS2 DECtape, Status 334 DTC2 DECtape, Control 340 TMS Magnetic Tape, Status 344 TMC Magnetic Tape, Control 350 TMS2 Magnetic Tape, Status 354 TMC2 Magnetic Tape, Control
.

Internal device codes for KL and KS

opcode KL-10 KS2020 description
70000 BLKI APR, APRID Read APR serial number, microcode version
70004 DATAI APR, - Read address break conditions
70010 BLKO APR, - WRFIL Write Refill Table
70014 DATAO APR, - Set Address Break
70020 CONO APR, WRAPR Set APR interrupt enable flags
70024 CONI APR, RDAPR Read APR flags
70030 CONSZ APR, - Read APR flags, skip if all zero
70034 CONSO APR, - Read APR flags, skip if any ones
70040 RDERA - BLKI PI, Read Error Address
70044 (unused) - DATAI PI,
70050 SBDIAG - BLKO PI, S Bus Diagnostic Function
70060 CONO PI, WRPI Priority Interrupt (enable/disable/clear)
70064 CONI PI, RDPI Read status of PI system
70070 CONSZ PI, - Read PI status, skip if all zero
70074 CONSO PI, - Read PI status, skip if any ones
70100 (unused) - BLKI PAG,
70104 DATAI PAG, RDUBR Read User Base Register
70110 CLRPT + BLKO PAG, Clear page table entry
70110 + CLRPT Clear page table entry and invalidate entire cache
70114 DATAO PAG, WRUBR Write User Base Register (user mode page map)
70120 CONO PAG, WREBR Write Exec Base Register (exec mode page map)
70124 CONI PAG, RDEBR Read Exec Base Register
70130 (unused) - CONSZ PAG,
70134 (unused) - CONSO PAG,
70140 (unused) - BLKI CCA,
70144 SWPIA - DATAI CCA, Sweep Cache Invalidate All pages
70150 SWPVA - BLKO CCA, Sweep Cache Validate All pages
70154 SWPUA - DATAO CCA, Sweep Cache Unload All pages
70160 (unused) - CONO CCA,
70164 SWPIO - CONI CCA, Sweep Cache Invalidate One page
70170 SWPVO - CONSZ CCA, Sweep Cache Validate One page
70174 SWPUO - CONSO CCA, Sweep Cache Unload One page
70200 BLKI TIM, - Read Performance Analysis Count
70200 - RDSPB Read SPT base address
70204 DATAI TIM, - Read time base from EPT
70204 - RDCSB Read CST base address
70210 BLKO TIM, - WRPAE Write Performance Analysis Enables
70210 - RDPUR Read Process Use Register
70214 (unused) - DATAO TIM,
70214 - RDCSTM Read CST Mask
70220 CONO TIM, - Write Timer Interval
70220 - RDTIM Read Time Base
70224 CONI TIM, RDINT Read Timer Interval
70230 (unused) - CONSZ TIM,
70230 - RDHSB Read HSB base address
70234 (unused) - CONSO TIM,
70240 BLKI MTR, - RDMACT Read Memory Accounting
70240 - WRSPB Write SPT base address
70244 DATAI MTR, - RDEACT Read Execution Accounting
70244 - WRCSB Write CST base address
70250 (unused) - BLKO MTR,
70250 - WRPUR Write Process Use Register
70254 (unused) - DATAO MTR,
70254 - WRCSTM Write CST Mask
70260 CONO MTR, - Enable accounting meters and timers
70260 - WRTIM Write Time Base
70264 CONI MTR, - Read meter status
70264 - WRINT Write timer Interval
70270 (unused) - CONSZ MTR,
70270 - WRHSB Write HSB base address
70274 (unused) - CONSO MTR,
.

Opcodes 700-777 on KS-2020

See previous table for opcodes that the KL and KS have in common.

7__ 7_0 7_1 7_2 7_3 7_4 7_5 7_6 7_7
70_ (700) (701) (702) (703) UMOVE UMOVEM (706) (707)
71_ TIOE TION RDIO WRIO BSIO BCIO (716) (717)
72_ TIOEB TIONB RDIOB WRIOB BSIOB BCIOB (726) (727)
.

Opcodes 704-727 have the same format as ordinary instructions: 9-bits opcode, 4-bits AC field, 1+4+18 bits effective address.

code mnemonic description
704 UMOVE Same as PXCT 4,[MOVE A,E] (user mem to exec AC)
705 UMOVEM Same as PXCT 4,[MOVEM A,E] (exec AC to user mem)
710 TIOE Test bits in I/O reg, skip if all zero
711 TION Test bits in I/O reg, skip if any nonzero
712 RDIO Read 16-bit data from I/O register
713 WRIO Write 16-bit data to I/O register
714 BSIO Set bit in I/O reg
715 BCIO Clear bit in I/O reg
720 TIOEB Test bits in I/O reg byte, skip if all zero
721 TIONB Test bits in I/O reg byte, skip if any nonzero
722 RDIOB Read data from 8-bit I/O register
723 WRIOB Write data to 8-bit I/O register
724 BSIOB Set bit in 8-bit I/O reg
725 BCIOB Clear bit in 8-bit I/O reg
.

Back to top of document.


Up to the index for PDP-10 page.
Maintained by Joe Smith at js-cgi@inwap.com