




                                    WordStar 2000
                           Printer Description File (PDF)


                            MicroPro Product Development

                Copyright (C) 1986, MicroPro International Corporation
                                 All Rights Reserved

        PDF File Format Version: 1.05 (WordStar 2000 Release 2.0)

        Introduction

           This document describes the data  format  used  by  WordStar  2000
        Printer Description Files.  Armed with this document, a programmer or
        technically  savvy user may modify existing PDF files,  or create new
        ones to suit special case printers.
           WordStar 2000 (as of this date) has two  general  purpose  printer
        drivers  (described  below).    Each of these drivers is data driven,
        i.e.,  their behavior is controlled by the special data  in  the  PDF
        file.    Among  the  data  in the PDF file is the name of the printer
        driver to use.
           PDF files are created by the WordStar  2000  installation  program
        WS2INS.    The data for each printer is stored in a modified DataStar
        format database file.   The installation program reads  the  database
        file to create PDF files.   Other specific information, such as user-
        created Print Xtra strings and selection of printer port to use,  can
        be modified directly by the user with the installation program.
           Most  PDF  files  have  the filename extension .PDF (there are two
        special  PDF  files  used  for  print-to-disk  called  DISKN.OVR  and
        DISKB.OVR).  Valuable information about a PDF file can be obtained by
        the DOS type command.  Typing the PDF file reveals the version number
        of  the  PDF  data format,  the install database key of the installed
        printer,  the install menu selection of the printer (plain-text  name
        of the printer),  and the filename (without extension) of the printer
        driver to use for this printer.
              NOTE: This document is not supported  by  MicroPro  Technical
           Support.  Any changes made to a WordStar 2000 PDF file may cause
           unpredictable  results,  and  will  not be supported by MicroPro
           Technical Support.   Many of the features and objects listed  in
           the  memory  map are incomplete or unsupported features and they
           may not work as expected.  In short, don't even ask.

        General Purpose Printer Drivers

           The two general purpose printer drivers differ in two major areas:
        their technique for emulating print attributes (such as boldface  and
        underscore)  when  the  attribute  is  not  supported  in the printer
        hardware,  and in their technique for calculating print head position
        before printing a character in proportional fonts.
           They also differ in minor printer feature support.
        DRIVERB.OVR
           o  Emulates  print  attributes  by  backspacing.    The `B' in the
              driver name indicates that  it  is  primarily  for  backspacing


                                          1








        June 26, 1986                                          PDF File Format


              printers.
           o  Calculates  print  head  position  by center-to-center spacing.
              This is the technique required  for  daisy-wheel  printers  for
              proportional print wheels.   The print head must be in the cen-
              ter of the character space before the hammer strikes the  wheel
              to  the  paper.    The  behavior  is mandated by the mechanical
              properties of the printer.
           o  Supports bi-directional printing.
        DRIVERN.OVR
           o  Emulates print attributes by carriage return and  overprint,  a
              line at a time rather than character by character.   The `N' in
              the driver name indicates that the driver is primarily for non-
              backspacing printers.
           o  Calculates  print  head  position  by   edge-to-edge   spacing.
              Mechanically,  a  dot-matrix  printer  puts  a character on the
              paper by "painting" it from left to right.   Less  print  wheel
              positioning  arithmetic  is  required,  since the print head is
              properly positioned for the next  character  immediately  after
              printing the last character.
           o  Supports printers with "relative right" head movement commands,
              as  opposed  to HMI (Horizontal Motion Increment) settings (IBM
              Quietwriter, Canon LBP).
           o  Supports proportional printing where character spacing  is  (or
              can be) controlled by the hardware--auto character width.

        PDF File Objects

           This section describes the various types of objects found in a PDF
        file.   Hexadecimal numbers will be described by an appended `H', all
        other numbers are decimal.   Addresses will always  be  specified  in
        hexadecimal.    Other numbers will be specified in one radix or both,
        as appropriate to the object.
           A PDF file begins with identification and a patch area  of  fixed-
        length  objects  01BBH  (443) bytes long.   Following this area is an
        area called the patch pool of whatever size is necessary for the par-
        ticular printer description.   Objects in this area are  referred  to
        indirectly in the patch area and the font structures, which are them-
        selves  found in the patch pool.   Use of the fully packed patch pool
        and indirect references allows PDF files to be of  the  minimal  size
        necessary to hold the printer data.

        Short
           A  short  is  a  16-bit  integer  in  Intel format: low-order byte
        preceding high-order byte.

        PPTRs
           A PPTR is an indirect reference to an object larger than a  short,
        e.g.,  a  string or a font description structure.   A PPTR is a short
        whose value is the offset from the beginning of the PDF file  to  the
        beginning of the object in patch pool storage.

        Strings


                                          2








        June 26, 1986                                          PDF File Format


           Strings are primarily found in the patch pool,  hence are referred
        to by PPTRs.   A string is a sequence of non-zero bytes terminated by
        a  zero.    Other  fixed  length strings are found in the patch area,
        padded to length with zeros.
           Control strings receive special processing by the printer drivers.
        The intent is to allow control strings  to  be  expressed  using  the
        printable  ASCII  characters,  though  the printers require many non-
        printable "escape" sequences.  Control strings are often used to pass
        a  variable value to the printer,  and the format of that variable is
        controlled as described below.   Control  strings  are  processed  as
        follows:

           ^c Send  character `c' after subtracting 40H from its ASCII value.
              Used to send control characters to the printer.   The character
              is converted to upper case before the subtraction occurs,  thus
              "^M" and "^m" both refer to a carriage return character, 0DH.

              Examples:  "^[" becomes an ESCape character.   "^@"  becomes  a
              NULL character.

           %d The  variable  is converted to an ASCII decimal string which is
              sent to the printer.

           %d+n
              `n' has a value from 1 to 9 in ASCII,  and represents a  binary
              value  to  be  added  to  the  parameter  before converting the
              parameter into an ASCII decimal string,  which is then sent  to
              the printer.

              Example:  For  a  variable  value  of 5,  "%d+2" would send the
              string "7" to the printer.

           %d*n
              The parameter is multiplied by "n" before  sending  it  to  the
              printer as an ASCII decimal string.

           %nd
              The  parameter is converted to an ASCII decimal string of mini-
              mum width "n" digits which is sent to the  printer.    "n"  may
              have values from 1 to 9 (in ASCII).

              Examples:  For  a  variable  value  of 5,  "%2d" would send the
              string "05" to the printer.   "%3d" would  send  "005"  to  the
              printer.

           %c The   parameter   is   sent   as  an  8-bit  binary  number  (a
              "character").

           %c+n
              "n" has a value from 1 to 9 in ASCII,  and represents a  binary
              value  to  be added to the variable before sending the variable
              to the printer as an 8-bit binary number.


                                          3








        June 26, 1986                                          PDF File Format



           %C+c
              The binary value of the ASCII character "c"  is  added  to  the
              parameter  before the parameter is sent to the printer as an 8-
              bit binary number.

              Examples:  The string "%C+ " adds 32 (the  value  of  an  ASCII
              space)  to  the variable before sending a one-byte value to the
              printer.

           %c*n
              The parameter is multiplied by "n" before  sending  it  to  the
              printer as an 8-bit binary number.

           %xaa
              "aa" is a hexadecimal number from 00H to FFH.  This form may be
              used  to  send any arbitrary byte constant to the printer.   In
              particular,  it is used to represent characters which have spe-
              cial  value  in  the data base,  specifically comma,  carat and
              double quotes.  Comma would be represented by the string "%x2c"
              and double quote by "%x22".   The hexadecimal digits A-F may be
              represented in upper or lower case.

           %%
              Used to send the character "%" to the printer.

        Printer Patch Area

           The  following table describes objects in the fixed-length printer
        patch area at the beginning of the  PDF  file.    All  addresses  are
        referenced from the beginning of the PDF file.   PPTR objects are in-
        directly referenced, as described above.   All address references are
        in hexadecimal.

        Printer Patch Area Memory Map
        Address     Type      Description

        0000-005B             PDF File Identification
                              This information is grouped at the beginning of
                              the PDF file in a format such that the DOS type
                              command will display the information neatly.

        0000-0013   string    pdf_id.sentinel
                              Sentinel  string  containing PDF format version
                              number

        0014-0015   bytes     carriage return / line feed

        0016-0025   string    pdf_id.prtr_id
                              Key to printer data in Install database

        0026-0027   bytes     carriage return / line feed


                                          4








        June 26, 1986                                          PDF File Format


        Address     Type      Description


        0028-004B   string    pdf_id.prtr_name
                              English description of printer selection

        004C-004D   bytes     carriage return / line feed

        004E-0056   string    pdf_id.driver_name
                              File name (without extension) of the driver  to
                              use with this printer

        0057-0058   bytes     carriage return / line feed

        0059        byte      EOF character, 1AH (stops the type)

        005A-005B   short     pdf_id.filelen
                              Length  of  the PDF file.   If you add items to
                              the end of the patch pool,  you  must  increase
                              this value

        005C-006D             Fundamental Framework

        005C-005D   short     reserved

        005E-005F   short     reserved

        0060-0061   short     n_colors
                              Number of available colors

        0062-0063   short     n_fonts
                              Number of available font groups

        0064-0065   short     n_lheights
                              Number of available line heights

        0066-0067   short     hc_points
                              Horizontal  printer dots per inch.   This value
                              may have only a passing acquaintance  with  the
                              actual control architecture of the printer.  It
                              is  primarily  used internally in WordStar 2000
                              and the printer drivers  to  compute  character
                              widths   and   print  head  movement.     Other
                              mechanisms within the control  strings  may  be
                              used  to  convert  between WordStar 2000's dots
                              per inch and actual printer dots per inch.

        0068-0069   short     hc_inches
                              Always 1--number of horizontal inches that  the
                              above value references

        006A-006B   short     vc_points


                                          5








        June 26, 1986                                          PDF File Format


        Address     Type      Description

                              Vertical printer dots per inch.   This item and
                              address 0066 provide the referential  framework
                              for print head movement on the page.

        006C-006D   short     vc_inches
                              Always  1--number  of  vertical  inches that the
                              above value references

        006E-0094             Sheet Feeder Control Structure

        006E-006F   short     formcap.numtrays
                              Number of installed trays, may not exceed four.

        0070-0071   short     formcap.dead_top
                              Unimplemented.  Amount of unusable space at the
                              top of the sheet.

        0072-0073   short     formcap.dead_bot
                              Unimplemented.  Amount of unusable space at the
                              bottom of the sheet.

        0074-0075   short     formcap.dead_left
                              Unimplemented.  Amount of unusable space on the
                              left margin.

        0076-0077   PPTR      formcap.eject
                              String to eject the current sheet without feed-
                              ing a new one.   Practically,  this string is a
                              feeder deinitialization string.

        0078-0079   PPTR      formcap.select
                              Feeder initialization string.

        007A-007B   short     formcap.select_now
                              If  non-zero,  the sel_tray string also feeds a
                              sheet  of  paper.    Otherwise,  the  feed_tray
                              string is required to actually feed a sheet.

        007C-007D   PPTR      formcap.name[0]
        007E-007F   PPTR      formcap.name[1]
        0080-0081   PPTR      formcap.name[2]
        0082-0083   PPTR      formcap.name[3]
                              Names  used to select a paper tray from the ^PT
                              command of WordStar 2000.

        0084-0085   PPTR      formcap.sel_tray[0]
        0086-0087   PPTR      formcap.sel_tray[1]
        0088-0089   PPTR      formcap.sel_tray[2]
        008A-008B   PPTR      formcap.sel_tray[3]
                              String to command the feeder to select the  ap-


                                          6








        June 26, 1986                                          PDF File Format


        Address     Type      Description

                              propriate tray.

        008C-008D   PPTR      formcap.feed_tray[0]
        008E-008F   PPTR      formcap.feed_tray[1]
        0090-0091   PPTR      formcap.feed_tray[2]
        0092-0093   PPTR      formcap.feed_tray[3]
                              String to command the feeder to feed a sheet of
                              paper from the appropriate tray.

        0094-00D3             Font Array
                              This  array  of  PPTRs  each  references a font
                              description structure in the patch  pool.    If
                              the  PPTR for the NORMAL font is zero,  no font
                              is installed.   If the PPTR for an attribute is
                              zero,  the attribute will be otherwise emulated
                              by the printer driver,  instead of using a font
                              change.

        0094-0095   PPTR      font[0][NORMAL]
        0096-0097   PPTR      font[0][BOLD]
        0098-0099   PPTR      font[0][ITALIC]
        009A-009B   PPTR      font[0][SSCRIPT]
        009C-009D   PPTR      font[1][NORMAL]
        009E-009F   PPTR      font[1][BOLD]
        00A0-00A1   PPTR      font[1][ITALIC]
        00A2-00A3   PPTR      font[1][SSCRIPT]
        00A4-00A5   PPTR      font[2][NORMAL]
        00A6-00A7   PPTR      font[2][BOLD]
        00A8-00A9   PPTR      font[2][ITALIC]
        00AA-00AB   PPTR      font[2][SSCRIPT]
        00AC-00AD   PPTR      font[3][NORMAL]
        00AE-00AF   PPTR      font[3][BOLD]
        00B0-00B1   PPTR      font[3][ITALIC]
        00B2-00B3   PPTR      font[3][SSCRIPT]
        00B4-00B5   PPTR      font[4][NORMAL]
        00B6-00B7   PPTR      font[4][BOLD]
        00B8-00B9   PPTR      font[4][ITALIC]
        00BA-00BB   PPTR      font[4][SSCRIPT]
        00BC-00BD   PPTR      font[5][NORMAL]
        00BE-00BF   PPTR      font[5][BOLD]
        00C0-00C1   PPTR      font[5][ITALIC]
        00C2-00C3   PPTR      font[5][SSCRIPT]
        00C4-00C5   PPTR      font[6][NORMAL]
        00C6-00C7   PPTR      font[6][BOLD]
        00C8-00C9   PPTR      font[6][ITALIC]
        00CA-00CB   PPTR      font[6][SSCRIPT]
        00CC-00CD   PPTR      font[7][NORMAL]
        00CE-00CF   PPTR      font[7][BOLD]
        00D0-00D1   PPTR      font[7][ITALIC]
        00D2-00D3   PPTR      font[7][SSCRIPT]


                                          7








        June 26, 1986                                          PDF File Format


        Address     Type      Description


        00D4-0113             Print Head Positioning--Vertical

        00D4-00D5   PPTR      vdn_fmt
                              Control  string  to move the print head down on
                              the printed page (typically line  feed).    The
                              style   of  downward  motion --  stepwise,   or
                              VMI/line oriented -- is controlled by vdn_type

        00D6-00D7   short     vdmin
                              Minimum value for vdn_fmt variable

        00D8-00D9   short     vdmax
                              Maximum value for vdn_fmt variable

        00DA-00DB   PPTR      vup_fmt
                              Control string to move the print head up on the
                              printed page (reverse line feed).

        00DC-00DD   short     vumin
                              Minimum value for vup_fmt variable

        00DE-00DF   short     vumax
                              Maximum value for vup_fmt variable

        00E0        byte      vdn_type
                              Specifies if downward movement is line based or
                              step based.  Values are an ASCII `l' or `s'.

        00E1        byte      vup_type
                              Specifies if upward movement is line  based  or
                              step based.  Values are ASCII `l' or `s'.

        00E2-00E3   PPTR      vmi_fmt
                              Control  string  to  set the vertical line size
                              (Vertical Motion Increment) for line type  ver-
                              tical movement.

        00E4-00E5   short     vimin
                              Minimum value for VMI.

        00E6-00E7   short     vimax
                              Maximum value for VMI.

        00E8-00E9   PPTR      set_pl
                              Unimplemented.  String to set a particular page
                              length.

        00EA-00EB   PPTR      lsiz_str[0]
        00EC-00ED   PPTR      lsiz_str[1]


                                          8








        June 26, 1986                                          PDF File Format


        Address     Type      Description

        00EE-00EF   PPTR      lsiz_str[2]
        00F0-00F1   PPTR      lsiz_str[3]
        00F2-00F3   PPTR      lsiz_str[4]
        00F4-00F5   PPTR      lsiz_str[5]
        00F6-00F7   PPTR      lsiz_str[6]
        00F8-00F9   PPTR      lsiz_str[7]
                              For  printers  with discrete line sizes,  these
                              control strings are used  to  set  the  desired
                              line height.

        00FA-00FB   short     lsize_steps[0]
        00FC-00FD   short     lsize_steps[1]
        00FE-00FF   short     lsize_steps[2]
        0100-0101   short     lsize_steps[3]
        0102-0103   short     lsize_steps[4]
        0104-0105   short     lsize_steps[5]
        0106-0107   short     lsize_steps[6]
        0108-0109   short     lsize_steps[7]
                              The  corresponding  line  heights  in  vertical
                              printer dots.

        010A-010B   PPTR      sub_on
                              Control string to turn on subscript mode.

        010C-010D   PPTR      sub_off
                              Control string to turn off subscript mode.

        010E-010F   PPTR      sup_on
                              Control string to turn on superscript mode.

        0110-0111   PPTR      sup_off
                              Control string to turn off superscript mode.

        0112-0113   short     s_roll
                              Amount of vertical motion in dots  to  use  for
                              superscript  and subscript roll,  if not imple-
                              mented in hardware.

        0114-0121             Print Head Positioning--Horizontal

        0114-0115   PPTR      hpr_fmt
                              "Relative Right" control string format.

        0116-0117   short     hrmin
                              Unimplemented.    Minimum  value  for  relative
                              right motion.

        0118-0119   short     hrmax
                              Maximum value for relative right.



                                          9








        June 26, 1986                                          PDF File Format


        Address     Type      Description

        011A-011B   PPTR      hpl_fmt
                              Control    string    for    leftward   movement
                              (backspace).

        011C-011D   short     hlmin
                              Minimum value for hpl_fmt variable (if any).

        011E-011F   short     hlmax
                              Maximum value for hpl_fmt variable (if any).

        0120        byte      hpr_type
                              Specifies type of relative right motion,  step-
                              wise or character based.  May not be supported.

        0121        byte      hpl_type
                              Specifies  type of relative left motion,  step-
                              wise or character based.  May not be supported.

        0122-012B             Character Width Control

        0122-0123   PPTR      hmi_fmt
                              Control string to set Horizontal Motion  Incre-
                              ment  --  determines  the  printed  width  of a
                              character,  or really,  the print head movement
                              after striking a character.

        0124-0125   short     himin
                              Minimum value for hmi_fmt variable.

        0126-0127   short     himax
                              Maximum value for hmi_fmt variable.

        0128-0129   PPTR      sp_str
                              Unsupported.    Control string used to space to
                              the right.

        012A-012B   PPTR      bs_str
                              Unsupported.  Control string used to  space  to
                              the left.

        012C-0145             Other Printer Control

        012C-012D   PPTR      bdp_on
                              Unsupported. Control string to turn on bidirec-
                              tional print.

        012E-012F   PPTR      bdp_off
                              Unsupported.   Control   string   to  turn  off
                              bidirectional print.



                                         10








        June 26, 1986                                          PDF File Format


        Address     Type      Description

        0130-0131   PPTR      rev_print
                              Set print direction to reverse (right to left).

        0132-0133   PPTR      fwd_print
                              Set print direction to forward (left to right).

        0134-0135   PPTR      ff_str
                              Form feed string.

        0136-0137   PPTR      crlf_str
                              Nominally, this is the string to perform a car-
                              riage return line feed.  Its meaning is changed
                              in WordStar  2000  2.0  to  handle  some  brain
                              damaged  printers that do an automatic carriage
                              return on a line feed (note the  order,  that's
                              cr  on lf,  not vice versa).   If this value is
                              non-zero,  then this printer is treated as such
                              a machine.  Example: TI-850.

        0138-0139   PPTR      cr_str
                              String  to  move the print head to the far left
                              side of the page.

        013A-013B   PPTR      init
                              Control string to initialize the printer.

        013C-013D   PPTR      dnit
                              Control string to deinitialize the printer.

        013E-013F   short     iwait1
                              Time  to  wait  before  sending  init  or  dnit
                              strings.

        0140-0141   short     iwait2
                              Time   to  wait  after  sending  init  or  dnit
                              strings.

        0142-0143   PPTR      pbflush
                              Control string to flush the printer's buffer.

        0144-0145   short     pbfwait
                              Time to wait after sending a pbflush string.

        0146-0163             Attribute Control

        0146-0147   PPTR      bold_on
                              Control string to turn  on  hardware  supported
                              boldfacing.

        0148-0149   PPTR      bold_off


                                         11








        June 26, 1986                                          PDF File Format


        Address     Type      Description

                              Control string to turn off boldface.

        014A-014B   short     bold_can
                              A  bit  map of other attributes cancelled inad-
                              vertently when boldface is turned on or off.

        014C-014D   PPTR      und_on
                              Control string to turn  on  hardware  supported
                              underscore.

        014E-014F   PPTR      und_off
                              Turn off hardware underscore.

        0150-0151   short     und_can
                              Bit  map of attributes inadvertently turned off
                              when underscore is turned on or off.

        0152-0153   PPTR      doub_on
                              Turn on hardware double strike.

        0154-0155   PPTR      doub_off
                              Turn off hardware double strike.

        0156-0157   short     doub_can
                              Bit map of attributes  inadvertently  cancelled
                              when double strike is turned on or off.

        0158-0159   PPTR      xout_on
                              Turn on hardware strikeout.

        015A-015B   PPTR      xout_off
                              Turn off hardware strikeout.

        015C-015D   short     xout_can
                              Bit  map  of attributes inadvertently cancelled
                              when strikeout is turned on or off.

        015E-015F   PPTR      ital_on
                              String to turn on hardware italics.

        0160-0161   PPTR      ital_off
                              String to turn off hardware italics.

        0162-0163   short     ital_can
                              Bit map of attributes  inadvertently  cancelled
                              when italics is turned on or off.

        0164-01AB             Color and User Strings

        0164-0165   PPTR      color_str[0]


                                         12








        June 26, 1986                                          PDF File Format


        Address     Type      Description

        0166-0167   PPTR      color_str[1]
        0168-0169   PPTR      color_str[2]
        016A-016B   PPTR      color_str[3]
        016C-016D   PPTR      color_str[4]
        016E-016F   PPTR      color_str[5]
        0170-0171   PPTR      color_str[6]
        0172-0173   PPTR      color_str[7]
                              Control strings to set a specific color.

        0174-0175   PPTR      color_name[0]
        0176-0177   PPTR      color_name[1]
        0178-0179   PPTR      color_name[2]
        017A-017B   PPTR      color_name[3]
        017C-017D   PPTR      color_name[4]
        017E-017F   PPTR      color_name[5]
        0180-0181   PPTR      color_name[6]
        0182-0183   PPTR      color_name[7]
                              Corresponding  names  of  the  colors  used  to
                              select from the ^PC menu in WordStar 2000.

        0184-0185   PPTR      user_str[0]
        0186-0187   PPTR      user_str[1]
        0188-0189   PPTR      user_str[2]
        018A-018B   PPTR      user_str[3]
        018C-018D   PPTR      user_str[4]
        018E-018F   PPTR      user_str[5]
        0190-0191   PPTR      user_str[6]
        0192-0193   PPTR      user_str[7]
                              Control strings for user  customization  (Print
                              Xtra).    In PostScript and possibly some other
                              implementations, this is actually a filename of
                              printer commands  to  include  in  the  printer
                              stream.

        0194-0195   PPTR      user_name[0]
        0196-0197   PPTR      user_name[1]
        0198-0199   PPTR      user_name[2]
        019A-019B   PPTR      user_name[3]
        019C-019D   PPTR      user_name[4]
        019E-019F   PPTR      user_name[5]
        01A0-01A1   PPTR      user_name[6]
        01A2-01A3   PPTR      user_name[7]
                              Corresponding  name  of the Print Xtra used for
                              selecting from the ^PX menu of WordStar 2000.

        01A4        byte      usrwidth[0]
        01A5        byte      usrwidth[1]
        01A6        byte      usrwidth[2]
        01A7        byte      usrwidth[3]
        01A8        byte      usrwidth[4]


                                         13








        June 26, 1986                                          PDF File Format


        Address     Type      Description

        01A9        byte      usrwidth[5]
        01AA        byte      usrwidth[6]
        01AB        byte      usrwidth[7]
                              A Print Xtra may have a printed width of 0 or a
                              single character.   For a proportional font,  a
                              value of 1 means narrow,  2 medium, and 3 wide.
                              Other  values  may  be  a  corresponding  ASCII
                              character with equivalent width.

        01AC-01BB             Miscellaneous

        01AC-01AD   short     b_strike
                              Number of strikes for boldface when emulated in
                              the driver.

        01AE-01AF   short     d_strike
                              Number  of  strikes for double strike when emu-
                              lated in the driver.

        01B0-01B1   short     micro_adjust
                              This number controls  the  justification  algo-
                              rithm.    A  value  of zero means that all line
                              spreading is to be done  between  words.    For
                              non-zero values, the larger the value, the more
                              space  is  shifted to between words rather than
                              between letters.

        01B2        byte      ul_char
                              The character used to emulate underscore.

        01B3        byte      xo_char
                              The character used to emulate strikeout.

        01B4        byte      bs_char
                              Unimplemented. The  character  used  for  back-
                              space.

        01B5        byte      sp_char
                              The  character used for justification.   Always
                              an ASCII space.

        01B6        byte      outdev
                              Flag to route the printer output.   0 -  paral-
                              lel, 1 - serial.

        01B7        byte      outnum
                              Specifies the minor device number for the prin-
                              ter output.   Example: outdev = 0,  outnum = 1,
                              the printer output is routed to LPT2:.



                                         14








        June 26, 1986                                          PDF File Format


        Address     Type      Description

        01B8-01B9   short     sep_char
                              Character used to separate body text from foot-
                              notes on a page.

        01BA-01BB   short     sep_len
                              Number of sep_char's to use.

        Font Description Structure

           Font description structures are referred to in the  printer  patch
        area  by  PPTRs.   Addresses below are referenced to the beginning of
        the font description structure.   To find a particular object  for  a
        particular font, add the PPTR value to the memory map value.

        Font Description Structure Memory Map
        Address     Type      Description

        0000-0027             Length of Font Description Structure

        0000-000F   string    lname
                              If this is the NORMAL font, this string is used
                              to  select  the  font  from  the  ^PF  menu  of
                              WordStar 2000.

        0010-0011   short     h_step
                              This number specifies the size  of  a  unit  of
                              horizontal  motion  in  printer dots.   This is
                              where the drivers can  convert  between  driver
                              dots and printer dots if required.

        0012-0013   short     v_step
                              This  number  specifies  the  size of a unit of
                              vertical motion in printer  dots.    In  actual
                              fact, the value is always 1.

        0014-0015   short     width
                              For non-proportional fonts,  this number is the
                              width of each character in dots.   For  propor-
                              tional  fonts,  this value controls the stretch
                              of the ruler line for this font.

        0016        byte      auto_cwid
                              If true (non-zero),  this font will  be  spaced
                              automatically.

        0017        byte      pro_spaced
                              If true, this font is proportional.

        0018-0019   short     low_char
                              This  ASCII  character  is  the  character cor-


                                         15








        June 26, 1986                                          PDF File Format


        Address     Type      Description

                              responding to the first  byte  in  the  propor-
                              tional width table.

        001A-001B   short     char_count
                              The  number  of  sequential character widths in
                              the proportional width table.

        001C-001D   PPTR      protab
                              Pointer to the start of the porportional  width
                              table.  Each value is one byte, giving a limit-
                              ing size of 256 for an entry.  Character widths
                              can be modified to larger values,  however,  by
                              p_scale and p_adjust.

        001E-001F   short     p_scale
                              Multiplier  for  entries  in  the  proportional
                              width table to find true character width.

        0020-0021   short     p_adjust
                              Added to character width after it is multiplied
                              by p_scale.

        0022-0023   short     height
                              Unused  by the general purpose printer drivers.
                              For PostScript, designates the size of the font
                              in points.

        0024-0025   short     reset_on_cr
                              If true,  this font must be  reset  after  each
                              carriage return.

        0026-0027   PPTR      set_string
                              Control string used to select this font.



















                                         16




 character  used  for  back-
                              sp