pyilper2 2.0.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyilper2/Manual/basics.html +239 -0
- pyilper2/Manual/changelog.html +454 -0
- pyilper2/Manual/css/w3-theme-black.css +22 -0
- pyilper2/Manual/css/w3.css +235 -0
- pyilper2/Manual/drive.html +269 -0
- pyilper2/Manual/features.html +168 -0
- pyilper2/Manual/filemenu.html +269 -0
- pyilper2/Manual/helpmenu.html +127 -0
- pyilper2/Manual/hp2225b.html +201 -0
- pyilper2/Manual/hp82162a.html +189 -0
- pyilper2/Manual/images/EMU71-controller.svg +245 -0
- pyilper2/Manual/images/HP-71-controller.svg +249 -0
- pyilper2/Manual/images/complex.svg +504 -0
- pyilper2/Manual/images/loop.svg +586 -0
- pyilper2/Manual/index.html +133 -0
- pyilper2/Manual/interface.html +271 -0
- pyilper2/Manual/license.html +136 -0
- pyilper2/Manual/miscellaneous.html +133 -0
- pyilper2/Manual/parameters.html +178 -0
- pyilper2/Manual/plotter.html +211 -0
- pyilper2/Manual/printer.html +162 -0
- pyilper2/Manual/quickstart.html +153 -0
- pyilper2/Manual/rawdrive.html +179 -0
- pyilper2/Manual/releasenotes.html +128 -0
- pyilper2/Manual/scope.html +170 -0
- pyilper2/Manual/terminal.html +299 -0
- pyilper2/Manual/troubleshooting.html +280 -0
- pyilper2/Manual/userinterface.html +141 -0
- pyilper2/Manual/utilitiesmenu.html +172 -0
- pyilper2/__init__.py +29 -0
- pyilper2/__main__.py +409 -0
- pyilper2/acmbox.py +294 -0
- pyilper2/controlthread.py +392 -0
- pyilper2/iothread.py +161 -0
- pyilper2/lifcore.py +277 -0
- pyilper2/lifexec.py +2067 -0
- pyilper2/lifimage/CASSETTE.DAT +0 -0
- pyilper2/lifimage/FLOPPY.DAT +0 -0
- pyilper2/lifimage/HDRIVE1.DAT +0 -0
- pyilper2/lifimage/HDRIVE16.DAT +0 -0
- pyilper2/lifimage/HDRIVE2.DAT +0 -0
- pyilper2/lifimage/HDRIVE4.DAT +0 -0
- pyilper2/lifimage/HDRIVE8.DAT +0 -0
- pyilper2/lifimage/PILIMAGE.DAT +0 -0
- pyilper2/lifimage/README.TXT +15 -0
- pyilper2/lifutils.py +313 -0
- pyilper2/penconfig.py +274 -0
- pyilper2/pilbox.py +433 -0
- pyilper2/pilcharconv.py +1372 -0
- pyilper2/pilconfig.py +142 -0
- pyilper2/pilcore.py +167 -0
- pyilper2/pildevbase.py +510 -0
- pyilper2/pildrive.py +1805 -0
- pyilper2/pilglobals.py +373 -0
- pyilper2/pilhp2225b.py +1937 -0
- pyilper2/pilhp82162a.py +2184 -0
- pyilper2/pilinterface.py +328 -0
- pyilper2/pilkeymap.py +217 -0
- pyilper2/pilpdf.py +219 -0
- pyilper2/pilplotter.py +1722 -0
- pyilper2/pilprinter.py +157 -0
- pyilper2/pilprobe.py +90 -0
- pyilper2/pilqterm.py +1954 -0
- pyilper2/pilscope.py +308 -0
- pyilper2/pilsocket.py +350 -0
- pyilper2/piltcpip.py +348 -0
- pyilper2/pilterminal.py +169 -0
- pyilper2/pilwidgets.py +1691 -0
- pyilper2/pyilpermain.py +968 -0
- pyilper2/serialio.py +189 -0
- pyilper2/shortcutconfig.py +329 -0
- pyilper2/usbbox.py +298 -0
- pyilper2/usbio.py +208 -0
- pyilper2/userconfig.py +73 -0
- pyilper2-2.0.0b1.dist-info/METADATA +431 -0
- pyilper2-2.0.0b1.dist-info/RECORD +79 -0
- pyilper2-2.0.0b1.dist-info/WHEEL +4 -0
- pyilper2-2.0.0b1.dist-info/entry_points.txt +2 -0
- pyilper2-2.0.0b1.dist-info/licenses/LICENSE +280 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<title>pyILPER Help</title>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
+
<link rel="stylesheet" href="css/w3.css">
|
|
8
|
+
<link rel="stylesheet" href="css/w3-theme-black.css">
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
html,body,h1,h2,h3,h4,h5,h6 {font-family: "Roboto", sans-serif;}
|
|
12
|
+
.w3-sidebar {
|
|
13
|
+
z-index: 3;
|
|
14
|
+
width: 250px;
|
|
15
|
+
top: 43px;
|
|
16
|
+
bottom: 0;
|
|
17
|
+
height: inherit;
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
|
|
23
|
+
<!-- Navbar -->
|
|
24
|
+
<div class="w3-top">
|
|
25
|
+
<div class="w3-bar w3-theme w3-top w3-left-align w3-large">
|
|
26
|
+
<a class="w3-bar-item w3-button w3-right w3-hide-large w3-hover-white w3-large w3-theme-l1" href="javascript:void(0)" onclick="w3_open()">☰</a>
|
|
27
|
+
<a href="index.html" class="w3-bar-item w3-button w3-theme-l1">pyILPER</a>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<!-- Sidebar -->
|
|
32
|
+
<nav class="w3-sidebar w3-bar-block w3-collapse w3-large w3-theme-l5 w3-animate-left" id="mySidebar">
|
|
33
|
+
<a href="javascript:void(0)" onclick="w3_close()" class="w3-right w3-xlarge w3-padding-large w3-button w3-hide-large" title="Close Menu">
|
|
34
|
+
x
|
|
35
|
+
</a>
|
|
36
|
+
<h4 class="w3-bar-item"><b>Menu</b></h4>
|
|
37
|
+
<a href="quickstart.html" class="w3-bar-item w3-button">Quick Start Guide</a>
|
|
38
|
+
<a href="features.html" class="w3-bar-item w3-button">pyILPER Features</a>
|
|
39
|
+
<a href="basics.html" class="w3-bar-item w3-button">The Basics</a>
|
|
40
|
+
<div class="w3-dropdown-hover">
|
|
41
|
+
<button class="w3-button">User Interface ˯</button>
|
|
42
|
+
<div class="w3-dropdown-content w3-white w3-card-4">
|
|
43
|
+
<a href="userinterface.html" class="w3-bar-item w3-button">Overview</a>
|
|
44
|
+
<a href="filemenu.html" class="w3-bar-item w3-button">File menu</a>
|
|
45
|
+
<a href="utilitiesmenu.html" class="w3-bar-item w3-button">Utilities menu</a>
|
|
46
|
+
<a href="helpmenu.html" class="w3-bar-item w3-button">Help menu</a>
|
|
47
|
+
<a href="interface.html" class="w3-bar-item w3-button">Interface Tab</a>
|
|
48
|
+
<a href="drive.html" class="w3-bar-item w3-button">Drive Tab</a>
|
|
49
|
+
<a href="rawdrive.html" class="w3-bar-item w3-button">Raw Drive Tab</a>
|
|
50
|
+
<a href="printer.html" class="w3-bar-item w3-button">Generic Printer Tab</a>
|
|
51
|
+
<a href="terminal.html" class="w3-bar-item w3-button">Terminal Tab</a>
|
|
52
|
+
<a href="plotter.html" class="w3-bar-item w3-button">Plotter Tab</a>
|
|
53
|
+
<a href="hp82162a.html" class="w3-bar-item w3-button">HP82162A Tab</a>
|
|
54
|
+
<a href="hp2225b.html" class="w3-bar-item w3-button">HP2225B Tab</a>
|
|
55
|
+
<a href="scope.html" class="w3-bar-item w3-button">Scope Tab</a>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="w3-dropdown-hover">
|
|
59
|
+
<button class="w3-button">Miscellaneous ˯</button>
|
|
60
|
+
<div class="w3-dropdown-content w3-white w3-card-4">
|
|
61
|
+
<a href="releasenotes.html" class="w3-bar-item w3-button">Release Notes</a>
|
|
62
|
+
<a href="changelog.html" class="w3-bar-item w3-button">Change Log</a>
|
|
63
|
+
<a href="parameters.html" class="w3-bar-item w3-button">Command line parameters</a>
|
|
64
|
+
<a href="troubleshooting.html" class="w3-bar-item w3-button">Troubleshooting</a>
|
|
65
|
+
<a href="license.html" class="w3-bar-item w3-button">License</a>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</nav>
|
|
69
|
+
<!-- Overlay effect when opening sidebar on small screens -->
|
|
70
|
+
<div class="w3-overlay w3-hide-large" onclick="w3_close()" style="cursor:pointer" title="close side menu" id="myOverlay"></div>
|
|
71
|
+
|
|
72
|
+
<!-- Main content: shift it to the right by 250 pixels when the sidebar is visible -->
|
|
73
|
+
<div class="w3-main" style="margin-left:250px">
|
|
74
|
+
<div class="w3-row w3-padding-64">
|
|
75
|
+
<div class="w3-twothird w3-container">
|
|
76
|
+
|
|
77
|
+
<!-- Begin content --->
|
|
78
|
+
<h2 class="w3-text-teal">The Basics</em></h2>
|
|
79
|
+
|
|
80
|
+
<p>This page describes the basics of working with pyILPER.</p>
|
|
81
|
+
|
|
82
|
+
<h3 class="w3-text-teal">User interface</h3>
|
|
83
|
+
|
|
84
|
+
<p>The <em>pyILPER</em> user interface consists of the following main components:</p>
|
|
85
|
+
<ul class="w3-ul">
|
|
86
|
+
<li>A menu bar with the entries <em>File</em>, <em>Utilities</em>, and <em>Help</em></li>
|
|
87
|
+
<li>A tab bar with tabs for each virtual HP-IL device or interface</li>
|
|
88
|
+
<li>An <em>undock button</em> at the far right side of the tab bar</li>
|
|
89
|
+
<li>The display and controls of the virtual HP-IL device currently in the foreground tab</li>
|
|
90
|
+
<li>A status bar showing the status of the loop and the interfaces<li>
|
|
91
|
+
</ul>
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
<h4 class="w3-text-teal">Menus</h4>
|
|
95
|
+
|
|
96
|
+
<p>The <a class="w3-hover-black href="filemenu.html"><em>File</em> menu</a> contains functions to configure and control <em>pyILPER</em>. There you'll find entries for the <em>pyILPER configuration</em> as well as for starting and stopping the <em>pyILPER</em> loop. Use the <em>Quit</em> entry to exit the program.<p>
|
|
97
|
+
|
|
98
|
+
<p>The <a class="w3-hover-black" href="utilitymenu.html"><em>Utilities</em> menu</a> includes features that support working with <em>pyILPER</em>.</p>
|
|
99
|
+
|
|
100
|
+
<p>The <a class="w-3-hover-black" href="helpmenu.html"><em>Help</em> menu</a> provides menu entries for the online help system and some technical and legal information</p>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<h4 class="w3-text-teal">Tabs</h4>
|
|
104
|
+
|
|
105
|
+
<p>The virtual devices and interfaces of <em>pyILPER</em> are contained in separate labeled pages. Click the corresponding tab of the device to bring the display and controls of the device or interface to the foreground.</p>
|
|
106
|
+
|
|
107
|
+
<p>The <em>undock button</em> allows you to detach the display and controls from the main user interface and view them in a separate window. You can move this "floating" window to any location on the desktop, including to a separate monitor. If you close a "floating" window, it is reattached to the main user interface again.</p>
|
|
108
|
+
|
|
109
|
+
<p>The <em>pyILPER</em> main window and the "floating" windows can be resized by clicking and dragging edges. The number of lines of scope, terminal, printer, or plotter output will increase or decrease accordingly. This is necessary for "floating" windows because they start with a minimum window size. The size and position of the windows are saved and restored when <em>pyILPER</em> restarts.</p>
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
<h3 class="w3-text-teal" id="pyilper-virtual-loop">The <em>pyILPER</em> virtual loop</h3>
|
|
113
|
+
|
|
114
|
+
<p>pyILPER establishes a virtual loop of emulated HP-IL devices, interfaces, and two scope probes. The loop can be started or stopped from the file menu. The loop has either the state "stopped", or "waiting for connections" or "running". In the pyILPER configuration window, you can configure the loop to start automatically.</p>
|
|
115
|
+
|
|
116
|
+
<p>The order of the tabs in the <em>pyILPER</em> tab bar determines the order in which the frames are processed. The <em>Virtual HP-IL Device configuration</em> entry in the <em>File</em> menu allows you to reorder the the tabs. In addition, additional devices or interfaces can be added to or removed from the tabbar.</p>
|
|
117
|
+
|
|
118
|
+
<img class="w3-image" src="images/loop.svg">
|
|
119
|
+
|
|
120
|
+
<h3 class="w3-text-teal">Interfaces</h3>
|
|
121
|
+
|
|
122
|
+
<p>Interfaces can be configured at an arbitrary position in the loop in the "Virtual HP-IL devices configuration" window. Each interface has its own tab, where it is <a href="w3-hover-black src="interface.html">configured</a>. Please note that <b>each additional interface will slow down the throughput of the loop considerably</b>. An interface can be configured as a PIL box interface, a TCP/IP interface, or a socket interface.</p>
|
|
123
|
+
|
|
124
|
+
<p>Interfaces have four states that are indicated by a status light in the status bar: "inactive" (black), "disconnected" (red), "waiting for connection" (yellow), and "connected" (green). The loop goes only into the "running" state if all interfaces are connected.</p>
|
|
125
|
+
|
|
126
|
+
<p>After the loop has started, each active interface goes into the "waiting for connection" state. It goes to the "connected" state if either a read and write network connection (TCP/IP, Socket interface) was established or a PIL-Box serial device was found and initialized successfully.</p>
|
|
127
|
+
|
|
128
|
+
<p>A TCP/IP interface is connected only after the first frame has been sent to the remote host. Therefore, you should generate some traffic on the loop (e.g., <code>RESTORE IO</code> on the HP-71 or powering the HP-41 on and off) to bring the TCP/IP interfaces to the “connected” state.</p>
|
|
129
|
+
|
|
130
|
+
<p>An interface can be deactivated (bridged) with the <em>Device enabled</em> checkbox if the loop is stopped.</p>
|
|
131
|
+
|
|
132
|
+
<p><b>Note</b>: You must always (re)configure the loop by the controller if you enable or disable an interface.</p>
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
<h3 class="w3-text-teal">Scope and Probes</h3>
|
|
136
|
+
|
|
137
|
+
<p>The scope is always the first tab that cannot be moved or deleted. By default, there are two probe devices, "Probe1" and "Probe2" which have no tab. The probes can be seen either in the "Virtual HP-IL device status" window or the "Virtual HP-IL device configuration". The position of the probes can be moved, but they cannot be deleted. The probes are activated in the scope tab. Frames captured by "Probe1" are shown in uppercase letters, and frames captured by "Probe2" are shown in lowercase letters.</p>
|
|
138
|
+
|
|
139
|
+
<p>This makes it possible to capture frames at any point in the <em>pyILPER</em> loop.</p>
|
|
140
|
+
|
|
141
|
+
<h3 class="w3-text-teal">Devices</h3>
|
|
142
|
+
|
|
143
|
+
<h4 class="w3-text-teal">Basic configuration</h4>
|
|
144
|
+
|
|
145
|
+
<p>If you start <em>pyILPER</em> for the first time, you get a graphical user interface with some menu entries and a tab for several virtual HP-IL devices:</p>
|
|
146
|
+
<ul class="w3-ul">
|
|
147
|
+
<li><a class="w3-hover-black" href="scope.html">Scope</a>: display HP-IL frames; this is not a "real" HP-IL device</li>
|
|
148
|
+
<li><a class="w3-hover-black" href="interface.html">Interface1</a>: interface to a PIL-Box</li>
|
|
149
|
+
<li><a class="w3-hover-black" href="printer.html">Printer</a>: generic printer</li>
|
|
150
|
+
<li><a class="w3-hover-black" href="terminal.html">Terminal</a>: HP-IL display and keyboard</li>
|
|
151
|
+
<li><a class="w3-hover-black" href="drive.html">Drive1</a>: HP-IL drive 1</li>
|
|
152
|
+
<li><a class="w3-hover-black" href="drive.html">Drive2</a>: HP-IL drive 2</li>
|
|
153
|
+
<li><a class="w3-hover-black" href="plotter.html">Plotter</a>: HP-7470A plotter</li>
|
|
154
|
+
</ul>
|
|
155
|
+
|
|
156
|
+
<p>You'll need to take <a class="w3-hover-black" href="terminal.html"><em>additional steps</em></a> if you want to use the terminal's keyboard.</p>
|
|
157
|
+
|
|
158
|
+
<p>There are other virtual HP-IL devices, which are not available in the default configuration:</p>
|
|
159
|
+
<ul class="W3-ul">
|
|
160
|
+
<li><a cleass="w3-hover-black" href="hp82162a.html">HP-82162A thermal printer</a></li>
|
|
161
|
+
<li><a cleass="w3-hover-black" href="hp2225b.html">HP-2225B Thinkjet printer</a></li>
|
|
162
|
+
<li><a cleass="w3-hover-black" href="rawdrive.html">Raw drive emulation for HP Portable Plus</a></li>
|
|
163
|
+
</ul>
|
|
164
|
+
|
|
165
|
+
<p>The <em>Virtual HP-IL Device configuration</em> entry in the <em>File</em> menu allows you to add, remove, or reorder virtual HP-IL device tabs.</p>
|
|
166
|
+
|
|
167
|
+
<h4 class="w3-text-teal">Enabling and disabling devices</h4>
|
|
168
|
+
|
|
169
|
+
<p>A device can be enabled or disabled with the <em>Device enabled</em> checkbox, even while the loop is running. Disabling a device does not break the loop. It only removes the device out of the loop.</p>
|
|
170
|
+
|
|
171
|
+
<p>The drive tab has controls that are only active if the device is disabled or the loop is stopped.</p>
|
|
172
|
+
|
|
173
|
+
<p><b>Note</b>: You must always (re)configure the loop by the controller if you enable or disable a device:</p>
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
<h4 class="w3-text-teal">Logging information</h4>
|
|
177
|
+
|
|
178
|
+
<p>Some devices support logging, e.g., of HP-IL frames, print output, or plot commands. This output is always written to a file in the pyILPER working directory. The name of the log file consists of the name of the device tab followed by the extension <em>.log</em>. Each time logging is enabled, the output is appended to the existing file. The start of each new output is marked by a timestamp.</p>
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
<h4 class="w3-text-teal">Printing information</h4>
|
|
182
|
+
|
|
183
|
+
<p>Some devices allow you to save a print or plot output as a PDF file. The PDF output is used to generate a print or plot output that closely resembles the output from the original device. Direct printing to a printer is not supported.</p>
|
|
184
|
+
|
|
185
|
+
<h3 class="w3-text-teal">(Re)configure the loop by an HP-IL controller</h3>
|
|
186
|
+
|
|
187
|
+
<p>Depending on the HP-IL controller, the configuration is performed as follows:</p>
|
|
188
|
+
|
|
189
|
+
<ul class="w3-ul">
|
|
190
|
+
<li>HP-41: switch the calculator OFF and ON.</li>
|
|
191
|
+
<li>HP-71: issue an <code>RESET HPIL @ RESTORE IO @ CLEAR</code></li>
|
|
192
|
+
<li>HP-75: do an <code>ASSIGN IO</code>.</li>
|
|
193
|
+
</ul>
|
|
194
|
+
|
|
195
|
+
<p>The <em>Virtual HP-IL device status</em> entry in the <em>Utilities</em> menu shows which devices are active and which HP-IL addresses are assigned to them.</p>
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
<h3 class="w3-text-teal">Using <em>pyILPER</em> stand-alone</h3>
|
|
200
|
+
|
|
201
|
+
<p>If you would like to use <em>pyILPER</em> stand-alone without a connection to a real or emulated calculator, set up the program with no interface. Then you can use the <a href="drive.html" class="w3-hover-black">virtual drive</a> to manage the content of LIF image files.</p>
|
|
202
|
+
<!-- End content -->
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
<footer id="myFooter">
|
|
206
|
+
<div class="w3-container w3-theme-l1">
|
|
207
|
+
<p>Powered by <a href="https://www.w3schools.com/w3css/default.asp" target="_blank">w3.css</a></p>
|
|
208
|
+
</div>
|
|
209
|
+
</footer>
|
|
210
|
+
<!-- END MAIN -->
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
<script>
|
|
214
|
+
// Get the Sidebar
|
|
215
|
+
var mySidebar = document.getElementById("mySidebar");
|
|
216
|
+
|
|
217
|
+
// Get the DIV with overlay effect
|
|
218
|
+
var overlayBg = document.getElementById("myOverlay");
|
|
219
|
+
|
|
220
|
+
// Toggle between showing and hiding the sidebar, and add overlay effect
|
|
221
|
+
function w3_open() {
|
|
222
|
+
if (mySidebar.style.display === 'block') {
|
|
223
|
+
mySidebar.style.display = 'none';
|
|
224
|
+
overlayBg.style.display = "none";
|
|
225
|
+
} else {
|
|
226
|
+
mySidebar.style.display = 'block';
|
|
227
|
+
overlayBg.style.display = "block";
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Close the sidebar with the close button
|
|
232
|
+
function w3_close() {
|
|
233
|
+
mySidebar.style.display = "none";
|
|
234
|
+
overlayBg.style.display = "none";
|
|
235
|
+
}
|
|
236
|
+
</script>
|
|
237
|
+
|
|
238
|
+
</body>
|
|
239
|
+
</html>
|