Skip to content

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