So, I have done some thinking, concerning my decision to add four Index/Offset Registers/Secondary Stack Pointers. And since I want to be able to write a nice, simple version of Forth for the DWMC-16… I decided that I would throw the Special Registers out of memory and put them into the second Register Bank, where I can do a bit more with them, without the need to load and reload them. Largely this is to cut down on commands to load addresses into the Index Registers…
With the sixteen words that are freed by this move, I now can add a mathematical co-processor later on without having to put it into the IO space address wise.
Special Use Registers
Now the Special Purpose Registers are a set of different registers that are used for special purposes by the CPU. They are located in the second Register Bank, covering R00'
to R15'
. They can be switched out for R00
to R15
, as to make work with them slightly easier.
I also decided to modify the Other Operations again, removing PUSHS/POPS
by simply extending the addresses of the Stack to three bit, instead of just two.