Text content (OCR)
, Oper-Apple
2)
‘Releasing the power to everyone.
November 1985
Vol. 1, No. 10
ISSN 0885-4017
single copy price: $2.00
photocopy charge per page: $0.25
Special Issue: Solving Printer Problems
lam sure a survey of Open-Apple readers would show that the vilest piece
of equipment that can be connected to a computer is a printer. While great
advances have been made in taming these noisy cantankerous beasts
during the last few years, it is quite clear from Open-Apple’s mail that
printers continue to plague many of you—programmers and non-
programmers alike.
Printers are trouble because “standards” for printers are weak or
nonexistent. The wide variety of equipment and software in use makes it
impossible to give specific “do this” answers to most printer-related
questions. The right answer depends on the exact eccentricities of the
equipment, software, and connections involved.
The bad news is that the only person who is in a position to solve YOUR
printer problems is YOU. You are the one who selected the particular
Combination of hardware and software you have — there may be fewer thana
hundred other systems exactly like yours in the world.
To solve printer problems, you have to learn what your printer's special
features are and how to turn them on and off. You have to learn about the
features your software has for dealing with printers. And you have to learn
about a mysterious creature that sits between your software and printer
passing information along, This creature is responsible for many printer-
d problems because it likes to snack ona character now and then or to.
burp v cxtra Characters into your manuscripts and reports.
The good news is that this month's Open-Apple is a special issue
dedicated to a detailed study of the printing process, which should give you
the background information you need to solve your own printer problems. In
this article we'll study the Apple-to-printer connection with reference to
several different types of printers, software packages, and other equipment.
Even though you may not have any of the exact items I'll use as examples,
you'll be able to learn a lot about your own systern by looking for similarities
and differences.
There are five points at w
trouble can occur when you are using your
computer's printer. Your softvare —for example, AppleWorks, Apple Writer,
or an Applesoft prograri— must be capable of sending a stream of
characters somewhere. This is the first place trouble can occur.
The next is that mysterious creature that eats ietters for breakfast. If you
have an Apple with slots, this creature is a plug-in interface card. !f you have
an Apple IIc, this creature is a built-in interface and connector. The IIc’s built-
* “in interface works exactly like a card in a slot (except that you can't remove it
“and throw it into the sea), so all further references to “interface cards” apply
toitas wel!
The third point of trouble is your printer itself. The fourth is the connection
“. —the wire and electronic signals—that run between your computer and
your printer. The fifth is the internal connection between your software and
your interface card,
The software-to-interface card connection
Let's begin our investigation with the connection between your software
and your interface card. This connection lies in the domain of the Apple's
operating system — usually DOS 3.3 or ProDOS. Under ProDOS, the active
system” program —Basic.system, for example—actuaily handles this
Connection. If you are using Applesoft, you tell DOS to send ail further output
to the printer with commands like these:
PREL (from the keyboard)
1000 PRINT CHRS(4);“PREI” (From inside a program)
This example assumes, of course, that the printer is connected to an
interface card in slot L This is the customary slot for printers, but both DOS
3.3 and ProDOS ailow you to put a printer in any slot. Other operating
systems don't have this flexibility.
The downside of this flexibility, however, is that you must always specify
which slot your printer is connected to. If you've used Apple Writer, you are
familiar with that program's "Print Destination” parameter on the (control-P)
“Print/Program Commands” menu. You use this parameter to tell the
program which slot your printer is in. Ifyou don’t set it correctly, Apple Writer
won't print. (If you set it to the nonexistent slot 8, incidentally, Apple Writer
will send the printed output to a disk file.)
With AppleWorks, you set the slot by choosing to “specify information
aboutyour printer’ from AppleWork’s “other activities” menu. Everytime you
add a printer or change printer specifications, AppleWorks asks you to
identify what type of printer you have, to type in a name for it, and to specify
which slot it’s connected to (you can choose to print-to-disk from this menu
also).
Applesoft, as mentioned earlier, uses the DOS PR# command to route a
program's output to a printer. Much confusion arises, however, because
“YES THEY ARE, DID YOU HAVE AN APPOINTMENT?”
oN
os Upen-Apple—
Applesoft itself has 4 version of the PR# command. When you enter PR# on
the keyboard, DOS sees it first and no harm occurs. Inside a program,
however, Basic sees PR* first if you neglect to use CHR$(4) (and strange
things begin to happen). PR# is an Applesoft command only because
Applesoft needs a way to tum on a printer in a DOS-less environment (all
there was when Applesoft was written). Avoid trouble and stick with the DOS
CHR$(4) version of PR# when writing Applesoft programs.
Typically, getting a printer turned on is easy. Getting it turned off again
sometimes causes problems, however. Early Apple manuals said to turn the:
printer off with a PR#0 command. Slot “zero” is where the Apple's own
keyboard and 40-column screen were “connected” on the Apple II and
I-Plus.
But then came 80-column cards and newer Apples. Eighty-column screens
found a home in slot 3. But ifa program tums the 80-column screen on with
a PR#S, then prints with a PR#1, how should it get back to the screen?
Ifyou use PR#0 for this, strange results usually occur. The problem is that
yotir Apple's built-in software thinks you want to use 40-column mode but
your hardware thinks you are still using 80-column mode (the only way to tell
it you're not is to type “escape control-Q” on the keyboard or to print
“control-U" to the screen.)
On the other hand, ifyou use PR#3 to return to the screen, the contents of
the screen will be erased. This may be satisfactory in some situations, but in
many others it is not at all the desired result.
The problem is that PR#S tells the operating system to initialize and start
using the 80-column card. Itis this initialization that erases the screen. Since
the card has already been initialized, this step can be skipped with no ill
effects. To do it, you need to tell the operating system to connect into the
80-column card at address $C307, rather than the usual $C300. As
mentioned in our January issue (page 6), with DOS 3.3 you do it like this:
POKE 54,7 : POKE 55,195 : CALL 1002 : REM DOS 3.3 only
With ProDOS, on the other hand, you have two options. Basic.system
allows an a(ddress) parameter to be used with the PR# and IN# commands.
The parameter can be used in two different ways. If you give no slot number,
BaSicsystem connects the output stream to the address you give. Alternatively,
if you do give a slot number, Basic.system permanently changes the
connection address for that slot, but does not actually change the connection.
Thus, with ProDOS you can do it this way:
100 PRINT CHRS(4);"PRE3 2 REM First tine 80)
110 PRINT CHRS(4);“PRH3.ASCI27” : REM permanently c
I sceer is turned on
-ge conreczion acc-ess
snore progras
S00 PRINT CHRS(4);“PREL” —: REM turn an printer
wna more program
600 PRINT CHRS(4);"PRHI” : REM because of Lire 119, this ccnnects at $0307
You could also make line 110 PR#0,A$C307 and put a PR#0 in line 600.
Then PR#3 would coldstart the 80-column card and PR#0 would warmstart
it. The other alternative for returning to an unmodified 80-column screen
with Basic.system is like this:
$90 PRINT C=RS(4;"PRE1” = REM turn on
ssmere progras
200 PRINT CARS(4):"PRERSCIO7 + REM vo slo a.seer gies
The interface card-to-printer connection
Now let's look at the connection between your interface card and your
printer. It consists of a cable and lots of black-box magic.
‘There are two very different electronic techniques commonly used in the
Apple Il world to connect printers to computers. These two types of
‘imterfaces” are called serial and parallel. When you buy a printer, itwill come
vith one type of interface or the other. You have to specify which type you
want. (Some more expensive printers come with both.) Likewise, when you
buy a printer interface card for an Apple slot, you have to specify whether you
want parallel or serial. Obviously, your printer and interface card must match.
You can’t expect anything from a serial to parallel connection other than,
Perhaps, a few sparks.
To understand the difference between the two it's necessary to remember
that the characters that appear on your printer exist inside your computer as
8-bit binary numbers. All the commonly-used alpha-numeric characters
were long ago assigned binary values by an agreement called the American
Standard Code for Information Interchange, or ASCII (say ask’-ee). The
Vol. 1 No. 10
binary number 0100 0001 for example (decimal 65, hex $41), is the code for
the capital letter A.
The parallel interface. Back when minicomputers were the rage, a
company called Centronics was a big printer manufacturer. The engineers at
Centronics designed a simple, inexpensive method to wire their printers to
computers. The company was so successful that computer manufacturers
began to build that kind of interface into their machines. After that other
printer manufacturers began building it into their printers. And that’s where
the “Centronics parallel interface” came from. Perhaps because its details
have never been blessed by an industry committee, it is the most standard
“standard” in all of computerdom.
The Centronics interface uses eight wires to send all eight bits of a
character at one time (in parallel). When a character is active on the eight
wires, another wire is used to send a signal called strobe to the printer. This
tells the printer that the character is waiting on the eight data lines. After the
printer has accepted the data, it sends a return sigral, called acknowledge,
‘on yet another wire. The computer then knows it can go on to the next
character. This strobe/acknowledge protocol is an example of hardware
handshaking.
The only problem with the Centronics interface is that it can get kind of
expensive to use that many wires over long distances. Can you imagine the
expense of having to use 10 phone lines to call a local bulletin board?
Characters that must travel, especially over the phone, are typically broken
into bits and sent one at a time over a single data line. This is how a serial
interface works.
The serial interface. Just as we have a standard parallel interface, there
is also a “standard” serial interface. This baby was developed back in the
dinosaur age before electrons tickled the first microprocessor. At that time
you used your dinosaur by calling it on the phone using a modem and a
“data terminal” (usually a teletype machine). The RS-232-C standard
specifies how the modems and data terminals were to be connected.
The standard shows as much forethought as a kid gives to sticking a frog
in his back pocket when he hears mom coming. The engineers decided to
put standard plugs into all modems and data terminals. Even though a serial
connection really requires only two wires (a data line and a common
ground), the RS-232 engineers added a few more wires so that printers and
data terminals could get their acts together. They put in separate data lines
in each direction. They added an “I'm OK” line in each direction. They added
aline a modem uses to tell a data terminal the phone is ringing; a line a data
terminal uses to tell the modem to answer it; a line a modem uses to tell a
data terminal it has...in short, the official RS-232 connector ended up with
25 pins and a wire for every purpose.
But the worst part is that the two connectors aren't the same. In order to
keep things “simple”, the RS-252 engineers decided the wires inside their
cable would run straight from pin to pin. Thus pin one runs to pin one, pin
two to pin two, and so on. The implication of a scheme like this is that ifone of
the devices uses pin 3 to send data, the other device must use pin 3 to
receive data. So, RS-232 modem connectors send data on pin 3; RS-232
data-terminal connectors send data on pin 2. And modems receive data on
pin 2 (where data terminals send), while data terminals receive data on pin 3
(where modems send),
Now putyour Apple between the modem and data terminal (printer). When
talking to a modem, the Apple has to send data on pin 2. When talking to a
printer, the Apple has to send data on pin 3. It would have been much
simplier if RS-232 had said that all connectors should have the same pin
format. The wires would not run from like-numbered pin to like-numbered
pin, but all cables and all connectors would be the same. Now we have
modem-type connectors and data-terminal-type connectors (neither of
which logically belongs on a computer) and we have regular wired-straight-
across cables for linking connectors of opposite types and cross-wired
cables for linking connectors of the same type. The latter are called “null
modem’ cables, a name which doesn’t help a bit in keeping this all straight.
But wait. Keeping the wires from getting crossed is only the beginning of
making an RS-232 connection work. The “standard” does not specify the
speed atwhich bits will be sent, the format the bits will appear in (how do you
tell where one character ends and the next begins?), or a protocol for telling
the sending device to stop and wait a minute. It’s up to you to getyour devices
to agree on all this other stuff.
The parallel standard, on the other hand, handles all these things
automatically. Consequently, it is a much easier interface to use. Easier,
cheaper, and printers within a few feet of the computer meant that the
parallel interface has been the dominant type in the Apple world for years,
November 1985
. 4
particularly with the dot-matrix Printers Centronjcs made famous and Japan
made affordable.
Then came the Macintosh and the Apple llc. Apple built stripped-down |
Serial interfaces into these two products—apparently because parallel
connectors were simply too big to fit on the machines. The Macintosh uses a
nine-pin serial connector and the Apple IIc uses a five-pin connector, (Apple
llc cables usually have a special five-pin plug on the computer end and a
gauvare 25-pin RS-232 plug on the other —with 20 pins left dangling in mid-
air).
Since releasing these two computers, Apple has switched all of its
peripheral products to the serial interface. Since you can’t use a Parallel
device with an Apple llc (except by adding a serial-to-parallel black box
‘petween the computer and the device), the serial interface is now being used
much more widely in the Apple community. a
The nitty-gritty of the RS-232 serial interface
Ifyou don’t have a serial interface, or if your printer seems to work just fine
except for special features, | encourage you to skip this section. It explains
what to consider when you are hooking up a serial device for the first time.
Once you have a serial connection that works this information is just
needless clutter for your mind.
No serial device will work correctly until you figure out whether the
connectors you'll be plugging your cable into are modem-type connectors or
data terminal-type (printer) connectors; until a common data transmission
speed or baud rate is selected; until a common data format and Parity are
selected; and until a common handshaking protocolis selected.
The cable. You can usually assume a serial printer has a printer-type
RS-232 connector. You can assume nearly nothing about the serial
connector on your computer. The serial interface card Apple itself sells,
which is known as the Super Serial Card (now you know what those cryptic
references in Apple manuals to the “SSC” mean), has a thing called a jumper
block on it so you can (manually) make its connector look like either type.
When the little triangle on the jumper block points to the word “modem”, the
card's connector is configured like a printer's; when the triangle points to
“terminal”, the card's connector is configured like a modem’s. This makes
9 sense if you consider it backwards,
* Ifyou have an Apple IIc, of course, your connectors aren't exactly RS-232
anyhow. At least they are both wired the same way. If you are attaching a
device with a printer-type connector, simply use what your dealer calls an
“Apple IIc printer cable”. If, on the other hand, your device has a modem-type
connector, get an “Apple IIc modem cable”. Note that the two cables are not
interchangable, though the differences are all inside where you can't
possibly see them.
If you have an Apple with slots, one good alternative is to buy a serial
interface card specifically designed to work with printers. The correct cable is
usually in the box with such cards and your problems are solved.
Ifyou have a Super Serial Card, either put on your thinking cap or just start
trying all the possible combinations of standard cables, null-modem cables,
and jumper block positions. Eventually you will hit the right one. Unfortunately,
however, uniess you have correctly guessed the right baud rate, data format,
and handshaking protocol, your prinier still won't work and you may not
even know you've gotten lucky.
The baud rate. The term baud rate refers to how fast the bits are coming
down the line. Both the Super Serial Card and the Apple IIc can handle 15
different baud rates varying from a very slow 50 bits per second toa very fast
19,200 bits per second. Most printers also support several different baud
. +Tates. If you choose a very siow rate, your printer may not print as fast as
+ possible because of the slow character flow. If you use a very high baud rate,
on the other hand, some sort of handshaking protocol will be required to
, Keep the computer from sending characters faster than the printer can print
a, them.
The Apple llc’s printer port is automatically set to 9,600 baud when the
computer is turned on. This is a nice fast rate and is a good one to set your
equipment to ifyou have several choices and can't decide which to use. Ifyou
have a printer or other device that doesn’t support 9,600 baud, then you
have to tell the IIc to use another speed. You do this by sending special
commands to the IIc’s built-in “interface card”. We'll look at this in more
detail later.
Likewise, you can send commands to the Super Serial Card. But you can
also communicate with this card and with printers that support several baud
rates through an infernal contraption known as a dip switch. These little
boxes of 4 or 8 switches are built into the most inaccessibie area of the
Open-Apple 83
device you want to communicate with. (You have to “dip” your fingers into the
electrical soup to use them, hence the name.) They are specially designed so
that each individual switch is too small to see, yet flipping or sliding it
requires the horsepower ofa tow truck. . ;
The Super Serial Card manual recommends using the tip of a ballpoint
pen to flip dip switches; the Imagewriter manual absolutely forbids this
(‘they can leave foreign matter behind, which eventually gets into the
switch”) and recommends a toothpick instead. Take your pick.
Up, down, right, and left have little meaning when dealing with dip switches.
Instead, a secret code is used to keep the enemy confused. Since we're all
allies here | can give you the key: ON, 1. and CLOSED all mean the same thing.
Likewise, OFF, 0, and OPEN have the same meaning. Usually the switches
themselves are marked OFF-ON or 0-1 while the manuals talk about OPEN
and CLOSE. Other combinations are also used to keep the enemy thoroughly
confused. Some say the system works too well, but we have our priorities.
This next part is going to be the hardest for some of you to understand, so
prepare yourselves. In order to figure out how to set the dip switches on your
printer and on your interface card so that they agree on a certain baud rate,
you will have to refer to the manuals that came with your equipment. Look
in the index under “switches, setting” or “dip switch settings” or “setting dip
switches”. Chances are you won't find anything, but it’s worth a try. Many
manuals include a reference card that shows the possible settings.
In addition to baud rate, dip switches on printers also control other
aspects of a printer's operation. More about this later.
The data format. Next you have to figure out which data format you're
going to use. Imagine yourself sitting at the end of a serial connection
watching the bits drop off the line. If your job was to convert these bits into
characters, how would you tell where one character stopped and the next
began? Unless you know the data format, friends, you can’t
When characters are sent serially, bits that are always ON (or 1) are inserted
between each character. These bits are sometimes called stop bits. The rest
of the time they are called start bits. Apple's Imagewriter manual says its data
format includes one start bit and one stop bit. Since the “stop” bit of one
character and the “start” bit of the next are always adjacent to each other, this
is the same thing as two start bits and no stop bits or no start bits and two
stop bits. | sure hope the enemy is as confused about this one as we are.
In between the start/stop bit or bits you will always find some data bits.
There can be as few as five or as many as eight of these. You may also find
something called a parity bit. The parity bit is an optional, extra bit, and no
two descriptions I've read of how it works have been the same. Fortunately,
most devices don’t use it.
In Appendix F, “Interface Specifications”, the Imagewriter manual says in
small print that it expects a data format of 1 start bit, 7 or 8 data bits, no parity
bits, and 1 stop bit. In Chapter 5, in a section called “Data Byte Length”, the
manual more specifically says that the printer always expects 8 data bits, but
a dip switch controls whether the eighth one is recognized or ignored, These
are the only two places in the Imagewriter’s manual where the data formats
referred to, and only the incomplete latter section is indexed.
Printers are notorious for poor documentation. Even though the Imagewriter
manual carefully hides this rather essential data-format information, it is by
far the best printer manual I've ever seen. (In the October issue | said (page
78) that Apple's printer documentation doesn’t show you how to download
character sets; in fact, the Imagewriter manual has avery nice section on this.
Apple's earlier Dot Matrix Printer manual, which is an excellent example of
pap, didn’t even mention the feature.) My point is that if the best manual
around hides the data format in an appendix and even then gives a sloppy,
inexact description of it, you can understand why people have problems with
rinters.
The default data format of the Apple lic’s printer port is listed in that
computer's reference manual as 8 data bits, no parity bits, and 2 stop bits.
Though the description is slightly different, this is electonically the same as
what the Imagewriter expects. You will often see sucha data format written as,
“8N2."
The handshake. Now we're all done except for the handshaking. Early
printers didn’t handshake. You had to send characters to them at slow baud
rates so that they could keep up. Usually the sending device had to build ina
delay after a carriage retum to give the printer time to move back to the left
edge of the paper.
Nowadays, most printers have a small or large amount of RAM memon; to
store the last bunch of characters transmitted, This allows the printer to
operate as fast as possible. At high baud rates, however, the RAM will scon fill
up and characters will spill out on the floor unless the printer has some
84 Open-Apple
protocol for telling the computer to STOP A MINUTE. The primary symptoms
of data overflow are characters missing from your manuscript and other
garbage.
There are two primary protocols used for handshaking in the Apple world.
One, the data terminal ready protocol, is a hardware handshake. The other,
the XON-XOFF protocol, is a software handshake,
Under the data terminal ready protocol, the printer's “I'm OK” (or select)
line in the RS-232 interface is monitored. When the printer stops saying it's
OK, the computer stops sending characters. Both the Apple llc and the
Super Serial Card support this protocol.
Under the XON-XOFF protocol, which is also known as the DC3-DC1
protocol (DC means “device control” in the arcane world of ASCII control
codes), the printer sends a special XOFF character (control-S) when it wants
the-computer to stop sending, and an XON character (control-Q) when the
computer can resume sending. If you've used a modem much, you've
probably already discovered that you can usually type these two characters
to Reep incoming messages from scrolling off your screen before you read
them. Showing no favoritism, Apple uses this protocol on the Macintosh. The
Super Serial Card can use it, but has to be commanded to. The Apple IIc’s
built-in interface doesn’t support it.
The Imagewriter supports both protocols; you tell it which to use by setting
a dip switch. If your printer is set up for one protocol and the computer for
another, one of two things will happen: nothing (the printer won't work atall),
or the printer will work fine for awhile and then start skipping characters or
printing garbage.
Apple's Laserwriter printer supports only the XON-XOFF protocol (and
AppleTalk). Since the Apple IIc supports only the data terminal ready
protocol, you shouldn't try to hook the two together unless you are prepared
to try some special tricks such as using a slower-than-normal baud rate,
longer-than-normal carriage return delays, or a special printer driver.
Printer peculiarities and problems
Now that we have our computer and printer connected, let's see how a
printer works. The ASCII character set officially consists of 128 numerical
codes. Of these, 33 are unprintable control codes and 95 are printable
characters. The printable characters include 26 capital letters, 26 small
letters, 10 digits, 32 symbols and punctuation marks (some of these are
used for accented characters in international character sets), and the space.
All 128 of these codes can be represented with seven bits. Printers with a
data format of eight bits (this would include all parallel printers) use the
eighth bit in a variety of ways. We will discuss the problems this causes in a
moment
Each of the 33 ASCII control codes is supposed to have a standard use. For
example, control-M is universally recognized as a carriage return. Some
other commonly used control characters are control-G, bell (on printers that
have bells or buzzers}; control-H, backspace; control, horizontal tab;
control, line feed; control, vertical tab; and control-L, form feed. Not all
printers recognize all of these codes, however, and some control codes are
used in unique ways by some printers.
Aline feed tells the printer to advance the paper one line. A form feed tells
it to advance to the beginning of the next sheet.
Teletype machines, the first kind of printer used with computers, expected
both a carriage return and aline feed at the end of each line. If only a carriage
retum was received, the paper did not advance and the next line was printed
over the first. If only a line feed was received, the paper advanced but printing
continued at the same right-left position on the line.
Typewriters, on the other hand, advance the paper and return to the left
margin in response to a carriage return. The net result of all this is that some
printers advance the paper when they see a carriage return code, some
don't, and some, like the Imagewriter, have a dip switch that lets you decide
what will happen.
4n addition to control codes, most printers also react to certain “escape
Sequences.” These are commands that begin with an escape character
(control-(, decimal 27, hex $1B). For example, the two-character sequence
ESC E tells an Imagewriter to switch to Elite (12-characters-per-inch) type.
Modern printers have an incredible number of features, all of which are
turned on and off with either an escape sequence or one of the 33 ASCII
Control codes. The only way to find out what features your printer has and
how to turn them on and off is by reading the machine’s manual. There are
no standard escape sequences.
What kind of features can you expect to find? The Imagewriter has six
different character widths available. Each of these can be printed double-
Vol. 1, No. 10
wide, which makes a total of 12 different widths that range from a big 4.5
characters-per-inch to a tiny 17 characters-per-inch. The Imagewriter also
has two proportional character sets (the letters are not all the same width)
and the ability to accept a custom set, which can also be proportional.
The Imagewriter includes commands for setting a left margin, for setting
and clearing horizontal and vertical tabs, and for selecting how much paper
is advanced by a line feed (in 1/144 of an inch increments), It will print in
bold, it will underline, it allows you to reverse the direction of line feeds (this
means it can roll the paper backwards), and it will print graphics. {t has
commands you can use to override the dip switch settings. You can choose
which of seven national character sets ic will use, You can choose to put a
slash through the zero or leave it out
The newest version of the Imagewriter will print in three different quality/
speed combinations and can do graphics in color.
The most important parts of a printer's manual are the tables that show
the meaning of the various dip switch settings, control codes, and escape
sequences. | recommend you flip through your manual until you find these
tables, photocopy them, and hang them on the wall next to your Beagle Bros
Peeks, Pokes and Pointers chart.
Commercial programmers often need to write software that will work with
several different types of printers. The chaos of printer commands makes
this very difficult. Of significant help is a new book called the Programmers’
Handbook of Computer Printer Commands. It's published by Cardinal Point
(P.O. Box 596, Ellettsville, Ind. 47429 812-876-7811 $39.95) and includes
command tables for all the printers commonly used with Apple Ils (printers
from Apple, Brother, C. Itoh, Diablo, Epson, Juki, NEC, Okidata, Panasonic,
Qume, Silver-Reed, Star Micronics, and 31 other companies). This book is
nota suitable replacement for the printer manual your dog ate, but it is an
excellentreference for programmers who need to knowthe command codes
ofa variety of printers.
Interface card peculiarities and problems
Now let's follow the printer cable back to the interface card to see how this
strange creature operates. The typical Apple Il interface card not only tries to
be a hardware device that passes electronic signals between your computer
and your printer, but also a more-or-less intellgent software device with the
ability to format the data for you as it passes by. It is this “intelligence” that
causes the most intractable printer problems.
Probably the most successful printer interface card for the Apple II has
been the Grappler-Plus, which was designed by Milo Street (now of Street
Electronics) and is produced by Orange Micro (3150 East La Palma, Suite G,
Anaheim, Calif. 92806). The big seller is a parallel interface card; Orange
Micro has also recently released a serial version.
The Grappler became famous because of a single strength—it could
capture an image from the Apple II's high-resolution graphic screen and
print it on a wide variety of dot matrix printers. Nowadays, many cards can do
this. Some, suchas the Fingerprint and Print-It! cards mentioned here in July
and September (pages 53-54 and 69), have the additional feature of being
able to print at any time —even from inside a copy-protected program.
To print graphics with a Grappler, you must first tell the card what kind of
printer you have by setting some dip switches. Then you turn the interface on
with a PR#1 or whatever, send a control code that tells the interface card that
what follows is a command, and send a series of single letter commands.
The Grappler includes commands for printing a mixed or full-screen
graphic from graphics page one or two, in standard or double size, in inverse
or normal, horizontally or vertically. The control code that awakens the
Grappler and all the other printer interfaces that | know about is controll.
Sending the character string “control-I GDIR2" to the Grappler tells it to print
a G{raphic) D(ouble-size), in I(nverse), R(otated) from (page) 2 of your
computer.
In addition to its graphics commands, the Grappler has commands for
setting a left margin, a line length, for appending line feeds onto carriage
returns, for dumping the text screen onto the printer, and for clearing the
eighth data bit to zero. Like the graphics commands, these commands must
begin with a control-I. The character string “control-! 12L” tells the Grappler
to set a left margin of 12. After this command is executed the Grappler will
send 12 space-characters after every carriage retum, thus creating a left
margin of 12.
There are several major areas in which printer interface cards vary. Some
of these differences aren't discussed in manuals and are nearly impossible
to discover without testing and experimenting with each card individually:
For example, some control-| commands on some cards require a return at
November 1985
ASCII Control Code Rosetta Stone
type this —--—-numerical vatues-—-----_----abbreviation and usage—
jow-value high-value
HRS hex dec hex
control-@ ° $00 128 $80 NUL null
control-A. 1 tol 129 «$81 ‘SOH _ start of heading
control-B 2 $02 130 $82.—=STX_startof text
controi-C 3 $03 131 $83. ETX = end of text
control-D 4 $04 132 $84 BOT end of transmission
control-E 5 $05 133. $85 ENQ. enquiry
control-F 6 $06 134 $86 ACK acknowledge
atrol-G 3 A $07 135. $87 BEL bell
control-H é $06 136 $86 BS ‘backspace
oontrol-1 9. $09 137 $89. HT tab (horizontal)
‘pntrol-j 10 $0A 138 $8A oF Unefeed
control-K 11 SOB 139 $8B VT vertical tab
control-L 12 $0 140 $8C FF form feed
control-M 13° $0D 141 $aD a carriage return
control-N. 14 SOE 142 $8E so ‘shift out
control-O 15 $0F 143 $8F SI shift in
control-P 16 $10 144 $90 DLE data link escape
control-Q 17) $11 145 $91 DC1 device control-1
control-R 18 $12 146 $92 DC2 device control-2
control-S 19 $13 147 $93 C3 device control-3,
control-T 20 $14 148 $94 C4 device control-4
control-U_ 21 $15 149 $95 NAK negative acknowledge
control-V 22 $16 = 150 $96 «= STN synchronous idle
control-W 23° «$17 151 $97 ETB end of transmission block
control-K 24 $18 152 $96. CAN. cancel
control-Y 25° $19 153. $99 EM endof medium
control-2 26 SIA 154 $9A ‘SUB substitute
control-[ 27° ($iB 155 $9B ESC escape
qatrol-\ 28 «SIC 156 $9C FS file separator
Control-} 29 $ID = 157 $9 GS_—group separator
control-" 300 «SIE 158 $9E RS record separator
control-_ 31 SIF 159 $9F us unit separator
Celete 127. $7F 255 FF DEL delete
the end of them. Other commands, sometimes on the same card, don’t, and
can be strung together without a return. Commands that require a return
usually eat it rather than pass it though to the printer. Commands that don’t
require returns, on the other hand, neither look for nor eat them.
The consequence of all this is that programs requiring line-by-line paper
control must often be written and tested for a specific interface card.
Changing cards or attempting to run the program on a computer with
another card often has surprising and disappointing results. If a program
uses carriage returns, changing cards can cause too much paper to be
advanced. If a program doesn’t use carriage retums, changing cards can
cause commands to go unrecognized or totaily unexpected commands to
be executed.
All cards have the ability to send your characters to the screen as well as
the printer. Some of them start with this feature off, however, and some with
this feature on. Apple's Super Serial Card has dip switches that control how it
starts up. Applesoft programmers prefer to have “video” on. Ifyou turnona
printer from the keyboard with a PR#1 and video is off, your computer will
appear to die. With most printers, further keystrokes won't show up on either
your screen or your printer—until you press retum, when the printer will
« Spring to life. With video on, on the other hand, the characters you type will
eassuringly appear on your screen.
Other than Applesoft programmers, however, no one wants video on. When
a program such as AppleWorks or Apple Writer prints, this “feature” causes
“any instructions on the screen to be overwritten with mish-mash. And the
open-apple-H screen-dump command in AppleWorks doesn't work well
when an interface card is putting characters on the screen as fast as
AppleWorks can dump them.
With Apple's own interface cards, the command for turning video off is
“control-I 80N.” (Again, Apple shows no partiality— the Apple IIc comes up
with video off, the Super Serial Card comes up with what its dip switches say,
and the Apple Parallel Card comes up on with video on. All third-party
interface cards mimic one or the other of these standards.) Programmers
who aren’t aware that Apple's share of the interface card market is relatively
small, including the wizards at Apple itself, hard wire the “control-l 80N”
command into their programs. Consequently, those of us with non-Apple
x -_ Open-Apple
interface cards often have printing difficulties with such software.
On the Grappler, “control-l 80N” will, indeed, tum off video (some of the
time—more on when it won't in a moment). However, this command also
tells the Grappler and most other cards to send a carriage return at least
every 80 characters. The Grappler will begin to search for carriage returns in
the material being printed and if 80 characters go by without one, it will add
one by its own authority. When printing on 8-inch printers at 10 characters
per inch, this doesn’t cause problems, because your software will provide
enough carriage retums to prevent the Grappler from interfering, If you
switch to narrow characters, however, so you can print a spreadsheet at 136
characters across, you will suddenly have strange problems. The lines will
“wrap” at the 80th column and neither your printer nor your software
manufacturer will know why.
Nowadays, when almost all software can be depended upon to send
carriage returns when necessary, interface cards should mind their own
business. You tell the Grappler to mind its own business with the command
“control-l ON” (that’s zero-N, not ON). This tells the Grappler to turn off video
and to forget about sending carriage returns. Unfortunately, other cards have
other commands for this. “Control-! ON” means nothing to a Super Serial
Card or to an Apple IIc.
Unlike most other cards, the Super Serial Card doesn’t send carriage
returns unless you actually tell it to with a “control-| C’ command. The Apple
lIc, on the other hand, always sends carriage returns unless you tell it to
ignore the data stream completely with a “control-l Z” command. (You can
also poke a zero into byte 1400+slot, which is 1401 ona llc, to stop carriage
returns. This trick also works on a Super Serial Card and on a Grappler. The
llc manual says Apple guarantees this poke will always work with its
equipment. | don’t know how many third-party interface cards support it,
however.)
Another interesting feature of the Grappler is that it expects incoming data
to be in the high-value ASCII format. This means thatit expects the eighth bit
of each character to be set to one. This is how Applesoft itself always sends
data. The Grappler has a dip switch you can set to force this eighth bit to zero
when it gets sent on to a printer or to allow bit-clearing to be done under
program control. (Under program control, the eighth bit is cleared unless
you command the Grappler to let it pass through unmolested.)
Unfortunately, Apple’s own parallel card doesn’t have any eighth-bit
controls. It always passes the eighth bit on just as it gets it. This means that
printers that use the eighth bit for special purposes go into their special
purposes when you use Apple’s parallel card and Applesoft in combination.
Epson owners, for example, see special graphics characters where they
expect to see the grocery list or whatever.
To get around this problem, lots of commercial software bends the
Applesoft standard and transmits characters to be printed with the eighth bit
already cleared to zero. However, control-Is sent to the Grappler with the
eighth bit cleared pass through unrecognized. This is why many of you find
“80N" at the top of reports and documents printed by programs such as
AppleWorks. Not only do you get that 80N junk at the top ofall your printouts,
the Grappler doesn’t see the command to turn video off, so your screen turns
to trash while you are printing,
There is usually no easy solution for this kind of problem. (In AppleWorks,
however, you can now set the interface card command string to “control-I
ON” and the Grappler will recognize it.) It would be nice if software allowed
you to specify whether the eighth bit should be set or clear when printing,
but, on the other hand, having to specify such stuff can be pretty scary for new
users. The only program | know of that allows this is ASCII Express, a
communications program with so many options it sometimes causes
paralysis-of- the-mind even in certified hackers.
However, it’s clear that commercial-grade Apple II software must at least
allow the user to specify the codes that should be sent to the interface card —
alesson Apple finally took to heart in version 1.2 of AppleWorks (free updates
are available from your dealer if you have an older version). Interface cards,
on the other hand, should recognize ASCII control characters whether the
eighth bit is on or off, rather than suffering the 80N handicap of the Grappler.
The commands interface cards have for formatting output are much more
trouble than they're worth. Today's printers and most software already
handle line length, page length, and margins just fine. Enabling the card to
do this stuff too is triple redundancy. (Note that if you tell your printer you
wanta left margin of 10, your interface card you wanta left margin of 10, and
your software you want a left margin of 10, you will get a left margin of 30.}
The problem is that these output-formatting features can add all kinds of
extra characters to what you are sending to your printer. If you are
85
Open-Apple
” transmitting a stream of characters for creating graphics, for example; most
printers.want one byte for each eight dot positions. A complete graphic
consists of thousands of bytes of data without any carriage retums at all. But
some interface cards are quite content to lace your graphic with carriage
retums every 80 bytes. If you are trying to print a graphic and a blip repeats
itself at regular intervals throughout your picture, this is what's happening to
Qu.
In addition to the problem of added characters, missing characters can
drive you nuts quickly, too. Since control-I is used as the interface card
command code, you can never send it directly to a printer. This is a pain in
the dot matrix, because most printers use control-| as the control code for
tabbing,
‘The recommended way to solve this problem is to change the card’s
command code. With all the cards | know about you do this by sending a
control-| followed by any control character. (Note that all other interface card
commands consist of control-I followed by a standard, usually capital,
letter) | use printer tabs a lot around here; “control-| control-Z” changes the
Grappler command code to control-Z, which is a control code none of my
equipment needs for anything else.
However, even this technique has problems. Some cards, like the Grappler,
change the command code back to control-I automatically the next time the
card is started with a PR# command. Other cards, like Apple’s Super Serial
Card, leave it where you set it. The only sure way to avoid problems when
using a program with several different cards is to change the command code
back to control-| before tuming the printer off.
Another problem with kidnapped characters occurs when youare printing
graphics. With the Grapplerand many other cards, the command code has to
be set to something, and if this code accidentally appears in your graphic
character stream the card is going to eat it (and probably one or more of the
following characters as well),
Apple's IIcand Super Serial Card get around both the added character and
missing character problems with a “control-I Z” (zap) command. This tells
the card to stop formatting output or otherwise messing with the character
stream completely. After a zap command you can’t send any command to
the interface card, however, without starting over with a PR* command. The
Grappler doesn’t have a zap command or any other way to prevent character
kidnapping that | know of, short of writing a special assembly language
“driver.” Of course, since the Grappler’s purpose in life is to print graphics for
you, perhaps this isn’t a problem.
To live happily with YOUR printer interface card, you have to dive into the
manual and determine the default characteristics it has when a PR#
commanzd is issued. If you have choices, via dip switches or otherwise, you
probably want the card to come up with all special features, including video
and carriage return insertion, turned off. Ifit insists on turning somethingon,
Vol. 1, No. 10
you have to figure out the command that will turn that feature off, tape it to
your forehead, and use it as a part of your “printer set-up string” in all
software that asks for such a thing (and all good software should).
In addition to commands for formatting output, serial cards have
commands for setting baud rates, data formats, parity, handshake protocol,
and all that fun stuff. However, programmers should note that every time a
PR# command is used to tum on an interface card, the card may revert to its
default characteristics —some do, some don’t With the Apple IIc, (but not
with the Super Serial Card) this includes the default baud rate, data format,
etc. Be prepared to reset this stuff every time you use the PR# command.
(Open-Apple got this detail wrong in the September issue. Turn to page 73
and cross out the words “or with control-A commands” in the third italicized
Paragraph of column two.)
With a Super Serial Card, of course, you can also use dip switches to
configure the card so its defaults match your equipment. Apple IIc owners
have probably noticed, however, that their machines don’t have any dip
switches. On the IIc, a PR#1 command always causes reversion to the default
8N2 data format at 9600 baud, video off, line feeds added to carriage retums,
and carriage returns inserted every 80 characters.
Apple lc owners have also probably noticed that the manual that comes
with thatcomputer gives absolutely no information about howto reconfigure
the machine's serial ports from inside a program. (The information is in the
Apple IIc Reference Manual, a new version of which was to be available soon
from Addison-Wesley Publishing Co at 800-238-3801, according to our April
issue, page 26. | called that number in mid-October and was told the book
won't be ready until at least late November, emphasis Addison-Wesley's.)
You can change the lic's serial port defaults, however, by using the System
Utilities disk that comes with the IIc. After changing the defaults, the PR#1
command will use the new defaults until you turn the computer off. Since itis
painful to have to use the System Utilites disk to set these defaults every time
you turn the computer on, here’s a trick you can use. The System Utilities
disk stores the default PR* formats for the two IIc serial ports in auxiliary
memory screen holes. The IIc firmware retrieves them from there whenever
a port is turned on. Bytes 1144 through 1147 hold the defaults for port 1,
bytes 1148 through 1151 the defaults for port 2.
Use the System Utilities disk to get these defaults set up the way you want
them. Then use the following program to retrieve what the System Utilities
disk has stored in auxiliary memory:
100 AOR=1144 : REM use 1148 for port 2
110 IF PEEK(49176)>127 THEN $80=: us of SOSTORE suitch
120 POKE 49153,0 : REM “turn on BOSTORE
130 POKE 49237,0 : REM turn on auxiliary menory
140 FOR [0 TO 3: V{(L) = PEEK(ADR+I) = NEXT
including the Juki, have.
same width—what most printers and typewriters,
unless [turn it offand on again. Then itwil! printa 2 or
a 12 at the left margin and continues only to freeze
Ask
(or tell)
Uncle
DOS
Proportional printing
My Juki 6100 printer has the capability to do
proportional printing, Does anyone know how to do
this using Apple Writer Ile?
Paul Werner
New Orleans, La.
The Juki doesn’t do “proportional printing” in the
sense that the Imagewriter does — it doesn't have a
typeface in which the characters are all different
widths. Such typefaces havea much different appear-
ance than faces in which ail the characters are the
Either a true proportional face or a standard face
can be used with either a ragged right margin or with
“full” or “fill” justification, in which both the left and
right margins are straight. Full justification requires
that the spaces between words (and in some cases,
between letters) vary in size. Apple Writer can do
full justification but it can only put whole space-
characters between words. Some of the words ona
line will have one space between them, some two,
some even three or more. This kind of justification
always looks toothy to my eye; | much prefer a
ragged right margin, but thisis a matter of taste.
What the Juki does have is a variable-width space
character. Using it you can avoid the toothy look by
making all the spaces on a line the same size. As it
comes from the factory, Apple Writer doesn’t support
this feature, however. If anyone has figured out how
to do it, it would be Don Lancaster, whose address
and phone number are embedded elsewhere in this:
issue.
Hand feeding linefeeds
| am using an Apple tle with a Grappler-Plus, a
Printer Optimizer, and Qume Sprint 5 printer. When I
printa document from AppleWorks my printer seems
to freeze at the end of a line and | can’t bring it up
again.
AppleWorks also keeps asking me to insert the
program disk in drive 1 but looks for it only in drive 2.
Whyis that?
| also use ASCII Express to access medical data
bases and print then with an Apple Scribe printer.
The data bases don't send a line feed after carriage
returns, but the word processor | use with this printer
does, so lam constantly changing the dip switches in
the printer.
| would like to send a control code from either
program to change the printer. However, the control
code for this function on the Scribe includes both
high-value ASCII and low-value ASCII nulls (control-
®). The Scribe manual says the needed control code
can't be sent from Applesoft. How the hex am |
supposed to enter these codes then?
Roberto Restrepo
Willow Park, Texas
Your problem with the Qume and AppleWorks is
beyond me. I don’t even know what a Printer Optimizer
is, But the reason AppleWorks keeps looking for the
program disk in drive 2 is that you have named your
data disk “/APPLEWORKS”—the same name the
program disk has. Use the Basic.system RENAME
*)
November 1985
150 POKE 49236, : REN revert to main aemory
160 IF S80=0 THEN POKE 49152,@ : REM Fix STORESO if necessary
170 FOR T= TO 3: PRINT “BYTE “;AOR+I;7 HOLOS “:V(1) NEXT
180 €NO
Once you know what these bytes hold when you have the default
characteristics set the way you want them, all you have to do from inside a
program is poke those values back into auxiliary memory before turning on
the port. You do that like this:
110 IF PEEK(49176)>127 THEN S8O=1 : REM renenber status of BOSTORE switch
120 POKE 49153,0 : REM turn on BOSTORE
130 POKE 45237,0 + REM turn on auxiliary memory
40 POKE 144,77 : REM replace 77 with the values you Found
M1 POKE 1145.77 : REM using the previous program.
142 POKE 146,77 : REM use 1148-1151 for port 2.
143 POKE 147,77
150 POKE 49236,0 : REM revert to sain cenory
160 IF S80=0 THEN POKE 49152,0 : REM Fix STORES® if necessary
For more information on how this trick works, see Jack Higbie’s “Any Port
in a Storm’ in the July 1985 inCider, pages 28-36.
Software peculiarities and problems
Assume for the moment that your interface card and printer have excellent
instruction manuals and that you have read and understood them. It's all
been a waste of time unless the software you use can send the required
control codes and escape sequences down the line.
Applesoft sends all characters with the eighth bit set to one. Apple Logo
sends all characters with the eighth bit cleared to zero (now you Logo users
may understand why you can’t get the Grappler to print your pictures).
Neither Apple Writernor AppleWorks provide any way to control the eighth bit
of a character. If your printer uses the eighth bit for something, you'll
probably find that feature is inaccessible without special software.
+ From inside Applesoft, you print control characters using the CHRS
function. PRINT CHR$(27) transmits an escape (control-(, decimal 27, hex
$1B). (Since Applesoft sends characters in the high-value ASCII format,
however, that should really be decimal 155, hex $9B.) Great confusion arises
Because the ASCII control codes have so many different names (seven per
code). Somewhere in this newsletter is an ASCII control-code Rosetta stone
that may help you decipher the hieroglyphics found in most printer manuals.
| find the best way to handle a printer from inside an Applesoft program is
to set up two special subroutines, one for turning the printer on and one for
Open-Apple 87 *
4
‘umingt off. The followingroutines are the ones | use on a system thathasa
~ 3 Grappler and an Apple Dot Matrix Printer. The exact codes will be oflittle use
= i i 10d ideas about how to set u
to most of you, but it should give you some go Pp
‘your own routines, These routines were designed to tum the printer on and
off without advancing any paper.
8000 REN send print msg to screen; turn on printer
8001 REM” PLS=character size connand
6002 REN P28= Left margin increment
803 REM —P3S=bold/normal
8010 HONE : VTAB 13
8020 PRINT “Press <ESC> to cancel printing.”
8030 PRINT “IF pager jams turn off printer.”
8048 PRINT CHRS(4);“PRUL” —_—: REM this command advances the paper one line
8050 PRINT CHRS(S REM turn off screen. suppress printer’s <cr>
8051 PRINT CHRS(S);CHRS(26); : REM change card's “I to “Z far tabbing
2060 PRINT REM character size
8961 PRINT REM printer's Left sargin command
8062 PRINT : REM bold/normal
8063 PRINT REM 6 Lines per inch
8064 PRINT REM underline off
8065 PRINT + REM elongated characters off
8080 PRINT 2 REM reverse Line feeds
8081 PRINT roll paper back to beginning
6085 PRINT foruard Line feeds
8030 RETURN
REM turn off printer; Fix controller command code
PRINT CHRS(26);CHRS(3); : REM
PRINT CHRS(27);
change "2
reverse Line feeds
roll paper bacie one Line
foruard line feeds
8923 PRINT ust have <cr> oefore 00S 3.3 commands
3930 PRINT CHRS(4); “PRHO” REM modify this Line for 80-colun screens
8940 RETURN
From inside Apple Writer, you print control codes by embedding them in
the text of your manuscript. First press control-V to enable embedding, then
press the control codes you want, then press control-V again to get back to
normal. Another way to do this is to put a special-character, say , where you
want a control code, then use Apple Writer's search and replace function to
command to change it to something else and the
problem will go away.
The engineer that decided to make the automatic
line feed function of the Scribe depend onan escape
sequence like this one should be put to work ona
wind-up train. For the record, the code for getting the
Scribe to add line feeds onto carriage returns is ESC
D High-value-control-@ Low-value-control@. | don't
know of any program that can send that code.
ASCII Express has a feature that strips linefeeds
from incoming messages (see section 118.4 of the
ASCII Express manual, page 126). Make sure you
have this option set to no. If this doesn’t help, you
can theoretically have your Grappler add line feeds
onto carriage returns for you. The problem is that
ASCII Express normally bypasses the software on
the Grappler that does this. Section 215 of the ASCII
Express manual (pages 298-299) explains how to
-1,get it to use the Grappler’s software instead. Section
'1L8 of the manual (pages 123-127) explains how to
send control codes to the Grappler. Make sure ASCII
Express is sending the high bit to the printer and use
"control-I ON” as the “printer message.” You don’t
have to specifically command the Grappler to add
linefeeds to carriage returns because it does that by
default.
Alternatively, set the Scribe dip switch so that it
adds linefeeds to carriage returns. The Grappler is
really sending the linefeeds you attribute to your
word processor. Use “control-lA’ as an interface card
setup string inside your word processor. This code
tells the Grappler to stop sending linefeeds.
Troubleshooting AppleWorks
Recently we purchased an Olympia NP parallel
printer. It has an external FINE switch that allows for
correspondence quality printing, When using Apple-
Works on an Apple lle with a Grappler interface, the
FINE switch works great from the data base and
spreadsheet, but not from the word processor.
The FINE switch works with other word processing
packages such as Apple Writerand Bank Street Writer,
but with AppleWorks it is switched off at the end of the
first line. If the escape code for the FINE command is
substituted for the boldface command it will work till
the end of a paragraph, but what about printing an
entire document?
Jeff Russell
Morgantown, WV.
| suspect that the control code you specified for
the default 10 characters per inch mistakenly turns
off the FINE feature. AppleWorks sends the character.
per-inch code at the beginning of each line.
The easiest way to troubleshoot problems such as
this one is to make a spare copy of your Applelworks
disk, boot it, and then remove and readd your
printer. When adding it again, however, specify “print
onto disk” rather than to a slot.
Now load a file that is giving you trouble, print it to
adisk file, and load it into Apple Writer. You will then
be able to see exactly what control codes AppleWorks
is putting in your file. From that you should be able
to figure out what the problem is.
What's a Panasonic?
Ihave a 128K Apple Ile, parallel Grappler-Plus, and
a Panasonic KX-P1090 dot matrix printer. When | use
AppleWorks, | am having lines truncated, spaces
inserted, and lines having characters dumped to the
next line.
What code to | use for the interface card setting? Do
any of the preprogrammed printer codes correspond
to the KX-P1090?
Michael L Groeschen
Newport, Ky
The code for the Grappler-Plus is “control-I ON".
According to the Programmers’ Handbook of
Computer Printer Commands, the control codes
for the Panasonic KX-P1090 are very similar to the
ones for the Epson FX-80, which isa listed AppleWorks
printer.
Dealer incompatibility
80N
! have an enhanced Apple fle with three Disk II
drives, a Star Gemini 10x printer with parallel interface,
an extended 80-column card, and 2-80 Star card.
88 Open-Apple
change this to a control code. This way you don’t have to use control-V (this is
also a good way to embed control-V itself.)
If you are going to do much of this, the best way is to use Apple Writer's
glossary (or macro) function. You can fix it so that your printer's boldface
command appears when you press open-apple-B, for example. By using the
glossary you can forget your printer's arcane codes and memorize a few
mnemonic letters instead.
Aproblem with Apple Writer is that it counts your control characters when
determining line length. A line with several control characters may appear
shorter than other lines when itis printed, since the control characters won't
take up any space on the paper.
Another problem is that Apple Writer has no provision for sendinga set up
string to your interface card. If you need to use such a string, you must
include it at the beginning of each document you print.
Epson printers use the ASCII null code (control-e, decimal and hex 0) for
some special features. Apple Writer, however, doesn’t provide any way to
embed this code. Don Lancaster tells me that the ProDOS version of Apple
Writerwill send a null where control-underline is embedded in a document.
(Lancaster is the best known source of support for Apple Writer He knows
more about it than your dealer, has developed and sells several packages of
material that enhance it, and offers a free voice helpline. Contact him at
Synergetics, Box 809, Thatcher, Ariz. 85552 602-428-4073.) People who
need actually need control-underline for something, however, are always
surprised by this undocumented feature. Lancaster knows how to fix Apple
Writer so it will send your choice of nulls or control-underlines.
The ability Apple Writer gives you to place control characters anywhere
within a documentis one ofits great strengths. The text you are now reading
was originally written and laced with contro! codes using Apple Writer. The file
was sent by modem toa typesetter, who ran the file through his equipment to
produce what you are now reading, boldface, italics, progran type, and all.
From inside AppleWorks, you place control characters within a document
by using the open-apple-O command. The word processor allows you to
place codes anywhere. The spreadsheet and data base allow you to specify
ddes only at the beginning of a document.
In the spreadsheet and in the data base report printer, pressing open-
apple-O brings up a menu that allows you to specify margins, lines- and
Sharacters-per-inch, and a special printer or interface card setup string,
Within the AppleWorks word processor, however, itis impossible to directly
type in a special printer or interface card control code. You must specify
which of your printer's spgcial features you want to access rather than a code.
AppleWorks itsglf knows Which codes are used with a limited number of
printers. Thas€ are the ones that appear on AppleWork’s internal menu of
printers, which comes up when you specify information about your own
equipment”
printer isn’t listed, AppleWorks also allows you to add a “custom
‘t” and specify what control codes it uses for various character widths,
c
lines-per-inch, boldface, underlining, superscripts, and subscripts, 1¢ your
printer supports other spetial features, however, you either have to
them up or use the special tricks discussed in October's “Okidata 92 meets
AppleWorks” (page 78) and September's “Correspondence quality phones”
(pages 71-72).
Entering the control codes for a custom printer requires both knowledge
of the control codes the printer requires and an awareness of howa printer's,
features can and can't be combined. For example, features such as
superscript and subscript may not be available with double-wide or
elongated characters. Many other conflicts occur. Each printer is different.
If your printer supports double-wide characters, this effectively doubles
the number of character widths available on your printer. Include the
“double-wide on” or “double-wide off” control code as a part of each code for
selecting character widths.
It may help to remember that AppleWorks automatically sends the
interface card control code at the beginning of each document (you can
specify this code); the “superscript off” and “subscript off” codes at the end
of each line (but only when the equivalent “on” code appears in that line);
and the “boldface off’ and “underline off” codes at the end of each
Paragraph. The AppleWorks character-per-inch commands not only send
control codes to your printer but also control how many characters are sent
between carriage returns.
AppleWorks supports the proportional typefaces in Apple's own Imagewriter.
Proportional typefaces are difficult because the software must calculate not
only the number of characters on a line but also the total width of the line
based on the actual width of each character. AppleWorks can also fully justify
the Imagewriter’s proportional typefaces, with outstanding results.
.ippleWorks doesn’t support proportional faces with custom printers. In
fact, it can’t even correctly justify proportional faces with some of the listed
printers. Proportional faces are ones where each character is a different
width. The problem is that there are no standards for how wide the
chz.racters should be in relation to each other. The Imagewriter, for example,
allows 17 dot positions for its proportional letter “M” and 12 dot positions for
“a.” [another printer has even slightly different proportions, say 18 and 12,
the.e’s no way AppleWorks can make the margins even. Subscribers report
this happens when the proportional fonts on Epson printers are accessed
with AppleWorks.
AppleWorks also asks whether your printer supports top-of-page (form
feed) commands. Almost all printers do. However, you will find that the page
length function within AppleWorks will not work unless you specify “no” for
“accepts top-of-page commands.”
As stated at the beginning of this article, printers are trouble because the
number of combinations of software, interface cards, and types of printers is
massive. You are the person in the best position to solve your own printer
problems. You should now have some sense of the kinds of things you have
to consider to do it.
Vol. 1. No. 10
Whenever | print from AppleWorks, | always get an
"80N" on the first line. | have been to several stores
seeking a solution to this problem and | always get
the same response, “compatibility.” There must be
some easy way to eliminate this problem similar to
Open-Apple
* Copynght 1985
by
Tom Weishaar
Published monthly
World-wide price
USS24/year
aa q Send all
W\ correspondence to
Open-Apple
10026 Roe Ave
Overland Park. Kans.
66207 Usa
Source Mail
ICF 238 CompuServe
70120,202
Open-Apple 1s a trademark of Open-Apple newsletter Aczie
Computer and Open-Apple are wo different, unrelated. 173%:
Pendent companies that wish everyone in the world hac ar
Apple tl
“Converting CONVERT for MouseTest” in your August
issue.
James Lalley
Clifton, NJ.
Indeed there is. If you've already read the front
part of this issue, you know the trick is to get
AppleWorks version 1.2 from your dealer and to set
the interface card control code to whatever your card
requires. You should command the card to turn off
video and to turn off all formatting. The exact
command depends on what kind of card you have.
Your letter is yet another example of the low level
of support Apple users get from dealers. Apple has
repeatedly notified dealers of this problem and has
provided various solutions for over eighteen months.
Please write Apple and ask why none of the dealers
you talked to knew the answer to this question.
Name names and give dates if possible. Suggest that
most reputable software companies provide technical
support over the phone and ask why such support
isn't available for AppleWorks.
Oh, brother!
3B 0D SP Z
| use a IIc with a Brother EP-44. Since both were
bought in Canada, I have little back-up here. Besides
the dealers here do not know much about most
problems. As you can see from this letter, when | use
AppleWorks with this system | get a series of unre-
quested characters at the top of the page. Any
suggestions about what to do to get rid of this?
‘A Ruprecht
Riyadh, Saudi Arabia
It's good to hear that the dealers in the Mid-East
aren't any better than the dealers here. I suspect
your problem is caused by acontrol-code Applelriter
is sending at the beginning of each document that
kicks the Brother into some kind of special mode for
one line. Check your interface card control code
Specification for a stray character that may be doing
this,
Here's one more trick you can try. Choose the
Apple Silentype from AppleWork’s intemal list of
printers. That particular model supports no control
codes. It might work, it might not.
The only other good cheer I can offer is to remind
you that even if you lived in Cupertino, the person
who is the best position to solve printer problems is
YOU.
i)