source: t29-www/en/development-projects.shtm @ 150

Last change on this file since 150 was 150, checked in by sven, 14 years ago
  • /en/development-projects.shtm: Translation of the Punch Card Project description
  • Typo auf /de/geraete/details-ncr446.shtm (englischer Link)
  • /en/news.shtm: Wie im Deutschen angepasst (Entwicklungsprojekt)

-- sven @ workstation7

  • Property svn:keywords set to Id
File size: 11.2 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4<head><!--#set var="title"        value="Development Projects"
5   --><!--#set var="location"     value="entwicklungsprojekte"
6   --><!--#set var="url_de"       value="entwicklungsprojekte.shtm"
7   --><!--#set var="prev"         value="miscellaneous.shtm"
8   --><!--#set var="prev_title"   value="Miscellaneous"
9   --><!--#set var="next"         value="news.shtm"
10   --><!--#set var="next_title"   value="What's new?"
11   -->
12     <title>Technikum29 - <!--#echo var="title" --></title>
13
14    <!--#include virtual="/en/inc/head.inc.shtm" -->
15
16    <meta name="t29.SVN" content="$Id: development-projects.shtm 150 2010-03-01 01:27:28Z sven $" />
17    <meta name="t29.initialdate" content="04.10.2009" />
18</head>
19<body>
20<!--#echo encoding="none" var="heading" -->
21<div id="content">
22
23<h2><!--#echo var="title" --></h2>
24
25<p>This page lists some of our development projects where old hardware meets modern
26computer equipment. All projects are selfmade, with partly enormous hardware and
27software efforts, like routed PCBs, kernel drivers and microcontrollers.
28<br/>Upcoming projects:</p>
29<ul>
30  <!-- Done: -->
31  <!--<li>punch card I/O with AVR ATmega microcontrollers via RS232 to computers,
32      Qt platform independent processing, with various hardware</li>-->
33  <li>Analex printer interface to the Bull Gamma 10 computer (uC based)</li>
34</ul>
35<br/>
36
37<h3>Paper tape processing with contemporary computers</h3>
38
39<p>We were often in a situation when some data stored on a punched paper needed
40to be sent over long distances. Having Internet access and e-mail, that's no matter
41for todays computers, once you can read in paper tapes. The other way around,
42punching new or modified data on punched papers is also a frequent need in our daily
43business. <br/>Therefore we initiated the <b>Paper Tape Project</b>, having the
44pronounced goal to handle paper tapes with contemporary computers, that is, to
45read, change and write (punch) them.</p>
46<p>We use comparatively new punched paper devices that already feature a Centronics
47interface at TTL level. Unfortunately the devices (in detail: reader
48Ghilmetti FER 201, puncher FACIT 4070) didn't yet implement the Centronics
49common standard from the 1970s (officially standardized as IEEE-1284 not until 1994),
50therefore simply connecting those devices with a standard parallel port printer cable
51won't do the job.</p>
52
53<div class="desc-left">
54   <img src="/shared/photos/rechnertechnik/fer201.jpg" width="239" height="148" alt="Photography of the paper tape reader Ghilmetti FER 201" />
55   <p class="bildtext" style="width:239px;"><b>Ghilmetti FER 201</b> reader with framework for reading zig-zag tapes</p>
56</div>
57
58<p>The very first step was to read the manual carefully to assemble a specially wired
59cable to connect the punch card device with the parallel port of a PC (commonly known as
60"LPT port", a standard port on PC motherboards just a few years ago). Since the devices
61don't implement the standarized hand shake, the second step was to implement a suitable
62driver to emulate the right communication behaviour for the punch card devices.</p>
63
64<p>Development started on the free GNU/Linux Operating System where we used the ppdev
65framework of the Linux 2.6 kernel series to program a user space driver in the programming
66language C with a little effort compared to a real kernel space driver.</p>
67
68<p>The parallel port consists of three 8-bit hardware registers: a bidirectional data
69register, a control register and a signal register. Since paper tapes are made of
708-bit words (octetts), we just connected these eight bits on the data register to save
71them directly to one byte in the computer. Using the control and signal pins, we could
72implement a interrupt (device cycle) driven communication, since the status register
73features one interrupt enabled bit (strobe). Our devices punch at 80 chars/sec and read in
74250 chars/sec, so even older PCs can easily run the driver programs.</p>
75
76<div class="desc-right">
77   <img src="/shared/photos/rechnertechnik/facit4070.jpg" width="144" height="196" alt="Photography of the paper tape puncher FACIT 4070" />
78   <p class="bildtext" style="width:145px;">The legendary puncher <b>FACIT 4070</b></p>
79</div>
80
81<p>As already told, there's not really the question how to model punched papers on
82computers, since they use the same word length (8 bit) and computer files are
83conceptually the same as paper tapes: byte arrays. A 250 byte binary file therefore
84represents a 250 chars long punched paper. Thus processing punch card files
85with Unix command line tools or hex editors is very easy. To speed up the workflow,
86we wrote some simple perl scripts to label paper tapes. Afterwards we wrote a
87graphical editor, called "Paper Tape Editor", where binary files could be visualized
88and directly edited as paper tapes on the screen. This program was written in C, using
89the Gtk+ toolkit. After writing drivers for the Microsoft Windows Operating System,
90this program was extended to the "Paper Tape Suite" to read, edit, save and punch
91paper tapes graphically. That way every possible procedures with paper tapes can be
92performed with ordinary PCs.</p>
93
94<p>You can get further details with a lot of documentation material on the homepage of
95<a class="go" href="http://dev.technikum29.de/projekte/paper-tape-project/documentation/"
96>The Paper Tape Project</a>. The source code was released as open source can be checked
97out from the <a
98href="http://dev.technikum29.de/svn/listing.php?repname=paper-tape-project">technikum29.de  subversion repository</a>.</p>
99
100<h3>Reading punch cards with contemprary computers</h3>
101<p>There is an historical storage media that is even more important than paper tapes:
102Punch cards. They were the one of the pillars of early mass electronic data processing
103and were used for saving data and program executables. Based on the <i>Paper Tape Project</i>,
104we started the <i>Punch Card Project</i> with the similar target of reading, editing and
105punching punch cards.</p>
106
107<p>When connecting these small paper tape devices (shown above) directly to modern
108personal computers via the parallel port ("LPT"), we noticed they were too slow for
109communication. Having modern GHz powered high end computers, how's that possible?
110<br/>The real cause for this performance is the software and hardware design of
111contemporary personal computers. They are conceptually designed for processing huge
112amounts of data and high speed calculations, but no more for short latencies with I/O
113handling. Actually, all time-ciritcal parts in modern high speed communication
114protocols (like USB, Ethernet, Firewire, etc.) are implemented in hardware. Software,
115on the other side, features more and more abstraction levels, so there's no more
116real-time operation even at kernel space.
117<br/>There are real-time operating systems, indeed, but by using such an operating
118system, the computer would be dedicated to communicating to the device. This is not
119neccessary. There is a (not even young) branch of computers which perfectly match
120all the criteria mentioned: Low latency, fast I/O, fully deterministic. Microcontroller
121are these low cost processors, a single chip featuring a lot of peripheral equipment.</p>
122
123<div class="desc-left">
124    <img src="/shared/photos/rechnertechnik/documation-m200.jpg" width="300" height="215" alt="Photography of the Documation M200 pneumatically Punch Card Reader" />
125    <p class="bildtext" style="width:300px;"><b>Documation M200</b> card reader (this one implemented by WANG)</p>
126</div>
127<p>We are using an ATmega microcontroller made by Atmel AVR. Most of the 40 digital I/O
128pins are directly wired to the electrical Input/Output of the punch card device
129<i>Documation M200</i> (featuring a pneumatic card feed). On the other side of the small
130development board there is the RS232 port ("serial port"), communicating to the computer.
131This small board is actually so small that it fits right into the device's cabinet.
132Running with 8&nbsp;MHz, the microcontroller is easily capable of hard real-time
133communication (300 cards/minute) and serving 4kB RAM, there is enough space for buffering
134a lot of punch cards until they can be sent to the virtually lazy computer via RS232.
135This is a quite old industry standard for serial data transportation, but since its very
136easy and robust, RS232 is quite perfect for such an interface. Using contemporary USB
137was no option since it's very complex and bulky (above all, there are cheap RS232-to-USB
138interfaces).</p>
139
140<p>We wrote a program for the microcontroller that implements the device driver to the
141punch card device. Now having an electrically specified interface to the computer (RS232),
142how should we communicate to the computer (automatically)? Furthermore, in which way
143should we represent a punch card with binary digits (zeros and ones)?
144<br/>While modeling 8 bit paper tapes into 8 bit bytes is trivial, a punch card, having
14580 columns with 12 rows each, is much more complex. Therefore we wrote the
146<a href="http://dev.technikum29.de/projects/paper-tape-project/punch-card/protocols/documation-m200/protocol.htm" class="go">PC Documation M200 µC Serial Communication Protocol</a> that defines the
147way how computer and microcontroller shall communicate autonomously. It defines, that
148two punch card columns shall be packed into three octetts, each. This binary format has
149been proposed by the computer sciencist <a href="http://www.cs.uiowa.edu/~jones/">Douglas
150W. Jones</a>.
151<br/>For the computer side, we wrote the <i>Punch Card Editor</i>, a program that recieves
152the punch cards from the microcontroller (via the RS232 interface) and visualizes them in
153the graphical user interface. At this step, the text encodings (IBM H9 code, Bull Code)
154can be used to translate between binary punch card data and ASCII text. Thus card decks
155can be read in, modified and saved as files. Of course the comfortable program already
156has the interface for punching paper tapes, once we have selected a device and programmed
157some microcontroller for that job. At this point, there is also another benefit of this
158approach: The program runs on all modern platforms/operating systems (like Microsoft
159Windows, GNU/Linux, Apple OS X, etc. - there just needs to be some RS232 or USB connection).</p>
160
161<p>You can get further details with a lot of documentation material on the homepage of
162<a class="go" href="http://dev.technikum29.de/projects/paper-tape-project/documentation/index.php/punch-card/README.htm"
163>The Punch Card Project</a>. The source code was released as open source can be checked
164out from the <a
165href="http://dev.technikum29.de/svn/listing.php?repname=projects&path=/punch-card-project/trunk/">technikum9.de  subversion repository</a>.
166<br/>We've written a german paper <i>Lochkartenverarbeitung per Computer</i> (30 pages)
167with an analysis of the problem, modelling and implementation on both microcontroller
168and Computer. It will be published in the next days, but there won't be an english
169translation (you are referred to the verbose homepage and documentation materials that
170will also be published in some time).</p>
171
172
173
174
175</div><!-- end of content -->
176<!--#include virtual="/en/inc/menu.inc.shtm" -->
177</body>
178</html>
Note: See TracBrowser for help on using the repository browser.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License