Close

Extended Basic now runs! Added cartridge ROM paging support.

A project log for RC2016/99: TI-99/4A clone using TMS99105 CPU

Retrochallenge 2016/10 entry and winner: try to build a TI-99/4A clone using a TMS99105 CPU and an FPGA. In a month...

erik-piehlErik Piehl 10/19/2016 at 10:390 Comments

I added a pretty simple feature - the paging of cartridge ROMs. The memory region 0x6000..0x7FFF (8kbytes) is reserved for cartridge ROMs on the TI-99/4A. Since this region is only 8K in size, it became a limitation already early in the TI-99/4A's lifespan. As a solution some cartridges, such as TI's own Extended Basic implemented ROM paging. This was done in a very simple way: writes to the cartridge ROM area were used to change ROM pages. The only speciality was that the page number was deliver over address bus, normally address signal A1 (A14 in TI's own inverted parlance, the 2nd least significant address bit) was used to select between the two pages in an extended Basic cartridge. The original TI circuitry did not initialise the page selection in any way, it was random. Due to that the two banks of the TI extended Basic had the bottom 4K with the same contents. Thus no matter which page happened to be active on entry, the same code would execute and that code was aware of the bank selection logic.

Subsequently people have made later improved versions of TI's extended Basic, one of them is Rich Gilbertson's very nice "RXB" or Rich Extended Basic. I got it running, and with the same very simple test program as before

10 for i=0 to 200
20 print i
30 next i

execution speed is much faster than on TI's regular Basic. Here are the current benchmark results:

Discussions