A BRAILLE PRINTER
Andrew W. Appel and Douglas W. Jones
Medical Computing Laboratory
School of Basic Medical Sciences
University of Illinois
Urbana, IL 61801

1 Introduction

This braille printer design resulted from the observation that existing braille printers were either slow and expensive, or very expensive. These printers use relatively old designs, and contain many moving parts. Furthermore, they require a significant amount of software support from the host computer. On the basis of these observations, and a quick check of the unit prices of key components (micro-computer, stepping motors, and solenoids), it was determined that a fast braille printer with a built in micro-computer could be built for about $1000 worth of parts (1979 cost). The inclusion of the microcomputer would greatly simplify the mechanical design.

Two printers representative of the current state of the art are SAGEM's TEM/REM 8 BR and TRIFORMATION's LED-120. The SAGEM printers run at 15 characters per second, while the LED-120 runs at 120 characters per second. Both printers are implemented with "random" electronic logic, although the LED-120 uses some LSI; both use mechanical control systems. Both printers accept the ASCII character set and literally map 64 of the characters to the 64 braille signs (including space). The mapping provided is correct for the letters in Grade 1 English Braille, but departs from this for the remainder of the character set. Thus, typical computer output is difficult for even trained users to interpret, and special translation programs are required if standard Grade 1 or Grade 2 English Braille are to be produced.

The construction of this printer was financed by the School of Basic Medical Sciences and the School of Clinical Medicine of the University of Illinois at Urbana Champaign. The Physics Department supported the project with its machine shop facilities, and the microcomputer was purchased with Federal funds. Initial software for the microcomputer was written by students from Computer Science 350. Thanks for this support are due to: Frank Mabry, Bruce Sherwood, Peter Maggs, and A. B. Baskin.

2 Functional Overview

The mechanical operation of the printer is quite simple. There are two stepping motors, one responsible for paper advance, and one for carriage motion. The carriage itself carries three solenoids, one for each of the three rows of bosses which make up braille text. The paper is embossed by stylus points ground on the ends of the solenoid plungers. Each stylus mates with a matching row of dies in the back bar (above the paper) which shape the bosses in the paper. While one solenoid is embossing the upper right dot of one character, another will be positioned under the center right dot of the character five print positions over, and the third will be positioned under the bottom right dot ten positions over.

The interface electronics performs the function of using the logic levels appearing on the outputs of the microcomputer to control the power delivered to the motors and solenoids. Additionally, the interface electronics includes a loudspeaker to be used for audible indication of various printer conditions. Stepping motors have multiple windings; motor rotation is accomplished by energizing the windings in the appropriate sequence. Thus, one bit is needed to control each of the windings. There are 4 windings on the large carriage motion motor, and three on the paper advance motor. Allocating one bit to the speaker and one to each of the three solenoids, a total of eleven bits are needed from the microcomputer.

The microcomputer itself is responsible for timing the transitions on each of the output bits to produce the desired mechanical motion, polling the input switches, and managing the asynchronous communications line. The input switches include an internal "carriage at left margin" switch and three internal mode switches, as well as the external page feed, line feed, and braille level select switches. Since each switch may be on or off, this is seven input bits. The microcomputer has the responsibility for translating the incoming ASCII characters to braille, and for converting the braille to motor and solenoid control sequences. Should the microcomputer discover anything wrong, it will signal this on the speaker. It may also transmit status reports on the asynchronous line.

The prototype achieves at present a speed of 13 characters per second. With patient optimization of the software delays to reduce resonance problems, a speed of 20 or 30 characters per second is likely.

2.1 The ASCII Printing Characters

ASCII (the American Standard Code for Information Interchange) is a 7 bit code for the entire alphabet in upper and lower case, the digits, 32 punctuation and accent marks, space, and 33 control characters. The 7 bits are numbered 0 to 6, with bit 0 being the least significant (rightmost) and bit 6 being the most significant (leftmost). In traditional communications terminology, the binary one and zero are called mark and space. On a serial communications line, the ASCII codes are sent least significant bit first. Asynchronous transmission involves a leading mark at the start of each character, and at least one trailing space at the end. These are called start and stop bits. On the RS-232 interface, marks are represented by negative voltages, spaces by positive voltages.

The ASCII character set is traditionally presented as a matrix, where the 3 most significant bits of the 7 bit representation label the columns and the 4 least significant bits label the rows. The printing characters occupy most of columns 2 through 7 (codes 20 to 7E). Note that space (code 20) is considered to be a printing character; the remaining codes are the control characters (codes 00 to 1F and code 7F, shaded in the diagram).

COLUMNS
     0  1  2   3  4  5   6  7 
0 0@P`p
1!1AQaq
2"2BRbr
3#3CScs
4$4DTdt
5%5EUeu
R6&6FVfv
O7'7GWgw
W8(8HXhx
S9)9IYiy
A*:JZjz
B+;K[k{
C,<L\l|
D-=M]m}
E.>N^n~
F/?O_o
  Note that on some printers and terminals, the ^ and _ characters are presented as ↑ and ←. Sometimes, the 7F code is used as a printing character. These changes are not part of the ASCII standard. It is standard to use the ' as either an accent mark (acute), as an apostrophe or as a single quote.  

2.2 The ASCII Control Characters

The control characters are divided into broad groups which can be distinguished by the first two letters of their CCITT names as follows:

TC — transmission control.
FE — format effector, used to position data for display.
DC — device control, for auxiliary function control.
IS — information separator, used for machine processing.
The control characters which have meanings when recieved by the printer are marked by an asterisk while those which it transmits are marked with a plus in the following table. Note that the CCITT name follows in parentheses when it differs from the ASCII name. All unmarked characters in the following table are ignored by the printer; most of these are simply not applicable, but NUL and DEL must be ignored.

code name
00 NUL
01 SOH (TC1)
02 STX (TC2)
03 ETX (TC3)
04 EOT (TC4)
05 *ENQ (TC5)
06 +ACK (TC6)
07 *BEL
08 *BS (FE0)
09 *HT (FE1)
0A *LF (FE2)
0B *VT (FE3)
0C *FF (FE4)
0D *CR (FE5)
0E SO
0F SI
 
7F DEL
     
code name
10 DLE (TC7)
11 DC1
12 DC2
13 DC3
14 DC4
15 *NAK (TC8)
16 +SYN (TC9)
17 *ETB (TC10)
18 *CAN
19 *EM
1A *SUB
1B *ESC
1C *FS (IS4)
1D *GS (IS3)
1E RS (IS2)
1F US (IS1)
 
 

ENQ — on receipt, causes an ACK to be transmitted when the printer is able to accept more data, unless there is an error condition, in which case it will send a NAK.
BEL — on receipt, sounds a brief (1/4 second) tone (2khz).
BS — on receipt, signals that the next character will overprint the previous character. See note on braille overprinting.
HT — on receipt, advances the print position to the next tab stop.
LF — terminates current line, advances to next line. Note special interaction with overprinting.
VT — same as LF, but advances paper by only half as much.
FF — terminates current line and advances to top of next page (assumes 11 inches to the page).
CR — on receipt, terminates current line; any printing characters arriving before the next line terminator will overprint the previous line from the beginning. See note on braille overprinting.
ESC — when followed by one of the following codes, switch printing modes. Otherwise, both the ESC character and the following character are ignored.
'4' — Use "transparent" mode, in which the low-order 6 bits of any printing character directly correspond to the 5 dots braille
'5' — Use the Provisional Braille Code for Computer Notation.
'6' — Use English Braille, grade 1 or 2, depending upon the setting of the internal mode switch.
These remain in effect until another escape sequence is sent, or until the mode switch on the top of the on printer is switched.

2.3 A Brief Introduction to Braille

The authoritative definition of braille is contained in the booklet "English Braille American Edition 1959" published by the American Printing House for the Blind, Louisville, Kentucky. Each braille character occupies a cell two dots wide by three dots high, with a nominal spacing of 0.1 inches between dots within a cell, and with cells repeated 4 per inch, and lines spaced roughly two per inch. Dots are embossed to protrude about 0.025 inches above the paper, and are about 0.07 inches in diameter. Conventionally, the dot positions are numbered from 1 to 6, starting at the upper left, down the left column and ending at the lower right, as follows:

14
25
36

It is common practice to refer to a braille character in print by hyphenating together the dots that are raised, so "a" is 1, "b" is 1-2, "c" is 1-4, and "z" is 1-3-5-6. The alphabet is conventionally presented as follows:

 1  2  3  4   5  6  7  8   9  0 
a b c d e f g h i j
k l m n o p q r s t
u v w x y z

Note that all alpahbetic characters use a dot from the first column and a dot in the top row. This allows them to be distinguished from each other without ambiguity when they appear out of context. In a sense, braille is an asynchronous code, and the leftmost and topmost dots in a cell serve the function of start bits. There are a total of 44 braille characters which are unambiguous out of context in this way, the remaining 19 may be disambiguated by context, and are used for punctuation and other purposes, for example (with each sign bracketed by full cells ⠿):

comma: ⠿⠂⠿
period: ⠿⠲⠿
capital sign:⠿⠠⠿(ie: ⠠y e s = Yes)
numeral sign:⠿⠼⠿(ie: ⠼a b c = 123)
letter sign: ⠿⠰⠿ (ie: ⠼e⠰e = 5e, ⠼e⠠e = 5E)

Grade 1 English Braille is somewhat more complex than the above; English Braille, or Grade 2 Braille is much more complex. In Grade 2 Braille, most of the 63 codes have multiple meanings, allowing single symbols for 52 common words and dipthongs, such as:

 ch  gh  sh  th   wh  ed  er  ou   ow  ar 
 ⠡ ⠣ ⠩ ⠹  ⠱ ⠫ ⠻ ⠳  ⠪ ⠜
 the   and  for   with  of 
(ie: ⠇⠑⠝⠛⠹  ⠜⠗⠪ ⠺⠁⠎ ⠼⠁⠑   ⠊⠝⠡⠑⠎⠲ 
= the length of the arrow was 15 inches. )

2.4 ASCII to Braille Translation

This braille printer has four modes in which it can interpret the ASCII printing characters. The primary two modes are Grade 1 and Grade 2 Braille; in these modes, the internal microprocessor does its best to produce readable output which corresponds to these two standards. The third mode of operation is transparent mode, in which a remote computer can directly control the printer operation for applications such as music or math braille, Grade 3 Braille, or more complete adherence to the rules of Grade 2 Braille. The fourth is the Provisional Braille Code for Computer Notation, which may be particularly appropriate for transcribing computer programs.

Selection between computer notation and English braille is accomplished both by remotely sent escape sequences, and by a switch on the top of the printer. This is because the nature of the material being printed governs the grade which is appropriate. For example, if a computer program is being printed, exact spelling and punctuation are important, so computer notation should be used; on the other hand, when printing text, grade 2 will save a considerable amount of paper, and is faster to read.

Transparent mode is entered whenever ESC 4 is received and remains in effect until the next escape sequence, or or until the mode select switch on top of the printer is switched. In transparent mode, the control characters are interpreted normally, but the ASCII meanings of the printing characters are ignored. Instead, the least significant 6 bits of the ASCII character are taken to indicate the 6 positions in the cell to be printed. The bit - dot relation is:

ASCII bit number:  6  5  4  3   2  1  0 
Braille dot number:  x  1  2  3   4  5  6 
Braille dot number:

A note on overprinting: In many computer applications, two or more character are printed over each other. For example, "b" overprinted with "/" ("/b ") is commonly used as a printing character for blank. Some programming languages, such as APL, make very extensive use of overprinting. Braille presents significant difficulties for overprinting because the superposition of any two braille characters simply produces another character. This printer solves this problem by printing overprints with a vertical displacement of 2 dots. As a result, any line containing overprints will be 5 dots high (instead of the normal 3), and the space to the next line will be appropriately increased. Multiple overstrikes will be simply superimposed, and overprinting of spaces will not cause any displacement. Incidentally, this solution allows the 8 dot cell supported by the TRIFORMATION LED-120 to be reproduced.

English Braille, grade 1, is currently supported on this printer. Following is a list of rule references taken from "English Braille, American Edition", indicating which rules for grade 1 Braille are supported.

I. Punctuation Signs

All supported as given except:

  • Opening double quotation mark: no ASCII equivalent
  • Opening single quotation mark: no ASCII equivalent; apostrophe is used.
  • Closing single quotation mark: same.
  • Ellipsis: Three periods are used, as in ASCII.

  1. Use and order of punctuation follows input text.
  2. See above
  3. Supported exactly
  4. Supported exactly
  5. Supported; follows input text.
  6. Follows input text. (ASCII will use -- for dash)
  7. See above
  8. Following order will be used:
    Open parenthesis or bracket
    Open quotation sign
    (Italics not supported in ASCII)
    Apostrophe
    Capital or letter sign
    Accent sign

II. Special Braille Composition Signs

  1. Supported almost exactly. The only case among the examples given on page 11-12 of the ink-print edition which is printed differently is C/O, in which the second capital sign would be omitted.
  2. Italics are not supported in ASCII.
  3. Not supported.
  4. Supported:

    1. (1) When any uncapitalized letter, not just those from "a" to "j", follows a number or is separated by a hyphen following a number, the letter sign will be used.
      (2) Letters standing alone in the input text will be preceded by a letter sign.
      (3) Combinations of letters standing alone will NOT be preceded by a letter sign; individual letters will.
      (4) Letter sign will be used.

    2. (1) Supported.
      (2) Letter sign will be used for uncapitalized letters.
      (3) Letter sign will be used for uncapitalized k-z.
      (4) Letter sign will be used for uncapitalized k-z.
      (5) Letter sign will be used when apostrophe follows.
      (6) Letter sign will be used when period follows.
  5. Follows input text.

VIII. Numbers

  1. Cardinal numbers
    (a) Supported
    (b) Supported
    (c) Supported
    (d) Not supported.
    (e) Mostly supported.
    (f) Period is used instead of 4-6 for decimal point.
    (g) Supported, except for decimal point.
    (h) Follows input text.
    (i) Follows input text.
    (j) Supported, except that hyphen ( - ) is used for minus. Note that in standard ASCII practice, asterisk is used for times, and slash is used for divide. Dot 4 preceeds the words for the symbols +, =, <, etc., as per section 31-a.
    Translations:
    +   (dot 4) plus
    =   (dot 4) eq
    <   (dot 4) lt
    >   (dot 4) gt
  2. Follows input text.
  3. Follows input text.

Text may be printed according to the Provisional Braille Code for Computer Notation (1972). Only sections 3 and 10 pertain to the printing of computer programs, and both are supported exactly (note that only those characters in section 3 which are present in the ASCII character set can be supported).

2.5 Operation of the Braille Printer:

The printer-is a compact unit, measuring 12" by 24" by 5". It was designed with the needs of the blind user in mind, so it is extremely simple to operate. Loading the paper is accomplished by feeding it under a bar, positioning the holes (which run down both sides of the paper) over the appropriate pins (which protrude through the top of the printer), and lowering two levers (which automatically snap into place). The whole operation takes only a few seconds even for someone unfamiliar with the machine.

The paper on which braille has just been printed travels across the top of the printer from front to back, so that the lines which have just been printed may be read.

The number of external controls has been minimized; There are, of course, no indicators that could not be read by a blind person (there are no indicators at all!). There are four controls, all located on the top of the printer, and easily accessible:

  1. On-Off switch
  2. English Braille / Computer notation select switch.
  3. Form Feed button
  4. Line Feed button

There are a few internal control switches which need be set only at installation time or when maintenance is being done on the printer:

  1. Wide/Narrow paper selection
  2. Baud Rate selection
  3. Run/Test mode selection

Variable Paper Widths:

The printer can accomodate either 9.5-inch-wide paper (that is, 8.5 inch paper with a half-inch track on either side for sprocket holes), or 12-inch wide paper. Switching between the two paper widths requires a screwdriver.

3. Construction

3.1 Bottom Assembly
3.1.1 Baseplate
3.1.2 Back Assembly
3.1.2.1 Back Plate
3.1.2.2 Fan Assembly
3.1.2.2.1 Fan
PAMOTOR Miniature Fan, Model 8500 C, 115v, 60Hz, 43cfm.
3.1.2.2.2 Finger Guard
PAMOTOR Fingerguard, Model 5508.
3.1.2.3 Fuse Holder
LITTELFUSE 3AG Panel Fuseholder, No. 341001; with 3AG fuse, L.F. No. 312003.
3.1.2.4 Line Cord
BELDEN 3-Conductor Line Cord, 16 awg, 9 ft, No. 17419s.
3.1.2.4.1 Strain Relief Grommet
HEYCO, for above 16-3 cord in a 5/8 in. hole.
3.1.2.5 Terminal Strip A
CINCH Barrier Terminal Block 10-140 (3/8 in. spacing).
3.1.2.6 Delta Connector and Cable
3.1.2.6.1 Delta Connector
3M Scotchflex 25 pin Delta Socket, No. 3483-1000.
3.1.2.6.2 Microcomputer Connector
3M Scotchflex 26 pin Socket, no. 3399-6026.
3.1.2.6.3 Cable
3M Scotchflex 26 wire flat cable, no. 3302/26, 10 inch;
connectors on one end spread in pairs to mate with wider spacing needed by delta connector, conductor number 26 removed at spread end, conductor number 1 cut 4 inches from spread end, separated back to one inch from spread end.
3.1.3 Heat Sink Assembly
3.1.3.1 Heat Sinks (2 each)
INTERNATIONAL RECTIFIER Heat Exchanger No. HE50-3A2;
drilled for TO-3 socket and tie points.
3.1.3.1.1 Sockets (2 each)
CINCH Power Transistor Socket 2TS-2.
3.1.3.1.2 Terminal Strips (2 each)
CINCH Terminal Strip No. 2003 (3 terminal).
3.1.3.2 Heat Sink Side Plates (2 each)
3.1.4 Large Transformer Assembly
3.1.4.1 Separator Block
3.1.4.2 Terminal Strip B
CINCH Barrier Terminal Block 3-140 (3/8 in. spacing).
3.1.4.3 18V Transformers (2 each, T1 T2)
TRIAD Dry Disk Rect. Transformer F-48U (17-18Vrms, 6A).
3.1.5 Small Transformers
3.1.5.1 6.3V (T3)
STANCOR Filament Transformer P-6466 (6.3Vrms, 3A).
3.1.5.2 24V C.T. (T4)
STANCOR Filament Transformer P-8180 (25.2Vrms, CT, 1A).
3.1.6 Capacitor Mount
3.1.7 Circuit Card Assebly
3.1.7.1 Heat sink angle
3.1.7.2 Card
3.1.7.3 Interface Connector
3M Scotchflex 26 pin solder tail header no. 3493-2003
3.1.7.4 Interface Cable
3.1.7.4.1 Connectors (3 each)
3M Scotchflex 26 pin Socket no. 3399-6026
3.1.7.4.2 Cable 3M Scotchflex 26 wire flat cable no. 3302/26, 18 inch;
one end split 6 inches into 14 and 12 wire parts. 3.1.8 Fuse Block
LITTELFUSE 3AG Solder Terminal 2 Fuse Block, No. 357002.
3.1.9 Rectifier
INTERNATIONAL RECTIFIER Bridge Rectifier 100PB2P (10A).
3.1.10 Terminal Strips (3/8 in. barrier spacing).
3.1.10.1 CINCH Barrier Terminal Bock 4-141 (K) Under carriage
3.1.10.2 CINCH Barrier Terminal Bock 5-141 (H) Right of small transformers
3.1.10.3 CINCH Barrier Terminal Bock 6-141 (G) Between small transformers
3.1.10.4 CINCH Barrier Terminal Bock 7-141 (C) By large capacitor
3.1.10.5 CINCH Barrier Terminal Bock 12-141 (D) In front of strip C
3.1.11 4-terminal Tie Points
3.1.11.1 CINCH Terminal Strip No. 2004 (E) right of big transformers
3.1.11.2 CINCH Terminal Strip No. 2004 (F) right of E
3.1.11.3 CINCH Terminal Strip No. 2004 (I) right of H
3.1.12 Microswitch Assembly
3.1.12.1 Adjusting Block
3.1.12.2 Microswitch
MICRO SWITCH Short Roller Lever Std Switch No. BZ-2RW22.
3.1.13 Speaker
OAKTRON 2.5 in. Speaker, 1 Watt, 8 ohm, No. 25ABC.
3.1.14 Angle
3.1.14.1 Back
3.1.14.2 Front
3.1.14.2.1 Ribbon Cable Clamp
3.1.15 Feet
WALDOM Recessed Screw Rubber Bumper, 3/8 in. high, 3/4 in. wide, 1/8 in. hole, 7/32 in. recess, No. B324.
3.2 Print Assembly
3.2.1 Paper Advance Mechanism
3.2.1.1 Paper Advance Plate
3.2.1.2 Motor Assembly
3.2.1.2.1 Motor Mount Plate
3.2.1.2.2 Angles
3.2.1.2.3 Gear
BOSTON GEAR 1 in., 32 pitch, brass, No. Y3232.
3.2.1.2.4 Motor
EASTERN AIR DEVICES Variable Reluctance Stepping Motor, 2AV, 3 phase, 35 ounce-in. stall torque, No. LD20ACL-12.
3.2.1.3 Bearing Mounts
3.2.1.4 Shaft Assembly
3.2.1.4.1 Sprockets
LaVEZZI MACHINE WORKS Aluminum Sprocket, .500 pitch, 12 tooth, No. L12F25K.
3.2.1.4.2 Gear
BOSTON GEAR 1.25 in., 32 pitch, brass, No. Y3240.
3.2.1.4.3 Washers
3.2.1.4.4 Bearings
BOSTON GEAR Self Lubricating Bronze Bearing, .25 in. ID, .375 OD, .5 long.
3.2.1.4.5 Bearings
3.2.1.5 Terminal Strip J
CINCH Barrier Terminal Block 4-140 (3/8 in. spacing).
3.2.2 Motor Mount
3.2.2.1 Motor Mount Plate
3.2.2.2 Motor
SUPERIOR ELECTRIC So-Syn Stepping Motor, M092-FD09.
3.2.2.3 Winding Drum
3.2.3 End Assemblies (2 each)
3.2.3.1 End Plates (2 each)
3.2.3.2 Pullies (2 each)
3.2.3.2.1 Bearings (4 each)
SCHATZ MANUFACTURING Ball Bearing, 0.312 in. ID, 0.875 in. OD, No. BR9903; seals and grease removed, re-lubricated with light grease.
3.2.3.2.2 Rims (4 each)
3.2.3.2.3 Shafts (4 each)
3.2.3.3 Bumpers (2 each)
WALDOM Recessed Screw Rubber Bumper, 3/8 in. high, 3/4 in. wide, 1/8 in. hole, 7/32 in. recess, No. B324.
3.2.4 Platten Assembly
3.2.4.1 Platten Mount Bar
3.2.4.2 Platten
3.2.4.3 Paper hold-downs (2 each)
3.2.4.3.1 Mounting Blocks
3.2.4.3.2 Struts (2)
3.2.4.3.3 Pivot Pins (2)
3.2.4.3.4 Pivot Washers (2)
brass washers, 5/16 OD, countersunk for 6-32 flat-head screw.
3.2.4.3.5 Ball Bearings (4)
5/8" diameter, 1/4" bore, 0.2" wide
3.2.4.3.6 Bearing Washers (8)
brass washers, 5/16 OD, for 6-32 cap screw.
3.2.4.3.7 Springs (2)
1/8" dia. coil tension springs
1.3" long unextended
3.2.5 Paper Guide Bar (front bar)
3.2.6 Shafts (2 each)
THOMSON INDUSTRIES Solid 60 Case Shaft, 3/8 in. Dia, Tolerance Class L, 22.0 in. long.
3.2.7 Carriage
3.2.7.1 End Plates
3.2.7.1.1 Cable Clamp Bolts
3.2.7.1.2 Fine Adjustment Mechanisms
3.2.7.1.3 Linear Bearing Assemblies
3.2.7.1.3.1 Linear Bearings
THOMSON INDUSTRIES Super-6 Ball Bushing
3.2.7.1.3.2 Washers
3.2.7.1.3.3 External Retaining Rings
THOMSON INDUSTRIES External Retaining Rings, Type W, No. W-375.
3.2.7.1.4 Ribbon Cable Clamp
3.2.7.2 Bottom Assembly
3.2.7.2.1 Bottom Plate
3.2.7.2.2 Terminal Strip L
KULKA single row terminal strip, 1/4 inch barrier spacing, 6 terminal, series 400 (CINCH type 171 will do in a pinch, though it is double row).
3.2.7.2.3 Rubber Mat
3.2.7.3 Top Assembly
3.2.7.3.1 Top Plate
3.2.7.3.2 Stylus Guide Bar
3.2.7.3.3 Solenoids
GUARDIAN ELECTRIC Intermittent Push Solenoid, 24VDC, 15 Ohm, 64 ounc at 1/16 inch, No. TP8 16-INT-24D.
3.2.7.3.3.1 Styli
Push Pluger removed from 3.2.7.3.3, straightened if needed, and ground to stylus point (Note: this grinding should be deferred until the print bar (3.2.5) has been completed). Groove filed 1/16" from bottom to hold spring.
3.2.7.3.3.2 Springs
Tapered springs, 1/2" long; tight fit around large end of stylus at small end; loose fit at large end.
3.2.7.3.4 Alignment Pins
3.2.8 Cable
SULLIVAN PRODUCTS Pylon Brand, 7 Strand Stainless Steel, 0.18 in. dia. Control Line, (50 lb. test), No. 018-60.
3.3 Cabinet
3.3.1 Front Plate
3.3.2 Side Plates
3.4 Lid
3.4.1 Computer Assembly
3.4.1.1 Single Board Computer
CROMEMCO Single Card Computer
3.4.1.2 Card Guides
3.4.1.2.1 Metal Part
3.4.1.2.2 Plastic Part
3.4.1.2.3 Retainer
3.4.1.3 Connectors
3.4.1.3.1 S-100 Connector
3.4.2 Internal Switch Assembly
3.4.2.1 Angle
3.4.2.2 Switches
ALCOSWITCH On-off-on SPDT Miniature Switch, No. MST-105E
(ALCO MTA-106E and C&K 7103 are equivalent)
3.4.3 External Switches
3.4.3.1 Power
ALCO MTG-106D Snap Action SPST Canopy Switch
3.4.3.2 Print Option
ALCOSWITCH Miniature SPDT Toggle Switch, No. MTA-106D;
this switch is small to make it easily distinguishable from the power switch (C&K 7101 is equivalent).
3.4.3.3 Line Feed and Page Eject Buttons
GRAYHILL Push Button Switch, SPST NO, No. 4001 (GRAYHILL No. 2201, snap action, may be preferable); the important thing is that the switch button be relatively large without requring much back panel space.
3.4.4 Terminal Strip M
CINCH Lug Type Terminal Strip No. 54 (4 lug).
3.4.5 Wire Hold Downs
WALDOM Nylon Cable Clamp, 3/8 inch dia., CCN-35.
3.4.6 Cable to Switches
3.4.6.1 Connector
3M Scotchflex 26 pin Socket, no. 3399-6026.
3.4.6.2 Cable
3M Scotchflex 26 wire flat cable, no. 3302-26, 14 inch.
3.4.8 Back Hinges(2 each)

4. Electronics

4.1 Driver Circuits (11)
4.1.1 Transistors (11)
RCA SK 3180 NPN Si Darlington Transistor
PT=65W, Ic=10A, VcbO=80V, VceO=30V
VebO=5V, hfe=20K, Case TO-220
4.1.2 Pull-up Resistors (11)
470 Ohm 1/8 watt.
4.1.3 Diode (10)
1N4002
4.1.4 TTL Buffer (2)
SN7407N hex noninverting buffer
4.1.5 Power dissapation resistors (4)
5 Ohm, 5 Watt
4.1.6 Resistor for speaker circuit
12 Ohm, 2 Watt
4.1.7 Capacitor for speaker circuit
15 μf, 10V
4.2 Current limiter circuit (2)
4.2.1 Transistor (2)
RCA SK3173 PNP Si Bipolar Transistor
PT=125W, Ic=-15A, VcbO=-90V, VceO=-80V
VebO=-5V, hfe=70, Case TO-3
4.2.2 Diode (2)
1N4002
4.2.3 Zener Diode (2)
3.3V, 1W
4.2.4 Resistor (2)
280 Ohm, 2 Watt
4.2.5 Resistor (2)
4.2.6 Resistor (2)
0.5 Ohm, 12 Watt
4.2.7 Fuse (2)
1.6 Amp (?)
4.3 Switch Circuits
4.3.1 Capacitors
0.1 μF disk capacitor (3)
4.3.2 Pull-up Resistors (2)
1000 Ohm, 1/8 Watt

4.4 Terminal Strips
4.4.A part 3.1.2.5, main power and connections to Lid (3.4)

  1. Neutral 110-120VAC power
  2. Switched 110-120VAC power
  3. Fused 110-120VAC power
  4. 110-120VAC hot from line cord
  5. Ground from line cord (bug: also shown as +8VDC supply from F1)
  6. +8VDC
  7. +16VDC
  8. -16VDC
  9. +5VDC regulated from circuit card
  10. carriage position microswitch

4.4.B part 3.1.4.2, to two 24V transformers (3.1.4.3)

  1. 24VAC phase 1
  2. transformer center-taps, if any
  3. 24VAC phase 2

4.4.C part 3.1.10.4, to carriage motor (3.2.2.2)

  1. fused carriage motor power black
  2. fused carriage motor power white
  3. carriage motor red switched ground
  4. carriage motor red/white switched ground
  5. carriage motor green switched ground
  6. carriage motor green/white switched ground
  7. Ground (from I1)

4.4.D part 3.1.10.5, to carriage (3.2.7), paper advance (3.2.1), current limiters (3.1.3)

  1. speaker
  2. solenoid 1 switched ground
  3. solenoid 2 switched ground
  4. solenoid 3 switched ground
  5. paper advance motor orange switched ground
  6. paper advance motor red switched ground
  7. paper advance motor brown switched ground
  8. +24VDC
  9. +24VDC
  10. carriage motor white current limited
  11. carriage motor black current limited

4.4.E part 3.1.11.1, mounting points for small bridge rectifiers.

  1. 8VAC phase 2 (from H4)
  2. ground for 8VDC
  3. 16VAC phase 2 (from H2)
  4. -16VDC

4.4.F part 3.1.11.2, mounting points for small bridge rectifiers.

  1. +8VDC
  2. 8VAC phase 1 (from H4)
  3. +16VDC
  4. 16VAC phase 1 (from H3)

4.4.G part 3.1.10.3, power distribution to transformers.

  1. Switched 110-120VAC power
  2. Neutral 110-120VAC power
  3. Switched 110-120VAC power
  4. Neutral 110-120VAC power
  5. Switched 110-120VAC power (from A2)
  6. Neutral 110-120VAC power (from A1)

4.4.H part 3.1.10.2, low voltage AC from small transformers.

  1. 16VAC neutral (grounded to I1)
  2. 16VAC phase 1
  3. 16VAC phase 2
  4. 8VAC phase 1
  5. 8VAC phase 2

4.4.I part 3.1.10.2, grounding point

  1. Cabinet ground (from A5)
  2. Cabinet ground
  3. Cabinet ground
  4. Cabinet ground

4.4.J part 3.2.1.5, to paper advance motor (3.2.1.2.4)

  1. +24VDC to paper advance motor black
  2. paper advance motor orange switched ground
  3. paper advance motor red switched ground
  4. paper advance motor brown switched ground

4.4.K part 3.1.10.1, anchor for ribbon cable to carriage (3.2.7)

  1. +24VDC to solenoids
  2. solenoid 1 switched ground
  3. solenoid 2 switched ground
  4. solenoid 3 switched ground
4.4.L part 3.2.1.5 anchor on carriage (3.2.7) for ribbon cable.
  1. solenoid 1 switched ground
  2. +24VDC to solenoid 1
  3. solenoid 2 switched ground
  4. +24VDC to solenoid 2
  5. solenoid 3 switched ground
  6. +24VDC to solenoid 3
4.4.M part 3.4.4, connections from terminal strip A to switches.
  1. spare input to microprocessor
  2. carriage position microswitch from A10
  3. +5VDC from A9
  4. Ground (from A5)

5 Embeded Computer Programming

5.1 Computer Hardware 5.1.1 Input/Output 5.1.1.1 Serial Port
A UART chip is present on the computer card. This chip, with its support circuitry, drives an RS-232 port (J4), which is the printer's means of connection to the host computer. Although both input and output are available, only input is used, as no data is sent to the host computer.
5.1.1.2 Parallel Ports
24 bits of parallel input and output are available (3 8-bit ports, J1, J2, J3). These are used to drive the electromechanical parts, and to read the switches on the printer.
  • J1 serves the carriage motor (3.2.2.2) and paper advance motor (3.2.1.2.4).
  • J2 serves the embossing solenoids (3.2.7.3.3.1) and speaker (3.1.13).
5.1.2 Timers
Four programmable timer interrupts are available on the computer card. These are used whenever timing is needed.
5.1.3 Interrupts
Serial I/O and the timers cause interrupts of the processor.
5.1.4 Processor
Z-80A
5.1.5 Memory
1024 bytes of RAM
8192 bytes of ROM. The ROM chip is Erasable, programmable; 4 are required (2716 chips).

5.2 Software

The program burned into the read-only memory of the computer is-responsible for all operation of the printer; there is no function not mediated by the computer. The software can conveniently be divided into two parts: "foreground" and “background.”

The foreground subroutines are those which are driven by interrupts: they run independently of other processes, and tend to be those which demand precise timing. For example the programs which drive the solenoids or the speaker are driven by the timer interrupt.

The background subroutines are have a lower priority, running whenever all foreground routines have (for the time being) given up their claims to execution. The background process is responsible for the translation of ASCII to Braille. It sends its output — consisting of 40-cell buffers, each representing exactly one line to be printed — to the foreground routine to be punched into the paper.

5.2.1 Background Process

transl
read a character from the input queue, then call the appropriate translation subroutine to process it (transp, compnot, or gradel)
transp
if char is control char, call control, else call pchar with low-order 6 bits
compnot
if char is control, then call "control", else if char is space, add 1 to space count else print out the space buffer with either blanks or countable spaces, depending on how many there are. Then look up the char in cntbl, and call pcharx with the resulting cell(s).
pcharx
if at end of line, go to beginning of next line and print the overrun character. Then print the char passed to pcharx.
level1
Store char in glc, then decide which kind of char it is: A-Z: b⇐0; a-z: b⇐1; 0-9: b⇐2; punct: b⇐3 space or control char: b⇐4. Then call statem with b and the char.
statem
This is a finite state machine. Current state (0-5) is given hy gls; for each state there are five possible action routines index from register b. These are labelled zl through z18. These do such things as changing state, setting variable gll, and calling the subroutine "output"
output
Looks up the character passed in outtbl or ltable, and sends the resulting cell(s) to pchar.
control
call a subroutine depending on the value of the control character passed. Typical subroutines: plf for linefeed, pvt for vertical tab, pcr for carriage return, pbel for bel, pnul does nothing.
plf
pass the address of the linefeed routine to swbuf
pcr
set column to -1 (which is the left margin)
pesc
read a char from the input queue. depending on its value, reset the variable which points to the current translation routine to either compnot, transp, or gradel.
pchar
increment column. If this makes it equal to the position of the right margin, call pcr and plf. Then pass the char to print (which was the parameter) to "write".
swbuf
mark the buffer just completed as “ready to print." then wait for the other buffer to become available, and set it as the one to write to. Then initialize the new write write buffer.
write
If the current print position in the buffer marked for writing is empty, write the character there, and return. Else, if the corresponding print position (given in both cases by -column-) in the underscore line is empty, write it there. Else do nothing.

5.2.2 Foreground Processes
5.2.2.1 Reading from Serial Port

indata
called by serial port interrupt; reads char from port, masks out the parity bit, and calls putql
putq1
puts character into the input queue

5.2.2.2 Polling the switches

intlize
initializes state variables for switch polling and paper advance mechanism; starts up the interrupt to call readsw every 250 ticks (every 16 msec)
readsw
debounces the switches by waiting 16 msec for the to settle. When a transition is detected and debounced, calls actnow
actnow
checks linefeed button, formfeed button, mode switch. Calls makelf or makeff for linefeed or formfeed only if carriage is not in motion. If mode switch is switched, puts appropriate escape sequence into the input queue (ESC 5 or ESC 6)

5.2.2.3 Carriage and solenoid motion:

fore
Waits for buffer to be marked for punching. If first line is nonzero, calls punline to punch it. Then if underscore line is nonzero, generates a half line feed, and calls punline on the underscore line.
Then calls whichever paper advance routine was specified in the buffer, and marks the buffer as ready to write to. Then waits for paper advance to finish, and starts over again.
punline
if carriage is at right, calls "punl" to punch while going leftwards; if carriage is at left, calls “punr" to go rightwards.
punr
initializes carcol to -1 (just before leftmost cell). Then call nextr to determine both the next 3-dot punch to make (one dot from cell N, one from cell N+5, and one from cell N+10), and the number of carriage steps needed to get to the right place to make it.
Then:
REPEAT call movpun to move and punch; call nextr UNTIL nextr says there is nothing more to punch Then if paper=narrow, call carrmar to move to right margin; else (paper=wide) call carlmar to move to left margin.
punl
similar to punr (calls nextl and movepun).
nextr
Keep incrementing carcol and calling "read" until something is found; if nothing is found return a 0, else calculate number of steps to get there, and return both the bits to punch and the number of steps.
nextl
similar to nextr
nsteps
calculate destination, and store it for purposes of being able to recover if something misses. Then accelerate using the 100-step acceleration sequence (or as much as is needed of it), coast (if more than 200 steps total), and then reverse the acceleration sequence to decelerate.
pun
output the bits to the solenoids; wait a while; turn off the solenoids so they can retract.