I have some questions,
Apparently the NanoPEB v2 uses a 16550 for its UART, which means the 9902 routines will not work, understandable...
but the RS232 devices have a DSR...
How can i use this from TI GCC?
If I use this, how bad is the overhead? Will this impact overall performance? Understanding on this subject seems a bit thin, so I really need input. I am trying to make PLATOTerm work on as many TI systems as possible (even possibly going as far as rewriting it in GPL so it can run on unexpanded 16K consoles, but I digress...)
I am not up to speed with TI GCC yet (I only followed it for the shift left / shift right bug fix, that bit you hard too). Access to the DSR ROM is a DSRLNK call with a PAB structure.
Essentially the code can be the same as disk access via DSRLNK, just with "RS232.BA=2400.DA=8.PA=N" instead of "DSK1.SOMEFILE". Other than that, read/write flags and record parameters work according to TI's standard DSR behavior. Which was the good side of the whole DSR specification.
But calling the DSR is going to get you only so far. A bunch of us (myself included) started BBS software using BASIC to call the DSR and as soon as possible went to direct assembly access to the 9902 for character i.o.
On the input side, a DSR call will block, waiting for N characters or a carriage return, then miss chars between calls. The output direction should be ok.
(In my opinion, TI fixed all the problems with their DSR spec in the 1983 HexBus RS232 peripheral and it was usable from Basic. I found it quite versatile on the CC-40 Enhanced Basic with just OPEN, LINPUT and PRINT and I guess we would have seen some kid write a whole BBS in Extended Basic II on the 99/8, if TI had not killed it.)
I am game for locating the 16550 character i/o routines in the NanoPEB ROM, if Fred Kaal did not already reverse engineer them.