Classic Computer Magazine Archive COMPUTE! ISSUE 80 / JANUARY 1987 / PAGE 67

Printer Master

David Stanton

While the dot matrix printer is a wonderfully flexible device, accessing its many features can sometimes be confusing. This convenient, menu-driven program helps you get the most out of your printer by simplifying the process of choosing special printer features. For all Apple II series computers with a dot matrix printer.


Buying a printer has always been a bit complicated. Should it have a serial or a parallel interface? What printers will be compatible with your brand of computer? What is a reasonable price? Which printers offer the best value for the money? Should you select a dot matrix machine for its speed and its graphics capability, or opt for the letterquality print of the daisy wheel?
    Many magazines have run articles comparing printers of all types, feature for feature. After some investigation, most of us end up with a printer that suits our needs. For many, that means a medium-priced dot matrix printer.
    Except for the most demanding purchaser, the near-letter-quality font of modern dot matrix machines can sometimes even prove acceptable for occasional business use. As a bonus, the programmability of these inexpensive workhorses provides a flexibility unmatched by the best daisy wheel printers. Unfortunately, a new purchaser's elation is too often dampened after discovering the pages in the user's manual that explain all the control characters required to implement those fancy fonts, foreign alphabets, and optional character sets.
    Enter "Printer Master." This menu-driven program remembers those optional features along with their confusing control characters and allows you to configure your printer exactly the way you want it without the necessity of understanding all the details outlined in your printer's manual.
    While Printer Master does not access some of the more obscure printer functions, it does allow easy access to foreign alphabets and special character set combinations. Simply run Printer Master, selecting your desired font. Then use your word processor to print old or new text files. With a bit of experimentation, you should be able to achieve exactly the desired results for every occasion.
    Type in Printer Master and save the the program to disk before you run it. Since Printer Master is menu-driven and completely self-prompting, you won't need elaborate instructions to use it. Just follow the onscreen prompts and respond to the questions as indicated.
    When you run the program it divides the screen into two parts. The upper section displays a series of menus listing the available features. As you select those items, the bottom portion will display the current status of each option. Occasionally the status will not change when an item is selected. This occurs either because the printer cannot use that feature or the status of a different selection precludes the use of that option. For example, Okidata printers prohibit the use of near-letter-quality print in condensed mode.
    To check the appearance of a font selection, choose "Print Test" from the main menu. Printer Master prints a short message to help you diagnose any problems. If anything is not as it should be, the most likely reason is improper variable values; in the next section, we'll learn how to change them.

Making Adjustments
As published, the program is designed to work with the following popular printers:

Apple Imagewriter
Okidata Microline series
Epson FX series
C. Itoh 8510 series
BMC dot matrix printer

    Some models from these manufacturers offer different options. As a rule, Printer Master is compatible with the most versatile printer from each manufacturer. For models that lack some of those advanced features, you may want to replace the appropriate variable values with zeros so you'll have an accurate indication of the printer's capabilities in the configuration display at the bottom of the screen. If you attempt to use a feature that is unavailable on your printer, Printer Master could produce unpredictable results.
    For example, the Microline 182 lacks near-letter-quality (NLQ) print mode. By placing a zero in the variable NL, you can assure that the program will not attempt a non-existent NLQ mode. Don't be afraid to experiment. Turning the printer off and on again always resets it to its original state no matter what commands the program may have sent.
    For those who have a different printer, the explanation of the relevant variables should allow you to configure the program to fit your machine. Find the section in your manual that lists the decimal values needed to control each function, and insert those values in the appropriate variables listed in lines 450-460. Table 1 explains the functions of all the relevant variables.
    Using this method, you should have little trouble creating a version for any dot matrix printer to which you may have access. Be sure to use proper values, though, or be prepared for strange results. No harm will be done to the printer, but the printout can look very peculiar.

Interfaces, Dip Switches, And Power-Up Defaults
Those who own a printer may already know something about interfaces. Third party interfaces offer a vast array of programmable and switch-selectable configurations. Printer Master does not affect your interface at all.
    Printers, too, can be programmed and modified. Internal dip switches control the power-up default conditions that determine how your printer works when you first turn it on. Printer Master assumes that your printer's switches are set in the standard mode established at the factory. If this is not the case, you may need to change the string variable values listed below to conform to your machine's power-up condition. This is neither as technical nor as difficult as it may sound. These variables are defined in line 2140 of the program. Once you have the minor adjustments necessary, Printer Master will help you show off all the powerful features of your dot matrix printer. Now you can print in a wide range of font sizes and print quality. And foreign language printing becomes simple as well. To print longer and wider spreadsheets, simply choose a smaller print size. With Printer Master you are likely to enjoy using your printer much more.

Variables

Each of the following variables must be the decimal number that sets the mode indicated. While the values vary, each printer's manual has a chart that shows the proper values for its available features. If your printer does not have a particular feature, simply set that value to 0.


A1
A2
BG
BR
CS
DA
DQ
DS
DU
DW
EL
EM
EN
EO
FC
FI
FR
G1
G2
GA
GE
IO
IB
IL
JA
L1
L2
LS

NL
NO
NW
PC
PI
RE
SL
SP
SW
ASCII (U) character set
ASCII (S) character set
block graphics character set   (when available)
British character set
prepares character set for new selection
Danish character set
sets print quality to data (low quality/high speed)
enhanced mode off
Dutch character set
sets double width (elongated)
sets elite mode (12 CPI)
sets emphasized print mode
sets enhanced print mode
turns off emphasized print mode
French/Canadian character set
sets condensed mode (17 CPI)
French character set
sets graphic density to single density graphics
sets graphic density to double density graphics
Greek character set (C. Itoh)
German character set
Italic mode off
IBM character set code (when available)
Italian character set
Japanese language set
sets lines per inch to 6
sets line per inch to 8
Temporarily holds selected language code. This value is used by the language routine.
It is not by the language routine. It is not set in the printer parameter lines.
sets printer to near letter quality (Bold, if no NLQ)
establishes standard (normal) character set
Norwegian character set
informs printer that next value is a printer command
sets pica mode (10 CPI)
resets printer defaults
sets italic (slant) mode
Spanish character set
Swedish character set


String Variables

CS$
EM$
EN$
GD$
LI$
LS$
PQ$
PR$
PS$
current character set selection
Y or N condition of emphasized print
Y or N condition of enhanced print
current graphic density selection
current line spacing selection (6 LPI/8 LPI)
current language set selection
current print quality selection
number of printer type (not user modifiable)
current print size selection


Printer Master
For instructions on entering this listing, please refer to "COMPUTE!'s Guide to Typing In Programs" in this issue of COMPUTE!.

96 100 P0$ = CHR$ (4) + "PR*0":P
       1$ = CHR$ (4) + "PR#1"
12 140 HOME : VTAB 5: PRINT TAB(
        12)"PRINTER MASTER"
25 150 VTAB 9: PRINT TAB( 5)"1.
       APPLE IMAGEWRITER OR COMP
       ATIBLE": PRINT TAB( 5)"2.
        BMC DOT-MATRIX"
D3 155 PRINT TAB( 5)"3. C. ITOH
       8510 OR PROWRITER": PRINT
        TAB( 5)"4. EPSON FX OR C
       OMPATIBLE": PRINT TAB( 5)
       "5. OKIDATA PARALLEL": PR
       INT TAB( 5)"6. CUSTOM PRI
       NTER"
71 160 VTAB 18: HTAB 10: PRINT "
       SELECT YOUR PRINTER:";: G
       ET PR$: IF PR$ < "1" OR P
       R$ > "6" THEN 160
F7 170 PRINT PR$
7B 180 VTAB 20: HTAB 1: INVERSE
       : PRINT "BE SURE YOUR PRI
       NITER IS ON AND SELECTED!"
       : NORMAL
58 190 WAS 23: PRINT TAB( 20)"P
       RESS ANY KEY:";: GET K$:
       IF K$ = "" THEN 190
81 195 PRINT
83 200 REM
56 210 REM PRINTER SETUPS
87 220 REM
CC 230 ON VAL (PR$) GOTO 240,280
       ,320,360,400,440
El 240 REM PRINTER CONTROL VARI
       ABLES--APPLE IMAGEWRITER-
       -FOREIGN LANGUAGES ARE AV
       AILABLE BUT NOT IMPLEMENT
       ED HERE
84 250 Al = 00:A2 = 00:BG = 00:B
       R = 00:CS = 00:DA = 00:DQ
        = 00:DS = 34:DU = 00:DW
       = 14:EL = 69:EM = 33:EN =
        00:EO = 00:FC = 00:FI =
       S1:FR = 00:81 = 00:82 = 0
       0
86 260 GD = 00:15E = 00:10 = 00:1
       B = 00:IL = 00:L1 = 65:L2
        = 66:NL = 00:NO = 36:NW
       = 00:PC = 27:PI = 78:RE =
        99:SL = 00:SP = 00:SW =
       00
22 270 GOTO 470
F2 280 REM --BMC MODELS
79 290 A1 = 00:A2 = 00:BG = 00:B
       R = 00:CS = 00:DA = 00:DQ
        = 53:DS = 72:DU = 00:DW
       = 49:EL = OO:EM = 69:EN =
        71:EO = 70:FC = 00:FI =
       15:FR = 00:G1 = 75:G2 = 7
        6
7A 300 GD = 1:GE = 00:IO = 00:IB
        = 00:IL = 00:L1 = 50:L2
       = 48:NL = 00:140 = 00:NW =
        00:PC = 27:PI = 18:RE =
       64:SL = 52:SP = 00:SW = 0
       0
17 310 GOTO 470
AC 320 REM --C.ITOH 8510A AND OT
       HER C.ITOH
419 330 A1 = 2:A2 = 00:BG = 35:BR
         = 3:CS = 15:DA = 8:DQ =
       34:DS = 34:DU = 10:DW = 1
       4:EL = 69:EM = 33:EN = 00
       :ED = 34:FC = 14:FI = 81:
       FR = 1:G1 = 78:G2 = 80:GA
        = 38
CA 340 GD = 1:GE = 4:IO = 00:IB
       = 00:IL = 6:L1 = 65:L2 =
       66:NL = 00:NO = 36:NW = 9
       :PC = 27:PI = 78:RE = 00:
       SL = 00:SP = 7:SW = 5
IF 350 GOTO 470
El 360 REM --EPSON FX SERIES
1C 370 A1 = 00:A2 = 53:BG = 00:B
       R = 3:CS = 82:DA = 4:DQ =
        53:DS = 72:DU = 00:DW =
       49:EL = 77:EM = 69:EN = 7
       1:EO = 70:FC = 00:FI = 15
       :FR = 1:G1 = 75:G2 = 76:J
       A = 8
15 380 BD = 00:GE = 2:10 = 53:IB
        = 00:IL = 6:L1 = 50:L2 =
        48:NL = 00:NO = 0:NW = 0
       0:PC = 27:PI = 80:RE = 64
       :SL = 52:SP = 7:SW = 5
27 390 GOTO 470
BI 400 REM --OKIDATA MICROLINE (
       STANDARD PARALLEL MODELS)
29 410 A1 = 65:A2 = 64:BG = 49:B
       R =  66:CS = 33:DA = 70:DQ
        = 48:DS = 0:DU = 72:DW =
        31:EL = 28:EM = 84:EN =
       72:EO = 73:FC = 74:FI = 2
       9:FR = 68:G1 = 80:G2 = 82
DA 420 G = 1:GE = 67:IO = 0:IB
       = 50:IL = 73:L1 = 54:L2 =
        56:NL = 49:NO = 48:NW =
       71:PC = 27:PI = 30:RE = 2
       4:SL = 47:SP = 75:SW = 69
1C 430 GOTO 470
3C440 REM --CUSTOM PRINTER: SEE
        DOCUMENTATION
A7 450 A1 = 00:A2 = 00:BG = 00:B
       R = 00:CS = 00:DA = 00:DQ
        = 00:DS = 00:DU = 00:DW
       = 00:EL = 00:EM = 00:EN =
        00:EO = 00:FC = 00:FI =
       00:FR = 00:G1 = 00:G2 = 0
       0
80 460 GD = 00:GE = 00:IO = 00:I
       B = 00:IL = 00:L1 = 00:L2
        = 00:NL = 00:NO = 00:NW
       = 00:PC = 00:PI = 00:RE =
        00:SL = 00:SP = 00:SW =
       00
IE 470 GOSUB 2140: REM RESET PRI
       NTER TO POWER-UP DEFAULTS
95 480 REM
12 490 REM   DISPLAY MENUS
86 500 REM
DD 510 GOSUB 1730
F3 515 GOSUB 1260
F4 520 VTAB 1: PRINT TAB( 12)"MA
       IN MENU": PRINT : PRINT T
       A8( 5)"1. CHARACTER SETS"
       : PRINT TAB( 5)"2. LANGUA
       GE SETS": PRINT TAB( 5)"3
       . PRINT STYLES"
49 530 PRINT TAB( 5)"4. SPECIAL
       FEATURES": PRINT TAB( 5)"
       5. RESET PRINTER TO DEFAU
       LTS": PRINT TAB( 5)"6. PR
       INT TEST": PRINT TAB( 5)"
       7. SELECT PRINT QUALITY"
88 540 PRINT TAB( 5)"8. EXIT"
21 550 VTAB 14: HTAB 15: INPUT "
       ENTER YOUR SELECTION:";S$
       : IF VAL (S$) < 1 OR VAL
       (S$) > 8 THEN 550
9C 560 ON VAL (S$) GOSUB 590,650
       ,1040,1110,1730,1240,1180
       ,580
A9 570 GOTO 515
66 580 POKE 35,24: HOME : END
AA 585 REM
DD 590 REM CHARACTER SETS
AC 595 REM
BB 600 HOME : PRINT TAB( 12)"CHA
       RACTER SETS": PRINT : PRI
       NT TAB( 5)"1. IBM CHARACT
       ER SET": PRINT TAB( 5)"2.
        BLOCK GRAPHICS SET"
77 610 PRINT TAB( 5)"3. NORMAL C
       HARACTER SET": PRINT TAB(
        5)"4. DOWNLOADABLE CHARA
       CTER SET"
D2 620 PRINT TAB( 5)"5. GREEK CH
       ARACTER SET (C.ITOH)"
E7 630 VTAB 14: HTAB 15: INPUT "
       ENTER YOUR SELECTION:";S$
       : IF VAL (S$) < 1 OR VAL
       (S$) > 5 THEN 630
4C 640 PRINT P1$: ON VAL (S$) GO
       SUB 1740,1770,1830,1880,1
       890: PRINT P0$: RETURN
A3 645 REM
E3 650 REM SELECT LANGUAGE SET
A3 655 REM
C4 660 LS = 0: HOME : PRINT TAB(
        12)"LANGUAGE SETS": PRIN
       T : PRINT TAB( 2)"1. ASCI
       I(S)";: PRINT TAB( 20)"7.
        DANISH"
74 670 PRINT TAB( 2)"2. ASCII(U)
       ";: PRINT TAB( 20)"8. NOR
       WEGIAN"
17 680 PRINT TAB( 2)"3. BRITISH"
       ;: PRINT TAB( 20)"9. DUTC
       H"
65 690 PRINT TAB( 2)"4. GERMAN";
       : PRINT TAB( 20)"10.ITALI
       AN"
74 700 PRINT TAB( 2)"5. FRENCH";
       : PRINT TAB( 20)"11.FR/CA
       N.
87 710 PRINT TAB( 2)"6. SWEDISH"
       ;: PRINT TAB( 20)"12.SPAN
       ISH": PRINT TAB( 20)"13.J
       APANESE"
59 720 VTAB 14: HTAB 15: INPUT "
       ENTER YOUR SELECTION:";S$
       : IF VAL (S$) < 1 OR VAL
       (S$) > 13 THEN 720
IE 730 IF PR$ = "3" THEN PRINT P
       1$: PRINT CHR$ (PC); CHR$
        (68); CHR$ (15): PRINT P
       0$:CT = CS:CS = 90
61 740 ON VAL (S$) GOTO 750,770,
       790,810,830,850,870,890,9
       10,930,950,970,990
47 750 IF A2 > 0 THEN LS$ = "ASC
       II(S)":LS = A2: GOTO 1010
63 760 GOTO 1020
0C 770 IF A1 > 0 THEN LS$ = "ASC
       II(U)":LS = A1: GOTO 1010
67 780 GOTO 1020
4E 790 IF BR > 0 THEN LS$ = "BRI
       TISH":LS = BR: GOTO 1010
58 800 GOTO 1020
A8 810 IF GE > 0 THEN LS$ = "GER
       MAN":LS = GE: GOTO 1010
5C B20 GOTO 1020
24 830 IF FR > 0 THEN LS$ = "FRE
       NCH":LS = FR: GOTO 1010
60 840 GOTO 1020
98 850 IF SW > 0 THEN LS$ = "SWE
       DISH":LS = SW: GOTO 1010
64 860 GOTO 1020
86 870 IF DA > 0 THEN LS$ = "DAN
       ISH":LS = DA: GOTO 1010
68 880 GOTO 1020
F3 890 IF NW > 0 THEN LS$ = "NOR
       W.":LS = NW: GOTO 1010
59 900 GOTO 1020
6E 910 IF DU > 0 THEN LS$ = "DUT
       CH":LS = DU: GOTO 1010
5D 920 GOTO 1020
75 930 IF IL > 0 THEN LS$ = "ITA
       L.":LS = IL: GOTO 1010
61 940 GOTO 1020
61 950 IF FC > 0 THEN LS$ = "FR/
       CAN":LS = FC: GOTO 1010
65 960 GOTO 1020
24 970 IF SP > 0 THEN LS$ = "SPA
       NISH":LS = SP: GOTO 1010
69 980 GOTO 1020
35 990 IF JA > 0 THEN LS$ = "JAP
       ANESE":LS = JA: GOTO 1010
52 1000 GOTO 1020
23 1010 PRINT PS$: PRINT CHR$ (P
       C); CHR$ (CS); CHR$ (LS)
       : PRINT P0$
13 1020 IF PR$ = "3" THEN CS = C
       T
DD 1030 RETURN
ES 1035 REM
C8 1040 REM PRINT SIZE MENU
EC 1045 REM
18 1050 HOME : VTAB 1: HTAB 12:
       PRINT "PRINT STYLES"
E4 1060 PRINT : PRINT TAB( 5)"1.
        PICA"
67 1070 PRINT TAB( 5)"2. ELITE":
        PRINT TAB( 5)"3. FINE":
        PRINT TAB( 5)"4. PICA D
       .W.": PRINT TAB( 5)"5. E
       LITE D.W.": PRINT TAB( 5
       }"6. FINE D.W."
14 1080 VTAB 14: HTAB 15: INPUT
       "ENTER YOUR SELECTION:";
       S$: IF VAL (S$) < 1 OR V
       AL (S$) > 6 THEN 1080
E4 1090 PRINT P1$: ON VAL (S$) G
       OSUB 1680,1620,1560,1500
       ,1440,1380: PRINT P0$
D3 1100 RETURN
DE 1105 REM
DB 1110 REM SPECIAL FEATURES
E2 1115 REM
IF 1120 HOME : PRINT TAB( 12)"GR
       APHICS OPTIONS": PRINT
        PRINT TAB( 5)"1. EMPHAS
       IZED PRINT": PRINT TAB(
       5)"2. ENHANCED PRINT"
17 1130 PRINT TAB( 5)"3. GRAPHIC
        DENSITY (SINGLE/DOUBLE)
       ": PRINT TAB( 5)"4. LINE
       S PER INCH (6/8)  ": PRI
       NT TAB( 5)"5. RETURN TO
       MAIN MENU"
AD 1140 VTAB 14: HTAB 15: INPUT
       "ENTER YOUR SELECTION:";
       S$: IF VAL (S$) < 1 OR V
       AL (S$) > 5 THEN 1140
C3 1150 IF S$ = "5" THEN RETURN
A6 1160 IF PQ$ = "NLQ" AND (S$ =
        "1" OR S$ = "2") THEN R
       ETURN
0D 1170 PRINT P1$: ON VAL (S$) G
       OSUB 2010,2030,2070,2100
       : PRINT P0$: GOSUB 1260:
        GOTO 1110
FA 1175 REM
11 1180 REM PRINT QUALITY
FE 1185 REM
87 1190 HOME : PRINT TAB( 12)"PR
       INT QUALITY": PRINT : PR
       INT TAB( 5)"1. DATA QUAL
       ITY": PRINT : PRINT TAB(
        5)"2. SLANT MODE": PRIN
       T : PRINT TAB( 5)"3. NEA
       R LETTER QUALITY"
27 1200 VTAB 14: HTAB 15: INPUT
       "ENTER YOUR SELECTION:";
       S$: IF VAL (S$) < 1 OR V
       AL (S$) > 3 THEN 1200
FE 1210 IF PR$ < > "5" THEN 1230
F6 1220 PRINT P1$: PRINT CHR$ (2
       7); CHR$ (33); CHR$ (42)
       : PRINT CHR$ (27); CHR$
       (48):PQ$ = "DATA": PRINT
       P0$
39 1230 PRINT P1$: ON VAL (S$) G
       OSUB 1910,1960,1930: PRI
       NT P0$: RETURN
EC 1235 REM
DE 1240 REM PRINT TEST
F/ 1245 REM
8D 1250 PRINT P1$: PRINT "This i
       s ";LS$,", ";PS$;", ";PQ
       $;" QUALITY.{}|!0*$%^&[]
       \@--ENHANCED-";EN$;"-EMP
       HASIZED-";EM$;".": PRINT
        P0$: RETURN
F4 1255 REM
1C 1260 REM OPTION SCREEN UPDATE
FB 1265 REM
3F 1270 POKE 35,24: HOME : VTAB
       17: INVERSE : PRINT SPC(
        40): NORMAL
18 1280 VTAB 19: PRINT TAB( 2)"C
       HAR. SET:";CS$;: PRINT T
       AB( 22)"LANG. SET: ";LS$
F1 1290 PRINT TAB( 22)"LINES/INC
       H:";LI$
BE 1300 PRINT TAB( 2)"PR.SIZE: '
       ;PS$;: PRINT TAB( 22)"GR
       APHIC DENS.: ";GD$
10 1310 PRINT TAB( 22)"EMPHASIZE
       D:";EM$
AD 1320 PRINT TAB( 2)"PR.QUALITY
       : ";PQ$;: PRINT TAB( 22)
       "ENHANCED:"EN$;
46 1330 POKE 35,16: RETURN
CA 1340 REM
2F 1350 REM CONTROL ROUTINES
02 1360 REM
5C 1370 REM SET FINE DW
18 1380 IF FI = 0 OR DW = 0 OR P
       Q$ = "SLANT" THEN GOTO 1
       420
44 1390 IF PR$ = "5" THEN PRINT
       CHR$ (FI); CHR$ (DW): GO
       TO 1410: REM FINE DW:
       OKI
54 1400 GOSUB 2150: PRINT CHR$
       PC); CHR$ (FI): REM SET
       DW AND FINE PRINT
11 1410 PS$ = "FINE DW"
E1 1420 RETURN
82 1430 REM SET ELITE DW
CF 1440 IF EL = 0 OR DW = 0 THEN
        GOTO 1480
51 1450 IF PR$ = "5" THEN PRINT
       CHR$ (EL); CHR$ (DW): GO
       TO 1470: REM ELITE D
       W
63 1460 GOSUB 2150: PRINT CHR$
       27); CHR$ (EL)
84 1470 PS$ = "ELITE DW"
F9 1480 RETURN
5D 1490 REM SET PICA DW
F4 1500 IF PI = 0 OR DW = 0 THEN
        GOTO 1540
95 1510 IF PR$ = "5" THEN PRINT
       CHR$ (PI); CHR$ (DW): GO
       TO 1530: REM    PICA DW
95 1520 GOSUB 2150: PRINT CHR$
       PC); CHR$ (PI)
86 1530 PS$ = "PICA DW"
EB 1540 RETURN
3B 1550 REM SET FINE
11 1560 IF FI = 0 OR PQ$ = "SLAN
       T" THEN GOTO 1600
64 1570 IF PR$ = "5" THEN PRINT
       CHR$ (FI): GOTO 1590: RE
       M OKI    FINE
B9 1580 GOSUB 2190: PRINT CHR$ (
       PC); CHR$ (FI)
97 1590 PS$ = "FINE"
DD 1600 RETURN
44 1610 REM SET ELITE
F7 1620 IF EL = 0 THEN GOTO 1660
7F 1630 IF PR$ = "5" THEN PRINT
       CHR$ (EL): GOTO 1650: RE
       M OKI ELITE
B5 1640 GOSUB 2190: PRINT CHR$
       PC); CHR$ (EL)
69 1650 PS$ = "ELITE"
FS 1660 RETURN
3C 1670 REM SET PICA
19 1680 IF PI = 0 THEN GOTO 1720
4D 1690 IF PR$ = "5" THEN PRINT
       CHR$ (PI): GOTO 1710: RE
       M OKI PICA
B1 1700 GOSUB 2190: PRINT CHR$
       PC); CHR$ (PI)
F6 1710 PS$ = "PICA"
E7 1720 RETURN
97 1730 PRINT P1$: PRINT CHR$ (P
       C); CHR$ (RE): PRINT P0$
       : GOSUB 2140: RETURN
EA 1740 IF IB > 0 THEN PRINT CHR
       $ (PC); CHR$ (CS); CHR$
       (IB):CSS = "IBM"
F3 1750 RETURN
4D 1760 REM BLOCK GRAPHICS CHARA
       CTER SET
8A 1770 IF BG = 0 THEN GOTO 1810
6C 1780 IF PR$ = "5" THEN PRINT
       CHR$ (PC); CHR$ (CS); CH
       R$ (BG): GOTO 1800
39 1790 PRINT CHR$ (PC); CHR$ (B
       G)
FE 1800 CS$ = "B.GRAPHICS"
E5 1810 RETURN
B6 1820 REM NORMAL CHARACTER SET
E3 1830 IF NO = 0 THEN GOTO 1870
15 1840 IF PR$ = "5" THEN PRINT
       CHR$ (PC); CHR$ (CS); CH
       R$ (NO): GOTO 1860
39 1850 PRINT CHR$ (PC); CHR$ (N
       0)
B3 1860 CS$ = "NORM."
FD 1870 RETURN
16 1875 REM DOWNLOADABLE CHARACT
       ER SET
12 1880 RETURN
AI 1890 IF GA > 0 THEN PRINT CHR
       $ (PC); CHR$ (GA):CS$
       "GREEK": REM GREEK SET
       C.ITOH)
E3 1900 RETURN
37 1910 IF DQ > 0 THEN PRINT CHR
       $ (PC); CHR$ (DQ):PQ$ =
       "DATA": REM DATA QUALITY
EB 1920 RETURN
14 1930 IF NL > 0 THEN PRINT CHR
       $ (PC); CHR$ (NL):PQ$ =
       "NLQ": REM SET NL QUALIT
       Y
F3 1940 RETURN
6C 1950 REM SET SLANT MODE
EB 1960 IF SL = 0 OR PS$ = "FINE
       " OR PS$ = "FINE DW" THE
       N 2000
B4 1970 IF PR$ = "5" THEN PRINT
       CHR$ (PC); CHR$ (CS); CH
       R$ (SL): GOTO 1990
C6 1980 PRINT CHR$ (PC); CHR$ (S
       L)
9C 1990 PQ$ = "SLANT"
D2 2000 RETURN
FS 2010 IF EM > 0 AND EM$ = "N"
       THEN PRINT CHR$ (PC); CH
       R$ (EM):EM$ = "Y": RETUR
       N : REM EMPHASIZED PRINT
        ON
64 2020 GOTO 2040
B5 2030 IF EN > 0 AND EN$ = "N"
       THEN PRINT CHR$ (PC); CH
       R$ (EN):EN$ = "Y": RETUR
       N : REM    ENHANCED PRINT
        ON
F6 2040 IF EM$ = "Y" OR EN$ = "Y
       " THEN PRINT CHR$ (PC);
       CHR$ (ED): IF DS > 0 THE
       N PRINT CHR$ (PC); CHR$
       (DS)
74 2050 EN$ = "N":EM$ = "N": RET
       URN : REM EMPHASIZED/
       ENHANCED PRINT OFF
87 2060 REM GRAPHIC DENSITY TOGG
       LE
CA 2070 IF G2 > 0 AND GD$ = "1"
       THEN PRINT CHR$ (PC); CH
       R$ (G2):GD$ = "2": GOTO
       2090
6A 2080 IF GDS = "2" THEN PRINT
       CHR$ (PC); CHR$ (G1):GD$
        = "1"
F6 2090 RETURN
A2 2100 REM TOGGLE LINE SPACING
48 2110 IF L2 > 0 AND LI$ = "6"
       THEN PRINT CHR$ (PC); CH
       R$ (L2):LI$ = "8": GOTO
       2130
48 2120 IF LI$ = "S" THEN PRINT
       CHR$ (PC); CHR$ (L1):LI$
       = "6"
El 2130 RETURN
81 2140 PS$ = "PICA":GD$ = "1":C
       S$ = "NORM.":LS$ - "ASCI
       I(S)":PQ$ = "DATA":EN$ =
        "N":EM$ = "N":LI$ = "6"
       : RETURN : REM SET DEFAU
       LTS
IA 2150 REM SET DOUBLE WIDTH MOD
       E
95 2160 IF PR$ = "1" OR PR$ = "3
       " THEN PRINT CHR$ (DW):
       GOTO 2180
8F 2170 PRINT CHR$ (PC);"W"; CHR
       $ (1)
F4 2180 RETURN
14 2190 REM RESET DOUBLE WIDTH M
       ODE
AB 2200 IF PR$ = "1" OR PR$ = "3
       " THEN PRINT CHR$ (15):
       GOTO 2220
71 2210 PRINT CHR$ (PC);"W"; CHR
       $ (0)
DE 2220 RETURN