f SD-IO/l5 USER’S MANUAL NOT INTENDED FOR SALE
Federal Communications Commission Radio Frequency Interference Statement The equipment generates and uses radio frequency energy and if not installed and used properly, that is, in strict accordance with the manufacturer’s instructions. may cause interference. to radio and television reception.
A Special Message to the New Owner c. bb. L,.. c-. -. L” L c h^ Lo. bw L L i, -. Congratulations on your selecting the printer of choice for both the sophisticated as well as the first-time user/owner - the new SD-IO/IS! To complement the SD-lo/l 5, we’ve included this manual. All the information you need to be up and running with your new SD-lo/l 5 is right here! You’ll find using this manual easy and pleasant.
Table of Contents Chapter 1 1 Setting Up SD-lo/15 Where Shall We Put It? What Have We Here? Removing the printer cover Removing packing and shipping screws Installing the platen knob Removing the tractor unit Attaching the paper separator Installing the ribbon cartridge Chapter 2 Getting to Know Your SD-lo/15 9 Components and Controls Paper Selection and Loading Loading single sheets Loading sprocket-feed paper Bottom feeding SD- 15 Ribbon Installation Adjusting the Gap Self-Test Chapter 3 Getting St
Italic printing Underlining Superscripts and subscripts Changing the Print Pitch Expanded print Making SD-lo/l5 Print Darker Summary Chapter 6 Chapter 7 Chapter 8 Chapter 9 49 Starting New Lines Changing Line Spacing Moving down the page without a carriage return Forms Controls Form feed Changing the Page Length Top and Bottom Margins Summary 61 Formatting Your Output Using Horizontal Tabs A one-shot tab command Setting Left and Right Margins Using Vertical Tabs A one-shot vertical tab command Summary 6
Erasing Download Character Definitions Defining Proportional Characters Connecting characters Summary Chapter 10 Printing With Dot Graphics 103 Comparing Dot Grapphics With Download Characters Using the Dot Graphics Commands Specifying the number of columns of dots Specifying the graphics data Combining text and graphics Printing a Design or Logo Plotting With SD-lo/15 How the program works High Resolution Graphics If You Have Problems With BASIC Summary Chapter 11 Appendix A - 121 Basic Maintenance
I .
- Table of Tables Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table Table 5-l Near letter quality commands 5-2 Italic commands 5-3 Underline commands 5-4 Superscript and subscript commands 5-5 Print pitch commands 5-6 Expanded print commands 5-7 Print emphasis commands 6-l Line feed commands 6-2 Line spacing commands 6-3 Form length commands
;‘.1. CHAPTER 1 SETTING UP SD- lo/ 15 In this chapter, we’ll show you how to unpack your new SD-lo/l 5 printer, set it up in the right location, and get it ready for you to load it with paper and start printing. But first . . . WHERE SHALL WE PUT IT? Before you do anything else, give some thought to where you’ll be using your printer. Obviously, it will be somewhere near your computer. And both printer and computer will lead longer, healthier lives if they like their environment.
- --. Figure l-l. . . . . . .\ “- .A,.? Inside the carton you should have received: I) SD1uj13 printer, 2) continuous paper guide, 3) platen knob, 4) spare fuse, 5) ribbon cartridge, and 6) this user’s manual. - Let’s move on the next step . . . - H Removing the printer cover What is cover for, really? Primarily, for two reasons: one, to keep dust and dirt away from the delicate “innards,” and two, to keep the noise level down. The printer cover must be on or SD-lo/l5 will not print.
To remove the printer cover, lift up the free end (nearest the center of the printer), then with a slight rocking motion, lift it straight up and off the machine. To replace, just reverse the Figure l-2 illustrates the proper position and procedure. movement for both removal and replacement of the cover. Printer Cover .- - Figure 1-2. Kemove . the pnnter cover . by ..^. . . Iitting straight up. n Removing packing and shipping screws There are two (on an SD-lo) or three (on an SD-1.
_ . . Figure 1-3. SD-10 has two screws which secure the chassis during shippmg; SD-15 has three. They should be removed before use. - .~ Figure 1-4. Remove SD- 1O/ 1S’s print the spiral tube on the carriage stay that protects - head.
You’ll be smart to save these screws, along with the rest of the packing material and the shipping carton, in case you ever have to ship the printer. Tape the screws somewhere on the carton or packing. n Installing the platen knob This is the knob that turns the rubber platen cylinder. It fits into the hole on the right side of the printer case. Just match the odd-shaped hole in the knob with the same shape on the shaft you’ll see inside the hole in the case, and press it on firmly.
- Remove the printer cover (if attached). Identify the “snap levers” as shown in Figure l-5. Pull both snap levers forward, and at the same time . . . Rock the tractor unit up and towards you about half an inch. Now lift the tractor up and away from the printer. Up to this point, we’ve been clearing the decks for action, so to speak. Only two more things are left to do before we can start printing. They are, 1) attach the paper separator, and 2) install the ink ribbon cartridge.
Important news: If you get this in upside down, they won’t work. So take another sharp look at Figure 1-6 before we pass on to the final act-installing the ink ribbon cartridge. n Installing the ribbon cartridge The ribbon cartridge greatly simplifies installing the ink ribbon. For easy installation, though, it’s wise to follow the sequence and diagrams shown here. 1. Turn the power switch off, and remove the printer cover (as explained earlier.) 2.
Figure 1-8. Use a ball point pen to place the ribbon between the print head and the ribbon guide. It’s important that the ribbon is centered vertically between the print head and the ribbon guide. of the print head to avoid misprints or the ribbon coming off during printing. 5.
CHAPTER 2 GETTING TO KNOW YOUR SD-lo/l5 The more you learn about SD-lo/15 and its sophisticated features, old and new, the better SD- lo/15 is going to perform for you.
Control panel - Power switch L Figure 2-l. Front and rear views of SD-IO. - This unit feeds sprocket-feed paper with its drive gear and sprocket units. It is very easy to remove or to install the tractor unit onto the printer. PLATEN - This is the rubber cylinder that carries paper to the print head.
. knob L. ?Zontrol panel \.. * L L “. Figure 2-2. Front and rear views of SD-15 INTERFACE CONNECTOR - Around on the back, this is the place where you connect your computer to SD- 1O/l 5, so that they are able to communicate with each other. Now let’s take a tour around the controls, starting with the control panel board, located at the right front.
r---l I OUT I I POWER I READY I PAPER I ON LINE FF G LF G Figure 2-3. SD- lo/ 15’s controls. POWER LAMP - Glows green when the power is on. READY LAMP - Glows green when the printer is ready to accept data. This light flickers Don’t during transmission. worry about the flicker; it’s normal! ON LINE LAMP - Glows green when the communication lines to your computer are open. PAPER-OUT LAMP - Glows red when the printer is out of paper and stops printing.
RELEASE .. . ,. I .^, LEVER - On top, near the left rear corner. You’ll be using this particular control often. What it does is control the pressure of the paper against the platen. Its position is crucial to feeding the different paper types - sprocket and single sheets. It has two settings: “Friction,” and “Tractor.” The Friction position is used for single sheet printing, and the Tractor position for sprocket paper. This will be fully explained in the section describing paper loading procedures.
Figure 2-4. The paper release lever has two settings: and “T” for tractor feed. “F” for friction feed for “Tractor Feed” and is used only with sprocket-feed paper. “F” tightens the pressure of the paper against the platen, while “T” loosens this pressure, so it’s easier to move the paper around. n Loading single sheets Paper width must always be between 8 and 10 inches (8 and 15 inches for the SD-15), and paper thickness between .07 mm and .lO mm.
5. Insert the sheet from the back side of the platen (between the paper chute and the platen cover plate). 6. Press the ON LINE button until the ON LINE light goes off. 7. Press the L.F. button to roll the paper in until it appears on the front side of the platen, about where you want the first line to start printing. NOTE: To straighten paper (if it’s in crooked): l Move the release lever to “T” position.
“computer paper.” It can be as narrow as 3”, and up to 10” wide (5” to 15 $4” on SD-I 5,. To use this kind of paper, you’ll need to install the tractor unit, with its two “sprocket” wheels to carry the paper along. To install the tractor, identify the two “snap levers” shown in Figure 2-6. At the same time, identify the two “stoppers,” nickel-plated bars over which the hoooked or cut-out bottom edge of the tractor frame fits. OK? Now pick up the tractor unit.
3. Raise the paper bail bar; lift the paper separator upright. 4. Place the stack of fan-fold paper behind the printer. 5. Open the tractor covers, atop the right and left sprocket units, as shown in Figure 2-7. Figure 2-7. Open the tractor - covers to expose the sprocket teeth. 6. Flip the clamp levers forward. This aLlows the two sprocket units to move freely right and left. so you can align them with the holes in the paper. -7.
-- - Figure 2-8. SD-lo/l5 ready to run with sprocket-teed paper. n Bottom feeding SD- 15 The SD- 15 can be loaded with sprocket paper in two different ways-either from the back, as with SD-10,or through a slot in the bottom. To load SD- 15 from the back, follow the steps shown in the previous section. But for loading through the bottom slot, you position the SD-15 above the stack of fan-fold paper, with the paper being fed up through the bottom of the printer and on out the back.
5. Open the tractor covers, right and left (Figure 2-7). 6. Flip the clamp levers forward. This allows the two sprocket units to move freely right and left, so you can align them with the holes in the paper. 7. Pick up the first “sheet” and lift it up and through the slot in the bottom of the SD-15. 8. Push the paper up to the front of the platen roller. 9. Feed the top sheet inside the paper bail bar and past the platen, high enough so you can grip the paper from above the printer. 10.
c RIBBON INSTALLATION This is described in two places: installation of the ribbon cartridge is explained in Chapter 1; replacing the ink ribbon inside the ribbon cartridge casing is described in Chapter 11 (“Maintenance”). ADJUSTING .- THE GAP The gap is the space between the print head and the platen. Adjusting the gap is simply adjusting the printer to accommodate different thicknesses of paper.
SELF-TEST The “self-test” is a trial run of your beautiful new machine. SD-lo/l 5 carries a built-in program that prints out sample lines of letters, numbers, and other characters - to show you that everything’s in good working order. It also serves as a display of the characters available in the SD-lo/l 5. And finally, it’s a “warm-up” that permits you to check your installation of ribbon and paper, and the adjustment of the print head gap.
- -
CHAPTER 3 GETTING STARTED WITH SD-lo/l5 You have assembled and tested your printer, and seen a quick sample of SD-10/15’s capabilities in the self-test. Now it’s time to do what you bought SD-lo/l5 to do: print information from your computer. But first you need to connect SD-lo/l5 to your computer. Figure 3-l shows where the cables connect, but there’s more that you need to know complete instructions for connecting SD- lo/ 15 to many popular computers are given in the appendix.
USING COMMERCIAL SOFTWARE Many of you purchased SD-lo/15 to use with commercial software. You made a good choice because SD- lo/ 15 is compatible with most commercial programs, from word processing programs to spreadsheet programs to accounting programs. Many of these programs have a routine for describing your printer. These routines are often in “installation programs”. They typically give you a choice of printers or printer types to pick from.
ask-key ). There are ASCII codes for all the letters of the alphabet, both lower case and capital, the numbers from 0 to 9, most punctuation marks, and some (but not all) of SD-10/15’s functions. ASCII codes are referred to in several different ways, depending on the way they are used. Some times these codes are treated as regular numbers. For example, the letter “A” is represented by the number 65 in ASCII. Appendix F shows all of the ASCII codes. In BASIC, ASCII codes are used in the CHR$ function.
ASCII 10 ASCII OAH CHR$(lO) control-J - the abbreviation of its name its decimal value its hexadecimal value (the H signifies hex) the way it’s used in BASIC the way you send it from a keyboard. -- There’s a chart in Appendix F that shows these side-by-side so that you can convert back and forth. The reason that we are telling you all this about ASCII codes is that people are not very consistent about how they describe ASCII codes.
I,: . that we want to use condensed print. The code to switch SD-lo/15 into condensed print is ASCII 15, or control-O. So to switch on condensed type, use the /Output command and, after selecting D(isplay) and entering the range to print, select the S(etup) option, and the S(etup)--“Manual setup codes” sub option. Then, at the prompt that says “Enter codes (CR when done)“, type control-O.
Entering the 4 is no problem; it’s a printing character so EasyWriter won’t object (although in this case it’s not going to print). The Escape, however, is a non-printing character so it requires special handling. To enter the Escape code lirst enter control-O (hold the Ctrl key while you press the letter 0). Then press the Esc key. The Escape character shows on the screen as a left pointing arrow. Now just type the number 4 and you’re done. When you want to end the italic, you need to enter Escape 5.
CHAPTER 4 CONTROLLING SD- 1O/15 WITH BASIC Throughout the rest of this book we will be teaching you how to use SD- 10/l 5 ‘s features using the BASIC programming language in our examples. It is easy to communicate with SD-lo/l5 from BASIC and, though it has its detractors, BASIC is the nearest thing to a universal language among users of personal computers. But remember that it’s not the only way to communicate with SD-10/15, as we have already seen. .
ways, and hope that between this and your computer’s BASIC manual you will be able to stay with us. First on our list is Microsoft BASIC’s way of communicating with the printer. They just add an “L” to the beginning of the LIST and PRINT commands, making them LLIST and LPRINT. This method is used by more computers than any other and so we will use it throughout this book, after telling the rest of you how to follow along.
LLIST it (or however your first major hurdle-learning Now we are ready to jump SD-lo/l 5. But first, there to cover. computer does it). We’ve crossed the how to list programs on SD- 10/15. into the world of programming with are a few fundamentals that we need I. n Establishing communications We’ve learned something about communicating with our printer. Now we need to adapt what we know to printing in a BASIC program.
n Control codes SD-lo/l 5 uses many of the non-printing ASCII codes for control codes. These codes perform a function rather than printing a character. Let’s try an easy one right now: NEW 10 LPRINT CHR$(7) RUN - Where did that noise come from? That’s SD-lo/l 5’s bell. We will learn more about it in Chapter 8. We just wanted to illustrate a code that causes SD-lo/l 5 to perform a function. - n The escape code There’s one ASCII code that we are going to be using more than all the rest.
Some of you fast students may have noticed that CHR$(69) is the same as “E”. That’s right, the program will work just as well if line 10 is changed like this: 10 LPRINT CHR$(27) "E"; That’s just another form of the same ASCII code, and it’s all the same to SD-10/15. Here’s another shortcut for BASIC programmers: since < ESC > is used so often, assign it to a variable.
This is the command to turn on expanded print < ESC > , as we mentioned earlier, is the way we will indicate the escape code, which is ASCII code 27. A letter or number enclosed in quote marks (such as the “W” above) means that character should be sent to the printer (without the quote marks). In our example, you should send a capital W following the escape code. In BASIC, you could do this in a couple of ways: by sending the character itself (e.g.
in STAR mode. There are some cases where you would use IBM mode with your computer, if you wish. Chapters 5 through 10 discuss the control codes you send to SD-lo/l 5 to control printing style, horizontal and vertical formatting, graphics, and other features. You’ll find that many features have different codes for IBM mode and STAR mode. That’s it for the basics. You are ready to learn how to use the many features of SD- lo/ 15.
” ‘.
CHAPTER 5 PRINTING TEXT WITH SD-lo/l5 Beginning with this chapter we will be exploring all the features of SD-10/15. In this chapter we’ll cover: l Near letter quality characters l Italics l Underlining l Superscript and subscripts l Print pitch l Print emphasis All our examples will be given in Microsoft BASIC as used by the IBM Personal Computer, but remember that you don’t need to know BASIC to use SD-10/15’s features. Just use the same ASCII codes as we do in our examples.
l(d 'Demo near letter quality character set. 20 LPRINT CHR$(27) "B" CHR$i4) ; 'Select NLQ. 34)LPRINT "This line shows NEAR LETTER QUALITY!" 44)LPRINT CHR$(27) "B" CHR$(5) ; 'Select draft. 50 LPRINT "This line shows standard Drint." In this program, line 20 selects NLQ characters with the < ESC > “B” CHR$(4) command. Line 30 prints a sample before line 40 switches SD- lo/ 15 back to draft printing with an < ESC > “B” CHR$(S).
!I I.’ i ,. ., 10 20 30 40 50 'Demo italic and roman. LPRINT CHR$(27) "4" ; 'Italic on. LPRINT "This line is in ITALIC characters." LPRINT CHRS(27) "5" ; 'Italic off. LPRINT "This line is in ROMAN (normal) characters." Here is what you should get: This program is easy; line 20 turns italic on with < ESC > “4”, and line 40 turns it off with < ESC > “5”. n Underlining Not only can SD- lo/ 15 print all styles of printing in both roman and italic, but it can underline them too.
ued.Therefore, BASIC didn’t send a carriage return and line feed at the end of those lines. We just did this to illustrate that all these control codes can be used in the middle of a line. It’s easy to underline or italicize only part of a line. n Superscripts and subscripts SD-lo/l 5 can print in two different heights of characters. The smaller characters are called superscripts and subscripts and are half the height of normal characters.
“S” CHR$( l), and finally off in line 90. Again, everything prints on one line because of the semicolons. CHANGING THE PRINT PITCH In “printer talk,” character width is called pitch. Normally, SD-lo/l 5 prints 10 characters per inch. This is called pica pitch because it’s the same spacing as a standard pica typewriter. SD-lo/l 5 can also print 12 characters per inch. This is called elite pitch because it is the same spacing as an elite typewriter. Condensed print is approximately 17 characters per inch.
30 LPRINT "This line is CONDENSED pitch." 4@ LPRINT CHR$(27) "B" CHR$(2) ; 'Select elite pitch. 541LPRINT "This line is ELITE pitch." 60 LPRINT CHR$(27) "p" CHR$(l) ; 'Select proportional. 741LPRINT "This line is PROPORTIONAL spacing." 88 LPRINT CHR$(27) "p" CHR$(@) ; 'Cancel proportional. 98 LPRINT CHR$(27) "By CHR$(l) ; 'Select pica pitch. 188 LPRINT "This line is PICA pitch (normal)." When you run this program you should get this: This lineis CONDENSED pitch. This line is ELITE pitch.
Expanded print set with CHR$(14) is automatically canceled at the end of the line. This is convenient in many applications, such as for one line titles. Note that you don’t need to put an < ESC > in front of the CHR$( 14), although < ESC > CHR$( 14) works just the same. You can also cancel one line expanded print before a carriage return with CHR$(20), as done in line 50. Sometimes you may wish to stay in expanded print for more than one line.
By combining expanded print with the four pitches, SD-lo/l 5 has eight different character widths available. Enter this program to see how the print pitches and expanded print can be combined: 191 'Demo pitches in cqmbination with expanded mode. 20 LPRINT CHR$(27) "W" CHR$(l) ; 'Permanent expanded mode on. 30 LPRINT CHR$(27) "B" CHR$(3) ; 'Select condensed pitch. 40 LPRINT "This line is EXPANDED CONDENSED pitch." 54)LPRINT CHR$(27) "B" CHR$(2) ; 'Select elite pitch. 60 LPRINT "This is EXPANDED ELITE.
MAKING SD-IO/15 PRINT DARKER SD-lo/l 5 has very good print density when it’s just printing regularly. But sometimes you may want something to stand out from the rest of the page. SD- lo/15 provides two ways to do this: double-strike and emphasized print. Both of these go over the characters twice, but they use slightly different methods to darken the characters. Let’s try them and see what the difference is.
Line 20 turns on double-strike with < ESC > “G” and line 30 prints a line of text. In line 40 emphasized is turned on with < ESC > “E”. Line 50 prints a line of text in double-strike and emphasized. Line 60 then turns double-strike off with < ESC > “H” so that line 70 can print in emphasized only. Finally, line 80 turns emphasized off, so that SD-IO/l5 is set for normal printing. Look closely at the different lines of printing.
CHR$(20) < ESC > < ESC > < ESC > < ESC > < ESC > “W” 1 “W” 0 “G” “H” “E” “F” One line expanded off Expanded on Expanded off Double-strike on Double-strike off Emphasized on Emphasized off 47
- -
CHAPTER 6 LINE SPACING AND FORMS CONTROL ., -’ We have learned how to print in many different ways, but so far we haven’t looked at how to position the printing on the page. In this chapter l Change the l Change the l Set top and STARTING we will learn how to: vertical spacing length of the page bottom margins NEW LINES Up until now the only time we have thought about printing on a new line is when we didn’t want it to happen.
. . will add the line feed for you. When you have DIP switch 2-3 off the printer will do the same thing when it receives a carriage return as it does when it receives a line feed. If you find that your printer double spaces when it should single space, then you probably need to turn DIP switch 2-3 on. -.
This is what you will get: This .-. This line line line s-pacing is cet spacing is set c.pacirig i 5. set spacing is set to to to to 11 12 14 15 This This This line spacing is set to 10 This line spacing is set to 17 Thir 1 ine spacing is set to 18 This 1 lne %z.pacing is set to 19 Thic line spacing is set ta 20 This line spacing is set to 21 This line spacing is E.
You may wonder why they picked l/72 of an inch as the increment for the line spacing command. There’s a good reason: the dots that the printer makes are l/72 inch apart. So this means that you can vary the line spacing in increments as tine as one dot-unless you want finer spacing, like one half dot spacing (STAR mode) or one third dot spacing (IBM mode). The < ESC > “3” CHR$(n) command sets the line spacing in increments of 1/144inch (STARmode) or l/216 inch(IMBmode).
The program works just the same as before, but the line spacing are just half (STAR mode) or one-third (IBM mode) what they were. This is because < ESC > “3” CHR$(n) sets the line spacing to n/144 inch in the STAR mode, or n/216 inch in the IBM mode. Table 6-2 shows all the line spacing commands, including several “shortcut” commands for commonly used line spacings. Table 6-2 Line spacing commands Set line spacing to l/S inch Note: If your computer CHR$(97) for “a.
without moving the printhead back to the left margin. The following commands do just that. The < ESC > “J” CHR$(n) command causes the printer to make one line feed of n/144 inch (STAR mode), or n/216 inch (IBM mode), but does not change the setting of the line spacing. Try this program to see how it works: - 10 'Demo one-time line feeds 20 LPRINT "Line number 1." 30 LPRINT "Line number 2.” ; 441 'One time line feed. 50 LPRINT CHR$(27) "J" CHR$(l 00) 60 LPRINT "Line number 3." 70 LPRINT "Line number 4.
The new line 50 moves the paper up 3 lines, but the printhead doesn’t move. Therefore, line 60 prints its message starting in the column that the printhead was left in at the end of line 30. FORMS CONTROLS We have seen how to control the spacing between lines on a page. SD-lo/l5 also has commands that control the placement of printing on the page, and even adjust for different size pages. n Form feed The simplest forms control code is the form feed.
I.!: .- The form feed (CHR$( 12)) in line 50 caused the printer to move to the top of a new page before printing the last two lines. A note to TRS-80 users: CHR$(12) is a problem code for the TRS-80. To send a form feed command to SD-lo/l 5 you must add 128 to it making it CHR$(140). Use CHR$( 140) where we use CHR$(12) in these programs. CHANGING THE PAGE LENGTH - You may have some computer forms that you wish to use with SD-lo/l 5 that are not 11 inches high.
TOP AND BOTTOM MARGI NS Many programs that use a printe :r don’t keep track of where they are printing on the page. This causes a problem when you get to the bottom of a page because these programs just keep on printing, right over the perforation. This makes it very hard to read, especially if a line happens to fall right on the perforation. And if you separate the pages then you are really in trouble. Of course SD- 1O/l 5 has a solution to this predicament.
When you run this program it will print 150 lines right down the page and across the perforations. When it’s done line 60 sends a form feed to advance the paper to the top of the next page. Look at the lines that have printed near the perforations. Separate the sheets and see if any of the lines have been torn in half. These are the problems that the top and bottom margins will solve. Now add the following lines to your program.
Always send a form feed after setting the top margin, or it will not work on the first page printed. That’s because the top margin only takes effect after a form feed. Line 14 sets the top margin, line 12 sets the bottom margin, and line 55 clears both margins when we are done. SUMMARY L Control code, CHR$( 10) CHRS(13) < ESC > “A” CHR$(n) < ESC > “3” CHR$(n) < ESC > “0” < ESC > “1” < ESC > “2” < ESC > “J” CHR$(n) L-.. < ESC > “a” CHR$(n) < ESC > “A” CHR$(n) &..
- -
CHAPTER 7 FORMATTING OUTPUT L. :I*. YOUR - You have probably used the tab and margm features on a typewriter. They make it easier to format the text on a page. SD-lOi15 also has tabs and margins that you can set. But it goes beyond the capabilities of a typewriter because besides having tabs that go across the page, called horizontal tabs, SD-lo/l5 has vertical tabs that go down the page.
CHR$(9) is a problem with some computers. Some BASICS convert CHR$(9) to a group of spaces that act like a sort of pseudo-tab. This is line if the computer and the printer have the same tab settings, but it doesn’t allow us to use our own tab settings on SD-lOjl5. We can “outsmart” these computer by adding 128 to the ASCII value that we use. Instead of using CHR$(9), use CHR$(137) for a tab command. Even this trick won’t work for Apple II computers, for they use CHR$(9) for something else entirely.
Table 7-1 Horizontal tab commands Function Mode Control code Advance to next tab position STAR IBM STAR CHR$(9) CHRS(9) < ESC > “D” CHR$(nl) CHR$(n2). ..CHRS(O) < ESC > “D” CHR$(nl) CHR!$(n2)...CHR$(O) < ESC> “b” CHRS(n) “b” CHR$(n) Set tabs at nl, n2, etc. IBM STAR IBM One-time tab of n spaces Note: If your computer CHR$(98) for “b.
110 RETURN The first thing that this program does is to branch to the subroutine that starts in line 70. This subroutine prints 80 X’s in a row. The first time that the subroutine is used, all the X’s fit in one line. Then line 30 sets the left margin to 10, and line 40 sets the right margin to 70. Once again the subroutine is used, but this time the X’s won’t all lit on one line since there is now only room for 60 characters between the margins. Run the program.
Now, let’s set some vertical tabs of our own. Add these lines to the program: 12 LPRINT CHR$(27) "P" CHR$(l@) ; 14 LPRINT CHR$(2@) CHR$(4@) CHR$(5Q)) CHR$(@) ; < ESC > “P” is the command to set vertical tabs for the STAR mode. Like the horizontal tab setting command, tab positions must be defined in ascending order. Our example sets vertical tabs at lines 10, 20, 40 and 50. Then the CHR$( 11) in each of the following lines advances the paper to the next vertical tab. The printout is shown below.
This doesn’t confuse SD- 10/l 5---it advances the paper to the next tab position which happens to be the first tab position on the next page. That’s nice, isn’t it? n A one-shot vertical tab command There’s a one-time vertical tab command that works just like the one-time horizontal tab command. It is < ESC > “a” CHR$(n), and it causes the paper to advance n lines. It doesn’t change the settings of the vertical tabs.
I:? ! CHAPTER 8 SPECIAL FEATURES OF THE SD-lo/l5 In the previous chapters we have learned about several groups of control codes. In this chapter we will look at more control codes. These codes don’t fit neatly into any of the groupings that we have studied, but they add a lot of capability to SD-lOjl5. So here goes.
* to remind an operator to change the paper or to make another adjustment to the printer. Note to Apple users: Entering a CHR$(7) will sound Apple’s bell; the code will not be sent to SD-10/15. You can try this by typing: LPRINT CHR$(7); There are two other codes that affect the bell. One disables the bell, so that SD-lo/l5 will ignore a CHR$(7), and the other turns the bell back on. All three codes that affect the bell are shown in the following table.
1 for the code to go on-line again. CHR$(l9) is the code to turn SD- 10/l 5 off-line; CHR$( 17) returns SD- 10/l 5 to on-line status. n Printing to the bottom of the sheet Sometimes when you are using individual sheets of paper you may want to print near the bottom of a sheet. The paper-out detector usually stops SD- IO/l 5 when you are about 2 % inches from the bottom of the sheet. This is to notify you if you are running out of continuous paper.
n Backspace, delete, and cancel text Backspace (CHR$(8)) “backs up” the printhead so that you can print two characters right on top of each other. Each time SD-lo/l5 receives a backspace it moves the printhead one character to the left, instead of to the right. You can strike over multiple letters by sending more than one backspace code. Delete (CHR$(127)) also “backs up” one character, but then it “erases” the previous character (it’s erased from SD-10/15’s buffer, not from the paper).
n Unidirectional printing Unidirectional printing is a big word that means printing in one direction on@. SD-IO/l5 normally prints when the printhead is moving in both directions. But once in a while you may have an application where you are more concerned about how the vertical lines align than with how fast it prints. SD-lo/IS lets you make this choice. The table below shows the commands for controlling how SD- 1O/l 5 prints. Table 8-3 Printing direction commands . . . . .
I again. Finally line 110 sends a form feed to advance the paper to the top of a new page, and then uses the master reset to restore SD-10/l 5 to the power-on condition. You can also set SD-lo/l 5 to print in one direction for one line only by using the command < ESC > “ < “. This command immediately moves the printhead to the left margin and then prints the remainder of the line from left to right.
m Block graphics characters and special symbols Besides the upper and lower case letters and symbols that we are by now familiar with, SD-lo/l 5 has a whole different set of characters that are for special uses. These characters include block graphics characters for drawing forms and graphs, and special symbols for mathematical, engineering and professional uses. The following program will print out all of the graphics characters available in STAR mode. 10 'Demo all block graphic characters.
- Figure 8-1. - 6 131 8 141 i 151 I:( 161 i 171 !i 131 1 191 , 20 1 Figure 8-2.
. 144 & 154 ii 164 i; 17 4 .::::' 134 7 194 -,- 2 (:,Aq.
NEW 10 LPRINT CHR$(27) "0" 20 LPRINT CHR$(27) "6" 30 FOR J = 3 TO 6 40 LPRINT " " J CHR$(J) " 'I; 50 NEXT 60 LPRINT " 21 " CHR$(21) 70 LPRINT 80 FOR J = 128 TO 254 STEP 10 98 FOR I = J TO J + 9 95 IF I > 254 THEN 110 188 LPRINT I CHR$(I) " "; 110 NEXT I : LPRINT : LPRINT : NEXT J Figure 8-2 shows what this program will print. If your chart doesn’t look like this because it has regular letters and numbers instead of the special symbols, then your computer is only using seven bits.
SD-10/l 5 is a multi-lingual printer for it can speak in eight languages! SD- 10/l 5 changes languages by changing 11 characters that are different for the different languages. These sets of characters are called international character sets. The control codes to select the international character sets are given in Table 8-5. The characters that change are shown beneath their ASCII code in Table 8-6. Table 8-6 International character sets Country 1 35 1 64 91 92 93 94 % U.S.
Table 8-7 Macro instruction commands Function Mode Control code Define macro STAR < ESC > “ + “....codes you include...CHR$(30) < ESC > “+“....codes you include...CHR$(30) < ESC > “!” “r.
In this chapter we have learned many different commands that have many different uses. In the next chapter we will make up for this diversity-the whole chapter only covers three commands! But they are some of the most powerful that SD-lo/15 offers. They give you the ability to create your own characters. h SUMMARY be.- c !. c *1 c. c L.. * c .
- -
CHAPTER 9 CREATING YOUR ’ OWN CHARACTERS In this chapter we’ll cover: l Designing and printing your own characters l Designing proportional characters L .- .- In the previous four chapters of this manual you’ve learned how to control the SD-lo/l 5 printer to give you dozens of difof pitches, ferent typefaces. By using various combinations character weights, and font selections, you can create nearly any effect you want to in text.
Figure9-l.The letter “C” iscreated by printing 15 dots. descenders (such as the lower case “p” shown) use the bottom seven pins. As the printhead moves across the page (in either direction-that’s what is meant by bi-directional printing) it prints one column of dots at a time. Each time a dot is supposed to print an electromagnet inside the printhead causes the appropriate wire to strike the ribbon (making the SD-10/l 5 an impact printer). 0.0. : 0 . : 00 :0 eooo :0 0.0. : 0 . l o.0 0 0.0.
But there is another area of *memory in the SD- lo/ 15 reserved for user-defined characters. These are characters that you design and download into SD-10/15. When download characters are defined they are stored in RAM (random access memory), which allows you to define or modify them at any time. Each of these characters, whether it is from the standard character ROM or in download RAM, is constructed on a grid which is six “boxes” wide by nine “boxes” high.
Figure 9-5. Later in this chapter we’ll use this character to create a small graph.) You’ll notice that Figure 9-4 includes a lot of information around the grid. Don’t be intimidated; we’ll explain each item as we come to it in our discussion of defining and actually printing download characters. You may have noticed another difference between this grid and the one shown in Figure 9-3: it’s only eight boxes high. Which leads us to... - m,m,m,m,n m,m,m.
character uses the top eight dots, write in a one next to the word “Descender” on the layout grid; if it uses the bottom eight dots, write in a zero. In our example, we’ll want the bottom of the flask to line up with the baseline of the other characters, so it will not be a descender. As shown in Figure 9-5, we’ve written in a “1” on our grid. m,m,m,m,m,m,m,m,m,m,,m,, Start column End column M, = Descender * 126 + (Start * 16) + End Total Figure9-5.
m m2m,m m5m6m,m,m,m,,m,, ASCII Code WRONG! 64 Descender 32 16 M, = Descender * 126 + (Start l 16) + End Total Dots cannotoverlap; thosein immediately adjacent “half columns”willbe ignoredwhen thecharacter isprinted. Figure 9-6. H Add up each column of dots Now it’s time to give our creativeside a break and get down to some basic arithmetic. That’s where the numbers down the left side of the grid come in.
value. Some examples will make this clearer. As shown in Figure 9-7, if we add the numbers for the dots that print in a column, the sum will be a number in the range of 0 to 255. Each number from O-255 represents a unique combination of dots. So add up the values of the dots in each column using this system. In Figure 9-8 we’ve shown our grid with the sums of the columns filled in across the bottom (see if these agree with your answers!).
can define any positions except the defined control code positions. This means that once a character is defined and assigned a value (and the download character set is selected), you can use that character on the printer the same way you would any standard character. You can send the character with the same ASCII value (for instance, if you had assigned your character a code of 66, it would print each time you sent a character “B” to the printer).
Our chart would hardly be complete with just a picture of a chemist’s flask, so in Figure 9-9 we’ve made completed grids for some other symbols: an automobile and a gun (quite a strange mix of characters!). The information on the grids is now complete (except for proportional width data-a more advanced topic we’ll take up shortly). . I.
We’ll be discussing proportional character widths in detail later in this chapter; for now, we’ll leave it at 11. The descender data was discussed earlier: to use the top eight pins, this bit should be 1; to use the bottom eight pins this bit should be 0. Figure 9-10 shows the bits of the attribute byte as we’ll use them for our flask character. By now you’ve probably seen an easier way to determine the value of the attribute byte.
10 LPRINT CHR$ (27) “k” CHR$( 1) CHRS(160) CHR$(162); 20 FOR N = 160 TO 162 30 FOR M = 0 TO 11 44)READ MM 50 LPRINT CHR$(MM); 60 NEXT M 70 NEXT N 80 LPRINT 90 DATA 139,2,5,8,241,0,0,241,8,5,2,0 100 DATA 139,124,0,66,4,64,36,16,2,16,12,0 110 DATA 139,46,16,2,60,0,48,0,48,0,48,0 When you run this program, it looks like nothing happens. That’s OK. We’ll see why in just a moment. Save this program. We’ll need it again shortly.
Voila! It should have printed out the three characters we defined. Your printout should look like this: (If it doesn’t, check the last program we ran for errors, then rerun it.) Let’s find out if there are any other characters in the download RAM.
I. # L, . L \. .. 144)LPRINT ESC$ "$1"; 150 LPRINT "Autos" TB$; 160 FOR I=.4 TO 9.3 STEP .4 : LPRINT CHR$(161); : NEXT 179)LPRINT 184)LPRINT "Chemicals" TB$; 190 FOR I=.4 TO 8.7 STEP .4 : LPRINT CHR$(16@); : NEXT 200 LPRINT 210 LPRINT "Guns" TB$; 2241 FOR I=.4 TO 1.4 STEP .
ERASING DOWNLOAD CHARACTER DEFINITIONS After you have defined a set of characters (a whole new alphabet, perhaps) you may want to go back to using mostly standard characters with a few new user-defined characters mixed in. Rather than turning SD-lo/l 5 off (which erases all of the current settings, including download characters), you can send This a command which will restore the default characters.
Figure 9-12. These download characters are defined as proportional characters. attribute byte, mO. As you know, the first bit of m0 is used to specify whether the character is a descender or not. The next three bits are used to specify the starting print column (acceptable values are 0 to 7). The last four bits specify the ending print column (acceptable values are 4 to 11).
10 FOR N=l TO 4 2p)READ Nl 30 LPRINT CHR$(27) "9c" CHR$(l) CHR$(Nl) CHR$(Nl); 40 FOR M=Q) TO 11 50 READ MY 60 LPRINT CHR$(MM); 70 NEXT M 80 NEXT N 90 LPRINT " Mississippi" 100 LPRINT 110 LPRINT "Standard characters without proportional spacing" 120 LPRINT 130 LPRINT 140 LPRINT CHR$(27) "$1" " Mississippi" 150 LPRINT CHR$(27) "$0" 160 LPRINT "Download characters without proportional spacing" 17@ LPRINT 180 LPRINT CHR$(27) "$1" Mississippi" 190 LPRINT CHR$(27) "~1" " 209,LPRINT CHR$(27) "p@" CHR$(27)' "$0" 21
One thing to remember about defining proportional characters: a character cannot be wider than the specified width. That seems obvious enough! For example, if you specify a width of 6 for a character (starting in column 1 and ending in column 6), the seventh through eleventh columns of dots (if you specified any) will not print.
In the program that follows, we’ve used this technique to create some large numbers. Each digit is actually made up of four characters-two horizontally by two vertically. This means, of course, that you must define and print four characters for each finished digit. We assigned the upper left quadrant of each digit to ASCII codes from 160 to 169, the upper right quadrant to codes 170 to 179, and so on. Figure 9-14 shows how one digit is defined, and Figure 9- 15 shows the final output of our program.
130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 READ MS PRINT 111, CHR$(MS); NEXT S NEXT I ' ASCII = 160 'START OF DOWNLOAD CHARACTERS FOR NUM = 0 TO 9 'NUMERALS 0 TO 9 NUMERAL.TOP$(NUM) = CHR$(ASCII + 0) + CHR$(ASCII + 1) NUMERAL.BOT$(NUM) = CHR$(ASCII + 2) + CHR$(ASCII + 3) ASCII = ASCII + 4 NEXT NUM BLANKS = CHR$(200) PRINT j/l, DOWN.CHAR.PROP$; LINE.7$ FOR NUM = 0 TO 9 PRINT i/l, NUMERAL.
500 DATA 11, 0, 0, 0, 0, 0, 0, 32, 64, 32, 64, 32 510 DATA 11, 68, 42, 68, 58, 68, 50, 68, 34, 64, 2, 0 520 DATA 11, 8, 0, 12, 0, 28, 2, 12, 2, 4, 2, 4 530 DATA 11, 2, 4, 2, 12, 144, 108, 144, 104, 144, 96, 128 540 'FOUR 550 DATA 11, 0, 0, 0, 0, 0, 0, 2, 36, 30, 4, 8 560 DATA 11, 0, 0, 2, 4, 2, 28, 2, 60, 64, 48, 0 570 DATA 11, 0, 16, 32, 80, 160, 80, 160, 16, 32, 18, 32 580 DATk 11, 30, 100, 154, 100, 154, 96, 146, 32, 16, 96, 0 590 'FIVE 600 DATA 11, 0, 0, 0, 0, 2, 4, 42, 76, 50, 68, 34 610 DATA 10, 68, 3
L 810 DATA 11, 32, 3# 820 DATA 11, 198 830 DATA 11, 0 840 ‘SPACE 850 DATA 11, . SUMMARY Control code < ESC > . < ESC > c. . < ESC > < ESC > < ESC > 192, 0, 192, 0, 194, 32, 222, 32, 94, 12, 0, 28, 0, 142, 0, 198, 0, 198, 0, 0, 206, 0, 156, 0, 248, 0, 240, 0, 224, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 0 Function “*” 1 nl n2 m0 ml . ..mll Defines download character into RAM (for STAR mode) “8~” CHR$(O) nl n2 m0 ml . ..
- -
CHAPTER 10 PRINTING WITH DOT GRAPHICS Subjects covered in this chapter include: l SD-10/15’s bit image graphics capabilities l Printing a pre-defined shape l Plotting a calculated shape l High resolution graphics In Chapter 9 you were introduced to a form of computer graphics; you were able to actually define characters dot by dot.
(if you’re not sure which type of interface your computer has, check the appendix for your computer). So when do you use graphics and when do you use download characters? Practically anything you can do with graphics you can do with download characters, and vice versa. A clever programmer could actually plot a mathematical curve using download characters or use strings of graphics data as user-defined characters.
it’s possible to have a graphics image as wide as 480 dots on SD-10 or 816 dots on SD-15. So to figure out how many columns of graphics data to expect, SD-lo/l5 multiplies n2 by 256 and adds the value of nl. If you divide the number of columns by 256, then n2 is the quotient and nl is the remainder (why not let your computer figure it out for you: if the number of columns is asX, then nl =X MOD 256 and signed to variable n2 = INT(X/256)). Table 10-l might make things even easier.
-. -Figure 10-l. Starting with the most significant bit at the top, each pin oftheprint headis assigned a value which is a power of two. Note that - for 7-bit computers, the top pin cannot be used. - A short program should demonstrate how to implement the graphics command. The program below gave us this printout: ..._..._.,, ,__........._..__ ,,___, ,, ,._.. -.-._._.........-. 10 'Demo dot graphics. PI = 3.
W Combining text and graphics It’s also possible to mix text and graphics in one line. This can be useful for labeling charts or graphs, or even inserting fancy graphics in text. Try adding these lines to our program: 45 PRINT #l,"WOW!" ; 85 PRINT #l,"This is great!" ; Now if you run the program looks like this: you should get a printout that But there is one thing to be careful of: all graphics data must print on the same line.
paper. And it may be helpful to write the dot values (128, 64, 32, etc.) down the left side of each row. Then after you’ve filled in the “dots” that you want to print, it’s time to get out the old calculator again! Just as you did with download characters, add up the values of each column of dots; this makes up one byte. In the program below, we’ve taken the logo graphics information and put it into BASIC DATA statements. The program itself is short and simple.
60 GRAPHICS = CHR$(27)+CHR$(75) 70 DIM LOG0$(4) 80 WIDTH "LPT1:",255 90 ' READ DATA 100 FOR ROW = 1 TO 4 110 FOR COLUMN = 1 TO 100 120 READ P 130 LOGO$(ROW) = LOGO$(ROW) + CHR$(P) 140 NEXT COLUMN 150 NEXT ROW 160 ' PRINT LOGO 1?0 LPRINT LINE.8$; 180 FOR ROW = 1 TO 4 190 LPRINT GRAPHIC$;CHR$(100);CHR$(0); 200 LPRINT LOGO$(ROW) 210 NEXT ROW 220 LPRINT LINE.
500 510 520 530 540 550 DATA 252,255,255,255,127,63,31,7,7,31 DATA 254,252,248,224,128,0,0,3,7,7 DATA 7,3,0,0,0,0,0,0,0,0 DATA 0,31,31,3,129,128,192,192,192,192 DATA 192,224,224,224,224,240,255,255,255,255 DATA 255,127,0,0,0,0,0,0,0,0 560 570 580 590 600 610 620 630 640 650 660 'ROW4 DATA 0,248,248,240,224,224,112,112,56,56 DATA 56,56,56,120,120,240,240,224,224,192 DATA 128,0,0,0,0,0,192,224,240,240 DATA 240,248,248,248,120,120,56,56,56,56 DATA 48,112,224,224,224,224,240,240,248,248 DATA 120,120,56,56,56
L-. L., ‘- k *. c L.. (I-. t L and SD-lo/l5 plotting the output, you can come up with some terrific business graphs, charts, and mathematical function plots. The best way to do this is to set up an array in memory. This is your “graph paper.” The first thing to do is to determine how big you want your output to be; this will determine the size of your array. (If you have grandiose plans to till an entire page with plotter output, you better have lots of memory in your computer.
270 ' 280 'Subroutine to draw a line from Xl,Yl to X2,Y2. 290 ’ 300 XL = X2 - Xl 310 Nx = ABS(XL"LXFAC) 320 IF NX < NY THEN NX 330 NS% = INT(NX+l) 340 DX = XL/NS% 354)FOR 1% = 1 TO NS% 364)xl = Xl + DX 370 GOSUB 400 384)NEXT 1% 390 RETURN 400 410 ’ 600 ’ : YL = Y2 - Yl : NY = ABS(YL$cLYFAC) = NY : DY = YL/NS% - : Yl = Yl + DY - 'Subroutine to plot a point at Xl,Yl.
you need to change are the values in line 40. The array MASK% contains the values of the dots. (In order to make this program run on the most computers, we’re using only six pins for graphics. With many computers, you can use all eight available pins.) In lines 90 and 100 we’ve defined some other variables you’ll be interested in: LX, LXFAC, LY, and LYFAC are used as scaling factors.
at a time. The variable A$ is used to build a string of all the columns of BIT% in a given row. As you can see, by taking the program in small pieces and analyzing it, graphics programming does not have to be difficult. If you want to try some other plots, try these (replace lines after 600 with the lines below). The printouts from each program are shown below the listing. 600 610 620 630 640 650 660 670 680 690 700 710 720 730 ’ 'Subroutine to plot a star.
.----I f 1 5 I: 5 r’ :. i ...__..i’ * I * . . . * I. ‘ HIGH RESOLUTION GRAPHICS Up until now all of the dot graphics printing we have done has been with SD-IO/IS’s normal density mode. This can give you some pretty sharp images at great speed. Sometimes though, you may want to create an image with even higher resolution. SD-lo/l 5 has seven graphics modes you can use; they’re summarized in Table 10-2.
Table 10-2 nnt oranhirr rnmmlndQ YY. b’..Y”‘V” Function Normal density (60 dots/inch) ~VLII~IIII-..” Mode STAR IBM Double density (120 dots/inch) Double density with double Speed (120 dots/inch) IBM < ESC > “L” nl n2 ml m2 ... .. or < ESC > “*” CHR$(l) nl n2 ml m2 . .. .. < ESC > “y” nl n2 ml m2 .. ... or < ESC > “g” CHRS(2) nl n2 ml m2 . ... . < ESC > “Y” nl n2 ml m2 . . ... or < ESC > “*” CHR$(2) nl n2 ml m2 .. ... < ESC > “z” nl n2 ml m2 .,... or < ESC > “g” CHR$(3) nl n2 ml m2 . . .
: Double density graphics Double density,‘double speed . --. Quadruple density -‘;.. graphics 117 : 1.
So if quadruple density looks so great, why not use it all the time? Let’s try an experiment on your printer which will show just how the different density modes work. Using the “logo” program in this chapter, change line 60 to try each of the different modes. Just change the “CHR$(75)” to “g” + CHR$(l), “g” + CHR$(2), “g” + CHR$(3), “g” + CHR$(4), “g” + CHR$(S), “g” + CHR$(6) in turn for the STAR mode. (For the IBM mode, use “*” instead of “g”.
-. Star’s engineers have given programmers a unique shortcut for program development though-double density double speed graphics. Although this mode requires just as much memory and computing time as double density, it prints at the same speed as normal density graphics. Amazing, you say? Well, it is-until you know the secret. Every other column of dots is ignored, so the output is actually the same as normal density graphics.
< ESC > “Z” nl n2 ml m2... Print quadruple density graphics (for IBM mode) c ESC > “g” nO nl n2 ml m2... Master graphics selection (for STAR mode) < ESC > ‘I*” nO nl n2 ml mi?...