3 ms·
The slow BASIC was due to the completely insane doubly-interpreted implementation. The BASIC interpreter was written in GPL (Graphics Programming Language; http
by pm215 10y ago
The slow BASIC was due to the completely insane doubly-interpreted implementation. The BASIC interpreter was written in GPL (Graphics Programming Language; https://en.wikipedia.org/wiki/Texas_Instruments_TI-99/4A#VDP_RAM_and_GPL https://en.wikipedia.org/wiki/Texas_Instruments_TI-99/4A#VDP...), which was itself interpreted at runtime.
- boomlinde 10y agoIf I understand that correctly, the BASIC programs were stored in VDP RAM. If that's anything like the MSX (most of which also used this video chip), that means that BASIC tokens are read from a slow 8-bit bus by writing addresses byte by byte to a port and reading the content from another. There's functionality to automatically increment the VDP address, but any non-contiguous read will have to write the VDP address to the port. I really like this layered design despite its performance impact. It meant that they could fully utilize the VDP RAM where the CPU local RAM was lacking.
- pm215 10y agoNot only the BASIC programs you wrote (which do indeed live in VDP RAM). The BASIC interpreter itself was stored in GROM, which was read-only but had a similar slow 8-bit interface with an address port and a data port on it, and written in GPL bytecode which was then interpreted by a GPL interpreter which lived in real ROM. If they'd written the BASIC interpreter in actual machine code and put it in ROM then your BASIC programs (and the interpreter's own volatile data) could still have lived in VDP RAM, but everything would have been rather faster... http://www.unige.ch/medecine/nouspikel/ti99/gpl.htm http://www.unige.ch/medecine/nouspikel/ti99/gpl.htm is a detailed description of what GPL looks like.