(12-02-2015 09:32 PM)Christoph Giesselink Wrote: (12-02-2015 03:51 AM)rprosperi Wrote: I've seen this issue with many other small utilities built using the same framework, and I've also consistently seen the same comments that there is no way to change it, without reworking the entire app.
I found a way to deactivate the ESC key. When you find the right place for your source code change, you haven't to rework the entire app. Just a few lines, and you get what you want.
(12-02-2015 03:51 AM)rprosperi Wrote: One minor difference I've noted, is if I close ILPer but leave my 71B (connected via PILBox) on, then restart ILPer, and attempt to do a CAT :TAPE, it reports there is no media installed. Doing RESTORE IO corrects the problem.
If I power down the 71B, close ILPer, restart ILPer, then power-on the 71B and do CAT :TAPE, it works fine. I'm not 100% certain this is different from V1.52, but I believe it is.
ILPer v1.52 and v2.0 behave in the same manner, both return "HPIL ERR:Device Not Found"
The reason is very simple to explain. When you close ILPer or any other virtual device the program loose his device address.
Example:
- execute ILPer and press start
- exceute Emu71/Win
At this time the devices in ILPer are not addressed. With a trick since Emu71/Win v1.07 I fource a readdressing of all devices at first HPIL usage after Emu71 restart.
So lets do a CAT :TAPE on Emu71/Win:
Look at the first two commands in the scope:
AAU AAD 01
AAU - Auto-Address Unconfigure - device should quit his current address assignment
AAD 01 - Auto-Address - if device has no address assignment, use the given address and incr. address
After this sequence the
- Generic Printer has address 1
- Disk 1 has address 2
- Disk 2 has address 3
- DOSLINK has address 4
In the next step the HP71 wants to know the device address of the first device with a tape device ID. Here we are:
UNL TAD 01 SAI DAB 2E TAD 02 SAI DAB 10
UNL - Unlisten - deactivate all listeners
TAD 01 - Talk Addess - device with address 1 is talker
SAI - Send Accessory ID - in our case the printer return the ID frame DAB 2E
DAB 2E - data byte - the printer return ETO
TAD 02 - Talk Addess - device with address 2 is talker
SAI - Send Accessory ID - in our case Disk 1 return the ID frame DAB 10
DAB 10 - data byte - Disk 1 return ETO
That's it, the device at address 2 has a valid Accessory ID for :TAPE.
...
When I close ILPer and start ist again, what's happen?
At start of ILPer all devices inside ILPer have no address assignment so:
CAT :TAPE
UNL TAD 01 SAI TAD 02 SAI TAD 03 SAI TAD 04 SAI UNT
UNL - Unlisten - deactivate all listeners
TAD 01 - Talk Addess - device with address 1 is talker
SAI - Send Accessory ID - in our case no device has address 1 so return SAI
TAD 02 - Talk Addess - device with address 2 is talker
SAI - Send Accessory ID - in our case no device has address 2 so return SAI
TAD 03 - Talk Addess - device with address 3 is talker
SAI - Send Accessory ID - in our case no device has address 3 so return SAI
TAD 04 - Talk Addess - device with address 4 is talker
SAI - Send Accessory ID - in our case no device has address 4 so return SAI
UNT - Untalk - deactivate talker
And what's happen on RESTORE IO, tataa...
IFC AAU AAD 01
After a interface clear, readdressing of all devices.
Now some of you may understand, why JFG and I love the scope inside ILPer and don't want to miss it.
And now a trick how to restore a HPIL connection. This works with a real HP71 and even with Emu71/Win v1.07 or later.
Imagine, you just typed in a long command with many arguments like ROMCOPY and get the error message "HPIL ERR:Device Not Found" or something similar. You know, a RESTORE IO will solve the problem, but then you have to type in the whole command again, because the command buffer will be overwritten by the last command. But just power cycle the calculator (even the emulated one) over the on key, this readdress all connected devices and then recall the last command with <g> <CMDS>. In many cases this will work.
Christoph
Christoph:
Wow, thanks for the extended explanation; I need to spend some time going through this in more detail with the scope.
In my case, I was getting "no media installed" or something close to that, not the normal Device not found, but the difference could be because my old setup included ILPILBox, 2 instances of ILPer, and ILDOSLINK on the virtual loop, and a 9914B and 2225B on the physical loop via PILBox.
But doesn't matter, once I go through your explanation above, I'm sure it will become more clear; in any case, by always starting the Loop prior to the 71, it seems things work fine.
Will let you know once I've digested your notes.
Thanks again for taking so much time and care to provide the detailed explanation, it's truly appreciated.