Addendum to ILPer v2.4

Read the original ILPer Installation Notes2.pdf first please.

Connection order of internal devices

ILPer contain five devices, the scope frame code debugger, a generic printer, two mass storage simulations and a DOSLINK interface. These five device are connected over an internal loop, first the scope which is fully transparent and don't modify any frames, then second the printer, third a mass storage simulation with 80 Tracks/2 Sides/16 Sectors, fourth a mass storage simulation with 125 Tracks/8 Sides/64 Sectors and finally fifth the DOSLINK interface.

To get an overview you may call the "HP-IL Device Info..." item in the ILPer system menu (you get it by Alt+Space Bar or a left mouse click on the symbol in the top left corner or a right mouse click on the title bar). This dialog shows the loop with all active devices with the Device ID (DID), the Accessory ID (AID) and the current Device Address (Addr.).

Checking the loop integrity

ILPer now supports checking the loop integrity as active talker. Therefore the active talker compare the last send data frame with the response from the controller. If the received data is unequal, the active talker stops transmission and responds with the ETE frame.

Be aware that not all emulators working as HP-IL controller detect the ETE frame. Affected by this are Emu71/DOS and Emu71/Win until v1.09. Emu71/Win v1.10 contains a workaroud detecting the ETE frame in most cases, but do not respond the same error message like the original calculator. Emu41 don't detect in some cases the ETE frame, but this is identical to the real machine. At my tests with Emu75/DOS v1.1 all ETE frames has been detected with an error. The tests have been made with a modified ILPer version always returning the ETE instead of the correct ETO frame at end of a talker transmission.

The DOSLINK device

DOSLINK is a HP-IL device allowing import and export data to the PC file system. It base on the source code of the DOSLINK interface inside Emu41 published by Jean-François Garnier. So it's completely compatible and operate in the same way like the DOSLINK interface provided by Emu41, Emu71/DOS and ILDoslink.

Interface ID's

Operations

Data sent to DOSLINK is attached to the given "Out" file. Data received from DOSLINK is read from the given "In" file. Both operations transfer the data as binary files, so it's possible to read/write binary data. To write a text file, use the PRINT instructions and the CR/LF line terminator (see ENDLINE keyword) instead.

By pressing the "C" button or with the HP-IL commands CLEAR :LOOP or CLEAR :DOSLINK you close the output file and rewind the read position of the input file to the beginning. At next write access the data in the "Out" file is overwritten. When changing a file name over the "Out" or "In" button, the corresponding old file is closed before. Be aware, copying or any other external modification of the "Out" or "In" file is not possible without closing the corresponding file.

IDY checkbox

The IDY (Identify) frame maybe send continuously by the controller to determine if a device needs service. This frame is supported since PIL-Box firmware 1.6, but the PIL-Box need a special initialization sequence to enabled this feature. Nevertheless ILPer can be part of a Virtual HP-IL loop and there the frames maybe enabled. Showing IDY frames can be hidden by unchecking the IDY checkbox.

RFC checkbox

The RFC (Ready For Command) frame is send regularly after every command frame to verify that the previously send command was executed. This frame is absolutely necessary on the communication with real devices. For some reasons the RFC frame is handled locally inside the PILBox on the real HP-IL side, but don't occur on the USB side. The current implementations of virtual devices don't need the RFC frame, they execute any command immediately when they received it. New implementations of virtual HP-IL controllers add the RFC frames now and can be seen inside the Scope window. The disadvantage is, that's more complicated to read and understand the traffic on the bus. For better readability the RFC frames can be hidden by unchecking the RFC checkbox.

Notice for Setup changes

For all setup changes in the registry or in a setup-file used by a running ILPer instance, the program instance must be closed before modifying! If not, all modifications will get lost.

Auto-extended address mode

Since ILPer v1.43 the internal devices printer and mass storage support the "auto-extended address" mode. This could cause a different device addressing in connection with other "auto-address" devices in the same loop. Also this feature may cause trouble with other possible forthcoming new features. So in consequence the "auto-extended address" mode was disabled by default in v1.44.

If you want to reactivate this feature you have to modify the registry key value HKCU\Software\EmuTools\Ilper\Settings\AutoExtAddr from 0 to 1 or, when you're using the setup-file method, change the "AutoExtAddr" argument in the "[Settings]" section to 1 please.

Changing the connection order of the internal devices

The connection order is saved at HKCU\Software\EmuTools\Ilper\Settings\ or at the setup-file method in the "[Settings]" section with the items:

When you now sort the numeric item value into an ascending order, you get the connection order of the devices. The numbers are like BASIC line numbers, so when you for example want to move the DOSLINK device from the last position to the position behind the printer device, just change the "LoopPosDosLink" argument from 50 to 25 or any other number between 21 and 29. A numeric item value of 0 disables the device in the loop.

Device ID and drive dimension for the mass storage device

Since ILPer v2.0 we have two mass storage simulations. The first simulation has the device ID="HP9114B" and the second simulation the device ID="HDRIVE1".

Because of compatibility problems with the HP Portable Plus the device ID$ must be unequal to "HP9114B". To avoid these compatibility problems you may use the second mass storage device or rename the ID$ of the first mass storage device. The ID$ can be changed by modifying the string in the registry key value HKCU\Software\EmuTools\Ilper\Diskx\ID$ or when using the setup-file method the "ID$" argument in the "[Diskx]" section. "Diskx" standing for "Disk1" or "Disk2" depending on the device you want to change. If you want to add a "carriage return" or a "line feed" to your ID$ you have to use "\r" for "carriage return" and "\n" for "line feed".

Since ILPer v1.5 different drive dimensions are supported for initializing a virtual medium. These drive settings "HDTracks", "HDSides" and "HDSectors" are located in the registry at HKCU\Software\EmuTools\Ilper\Diskx\ or when using the setup-file method in the "[Diskx]" section. Along with these settings a Large Volume Support for a virtual medium larger than 640KB was added. The actual drive dimension is read from the selected medium and is independent from the drive settings for initializing a medium.

The ILPer "HP9114B" setting is

for a volume capacity of 80*2*16*256/1024=640KB.

An original HP-9114B drive has the dimension of

for a volume capacity of 77*2*16*256/1024=616KB.

The ILPer large volume device "HDRIVE1" (compatible with the Emu71/DOS 2.44 "HDRIVE1" setting) has the dimension of

for a volume capacity of 125*8*64*256/1024/1024=16MB.

It's strictly recommended to use "HDRIVE1" or any other ID$ different from "HP9114" for large volume support or when using a HP Portable Plus as HP-IL controller. From design a sector number must be less than 65536 and so the product of HDTracks, HDSides and HDSectors must be also less than 65536. For rapid switching between different configurations it's best to put each configuration into a separate setup-file and use this file as ILPer program argument.

PIL-Box Link

The Radio buttons 9600 bps and 115 kbps for the PIL-Box baud rate selection have gone. The have been replaced by an automatic baud rate detection supporting 9600, 115200 and 230400 baud.

Virtual HP-IL setup

ILPer since v1.4 has optional a new interface: instead of directly connecting a PIL-Box over a virtual COM port, ILPer now has an integrated TCP/IP server for receiving HP-IL frames from the preceding device and a TCP/IP client to transmit IL frames to the next device. This new feature implements a virtual HP-IL over a PC network.

Choosing TCP/IP (IPv4/IPv6) as transport protocol gives the advantage of communicating with virtual HP-IL devices around the world if the host PC has access to the internet. Each virtual HP-IL device contains a TCP/IP server listening for data frames on the specified port number and a TCP/IP client sending data frames to a port of the next virtual device. A HP-IL data frame is normally 11 bits long, but as TCP/IP is a byte oriented protocol it is mapped to 16 bits (2 bytes). The remaining upper five bits are filled with zero (reserved for future use). The two bytes of a frame are transferred in network byte order.

Therefore you have three virtual HP-IL mode parameters:

So each device is listening for HP-IL frames on it's in-port, processes the frames inside the device simulation, and send output frames to it's out-port.

The Port numbers are split into three groups:

For virtual IL you should use port numbers from the third group (49152-65535). Port numbers below 49152 are also accepted.

Open TCP/IP ports are nowadays a security problem when your PC is connected to the Internet. To protect your computer from unauthorised requests all modern operating systems contain a (personal) firewall which blocks attacks. By default all ILPer TCP/IP traffic is being blocked too. Depending on your firewall you are asked at first usage of ILPer in TCP/IP mode to permit the communication or you must beforehand enable manually the ILPer program in your firewall. For security reasons you should restrict the rights of ILPer to the local PC or not more than to the local LAN.

To set the above mentioned virtual HP-IL mode parameters call the "TCP/IP Setup..." item in the ILPer system menu (you get it by Alt+Space Bar or a left mouse click on the symbol in the top left corner or a right mouse click on the title bar). In the "PIL-Box Link" combo box choose the setting "TCP/IP". Finally press the "Start" button please.

Command line parameters

ILPer can save the setup data in two ways. The standard way is saving the data in the Windows registry. But then every instance of the program starts with the same settings. To avoid this I added the possibility to use a dedicated ini-file.

The command line arguments "setup-file" and "/start" are optional and their order is irrelevant.

Batch load example

When you want to load two or more instances of ILPer each with his own setup parameter set, the easiest way is to use a batch file.

A batch file containing

  start Ilper.exe /start ILPer1.vil
  start Ilper.exe /start ILPer2.vil

is starting two instances of ILPer, one reading the setup data from the file ILPer1.vil, the other one from the file ILPer2.vil. At both instances of ILPer the "Start" button will be activated after start-up.

For the setup-files I suggest the file extension *.vil (for Virtual Interface Loop) but any other file extension will do. Creating the *.vil setup files from the example above is quite easy. Run the batch program to start all program instances, arrange the program windows on the screen and setup each program instance with the correct data. Finally close all program instances. At the next call of the batch file, all program instances are restored at the previous screen position and use the last setup data.

(c) Christoph Gießelink, February 2024