DWMC-16 v2 Design Part 5c: Special Register Simplification
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.
None New Memory Mapping
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.
None Special Registers in Register Bank 2
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.
None Other Operations
None OpCodes for Other Operations
None
Stack Pointer Addessses for PUSH/POP