BigDumbDinosaur wrote:
Neither PB or PC can modified by a copy from another register or by a stack pull instruction. For instance, it's not possible to simply load a general-purpose register with a value and copy it to either of those registers, even through the stack. Another for instance: while it's possible to change the value in DP by loading .C and then executing TCD, or change DB by pulling it from the stack (PLB), no such methods exist for PB and PC. Therefore, they are not readily modified.
It's a matter of interpretation:
Code:
PER ; push the sum of PC and a 16 bit immediate to stack
JSR ; push PC to stack and load immediate value or indexed indirect
JSL ; push PC and PB to stack and load immediate value
RTS ; pull PC from stack
RTI ; pull PC, PB and SR from stack
RTL ; pull PC and PB from stack
JMP ; load immediate value or indirect or indexed indirect to PC
JML ; load immediate to PC and PB
BRx ; add sign extended 8 bit immediate value to PC
BRL ; add 16 bit intermediate value to PC
BRK ; push PC, PB and SR to stack and load PC from memory and clear PB
COP ; push PC, PB and SR to stack and load PC from memory and clear PB
Plenty of ways to push, pull, load PC/PB and even a bit of arithmetic with PC.