home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / cobol / library / egull / x00.doc < prev    next >
Encoding:
Text File  |  1989-09-16  |  20.2 KB  |  794 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.                          X.00 Low Level Communications Driver
  33.  
  34.                    X.00 Copyright (c) 1987, 1988, 1989 by Raymond L. Gwinn
  35.                                  12469 Cavalier Drive
  36.                               Woodbridge, Virginia 22192
  37.                                  All rights reserved
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.           Introduction
  77.  
  78.           X00.SYS  was  originally  developed  for  generally  unrestricted
  79.           personal use with the  OPUS bulletin board system.   It has  long
  80.           been  obvious to  me that  its use  has extended  far beyond  the
  81.           original  intent.    X00  is now  one  of  the  most  widely used
  82.           communications drivers for PCs in the world.
  83.  
  84.           X00.SYS  itself  is commercial  quality  software.   However, the
  85.           documentation is not commercial quality.   In the next few months
  86.           I will attempt  to correct the  inadequate documentation.  For  a
  87.           description of the X00 function calls, see the distribution  text
  88.           files FOSSIL.DOC and FOSSIL.CHT.
  89.  
  90.           I have received  many requests  concerning licensing  of X00  for
  91.           commercial  use.  In general I  have avoided commercial licensing
  92.           because of the documentation problems and the spirit in which X00
  93.           was  originally  developed.   I  now receive  so  many commercial
  94.           licensing requests that I am forced to address the issue.
  95.  
  96.           To remain within the original spirit  in which X00 was developed,
  97.           personal use will remain  free of any required fees.   Commercial
  98.           licenses  will  be granted  in  return  for a  contribution  to a
  99.           charity or good cause which I define.
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.           Non-Commercial License:
  143.  
  144.           A  non-commercial  license for  use  of  X00 is  included  in the
  145.           distribution file called LICENSE.TXT.
  146.  
  147.           I have received  several unsolicited  checks from  users of  X00.
  148.           All of  the checks have  been returned or  uncashed.  To  date, I
  149.           have not accepted  any payments for X00.  If you feel that X00 is
  150.           useful enough that  some sort of  payment is justified then  read
  151.           on.
  152.  
  153.           Our local  (public) High  School  desperately needs  funds.   The
  154.           school officials work at keeping the students off the streets and
  155.           away  form drugs.   The local  School Board is  unable to provide
  156.           needed funds for  non-academic activities.   I  suggest a  $10.00
  157.           contribution be sent to:
  158.  
  159.                Woodbridge Senior High School
  160.                30013 Old Bridge Road
  161.                Woodbridge, Virginia, 22192
  162.  
  163.           You can  make the check  payable to "WSHS,  Ballfield Improvement
  164.           Fund".  Please  make a note  "X00 contribution" somewhere on  the
  165.           check.
  166.  
  167.           Many of  you have used X00 for years.  I believe $10.00 is easily
  168.           affordable to most X00 users.  Please  take the time to sit down,
  169.           make out the check, address the envelop, and mail a contribution.
  170.  
  171.           Shareware authors that wish to distribute X00 with their  product
  172.           should contact me.  Permission will usually be granted.
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.           Commercial License:
  209.  
  210.           Commercial  Licenses will  be liberally granted  in return  for a
  211.           donation (usually tax deductible).   Each commercial license will
  212.           be individually granted.  That is, there is no single policy that
  213.           can be stated  here.  Some  generally uniform commercial  license
  214.           policies follow.
  215.  
  216.           1 - X00 is usually licensed by product.
  217.  
  218.           2 - All commercial  licensees of X00 will receive a  special copy
  219.           of X00 that will identify, at boot time, the commercial product.
  220.  
  221.           3 - I may require a fully licensed, fully featured, copy  of your
  222.           product for personal use on multiple computers.
  223.  
  224.           4 - The required  contribution, which is never to  me personally,
  225.           will usually be a one time contribution of $100.00.
  226.  
  227.           5 - Proof of licensing  belongs to you.  That is, I  am not going
  228.           to be responsible for keeping records.  I suggest that you keep a
  229.           copy of  the donation check so that  you can send me a  copy if a
  230.           question  arises.    Otherwise  you  may  have  to  make  another
  231.           contribution.
  232.  
  233.           6 - You  may only  distribute versions of  X00 that contain  your
  234.           product name in the X00 banner (at boot time).
  235.  
  236.           7 -  If you wish to have the  latest version of X00 automatically
  237.           sent to you with your product name in the X00 banner, then do the
  238.           following:  Send  me a check for $10.00, in advance, along with a
  239.           pre addressed mailing label.  If you require a 3.5 inch diskette,
  240.           then write "3.5 inch" on the pre addressed mailing label and send
  241.           $15.00 (instead of  $10.00).   For updates, the  check should  be
  242.           made  out to Raymond  L. Gwinn.   The checks will  be cashed when
  243.           received.   Individuals that wish to receive a mailed copy of the
  244.           latest X00 version may  also use this procedure.   Once you  have
  245.           received an  update, you will need  to resend the update  fee and
  246.           pre addressed mailing  label if  you desire to  receive the  next
  247.           update.
  248.  
  249.           8  -  Your   contribution  check  should  state   "X00  Licensing
  250.           contribution" in the Memo or comment field.
  251.  
  252.           If you  write me  about a  commercial license,  please include  a
  253.           voice phone number.   You may not receive a response if the voice
  254.           phone number is omitted.  Correspondence should be sent to:
  255.  
  256.                     Raymond L. Gwinn
  257.                     12469 Cavailer Dr.
  258.                     Woodbridge, Va. 22192
  259.  
  260.           Prior to making  the special version of X00 available, I will may
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.           wait for  the check to clear  the bank.  If the  check bounces, I
  274.           will,  most  likely, not  give  any  further consideration  to  a
  275.           commercial license.
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.           The latest version of X00.SYS is available  for down-loading from
  342.           The Renex BBS (FidoNet 109/106), 703-690-7950.
  343.  
  344.           I make Beta/test versions of X00.SYS readily available.  This has
  345.           caused some confusion  among various  users.  That  is, they  are
  346.           using beta  versions of X00.SYS and think  they are using a fully
  347.           tested  (if  there is  such  a  thing) versions.    Starting with
  348.           version 1.02 of X00.SYS, I am  going to use the following  method
  349.           in numbering  the versions.  If  the version number ends  with an
  350.           odd number, then it  is a beta version.  If it  ends with an even
  351.           number, then it is a tested version that is (relatively) safe for
  352.           general use.  Then,  versions 1.01, 2.15  and 1.07 would be  beta
  353.           versions.  Versions 1.00, 1.02,  2.00 and 2.14 would not  be beta
  354.           versions.  The  beta versions will  always have (and always  have
  355.           had) a  lower case letter  appended to  the version number.   For
  356.           example,  1.01f  is  one way  that  you  will  see beta  versions
  357.           identified.  If you find a problem in a beta/test version, let me
  358.           know about it by direct mail.
  359.  
  360.           X00.SYS  and  associated utilities  comes  with no  guarantees or
  361.           warranties.  Use it at your own risk.
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.           X00.SYS provides  enhanced/extended support of INT 14H functions.
  406.           Documentation of the enhanced/extended functions  can be found in
  407.           the included file FOSSIL.DOC by Vincent E. Perriello.
  408.  
  409.           DoubleDOS.  Since  writing X.00, I  have learned more about  DDos
  410.           than I ever wanted  to know.  A few  rules for DDos users that  I
  411.           know are: 1 -  Do not assign the comm ports  in DDCONFIG.SYS, 2 -
  412.           Be sure to  execute CAPTURE after  you execute DOUBLEDO.   To  be
  413.           safe,  execute CAPTURE  in  both partitions.    3 -  If  you have
  414.           problems with your clock, try  the Defer option.  4 -  Be sure to
  415.           replace  ANSI.SYS with  DBLDANSI.SYS.   For  some  reason, I  had
  416.           problems if the  TOP partition  was not  delayed.   That is,  the
  417.           BOTTOM partition must initialize before the TOP partition does.
  418.  
  419.           The semi-formal  syntax for  the statement  to be  placed in  the
  420.           CONFIG.SYS file is as follows:
  421.  
  422.           DEVICE=X00.SYS <options>
  423.  
  424.           <options> ::= <none>  | <eliminate>  <defer> <port specs>  <baud>
  425.           <size> <fifospec>
  426.  
  427.           <none> ::=
  428.  
  429.           <eliminate> ::= E{LIMINATE}
  430.  
  431.           <defer> ::= D{EFER}
  432.  
  433.           <fifospec> ::= NOFIFO
  434.  
  435.           <baud>  ::= B,<port number>,<baud rate>
  436.  
  437.           <size>  ::= R=<receive buffer size> T=<transmit buffer size>
  438.  
  439.           <receive buffer size> ::= <buffer size>
  440.  
  441.           <transmit buffer size> ::= <buffer size>
  442.  
  443.           <nasty> ::=N{ASTY}
  444.  
  445.           <buffer size> ::= 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 |
  446.           32768
  447.  
  448.           <baud rate> ::= 300 | 1200 | 2400 | 4800 | 9600 | 19200 | 38400
  449.  
  450.           <port spec> ::= <number of ports> | <hardware port assignment>
  451.  
  452.           <number of ports> ::= 0 | 1 | 2 | 3 | 4
  453.  
  454.           <hardware port assignment> ::= <port number> = <assignment>
  455.  
  456.           <port number> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
  457.  
  458.           <assignment> ::= <logical> | <absolute>
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.           <logical> ::= <comn> {, <irqn>}
  473.  
  474.           <comn> ::= <COM1> | <COM2> | <COM3> | <COM4>
  475.  
  476.           <irqn> ::= <IRQ0> | <IRQ1> ........ <IRQ15>
  477.  
  478.           <absolute> ::= <hex port address> , <irqn>
  479.  
  480.           <hex port address> ::= Any hex number 0 through 0FFFF.  The first
  481.                                  character must be 0 through 9.
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.           The simplest statement for the CONFIG.SYS file is as follows:
  539.  
  540.                DEVICE=X00.SYS
  541.  
  542.           This statement will be all that  is required on the vast majority
  543.           of systems.   It says  that you  wish to support  one comm  port.
  544.           Exactly  which comm  port  will be  specified by  the application
  545.           program.
  546.  
  547.           I have found  that communications ports  on some systems must  be
  548.           initialized at boot time.  In the  simplest case shown above, X00
  549.           knows that it  will serve  only one communications  port, but  it
  550.           does not  know  which comm  port.   Thus, the  port  will not  be
  551.           initialized.  In many cases, the port to be used is COM1.  If the
  552.           above statement is changed to:
  553.  
  554.                DEVICE=X00.SYS 0=COM1
  555.  
  556.           X00 then knows  that you intend to  use COM1.  In  this case, X00
  557.           will initialize COM1 to a know state.  If you have problems, like
  558.           "modem  not   responding",  then  try  specifically  stating  the
  559.           communication port(s) you intend to use.
  560.  
  561.           Option descriptions:
  562.  
  563.           DEFER - DO NOT  USE THIS OPTION UNLESS YOU UNDERSTAND ITS PURPOSE
  564.           AND  YOU  NEED TO  USE IT.    IF YOUR  SYSTEM WORKS  WITHOUT THIS
  565.           OPTION,  THEN DO NOT  USE IT.   If you needed  to use this option
  566.           with past versions of X00.SYS, then  try this version without it.
  567.           Do not  automatically assume that  you still need  it.  At  least
  568.           half of the  reported problems  with X00 have  resulted from  the
  569.           casual use of this option.  This option specifies that X00.SYS is
  570.           not to take  any DOS interrupt  vectors during the boot  process.
  571.           If DEFER is  specified, then  CAPTURE must be  executed prior  to
  572.           executing a program that requires X00.  Your AUTOEXEC.BAT file is
  573.           the  best  place to  execute  CAPTURE.   With  MultiLink, CAPTURE
  574.           should be executed before multi-tasking  is started.  However, as
  575.           with 99% of all systems, MultiLink systems  should work correctly
  576.           (and better) without the DEFER option.  Unless you are using some
  577.           strange software, you  should not need  to use the DEFER  option.
  578.           If your system does not boot correctly with X00.SYS, then try the
  579.           DEFER  option  followed  by CAPTURE  in  your  AUTOEXEC.BAT file.
  580.           X00.SYS only checks for the D in DEFER.
  581.  
  582.           ELIMINATE will  eliminate the  5 second  commercial at boot  time
  583.           (which is a direct screen memory write).
  584.  
  585.           NOFIFO will cause  X00 to  NOT enable the  FIFOs of the  National
  586.           16550.  Some Multi-Tasking systems have problems when the 16550's
  587.           FIFOs  are  enabled.   NOFIFO  allows  the user  to  override the
  588.           automatic use of the 16550's FIFOs by X00.
  589.  
  590.           Number  of  ports.    When  you  wish  to  use  the  default  IBM
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.           communication port addresses and IRQs,  you should simply specify
  604.           the number of  ports that you wish to support (the default is 1).
  605.           Although X00 V1.00 and up can support up to 8 ports, you can only
  606.           specify 0 through 4 supported ports.  The reason is that there is
  607.           only  4  defined ports  (COM1,  COM2,  COM3, COM4)  that  X00 can
  608.           default to.   If you use  the absolute method (described  later),
  609.           you can specify up to 8 devices.   X00 assumes that COM1 and COM2
  610.           are addressed as originally defined by IBM.  The default hardware
  611.           characteristics of COM3 and COM4 are  03E8H, IRQ4 and 02E8H, IRQ3
  612.           respectively.  This seems  to be a defacto standard,  although no
  613.           real standard exists that I know of.
  614.  
  615.           The T and R  options (or help, the sky is falling).  Trying to be
  616.           all comm  drivers to all  protocols on all  computers (especially
  617.           betas) is not easy.  The T and R options allow you to specify the
  618.           size  of the transmit and receive buffers.   The buffer size must
  619.           be a power of 2.  The sum total, in bytes, of all buffers can not
  620.           exceed 48k bytes.  For example, DEVICE=X00.SYS T=32768 R=16384 is
  621.           valid (only one port).  However, DEVICE=X00.SYS 2 T=16384 R=16384
  622.           is not valid (2 ports each with a 16k transmit and receive buffer
  623.           =  32k per port or 64k).  In  the second example the total buffer
  624.           size  exceeds  the  maximum   of  48k.    X00  SHOULD   (but  not
  625.           necessarily) beep the bell  and display an error message  at boot
  626.           time if you attempt to define too much buffer space.
  627.  
  628.           The  <baud> option  allows you  to lock  the  baud rate  from the
  629.           computer to the modem.  When this option is specified for a port,
  630.           the baud rate from the computer to the modem will remain constant
  631.           regardless  of  what  the  application  program  (such  as  RBBS)
  632.           requests the baud rate to be.  This option is to  accommodate the
  633.           higher speed  modems like  the  Telebit TrailBlazer  and USR  HST
  634.           modems.  When this option is used, RTS/CTS handshaking is implied
  635.           (forced)  even  if  the  application  program has  not  requested
  636.           RTC/CTS handshaking.   Both Telebit  and USR  recommend in  their
  637.           manuals that  the computer to  modem baud rate  be constant.   My
  638.           personal  experience  has  shown that  both  modem  types operate
  639.           better when  the computer to modem  baud rate is  faster than the
  640.           actual phone line baud rate.
  641.  
  642.           The <nasty> option  makes X00 get  very aggressive about  keeping
  643.           the COMM  interrupts.  Many  multi-tasking systems and  some TSRs
  644.           mess  around with the  COMM IRQs and  thus, slow things  down.  I
  645.           finally figured out how to keep them  at bay.  However, the NASTY
  646.           option may cause  problems on some systems.  If you are running a
  647.           multi-line system, try the  NASTY option.  If it does  not crash,
  648.           you will  probably see  improved throughput.   Running COMM  type
  649.           code in LIM memory may crash with NASTY enabled.  The default for
  650.           NASTY is disabled.
  651.  
  652.           The required  communications buffers  are allocated  dynamically.
  653.           All code used  for initialization is  overlaid by the buffers  or
  654.           released to DOS by  X00 when it completes initialization  at boot
  655.           time.
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.           IRQs.  The AT's additional 8 IRQs are supported.  X00 can support
  670.           multiple ports on  a single interrupt.   When multiple ports  are
  671.           assigned to a  single interrupt, X00 will poll  each of the ports
  672.           to find the interrupting device(s).
  673.  
  674.           If  you   plan  to  reassign   the  port(s)  to   a  non-standard
  675.           configuration or use some  strange hardware, it is best  to think
  676.           in  port numbers  instead  of COMn.    Most application  programs
  677.           documentation refers  to  COM1  and  COM2.    However,  when  the
  678.           application program communicates  with a FOSSIL driver,  it calls
  679.           COM1 device/port 0 and COM2 is device/port 1.
  680.  
  681.           Some examples of CONFIG.SYS statements are as follows:
  682.  
  683.           DEVICE = X00.SYS E
  684.           Which means one port, no commercial.
  685.  
  686.           DEVICE = X00.SYS 2
  687.           Allocate  space  for buffers  (at  the  default size  of  1k) and
  688.           provide support for COM1 and COM2.
  689.  
  690.           DEVICE = X00.SYS T=1024 R=4096
  691.           One port supported,  all transmit buffers  are to  be 1k and  all
  692.           receive buffers are to be 4k.
  693.  
  694.           DEVICE = X00.SYS 2 B,1,19200
  695.           Same as the above  except COM2 will always operate at 19200 baud.
  696.           COM1  will  operate  at the  baud  rate  set  by the  application
  697.           program.
  698.  
  699.           DEVICE = X00.SYS 2 B,0,19200
  700.           Same as  the above  except COM1  is fixed  at 19200.   COM2  will
  701.           operate at the baud rate set by the application program.
  702.  
  703.           DEVICE = X00.SYS 2 B,0,19200 B,1,9600 NOFIFO
  704.           In this example  the baud rate for  COM1 is locked at  19200 baud
  705.           and COM2 is locked at 9600 baud.   Additionally, the FIFOs of the
  706.           National 16550 will not be enabled.
  707.  
  708.           DEVICE = X00.SYS 0=COM3
  709.           One  port supported  but, use COM3  on IRQ4  (the default).   The
  710.           application program will  think (and must be  configured) that it
  711.           is using COM1 in this case.
  712.  
  713.           DEVICE = X00.SYS 0=COM3,IRQ4
  714.           Exactly the same as above.
  715.  
  716.           DEVICE = X00.SYS 0=COM3,4
  717.           Exactly the same as above.
  718.  
  719.           DEVICE = X00.SYS 0=COM3,IRQ1
  720.           Same as above except IRQ1 is to be used.
  721.  
  722.           DEVICE = X00.SYS 0=COM4 1=COM3
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.           Two ports supported,  Opus thinks COM4 is  COM1 and that COM3  is
  736.           COM2.  Use the default IRQs for COM4 and COM3.
  737.  
  738.           DEVICE = X00.SYS 0=COM4 1=COM3 NASTY
  739.           Exactly the same as the previous  example except the NASTY option
  740.           is enabled.  Note that NASTY may cause problems on some systems.
  741.  
  742.           Now  some absolute assignment examples.   When hex port addresses
  743.           are used, the IRQ must be specified.
  744.  
  745.           DEVICE = X00.SYS 0=0FE8,IRQ4
  746.           Support one serial (8250 type) device with a base port address of
  747.           0FE8H and use IRQ4
  748.  
  749.           DEVICE = X00.SYS 0=3F8,IRQ4 1=2F8,IRQ4
  750.           Support  2 serial devices at the given  hex port address and both
  751.           will interrupt on IRQ4.
  752.  
  753.           etc, etc, etc.
  754.  
  755.           If you are not confused by now, I am, so I'm giving up
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.