home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / epson / vprint.lbr / VPRINT.DZC / VPRINT.DOC
Encoding:
Text File  |  1987-12-13  |  12.5 KB  |  262 lines

  1.  
  2.  
  3.  
  4.                  "VPRINT" Vertical Printing Program Instructions
  5.                                      - by -
  6.                                Steven E. Margison
  7.  
  8.                           Copyright 1984, S.E. Margison
  9.  
  10.  
  11.                                  I. INTRODUCTION
  12.              This  program  was  originally  intended  to  print  fanfold 
  13.         adhesive labels for the sides of 3-ring binders.  The idea was to 
  14.         print vertically, so that the labels would be easier to read when 
  15.         the binders were lined up on a shelf.   But,  like many programs, 
  16.         what  started  out to be a quick one-evening job wound up  taking 
  17.         over 25 hours,  17K of source code,  and 4K of executable program 
  18.         code.  Another classic case of "wouldn't-it-be-nice-if..."!
  19.              VPRINT.COM  is intended for use with Z80-based  CPM  systems 
  20.         and  an  Epson  MX80 printer with GrafTrax Plus.   It  should  be 
  21.         obvious that the basis of this program is the use of the graphics 
  22.         mode on the Epson to write out a custom character set,  with  all 
  23.         characters   turned  "sideways."   This  presents  some   unusual 
  24.         formatting problems,  in that margins become switched around.  In 
  25.         order to maintain a vertical label that reads from left-to-right, 
  26.         it is necessary to either buffer all text first, then print it in 
  27.         last-line-in,  first-line-out order,  starting at the left margin 
  28.         of  the paper,  or write each line as received from the  console, 
  29.         justifying to the RIGHT-hand margin.   The second approach is the 
  30.         one that VPRINT uses.   This may cause some headaches when  first 
  31.         using the program as explained later,  but this program is, after 
  32.         all, intended primarily for label-making, not for word-processing!
  33.  
  34.                                     II. USAGE
  35.              The  program  is  disgustingly simple  to  use.   After  the 
  36.         program signs on,  it will prompt you with a '>' character.   You 
  37.         then type in the text you want printed,  the special commands you 
  38.         want, or a combination of both, and then a <RETURN>.  The line is 
  39.         then printed out,  and you are prompted for the next line.   (And 
  40.         THAT took 17K of source code????)
  41.              The  special character set includes all upper case  letters, 
  42.         numbers, and most punctuation, with the following exceptions:
  43.              no control characters accepted
  44.              $ is tall up arrow
  45.              % is tall down arrow (except when used as command lead-in)
  46.              & is fancy border character #1
  47.              < and > are spaces (reserved for future special characters)
  48.                   (note that a regular space character is recognized)
  49.              = is fancy border character #2
  50.              @ is a slashed zero (normal 0 is un-slashed)
  51.              These additional punctuation marks are supported normally:
  52.                   [ ] \ ^ _(underscore)
  53.  
  54.              Any  illegal characters found in the text string are  simply 
  55.         eliminated and the remaining characters in the line printed.  All 
  56.         characters  are  in a 5 X 7 dot-matrix style,  except for  a  few 
  57.         which  are  6 X 7.   An attempt was made to duplicate the  normal 
  58.         Epson character set,  but that is not possible as the Epson  does 
  59.  
  60.  
  61.                                         1
  62.  
  63.  
  64.  
  65.         some  neat  "half-spacing" tricks within its character set  which 
  66.         can't be duplicated in the graphics mode.
  67.  
  68.                               III. SPECIAL COMMANDS
  69.              No  printing  program  would  be  complete  without  special 
  70.         printing  commands,  and VPRINT is no exception!   There  are  at 
  71.         least  14  print  mode combinations (more if  you  start  getting 
  72.         tricky!).   In  addition,  there  are several commands  aimed  at 
  73.         adjusting character/line spacing,  form length, etc.  All special 
  74.         commands  are preceeded by a % character,  and MUST be the  first 
  75.         items  on a text line.   A text line may consist only of commands 
  76.         if  desired.   The  program will report an error and  "kill"  the 
  77.         entire  line  on the first encountered command  systax  or  value 
  78.         error.   Multiple special commands may be used,  provided each is 
  79.         prefaced with its own % sign.  A % sign within the text string is 
  80.         treated as a character,  rather than a lead-in to a command.  The 
  81.         special commands are as follows:
  82.              K   = sets normal graphics (mode K)  (Default)
  83.              L   = sets hi-resolution graphics (mode L)
  84.              D   = sets "double-strike" mode.   Line is  printed,
  85.                    paper is advanced 1 dot height, and line is re-
  86.                    printed.
  87.              T   = Tall characters.  All characters are printed
  88.                    twice normal height. Spacing between characters
  89.                    remains normal.
  90.              En  = sets "Emphasized" mode.  Line is reprinted over itself
  91.                    "n"  number of times,  where "n" is number  1-9.  Note
  92.                    that "n" = 0 cancells this mode, and that "n" = 1 is
  93.                    actually the normal mode of operation (1 pass).
  94.              Cnn = sets maximum number of characters to allow per line
  95.                    This affects right-hand margin placement.
  96.                    (Maximum is 80, Default is 40)
  97.              Wnn = sets  number  of  72"  increments  between  vertical
  98.                    columns. Range is from 1-72, Default is 12 (1/6")
  99.              Sn  = sets number of dot spacings between characters.
  100.                    Range is 1-9, Default is 4.
  101.              \   = suppress line feed at end of line.  Allows for
  102.                    "overstriking" one line with the next line.
  103.              A   = Force paper advance of one line immediately
  104.              F   = Force form feed immediately
  105.              ?   = Prints HELP menu to console (overrides remainder of
  106.                    line)
  107.              N   = returns to Normal character mode (cancells T, D,
  108.                    and E modes)
  109.              R   = re-initialize printer.  Used mainly to reset
  110.                    top-of-form.
  111.              Pnn = sets paper form length. "nn" is 1-11 inches, 
  112.                    Default is 1".
  113.              Q   = Quit program immediately and return to system.
  114.  
  115.              Note  that "n" and "nn" above must be fully  expressed.  For 
  116.         two-digit entries,  use leading zero if necessary.  Error message 
  117.         is generated for any illegal syntax or variable.
  118.  
  119.  
  120.  
  121.  
  122.                                         2
  123.  
  124.  
  125.  
  126.              The  ">"  prompt character is preceeded by the  print  modes 
  127.         currently in effect.  As follows:
  128.  
  129.              K>        (mode K, no special modes set)
  130.              LD>       (mode L, Double strike mode set)
  131.              LE3T>     (mode L, Emphasize with 3 passes, using Tall
  132.                         characters)
  133.              K\D>      (mode K, Double strike mode set, current line
  134.                         will overprint last line)
  135.  
  136.              A typical entry may be as follows:
  137.  
  138.         K>%C20%W36%R%T%E3%DSTEVEN MARGISON
  139.         KE3TD>%F%Q
  140.  
  141.              These  lines  would  set a limit of  20  characters  (%C20), 
  142.         36/72"  line (column) spacing (%W36),  re-set printer (not needed 
  143.         if   program   just  invoked,   as  initialization   of   program 
  144.         automatically  does a %R),  set Tall characters  (%T),  Emphasize 
  145.         with 3 passes (%E3),  and Double-strike (%D).  My name would then 
  146.         be printed,  and the modes would be echoed before the prompt  for 
  147.         the next line.  The next line would do a form feed (%F), and then 
  148.         return to CPM (%Q).   Piece-of-cake,  Right???   Note that all of 
  149.         the  commands on line 1 could have been done first,  and my  name 
  150.         just  typed on the second line with the same results.   The  form 
  151.         feed  and  exit  would  then be on line  3.   A  little  creative 
  152.         thinking  should show how these modes,  plus the overstrike  (%\) 
  153.         function can be mixed to form some unique printing.  Keep in mind 
  154.         that  the Wnn command sets the forward paper motion,  and  values 
  155.         less  than  06 will cause one line to run into or  overprint  the 
  156.         previous line. (This is how Double-striking works; by temporarily 
  157.         setting a W01 mode, then returning to the user's selection.)
  158.  
  159.                  IV. ABOUT MARGINS, LINE LENGTHS, JUSTIFICATION
  160.              The actual length of a line and, more importantly, where the 
  161.         right-hand  or "top" margin appears is a function of the K  or  L 
  162.         modes,  the character count limit, and the number of dot spacings 
  163.         set  between characters (vertically).   Remember the Epson limits 
  164.         for graphics:  mode K is not more than 480 bytes (dots), and mode 
  165.         L  is not more than 960 bytes (dots).   The right-hand margin  is 
  166.         literally  the maximum number of bytes programmed.   The  formula 
  167.         is:  MAX = (NUMCHARS*8) + (SPACING*NUMCHARS)
  168.              Where NUMCHARS is the maximum number of characters set with
  169.              the Cnn command;
  170.              and SPACING is the number of dot spaces set with the Sn
  171.              command.  For the defaults of 40 and 4 respectively:
  172.  
  173.              MAX = (40*8) + (4*40)
  174.                  = 320    + 160
  175.                  = 480
  176.                   which we all know is the maximum for mode K graphics.
  177.         This  will put the top of the first character at  the  right-most 
  178.         head  position on the Epson.   Since this is the maximum for mode 
  179.         K,  any attempt to set Cnn or Snn higher will result in an  error 
  180.         message warning of too many bytes for mode K.  Changing to mode L 
  181.  
  182.  
  183.                                         3
  184.  
  185.  
  186.  
  187.         will  give  more room,  but for the SAME values,  the  right-hand 
  188.         margin  will still be 480 bytes in from the left,  which is  only 
  189.         about half-way across the page in mode L!   As you can  see,  the 
  190.         formula  above determines the position of the "top" of the  line.  
  191.         I  suggest  for any given set of labels (or whatever)  to  print, 
  192.         practice  on  normal  fanfold paper until the proper  margin  and 
  193.         format are determined, then load the real stuff and go to work.
  194.  
  195.                                     V. ERRORS
  196.              The  program,   I  believe,  will  not  let  you  commit  an 
  197.         unpardonable sin.   There are many error messages,  all of  which 
  198.         will  point you to your error.   Like most programs,  though,  it 
  199.         will  ultimately print what you tell it to print,  not  what  you 
  200.         meant it to print!
  201.  
  202.                             VI. SYSTEM COMPATABILITY
  203.              Although  I  have no way to try the program on  another  CPM 
  204.         system,  I  have  kept  the program to normal CPM 2.2  and  above 
  205.         standards. (One caution: the system MUST be a Z80 system, as some 
  206.         instructions are used which are NOT 8080/8085 compatible.)  I  am 
  207.         using the normal LST:  device output system calls, and at no time 
  208.         is  bit 7 sent to the printer.   As long as your system does  not 
  209.         attempt  to  "trap" control characters sent to the  LST:  device, 
  210.         there should be no problems.
  211.  
  212.  
  213.         Well,  like the program,  what started to be a quick one-page set 
  214.         of  instructions has now become several pages  of  documentation.  
  215.         Hope you enjoy this program.  If you are ambitious enough to want 
  216.         to  add  new  features or more character  sets,  contact  me  via 
  217.         CompuServe  E-MAIL (74435,1042) and we can discuss a transfer  of 
  218.         source files.
  219.  
  220.         ********************** COPYRIGHT NOTICE *************************
  221.         This  program  and  associated documentation are  copyright  1984 
  222.         by Steven E. Margison.  Permission is given to CompuServe members 
  223.         to  download  and  use  VPRINT.BIN  and  VPRINT.DOC  as  desired, 
  224.         provided  no sale or profit results from such use,  and  provided 
  225.         all  copyright  notices  remain intact.   Right of sale  of  this 
  226.         program is reserved by the copyright owner.
  227.         *****************************************************************
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.                                         4
  245. **************************************************
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.