Tandy PC-6There are no pictures available for this page. Maybe later?
I was browsing the manual when I found a rather intriguing chapter...
Chapter 8: assembler and Simulator Functions...
This thing allows programming in Assembly, but not it's own assembly, but on a theoretical computer.
Warning: The rest of this page will assume that you have a working knowledge of Binary, HEX and preferably also Assembler...
There is something strange in the manual, namely that they number the Most Significant Bit as 0 and the Least Significant Bit as 15. this is contrary to EVERY other manual that I have...
The PC-6 emulates a 16bit computer with a memory of 2048Words.(0 - 2047) This memory is split into 8 256word pieces called Blocks.(Numbered 0 - 7)
The Processor have these registers:
Now for the explanation:
|SC (Sequence Counter)
|IR (Instruction register)
|BR (Base Register)
|OR (Operand register)
|GR0 (General Register 0)
|GR1 (General Register 1)
|GR2 (General Register 2)
|GR3 (General Register 3)
|CC (Condition Code, 1bit)
- Sequence counter:
Stores the address in main memory from which the next instruction to be executed is stored.(Usually known as Program Counter in other books)
- Instruction Register:
Stores the instruction being processed. this register cannot be accessed from the program.
- Base Register:
Contains the Block number of the memory being accessed. Values is stored in the HIGH 8bits only.
- Operand register:
Calculations such as addition and subtraction are performed with the operation of the contents(operand) of the words in the main memory for the contents of the General Register.
This OR is a 16-bit register to temporarily store the data fetched from the main memory at that time. This register cannot be referenced in the program.
- General Register:
A set of 4 16-bit registers that can be used for arithmetic and shift operations. In addition, GR0 can be used as an index register (XR) for address modification.
- Condition code:
This is a 1-bit register that stores the overflow(Carry) from addition or subtraction operation. The contents are retained until the next addition or subtraction.
Every instruction is 16-bit in length and have this format:
(Real processors usually don't have such neat layout)
The OP(operand) field contains the actual instruction. Here's the short list:
The GR field specifies the General register that will be the object of the instruction.
However, the contents of the GR field will be disregarded in the case of "Halt and Jump" instruction and a decision condition for jumping
will be meant in the case of a "jump on condition" instruction.
|0000||0||Halt and Jump||HJ
|0001||1||Jump if GR is not Zero||JNZ
|0010||2||Jump on condition||JC
|0011||3||Jump to subroutine||JSR
|1000||8||Load Address Immediate||LAI
Got any comments? Write them here:
- Comments will not be visible until I manually OK them.
- You don't need to give an email address if you don't want to. But if you do, you decide whether or not it is visible. (No addresses will be given to third-parties, it's only there to make it easier for me to get back to you)
- This script WILL log your IP adress.
- Profanities, 'L337' speak, links to unrelated stuff like Pr0n and online gambling will result in your IP being banned, a message being sent to your ISP and anything else nasty I can think of...
- Suspicious HTML in the comments field will also cause me to give you hell.
- While I don't have any user registration here, that's no reason to use a 'nick' belonging to someone else.