SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
The PDP-10
(and me)
Jan 15 2013
Bjørn Hell Larsen
blarsen@altibox.no
How to get ten liters of stuff into a half-liter bottle
(or eight years of hacking into an one-hour talk)
DECsystem-1077
Me
The computer world of the 80ies
● Bytes are 8 bits
● Files are streams of bytes
● Integers come in various sizes
● Computers are networked
● Programs run in processes
● A program can fork() new processes
● Processes have threads
● We can send signals to processes
● File systems has links
● Commands can be piped
Stuff we take for granted
● DEC: Digital Equipment Corporation (aka "Digital")
● (Established 1957 by Ken Olsen (aquired 1998 by Compaq (merged
2002 with HP)))
● PDP: Programmable Data Processor - DECs main
line of processors
● Notable DEC products:
○ PDP-1, PDP-8, PDP-10, PDP-11, VAX, Alpha
○ DECtape, VT100, OSF/1
is currently most famous for the 1977 quote
"There is no reason for any individual to have
a computer in their home."
Ken Olsen
PDP-10 hardware timeline
PDP-10 hardware layout
PDP-10 peripherals
● TOPS-10 (aka "Monitor")
● TENEX
● TOPS-20
● ITS
● WAITS
The PDP-10 OS lineup
● Created by Bob Supnic
● Emulates
● Data General Nova, Eclipse
● Digital Equipment Corporation PDP-1, PDP-4, PDP-7, PDP-8, PDP-9,
PDP-10, PDP-11, PDP-15, VAX
● GRI Corporation GRI-909, GRI-99
● IBM 1401, 1620, 1130, 7090/7094, System 3
● Interdata (Perkin-Elmer) 16b and 32b systems
● Hewlett-Packard 2114, 2115, 2116, 2100, 21MX, 1000
● Honeywell H316/H516
● MITS Altair 8800, with both 8080 and Z80
● Royal-Mcbee LGP-30, LGP-21
● Scientific Data Systems SDS 940
● SWTP 6800
The SIMH emulator
.DIR
.TYPE
.COPY
.DELETE
.RENAME
.. looks familiar, yes?
A TOPS-10 command primer
Not so familiar:
.DETACH
.ATTACH
.SYSTAT
.SOS
.TECO
But
C:> mkdir foo
C:> cd foo
C:FOO> dir
becomes:
.r credir
Create directory: [,,foo]
Created DSKC0:[42,42,
FOO].SFD/PROTECTION:775
Create directory: ^Z
.r setsrc
*cp [,,foo]
*^Z
EXIT
.dir
%WLDDEM Directory is empty
A TOPS-10 command primer
Booting TOPS-10 in a simulator
(Live demo time! Cross fingers.)
Let's log in and write a program
that was good fun, but
FORTRAN is not the
reason why the PDP-
10 is a great
processor.
To discover the real
reason, we have to
dig a bit deeper.
Ok,
BLISS
● 36-bit words
● 16 general purpose 36-bit registers
● 18-bit (half-word) addressing
● Registers are locations 0-20 of the
memory space
● Highly symmetric instruction set
● Unimplemented instructions are thrown to
the OS and used for system calls
● Hardware byte manipulation support
● Definitively NOT a RISC architecture
PDP-10 processor architecture
Most instructions have the format:
Bit 000000000 0111 1 1111 112222222222333333
Position 012345678 9012 3 4567 890123456789012345
________________________________________
| | | | | |
| OP | AC |I| X | Y |
|_________|____|_|____|__________________|
- OP = operation code
- AC = accumulator field
- I = indirect bit
- X = index field
- Y = address field
Instruction format
Some example instructions:
move 1, @100 ; MOVE is the OP. AC is 1.
; @ sets the I bit.
; X is zero, Y is 100.
hrrz 17, 1(3) ; HRRZ is the OP. AC is 17,
; Y = 1, X = 3, I = 0
sos foo ; SOS is OP, FOO is symbolic
; for the Y field. AC, X, I
; are 0.
________________________________________
| | | | | |
| OP | AC |I| X | Y |
|_________|____|_|____|__________________|
- OP = operation code
- AC = accumulator field
- I = indirect bit
- X = index field
- Y = address field
Instruction format
● 000-077: Unimplemented User Operations
● 100-177: Floating point and Byte manipulation
● 200-277: Fixed point (36-bit integer) and subroutine calls
● 300-377: Hop, skip and jump
● 500-577: Half-word operations
● 600-677: Bit testing
● 700-777: Input/Output instructions
Instruction classes
● " " memory to register
● "I" immediate to register
● "M" register to memory
● "S" to self
General instruction variants
● MOVE - move
● MOVN - move negative
● MOVM - move magnitude
● MOVS - move swapped
Specific instruction variants
● MOVE 1,5000
● MOVEI 1,5000
● MOVEM 1,5000
● MOVES 1,5000
● MOVN 1,5000
● MOVNI 1,5000
● MOVNM 1,5000
● MOVNS 1,5000
Example: MOVE
● MOVM 1,5000
● MOVMI 1,5000
● MOVMM 1,5000
● MOVMS 1,5000
● MOVS 1,5000
● MOVSI 1,5000
● MOVSM 1,5000
● MOVSS 1,5000
Habxy
a: R or L
b: R or L
x: Ones or Zero
y: Variant
● HRL 1,5000
● HRRZI 1,5000
● HLRZM 1,5000
● HLLOI 1,5000
Half-word moves
...
MOVSI 1,-N ;Initialize register 1 to -N,,0
MOVEI 2,3 ;register 2 gets the constant 3.
ADDM 2,TAB(1) ;add 3 to one array element.
AOBJN 1,.-1 ;increment both the index and the control.
;Loop until the ADDM has been done N times.
...
N==10
TAB: BLOCK N
Some example code
JUMP Jump never. This instruction is a no-op.
JUMPL If C(AC) < 0 then PC<-E;
JUMPLE If C(AC) <= 0 then PC<-E;
JUMPE If C(AC) = 0 then PC<-E;
JUMPN If C(AC) # 0 then PC<-E;
JUMPGE If C(AC) >= 0 then PC<-E;
JUMPG If C(AC) > 0 then PC<-E;
JUMPA PC<-E. This is an unconditional branch.
JUMP
CHAPTER 1
INTRODUCTION TO MACRO
MACRO is the symbolic assembler program for the DECsystem-lO.
The assembler reads a file of MACRO statements and composes
relocatable binary machine instruction code suitable for loading
by LINK, the system's linking loader.
MACRO-10
TITLE Hello
SUBTTL Print hello world three times
COUNT==3
MAIN: MOVEI 1, COUNT
PRINT: TTCALL 3, [ASCIZ /Hello world
/]
SOJG 1, PRINT
EXIT
END MAIN ; This is a comment
Anatomy of a MACRO-10 program
Let's try it
Let's go more advanced
(Live demo time again! Fingers: assume the
position.)
● Get a simulator
● Get some software
● Grab some manuals and RTFM
● Have fun!
● It is amazing how much ancient stuff is out
there when you look around for a bit. And
the old-timers are overjoyed whenever
someone shows an interest
Want to play yourself?
Dave G. Conroy PDP-10/X, running ITS
... or you could build your own
POPJ P,
Dead 28. december 2012
● PDP-10 lover
● WAITS hacker
● Telnet implementor
● IMAP inventor
● Author of RFC4042,
UTF-9 and UTF-18
Efficient Transformation
Formats of Unicode
RIP Mark Crispin

Contenu connexe

Tendances

Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterakaptur
 
Introduction to nand2 tetris
Introduction to nand2 tetrisIntroduction to nand2 tetris
Introduction to nand2 tetrisYodalee
 
Gameboy emulator in rust and web assembly
Gameboy emulator in rust and web assemblyGameboy emulator in rust and web assembly
Gameboy emulator in rust and web assemblyYodalee
 
Raspberry pi's gpio programming with go
Raspberry pi's gpio programming with goRaspberry pi's gpio programming with go
Raspberry pi's gpio programming with goKonstantin Shamko
 
Make A Shoot ‘Em Up Game with Amethyst Framework
Make A Shoot ‘Em Up Game with Amethyst FrameworkMake A Shoot ‘Em Up Game with Amethyst Framework
Make A Shoot ‘Em Up Game with Amethyst FrameworkYodalee
 
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonByterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonakaptur
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...akaptur
 
Roberto Gallea: Workshop Arduino, giorno #2 Arduino + Processing
Roberto Gallea: Workshop Arduino, giorno #2 Arduino + ProcessingRoberto Gallea: Workshop Arduino, giorno #2 Arduino + Processing
Roberto Gallea: Workshop Arduino, giorno #2 Arduino + ProcessingDemetrio Siragusa
 
Raspberry Pi Using Python
Raspberry Pi Using PythonRaspberry Pi Using Python
Raspberry Pi Using PythonSeggy Segaran
 
Diving into byte code optimization in python
Diving into byte code optimization in python Diving into byte code optimization in python
Diving into byte code optimization in python Chetan Giridhar
 
C++ AMP 실천 및 적용 전략
C++ AMP 실천 및 적용 전략 C++ AMP 실천 및 적용 전략
C++ AMP 실천 및 적용 전략 명신 김
 
Python opcodes
Python opcodesPython opcodes
Python opcodesalexgolec
 
r2con 2017 r2cLEMENCy
r2con 2017 r2cLEMENCyr2con 2017 r2cLEMENCy
r2con 2017 r2cLEMENCyRay Song
 
CorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. ProgrammingCorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. ProgrammingSlide_N
 
N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)Selomon birhane
 

Tendances (20)

Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreter
 
Introduction to nand2 tetris
Introduction to nand2 tetrisIntroduction to nand2 tetris
Introduction to nand2 tetris
 
Gameboy emulator in rust and web assembly
Gameboy emulator in rust and web assemblyGameboy emulator in rust and web assembly
Gameboy emulator in rust and web assembly
 
Raspberry pi's gpio programming with go
Raspberry pi's gpio programming with goRaspberry pi's gpio programming with go
Raspberry pi's gpio programming with go
 
Make A Shoot ‘Em Up Game with Amethyst Framework
Make A Shoot ‘Em Up Game with Amethyst FrameworkMake A Shoot ‘Em Up Game with Amethyst Framework
Make A Shoot ‘Em Up Game with Amethyst Framework
 
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonByterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
 
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
Allison Kaptur: Bytes in the Machine: Inside the CPython interpreter, PyGotha...
 
Roberto Gallea: Workshop Arduino, giorno #2 Arduino + Processing
Roberto Gallea: Workshop Arduino, giorno #2 Arduino + ProcessingRoberto Gallea: Workshop Arduino, giorno #2 Arduino + Processing
Roberto Gallea: Workshop Arduino, giorno #2 Arduino + Processing
 
Raspberry Pi Using Python
Raspberry Pi Using PythonRaspberry Pi Using Python
Raspberry Pi Using Python
 
Diving into byte code optimization in python
Diving into byte code optimization in python Diving into byte code optimization in python
Diving into byte code optimization in python
 
PAL
PALPAL
PAL
 
C++ AMP 실천 및 적용 전략
C++ AMP 실천 및 적용 전략 C++ AMP 실천 및 적용 전략
C++ AMP 실천 및 적용 전략
 
Python opcodes
Python opcodesPython opcodes
Python opcodes
 
Intro to Cuda
Intro to CudaIntro to Cuda
Intro to Cuda
 
r2con 2017 r2cLEMENCy
r2con 2017 r2cLEMENCyr2con 2017 r2cLEMENCy
r2con 2017 r2cLEMENCy
 
A Threshold Cryptosystem without a Trusted Party
A Threshold Cryptosystem without a Trusted PartyA Threshold Cryptosystem without a Trusted Party
A Threshold Cryptosystem without a Trusted Party
 
CorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. ProgrammingCorePy High-Productivity CellB.E. Programming
CorePy High-Productivity CellB.E. Programming
 
One round threshold ecdsa with identifiable abort
One round threshold ecdsa with identifiable abortOne round threshold ecdsa with identifiable abort
One round threshold ecdsa with identifiable abort
 
Faster Python, FOSDEM
Faster Python, FOSDEMFaster Python, FOSDEM
Faster Python, FOSDEM
 
N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)N_Asm Assembly numbers (sol)
N_Asm Assembly numbers (sol)
 

Similaire à The PDP-10 - and me

Chapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structuChapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structuEstelaJeffery653
 
Swug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainathSwug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainathDennis Chung
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Jorisimec.archive
 
EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5PRADEEP
 
other-architectures.ppt
other-architectures.pptother-architectures.ppt
other-architectures.pptJaya Chavan
 
Instruction Set Architecture
Instruction Set ArchitectureInstruction Set Architecture
Instruction Set ArchitectureDilum Bandara
 
Computer Organization
Computer OrganizationComputer Organization
Computer OrganizationHaripritha
 
Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1Tom Paulus
 
DPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet ProcessingDPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet ProcessingMichelle Holley
 
LECTURE2 td 2 sue les theories de graphes
LECTURE2 td 2 sue les theories de graphesLECTURE2 td 2 sue les theories de graphes
LECTURE2 td 2 sue les theories de graphesAhmedMahjoub15
 
May2010 hex-core-opt
May2010 hex-core-optMay2010 hex-core-opt
May2010 hex-core-optJeff Larkin
 
Cray XT Porting, Scaling, and Optimization Best Practices
Cray XT Porting, Scaling, and Optimization Best PracticesCray XT Porting, Scaling, and Optimization Best Practices
Cray XT Porting, Scaling, and Optimization Best PracticesJeff Larkin
 
Track c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eveTrack c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -evechiportal
 
Revelation pyconuk2016
Revelation pyconuk2016Revelation pyconuk2016
Revelation pyconuk2016Sarah Mount
 
System design using HDL - Module 3
System design using HDL - Module 3System design using HDL - Module 3
System design using HDL - Module 3Aravinda Koithyar
 

Similaire à The PDP-10 - and me (20)

Chapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structuChapter 1SyllabusCatalog Description Computer structu
Chapter 1SyllabusCatalog Description Computer structu
 
Swug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainathSwug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainath
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris
 
EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5EMBEDDED SYSTEMS 4&5
EMBEDDED SYSTEMS 4&5
 
other-architectures.ppt
other-architectures.pptother-architectures.ppt
other-architectures.ppt
 
Linux networking
Linux networkingLinux networking
Linux networking
 
Instruction Set Architecture
Instruction Set ArchitectureInstruction Set Architecture
Instruction Set Architecture
 
Computer Organization
Computer OrganizationComputer Organization
Computer Organization
 
Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1Getting Started with Raspberry Pi - DCC 2013.1
Getting Started with Raspberry Pi - DCC 2013.1
 
DPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet ProcessingDPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet Processing
 
LECTURE2 td 2 sue les theories de graphes
LECTURE2 td 2 sue les theories de graphesLECTURE2 td 2 sue les theories de graphes
LECTURE2 td 2 sue les theories de graphes
 
May2010 hex-core-opt
May2010 hex-core-optMay2010 hex-core-opt
May2010 hex-core-opt
 
Cray XT Porting, Scaling, and Optimization Best Practices
Cray XT Porting, Scaling, and Optimization Best PracticesCray XT Porting, Scaling, and Optimization Best Practices
Cray XT Porting, Scaling, and Optimization Best Practices
 
Module_01.ppt
Module_01.pptModule_01.ppt
Module_01.ppt
 
Track c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eveTrack c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eve
 
01 isa
01 isa01 isa
01 isa
 
Revelation pyconuk2016
Revelation pyconuk2016Revelation pyconuk2016
Revelation pyconuk2016
 
Microcontroller part 4
Microcontroller part 4Microcontroller part 4
Microcontroller part 4
 
System design using HDL - Module 3
System design using HDL - Module 3System design using HDL - Module 3
System design using HDL - Module 3
 
CAAL_CCSU_U1.pdf
CAAL_CCSU_U1.pdfCAAL_CCSU_U1.pdf
CAAL_CCSU_U1.pdf
 

The PDP-10 - and me

  • 1. The PDP-10 (and me) Jan 15 2013 Bjørn Hell Larsen blarsen@altibox.no
  • 2. How to get ten liters of stuff into a half-liter bottle (or eight years of hacking into an one-hour talk)
  • 4. The computer world of the 80ies
  • 5. ● Bytes are 8 bits ● Files are streams of bytes ● Integers come in various sizes ● Computers are networked ● Programs run in processes ● A program can fork() new processes ● Processes have threads ● We can send signals to processes ● File systems has links ● Commands can be piped Stuff we take for granted
  • 6. ● DEC: Digital Equipment Corporation (aka "Digital") ● (Established 1957 by Ken Olsen (aquired 1998 by Compaq (merged 2002 with HP))) ● PDP: Programmable Data Processor - DECs main line of processors ● Notable DEC products: ○ PDP-1, PDP-8, PDP-10, PDP-11, VAX, Alpha ○ DECtape, VT100, OSF/1
  • 7. is currently most famous for the 1977 quote "There is no reason for any individual to have a computer in their home." Ken Olsen
  • 11. ● TOPS-10 (aka "Monitor") ● TENEX ● TOPS-20 ● ITS ● WAITS The PDP-10 OS lineup
  • 12. ● Created by Bob Supnic ● Emulates ● Data General Nova, Eclipse ● Digital Equipment Corporation PDP-1, PDP-4, PDP-7, PDP-8, PDP-9, PDP-10, PDP-11, PDP-15, VAX ● GRI Corporation GRI-909, GRI-99 ● IBM 1401, 1620, 1130, 7090/7094, System 3 ● Interdata (Perkin-Elmer) 16b and 32b systems ● Hewlett-Packard 2114, 2115, 2116, 2100, 21MX, 1000 ● Honeywell H316/H516 ● MITS Altair 8800, with both 8080 and Z80 ● Royal-Mcbee LGP-30, LGP-21 ● Scientific Data Systems SDS 940 ● SWTP 6800 The SIMH emulator
  • 13. .DIR .TYPE .COPY .DELETE .RENAME .. looks familiar, yes? A TOPS-10 command primer Not so familiar: .DETACH .ATTACH .SYSTAT .SOS .TECO
  • 14. But C:> mkdir foo C:> cd foo C:FOO> dir becomes: .r credir Create directory: [,,foo] Created DSKC0:[42,42, FOO].SFD/PROTECTION:775 Create directory: ^Z .r setsrc *cp [,,foo] *^Z EXIT .dir %WLDDEM Directory is empty A TOPS-10 command primer
  • 15. Booting TOPS-10 in a simulator
  • 16. (Live demo time! Cross fingers.) Let's log in and write a program
  • 17. that was good fun, but FORTRAN is not the reason why the PDP- 10 is a great processor. To discover the real reason, we have to dig a bit deeper. Ok,
  • 18. BLISS
  • 19. ● 36-bit words ● 16 general purpose 36-bit registers ● 18-bit (half-word) addressing ● Registers are locations 0-20 of the memory space ● Highly symmetric instruction set ● Unimplemented instructions are thrown to the OS and used for system calls ● Hardware byte manipulation support ● Definitively NOT a RISC architecture PDP-10 processor architecture
  • 20. Most instructions have the format: Bit 000000000 0111 1 1111 112222222222333333 Position 012345678 9012 3 4567 890123456789012345 ________________________________________ | | | | | | | OP | AC |I| X | Y | |_________|____|_|____|__________________| - OP = operation code - AC = accumulator field - I = indirect bit - X = index field - Y = address field Instruction format
  • 21. Some example instructions: move 1, @100 ; MOVE is the OP. AC is 1. ; @ sets the I bit. ; X is zero, Y is 100. hrrz 17, 1(3) ; HRRZ is the OP. AC is 17, ; Y = 1, X = 3, I = 0 sos foo ; SOS is OP, FOO is symbolic ; for the Y field. AC, X, I ; are 0. ________________________________________ | | | | | | | OP | AC |I| X | Y | |_________|____|_|____|__________________| - OP = operation code - AC = accumulator field - I = indirect bit - X = index field - Y = address field Instruction format
  • 22. ● 000-077: Unimplemented User Operations ● 100-177: Floating point and Byte manipulation ● 200-277: Fixed point (36-bit integer) and subroutine calls ● 300-377: Hop, skip and jump ● 500-577: Half-word operations ● 600-677: Bit testing ● 700-777: Input/Output instructions Instruction classes
  • 23. ● " " memory to register ● "I" immediate to register ● "M" register to memory ● "S" to self General instruction variants
  • 24. ● MOVE - move ● MOVN - move negative ● MOVM - move magnitude ● MOVS - move swapped Specific instruction variants
  • 25. ● MOVE 1,5000 ● MOVEI 1,5000 ● MOVEM 1,5000 ● MOVES 1,5000 ● MOVN 1,5000 ● MOVNI 1,5000 ● MOVNM 1,5000 ● MOVNS 1,5000 Example: MOVE ● MOVM 1,5000 ● MOVMI 1,5000 ● MOVMM 1,5000 ● MOVMS 1,5000 ● MOVS 1,5000 ● MOVSI 1,5000 ● MOVSM 1,5000 ● MOVSS 1,5000
  • 26. Habxy a: R or L b: R or L x: Ones or Zero y: Variant ● HRL 1,5000 ● HRRZI 1,5000 ● HLRZM 1,5000 ● HLLOI 1,5000 Half-word moves
  • 27. ... MOVSI 1,-N ;Initialize register 1 to -N,,0 MOVEI 2,3 ;register 2 gets the constant 3. ADDM 2,TAB(1) ;add 3 to one array element. AOBJN 1,.-1 ;increment both the index and the control. ;Loop until the ADDM has been done N times. ... N==10 TAB: BLOCK N Some example code
  • 28. JUMP Jump never. This instruction is a no-op. JUMPL If C(AC) < 0 then PC<-E; JUMPLE If C(AC) <= 0 then PC<-E; JUMPE If C(AC) = 0 then PC<-E; JUMPN If C(AC) # 0 then PC<-E; JUMPGE If C(AC) >= 0 then PC<-E; JUMPG If C(AC) > 0 then PC<-E; JUMPA PC<-E. This is an unconditional branch. JUMP
  • 29. CHAPTER 1 INTRODUCTION TO MACRO MACRO is the symbolic assembler program for the DECsystem-lO. The assembler reads a file of MACRO statements and composes relocatable binary machine instruction code suitable for loading by LINK, the system's linking loader. MACRO-10
  • 30. TITLE Hello SUBTTL Print hello world three times COUNT==3 MAIN: MOVEI 1, COUNT PRINT: TTCALL 3, [ASCIZ /Hello world /] SOJG 1, PRINT EXIT END MAIN ; This is a comment Anatomy of a MACRO-10 program
  • 32. Let's go more advanced (Live demo time again! Fingers: assume the position.)
  • 33. ● Get a simulator ● Get some software ● Grab some manuals and RTFM ● Have fun! ● It is amazing how much ancient stuff is out there when you look around for a bit. And the old-timers are overjoyed whenever someone shows an interest Want to play yourself?
  • 34. Dave G. Conroy PDP-10/X, running ITS ... or you could build your own
  • 36. Dead 28. december 2012 ● PDP-10 lover ● WAITS hacker ● Telnet implementor ● IMAP inventor ● Author of RFC4042, UTF-9 and UTF-18 Efficient Transformation Formats of Unicode RIP Mark Crispin