Quote:
Well, I figured it out. Answering myself here in hopes that it'll help someone else... I've been chasing my tail over this one for a week! There's absolutely nothing wrong w/ the printer.
The printer was looking for a LF character. I thought this would be provided by the PRINT/SPACE key, but it is not. There is a gate that decodes the LF character and that signal was never being asserted. I momentarily shorted it (it's active low - s/b /LF on the schematic) to ground and got a print output. Reading further I discovered how to explicitly generate a LF on the calculator, and once I added that to my test code - voilla!
If it's any consolation I was going to ask 2 questions :
1) Did it _ever_ work? My point was to ensure you were sending LFs, etc
2) Check the Linefeed-detect circuitry. There's a NAND gate to detect Linefeeds on the data path PCB, the output goes low when an LF is sent. This is actually an input to the state machine on the control board of course. If you weren't seeing LFs detected here, I would have suggested you checked you were sending them and then debugged the 9810's interface.
Yes, I realised (too late) I left the inverting bar (consistently) off the LF signal on all pages of the schematic!
Quote:
The examples in the printer interface manual are for a typwriter - not the 9866a. Apparently the typwriter produces output w/o needing a discrete LF. Not so for the thermal line printer.
It is of course a true line printer. It bufferes a line of text in the shift registers on the data path PCB (only 6 bits are stored in the upper-case only 9866A) and then when it prints a line of text it converts those characters into the dot pattern for the top dot-line of that row, stores that in shift registers on the printhead driver board, prints it, moves the paper up, then goes on to the next dot-line, etc. Actually, it's even more complicated than that, since each dot-line is printed in 4 (I think) interleaved sections.