This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
tutorials:assemblers [2022/03/18 16:43] sm5por [Processor models] |
tutorials:assemblers [2022/03/18 17:41] (current) sm5por [Processor models] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== PDP-10 assembly language programming ====== | ||
+ | **//This page is not limited to TOPS-20, but includes also information on other operating systems that run on the PDP-10 architecture, | ||
+ | |||
+ | FIXME //(Some pictorial illustration would be helpful here, to lighten up an otherwise dense piece of tables and text)// | ||
+ | ===== Processor architecture ===== | ||
+ | |||
+ | FIXME //(A very brief historical background of the PDP-10 architecture could be useful here, just a single passage or two)// | ||
+ | |||
+ | Much of the information in this section has been obtained from the following documentation: | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | ==== General characteristics ==== | ||
+ | |||
+ | The PDP-10 is originally designed for a memory with a maximum capacity of 2< | ||
+ | |||
+ | The processor has 16 general-purpose registers or // | ||
+ | |||
+ | 15 of these accumulators, | ||
+ | |||
+ | The processor also has an 18-bit //program counter,// a set of //status flags,// plus a few other special registers for internal use. | ||
+ | ==== Data types ==== | ||
+ | |||
+ | The PDP-10 uses a 36-bit word format, with bits conventionally numbered 0--35 from most to least significant bit (big-endian). Portions of this word may be referenced as arbitrarily sized //bytes// (1--36 bits long) and used to represent smaller data types such as characters of text. | ||
+ | |||
+ | ^ Word ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^1^1^1^1^1^1^1^1^1^1^2^2^2^2^2^2^2^2^2^2^3^3^3^3^3^3^ | ||
+ | ^::: | ||
+ | |Integer| | ||
+ | |Halfword| | ||
+ | |Floating point| | ||
+ | |6-bit bytes| | ||
+ | |7-bit bytes| | ||
+ | |8-bit bytes| | ||
+ | |||
+ | ^ Field ^ Size ^ Position | ||
+ | |S | | ||
+ | |N | 35| 1--35 | ||
+ | |LH | ||
+ | |RH | ||
+ | |Exponent | | ||
+ | |Fraction | 27| 9--35 | ||
+ | |||
+ | As 36 is divisible by three, in PDP-10 assembly language programming integer numbers are often written in octal (base 8) rather than hexadecimal (base 16) or decimal (base 10) notation. Exceptions here are bit positions, byte sizes, and software major/minor version numbers, which are written in decimal notation. When confusion is likely, decimal integers are suffixed with a period (" | ||
+ | |||
+ | ==== Memory addresses ==== | ||
+ | |||
+ | === Effective address calculation === | ||
+ | |||
+ | ^ Word ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^1^1^1^1^1^1^1^1^1^1^2^2^2^2^2^2^2^2^2^2^3^3^3^3^3^3^ | ||
+ | ^::: | ||
+ | |Address | ||||||||||||| | ||
+ | |||
+ | ^ | ||
+ | |I | ||
+ | |X | ||
+ | |Y | ||
+ | |||
+ | === Extended addressing === | ||
+ | |||
+ | === Byte pointers === | ||
+ | |||
+ | ^ Word ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^1^1^1^1^1^1^1^1^1^1^2^2^2^2^2^2^2^2^2^2^3^3^3^3^3^3^ | ||
+ | ^::: | ||
+ | |Byte pointer| | ||
+ | |||
+ | ^ | ||
+ | |Position | ||
+ | |Size | | ||
+ | |||
+ | ==== Instructions ==== | ||
+ | |||
+ | ^ Word ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^1^1^1^1^1^1^1^1^1^1^2^2^2^2^2^2^2^2^2^2^3^3^3^3^3^3^ | ||
+ | ^::: | ||
+ | |PC word| Flags ||||||||||||| | ||
+ | |Basic instruction| | ||
+ | |I/O instruction| | ||
+ | |||
+ | ^ | ||
+ | |Flags | ||
+ | |PC | 18| | ||
+ | |Basic opcode| | ||
+ | |AC | | ||
+ | |Device | ||
+ | |I/O opcode | ||
+ | |||
+ | === Processor status flags === | ||
+ | |||
+ | ^ Bit ^ | ||
+ | | 0|Overflow | ||
+ | | 1|Carry 0 | | | ||
+ | | 2|Carry 1 | | | ||
+ | | 3|Floating overflow | ||
+ | | 4|Byte interrupt | ||
+ | | 5|User | ||
+ | | 6|User in-out | ||
+ | | | ||
+ | | 12|No divide | ||
+ | |||
+ | === Basic instruction set === | ||
+ | |||
+ | === Input/ | ||
+ | |||
+ | //**Note:** I/O instructions are not available when the processor is in user mode, but can be executed only by the operating system kernel in system (privileged) mode. They are thus of limited interest to regular application programmers under most operating systems.// | ||
+ | |||
+ | ==== Interrupt system ==== | ||
+ | |||
+ | //**Note:** As with I/O instructions, | ||
+ | |||
+ | ==== Processor models ==== | ||
+ | |||
+ | ^ Processor | ||
+ | ^::: ^::: | ||
+ | |DEC KA10 | ||
+ | |DEC KI10 | ||
+ | |DEC KL10 A |DW, FP | 32--4096 KW | | ||
+ | |DEC KL10 B |DW, FP, EA | 32--4096 KW | 32|4 DTE20, 8 RH20|PDP-11/?? | ||
+ | |DEC KS10 |DW, FP | 128--512 KW | | ||
+ | |XKL Toad-1 | ||
+ | |XKL Toad-2 | ||
+ | |||
+ | |DW |Double word operations | ||
+ | |FP |Floating point operations | ||
+ | |EA |Extended addressing | ||
+ | |||
+ | === Emulators === | ||
+ | |||
+ | * KLH10 | ||
+ | * SIMH | ||
+ | |||
+ | ===== Operating system details ===== | ||
+ | |||
+ | ==== Tops-10 ==== | ||
+ | |||
+ | ==== ITS ==== | ||
+ | |||
+ | ==== TENEX ==== | ||
+ | |||
+ | ==== TOPS-20 ==== | ||
+ | |||
+ | ^ Documentation | ||
+ | ^::: ^ 5, 5.1 ^ 6.1 | ||
+ | |TOPS-20 Monitor Calls User's Guide| |[[http:// | ||
+ | |TOPS-20 Monitor Calls Reference Manual|[[http:// | ||
+ | |TOPS-20 Monitor Calls Quick Reference Guide| | | | | ||
+ | ===== Assemblers ===== | ||
+ | |||
+ | * [[tutorials: | ||
+ | * [[tutorials: | ||
+ | * [[tutorials: | ||
+ | |||
+ | ==== Inline assembly code in high-level languages ==== | ||
+ | |||
+ | * [[tutorials: | ||
+ | |||
+ | ===== Debugging ===== | ||
+ | |||
+ | * DDT | ||
+ | * SDDT | ||
+ | * MDDT |