First, I want to say that this is a really great project!
I am encountering a strange issue using the assembler on actual 65C02 hardware. I'm using a simple SBC I built that has the memory map recommended in the TaliForth documentation, with the ROM at $8000 and kernel at $E000. I use a modified wozmon as the monitor (that uses a UART for I/O instead of Apple hardware) in the remaining kernel memory space, and a UART at $F000. So far, TaliForth seems to run as expected except when using the assembler.
The issue I'm having is using the RTS word in the assembler. In py65mon, the following works as expected:
here .s <1> 2048 ok
rts .s <1> 2048 ok
execute .s <0> ok
However, for some reason on the SBC, RTS consumes what is on the stack:
here .s <1> 2048 ok
rts .s <0> ok
This will obviously prevent a subsequent execute word from running.
I am wondering if this has something to do with how TaliForth is run from the monitor somehow (i.e. E000 R), but can't pinpoint why this would be.
First, I want to say that this is a really great project!
I am encountering a strange issue using the assembler on actual 65C02 hardware. I'm using a simple SBC I built that has the memory map recommended in the TaliForth documentation, with the ROM at $8000 and kernel at $E000. I use a modified wozmon as the monitor (that uses a UART for I/O instead of Apple hardware) in the remaining kernel memory space, and a UART at $F000. So far, TaliForth seems to run as expected except when using the assembler.
The issue I'm having is using the RTS word in the assembler. In py65mon, the following works as expected:
However, for some reason on the SBC, RTS consumes what is on the stack:
This will obviously prevent a subsequent
executeword from running.I am wondering if this has something to do with how TaliForth is run from the monitor somehow (i.e.
E000 R), but can't pinpoint why this would be.