home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / batch / sw_43.zip / SW-43.DOC < prev    next >
Text File  |  1992-07-11  |  47KB  |  1,047 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.                                         
  17.  
  18.                    ╔═══════════════════════════════════╗  
  19.                    ║                                   ║▒▒
  20.                    ║               SW.EXE              ║▒▒
  21.                    ║       Batch File Enhancement      ║▒▒
  22.                    ║            Version 4.3            ║▒▒
  23.                    ║                                   ║▒▒
  24.                    ╚═══════════════════════════════════╝▒▒
  25.                      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.                                  July 11, 1992
  57.  
  58.                                  SW.EXE 4.2a
  59.                                  Warren Small
  60.                                    (c) 1992
  61.  
  62.                               TABLE OF CONTENTS
  63.  
  64. INTRODUCTION  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    1
  65.      SW.EXE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    1
  66.      DI.EXE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    1
  67.      Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    1
  68.      OPTIONS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    2
  69.      NOTES ON DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . .    2
  70.  
  71. WINDOW APPEARANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . .    3
  72.      /F#  Foreground Color   /B#  Background Color  . . . . . . . . . . .    3
  73.      Color Values . . . . . . . . . . . . . . . . . . . . . . . . . . . .    3
  74.      /L#  Window Border (Lines) . . . . . . . . . . . . . . . . . . . . .    3
  75.      /S#  Shadows . . . . . . . . . . . . . . . . . . . . . . . . . . . .    3
  76.      /W   Wide Edge . . . . . . . . . . . . . . . . . . . . . . . . . . .    3
  77.      /2   Double Spacing   /0  No Margin  . . . . . . . . . . . . . . . .    3
  78.      /R#  Row   /C#  Column . . . . . . . . . . . . . . . . . . . . . . .    4
  79.      /H#  Here  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    4
  80.      /D   Draw Window . . . . . . . . . . . . . . . . . . . . . . . . . .    4
  81.      /Z   Zoom Window . . . . . . . . . . . . . . . . . . . . . . . . . .    4
  82.  
  83. TEXT APPEARANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    5
  84.      /T#  Text Color   /G#  Global Text Color . . . . . . . . . . . . . .    5
  85.      /E#  Enhanced Text Color . . . . . . . . . . . . . . . . . . . . . .    5
  86.      /M#  Border Message  . . . . . . . . . . . . . . . . . . . . . . . .    5
  87.      /J#  Justify . . . . . . . . . . . . . . . . . . . . . . . . . . . .    5
  88.  
  89. SCREEN APPEARANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . .    6
  90.      /K#  Klear Screen (with optional Fill Character) . . . . . . . . . .    6
  91.      /K#  Klear Screen, set Foreground Color  . . . . . . . . . . . . . .    6
  92.      /K#  Klear Screen (with optional Fill String)  . . . . . . . . . . .    6
  93.      /O#  Outside Edge (Screen Border)  . . . . . . . . . . . . . . . . .    6
  94.      /X#  Xtra Lines  . . . . . . . . . . . . . . . . . . . . . . . . . .    6
  95.  
  96. OTHER SWITCHES  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    7
  97.      /P#  Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    7
  98.      /Q   Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    7
  99.      /I#  User Input  . . . . . . . . . . . . . . . . . . . . . . . . . .    8
  100.      /N#  Input Line Number . . . . . . . . . . . . . . . . . . . . . . .    9
  101.      /U   Input Uppercase . . . . . . . . . . . . . . . . . . . . . . . .    9
  102.      /D   Draw Window . . . . . . . . . . . . . . . . . . . . . . . . . .    9
  103.      /ch  Fill Line . . . . . . . . . . . . . . . . . . . . . . . . . . .    9
  104.      /A#  Alert   /A#,#  Alert with Frequency, Duration . . . . . . . . .   10
  105.  
  106. DEFAULTS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   11
  107.  
  108. SCREEN DEFINITIONS  . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
  109.  
  110. TIPS AND TRICKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   14
  111.  
  112. SHAREWARE INFORMATION . . . . . . . . . . . . . . . . . . . . . . . . . .   15
  113.  
  114. SW.EXE History  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   16
  115.  
  116.                                  SW.EXE 4.2a
  117.                                  Warren Small
  118.                                    (c) 1992
  119.  
  120.                                  SW.EXE 4.2a
  121.                                  Warren Small
  122.                                    (c) 1992
  123.  
  124.                                  INTRODUCTION
  125.  
  126.      The batch  file language for the IBM PC could be  described as useful but
  127. not much  else. It is lacking  a great deal in  terms of  flexibility. These 2
  128. utilities, SW.EXE  and DI.EXE, attempt to make batch files  much more powerful
  129. and at the same time make them nice to look at.
  130.  
  131.      SW.EXE  grew out of  my hatred for  the ECHO  statement. Any  time that I
  132. needed  to say something  to the user, ECHO was the  only way. It was slow and
  133. difficult  to make  look halfway  decent. And  if I  wanted color,  there  was
  134. ANSI.SYS...
  135.  
  136.      DI.EXE was introduced  with SW 4.1 as a  response to users  who have been
  137. utilizing SW as an install  tool for software distribution. DI allows interro-
  138. gation of the disk drives to determine if they are ready for  whatever use you
  139. had in mind. This way you  can avoid hardware  errors which can pop up in  the
  140. middle of your nice SW screens. See DI-13.DOC for the details on using DI.
  141.  
  142.      SW.EXE will display up to  20 lines of text in a window using either  its
  143. command  line format  or an  external  'Screen  Definition' file.  With either
  144. method, the color of each line can be  defined separately or as a group. Also,
  145. the colors for  the window, its border, the  screen background and its  border
  146. can  be specified. Five  different window borders are  possible and the screen
  147. background can be filled with characters or complete strings.
  148.  
  149.      SW.EXE  also provides  functions  for  retrieving  input from  the  user,
  150. either single keystrokes or strings, controlling batch  file execution through
  151. branching and alerting the user with various sounds or even simple tunes.
  152.  
  153. Command Line Syntax:
  154.  
  155.        SW [options] "text1" [options] ["text2"] [options] ["text3"] ...
  156.  
  157. External File Syntax:
  158.  
  159.                              SW @filename [label]
  160.  
  161.      The  biggest advantage to using  the external file approach  is that more
  162. than  one window  can be displayed  with only  one call to  SW! This can  be a
  163. tremendous speed advantage if the batch file is being run from a floppy  disk.
  164. The screen definition can  also be written into  the batch file  that utilizes
  165. it so that  disk space is used  optimally. The optional  label shown  above is
  166. used to mark different definitions within the same file. The demo batch  file,
  167. SW43DEMO.BAT, contains  many examples of  both methods. See  page 12 for  more
  168. information.
  169.  
  170.      On the  next page is a  list of the various  switches along with a  short
  171. description  of what  each does. This  list appears on  the screen when  SW is
  172. called without parameters.
  173.  
  174.  
  175.  
  176.                                     Page 1
  177.  
  178.                                  SW.EXE 4.2a
  179.                                  Warren Small
  180.                                    (c) 1992
  181.  
  182.                                    OPTIONS
  183.  
  184.  Window:  /f# Foreground (0-15)  /b# Background (0-7)  /l# Border (0-5)
  185.           /s# Shadow (1-4)  /w Wide Edge  /2 Double Spacing  /0 No Margin
  186.           /r# Row (1-25)  /c# Col (1-80)  /h# here + #  /d Draw  /z Zoom
  187.  Text:    /t#|g# Text (0-15)  /e# Enhanced Text  /m# Border Msg  /j# Justify
  188.  Screen:  /k#[ ] Clear screen with color (0-7) [char]  /o# Outside edge
  189.  Other:   /p#[-] Pause  /a#[,#] Alert (0-9) /q... Query  /char Fill Line
  190.           /i# User Input  /n# Input Line  /u Uppercase  /x% Xtra Lines
  191.  
  192.      Switches can be  in almost any order, upper or lower case  (except /q and
  193. /i, see page 7), and a space is required between each.
  194.  
  195.                                  NOTES ON DOS
  196.  
  197.      - There is a limit to  the length of  a command line whether it is  typed
  198. directly from the DOS prompt or  inside a batch file. This  limit is 128 char-
  199. acters. Anything past that point will be ignored.
  200.  
  201.      - The Query feature  described on page 7 makes use of Errorlevel codes to
  202. allow the batch file to determine which key  has been pressed. A series  of IF
  203. ERRORLEVEL  x statements  are used to test  for the value. You  must test from
  204. largest to  smallest since the statement will be true if the value is equal to
  205. OR greater than x.
  206.  
  207.      - The User  Input feature (page 8) and four  DI switches make use of  the
  208. DOS Environment. (DOS 3.3  or higher is  required for these features) This  is
  209. an area in memory  containing information stored by your boot up procedure  as
  210. well as some  programs. You can see  this information by  typing SET  from the
  211. command  line. There are  three variables  commonly found  in the environment.
  212. PATH is  a list of directories  DOS will search  to find a program  not in the
  213. current  directory.  You  must set  this  yourself,  usually  as  part  of the
  214. AUTOEXEC.BAT  file. COMSPEC  tells DOS  where to  find COMMAND.COM.  If it  is
  215. anywhere but the root  directory of the  boot drive, you will have to  set it.
  216. PROMPT  describes what the DOS prompt will look like. Your DOS manual has more
  217. information.
  218.  
  219.      - To check  the answers returned by User Input, the IF statement is used.
  220. In your batch  file, the variable  name must  be preceded  and followed the  %
  221. sign. On page 8 is a quick example. If you wish to check the actual value  use
  222. this form:
  223.                     IF "%ANS%"=="" goto Label
  224.  
  225. This will  branch to Label if the  user entered nothing. Use IF NOT to reverse
  226. the logic of the comparison.  Adding NOT to the above example would branch  to
  227. Label if ANS had some value.
  228.  
  229.      - To  be sure  there is  room in  the environment  you can  set the  size
  230. manually when  booting. "SHELL=C:\COMMAND.COM  /E:512 /P"  in your  CONFIG.SYS
  231. file will set the size to 512 bytes. This value can be as large as 32768. 
  232.  
  233.  
  234.                                     Page 2
  235.  
  236.                                  SW.EXE 4.2a
  237.                                  Warren Small
  238.                                    (c) 1992
  239.  
  240.                               WINDOW APPEARANCE
  241.  
  242. /F#  Foreground Color   /B#  Background Color
  243.      Foreground and background  colors for the window are  set by the /f#  and
  244.      /b#  switches. The  color can  be selected  using the  numbers  or names.
  245.      Valid background colors are  limited to 0-7. If your command line gets to
  246.      be longer than  128 characters, use the numbers  to gain some space.  DOS
  247.      will ignore anything past the 128th position on the command line.
  248.  
  249.                                  Color Values
  250.  
  251.                0 or bla = Black      8 or BLA = Grey          
  252.                1 or blu = Blue       9 or BLU = Bright Blue   
  253.                2 or gre = Green     10 or GRE = Bright Green  
  254.                3 or cya = Cyan      11 or CYA = Bright Cyan   
  255.                4 or red = Red       12 or RED = Bright Red    
  256.                5 or mag = Magenta   13 or MAG = Bright Magenta
  257.                6 or yel = Brown     14 or YEL = Yellow        
  258.                7 or whi = White     15 or WHI = Bright White  
  259.  
  260. /L#  Window Border (Lines)
  261.      Border type is defined by the /l# (line) switch.
  262.  
  263.                /l0 - none     /l1 - ┌─       /l2 - ╔═
  264.                /l3 - ╒═       /l4 - ╓─       /l5 - █▀
  265.  
  266.      If a  character is  used instead  of a  number, it  will be  used as  the
  267.      window border. (e.g. /l* or /l▓).
  268.  
  269. /S#  Shadows
  270.      A shadow can be  added with the  /s# option.  If the shadow covers  other
  271.      characters on the screen they will be darkened, rather than hidden.
  272.  
  273.                /s1 - right, below (default if /s is used alone)
  274.                /s2 - left, below
  275.                /s3 - right, above
  276.                /s4 - left, above. 
  277.  
  278. /W   Wide Edge
  279.      The /w switch will give your window a wide edge, making it 2 rows  taller
  280.      and  4 columns wider.  Using this  option will reduce  the maximum string
  281.      length  to 64 and  the maximum number of  lines from 20 to  18 if you are
  282.      using a  screen definition. The /w switch will have no effect on a window
  283.      with no border (/l0).
  284.  
  285. /2   Double Spacing   /0  No Margin
  286.      The /2 option will  add a blank line between  each text line  passed. The
  287.      /0 switch removes the  blank space between the  border and first and last
  288.      lines of text.  Combine /0 with the /l0  switch and the resulting  window
  289.      will be only as large as needed for the text passed.
  290.  
  291.  
  292.                                     Page 3
  293.  
  294.                                  SW.EXE 4.2a
  295.                                  Warren Small
  296.                                    (c) 1992
  297.  
  298. /R#  Row   /C#  Column
  299.      The position  of the  window  can  be set  using the  /r# (row)  and  /c#
  300.      (column) switches. These are referenced  to the upper left  corner of the
  301.      window.  If the  window is  too big  to fit,  these coordinates  will  be
  302.      adjusted by the program. Thus if you have a line that places a window  in
  303.      the  lower right hand corner and  you want to add a shadow, just put a /s
  304.      on  the end  of  the line  and the  window  will be  positioned  properly
  305.      without changing the row and column switch values.
  306.  
  307.      If you wish to set the  size of the window yourself, a second /r# and /c#
  308.      will define the bottom  row and right column.  If the text  passed to  SW
  309.      will  not fit  in  the  window, these  settings  will be  adjusted by  SW
  310.      automatically,  adjusting the bottom  and right  sides first.  If you set
  311.      only top  and bottom  or left  and right,  SW will  calculate the  proper
  312.      values for you.
  313.  
  314.      A shorthand  version of absolute  sizing is available.  You can now  show
  315.      the start and end with one switch for the height,  /r#### and one for the
  316.      width, /c####. The first 2 digits are the start value. /r1020 is  equiva-
  317.      lent to /r10 /r20, saving 3 characters on the line. 
  318.  
  319. /H#  Here
  320.      For  simpler positioning,  /h# (here) will  set the row  according to the
  321.      present cursor  position adding  # to  it if  provided. The value  can be
  322.      plus  or minus.  Use the  /h# switch  when you're  trying to  mix  screen
  323.      output from another program with an SW window.  The window can be  easily
  324.      placed relative  to the  other text  and will  be centered left  to right
  325.      unless you use the /c# switch.
  326.  
  327. /D   Draw Window
  328.      When a Pause,  Query or User Input is  utilized, the window will  "popup"
  329.      on the screen  and disappear when  the pause  finishes or  the input  has
  330.      been processed. If you  want the window to be left on the screen, specify
  331.      the /d  switch. This will draw  the window instead.  See page  7 for more
  332.      information on Pause, Query and User Input.
  333.  
  334.      ┌──────────────────────────────────────────────────────────────────────┐
  335.      │ NOTE TO PREVIOUS USERS  -  Since Pause, Query and User Input windows │
  336.      │ now disappear when the function is completed, you may wish to change │
  337.      │ your batch files by adding the /D switch.                            │
  338.      └──────────────────────────────────────────────────────────────────────┘
  339.  
  340. /Z   Zoom Window
  341.      A special effect for  SW is Zoom Window. Sometimes called "exploding"  by
  342.      other  applications, this  switch will  cause the window  to be  drawn in
  343.      several steps, from  small to its final size.  The shadow and border  are
  344.      zoomed as well with the text added when the proper size is reached.
  345.  
  346.  
  347.  
  348.  
  349.  
  350.                                     Page 4
  351.  
  352.                                  SW.EXE 4.2a
  353.                                  Warren Small
  354.                                    (c) 1992
  355.  
  356.                                TEXT APPEARANCE
  357.  
  358. /T#  Text Color   /G#  Global Text Color
  359.      Text color  can be controlled with the /t# and /g# switches. Both use the
  360.      same  color table shown above  and both are position  sensitive. /g# will
  361.      change the text color  for all text following the switch. /t# will effect
  362.      only the text string immediately after  the switch. Multiple /g# switches
  363.      could be used to color groups of lines. To make "text" blink,  add 128 to
  364.      the color # or  put a + after the color name. (e.g. red+ = 4 +  128 = 132
  365.      = blinking red). The window foreground color can also blink if desired.
  366.  
  367. /E#  Enhanced Text Color
  368.      This switch selects  the "enhanced"  text color. This  is the color  used
  369.      when  you want  to highlight  a character  within  a  line. In  the Query
  370.      example below the  ~ (tilde)  character preceding  the 'Y'  and 'N'  will
  371.      cause these characters  to appear bright  red (/eRED) while  the rest  of
  372.      the text is  the default bright  white. If  the e  parameter is  omitted,
  373.      SW.EXE will use the  color of the current line with the opposite intensi-
  374.      ty. There is no limit to the number of characters that can be  highlight-
  375.      ed on each line.
  376.  
  377. /M#  Border Message
  378.      A  /m# preceding a text string  marks the string  as a Border Message. If
  379.      it  is the first  string in the window, it will  appear at the top. If it
  380.      appears after the first line of regular text, the message will appear  at
  381.      the bottom. The # must  be l, r or c for  left, right and  center. Center
  382.      is the  default if /m  is used alone.  The message color  is defined  the
  383.      same way as all other text with /t#, /g#, and /e#.
  384.  
  385. /J#  Justify
  386.      Text can be  justified (aligned)  to the  left or  right as  well as  the
  387.      default  centering.  This  switch works  on  all  strings  following  its
  388.      position, just like /g#.  /jl will align  text left and /jr will  line up
  389.      the text to the right. /jc would restore the default.
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.                                     Page 5
  409.  
  410.                                  SW.EXE 4.2a
  411.                                  Warren Small
  412.                                    (c) 1992
  413.  
  414.                               SCREEN APPEARANCE
  415.  
  416. /K#  Klear Screen (with optional Fill Character)
  417.      The /k#  switch will clear the screen  using the color # (0-7) and places
  418.      the cursor at  the upper left  corner. A  single character  can be  added
  419.      after the # to  give some texture  to the screen. (e.g.  /k4─  or /kred─)
  420.      This can make the shadow effect more interesting. 
  421.  
  422. /K#  Klear Screen, set Foreground Color
  423.      A second /k# switch on the  same line can be used to set the screen fore-
  424.      ground  color (0-15).  SW /kblu  /kWHI sets  the screen  color to  bright
  425.      white  on blue. This  will NOT  affect the current DOS  screen color. The
  426.      default screen foreground value is 7 or whi.
  427.  
  428. /K#  Klear Screen (with optional Fill String)
  429.      Instead of a simple fill character for the background, a string could  be
  430.      used in  the form /k#string. The string  can be up to 80 characters long.
  431.      Interesting patterns will result  depending on the  length. Lengths  like
  432.      2, 4, 5, 8, 10,  etc. divide into 80 evenly. Other values result in  each
  433.      line being offset from the last. Don't limit  yourself to just words. Use
  434.      some of  the special IBM characters  in different  combinations. The Demo
  435.      batch  file has  some examples.  If you  want spaces  within the  string,
  436.      either surround the string with quotes  or substitute the underscore  (_)
  437.      for each space. They will be replaced by spaces before being displayed.
  438.  
  439. /O#  Outside Edge (Screen Border)
  440.      The  /o# switch will  set the  screen border color. All  color values are
  441.      valid. Using the switch without a color will reset the border to  normal.
  442.      This switch  could be used  alone to set  or reset  the border.  SW /ored
  443.      will  set the  screen  border  to red.  Some programs  ignore  the border
  444.      color, others  reset it and still others  set one of  their own. You will
  445.      have to experiment on your own is you wish to  set a special border color
  446.      for a program.
  447.  
  448. /X#  Xtra Lines
  449.      SW  4.3  is now  EGA 43  and VGA  50 line  aware, i.e.  if the  screen is
  450.      already in one  of those modes,  SW will be  able to  utilize the  entire
  451.      screen. This  switch  provides  a way  for SW  to setup  43  and 50  line
  452.      displays by  using /X43 and  /X50 respectively. /X25  will return to  the
  453.      normal  25 line  mode.  The maximum  text lines  displayed  in a  box  is
  454.      increased to 38 in the 43 line mode and 45 in the 50 line mode.
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                     Page 6
  467.  
  468.                                  SW.EXE 4.2a
  469.                                  Warren Small
  470.                                    (c) 1992
  471.  
  472.                                 OTHER SWITCHES
  473.  
  474. /P#  Pause
  475.      The /p#  switch will pause for #  10ths of a second before proceeding. If
  476.      # =  0 or is missing the program  will wait for the  user to press a key.
  477.      If you  combine Query  and Pause,  the pause  will occur after  the query
  478.      unless the query  specifies a default (See below).  Adding a - after  the
  479.      number will allow the user to interrupt the  timer. e.g. /p50- will pause
  480.      for 5  seconds or less if the user presses a key. Maximum value for pause
  481.      is 300 or 30 seconds.
  482.  
  483. /Q   Query (Controlled Branching)
  484.      The Query  switch (/q...)  allows user  input of  single characters.  The
  485.      selected key  sets the  DOS Errorlevel allowing  conditional branches  in
  486.      your batch file. 
  487.  
  488. Example:       sw /eRED "Continue?" "~Yes  ~No" /qyn
  489.                if errorlevel 2 goto exit
  490.                if errorlevel 1 goto next
  491.  
  492.      This will wait for  the user to press  the 'y'  or 'n' key rejecting  all
  493.      other keystrokes with a  'beep'. If 'n' is pressed, Errorlevel 2 will  be
  494.      set and the batch file will  branch to the label ":exit".  'y' will cause
  495.      a branch to ":next".
  496.  
  497. /Q   Special Characters, ~ ` ^ *
  498.      If  the ~ (tilde)  character immediately  follows the /q, the  ESC key is
  499.      also available and will set Errorlevel 0 if pressed. Up to 70  characters
  500.      can be designated as  option keys. If you  wish to use the  space bar  or
  501.      the piping  (|) and  redirection  (< or  >) characters,  enclose all  the
  502.      characters in quotes. (e.g. /q"abc "). Query is not case-sensitive.
  503.  
  504.      The `  or ^ character can  be used to indicate  a default choice for  the
  505.      Query. This choice is available to avoid conflicts with NDOS/4DOS.
  506.  
  507. Example:       sw /eRED "Continue?" "~Yes  ~No" /q^yn
  508.  
  509.      This makes a  'Y' the  default. SW will return  Errorlevel 1 if ENTER  is
  510.      pressed.  Also, by  combining a  pause  with a  default choice,  SW  will
  511.      return the default if no key is pressed before the pause time elapses.
  512.  
  513.      An asterisk (*) used in  the Query string acts like  a wild card  choice.
  514.      SW  will  return an  Errorlevel  corresponding  to  its  position in  the
  515.      string.
  516.  
  517. Example:  sw /eRED "Press ~Y to Continue" "Any other key to abort" /qy*
  518.  
  519.      'Y'  returns Errorlevel  1  and  all other  keys return  2. ESC  and/or a
  520.      default response  could be  combined with  the wildcard  option as  well.
  521.      Pressing ENTER  would then  return the default  choice as  would a  Pause
  522.      timeout.
  523.  
  524.                                     Page 7
  525.  
  526.                                  SW.EXE 4.2a
  527.                                  Warren Small
  528.                                    (c) 1992
  529.  
  530.      Users who  wish SW  to flush the  keyboard buffer prior  to checking  for
  531.      Queries can use an uppercase  /Q switch rather than a  /q. In both cases,
  532.      the result of the query is the same.
  533.  
  534. /I#  User Input (Requires DOS 3.3 or higher)
  535.      The /i#  switch will add  an edit line  to the window  which will  accept
  536.      User  Input. The #  defines the  length of the line.  This feature can be
  537.      used to  ask for  directory  names, file  names, drive  letters or  other
  538.      information  which can  then be used by  the batch file. SW  will put the
  539.      answer in  the batch file's environment  with the label  ANS. DOS 3.3  or
  540.      higher is needed  for this feature. You can then use the  ANS variable in
  541.      your batch  file. A  Pause used  with this  feature will occur  after the
  542.      input.
  543.  
  544. Example:            sw "Which Directory?" /i40
  545.                     if exist %ans%\nul cd %ans%
  546.  
  547.      This  does  has  some limitations  since  it is  difficult  to check  the
  548.      validity of the answer from a batch file.
  549.  
  550.      ┌─────────────────────────────────────────────────────────────────────┐
  551.      │ NOTE TO SW 3.8 USERS: If you have used the /i# switch in your batch │
  552.      │ files,  be sure to  remove the line  "CALL SW-ENV.BAT"  since  this │
  553.      │ version does not create the batch file in favor of direct manipula- │
  554.      │ tion of the environment.                                            │
  555.      └─────────────────────────────────────────────────────────────────────┘
  556.  
  557. /I#var  User Input, Custom Variable Name
  558.      Optionally, you can specify your own  environment variable name with  the
  559.      /i#  switch. The variable  is indicated  by a string, up  to 8 characters
  560.      long, placed  after the  number. e.g.  /i24Dir gives  you a  24 character
  561.      field  and  places the  answer  in  the  environment  variable DIR.  (All
  562.      environment variables are shifted to upper case.) This allows you to  get
  563.      more  than one string before processing. Just be sure your environment is
  564.      sized properly. Check the SHELL command in your DOS manual.
  565.  
  566.      The string input  editing keys include HOME,  END,  ,  ,  BackSpace, DEL,
  567.      INSert and  Overtype modes  and use  of the  ESCape key  for aborting.  A
  568.      large  cursor indicates the  Overtype mode  and a  small cursor signifies
  569.      Insert. 
  570.  
  571.      IMPORTANT  NOTE: SW 4.2a  altered the  action of ESC by  NOT changing the
  572.      original value  and  returning EL  1 to  the  batch  file. This  prevents
  573.      unnecessary  alteration of the  environment. If  an error  occurs when SW
  574.      tries to add the result to  the environment, an EL 2 will be returned. EL
  575.      0 is returned with normal input.
  576.  
  577.      When  using the  /I switch, SW will  check the environment to  see if the
  578.      variable  you are using is already  present. If it  is, the value will be
  579.      used as a default  value in the User  Input field. A  SET command  should
  580.      always precede  an SW  call with  the /I  switch. If  you do  NOT want  a
  581.  
  582.                                     Page 8
  583.  
  584.                                  SW.EXE 4.2a
  585.                                  Warren Small
  586.                                    (c) 1992
  587.  
  588.      default, you have  to make sure the variable  is not present. 'SET  ANS='
  589.      preceding the input  call will  make sure  there is no  value in the  ANS
  590.      variable. 
  591.  
  592.      Like the  /Q switch, /I in  SW 4.2 will flush  the keyboard buffer if  an
  593.      uppercase  /I is used  rather than  /i. The results for  both are equiva-
  594.      lent.
  595.  
  596. /I####  User Input, Long Strings
  597.      If you need  to get string  input that  is longer than the  maximum field
  598.      length of 70 , use  the form /I####. The last  2 digits define  the field
  599.      size and  the rest  of the  number represents  the maximum length  of the
  600.      string. e.g /I8020  defines a  20 character field  with a maximum  string
  601.      length  of 80. Additionally, if  the default value  found in the environ-
  602.      ment exceeds the string length, SW  will automatically adjust to  compen-
  603.      sate.  However, the  string cannot  be  made  any longer.  Maximum string
  604.      length is 127 characters  minus the length of the variable name.  Maximum
  605.      field length is 70 if it  is on a line by itself. The field size will  be
  606.      adjusted if its length plus  the length of text on the same line  exceeds
  607.      70 or 64 if using wide margins.
  608.  
  609. /N#  Input Line Number
  610.      By default,  the User Input field is  placed on the last line of the box.
  611.      By  using the /n#  switch, the field can  be placed on any  line. If # is
  612.      positive,  the field  will appear  after the  string on  line #. If  # is
  613.      negative, the field will appear by itself on line #.
  614.  
  615. /U   Input Uppercase
  616.      If you want only uppercase characters in the  answer, use the /u  switch.
  617.      This can  be useful  when asking for a  drive letter and want  to put the
  618.      results on the screen for verification.
  619.  
  620. /D   Draw Window
  621.      Pause,  Query  and User  Input windows  "popup" on  the screen,  i.e they
  622.      disappear  after the Pause, Query or Input finish. /D is used if you want
  623.      the window to stay on the screen. 
  624.  
  625. /ch  Fill Line
  626.      This parameter  is used  to indicate  a character  which will be  used to
  627.      fill  a text  line position  in the  window. Any  character that  is  not
  628.      already used by another  switch is valid. This  switch could be  used for
  629.      horizontal separators  in the  text box  using a  ─ (ASCII  196)  or a  ═
  630.      (ASCII 205).  The area filled  is just inside the border  of the box. The
  631.      switch should  be positioned as if it  were a string  on the command line
  632.      or within the Screen  Definition. Its color can  be specified the same as
  633.      a  normal text line.  See the  first Screen Definition on  Page 12 for an
  634.      example of its use.
  635.  
  636.  
  637.  
  638.  
  639.  
  640.                                     Page 9
  641.  
  642.                                  SW.EXE 4.2a
  643.                                  Warren Small
  644.                                    (c) 1992
  645.  
  646.  
  647. /A#  Alert   /A#,#  Alert with Frequency, Duration
  648.      The  Alert switch (/a#) can be  used to produce  the normal IBM beep if #
  649.      is 0  or missing. If that's too boring, nine other sounds can be produced
  650.      varying from simple tones to more complex sounds using  the values below.
  651.  
  652.  
  653.                              Alert Switch Values
  654.                       1 - Low Freq Tone    5 - Bweep Two
  655.                       2 - Mid Freq Tone    6 - Bomb     
  656.                       3 - High Freq Tone   7 - Siren    
  657.                       4 - Bweep One        8 - Phasor   
  658.                                  9 - Tweeter
  659.  
  660.      The demo batch file gives you a chance to try them all.
  661.  
  662.      The /A switch can also produce  any tone that the PC speaker can put out.
  663.      Using  the form /A##,##,  the first  number will be the  frequency of the
  664.      tone (20-20000)  and  the  second  is its  duration  (1-300 tenths  of  a
  665.      second). Using a screen definition, songs  are actually possible using  a
  666.      series of lines like  "_window /a440,1". This produces  a 440 hertz  tone
  667.      for 1 tenth  of a second. SW43DEMO.BAT has  some short examples. The  use
  668.      of  a screen  definition is  needed for speed  of execution.  Trying this
  669.      from several command  lines in the batch file will result in  a less than
  670.      smooth output.
  671.  
  672.      For you  musicians out  there, there  is an  easier way  to create  those
  673.      little tunes. Notes can  be specified with the /A switch as well.  Middle
  674.      C is designated as  C4. A sharp is  shown as C4#  and a flat as  B3b. The
  675.      full form  of the switch is /AA4,10 which will play an A, 4th octave, for
  676.      1 second. The tunes in SW43DEMO.BAT use  this form of /A. The valid range
  677.      is from  E0 to B9. It  should be noted that  the IBM  speaker has limita-
  678.      tions  in reproducing  high notes  and  the  practical limit  is probably
  679.      around a G9 or about 12,000 Hz.
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.                                    Page 10
  699.  
  700.                                  SW.EXE 4.2a
  701.                                  Warren Small
  702.                                    (c) 1992
  703.  
  704.                                    DEFAULTS
  705.  
  706.      Yellow  double line border on  a centered blue  window with white single-
  707. spaced text. No Clear Screen, Shadow or Zoom.  (/fYEL /bblu /gWHI /l2)
  708.  
  709. Example:  sw /kwhi /fblu /bred /gYEL "Line 1" /tWHI "Line 2" "Line 3" /s2
  710.  
  711.      This  will display a blue (/fblu) on red (/bred)  window with a shadow to
  712. the left  and below it (/s2). The  screen color will be white (/kwhi). Lines 1
  713. and  3 are bright yellow (/gYEL)  and line 2  is bright white (/tWHI). See the
  714. batch file SW43DEMO.BAT for many more examples.
  715.  
  716.      If  no text  strings  are passed,  features such  as Clear  Screen (/k#),
  717. Query (/q...),  Pause (/p#), Alert  (/a#[,#]), and  Outside Edge (/o#)  can be
  718. used with no window output. (e.g. sw /p10 will pause for 1 second.)
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.                                    Page 11
  757.  
  758.                                  SW.EXE 4.2a
  759.                                  Warren Small
  760.                                    (c) 1992
  761.  
  762.                               SCREEN DEFINITIONS
  763.  
  764.      Screen  Definitions, introduced  with version  4.0, greatly  enhance  the
  765. flexibility and  power of SW. It  simplifies the command  line by putting  all
  766. the switches and  text into  a file  that SW  can read  into memory.  Multiple
  767. windows can be defined  in the file  and displayed with one call to  SW. Also,
  768. text handling by one window is expanded to 20 single spaced lines.
  769.  
  770.      When you run SW43DEMO.BAT,  you can easily see  the advantages of using a
  771. screen definition.  All switches  just described  are applicable  in a  screen
  772. definition, including Query, Pause, and User  input. Windows will be displayed
  773. in  the order that they are  read from the file. A pause with the third window
  774. causes the pause to take place after the third window is displayed.
  775.  
  776.      In the batch file, the syntax for using a screen definition is:
  777.  
  778.                              SW @filename [label]
  779.  
  780. The definition can be in  a separate file or even within the same batch  file.
  781. The optional label is  used when more than one  definition is in the file. The
  782. default label is 'Display'. 'End_Display' marks the end of the definition.
  783.  
  784.      What follows is  a breakdown of  a portion  of one of the  screen defini-
  785. tions  that can be found in  SW43DEMO.BAT. There are a total  of 5 definitions
  786. used by the  demonstration, three of  which are within the batch  file and two
  787. are from external files. The first column contains  a short description of the
  788. line in the second column.
  789.  
  790. ┌─────────────────────┬─────────────────────────────────────────────────────┐
  791. │Default Label        │ :Display                                            │
  792. │first window         │ _window /kcya┼ /r2 /s /bred /w /0                   │
  793. │text 1               │ SW.EXE - Expanded Text Handling!                    │
  794. │text 2, new color    │ /tWHI+ Multiple Windows!                            │
  795. │text 3, footer       │ /m  v 4.3                                           │
  796. │2nd window           │ _window /r10 /s /bwhi /gblu /l1 /fred /0            │
  797. │text 1, new color    │ /tBLU Optional Command Line Syntax:                 │
  798. │text 2               │ SW @filename [label]                                │
  799. │3rd window           │ _window /r16 /s /bwhi /gblu /l1 /fred /0            │
  800. │text 1, new color    │ /tBLU SW 4.x ADDITIONAL FEATURES                    │
  801. │text 2, fill line    │ /tred /─                                            │
  802. │text 3, justify left │ /jl - Define the entire screen with multiple windows│
  803. │text 4               │ using external text files.                          │
  804. │4th window, pause    │ _window /r25 /l0 /0 /p100-                          │
  805. │text 1               │ - Press any key for more -                          │
  806. │5th window, pause    │ _window /r19 /bwhi /gblu /l0 /jl /0 /p100-          │
  807. │text 1               │ - Text handling can be expanded to 20 single-spaced │
  808. │text 2               │   lines per window.                                 │
  809. │.                    │ .                                                   │
  810. │.                    │ .                                                   │
  811. │Final label          │ :End_Display                                        │
  812. └─────────────────────┴─────────────────────────────────────────────────────┘
  813.  
  814.                                    Page 12
  815.  
  816.                                  SW.EXE 4.2a
  817.                                  Warren Small
  818.                                    (c) 1992
  819.  
  820.      The  _window line  contains the  switches  that  describe the  window and
  821. screen  and have the same form as they would on a  command line, preceded by a
  822. slash and  separated by a space. The lines that follow  will be interpreted as
  823. text until another '_window' or the 'end_display' label is found. 
  824.  
  825.      The text switches can appear on the same line preceding the text. The  /t
  826. switch is used to change the  color one line of text and is separated from the
  827. text by a space. /g can be  used before a text line to change the color of the
  828. rest of the lines. /j can be used  to change the text alignment and /m is used
  829. to specify a border message. Multiple switches can precede the text. The  text
  830. can be enclosed by  quotes if additional spaces  before or after  are desired.
  831. This  example has 4  pauses and  defines small windows that  fit inside larger
  832. ones to change the text without redrawing the whole window.
  833.  
  834.      If a different label is needed, simply  substitute it for 'Display'.  The
  835. label can be up to 15 characters. In SW43DEMO.BAT the  other 2 definitions use
  836. the labels 'Snd_Menu' and '4.3'.
  837.  
  838.      Note  that when  using the  /k switch  with  a fill  string in  a  screen
  839. definition,  do not  use quotes  around  the  fill string.  This is  necessary
  840. because of the way  the switch is processed  when using the screen definition.
  841. As  before, if  you need  spaces within  the string,  use the  underscore  (_)
  842. character. It will be replaced with a space.
  843.  
  844.      A Query will have to  be the last item in  the definition for  the return
  845. code to be valid. User Input can occur anywhere but you  will have to wait for
  846. the entire definition to be displayed before checking the answer.
  847.  
  848.      Environment variables  will be  evaluated when  included inside a  screen
  849. definition. This enables you  to create a screen to display the user's answers
  850. or other  information without having to  resort to the  command line mode.  If
  851. the variable is not found,  the variable name will be displayed in the  window
  852. just as it appears in the screen definition.
  853.  
  854.      It  is possible  to "nest"  screen definitions.  One potential use  is to
  855. reuse  a portion of  one definition and add a new  window to it. Here's what a
  856. simple example would look like:
  857.  
  858.                                 :Display1    
  859.                                 :Display2    
  860.                                  _window ... 
  861.                                  text        
  862.                                 :End_Display1
  863.                                  _window ... 
  864.                                  text        
  865.                                 :End_Display2
  866.  
  867. The command  "SW @file  Display1" would  show only  the first  window and  "SW
  868. @file Display2"  would display both. Any  line beginning with  a colon (:)  is
  869. ignored by SW.  The possibilities are  endless and  could save  you some  disk
  870. space.
  871.  
  872.                                    Page 13
  873.  
  874.                                  SW.EXE 4.2a
  875.                                  Warren Small
  876.                                    (c) 1992
  877.  
  878.                                TIPS AND TRICKS
  879.  
  880.      - Change the contents  of a window without redrawing the whole thing. Use
  881. the /l0 and /0 switches to  create a window  just big enough for the text  and
  882. without a border. This way  you can overwrite part or all  of the inside  of a
  883. window and change the text in a flash. The first demo screen definition  above
  884. uses this technique.
  885.  
  886.      - Use the ECHO  batch file command  to create screen definitions "on  the
  887. fly". If you use the redirect  character > and the redirect with append >> you
  888. can build a screen  definition while running the batch file. In  SW43DEMO.BAT,
  889. this method is used to create the help screen for DI.EXE. Here is a portion:
  890.  
  891.      echo :Display > di.hlp
  892.      echo _window /kmag▒─┼─▒ /s /bred /r2 /0 /w >> di.hlp
  893.      echo SW.EXE - Now with DI!>> di.hlp
  894.      echo /mc  v 4.2 >> di.hlp
  895.      echo _window /jl /s /0 /r9 >> di.hlp
  896.      echo /mc  Disk Information >> di.hlp
  897.      echo.>> di.hlp
  898.      di >> di.hlp
  899.      echo. >> di.hlp
  900.      echo _window /r25 /bblu /l0 /0 /p300- >> di.hlp
  901.      echo  - Press any key to continue - >> di.hlp
  902.      echo :End_Display >> di.hlp
  903.  
  904. The  first line creates  the file  "di.hlp" and the following  lines append to
  905. it. Then you call SW @di.hlp. Please note  that, if quotes are used around any
  906. strings, the  >> should be placed directly after the end  quote so there won't
  907. be a space  after it in the  file. If there is a  space, SW would display  the
  908. end quote in the window which is  probably not desirable. You should also keep
  909. in mind when capturing  text from another program,  that any text  longer than
  910. 70 characters  will be  truncated and  should be less  than 20 lines  long. If
  911. more lines are found they are  ignored. This way you can show the result of an
  912. operation without destroying the look of the screen.
  913.  
  914.      - Use  the Enhanced  text color attribute  (/e#) to display  text in  two
  915. colors on the same line. You could make whole words stand out in this manner.
  916.  
  917.                     SW /tRED /eRED+ "~B~l~i~n~k~i~n~g Red"
  918.  
  919.      - If you  want to display an empty  window, set the  size with /r#### and
  920. /c####, then pass one space in a string. SW /r814 /c2060 " "
  921.  
  922.      - Use a FOR  loop to evaluate  errorlevels returned by a Query.  Although
  923. it is slower and requires  the use of numbered labels,  it can shorten  a long
  924. series of IF ERRORLEVELs to  one line. In the demo batch file, the sound  menu
  925. uses this line to select the sound:
  926.  
  927.   for %%e in (1 2 3 4 5 6 7 8 9 10 11 12) do if errorlevel %%e goto beep%%e
  928.  
  929.  
  930.                                    Page 14
  931.  
  932.                                  SW.EXE 4.2a
  933.                                  Warren Small
  934.                                    (c) 1992
  935.  
  936.                             SHAREWARE INFORMATION
  937.  
  938.      These programs  are "shareware".  You are  allowed to  use the  programs,
  939. free of  charge, for  a reasonable  amount of  time. If  you find  them to  be
  940. useful, and continue to utilize them, a registration  fee of $15 is  required.
  941. This will  entitle you to  personal notification of  future releases and  give
  942. your suggestions for enhancements more value. 
  943.  
  944.                             *** NEW PROGRAMS! *** 
  945.  
  946.      Anyone registering SW  4.3 will receive a  disk with the latest  version,
  947. plus  an  additional program,  SWV.EXE. This  program  is a  simple text  file
  948. viewer that integrates with  SW. SW can generate a window and then call SWV to
  949. display the file within  that window. This can  be indispensable when  a batch
  950. file needs to display a  large amount of information with  only a little work.
  951. SWV includes features like  Search, Place Marks, and Zoom to full screen.  SWV
  952. can be used as a stand-alone as well and is EGA 43 and VGA 50 line aware.
  953.  
  954.      You  will also  receive SW-DIR.EXE,  a  pop-up  file directory  for batch
  955. files. It inherits many  of the appearance switches  of SW while  allowing the
  956. user  to pick from the file list and return  the name through the environment.
  957. DOS 3.3 or higher is required.
  958.  
  959.      Registered SW 3.x  users can upgrade  to SW  4.3 for $5.  This is a  free
  960. upgrade for SW 4.x users. 4.x  users who wish to receive SWV and SW-DIR can do
  961. so by sending  $2.50 for postage  and handling  to the  address below.  Please
  962. specify  disk size. The  file SW-43.REG  is provided  to simplify registration
  963. and ordering.
  964.  
  965.      Site licenses  can be  negotiated. Feel  free to  give it  to friends  or
  966. upload the  original ZIP file to other  BBS's provided that  no fee is charged
  967. for  distribution and  it is  not modified  in any  way. Note  to BBS  Sysops:
  968. Please post this ZIP  as is, with all files included, and without changing the
  969. ZIP filename.
  970.  
  971. SW.EXE Ver. 4.3 - July 11, 1992
  972.  
  973. Warren Small                              CIS  71076,407
  974. 35 Benjamin Street                        GEnie  W.SMALL
  975. Manchester, NH  03109                     Prodigy  RSJW31A
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.                                    Page 15
  989.  
  990.                                  SW.EXE 4.2a
  991.                                  Warren Small
  992.                                    (c) 1992
  993.  
  994.                                 SW.EXE History
  995.  
  996.      3.6 - 12/31/89 First general release.
  997.  
  998.      3.7 - 02/01/90 Increased text lines to  5. Colors can be specified with 3
  999. letter codes. Added Here (/h#), Double Spacing (/2), No Margin (/0),  Enhanced
  1000. text color (/e#).
  1001.  
  1002.      3.8 -  04/22/91 Added 3 border  styles, 3 shadow  positions, Pause Inter-
  1003. rupt (/p#-), User Input (/i#).
  1004.  
  1005.      4.0  - 10/31/91  User Input  changed  to  modify environment  rather than
  1006. create SW-ENV.BAT. Removed limit on Highlighting.  Added custom window  border
  1007. (/l#char), Border  Message (/m#), Justify (/j#),  Outside Edge  color (/o#), 9
  1008. Alert sounds (/a#),  Wide window edge (/w),  Foreground color for  screen (/k#
  1009. /k#), Query  wildcard, default,  and Pause  timeout (/q*^  /p#-), Window  size
  1010. control (/r# /r# /c# /c#). Screen Definitions introduced.
  1011.  
  1012.      4.1  - 12/1/91 Enhanced  User Input.  Pause, Query and  User Input window
  1013. changed  to popup  style. Added  Fill  String  (/k#string), Zoom  Window (/z),
  1014. Input Line (/n#), Uppercase  Input (/u), Draw Window  to override popup  (/d),
  1015. custom  environment  variables (/i#var).  New  utility  added  to check  disks
  1016. (DI.EXE).
  1017.  
  1018.      4.2  - 2/2/92 Added  Fill Line  (/char), shorthand  window sizing (/r####
  1019. /c####), Alert  Freq, Duration (/a#,#) or  Note, Duration  (/aN,#), key buffer
  1020. flush  option for  /Q  and  /I, default  value for  /I by  setting environment
  1021. variable, Window appearance  modified slightly for bordered (1-4) and  border-
  1022. less  windows. 5  text  line limit  removed  from  command  line form  of  SW.
  1023. Environment variables are now evaluated inside screen definitions. 
  1024.  
  1025.      4.2a  - 2/29/92 Fixed  bug in  environment variable  evaluation in screen
  1026. files  which caused rest  of file  to be read improperly.  Added another Query
  1027. default  indicator ^ for compatibility with NDOS. User Input enhanced to allow
  1028. large string input in small fields (/I####). 
  1029.  
  1030.      4.3 - 7/11/92 /x# added for EGA 43  line & VGA 50 line modes. SW now also
  1031. detect and setup  43 and 50  line modes. Text lines longer  than 70 characters
  1032. are truncated without displaying an error.  "Nested" labels possible in screen
  1033. defs.
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.                                    Page 16
  1047.