|Re: interfacing hp41 with hp71b by hp-il - my fault - sorry + some theory|
Message #6 Posted by Reinhard Hawel on 15 Mar 2000, 4:04 p.m.,
in response to message #5 by Philip Reagan
Guess my solution was wrong somehow.
RESTORE IO @ CONTROL OFF
should read CONTROL OFF @ RESTORE IO
you could try a RESET HPIL without HP-41 and with a cable connected between IN and OUT of the 71 to test your module and cable.
You might check all your modules/cable too. Try to print something or read from a tape drive.
Now some theory: The IL loop consists of a controller and a lot of Talker/Listener or inactive devices. There's only one controller allowed on the loop.
Your 41 is a loop controller. I don't see any means to change that. Maybe the IL development module provides such a possibility, but I don't own one and I don't know anything about it's capabilities.
Your HP-71 after a INIT:1 - INIT:3 (memory lost) or after a RESET HPIL is per default a loop controller. RESTORE IO tries to detect any device on the loop (It's unimportant, if the 71 is controller or not, RESTORE IO works anyway). I'd execute a RESET HPIL @ RESTORE IO when I have problems with a peripheral (don't do RESET HPIL, if there's another controller on the loop).
RESET HPIL doesn't send any commands via the loop. It resets the settings of the IL module to their default state, making the 71 a controller.
When a device doesn't return a byte, sent by a controller (token, for you IBMers), there's a loop broken (there's surely a similar error message for the 41).
A controller generally never forwards a message to the next device. So, when controller 1 sends a byte (InterFaceClear for example, that's what RESTORE IO does, when the 71 is controller), it's never forwarded by a controller 2 and controller 1 will not get its message back. Thats a sign for a broken loop for controller 1. Additionally the loop might be in some half-initialized state, which can be dangerous.
Because the 41 can't give up it's controller role, the 71 must execute a CONTROL OFF.
RESTORE IO is for security reasons, just to keep everything o.k. I've made the experience, that a RESTORE IO too much never does harm. (You may experiment and omit it too).
ENTER and OUTPUT are simple commands to send and receive a string (or number) over the loop. The 71 buffers up to 65 bytes, so you can OUTPUT something, before the controlling 41 wants it (it's sent, after the 71 gets the right message from the controller). As fas as I remember, the 71 waits for this buffer to empty, if you send more than 65 bytes without getting them out on the loop.
Hope, this is sufficient for now. Asking further questions will bring further answers.