New version committed to Github
There is a whole slew of updates. My goals have been to get disk I/O working at least on a primitive level. This is now true, the simplest file I/O opcodes LOAD and SAVE now work. This is nice as it allows loading and saving of Basic programs (I tested both with TI Basic and RXB, the Rich extended Basic).
The support of SAVE and LOAD opcodes also means that the TI Editor/Assembler cartridge now becomes useful in my clone system, as option 5 there (Run program from file) works. EA5 is used to load many programs, so it s a big step forward.
In addition I updated the FPGA design to include support for the SAMS style memory expansion. This is still work in progress, but theoretically it should work. It enables memory paging in the 32K area of memory space that is normally occupied by memory extension. There are CRU space I/O registers at 1E00 and 1E02 which enable access to memory mapping registers and enable memory mapping. Currently 256K of memory is made available for paging.
A memory extension test program called AMSTEST4 exists but my design does not yet pass it. Display updating goes weird, so there maybe something wrong with the FPGA. Need to check that more.
Summary of changes (see code at Github for more details):
- Added firmware/diskdsr.asm which is a Device Service Routine for disk I/O support. It currently registers DSK1 and DSK2. It support LOAD and SAVE opcodes. Support means that it will pass the PAB to the PC host to read by copying it to system RAM at address 0x8020. There is a command buffer at address 0x800A..0x8013 which is used for communication between the TMS99105 system and the host PC.
- Refactored memloader code:
- Added disk io support. Now if memloader is started with the command "-k" it will not only poll keyboard but also poll memory location updated by the DSR when disk I/O requests happen.
- Memloader now parses command line arguments better. Output is less verbose.
- FPGA code now supports SAMS memory extension, currently configured to 256Kbytes. This required a bunch of other changes, as the scratchpad area needs to be unpaged. This is done by remapping the scratchpad above the 256K area used by SAMS.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.