home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 272_01 / smlibdl.doc < prev    next >
Text File  |  1987-08-17  |  27KB  |  991 lines

  1.          
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.                             ==========================
  15.                             =    STEVE'S LIBRARY     =
  16.                             =      for Datalight     =
  17.                             =        - by -          =
  18.                             =   Steven E. Margison   =
  19.                             ==========================
  20.  
  21.  
  22.                 Functions and Documentation Copyright 1986 & 1987
  23.                    by Steven E. Margison -- All Rights Reserved
  24.  
  25.  
  26.                                 ISBN 0-944267-06-8
  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.  
  57.  
  58.          
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.          
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.                       --------- TABLE OF CONTENTS ---------
  75.  
  76.  
  77.               Introduction ................................. 1
  78.               The Documentation ............................ 1
  79.               Installation ................................. 2
  80.               Linking ...................................... 3
  81.               Interrupt Handler Functions .................. 4
  82.               Utilities ..... .............................. 5
  83.               On Buffering STDOUT .......................... 10
  84.               Shareware .................................... 11
  85.               Warranty ..................................... 12
  86.               Registration Form ............................ --
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  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.                      Steve's Function Library for Datalight C
  139.  
  140.  
  141.          I. INTRODUCTION
  142.                  The heart  of  the  C  language  is  its  library.  Each
  143.          compiler has its own library of  functions,  which  is  complete
  144.          only  to  the degree that the compiler author wishes to make it.
  145.          The Datalight C Compiler  is  an  excellent  product  which  has
  146.          gotten  rave reviews in computer magazines. (I have both Lattice
  147.          3.1 and Datalight available to me and I prefer the Datalight  by
  148.          far.)  The  greatest criticism which can be leveled at Datalight
  149.          is the size of  its  library.    It  has  all  the  usual  basic
  150.          functions, plus some nice unique features.  But it still can use
  151.          some help.   Enter  Steve's  Library!   At over 100 functions my
  152.          library greatly enhances program development with Datalight C.
  153.  
  154.  
  155.  
  156.  
  157.          II. THE DOCUMENTATION
  158.                  The documentation for the  library  is  contained  in  a
  159.          number of .DOC  files,  which  describe  each  function.    When
  160.          printed, these pages may be  placed  in  a  standard  three-ring
  161.          binder.  A utility program, PMAN.COM is provided to generate the
  162.          entire set  of documents.  PMAN requires the file LISTALL, which
  163.          may be edited to eliminate printing of certain files if desired.
  164.          (PMAN is copyrighted, but placed in the public domain.)
  165.                  To print the DOC files, you must be in a  directory  (or
  166.          on  a  floppy)  containing PMAN, LISTALL, and all the DOC files.
  167.          Just type "PMAN" at your system prompt and  the  files  will  be
  168.          printed to PRN:.
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.                   Steve's C Library for Datalight         Page 1         
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.          
  200.  
  201.  
  202.          III. INSTALLATION
  203.  
  204.          Steve's Library is distributed as four library  files  for  each
  205.          type  of  memory  model. (Only the full registration with source
  206.          has all four libraries.) The filenames are:
  207.               SMDLS.LIB       Small Memory Model
  208.               SMDLD.LIB       Large Data Model
  209.               SMDLP.LIB       Large Code Model
  210.               SMDLL.LIB       Large Code and Data Model
  211.          For the remainder of this manual the libraries will be  referred
  212.          to as SMDLx.LIB.
  213.          A  typical hard disk installation of Datalight will consist of a
  214.          directory named  \DC  in  which  will  be  found  the  compiler,
  215.          Datalight libraries,  and  Datalight  header  files.   SMDLx.LIB
  216.          should be copied into this directory as well, or  into  whatever
  217.          directory the Datalight libraries have been installed.
  218.          Steve's  Library  also  includes several header files which list
  219.          "define"s for many useful items.  These header  files  are  also
  220.          required to re-compile the source for the libraries.  The header
  221.          files  should  be  copied into the \DC directory, or in whatever
  222.          other directory contains stdio.h, dos.h, and  the  other  header
  223.          files.   If you have purchased the source files and wish to have
  224.          them on hard disk, make a new subdirectory under  the  \DC  main
  225.          directory called SM (C:\DC\SM) and copy all source files to that
  226.          directory.
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.                   Steve's C Library for Datalight         Page 2         
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.          
  266.  
  267.  
  268.          IV. LINKING
  269.                  The SMDLx.LIB library must  be  linked  with  any  other
  270.          libraries whenever  a  function  is  used in your program.  Some
  271.          programs may not use  SMDLx.LIB  functions,  and  therefore  the
  272.          linking of  the  library  may  be  eliminated to save time.  The
  273.          Datalight driver (DLC) command line would look like this:
  274.                  DLC MYPROGRAM \DC\SMDLS.LIB
  275.          Naturally, if your directory  structure  is  not  the  standard,
  276.          specify the  paths  as  needed.   In addition, if you have other
  277.          third party libraries, be sure to include them after SMDLx.LIB.
  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.                   Steve's C Library for Datalight         Page 3         
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.          
  332.  
  333.  
  334.          V. INTERRUPT HANDLER FUNCTIONS
  335.                  A  special  feature  of  Steve's  Library is the various
  336.          interrupt handler functions.  These are:
  337.                ticker
  338.                ctlbrk
  339.                criterr
  340.          These functions provide  the  programmer  with  the  ability  to
  341.          install   a   special  routine  to  intercept  one  of  the  DOS
  342.          interrupts. ctlbrk()  installs  a  user-defined  routine  to  be
  343.          executed  whenever  a  control-break  is  typed on the keyboard.
  344.          criterr() traps the DOS critical error  handler  (the  one  that
  345.          says Abort, Retry, etc.) and allows the programmer to substitute
  346.          his  own  handler.  ticker()  is  not  really  a  user definable
  347.          handler, but a  pre-built  handler  which  allows  the  user  to
  348.          perform operations  relative  to  the system's clock.  A special
  349.          variable  may  be  loaded  with  a  value  and  then  tested  at
  350.          intervals.  When the variable has hit zero, a specific amount of
  351.          time has passed.  The variable counts 18.2 times per second, and
  352.          is installed on INT 1CH.
  353.          The  usage  of  these interrupt handlers is slightly complex and
  354.          interactive.  For example, if you  use  ticker()  you  must  use
  355.          ctlbrk() and  you  may  have to use criterr().  It has been said
  356.          that a picture is worth a thousand words.  Well, to me, a source
  357.          file is worth a whole chapter of tutorial.  Therefore, refer  to
  358.          TESTINTS.C,  which is supplied with all distributions of Steve's
  359.          Library , to see a heavily commented source code file which uses
  360.          these interrupts.  This program may be compiled and run to watch
  361.          the result.
  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.                   Steve's C Library for Datalight         Page 4         
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.          
  398.  
  399.  
  400.          VI. THE UTILITIES
  401.                  Beginning with Release 1.20 of my library, I am shipping
  402.          the source  code  for several utiltiies I have written.  Nothing
  403.          earth shaking here, just some convenient programs to make life a
  404.          little easier.  All the  programs  use  several  functions  from
  405.          Steve's  Library,  and  can serve as an example of proper usage.
  406.          Here is a short description of each utility:
  407.  
  408.                                       INPATH
  409.  
  410.                  This utility searches for an EXECUTABLE program  in  the
  411.          current path.   Typing INPATH at the DOS prompt will display the
  412.          version number and a short usage message.  To use, type:
  413.  
  414.                inpath <filename>
  415.  
  416.          where filename is the basename portion of the executable file to
  417.          find.  Note that an  extension  can  be  specified,  but  it  is
  418.          ignored.   INPATH  will  first  look for the file in the current
  419.          directory, and then look in the PATH environment variable (if it
  420.          is present) in the order specified.  For each directory,  INPATH
  421.          first tries to locate a .COM file, then a .EXE file, then a .BAT
  422.          file,  since  that is the order in which DOS searches for files.
  423.          On the first  match,  INPATH  reports  the  directory  and  full
  424.          filename of the program and then exits.  If none are found, that
  425.          fact is reported.
  426.  
  427.          INPATH demonstrates the use of newext() and error().
  428.  
  429.  
  430.                                         TC
  431.  
  432.                  This  is  a  quick  Text  Compare program to compare two
  433.          ASCII files.  Typing TC at  the  DOS  prompt  will  display  the
  434.          version number and a short usage message.  To use, type:
  435.  
  436.                tc file1 file2
  437.  
  438.          where file1  and  file2  are  the  two files to compare.  If the
  439.          files are identical, no more messages will appear.    Otherwise,
  440.          the  program  will report any lines which are different with the
  441.          filename, line number, and a printout of the actual  line.    If
  442.          one  file  ends before the other, the program reports which file
  443.          terminated first.
  444.  
  445.          TC demonstrates the use of error() and cant().
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.                   Steve's C Library for Datalight         Page 5         
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.          
  464.  
  465.  
  466.                                         WC
  467.  
  468.                  WC counts words, lines, characters, and checksums one or
  469.          more files.    Typing  WC  at  the  DOS  prompt will display the
  470.          version number and a short usage message.  To use, type:
  471.  
  472.                 wc filename [-wcls]
  473.  
  474.          where filename is the name of the file to act  upon.    With  no
  475.          options, the program will report words, characters, lines, and a
  476.          checksum,  which  is  a  simple binary addition of all character
  477.          values.  No, it ain't a CRC, but it is a quick check to  see  if
  478.          it the  same  as  another file under the same name.  The options
  479.          [wcls] tell the program to report ONLY the items specified:
  480.  
  481.               -w     report only words
  482.               -l     report only lines
  483.               -c     report only characters
  484.               -s     report only checksum
  485.  
  486.          Note that giving all options is the same as giving no options.
  487.  
  488.          Since words, lines, and characters are meaningless in a non-text
  489.          file, the program examines the filename extension  to  determine
  490.          if the  file  is  a  binary  or text file.  This isn't a perfect
  491.          method, but it is good enough.  If the file extension  is  .COM,
  492.          .EXE, .OBJ, .REL, .PFS, .LIB, or .BIN, then only the checksum is
  493.          reported, overriding  all  other  options.  The program supports
  494.          wildcards in the filename, as well as drives and directories.
  495.  
  496.          WC demonstrates the use of exttyp(), cant(),  and  the  wildcard
  497.          _main object file by Datalight.
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.                   Steve's C Library for Datalight         Page 6         
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.          
  530.  
  531.  
  532.                                       OKISET
  533.  
  534.                  This  program  is  used  to  set  the  printing  options
  535.          available  on  an Okidata ML84 (with IBM Plug 'n' Play), or most
  536.          other IBM compatible printers.  It may be easily customized  for
  537.          other printers.    This  is  a  menu driven program requiring no
  538.          options.  Just execute it and follow the directions!
  539.  
  540.  
  541.               F1    PITCH
  542.               Use the SPACE key to toggle between  normal  (10  cpi)
  543.               and condensed  (17.5 cpi) pitch.  Press RETURN to make
  544.               the selection.
  545.  
  546.               F2    STYLE Use the SPACE key to toggle between  draft
  547.               and letter quality style, and press RETURN to select.
  548.  
  549.               F3    LQ  SPACING  Enter  1  or  2 digits in the range
  550.               00-11 to select letter quality spacing.   ESCape  will
  551.               abort  this  entry,  BACKSPACE will allow you to start
  552.               the entry over, and RETURN selects the entered  value.
  553.               This selection assumes letter quality mode, and forces
  554.               the style to letter quality, and the pitch to 10 cpi.
  555.  
  556.               F4    LINES  PER PAGE Enter 1 or 2 digits in the range
  557.               01-99 to set  the  page  length  in  lines  per  page.
  558.               ESCape, BACKSPACE, and RETURN operate as for F3.
  559.  
  560.               F5    LINE  SPACING  Use SPACE key to toggle between 6
  561.               LPI and 8 LPI spacing, and press RETURN to select.
  562.  
  563.               F7    OUTPUT CHANNEL Use SPACE  key  to  step  through
  564.               output channels  PRN, LPT1, and LPT2.  Press RETURN to
  565.               select.
  566.  
  567.               F9    NORMAL OPTIONS This key sets all  other  options
  568.               as  follows:      pitch  >  10  CPI      style > Draft
  569.                   lines > 66     space > 6 LPI     output > PRN
  570.  
  571.               F10    SEND CONTROL CODES and EXIT  No  control  codes
  572.               are sent  until  this  key  is  pressed.  Only control
  573.               codes which have been selected are sent.  If the pitch
  574.               selection remains blank in the menu, for example,  the
  575.               pitch control code will not be sent.  This allows only
  576.               some  options  to  be  changed  without disturbing the
  577.               existing printer configuration.
  578.          Letter quality and  condensed  modes  cannot  be  mixed  on  the
  579.          printer.   Therefore,  if  a  conflicting selection is made, the
  580.          last entry will force correct options.
  581.  
  582.          OKISET will present various beeps for  invalid  keystrokes,  and
  583.          warning messages where appropriate.
  584.  
  585.  
  586.                   Steve's C Library for Datalight         Page 7         
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.          
  596.  
  597.  
  598.  
  599.          OKISET  will  demonstrate  cls(),  mkbox(),  d_say(),  getkey(),
  600.          d_pos(),  and  show  how  to  manage  a  non-scrolling  program.
  601.          Programming idea: re-write this program using the  direct  video
  602.          access routines.
  603.  
  604.  
  605.                                        GTOD
  606.  
  607.                  This  utility  will  report  the current system time and
  608.          date in a variety of formats.   GTOD  may  be  invoked  with  or
  609.          without options.  Options may be preceded by dash, fraction bar,
  610.          or nothing at all.
  611.  
  612.                 gtod <options>
  613.  
  614.               -d     report only date
  615.               -t     report only time
  616.               -e     report date in European format (DD/MM/YY)
  617.               -s     report seconds, if time reporting enabled
  618.               -r     reverse reporting order, with time first and date second
  619.               -l     spell out month in long format
  620.               -n     if option -l, then add name of weekday
  621.               -m     report time in 24 hour (military) format
  622.               -v     report version number
  623.               -?     usage message and exit
  624.               no options defaults to -dt
  625.          Output may be redirected to a file or another device, except for
  626.          error messages.
  627.  
  628.          GTOD  demonstrates  the  rather  obscure  Datalight system clock
  629.          interface, as well as error(), monthis(), wkdayname(), i_dstr(),
  630.          and weekday().  Program idea: allow calculation for  other  time
  631.          zones.
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.                   Steve's C Library for Datalight         Page 8         
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.          
  662.  
  663.  
  664.  
  665.  
  666.                                        DUMP
  667.  
  668.                  (Oh!  No!  Not aNOTHer file dump  utility!)  Well,  yes,
  669.          and I apologize all to h*ll.  However, this one started out as a
  670.          utility  supplied with the Datalight compiler, which I hacked to
  671.          death.  First, it will be in **COLOR** if it senses a  CGA  card
  672.          installed,  and will use blinks and highlights if a mono card is
  673.          sensed.  Second, it fixes a minor  bug  or  two  in  Datalight's
  674.          version.   Third,  and  here  comes  the  unique  part,  it will
  675.          highlight any selected byte whenever  it  is  found!  (Well,  at
  676.          least  I think it's handy.) Fourth, it displays only 20 lines at
  677.          a time and waits for a keypress to continue.  Invoke the program
  678.          as follows:
  679.  
  680.                 dump filename <offset> <byte>
  681.  
  682.          where filename is the file to dump, offset  is  the  hex  offset
  683.          value  in  which to index into the file before dumping (defaults
  684.          is 0000), and byte is the hex value to highlight (default is  no
  685.          highlight).   The parameters MUST be in the order specified, and
  686.          the offset must be supplied (as a  place  holder)  if  the  byte
  687.          option is desired.
  688.  
  689.          DUMP  demonstrates  the  use of getkey(), stuff(), error(), plus
  690.          many of the disp* functions of this library and  Datalight,  and
  691.          the use  of  color  attributes.    Programming  idea:  there are
  692.          several ways to increase the speed of the program.    I  haven't
  693.          implemented  them  so that you can have the fun(!!) of doing it.
  694.          Hint: the overhead in printf() is horrendous.
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.                   Steve's C Library for Datalight         Page 9         
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.          
  728.  
  729.  
  730.          VII. ON BUFFERING STDOUT
  731.                  Beginning  with  Version  3.*  of Datalight, the authors
  732.          have decided to buffer the output to stdout.  Well,  this  ain't
  733.          quite right,  thinks  me.    The result is that any data sent to
  734.          stdout (usually the console) is held up until (a) the buffer  is
  735.          full,  (b) a newline character is sent, or (c) fflush(stdout) is
  736.          called.  This is a royal pain, but it can be fixed.  The  module
  737.          IOB.C can be modified to set _IONBF in the stdout definition.  I
  738.          have included a source module, IOBNBF.C, with this modification.
  739.          It can  be  renamed  to IOB.C and recompiled if desired.  Use an
  740.          object module librarian program to replace  the  module  in  the
  741.          Datalight libraries.    Or,  simply  leave it as an OBJ file and
  742.          link it into your programs.  Since the linker will see it before
  743.          the same module in the library, it will  then  take  precedence.
  744.          This  may  actually be better, since it gives you the ability to
  745.          use either buffered or unbuffered stdout output.    All  of  the
  746.          utilities   I  supply  with  my  library  are  designed  to  use
  747.          unbuffered output.
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  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.                  Steve's C Library for Datalight         Page 10         
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.          
  794.  
  795.  
  796.          VIII. SHAREWARE
  797.                  ShareWare  is  "try-before-you-buy" software, reasonably
  798.          priced and user-supported.  This simply means that you  can  get
  799.          ShareWare software for free from anyone who has a copy, or often
  800.          from bulletin  board  systems.  If you use and like the program,
  801.          then the author asks that you register  (purchase)  the  program
  802.          for a  stated  fee.   By registering you will often also receive
  803.          notice of available upgrades or supplemental programs.   Payment
  804.          under  shareware is on the "honor system", but if the program is
  805.          useful and the price is right, then please play by the rules and
  806.          purchase the program.  Also, keep in mind that the purchase of a
  807.          program from a public domain distributor or payment to an online
  808.          service (such as CompuServe) does NOT constitute registration of
  809.          the program since the producer of the program does  not  receive
  810.          one penny of that payment.
  811.                  "Steve's Library"  is  shareware.  If you use it, please
  812.          register your copy on the registration form enclosed at the  end
  813.          of this  manual.  For a slightly higher charge, you may elect to
  814.          obtain the source  code  for  all  functions,  and  the  D, P, L
  815.          libraries.   Please note that the extra libraries and the source
  816.          code are NOT SHAREWARE, and should not be distributed.  Only the
  817.          documentation, utilities, header files, and Small model  library
  818.          may be passed on under the shareware concept.
  819.                  Online    help    is    available   through   CompuServe
  820.          (74435,1042), or GEnie mail  (S.MARGISON)  to  registered  users
  821.          ONLY. Help  is also available by mail.  I will try to answer all
  822.          letters within 48 hours.  Non-registered users  must  include  a
  823.          SASE for   a   reply.      The   degree  of  help  available  to
  824.          non-registered users is purely discretionary.  No  phone  calls,
  825.          please.
  826.                  "Steve's   Library"   may   be   used  in  a  commercial
  827.          environment,  with  no  royalties  required  if  functions   are
  828.          included in  a  program  for sale.  However, the library, source
  829.          code, and all related documentation may not be  sold  under  any
  830.          circumstances without  my  prior  approval.    Software  library
  831.          services and Users Groups may charge a nominal fee  for  copying
  832.          and distributing  those  files  which  are  shareware.    Please
  833.          contact me for a complimentary  copy  to  insure  that  you  are
  834.          offering the  most recent and complete release.  The source code
  835.          may NOT be offered for sale  or  trade  by  other  than  myself.
  836.          "Steve's  Library"  may  not  be  included or "bundled" with any
  837.          other software without prior permission.
  838.                  "Steve's Library"  and  its  documentation  may  not  be
  839.          transferred nor  exchanged  in  any  modified form.  I cannot be
  840.          expected to help others use these functions if they are not  the
  841.          same as  distributed.   Under no circumstances may the copyright
  842.          notices  be  altered  or   removed   from   the   functions   or
  843.          documentation.
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.                   Steve's C Library for Datalight         Page 11        
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.          
  860.  
  861.  
  862.          IX. WARRANTY
  863.                  Oh,  this  shouldn't  be  necessary  among  friends  and
  864.          gentlemen,  but  it's  really  the lawyers who run the world and
  865.          they say we gotta do this:
  866.  
  867.  
  868.               ** Steve's Library functions and all documentation are
  869.               copyright 1986, 1987 by Steven E. Margison.
  870.  
  871.               ** These functions and documentation are provided  "as
  872.               is"  without warranty of any kind, either expressed or
  873.               implied, including but  not  limited  to  the  implied
  874.               warranties   of  merchantability  and  fitness  for  a
  875.               particular purpose.
  876.  
  877.               ** The user of these functions and documentation agree
  878.               to hold  the  author  and/or  distributor(s)  of  this
  879.               material  harmless  for  any  direct  or consequential
  880.               damages resulting from  its  use.    In  other  words,
  881.               "you're on your own!"
  882.  
  883.               **  IBM  is  a  registered  trademark of International
  884.               Business Machines Corporation.
  885.  
  886.               ** MS-DOS is a trademark of MicroSoft Corporation.
  887.  
  888.               ** Datalight C is a registered trademark of Datalight,
  889.               Inc.
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.                  Steve's C Library for Datalight         Page 12         
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.          
  926.  
  927.  
  928.          =======================================================================
  929.                       SOFTWARE REGISTRATION FORM AND ORDER
  930.          =======================================================================
  931.          A separate form must be filled out for each product ordered or
  932.          registered.  This form may be photocopied, printed out, or
  933.          edited to include all information and re-printed.
  934.          
  935.          PRODUCT: --------- STEVE'S DATALIGHT LIBRARY VERSION 1.30 --------------
  936.          
  937.          QUANTITY:                                                Amount:
  938.          
  939.          _____  Standard registration                $10.00 ea    $______
  940.          _____  Registration with Source code        $25.00 ea    $______
  941.          
  942.               Shipping outside U.S. or Canada                     $  3.00
  943.          
  944.                                   TOTAL DUE                       $______
  945.               Payment must be made in U.S. Funds
  946.          
  947.          Source code is NOT SHAREWARE and is not to be transferred to other
  948.          users.  Only the DOC files, header files, utilities,
  949.          and S library are released into shareware.
  950.          
  951.          Corporations:  Write with your requirements for a quote on
  952.                         multiple copies or site licensing.
  953.          
  954.          If you already have this library, where was it obtained?
  955.          [ ]CompuServe  [ ]Friend  [ ]Employer  [ ]BBS:__________________
  956.          Version_____ Serial No._________ 
  957.          
  958.          Payment is by check[ ] or money order[ ] (Sorry - no COD or charges)
  959.          
  960.          NAME _______________________________________________________
  961.          
  962.          COMPANY ____________________________________________________
  963.          
  964.          ADDRESS ____________________________________________________
  965.          
  966.          CITY _______________________________________________________
  967.          
  968.          STATE___________________________ ZIP _______________________
  969.          
  970.          =======================================================================
  971.          Send completed form and payment to:
  972.                              Steven E. Margison
  973.                               124 Sixth Street
  974.                           Downers Grove, IL, 60515
  975.          =======================================================================
  976.                        - do not write below this line -
  977.          
  978.          recd________   sent________ version_______ serial no.__________________
  979.  
  980.  
  981.  
  982.          
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.