Once again, I have been on the receiving end of constructive criticism. This pointed me towards some interesting things, such as the possibility to move the Special Registers, such as the Program Counter, the Index Registers and the Stack Pointer, into the main memory space. It also noted that I might need more than one Stack Pointer.
This frees up the general use registers, while I do not need to modify the OpCodes to add more registers, and keeps access to these registers relatively easy, as it’s just a conventional load and store operations, as well as the possibility to use the direct addressing mode. This could be ‘hidden’ inside the Assembler by using some sort of system label to address these registers. They will of course remain connected to the address bus and the data bus as if they were in the general register banks, as it’s just the access for modification that changes.
This made me also add a new address mode in the form of ‘Offset Mode’, where the user can set a Y/Z Offset Register that is automatically added to the Index register it is connected to, if the Offset Mode is used.
I also added two more Stack Pointers, a task pointer and an interrupt pointer, which will be used when I start working on the Main OS, allowing me to use more multi-tasking/multi-user work.
Finally, I added a single operation in the form of the
dma operation, which I forgot to add in V0.8. This operation is for use with the DMA controller. I intend to implement and stop the execution of the program, handing control over the data and address bus to the DMA controller, until it is done. I am aware that this might interfere with Interrupt handling, but I will burn that bridge when I come to it.