ILBlinky Manual

General

ILBlinky Main program

ILBlinky is a Virtual HP-IL (Hewlett Packard Interface Loop) printer simulation sending the printer data to an instance of the HP82240B Printer Simulator over the UDP interface. This combines the HP-IL world with the world of the Redeye printer.

Interface ID's

Infrared Printer Setup

The HP82240B infrared printer simulation uses a UDP (User Datagram Protocol) interface for receiving the data to print. This interface was once created to simulate the printer output of the Redeye protocol capable calculators emulated by Emu28, Emu42 and Emu48. The advantage of this simulator is the full support of the Roman8 character set and the saving capabilities.

IP Address

This is the DNS name or IPv4 address of the PC where the printer simulation is running. For the same PC you can use "localhost" or "127.0.0.1".

Port

The UDP port address of the printer simulation listening. The default port is "5025".

HP-IL Link Setup

HP-IL Link is the part to enter the settings for the virtual HP-IL over a PC network. ILBlinky has an integrated TCP/IP client to transmit the IL frames over the virtual loop and a TCP/IP server for receiving the HP-IL frames from the loop.

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 ILBlinky 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 ILBlinky to the local PC or not more than to the local LAN.

After you finished the setup press the "Start" button to allow data transmission. This maybe useful when using the a HP41 as controller which use non-printable characters on the

Character Translation Table

The program offers the option for transliteration of printing characters. This is particularly useful when using a HP41 as controller. The HP41 use a 7 bit character set using the ASCII values of normally non-printable characters in the range 0..31 and some redefined characters above 122 (as it is standard on the HP82143A and HP82162A printers). Data within ESC sequences (reset, self-test, mode change, graphics) are not changed.

Note: The HP82240B Printer use three non printable characters as control code: EOT <4> for a special Line Feed, LF <10> for the Carrige Return and Line Feed combination and ESC <27> as begin of a ESCape sequence. So be aware what you're doing in changing these control codes.

The transliteration items of the translation table are normal settings, so you have the choice to put the translation table into the registry or even more practical to use a setup-file. The setup-file method has two advantages, writing the transliteration items into a text file is much easier then using a Registry editor and second, you can easily create different setup files with different translation tables. The usage of registry or setup files is described in the Command Line section below.

To create a translation table you have to create a "Translate" section and adding patch items of the form

:OldChar=NewChar

beginning with a colon, followed by the original character code "OldChar" without heading zero byte characters and "NewChar" as the new character code, both as decimal number.

The following sequence is a correct implementation for the setup-file:

[Translate]
:0=134
:1=130
:3=142

The same setup for the registry looks like this:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\EmuTools\ILBlinky\Translate]
":0"=dword:00000086
":1"=dword:00000082
":3"=dword:0000008e

Command line parameters

ILBlinky 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

A batch file containing

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

is starting one ILBlinky instance minimized reading the setup data from the file ILBlinky.vil and two instances of ILPer, one using the setup data from file ILPer1.vil, the other from file ILPer2.vil. At all three programs 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