j***@gmail.com
2020-06-26 03:37:44 UTC
I cut my teeth on the PDP-8 back in the 1970s, and have had only a casual acquaintance with it since. But I got a copy of an open call from a friend for a "32-bit deterministic integer machine", as simple as possible but no simpler. Naturally I thought of the PDP-8; a word machine can have almost any word size without changing much.
The design I ended up with was rejected for the original use, but my friend encouraged me to carry on with the design, which has now produced something I've dubbed the PDP-8/X architecture. I'd appreciate any comments: post them here, send them to ***@ccil.org, or post PRs at https://github.com/johnwcowan/pdp8x.
The design document in that repo assumes zero familiarity with the PDP-8. For this audience I can summarize it like this:
* Words and addresses are 32 bits, but instructions are only 16 bits. This means that when (a) the last instruction before a label or (b) a JMS instruction is stored as the first of the two 16-bit instructions in the word, the assembler needs to fix things up by inserting a NOP after the instruction.
* MRI instructions are the same except that the indirect bit has been rotated to bit 0, so that opcodes 0x0 to 0x6 are direct and 0x8 to 8xD are indirect. The resulting page address is 11 bits, so pages are 2KW instead of 128 words, and you can have up to 2M pages or 4 GW (16 GB) of memory. Plenty of room!
* I/O instructions keep the 0x8000, 0x800, 0x80, and 0x8 bits clear, so that TLS, for example, is now 0x6034.
* OPR instructions likewise rotate the group 1 / group 2 bit to bit 0, so that group 1 has an opcode of 0x7 and group 2 an opcode of 0xF. The same bit spacing pattern used for I/O is used, so that CLA CLL is 0x7300. However, rather than squeezing group 3 (standard only, no EAE) into group 2, MQA and MQL are in the 0x80 and 0x8 bits of group 1, which means they can be microcoded together for instructions like CLA CMA MQL.
* The BSW instruction is split into two: HSW to swap half-words ("UNIX" becomes "IXUN") and BSW to swap the individual bytes of each half-word ("UNIX" becomes "NUXI").
Enjoy, and advTHANKSance.
John Cowan http://vrici.lojban.org/~cowan ***@ccil.org
Is a chair finely made tragic or comic? Is the portrait of Mona Lisa
good if I desire to see it? Is the bust of Sir Philip Crampton lyrical,
epical or dramatic? If a man hacking in fury at a block of wood make
there an image of a cow, is that image a work of art? If not, why not?
--Stephen Dedalus
The design I ended up with was rejected for the original use, but my friend encouraged me to carry on with the design, which has now produced something I've dubbed the PDP-8/X architecture. I'd appreciate any comments: post them here, send them to ***@ccil.org, or post PRs at https://github.com/johnwcowan/pdp8x.
The design document in that repo assumes zero familiarity with the PDP-8. For this audience I can summarize it like this:
* Words and addresses are 32 bits, but instructions are only 16 bits. This means that when (a) the last instruction before a label or (b) a JMS instruction is stored as the first of the two 16-bit instructions in the word, the assembler needs to fix things up by inserting a NOP after the instruction.
* MRI instructions are the same except that the indirect bit has been rotated to bit 0, so that opcodes 0x0 to 0x6 are direct and 0x8 to 8xD are indirect. The resulting page address is 11 bits, so pages are 2KW instead of 128 words, and you can have up to 2M pages or 4 GW (16 GB) of memory. Plenty of room!
* I/O instructions keep the 0x8000, 0x800, 0x80, and 0x8 bits clear, so that TLS, for example, is now 0x6034.
* OPR instructions likewise rotate the group 1 / group 2 bit to bit 0, so that group 1 has an opcode of 0x7 and group 2 an opcode of 0xF. The same bit spacing pattern used for I/O is used, so that CLA CLL is 0x7300. However, rather than squeezing group 3 (standard only, no EAE) into group 2, MQA and MQL are in the 0x80 and 0x8 bits of group 1, which means they can be microcoded together for instructions like CLA CMA MQL.
* The BSW instruction is split into two: HSW to swap half-words ("UNIX" becomes "IXUN") and BSW to swap the individual bytes of each half-word ("UNIX" becomes "NUXI").
Enjoy, and advTHANKSance.
John Cowan http://vrici.lojban.org/~cowan ***@ccil.org
Is a chair finely made tragic or comic? Is the portrait of Mona Lisa
good if I desire to see it? Is the bust of Sir Philip Crampton lyrical,
epical or dramatic? If a man hacking in fury at a block of wood make
there an image of a cow, is that image a work of art? If not, why not?
--Stephen Dedalus