HP Forums

Full Version: Pil-io serial and remote keyboard
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi all

I have been spending some time playimg with the arduino/tft and pil-io which has been good fun. I picked up an ascii video terminal from http://geoffg.net/terminal.html and it works well. I combine the ascii video terminal with the pil-io and have a working video terminal using the vga output. I do see all the hp-71b escape characters but i can put up with that. All the ascii details was discussed previously https://www.hpmuseum.org/cgi-sys/cgiwrap...read=93744

I have now connected a keyboard to the ascii video terminal and added a logic level converter to go from 3.3v to 5v for the rx and tx on the Pil-io. The keyboard is a usb one and so I use a usb to ps/2 converter. I have used both versions of the keyboard.lex and KEYBOARD IS:. When I press a key on the keyboard is sends the serial data from the tx of the ascii video terminal through the level converter to the pil-io and on to the hp-71b. Unfortunately the hp-71b does not react to the keyboard data UNTIL i press the enter key on the hp-71b. What i type on the keyboard then shows on the ho-71b lcd ? It also appears only 12 characters are received before a new line is started with the remaining characters etc. I have used an arduino and can confirm the data is being sent to the pil-io perfectly ?

Any thoughts on what may be happening appreciated.

Have any of the Arduino users out the implemented a virtual rs232 device ? That may be my next course of action.


That's correct, the PIL-IO is not compatible with the use of a remote keyboard with the HP71 KEYBOARD IS command.

The problem with KEYBOARD IS is in the way the HP71 is detecting that keystrokes are available. It uses the HP-IL Service Request support, and the PIL-IO doesn't generate Service Request when data is available in the input buffer.
I didn't anticipate this use case with the PIL-IO !

However it should work fine with the HP-75 KEYBOARD IS that doesn't use service requests.

It could be possible to add the Service Request for data available. The latest PIL-IO firmware already supports HP-IL Service Requests, but not in this particular case.

There is maybe a workaround (to be tested), using the existing Service Request (SRQ) capability of the PIL-IO.

To use it, you will have to use an extra logic signal from the Arduino to generate a SRQ signal for each character by pulsing this line low for maybe 100-200ms (i.e. long enough for the HP71 to get it -to be tested).
This signal should be connected to the IO2 line of the PIL-IO, and the PIL-IO must be put in the handshake/SRQ mode by sending a "LOCAL :PILSER1" from the HP71. See details in the PIL-IO documentation (last page).

Let me know!

Thanks J-F

I now have a couple of things to try. Although, from memory when I connected an hp-75c to the pil-io and ascii video terminal I ended up seeing <> around every character i type on the hp-75c, i.e. <C><A><T>

To make my workaround work, you will also have to wire the IO0/CTS input low since the PIL-IO is using the CTS/RTS handshake lines in this mode.

The <> that you observed may come from the escape sequences. If you don't want to manage them in your Arduino code, at least you should trap and ignore the escape-x sequences, this is done for instance in the ILPer printer code so you can do a DISPLAY IS and have (almost) legible results.

Just a general question about the DISPLAY IS command. If I use the pil-io and set DISPLAY IS to the serial device, everything i type on the hp-71b is shown in real time on the ascii video terminal. However, if I use an arduino with a tft screen and a virtual ILDisplay (Tobies ILDrive software modified by me) nothing appears on the display until I hit the enter key on the hp-71b. Does this behaviour seem correct ? I wonder whether the CMT Display showed the hp-71b input in real time on its screen ?
The DISPLAY IS operates differently on video displays, printers and other devices.
On printer devices, the line is sent to the device only when ENDLINE is pressed. On the other devices, the characters are sent just as they are keyed in.
There are other small differences, the details are in the DISPLAY IS description in the HP-IL user manual.

The original ILPer code (and Tobie's code) assigns a printer identifier (AID) to the display, whereas the PIL-IO has an interface AID, this explains the difference.

This is only true on the HP71, the HP75 DISPLAY IS doesn't make such differences.

Thanks J-F

Its all starting to make sense. My quest for a combined portable ILDrive and ILDisplay may be beyond my skills. Smile

Reference URL's