-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPLTS.html~
231 lines (175 loc) · 11.4 KB
/
PLTS.html~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<!DOCTYPE html>
<html>
<head>
<title>Paper Less Tape Station GUI Version 4 User Guide</title>
<style>
code {
font-family: Consolas,"courier new";
color: crimson;
background-color: #f1f1f1;
padding: 2px;
font-size: 105%;
}
</style>
<style>
/* Switch numbering on by adding class "countheads" to h1 */
/* Prevent numbering for a single heading via class "nocount" */
body {
counter-reset: h1counter;
}
.countheads ~ h1:before {
content: counter(h1counter) ".\0000a0\0000a0";
counter-increment: h1counter;
}
h1 {
counter-reset: h2counter;
}
.countheads ~ h2:before {
content: counter(h1counter) "." counter(h2counter) ".\0000a0\0000a0";
counter-increment: h2counter;
}
h2 {
counter-reset: h3counter;
}
.countheads ~ h3:before {
content: counter(h1counter) "." counter(h2counter) "." counter(h3counter) ".\0000a0\0000a0";
counter-increment: h3counter;
}
h3 {
counter-reset: h4counter;
}
.countheads ~ h4:before {
content: counter(h1counter) "." counter(h2counter) "." counter(h3counter) "." counter(h4counter) ".\0000a0\0000a0";
counter-increment: h4counter;
}
</style>
</head>
<body>
<h1 class="countheads"></h1>
<img src="NE0004.png" width="100%" height="100%" alt="">
<font size="15"><div style="text-align: center;">Paper Less Tape Station GUI Version 4 User Guide</div></font>
<h1>Introduction</h1>
<p>The Elliott 803 at The National Museum of Computing has a Paper Tape Station type 3A. This is capable of hosting two tape readers,
two tape punches and a teleprinter (for output only), but it actually only has the logic boards installed for one reader and one punch.</p>
<p>Some years ago the "Paper Less Tape Station" (PLTS) was built and connected into the PTS's wiring. It acts like the logic boards for the second reader and the teleprinter.
The PLTS communicates with a Raspberry Pi (Pi) via an opto-isolated RS-232 interface and the Pi provides a GUI to allow paper tape image files to be selected
and then uploaded into the virtual second tape reader. Likewise output to the teleprinter is passed up to the Pi where it is displayed in a window.</p>
<p>Recent enhancements to the PLTS and the Pi application have allowed the Pi's keyboard to be used to provide online or interactive input to the 803.</p>
<p></p>The 803 emulator also has the PLTS functionality built-in, but in this case the interface is via a network socket (on port address 8038).
<p>This PLTS application can be used to connect to either the real 803 (via a USB-to-RS232 interface) or to the emulator via a TCP/IP connection. The communications protocol is identical in both cases.
</p>
<h1>Installing the PLTS GUI</h1>
<h2>Installing and Building the dependencies</h2>
<p>There are a number of tools and libraries that are needed to build the emulator application.</p>
<p>If you don't already have a C compiler installed on your system, add the
"build-essential" package to the command below.</p>
<p>
<code>sudo apt install gtk+-3.0-dev cmake
</code></p>
<p>Other packages will also be installed to meet all the dependencies.</p>
<p>The package names used above apply for Debian derived distributions and may be different on other distributions.</p>
<h2>Building the PLTS code from github</h2>
<p>The PLTS gui is hosted on <a href="https://github.com/PeterOGB/PLTS4" target="github">github</a> </p>
To build the PLTS run<br>
<code>
git clone https://github.com/PeterOGB/PLTS4.git<br>
cd PLTS4<br>
cmake .<br>
make
</code>
<p>The PLTS can be run from the build directory or installed in /usr/local/ </p>
<p>To place the executable into /usr/local/bin and other resources into /usr/local/share/803-Resources run <br>
<code>sudo make install<br>
</code>
<br>
</p>
<h1>A tour of the GUI </h1>
<p>The GUI is made up of two windows, one to manage the connection to the 803 or to an emulator, and one to
edit and upload tapes and view teleprinter output.</p>
<h2>The Connection Window</h2>
<img src="PLTSconnect.png" width="466" height="236" alt="">
<h3>Connecting to the real Elliott 803</h3>
<p>Use the "Serial Connection to PLTS" to select the appropriate serial device and then press the "Make Serial Connection" button.</p>
<h3>Connecting to an emulated Elliott 803</h3>
<p>Either set the IP address of the host running the 803 Emulator or enable "Connect To Localhost" then press the "Make Network Connection" button.</p>
<h3>Standalone use</h3>
<p>To use the PLTS GUI to create and edit tapes without it being connected to an 803 press the "No Connection" button. </p>
<h2>The Main Window</h2>
<img src="PLTSmain.png" width="936" height="631" alt="">
<h3>Reader Echo</h3>
<p>This is shown with a light green background.</p>
<p>When the "Reader Echo" check button is set, each character read by the 803 is shown in the text area. This allows the user to monitor the reading of their tapes
by an 803 program such as the Algol compiler. So for example when the Algol compiler finds an error in a program the user can see roughly where the error occurred.
</p>
<p>When the "Online" check button is set, characters typed into the text area are sent to the 803 or emulator. This is an advanced feature and its use is covered in the Emulator manual.</p>
<h3>Teleprinter Output</h3>
<p>This is shown with a lilac background.</p>
<p>When the "Printing To Screen" check button is set, each character sent to the 803's teleprinter is shown in the text area. This should be turned off before punching any binary format tapes.<br>
When the "Punching to Tape" check button is set, each character is written to buffer which can then be saved as a tape file using the "Wind up" buttons.
Normally a tape is wound up "From (the) End" but there is <a href="http://www.billp.org/ccs/A104/page42.html">one situation when using the Algol Compiler</a> when a punched tape needs
to be read starting at the end. In this case use the "Wind Up From Start" button to create the tape file. </p>
<h3>Tape Upload</h3>
<p>This is shown with a pink background</p>
<p>The "Pick Tape" and "Pick Recent Tape" buttons are used to select a telecode format file to be uploaded into the virtual tape reader.</p>
<h4>Pick Tape</h4>
This button pops up a standard "file chooser" dialog to allow the selection of a tape file. The selected file must either be in Elliott or EDSAC telecode format
(normally named with a ".ele" or ".edsac" extensions).
<img src="PickTape.png" width="549" height="430" alt="">
<h4>Pick Recent Tape</h4>
This button pops up a "recent chooser" dialog. It is most useful when a sequence of tape uploads needs to be repeated.
<h4>Tape Upload Progress</h4>
<p>Due to the way the emulator works, tape uploads can be quite slow on some platforms, so a progress bar is provided to show when an upload is complete.</p>
<img src="Uploading.png" width="695" height="72" alt="">
<h3>Tape Editor</h3>
<p>This is shown with a light yellow background</p>
<h4>Telecode Character Sets</h4>
<p>The five hole paper tapes used on the Elliott 803 used a proprietary character set and encoding. </p>
<img src="Telecode.png" width="600" height="849" alt="">
<p>Although the tape editor internally stores the text in Utf8, it will only allow valid telecode characters to be inserted. If a character is typed that does not map to a
telecode character it is discarded. All letters are automatically converted into upper case. During conversions from Utf8 to Elliott telecode a Carriage Return and
Line Feed pair are inserted at the start of each line and are followed by a Figure Shift or
Letter Shift character as appropriate. Additional Shift characters are inserted where needed. 16 blanks (displayed as "_") are added to the start and end of the telecode data.</p>
<h4>Comments</h4>
<p>The editor supports the addition of comment text which is not subject to the telecode rules above and is NOT uploaded to the real 803 or to the emulator.</p>
<p>Text placed between [ and ] is highlighted in Blue to show it is a comment. Typing [ or ] will insert a [] pair to ensure comments are always balanced.
A comment block can only be deleted if it is empty.</p>
<p>A selected block of text can be wrapped in [ ] by pressing F1. F2 will remove the outer pair of[ ] from a highlighted comment block, but only if the comment contains no non-telecode characters. </p>
<h4>Loading an existing tape into the editor</h4>
<p>The "Include Old Tape" button pops up a standard "file chooser" dialog to allow the selection of an existing tape file. The contents of the file are examined to determine the format.
Files containing Elliott or EDSAC telecode begin with some blank tape punched with the approprite runout characters. Files containing Utf8 (and also Utf16 to allow for files created on
Windows machines) are checked for an appropriate Byte Order Mark (BOM) or for valid Utf8 if no BOM is present.</p>
<p>If required file contents are converted to Utf8 and inserted at the cursor position.</p>
<h4>Saving a tape</h4>
<p>The "Save to Tape" button either saves the currently selected text or the whole contents of the editor. It writes two files, one in Utf8 (with ".utf8 extension") ,
and one in telecode (with ".ele" or ".edsac" extension.</p> As with reader uploads, telecode format files have been stripped of any [comments] in the Utf8 text.</p>
<p>To simplify tape naming, the "Set Tape Name" button strips all trailing ".ele" , ".edsac" and ".utf8" extensions from the chosen filename. The currently chosen tape name is
displayed like this at the top of the editor:</p>
<img src="Tapename.png" width="429" height="70" alt="">
<h4>Uploading a tape to the reader</h4>
<p>The "Upload To Reader" converts either the whole of the editor text or just the currently selected text into telecode and uploads it into the virtual tape reader.
"Upload from Cursor" translates and uploads the text between the current cursor position and the end of the editor text. </p>
<p>The progress bar in the Tape Upload section is updated as the tape is uploaded from the editor.</p>
<h4>Elliot / EDSAC telecode selection</h4>
Support for EDSAC encoded tapes has been added to allow exisiting Utf8 encoded EDSAC programs to be fed into an EDSAC emulator that is being developed to
allow the real 803 to be used to prepare and debug EDSAC programs which will ultiatley be run on TNMOC's EDSAC replica.
<h4>Disconnect/Connect and Quit buttons.</h4>
The "Disconnect" / "Connect" button can be used to manage the connection to an 803 emulator.
The "Quit" button is self explanatory, but note that no prompts are produced if the editor has unsaved changes.
<h1>A typical session</h1>
<p>The example below shows an Algol program has been typed into the tape editor and saved with the name "roots". This has been successfully compiled with the Algol Compiler and run to produce
output on the teleprinter.</p>
<img src="PLTSmainText.png" width="1342" height="886" alt="">
<h2>Making a programme tape</h2>
<h2>Compiling your programme</h2>
<p>The next example shows an Algol program has been typed into the tape editor and saved with the name "roots". This has been compiled with the Algol Compiler which detected an
error in the programme. The teleprinter output shows the error number ( 17 ) and the text immediatley after the error.</p>
<p>From the 803 Algol manual :
<pre>
17 (a) No end or semicolon after statement in compound tail,
(b) No colon after label.
(c) Impermissible beginning to statement.</p>
</pre>
<img src="AlgolError.png" width="1342" height="886" alt="">
<h1>Licence</h1>
<p>Copyright © 2020 Peter Onion</p>
</body>