home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / prog1 / tchk21.lzh / TCHK.DOC < prev    next >
Text File  |  1989-06-06  |  128KB  |  4,357 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.     TCHK 2.1                                                   Page 1
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                         TCHK - a Turbo C library
  16.                               Version 2.10
  17.                          Documentation for TCHK
  18.                                    by
  19.                             Howard Kapustein
  20.  
  21.  
  22.                             Howard Kapustein
  23.                            1695 Barbara Lane
  24.                          East Meadow, NY 11554
  25.                              (516) 481-9612
  26.  
  27.            (c) Copyright 1987, 1988, 1989 All rights reserved
  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.     TCHK 2.1                                                   Page 2
  73.  
  74.                             Table of Contents
  75.  
  76.  
  77. COPYRIGHT AND DISCLAIMER  ...........................................   4
  78.  
  79. TRADEMARKS  .........................................................   4
  80.  
  81. LICENSE  ............................................................   4
  82.  
  83. REGISTRATION AND ORDERING INFORMATION  ..............................   5
  84.  
  85. QUANTITY DISCOUNTS  .................................................   6
  86.  
  87. BACKGROUND  .........................................................   6
  88.  
  89. FILES  ..............................................................   7
  90.  
  91. IN THE BEGINNING..  .................................................   8
  92.  
  93. FEATURES  ...........................................................   9
  94.  
  95. CREDIT  .............................................................  10
  96.  
  97. FUNCTIONS  ..........................................................  10
  98.  
  99. TIPS AND CAVEATS  ...................................................  12
  100.  
  101. #DEFINES  ...........................................................  12
  102.      Ansihk.h  ......................................................  12
  103.      Color.h  .......................................................  12
  104.      Chiphk.h  ......................................................  12
  105.      Datehk.h  ......................................................  13
  106.      Doshk.h  .......................................................  13
  107.      Filehk.h  ......................................................  14
  108.      Finance.h  .....................................................  15
  109.      Howard.h  ......................................................  15
  110.      Ibm.h  .........................................................  15
  111.      Keyboard.h  ....................................................  16
  112.      Keycode.h  .....................................................  16
  113.      Math.h  ........................................................  17
  114.      Menuhk.h  ......................................................  17
  115.      Mousehk.h  .....................................................  19
  116.      Multihk.h  .....................................................  20
  117.      Printhk.h  .....................................................  20
  118.      Real.h  ........................................................  20
  119.      Sound.h  .......................................................  21
  120.      Statehk.h  .....................................................  21
  121.      Timehk.h  ......................................................  21
  122.      Video.h  .......................................................  21
  123.      Zip.h  .........................................................  22
  124.  
  125. VARIABLE TYPES  .....................................................  23
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.     TCHK 2.1                                                   Page 3
  139.  
  140. GLOBAL VARIABLES  ...................................................  24
  141.      Date variables:  ...............................................  24
  142.      Keyboard variables:  ...........................................  24
  143.      Menu variables:  ...............................................  25
  144.      Mouse variables:  ..............................................  25
  145.      Multitasking variables:  .......................................  25
  146.      Real (simulated FP) variables:  ................................  25
  147.      State/Zip code variables:  .....................................  25
  148.      TCHK version variables:  .......................................  26
  149.      Video variables:  ..............................................  26
  150.  
  151. REVISION HISTORY  ...................................................  28
  152.  
  153. FUTURE ENHANCEMENTS  ................................................  35
  154.  
  155. OTHER PRODUCTS  .....................................................  38
  156.  
  157. SUPPORT  ............................................................  39
  158.  
  159. APPENDIX A - DATE FORMATS  ..........................................  40
  160.  
  161. APPENDIX B - date_convert() FORMATS  ................................  41
  162.  
  163. APPENDIX C - time_convert() FORMATS  ................................  43
  164.  
  165. APPENDIX D - SIMULATED FP MATH  .....................................  44
  166.  
  167. APPENDIX E - MOUSE FUNCTIONS  .......................................  46
  168.  
  169. APPENDIX F - REGISTRATION FORM  .....................................  49
  170.  
  171. APPENDIX G - BUG REPORT FORM  .......................................  52
  172.  
  173. Index  ..............................................................  56
  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.     TCHK 2.1                                                   Page 4
  205.  
  206.  
  207.  
  208.                         COPYRIGHT AND DISCLAIMER
  209.  
  210.      This library and documentation are Copyrighted (C) 1987, 1988,
  211.      1989 by Howard Kapustein, All Rights Reserved.
  212.  
  213.      Use of this library acknowledges this disclaimer of warranty:
  214.      "This library is supplied as-is. The author disclaims all
  215.      warranties, expressed or implied, including, without limitation,
  216.      the warranties of merchantability and of fitness of this product
  217.      for any purpose. The author assumes no liability for damages
  218.      direct or consequential, which may result from the use of this
  219.      product."
  220.  
  221.  
  222.  
  223.                                TRADEMARKS
  224.  
  225.      CLIPPER is a trademark of Nantucket Corporation.
  226.      dBASE and dBase III Plus is a registered trademark of Ashton-Tate
  227.           Incorporated.
  228.      DESQview is a registered trademark of Quarterdeck Office Systems.
  229.      GEnie is a trademark of GE Information Services.
  230.      IBM is a registered trademark of International Business Machines.
  231.      LIM and EMS are trademarks of Lotus, Intel, and Microsoft
  232.           Corporations.
  233.      Lotus and Symphony are registered trademarks of Lotus Corp.
  234.      Macintosh is a registered trademark of Apple Incorporated.
  235.      Microsoft and Quick C are registered trademarks of Microsoft
  236.           Corporation.
  237.      TLIB, Turbo Assembler and Turbo C are registered trademarks of
  238.           Borland International.
  239.  
  240.  
  241.  
  242.                                 LICENSE
  243.  
  244.      TCHK is NOT, nor has it ever been, public domain or free software.
  245.  
  246.      TCHK is being distributed under the User Supported software
  247.      concept. Nonregistered users are granted a limited license to use
  248.      TCHK for a trial period, in order to determine if it suits their
  249.      needs. Any other use of TCHK or use past this period requires
  250.      registration. Any use of non-registered copies of TCHK by a
  251.      business, organization, or any kind of institution is forbidden.
  252.  
  253.      A registered copy of TCHK must be treated like a book, in that the
  254.      same registered copy of TCHK may not be used by more than one
  255.      person nor on more than one machine at the same time.
  256.  
  257.      Non-registered users are granted a limited license to make an
  258.      evaluation copy for trial use on a private, non-commercial basis,
  259.      for the express purpose of determining whether TCHK is suitable 
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.     TCHK 2.1                                                   Page 5
  271.  
  272.      for their needs. After this trial period, you should either
  273.      register your copy or discontinue using TCHK. Registering your
  274.      copy of the software helps the author continue to provide
  275.      professional-quality software at very reasonable prices.
  276.  
  277.      All corporate, business, government or other commercial users of
  278.      TCHK MUST be registered.
  279.  
  280.      All users are granted a limited license to copy TCHK only for the
  281.      trial use of others and subject to the above limitations. This
  282.      license does NOT include distribution or copying of this software
  283.      package:
  284.  
  285.           1 -  In connection with any other product or service.
  286.           2 -  For general use within a company or institution.
  287.           3 -  For any consideration or 'disk fee'.
  288.           4 -  In modified form, i.e. the file containing this license
  289.                information MUST be included, along with the full
  290.                documentation, demos and any other files distributed
  291.                with TCHK.
  292.  
  293.      Operators of electronic bulletin board systems (Sysops) are
  294.      encouraged to post TCHK for downloading by their users, as long as
  295.      the above considerations are met.
  296.  
  297.      If you are a distributor of a public domain or user-supported
  298.      software library, you may be eligible to distribute copies of
  299.      TCHK. You must meet all of the above conditions and acquire
  300.      written permission from me, the author (Howard Kapustein) before
  301.      doing so. Such permission is usually granted. Please call or write
  302.      for details.
  303.  
  304.      Distribution of a program incorporating an unregistered version of
  305.      TCHK, in part or whole, is a violation of the law.
  306.  
  307.  
  308.  
  309.                  REGISTRATION AND ORDERING INFORMATION
  310.  
  311.      Users may become REGISTERED owners for the small pittance of $20.
  312.      Registering has the following benefits:
  313.  
  314.           Registered owners will receive TCHK compiled for use with all
  315.           memory models (not just the small memory model distributed
  316.           here.)
  317.  
  318.           Registered owners will receive a disk supplied version of the
  319.           TCHK manual formatted for printing on an HP Laserjet.
  320.  
  321.           Registered owners have a royalty-free runtime license, and
  322.           are entitled to utilize TCHK in distributed applications.
  323.  
  324.           Registered owners can update their registration to the newest
  325.           version of TCHK for a nominal fee to cover diskette(s),
  326.           shipping and handling.
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.     TCHK 2.1                                                   Page 6
  337.  
  338.  
  339.      REGISTERED owners may purchase the source code to TCHK for $40.
  340.  
  341.      All materials are shipped on 5.25-inch floppy diskettes.
  342.      Unfortunately, I do not yet have a 3.5-inch floppy drive, but it
  343.      is on my list of "Uses for registration monies". Sorry, but for
  344.      now, 3.5-inch disk versions of TCHK are not available. Yet...
  345.  
  346.      An evaluation disk with the current copy of TCHK on it is
  347.      available for $10. This is to be used to try out TCHK, and does
  348.      not include registration. The fee covers the cost of postage,
  349.      diskette(s), and handling.
  350.  
  351.      Non-U.S. orders need to include $5.00 extra to cover additional
  352.      shipping and handling charges. Checks and money orders must be
  353.      drawn on a U.S. bank. Please send all payments payable in U.S.
  354.      Dollars.
  355.  
  356.      To place an order, please use the order form distributed with TCHK
  357.      (REGISTER.DOC). If by chance, you don't have the REGISTER.DOC
  358.      file, a copy of the registration form is available in Appendix F.
  359.  
  360.  
  361.  
  362.                            QUANTITY DISCOUNTS
  363.  
  364.      Quantity discounts are available starting at the 11th copy, as
  365.      follows:
  366.  
  367.            0-10 copies:        no discount
  368.           11-15 copies:        5% discount
  369.           16-20 copies:       10% discount
  370.           21+   copies:       15% discount
  371.  
  372.      ALL PRICES AND DISCOUNTS ARE SUBJECT TO CHANGE WITHOUT NOTICE. 
  373.      Discounts are not cumulative; they apply to single orders of like
  374.      products only.
  375.  
  376.  
  377.  
  378.                                BACKGROUND
  379.  
  380.      I am a recent graduate of Rensselaer Polytechnic Institute (May
  381.      '89) with a B.S. in Computer Science and a minor in Accounting.
  382.      I also do consulting/programming work as a sideline (hint hint.)
  383.      Currently, I'm working full time with Shared Medical Systems (SMS)
  384.      in Malvern, PA. When I purchased Turbo C (way back at version
  385.      1.0), I wanted to do more than bare bones printf(). I was also
  386.      engaged in designing some software requiring the use of dates, and
  387.      some other unusual functions. Thus, after several months of
  388.      testing and use, I developed a rather useful collection of
  389.      functions. After some requests from other programmers, I decided
  390.      to bundle most of them together and <gasp> document them. Since
  391.      then, my library has grown, and so has TCHK. This library is a
  392.      collection of most of these functions.
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.     TCHK 2.1                                                   Page 7
  403.  
  404.  
  405.  
  406.  
  407.                                  FILES
  408.  
  409.      You may not distribute TCHK except in unmodified form, and it must
  410.      be distributed with all the following files:
  411.  
  412.           PACKING.LST    - list of distributed files
  413.           READ.ME        - last minute notes
  414.  
  415.           BUG.DOC        - TCHK bug report form
  416.           REGISTER.DOC   - TCHK registration form
  417.           TCHK.GEN       - TCHK file description for GEnie
  418.           TCHK.MSG       - brief description of TCHK
  419.           TCHK.PRO       - TCHK BBS file description for ProDoor
  420.           TCHK.ZDR       - TCHK BBS file description for ZDoor
  421.  
  422.           TCHK.DOC       - TCHK documentation
  423.           TCHK.FNC       - TCHK function documentation
  424.           TCHKS.TC       - Turbo C configuration file (Small)
  425.           TCHKS.LIB      - small memory model library
  426.  
  427.           ANSIHK.H       - header file for ANSI functions
  428.           CHIPHK.H       - header file for chip id routines
  429.           COLOR.H        - color definitions
  430.           COMM.H         - header file for communications functions
  431.           DATEADV.H      - header file for advanced date routines
  432.           DATECONV.H     - header file for date conversion routines
  433.           DATEHK.H       - header file for date routines
  434.           DOSHK.H        - header file for DOS routines
  435.           FILEHK.H       - header file for file routines
  436.           FINANCE.H      - header file for financial routines
  437.           HOWARD.H       - header file for miscellanoues definitions
  438.           IBM.H          - header file for misc. IBM routines
  439.           KEYBOARD.H     - header file for keyboard routines
  440.           KEYCODE.H      - keyboard key codes
  441.           MATHHK.H       - header file of math routines
  442.           MENUHK.H       - header file for menu routines
  443.           MOUSEHK.H      - header file for mouse routines
  444.           MULTIHK.H      - header file for multi-tasking routines
  445.           NETWORK.H      - header file for network routines
  446.           PRINTHK.H      - header file for print routines
  447.           REAL.H         - header file for simulated FP functions
  448.           SOUND.H        - header file for sound routines
  449.           STATEHK.H      - header file for state/zip code functions
  450.           STRINGHK.H     - header file for string routines
  451.           TIMEHK.H       - header file for time routines
  452.           VIDEO.H        - header file for video routines
  453.           ZIP.H          - header file for .ZIP file format support
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.     TCHK 2.1                                                   Page 8
  469.  
  470.           DEMO.ZIP       - archive of TCHK demo programs:
  471.  
  472.                DEMOADV.C      - date conversion functions
  473.                DEMOADV.EXE
  474.                DEMOADV.PRJ
  475.                DEMODATE.C     - date functions
  476.                DEMODATE.EXE
  477.                DEMODATE.PRJ
  478.                DEMODISK.C     - disktype function
  479.                DEMODISK.EXE
  480.                DEMODISK.PRJ
  481.                DEMOLITE.C     - litebar menu functions
  482.                DEMOLITE.EXE
  483.                DEMOLITE.PRJ
  484.                DEMONUM.C      - number functions (math/financial)
  485.                DEMONUM.EXE
  486.                DEMONUM.PRJ
  487.                DEMOPARS.C     - DOS parsing functions
  488.                DEMOPARS.EXE
  489.                DEMOPARS.PRJ
  490.                DEMOPOP.C      - popup menu functions
  491.                DEMOPOP.EXE
  492.                DEMOPOP.PRJ
  493.                DEMOTIME.C     - time conversion functions
  494.                DEMOTIME.EXE
  495.                DEMOTIME.PRJ
  496.  
  497.  
  498.      To compile the demo programs, use the configuration file TCHK.TC
  499.      and the appropriate project file. Make sure you check the Turbo C
  500.      directories before compiling. See Tips and Caveats for more
  501.      information.
  502.  
  503.  
  504.  
  505.                           IN THE BEGINNING...
  506.  
  507.      Except where explicitly stated, all of these functions have been
  508.      compiled and tested on my system:
  509.  
  510.            - IBM PC
  511.            - 640K memory
  512.            - (CGA) Color Graphics Adapter
  513.            - DOS 3.2
  514.            - AST SixPakPremium w/1 MB EEMS (REMM.SYS 3.1 and 4.3)
  515.            - Microsoft Mouse (MOUSE.COM 6.24)
  516.            - IBM Proprinter XL
  517.            - NEC V20 cpu
  518.            - PC Sprint (dandy little speed up plug in. No slot,
  519.              hardware switch for normal (4.77) and fast (~7) MHz speeds
  520.              and reboot. Between the board and the NEC my machine plods
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.     TCHK 2.1                                                   Page 9
  535.  
  536.              along almost 2x as fast as a normal PC. At only $95, I
  537.              highly recommend it. Call these guys for more info:
  538.  
  539.                     Product: PC Sprint and/or NEC V20
  540.                     Exec-PC, Inc.
  541.                     PO BOX 11268
  542.                     Shorewood, WI  53211
  543.                     VOICE: (414) 963-2880
  544.                     MODEM: (414) 964-5160
  545.  
  546.      TCHK was compiled from the interactive environment of Turbo C,
  547.      with the following options changed from the default:
  548.  
  549.           Memory model: SMALL
  550.           Optimize on: SPEED
  551.           Full optimization (Register/Jump)
  552.           No debug information
  553.           Standard stack frame Off
  554.  
  555.  
  556.      For more info, check out the configuration file TCHK.TC.
  557.  
  558.      This library was written in 100% Turbo C, except for a couple of
  559.      TASM modules which were originally inline Assembly. All C code was
  560.      compiled with Turbo C 2.0, all Assembly was compiled with Turbo
  561.      Assembler 1.0 and TCHK created with TLIB 2.0.
  562.  
  563.  
  564.  
  565.                                 FEATURES
  566.  
  567.      TCHK sports many useful features not found in other shareware
  568.      packages. Aside from many input and output routines, TCHK provides
  569.      many functions dealing with dates, time, strings, popup and
  570.      litebar menus, DESQview support, and much more.
  571.  
  572.      Many of the functions requiring output as a side effect (most
  573.      noticeably the keyboard and menu functions) make use of some of
  574.      the output routines prototyped in VIDEO.H or some of the console
  575.      i/o functions by Borland (i.e. cputs(), putch(), etc.). If you use
  576.      almost any of the keyboard routines, also expect some video
  577.      routines to be linked into your program. This is true of some
  578.      other functions as well (the popup menus use Borland's gettext()
  579.      and cputs() routines.) If you really want to change the library,
  580.      you can always purchase the source code...
  581.  
  582.      For a quick synopsis of TCHK, check out the file TCHK.MSG.
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.     TCHK 2.1                                                   Page 10
  601.  
  602.                                  CREDIT
  603.  
  604.      The following people deserve credit for their help:
  605.  
  606.      James Arnold for helping with optimizing the direct video access
  607.           functions.
  608.      Darius Thabit for his help with the reboot function.
  609.      Mark Seyden, Sysop of The BOSS (201-568-7293), for allowing me
  610.           to use his bbs as a base for TCHK.
  611.      Robert Blacher, Sysop of Computer Connections (202-547-2008),
  612.           for his comments regarding my license information and for
  613.           running an excellent BBS
  614.      Robert Mason, my college roomate, for his uncanny knack at finding
  615.           bugs within the first 30 seconds of use, no matter how clean
  616.           the code.
  617.  
  618.  
  619.  
  620.                                FUNCTIONS
  621.  
  622.      Most of the functions are documented well enough below, although I
  623.      feel a few more explanations are necessary:
  624.  
  625.           In the interactive environment you can #define one item in
  626.           terms of another, including spaces. If anyone knows how to do
  627.           this with the command line version, please let me know. The
  628.           variable type  byte  is just an unsigned char. If you use the
  629.           command line version of TC you will have to change some of
  630.           the header files of TCHK.
  631.  
  632.           Beginning with TCHK 2.0, unless otherwise noted, all
  633.           functions asking for screen coordinates comply with Borland's
  634.           format (x,y). The top left corner of the screen is (1,1).
  635.           This is highly different from previous versions of TCHK.
  636.  
  637.           Many functions rely on interrupts and low memory addresses
  638.           (400:xxxx) to comply  with the IBM standard. Certain values
  639.           (for instance, the current video page) can be found by an
  640.           interrupt or by peeking at the value stored in low memory.
  641.           Many of the video functions especially require these values
  642.           to be found at the proper places. If your clone is radically
  643.           different from the IBM standard some of these functions may
  644.           not work properly. I didn't want to have to write a million
  645.           small functions that are just background support for the
  646.           functions found here (like current page number, etc.) so I
  647.           used the #defines found in the headers (see video.h for more
  648.           details.)
  649.  
  650.           TCHK considers "key codes", "scan codes" and "ascii codes" as
  651.           different animals. Via the BIOS, any key pressed returns a
  652.           word (2-byte) value. If a 'normal' key is pressed (i.e. a
  653.           letter, space, etc.) the low order byte contains the letter.
  654.           When the low order byte is zero, an unusual key has been
  655.           pressed (i.e. Alt combinations, arrows, grey +, etc.) This 2 
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.     TCHK 2.1                                                   Page 11
  667.  
  668.           byte word as returned by the BIOS is called a scan code. For
  669.           ease of use, several functions convert this "scan code" to a
  670.           value from 0-511, called a "key code", where 0-255 are
  671.           'normal' ascii codes, as per the IBM ASCII character set, and
  672.           256-511 are the unusual keys. Many of the popular key codes
  673.           are listed in KEYCODE.H. To determine a key code, if the low
  674.           order byte is zero, take the high order byte as a number
  675.           0-255 and add 256. If the low order byte is non-zero, take
  676.           the low order byte as a number from 0-255. Note that although
  677.           the regular plus key and the grey plus key (on the numeric
  678.           keypad) return different scan codes, their key code is the
  679.           same. So, briefly, an "ascii code" is a char (value of
  680.           0-255), a "scan code" is a 2-byte word returned from the
  681.           BIOS, and a "key code" is a value 0-511. "Scan codes" and
  682.           "key codes" are both 2 bytes long (unsigned int and int,
  683.           respectively).
  684.  
  685.           There are several functions that refer to a DOS file name. A
  686.           'file name' is a generic term for any possible name for a
  687.           file (drive, path and even filename.ext are optional). A
  688.           'filename' refers to a DOS filename.ext, no drive or path
  689.           (sometimes referred to with 'filename.ext'). A 'filepathname'
  690.           refers to a full file name, including drive, path and
  691.           filename.ext (some parts may be optional.) A 'filespec' is
  692.           similiar to a 'filename', but does not necessarily refer to a
  693.           specific file (i.e. D:\TURBOC is actually D:\TURBOC\*.*. See
  694.           how DIR parses filespecs for more details.)
  695.  
  696.           TCHK has not been tested on a Hercules or MDA video card
  697.           since I do not have access to either piece of hardware,
  698.           although the methods I used are well documented and should
  699.           cause no problems.
  700.  
  701.           All functions that use my direct screen access routines have
  702.           built-in snow control. On CGA monitors, the snow was
  703.           horrendous without it. Unless I code these routines in
  704.           assembler, I won't be able to squeeze any more optimization
  705.           out of these routines. Since Borland now provides acceptable
  706.           console i/o functions, I doubt I shall bother to recode these
  707.           in Assembler.
  708.  
  709.      One type of command you will NOT find in TCHK are windowing
  710.      commands. There are plenty of windowing libraries available. You
  711.      should not try to make your poor IBM into a Mac, it won't cut it.
  712.      Splurge for the Mac, you'll be happier. If you really want windows
  713.      on your IBM-type machine, use DESQview. Yes, I know, a 'windowing'
  714.      interface is nicer. I use 'windows' too, although mine are just
  715.      boxes. Given the overhead needed for windows (in memory and
  716.      performance) I find my method more than acceptable for my current
  717.      needs.
  718.  
  719.      The functions are listed in the same manner as the Turbo C manual,
  720.      in alphabetical order. Due to the size of the documentation, the
  721.      functions appear in a separate file TCHK.FNC.
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.     TCHK 2.1                                                   Page 12
  733.  
  734.  
  735.  
  736.  
  737.                             TIPS AND CAVEATS
  738.  
  739.      You really should check the settings in TCHK.TC before trying to
  740.      use TCHK. Here are a few things you might want to be aware of:
  741.  
  742.           Nested Comments: I use them. Some of the header files have
  743.           nested comments in them. If you do not tell the compiler that
  744.           nested comments are ok, you may get strange and usually
  745.           untraceable error messages when compiling TCHK demos or
  746.           source code.
  747.  
  748.           Command Line Compiler: byte, word and bboolean can only be
  749.           #defined in the interactive environment. If you use the
  750.           command line compiler you may have to change some header
  751.           files.
  752.  
  753.           DESQview/EMS: I plan on expanding the support for DESQview
  754.           and EMS in the near future. Several functions may seem
  755.           useless or nearly so right now. Due to time constraints,
  756.           there is only so much I can do at a time, but rest assured
  757.           there is more in the works. If you really can't wait, you
  758.           could always purchase the source code and putter around
  759.           yourself...
  760.  
  761.  
  762.  
  763.                                 #DEFINES
  764.  
  765.      Most of these #defines are self-explanatory. All can be found in
  766.      the appropriate header files:
  767.  
  768.  
  769.  Ansihk.h
  770. --------
  771.  
  772.      Ansi color definitions. See ansihk.h for more details
  773.  
  774.  Color.h
  775. -------
  776.  
  777.      DOS color definitions. See color.h for more details.
  778.  
  779.  Chiphk.h
  780. --------
  781.  
  782.      Cpu types recognized by cpu_id(). See chiphk.h for more details.
  783.      Math coprocessor types recognized by ndp_id(). See chiphk.h for
  784.           more details.
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.     TCHK 2.1                                                   Page 13
  799.  
  800.  Datehk.h
  801. --------
  802.  
  803.      Date types:
  804.  
  805.           typedef enum { Sun, Mon, Tues, Wed, Thrus, Fri, Sat } days;
  806.           typedef enum { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,
  807.                          Oct, Nov, Dec } months;
  808.  
  809.           My date structure:
  810.  
  811.                typedef struct ddate {
  812.                          int dyear;          /* Year - 1900 */
  813.                          int dday;           /* Day of month (1-31) */
  814.                          months dmon;        /* Month (Jan = 0) */
  815.                     };
  816.  
  817.           Note: the year is stored as Year - 1900. For example, if you
  818.                wanted to store 1987 in the variable d (of type struct
  819.                ddate), you would:       d.dyear = 87;
  820.           Note: the months start with January as zero.
  821.  
  822.      Date constants:
  823.  
  824.           #define DATENULL      "  -  -  "   /* empty date string */
  825.           #define DATECHAR      '-'          /* date delimiter char */
  826.           #define DATECHARSTR   "-"          /* date delim. string */
  827.           #define DATECHARTEST  "/- "        /* all date delimiters */
  828.           #define BASE_LEAP_YEAR  1980       /* base year for leap
  829.                                                   year calculations */
  830.           #define BASE_JUL_YEAR   1720982.0  /* base day for Julian
  831.                                                   Type E calcs */
  832.  
  833.      Date macros:
  834.  
  835.           #define isleap(yr)      isleapyear(yr)
  836.  
  837.  Doshk.h
  838. -------
  839.  
  840.      DOS types:
  841.  
  842.           typedef struct BIOSParmBlock {
  843.                     unsigned int BytesPerSector;
  844.                     byte         SectorsPerAllocUnit;
  845.                     unsigned int ReservedSectors;
  846.                     byte         numberFATs;
  847.                     unsigned int numberRootDirEntries;
  848.                     unsigned int TotalSectors;
  849.                     byte         MediaDescriptor;
  850.                     unsigned int SectorsPerFAT;
  851.                };
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.     TCHK 2.1                                                   Page 14
  865.  
  866.           typedef struct BootBlock {
  867.                     byte JumpInstr[3];
  868.                     byte OEMinfo[8];
  869.                     struct BIOSParmBlock BPB;
  870.                     unsigned int SectorsPerTrack;
  871.                     unsigned int numberHeads;
  872.                     unsigned int numberHiddenSectors;
  873.                };
  874.  
  875.           typedef struct BootBlock4 {
  876.                     byte JumpInstr[3];
  877.                     byte OEMinfo[8];
  878.                     struct BIOSParmBlock BPB;
  879.                     unsigned int SectorsPerTrack;
  880.                     unsigned int numberHeads;
  881.                     unsigned long numberHiddenSectors;
  882.                     unsigned long TotalnumberSectors;
  883.                     byte Physicaldrive;
  884.                     byte reserved1[1];
  885.                     byte Signaturebyte;
  886.                     unsigned long VolumeSerialNumber;
  887.                     char VolumeLabel[11];
  888.                     byte reserved2[8];
  889.                };
  890.  
  891.  
  892.  Filehk.h
  893. --------
  894.  
  895.      File types:
  896.  
  897.           typedef struct filespec {
  898.                     char drive;
  899.                     char path[81];
  900.                     char filename[13];
  901.                };
  902.           typedef struct fnameext {
  903.                     char filename[9];
  904.                     char ext[4];
  905.                };
  906.  
  907.      File constants:
  908.  
  909.           #define FNAMESIZE        96
  910.           #define PATHSIZE         100
  911.           #define MAXFNAME         13
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.     TCHK 2.1                                                   Page 15
  931.  
  932.  Finance.h
  933. ---------
  934.  
  935.      Finance macros:
  936.  
  937.           #define SLD(c,s,l)            straight_line_dep(c,s,l)
  938.           #define SYD(c,s,l,p)          sum_year_digits_dep(c,s,l,p)
  939.           #define DDB(c,l,p)            double_decline_bal_dep(c,l,p)
  940.           #define ACC_SLD(c,s,l)        accum_dep(c,s,l,0,1)
  941.           #define ACC_SYD(c,s,l,p)      accum_dep(c,s,l,p,2)
  942.           #define ACC_DDB(c,l,p)        accum_dep(c,0,l,p,3)
  943.  
  944.  
  945.  Howard.h
  946. --------
  947.  
  948.      Boolean constants and macros:
  949.  
  950.           #define boolean     char
  951.           #define FALSE       0
  952.           #define TRUE        (!FALSE)
  953.           #define EQU(b1,b2)  (((b1)&&(b2)) || ((!b1)&&(!b2)))
  954.           #define NEQ(b1,b2)  (((b1)&&(!b2)) || ((!b1)&&(b2)))
  955.           #define BINV(b1)    (b1 ? FALSE : TRUE)
  956.  
  957.      Text justification:
  958.  
  959.           #define NONE        0
  960.           #define LEFT        1
  961.           #define CENTER      2
  962.           #define RIGHT       3
  963.  
  964.      Turbo C version numbers
  965.  
  966.           #define _TCmajor    ((__TURBOC__&0xFF00)>>8)
  967.           #define _TCminor    ((__TURBOC__&0x00FF)>>4)
  968.  
  969.      Other
  970.  
  971.           #define OFF         0
  972.           #define ON          1
  973.  
  974.  
  975.  Ibm.h
  976. -----
  977.  
  978.      IBM types:
  979.  
  980.           typedef struct EMSrecord {
  981.                     unsigned int handle;
  982.                     unsigned int totalpages;
  983.                     unsigned int availpages;
  984.                     byte version;
  985.                     byte emserror;
  986.                };
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.     TCHK 2.1                                                   Page 16
  997.  
  998.  
  999.      IBM constants:
  1000.  
  1001.           Rom id constants. See ibm.h for more details.
  1002.           Machine id constants. See ibm.h for more details.
  1003.           Memory strategy constants. See ibm.h for more details.
  1004.           Disk id byte constants. See ibm.h for more details.
  1005.           EMS constants. See ibm.h for more details.
  1006.  
  1007.      IBM macros:
  1008.  
  1009.           #define TIMER_TICKS     *((long far *) 0x46Clu)
  1010.  
  1011.  
  1012.  Keyboard.h
  1013. ----------
  1014.  
  1015.      Keyboard constants:
  1016.  
  1017.           #define SHIFT_STATUS     *((byte far *) 0x417lu)
  1018.           #define WAITFORKEY       1
  1019.  
  1020.      getget() flags:
  1021.  
  1022.           #define UDFIDLE     0x0080
  1023.           #define DVFREESLICE 0x0040
  1024.           #define JCENTER     0x0030
  1025.           #define JLEFT       0x0020
  1026.           #define JRIGHT      0x0010
  1027.           #define JNONE       0x0000
  1028.           #define BELL        0x0008
  1029.           #define TRIMLEFT    0x0004
  1030.           #define TRIMRIGHT   0x0002
  1031.           #define INSERTMODE  0x0001
  1032.           #define TRIMALL     TRIMLEFT|TRIMRIGHT
  1033.           #define NOFLAGS     0x0000
  1034.  
  1035.  
  1036.  Keycode.h
  1037. ---------
  1038.  
  1039.      Keycode constants:
  1040.  
  1041.           Key shift status constants. See keycode.h for more details.
  1042.           Key code constants. See keycode.h for more details.
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.     TCHK 2.1                                                   Page 17
  1063.  
  1064.  Math.h
  1065. ------
  1066.  
  1067.      Math constants:
  1068.  
  1069.           #define SQRT2       1.41421356237309504880
  1070.           #define PI          3.141592653589793238462643
  1071.           #define E           2.7182818284590452353602874
  1072.           #define MAXFLOAT           3.4E+38
  1073.           #define MAXDOUBLE          1.7E+308
  1074.           #define MAXLONG            2147483647
  1075.           #define MAXLONG_UNSIGNED   4294967295
  1076.  
  1077.  
  1078.  Menuhk.h
  1079. --------
  1080.  
  1081.      Menuhk types:
  1082.  
  1083.           typedef struct popup_field {
  1084.                     char *command;
  1085.                     int y;
  1086.                     char flag;
  1087.                     char key;
  1088.                     char offset;
  1089.                     int retval;
  1090.                     struct popup_header *submenu;
  1091.                     struct popup_field *next;
  1092.                     struct popup_field *previous;
  1093.                };
  1094.  
  1095.           typedef struct popup_header {
  1096.                     char *videosave;
  1097.                     struct text_info inforec;
  1098.                     int left, top, right, bottom;
  1099.                     int margc;
  1100.                     struct popup_field *margv;
  1101.                     struct popup_field *current;
  1102.                     char *menusave;
  1103.                     int colnorm;
  1104.                     int colcmdkey;
  1105.                     int colhilite;
  1106.                     int coldisabled;
  1107.                     int coldishilite;
  1108.                     unsigned flags;
  1109.                     char internal;
  1110.                };
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.     TCHK 2.1                                                   Page 18
  1129.  
  1130.           typedef struct litebar_field {
  1131.                     char *command;
  1132.                     int x, y;
  1133.                     char flag;
  1134.                     char key;
  1135.                     char offset;
  1136.                     char *message;
  1137.                     int retval;
  1138.                     struct litebar_header *submenu;
  1139.                     struct litebar_field *next;
  1140.                     struct litebar_field *previous;
  1141.                     struct litebar_field *left;
  1142.                     struct litebar_field *right;
  1143.                     struct litebar_field *up;
  1144.                     struct litebar_field *down;
  1145.                };
  1146.  
  1147.           typedef struct litebar_header {
  1148.                     char *videosave;
  1149.                     struct text_info inforec;
  1150.                     int left, top, right, bottom;
  1151.                     int margc;
  1152.                     struct litebar_field *margv;
  1153.                     struct litebar_field *current;
  1154.                     int msgx, msgy;
  1155.                     char *menusave;
  1156.                     struct keylist *quitkey;
  1157.                     int colnorm;
  1158.                     int colcmdkey;
  1159.                     int colhilite;
  1160.                     int coldisabled;
  1161.                     int coldishilite;
  1162.                     int colmessage;
  1163.                     unsigned flags;
  1164.                     char internal;
  1165.                };
  1166.  
  1167.           typedef struct keylist {
  1168.                     int keyval;
  1169.                     struct keylist *next;
  1170.                };
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.     TCHK 2.1                                                   Page 19
  1195.  
  1196.      Menu flags:
  1197.  
  1198.           #define QUITMENU         0x8000
  1199.           #define ESCQUIT          0x4000
  1200.           #define FREEMENU         0x2000
  1201.           #define HIERARCHIAL      0x0100
  1202.           #define UDFIDLE          0x0080
  1203.           #define DVFREESLICE      0x0040
  1204.           #define CASEINDEP        0x0020
  1205.           #define RESTORECURSOR    0x0010
  1206.           #define CURSORON         0x0008
  1207.           #define ERASEMENU        0x0004
  1208.           #define DISABLENOHILITE  0x0002
  1209.           #define WRAPAROUND       0x0001
  1210.  
  1211.      Internal menu flags:
  1212.  
  1213.           #define FIRSTTIME        0x01
  1214.  
  1215.      Menu command flags:
  1216.  
  1217.           #define ENABLED          0x01
  1218.           #define DISABLED         0x02
  1219.           #define NOTOPTION        0x04
  1220.           #define STATICTEXT       NOTOPTION
  1221.  
  1222.  
  1223.  Mousehk.h
  1224. ---------
  1225.  
  1226.      Mousehk constants:
  1227.  
  1228.           #define MOUSEINT        0x33
  1229.  
  1230.           #define MOUSE_INSTALLED -1
  1231.           #define NO_MOUSE        0
  1232.  
  1233.           #define TWOBUTTONS      -1
  1234.           #define XBUTTONS        0
  1235.           #define MSYSMOUSE       3
  1236.  
  1237.           #define LEFTBUTTON      0
  1238.           #define RIGHTBUTTON     1
  1239.           #define MIDDLEBUTTON    2
  1240.  
  1241.           #define LBPRESSED       0x01
  1242.           #define RBPRESSED       0x02
  1243.           #define MBPRESSED       0x04
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.     TCHK 2.1                                                   Page 20
  1261.  
  1262.  Multihk.h
  1263. ---------
  1264.  
  1265.      Multihk types:
  1266.  
  1267.           typedef struct DESQmemory {
  1268.                     int memavail;
  1269.                     int largestblockavail;
  1270.                     int totalmem;
  1271.                };
  1272.  
  1273.      Multihk constants:
  1274.  
  1275.           #define DVERROR_BEEP    0x8000
  1276.           #define DVERROR_LEFT    0x2000
  1277.           #define DVERROR_RIGHT   0x4000
  1278.           #define DVERROR_EITHER  0x0000
  1279.  
  1280.  
  1281.  Printhk.h
  1282. ---------
  1283.  
  1284.      Printhk constants:
  1285.  
  1286.           Print Screen constants. See printhk.h for more details.
  1287.           Print.com constants. See printhk.h for more details.
  1288.           Print.com error codes. See printhk.h for more details.
  1289.           #define PRTSC_STATUS     *((byte far *) 0x500lu)
  1290.  
  1291.  
  1292.  Real.h
  1293. ------
  1294.  
  1295.      Real types:
  1296.  
  1297.           typedef enum {
  1298.                RDOMAIN = 1,
  1299.                RSING,
  1300.                ROVERFLOW,
  1301.                RUNDERFLOW,
  1302.                RTLOSS,
  1303.                RPLOSS,
  1304.                RFRACOVER,
  1305.                RFRACUNDER,
  1306.                RDIVBYZERO,
  1307.           } _rmexcep;
  1308.  
  1309.           typedef struct REAL {
  1310.                     long rint;
  1311.                     long rfrac;
  1312.                     int precision;
  1313.                };
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.     TCHK 2.1                                                   Page 21
  1327.  
  1328.      Real constants:
  1329.  
  1330.           #define MAXRPRECISION   8
  1331.  
  1332.  
  1333.  Sound.h
  1334. -------
  1335.  
  1336.      Sound constants:
  1337.  
  1338.           Tone constants: see sound.h for mode details.
  1339.  
  1340.  
  1341.  Statehk.h
  1342. ---------
  1343.  
  1344.      Statehk constants:
  1345.  
  1346.           #define MAXSTATES   55
  1347.  
  1348.  
  1349.  Timehk.h
  1350. --------
  1351.  
  1352.      Timehk constants:
  1353.  
  1354.           #define MAXLONGTIME     8640000l
  1355.  
  1356.  
  1357.  Video.h
  1358. -------
  1359.  
  1360.      Video constants:
  1361.  
  1362.           #define VIDEO            0x10
  1363.           #define MODE             *((byte far *) 0x449lu)
  1364.           #define PAGE             *((byte far *) 0x462lu)
  1365.           #define PAGELEN          *((unsigned int far *) 0x44Clu)
  1366.           #define VIDOFFSET        *((unsigned int far *) 0x44Elu)
  1367.           #define ROWCOUNT         *((byte far *) 0x484lu)
  1368.           #define CHARHEIGHT       *((unsigned int far *) 0x485lu)
  1369.           #define CURSOR_UNDERBAR       (MODE==7)?0x0B0C:0x0607
  1370.           #define CURSOR_HALFBLOCK      (MODE==7)?0x070C:0x0407
  1371.  
  1372.           #define SHADOW_TL   0x0080
  1373.           #define SHADOW_T    0x0040
  1374.           #define SHADOW_TR   0x0020
  1375.           #define SHADOW_R    0x0010
  1376.           #define SHADOW_BR   0x0008
  1377.           #define SHADOW_B    0x0004
  1378.           #define SHADOW_BL   0x0002
  1379.           #define SHADOW_L    0x0001
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.     TCHK 2.1                                                   Page 22
  1393.  
  1394.           #define SHADOW_TOP      (SHADOW_TL|SHADOW_T|SHADOW_TR)
  1395.           #define SHADOW_BOTTOM   (SHADOW_BL|SHADOW_B|SHADOW_BR)
  1396.           #define SHADOW_LEFT     (SHADOW_TL|SHADOW_L|SHADOW_BL)
  1397.           #define SHADOW_RIGHT    (SHADOW_TR|SHADOW_R|SHADOW_BR)
  1398.  
  1399.  
  1400.  Zip.h
  1401. -----
  1402.  
  1403.      Zip types:
  1404.  
  1405.           typedef struct ZIP_local_header {
  1406.                     long Signature;
  1407.                     int version;
  1408.                     int BitFlag;
  1409.                     int CompressionMethod;
  1410.                     unsigned int FileTime;
  1411.                     unsigned int FileDate;
  1412.                     long CRC32;
  1413.                     long CompressedSize;
  1414.                     long UnCompressedSize;
  1415.                     int FileNameLength;
  1416.                     int ExtraFieldLength;
  1417.                };
  1418.  
  1419.           typedef struct ZIP_central_record {
  1420.                     long Signature;
  1421.                     int VersionMadeBy;
  1422.                     int VersionNeeded;
  1423.                     int BitFlag;
  1424.                     int CompressionMethod;
  1425.                     unsigned int FileTime;
  1426.                     unsigned int FileDate;
  1427.                     long CRC32;
  1428.                     long CompressedSize;
  1429.                     long UnCompressedSize;
  1430.                     int FileNameLength;
  1431.                     int CommentFieldLength;
  1432.                     int DiskStartNumber;
  1433.                     int InternalAttributes;
  1434.                     long ExternalAttributes;
  1435.                     long LocalHeaderOffset;
  1436.                };
  1437.  
  1438.           typedef struct ZIP_end_central_record {
  1439.                     long Signature;
  1440.                     int ThisDiskNumber;
  1441.                     int CentralDiskNumber;
  1442.                     int EntriesCentral;
  1443.                     long SizeCentral;
  1444.                     long OffsetCentral;
  1445.                     int ZipfileCommentLength;
  1446.                };
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.     TCHK 2.1                                                   Page 23
  1459.  
  1460.      Zip constants:
  1461.  
  1462.           #define MAX_ZIP_VERSION         10
  1463.           #define ZIPSignatureLocal       0x04034B50l
  1464.           #define ZIPSignatureCentral     0x02014B50l
  1465.           #define ZIPSignatureEndCentral  0x06054B50l
  1466.  
  1467.      Zip macros:
  1468.  
  1469.           #define nextZIPlocal(Z)         (Z.FileNameLength +
  1470.                                            Z.ExtraFieldLength +
  1471.                                            Z.CompressedSize)
  1472.           #define ZIPversion(Zversion)    (Zversion & 0x00FF)
  1473.           #define _ZIPmajor(Zversion)     (ZIPversion(Zversion) / 10)
  1474.           #define _ZIPminor(Zversion)     (ZIPversion(Zversion) % 10)
  1475.  
  1476.  
  1477.  
  1478.                              VARIABLE TYPES
  1479.  
  1480.      The following variable types have been defined:
  1481.  
  1482.           bboolean = unsigned int  defined in TC.EXE. See Features.
  1483.           boolean = char           Howard.h
  1484.           byte = unsigned char     defined in TC.EXE. See Features.
  1485.           word = unsigned int      defined in TC.EXE. See Features.
  1486.           struct ddate             Datehk.h
  1487.           struct BiosParmBlock     Doshk.h
  1488.           struct BootBlock         Doshk.h
  1489.           struct BootBlock4        Doshk.h
  1490.           struct filespec          Filehk.h
  1491.           struct fnameext          Filehk.h
  1492.           struct EMSrecord         Ibm.h
  1493.           struct keylist           Menuhk.h
  1494.           struct litebar_field     Menuhk.h
  1495.           struct litebar_header    Menuhk.h
  1496.           struct popup_field       Menuhk.h
  1497.           struct popup_header      Menuhk.h
  1498.           struct DESQmemory        Multihk.h
  1499.           struct ZIP_local_header            Zip.h
  1500.           struct ZIP_central_record          Zip.h
  1501.           struct ZIP_end_central_record      Zip.h
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.     TCHK 2.1                                                   Page 24
  1525.  
  1526.                             GLOBAL VARIABLES
  1527.  
  1528.      These variables are defined for one reason or another and used
  1529.      internally. None of these variables have to be initialized (see
  1530.      insertmode.) They are mainly used to return extra values found in
  1531.      certain functions or needed globally by other functions.
  1532.  
  1533.       Date variables:
  1534.  
  1535.           char *Days[7] = { "Sunday","Monday","Tuesday","Wednesday",
  1536.                             "Thursday","Friday","Saturday" };
  1537.           char *Months[12] = { "January","February","March","April",
  1538.                                "May","June","July","August",
  1539.                                "September","October","November",
  1540.                                "December" };
  1541.           char *MonthAbbr[12] = { "Jan","Feb","Mar","Apr","May",
  1542.                                   "Jun","Jul","Aug","Sep","Oct",
  1543.                                   "Nov","Dec" };
  1544.           int daylist[13] = { 0, 31, 59, 90, 120, 151, 181, 212,
  1545.                               243, 273, 304, 334, 365 };
  1546.  
  1547.      Note: daylist is a list of the day number of the year at the end
  1548.            of each month (i.e. April 1st is the 91st (Mar 31 = 90, +1) 
  1549.            day of the year.)
  1550.  
  1551.  
  1552.       Keyboard variables:
  1553.  
  1554.           boolean key_extended;    /* TRUE if special key pressed,
  1555.                                       i.e. Alt-X, etc. */
  1556.           int key_status;          /* shift key status byte */
  1557.  
  1558.      Note:  these variables are set by getk(), and are checked by many
  1559.             other keyboard routines.
  1560.  
  1561.           boolean insertmode;      /* insert or overwrite mode? */
  1562.  
  1563.      Note:  This variable is used internally by getstr() and getget().
  1564.             Although getget() initializes this variable, getstr does
  1565.             NOT. You MUST set insertmode to TRUE or FALSE before
  1566.             calling getstr() or unpredictable results may occur. Upon
  1567.             completion of this function, testing this variable will
  1568.             determine the input mode last used. Future versions will
  1569.             default insertmode to some value if it has not been set.
  1570.  
  1571.           unsigned _cursorinsert;
  1572.           unsigned _cursoroverwrite;
  1573.  
  1574.      Note:  Cursor used in insert and overwrite modes during keyboard
  1575.             input. Currently only supported by getget().
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.     TCHK 2.1                                                   Page 25
  1591.  
  1592.       Menu variables:
  1593.  
  1594.           int litebarerrno;
  1595.           int popuperrno;
  1596.  
  1597.  
  1598.       Mouse variables:
  1599.  
  1600.           int _mouse1, _mouse2, _mouse3, _mouse4;
  1601.  
  1602.  
  1603.       Multitasking variables:
  1604.  
  1605.           char _dvmajor;
  1606.           char _dvminor;
  1607.  
  1608.  
  1609.       Real (simulated FP) variables:
  1610.  
  1611.           int _r_minpre, _r_maxpre;
  1612.           boolean _r_maximum = FALSE;
  1613.           int _rmatherror;
  1614.  
  1615.  
  1616.       State/Zip code variables:
  1617.  
  1618.           const char *States[] =
  1619.                {    "AL","AK","AZ","AR","CA","CO","CT","CZ","DE","DC",
  1620.                     "FL","GA","GU","HI","ID","IL","IN","IA","KS","KY",
  1621.                     "LA","ME","MD","MA","MI","MN","MS","MO","MT","NE",
  1622.                     "NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR",
  1623.                     "PA","PR","RI","SC","SD","TN","TX","UT","VT","VA",
  1624.                     "VI","WA","WV","WI","WY" };
  1625.  
  1626.           const char *StateName[] =
  1627.                {    "Alabama","Alaska","Arizona","Arkansas",
  1628.                     "California","Colorodo", "Connecticut",
  1629.                     "Canal Zone","Delaware","District of Columbia",
  1630.                     "Florida","Georgia","Guam","Hawaii","Idaho",
  1631.                     "Illinois","Indiana","Iowa","Kansas","Kentucky",
  1632.                     "Louisiana","Maine","Maryland","Massachussetts",
  1633.                     "Michigan","Minnesota","Mississippi","Missouri",
  1634.                     "Montana","Nebraska", "Nevada","New Hampshire",
  1635.                     "New Jersey","New Mexico","New York",
  1636.                     "North Carolina","North Dakota","Ohio","Oklahoma",
  1637.                     "Oregon","Pennsylvania","Puerto Rico",
  1638.                     "Rhode Island","South Carolina","South Dakota",
  1639.                     "Tennessee","Texas","Utah","Vermont","Virginia",
  1640.                     "Virgin Islands","Washington","West Virginia",
  1641.                     "Wisconsin", "Wyoming" };
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.     TCHK 2.1                                                   Page 26
  1657.  
  1658.      const long ZipMin[] =
  1659.                {    99500l, 35000l, 71500l, 85000l, 90000l, 80000l,
  1660.                     06000l, LONG_MIN, 20000l, 19700l, 32000l, 30000l,
  1661.                     96900l, 96700l, 50000l, 83200l, 60000l, 46000l,
  1662.                     66000l, 40000l, 70000l, 01000l, 20600l, 03900l,
  1663.                     48000l, 55000l, 63000l, 38600l, 59000l, 68000l,
  1664.                     27000l, 58000l, 03000l, 07000l, 87000l, 88900l,
  1665.                     09000l, 43000l, 73000l, 97000l, 15000l, 00600l,
  1666.                     02800l, 29000l, 57000l, 37000l, 75000l, 84000l,
  1667.                     22000l, 00800l, 05000l, 24700l, 98000l, 53000l,
  1668.                     82000l };
  1669.  
  1670.      const long ZipMax[] =
  1671.                {    99999l, 36999l, 72899l, 86599l, 96699l, 81699l,
  1672.                     06999l LONG_MAX, 20599l, 19999l, 34299l, 31999l,
  1673.                     96999l, 96899l, 52699l, 83899l, 62999l, 47999l,
  1674.                     67999l, 42799l, 71499l, 02799l, 21999l, 04999l,
  1675.                     49999l, 56799l, 65899l, 39799l, 59999l, 69399l,
  1676.                     28999l, 58899l, 03899l, 08999l, 88499l, 89899l,
  1677.                     14999l, 45899l, 74999l, 97999l, 19699l, 00999l,
  1678.                     02999l, 29999l, 57799l, 38599l, 79999l, 84799l,
  1679.                     24699l, 00899l, 05999l, 26899l, 99499l, 54999l,
  1680.                     83199l };
  1681.  
  1682.  
  1683.       TCHK version variables:
  1684.  
  1685.           unsigned int _TCHKversion = 0x0210;
  1686.           unsigned char _TCHKmajor = 2;
  1687.           unsigned char _TCHKminor = 10;
  1688.           char *_TCHKdate = "06/06/89";
  1689.           char *_TCHK = "TCHK is Copyright (C) 1988,1989 by Howard
  1690.                          Kapustein.  All rights reserved.";
  1691.  
  1692.  
  1693.       Video variables:
  1694.  
  1695.           FRAMES: see video.h for frame[] declarations.
  1696.  
  1697.           const char emptystring[] = "               ";
  1698.  
  1699.           Note: Do NOT alter this variable. emptystring[] is defined
  1700.                 as a string of 15 spaces and is used internally by
  1701.                 several functions. Altering this function can lead to
  1702.                 wildly unpredictable results.
  1703.  
  1704.           byte char_attribute;
  1705.  
  1706.           Note: This variable is used by many output functions to set
  1707.                 the attribute byte. For functions such as putstr() you
  1708.                 can either call set_color() with the attribute desired
  1709.                 or declare char_attribute as an extern and then set it
  1710.                 yourself.
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.     TCHK 2.1                                                   Page 27
  1723.  
  1724.  
  1725.           int _shadowstyle =  SHADOW_B | SHADOW_BR | SHADOW_R;
  1726.           char _shadowchar = '▒';
  1727.           char _shadowcolor = LBLACK | B_BLACK;
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.     TCHK 2.1                                                   Page 28
  1789.  
  1790.                             REVISION HISTORY
  1791.  
  1792.      Version 2.1  -  4-1-89
  1793.      -----------
  1794.      New:
  1795.        -  ON and OFF are defined in howard.h
  1796.        -  isNovellNetavail()
  1797.        -  resolvepath()
  1798.        -  getBootBlock4(), getVolSerialNum()
  1799.        -  getAssignmemseg()
  1800.        -  isScrnSav2()
  1801.        -  isAutoPark(), setAutoPark()
  1802.        -  commit()
  1803.        -  isXMSinstalled()
  1804.        -  isCEDavail(), CEDadd(), CEDremove()
  1805.        -  nmid(), iseven(), isodd()
  1806.        -  Tone()
  1807.        -  iscdevicemoderaw(), setcdevicemoderaw()
  1808.        -  isremoveable()
  1809.        -  isdrivelocal(), ishandlelocal()
  1810.        -  isRedirectStdin(), isRedirectStdout()
  1811.        -  fileexist()
  1812.        -  new header file STATEHK.H for state and zip code information:
  1813.           isstate(), iszip(), stateindex()
  1814.        -  Checksum_block(), CRC16_block(), CRC16tupdate(),
  1815.           CRC16update(), CRC32tupdate()
  1816.        -  header file ZIP.H, containing support for .ZIP files
  1817.        -  joystickAx(), joystickAy(), joystickBx(), joystickBy(),
  1818.           joysticksettings()
  1819.        -  center()
  1820.        -  dostimetolong(), longtodostime()
  1821.        -  isallalpha(), isallalphanum(), isalllower(), isallupper()
  1822.        -  iswildcarded()
  1823.        -  strpadleft(), strpadright()
  1824.        -  strspace2tab(), strtabexpand()
  1825.        -  soundex()
  1826.        -  bitrevb(), bitrevl(), bitrevw()
  1827.        -  new header file REAL.H for real (simulated fp) math: radd(),
  1828.           rsub(), rdiv(), rceil(), rfloor(), rsign(), rnegate(),
  1829.           rnormalize(), lpow() and Appendix D
  1830.        -  isdate(), isfilename(), ispathname()
  1831.        -  isHiliteable()
  1832.        -  shadow()
  1833.        -  ispcAnywhere(), SetpcAnywhere()
  1834.        -  DESQapilevel(), DESQappnum(), DESQbeginc(), DESQdisperror(),
  1835.           DESQendc(), DESQgetbuf(), DESQgetmem(), DESQiskmouse(),
  1836.           DESQjustify(), DESQkmouse_off(), DESQkmouse_on(),
  1837.           DESQposttask(), DESQpushkey(), DESQputmem(), DESQstart(),
  1838.           DESQstop()
  1839.        -  getpw()
  1840.        -  initkeyvars()
  1841.        -  keyclick()
  1842.        -  is2nd8259(), isrealtimeclock(), isMCA()
  1843.        -  isDoubleDOS(), isInvisible()
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.     TCHK 2.1                                                   Page 29
  1855.  
  1856.        -  GetTypePointDevice(), ResetPointDevice(), SetPointDevice(),
  1857.           SetRatePointDevice(), SetResPointDevice()
  1858.        -  CompaqExternalMonitorType(), CompaqInternalMonitorType(),
  1859.           CompaqGetMasterMode(), CompaqSetMasterMode(),
  1860.           CompaqGetMonitor(), CompaqSelectMonitor(),
  1861.           CompaqModeSwitchDelay()
  1862.        -  isDriverSys(), isNLSFuncCom()
  1863.        -  isWhoa(), setWhoa(), uninstallWhoa()
  1864.        -  isAnarkey()
  1865.        -  Compaq386GetCpuSpeed(), Compaq386SetCpuSpeed(),
  1866.           Compaq386KbdType()
  1867.        -  menu_litebar()
  1868.        -  all menu functions now have the bit flag DVFREESLICE to free
  1869.           up time slices if running under DESQview
  1870.        -  all menu functions support a user-defined function during
  1871.           idle keyboard waits via the _idle_menu() function
  1872.        -  getget() now supports type Hexadecimal (Hh), DOS Filename
  1873.           (Ff) and Pathname (Pp) and Date (Dd)
  1874.        -  getget() now has the bit flag DVFREESLICE to free up time
  1875.           slices if running under DESQview
  1876.        -  getget() supports a user-defined function during idle
  1877.           keyboard waits via the _idle_get() function
  1878.        -  boxwindow() now supports NONE for title justification (like
  1879.           the popup...() and litebar...() functions)
  1880.        -  new header file MOUSEHK.H for mouse functions: ismouse(),
  1881.           MButtonPress(), MButtonRelease(), MButtonStatus(),
  1882.           MMickeysMovedx(), MMickeysMovedy(), MCursorOff(),
  1883.           MCursorOn(), MCursorRangex(), MCursorRangey(),
  1884.           MCursorGraphic(), MCursorText(), MGotoxy(), MDriverSize(),
  1885.           MGetDriver(), MPutDriver(), MouseReset(), MGetVerType(),
  1886.           MGetDisplayPage(), MSetDisplayPage(), MUpdateScreen(),
  1887.           MEmulateLightpenOff(), MEmulateLightpenOn(), MSetRatio(),
  1888.           MSetThreshold(), MGetSensitivity(), MSetSensitivity() and
  1889.           Appendix E
  1890.        -  new demos: demomous.c,
  1891.        -  all demos now distributed with executable file (.EXE)
  1892.        -  several new small files now distributed with TCHK (TCHK.ZDR,
  1893.           BUG.DOC, etc.)
  1894.  
  1895.  
  1896.      Changes:
  1897.        -  iskey102() renamed to isEnhanceKbd()
  1898.        -  isNetwork() moved to network.h
  1899.        -  beep() moved to sound.h
  1900.        -  TRUE now defined as (!FALSE) in howard.h
  1901.        -  OEMinfo[] in struct BootBlock is now OEMinfo[8]. Previously
  1902.           OEMinfo was defined as OEMinfo[9] with OEMinfo[8] as '\0'.
  1903.           OEMinfo is no longer null terminated.
  1904.        -  several DESQview functions have been renamed to conform to
  1905.           the naming conventions by Quarterdeck in their API toolkits.
  1906.           DESQfreeCPU() has been renamed to DESQpause(), DESQMakeTone()
  1907.           has been renamed to DESQsound(), DESQInternalStack() has been
  1908.           renamed to DESQostack(), DESQProgramStack() has been renamed 
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.     TCHK 2.1                                                   Page 30
  1921.  
  1922.           to DESQustack(), and DESQdispchar() has been renamed to
  1923.           DESQpoke()
  1924.        -  all menu functions command flags changed (STATICTEXT, etc.
  1925.           have been renumbered), if you relink any of your existing
  1926.           compiled code that uses TCHK menus you must recompile it too
  1927.        -  getEMSstatus() renamed to EMSGetStatus(), and type renamed
  1928.           from byte to unsigned char
  1929.        -  getget() no longer supports justification in pattern. Use
  1930.           flags field/#defines instead
  1931.        -  flags parameter in getget() changed from char (1 byte) to
  1932.           unsigned int (2 bytes)
  1933.        -  getget() uses global variables _cursorinsert and
  1934.           _cursoroverwrite to define the cursor size
  1935.        -  isdate() has been renamed to isvaliddate()
  1936.        -  all menu functions now handle DISABLED fields slightly
  1937.           differently. Disabled fields are normally hiliteable unless
  1938.           the flag DISABLENOHILITE is set. Note that this is exactly
  1939.           opposite to previous operation. Changed for several reasons,
  1940.           foremost clarity and this was how I originally intended it to
  1941.           work.
  1942.        -  totally removed the Lotus...() menu functions. They are not
  1943.           currently worth the effort to recode, since the litebar...()
  1944.           menu functions can be made to emulate Lotus-style menus, but
  1945.           with much greater power. Currently, I plan on working on
  1946.           other menu formats (pulldown, hierarchial). If you have any
  1947.           particular types of menus, or specific enhancements to the
  1948.           current menu functions, let me know. It's a lot easier to
  1949.           make changes to code-in-progress than to alter existing
  1950.           (released) code.
  1951.  
  1952.      Fixed:
  1953.        -  ndp() works properly now. I was misaligning an instruction by
  1954.           a byte. Oops
  1955.        -  #define bboolean was inadvertently left out of the Compiler
  1956.           Defines in TURBOC.TC
  1957.        -  keyboard.h listed a prototype for a function inkeyscan().
  1958.           There is no such function. It was under development, but did
  1959.           not make it into the release and I forgot to remove it from
  1960.           the header file
  1961.  
  1962.      The manual has had several errors, typos and omissions corrected.
  1963.  
  1964.  
  1965.      Version 2.0  -  12-3-88
  1966.      -----------
  1967.      Compiled with Turbo C 2.0
  1968.      New functions:
  1969.        -  ansiback(), ansifore()
  1970.        -  DESQcommonmem(), DESQconvenmem(), DESQdispchar(), DESQexit(),
  1971.           DESQexpandedmem(), DESQInternalStack(), DESQMakeTone(),
  1972.           DESQProgramStack()
  1973.        -  DoubleDOSGetVirtual()
  1974.        -  EMSinfo(), EMSpages(), EMSwarmbootprep(), getEMSstatus()
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.     TCHK 2.1                                                   Page 31
  1987.  
  1988.        -  inkeyc()
  1989.        -  strclean(), strcapital(), strfill(), stroccur(),
  1990.           strtocomma(), strwcmp(), strwicmp()
  1991.        -  cpu_id(), ndp_id() (ndp_id() is not 100% bug free yet)
  1992.        -  diskchanged()
  1993.        -  isBlogical(), isgameport(), iskey102()
  1994.        -  CapsLock(), InsLock(), NumLock(), ScrollLock()
  1995.        -  tocapkey()
  1996.        -  accum_dep(), depreciation(), double_decline_bal_dep(),
  1997.           striaght_line_dep(), sum_year_digits_dep()
  1998.        -  FV(), FVa(), PMT(), PV(), PVa()
  1999.        -  average(), factorial(), stddev(), summation(), variance()
  2000.        -  frac(), round()
  2001.        -  expandfilespec(), fncmp(), getfilespec(), isdir(),
  2002.           parsefilename(), parsefnameext()
  2003.        -  beep()
  2004.        -  boxwindow()
  2005.        -  isPM(), to24hour(), tohour()
  2006.        -  time_convert()
  2007.        -  getcursor(), setcursor()
  2008.        -  color()
  2009.        -  read_attrib(), read_char()
  2010.        -  settextinfo()
  2011.        -  endstri(), endstrp()
  2012.        -  pause()
  2013.        -  print_screen()
  2014.        -  isPRINTavail(), PRINTadd(), PRINThold(), PRINTpurge(),
  2015.           PRINTremove(), PRINTresume()
  2016.        -  isAssignavail(), isAppendavail(), isShareavail(),
  2017.           isVidclock()
  2018.        -  getBootBlock(), getBPB()
  2019.        -  menu_popup(), popup_alloc(), popup_free(), popup_get()
  2020.        -  popup_restore(), popup_setcurrent(), pophilite(), popunlite()
  2021.        -  litebar_alloc(), litebar_free(), litebar_get()
  2022.        -  changelitebar(), litehilite(), litemessage(), liteunhilite()
  2023.        -  dosday(), doshour(), dosmonth(), dosmin(), dossec(),
  2024.           dosyear(), todosdate(), todostime()
  2025.        -  mid(), sqr(), swap()
  2026.        -  fsgn(), isgn(), lsgn()
  2027.        -  framebox[], emptystring[], _dvmajor, _dvminor, _TCHKversion,
  2028.           _TCHKmajor and _TCHKminor variables
  2029.  
  2030.      Changes:
  2031.        -  screen coordinates format now (x,y) starting at (1,1)
  2032.        -  atrim(), ltrim() and rtrim() now modify the string passed to
  2033.           them
  2034.        -  box(), clear(), cls()
  2035.        -  ddatetolong() renamed to ddatetofull()
  2036.        -  EMMversion() modified
  2037.        -  getc_match(), getci_match() previously were getk_match() and
  2038.           getc_match()
  2039.        -  virtually all get...() functions now use Borland's console
  2040.           i/o routines
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.     TCHK 2.1                                                   Page 32
  2053.  
  2054.        -  gotoxy() renamed to gotohv()
  2055.        -  isBREAKon(), isVERIFYon(), setBREAK(), setVERIFY() are now
  2056.           #defines
  2057.  
  2058.      Removed:
  2059.        -  delay() removed
  2060.        -  isleap() removed
  2061.        -  restore_box(), restore_screen(), save_box(), save_screen()
  2062.           removed
  2063.        -  max() and min() #defines removed (Borland now supplies them)
  2064.  
  2065.      If I've missed a couple, forgive me. I think I got them all down,
  2066.      but with all the changes and additions, it's hard to be 100% sure.
  2067.  
  2068.      Note: The ndp(), menu_lotus() and lotus_setup() functions are not
  2069.            fully implemented yet. The ndp() seems to crash the machine,
  2070.            and I found something grievously wrong with the lotus
  2071.            functions while testing the demo. Due to previous
  2072.            commitments, I am forced to release the library with these
  2073.            defective functions. Look for the working versions in the
  2074.            next release.
  2075.  
  2076.  
  2077.  
  2078.      Version 1.5 - Internal release only
  2079.      -----------
  2080.  
  2081.  
  2082.      Version 1.0 - Internal release only
  2083.      -----------
  2084.  
  2085.  
  2086.      Version 0.70  -  2-17-88
  2087.      ------------
  2088.      New functions:
  2089.        - date_convert()
  2090.        - machine_id()
  2091.        - fname_match()
  2092.      I rewrote the License agreement after several conversations with
  2093.           Robert Blacher. He pointed out, rightly so, that the old
  2094.           licensing information was a bit confusing.
  2095.      Fixed a bug in shorttoddate() and fulltoddate(). These functions
  2096.           required a proper month abbreviation. If you had "Mau 12,
  2097.           1987" instead of "May 12, 1987" it would get stuck in an
  2098.           endless loop.
  2099.      Fixed a bug in some of the date conversion functions. A few
  2100.           functions refer to a list of the day number at the end of a
  2101.           month. This list (daylist[] in this version) listed Jun 30 as
  2102.           the 182nd day of the year instead of the 181st day of the
  2103.           year. The only inaccurate dates would be those occurring
  2104.           between July 1 and July 30, inclusive, and these would only
  2105.           be ahead by 1 day. Only those date functions with english in
  2106.           them (shorttoddate(), ddatetofull(), etc.) are affected.
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.     TCHK 2.1                                                   Page 33
  2119.  
  2120.      Found the proper way to check for DESQview. DESQversion() now
  2121.           returns the version of DESQview in the high and low order
  2122.           bytes. See DESQversion() for more details.
  2123.      Changed the #define BASE_JUL_YR to a double to prevent loss of
  2124.           significant digits warning message.
  2125.      Restructured the global variables. With version 0.70, most
  2126.           of the global variables are declared separately from the code
  2127.           itself. If you use, say, Months[], but nothing else, only
  2128.           Months[] will get linked in to your program instead of
  2129.           pulling a whole bunch of functions with it. When I get TC 1.5
  2130.           I hope to break up the functions even more.
  2131.      Added MonthAbbr[] and DayList[] global variables
  2132.      Fixed the disktype() function. It would plain not work. It would
  2133.           get a word and return a byte (the wrong byte, of course.) God
  2134.           curse all typos.
  2135.      Changed the DemoDisk sample program as well (no more DISK_ERROR,
  2136.           now it's DISK_INVALID. See the #define section for more
  2137.           details.)
  2138.      Expanded the list of Rom id bytes. See the #define section for
  2139.           more details.
  2140.      Cleaned up some typos in the documentation.
  2141.  
  2142.  
  2143.      Version 0.60  -  1-15-88
  2144.      ------------
  2145.      Over 30 new functions added:
  2146.        - Cal...(), Greg...(), Jul...(), fulltoddate(), shorttoddate()
  2147.        - dayofweek()
  2148.        - isBREAKon(), setBREAK()
  2149.        - isVERIFYon(), setVERIFY()
  2150.        - reboot()
  2151.        - isExtended(), Extendedtotal(), EMMversion()
  2152.        - isNetwork()
  2153.        - memory_strategy()
  2154.        - disktype()
  2155.        - set_handles()
  2156.        - DESQversion(), DESQfreeCPU()
  2157.        - isDoubleDOS(), DoubleDOSTaskSwitch(), DoubleDOSfreeCPU()
  2158.        - scrbuff()
  2159.        - cursor_blink()
  2160.        - ansi_call()
  2161.      Fixed a bug in isleapyear(). Previously, isleapyear() would
  2162.           determine years ending in 00 that were evenly divisible by 4
  2163.           to be leap years (i.e. 1600). The gregorian calendar (you
  2164.           know, 30 days hath September...) doesn't count those as leap
  2165.           years.
  2166.      Optimized the direct video access routines as well as possible
  2167.           using 100% C code. Previously they checked for vertical
  2168.           retrace. Now all direct accesses play with the video
  2169.           registers and other fun things, basically turning off the
  2170.           screen for a fraction of a second, performing the access,
  2171.           then turning the screen back on again. In the longer access
  2172.           functions (save_screen() to name one) I found changing 30
  2173.           bytes between screen blankings to be optimal. These changes 
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.     TCHK 2.1                                                   Page 34
  2185.  
  2186.           have sped up the direct video access functions (putsay(),
  2187.           save_...(), restore_...()) by a factor or 3! These functions
  2188.           now take 1/3 the time they used to. If you find the screen to
  2189.           blink, or that there is snow (putsay() may experience
  2190.           miniscule snow when outputting long strings) please let me
  2191.           know and I'll see what I can do.
  2192.  
  2193.  
  2194.      Version 0.50  -  11-18-87
  2195.      ------------
  2196.      Initial release of TCHK
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.     TCHK 2.1                                                   Page 35
  2251.  
  2252.                           FUTURE ENHANCEMENTS
  2253.  
  2254.      There are more functions on the way. If you have any favorites you
  2255.      would like to see, or need, drop me a line. In future releases,
  2256.      look for the following features:
  2257.  
  2258.           -  I'd hoped to have a family of functions to access dBASE
  2259.              files (.DBF and .NDX) ready for this version, but due to
  2260.              time constraints and the enormous complexity of index
  2261.              files, I decided to get this version out the door and
  2262.              smooth out some of the rough spots in the code I have.
  2263.              Look for the dBASE file functions in the next release of
  2264.              TCHK
  2265.           -  enhancement of the get and put routines to support all
  2266.              features found in the @...SAY...GET commands of dBase III+
  2267.           -  keyboard routines using scan codes
  2268.           -  more menu interfaces (pulldown, hierarchial)
  2269.           -  more EMS functions. Since I recently acquired an EMS card,
  2270.              I can do more experimenting. I'd like to have a set of
  2271.              functions to access EMS as if it were dynamic memory
  2272.              (xmalloc(), xcalloc(), xfree(), etc.) but doing it right
  2273.              can be tricky. We shall see...
  2274.           -  functions to access XMS (non-EMS memory above 640K on
  2275.              286/386 machines). When dynamic EMS access is implemented,
  2276.              I will try to have equivalent XMS functions
  2277.           -  several math functions (integration, numerical methods, +)
  2278.           -  some more accounting functions to have a well rounded
  2279.              accounting library
  2280.           -  software id functions (TSR, ANSI.SYS, VDISK.SYS, etc.)
  2281.           -  more mouse functions
  2282.           -  more DESQview functions
  2283.           -  more sound functions
  2284.           -  expansion of the functions dealing with simulated reals
  2285.              (more precision, more functions, etc.)
  2286.           -  direct screen accesses coded in assembler
  2287.           -  enhancement of the put routines to support the 'backslash'
  2288.              control characters like printf does (\n, \t, etc.)
  2289.           -  some more video routines
  2290.  
  2291.      Here's some ideas I've had regarding TCHK. Let me know what you
  2292.      think:
  2293.  
  2294.           -  Laser Printers             ______________
  2295.              I use OfficeWriter 5.0 for the documentation and several
  2296.              laser printers are supported, but I don't have access to a
  2297.              laser printer so I'm not sure which one to support.
  2298.              Currently, registered users receive a disk version of the
  2299.              manual formatted for an HP LaserJet. Is this the best one
  2300.              to support? What font? Etc.
  2301.  
  2302.           -  Norton Guides             _____________
  2303.              Converting the documentation to a Norton Guide is a LOT of
  2304.              work. NG is an excellent tool, but do the benefits (having
  2305.              
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.     TCHK 2.1                                                   Page 36
  2317.  
  2318.              a Guide for TCHK) outweigh the disadvantages (time
  2319.              needed) ? Are people out there using NG? Are you
  2320.              interested in a NG database for TCHK?
  2321.  
  2322.           -  286 Libraries             _____________
  2323.           -  Turbo C can generate 80186/80286 code. Are people
  2324.              interested in 286 generated code?
  2325.  
  2326.           -  Menu Generator             ______________
  2327.           -  I'd like to write a program that lets you 'paint' menus,
  2328.              and then let the program chug through and generate all the
  2329.              code (variables, function calls, etc.). Right now most of
  2330.              the menu work is drudge work, where you have to code all
  2331.              the coordinates, the commands, etc. I don't know about
  2332.              you, but I hate drudge work. However, this is no small
  2333.              undertaking. Are you interested in such a program?
  2334.  
  2335.  
  2336.  
  2337.           And the big question: what other compilers will I support?
  2338.      The major contenders right now are Turbo C, MSC, Quick C, Watcom
  2339.      C, Zortech C++ and Power C (I think I got all the popular ones).
  2340.      Power C is intended for the inexpensive C programmer (at a list
  2341.      price of $20, it can't be beat. The manual alone is worth it...)
  2342.      Zortech has a very promising compiler, and the price is right. I'm
  2343.      awaiting their next significant release, or user requests, before
  2344.      looking further. Although supposedly the best micro C compiler
  2345.      available, Watcom's price and lack of market penetration makes a 
  2346.      shareware Watcom library impractical at this time. Currently, I
  2347.      have no plans to support any of these compilers. Are you
  2348.      interested? Let me know...
  2349.  
  2350.           Of course, we now have the big three. I purchased Turbo C
  2351.      when it first came out (1.0) and I've been very pleased ever
  2352.      since. The price is good, and the performance is top notch. I'm
  2353.      aware that many users would like MSC and QC compatible libraries.
  2354.      This has 2 major problems: I do not own either compiler, and
  2355.      certain conventions are different. I've toyed with Quick C 2.0 and
  2356.      it shows promise. However, I can't afford to buy it and hope
  2357.      someone likes QCHK (TCHK for Quick C). Aside from the money, it's
  2358.      a question of time. For me, this is a hobby. A serious hobby, but
  2359.      still a hobby (lord knows I'm not in it for the money). Although
  2360.      most of the code for TCHK is ANSI C, enough is Turbo C specific
  2361.      (i.e. pseudo registers, console i/o, many structures, etc.) that
  2362.      just converting to another compiler would take a good chunk of
  2363.      time. Let's not forget the learning curve needed to get the hang
  2364.      of the new compiler's syntax. Right now I think enhancing the
  2365.      existing library is more productive than producing libraries for
  2366.      other compilers.
  2367.  
  2368.           Am I wrong? I've only had 2 people ask me about MSC/QC
  2369.      versions of TCHK, and one of them purchased the source code with
  2370.      plans to convert it himself. Like I said, converting most of the
  2371.      code is just a matter of recompiling. However, if I were to offer 
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.     TCHK 2.1                                                   Page 37
  2383.  
  2384.      other compiler versions I would have to convert all the code,
  2385.      which is just not practical right now. If you want to use TCHK
  2386.      with another compiler, you can always purchase the source code.
  2387.      It's not expensive, and most of the changes would be simple
  2388.      renames of function calls. If you would like to see a version of
  2389.      TCHK for another compiler, let me know. If I think people are
  2390.      interested, I'll give it a shot.
  2391.  
  2392.      Last minute rumors: the next version of Turbo C will NOT generate
  2393.      80386 code, is highly unlikely to support overlays, and OS/2 is a
  2394.      very popular phrase with Borland. What does this mean? A special
  2395.      386 version of TCHK will not be available in the forseeable future
  2396.      (don't blame me, blame Borland). As for the rest, only time will
  2397.      tell...
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.     TCHK 2.1                                                   Page 38
  2449.  
  2450.                              OTHER PRODUCTS
  2451.  
  2452.      I am also the author of the following products:
  2453.  
  2454.      COOKIE 1.2  -  Fortune cookie, gives you a random fortune from a
  2455.                     cookie file. Lots of options and distributed with
  2456.                     2800 cookies of mixed content (rated G - X)
  2457.  
  2458.      DCOUNT 1.2  -  Document/Text file info, find out all kinds of
  2459.                     information like # words, lines, pages, control
  2460.                     characters, etc. A small program, but it suited a
  2461.                     small need. Several options.
  2462.  
  2463.      FREE 1.7    -  Free disk space, with options. Network compatbile,
  2464.                     search multiple drives, DESQview friendly + more.
  2465.                     Distributed with full Turbo C source.
  2466.  
  2467.      SF 3.32     -  Subtree Find, a powerful directory searcher. SF's
  2468.                     main claim to fame is being able to search a branch
  2469.                     of a disk directory, from a single directory to an
  2470.                     entire disk, 5%-250% faster than the leading file
  2471.                     finders! (Compared with Norton's and Graham's
  2472.                     programs). Other features include displaying more
  2473.                     information than DIR (attributes, disk space used,
  2474.                     etc.), delete files, touch date and/or time, modify
  2475.                     attributes, color output, pause during display,
  2476.                     permanently configure options, search inside .ARC
  2477.                     and .ZIP files, network compatible, and much much
  2478.                     more. Written in Turbo C 2.0 and linked with TCHK
  2479.                     2.1.
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.     TCHK 2.1                                                   Page 39
  2515.  
  2516.  
  2517.  
  2518.  
  2519.                                 SUPPORT
  2520.  
  2521.      Thanks to the graciousness of the sysops at The BOSS and Computer
  2522.      Connections, I have easier access to their BBSes. The latest
  2523.      versions of my software can be found there. However, due to
  2524.      current PC Pursuit restrictions, I am unable to reach The BOSS via
  2525.      PCP. As a result, I can quite often be found on Computer
  2526.      Connections, but only infrequently at The BOSS. Hopefully, Telenet
  2527.      will implement better 201 access before the turn of the century
  2528.      and I will be back on The BOSS on a regular basis.
  2529.  
  2530.      If there are some features you would like to see implemented, or
  2531.      you have any questions or comments, please contact me. I can be
  2532.      reached at the following:
  2533.  
  2534.                        Howard Kapustein
  2535.                        1695 Barbara Lane
  2536.                        East Meadow, NY 11554
  2537.                        Phone: (516) 481-9612
  2538.  
  2539.           *** If I have to call you I'll have to call collect ***
  2540.  
  2541.      or at the following electronic services/bulletin boards:
  2542.  
  2543.           The Boss dBBS        (201) 568-7293   *** Support BBS ***
  2544.           Software Society     (201) 729-7410   Distribution BBS
  2545.           Computer Connection  (202) 547-2008   *** Support BBS ***
  2546.           The Tool Shop        (602) 279-2673   Distribution BBS
  2547.           GEnie                H. Kapustein
  2548.                                Also: IBM RT, SET 4, TOPIC # 25
  2549.                                      Borland RT, SET 2, TOPIC # 55
  2550.  
  2551.  
  2552.      These are the places I can be reached by modem. TCHK (and all
  2553.      other software I release) is supported through The BOSS and
  2554.      Computer Connections.
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.     TCHK 2.1                                                   Page 40
  2581.  
  2582.  
  2583.  
  2584.                        APPENDIX A - DATE FORMATS
  2585.  
  2586.      The following date formats are supported by TCHK:
  2587.  
  2588.      TCHK Reference      Date Type                Format
  2589.      --------------      ---------                ------
  2590.      Greg                Gregorian (US)           MM-DD-YY
  2591.      GregEuro            Gregorian (European)     DD-MM-YY
  2592.      GregJap             Gregorian (Japan)        YY-MM-DD
  2593.      Cal                 Calendar                 YYMMDD
  2594.      CalCent             Calendar (w/Century)     YYYYMMDD
  2595.      Jul                 Julian (Type E)          special hashed number
  2596.      JulA                Julian (Type A)          YYDDD
  2597.      JulB                Julian (Type B)          YYYYDDD
  2598.      full                English (Full)           Month DD, YYYY
  2599.      short               English (Short)          Mon DD, YYYY
  2600.      ddate               struct ddate             see datehk.h
  2601.  
  2602.      -  Gregorian units are common shorthand dates (in string format)
  2603.         with all leading zeros preserved
  2604.      -  Calendar units are numeric representations (double)
  2605.      -  Julian Type E is a special "magic" hashed number (double)
  2606.         representing the number of elapsed days since an initial date.
  2607.         Julian Type E numbers are valid for the years 1900-2100 (give
  2608.         or take a couple of months)
  2609.      -  Julian Type A and B are ANSI defined formats (double)
  2610.         containing year (and century for type B) and the day of the  
  2611.         year
  2612.      -  full are strings of the date with the full name of the month
  2613.      -  short are strings of the date with the short abbreviation of
  2614.         the month
  2615.      -  ddate is my own date structure defined in datehk.h
  2616.  
  2617.      In some instances date formats not specifically designed to hold
  2618.      the century may overflow. For example, converting CalCent
  2619.      formatted  20220401 (April 1, 2022) to Greg (MM-DD-YY) would
  2620.      result in the string "04-01-122". Be aware.
  2621.  
  2622.  
  2623.                           ! ! ! WARNING ! ! !
  2624.  
  2625.      Unless otherwise specified, date format conversion functions
  2626.      (GregtoCal, JulAtoddate, etc.) do NOT perform error checking. If
  2627.      you pass an invalid date (March 32, 1988) your result may be
  2628.      logically incorrect even though syntactically correct (Gregorian
  2629.      date of 03/32/88) or be totally corrupted.
  2630.  
  2631.      Julian Type E numbers are valid for the years 1900-2100 (give or
  2632.      take a couple of months.)
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.     TCHK 2.1                                                   Page 41
  2647.  
  2648.  
  2649.  
  2650.                   APPENDIX B - date_convert() FORMATS
  2651.  
  2652.      The following formats are supported by date_convert():
  2653.  
  2654.      Type (id)    Data Type      Format              Notes
  2655.      ---------    ---------      ------              -----
  2656.          1        char           MM-DD-YY            US
  2657.          2         "             DD-MM-YY            Europe
  2658.          3         "             YY-MM-DD            Japan
  2659.  
  2660.          4        double         YYMMDD              Calendar
  2661.          5          "            YYYYMMDD               "     w/cent
  2662.          6          "            hashed              Julian Type E
  2663.          7          "            YYDDD                 "    Type A
  2664.          8          "            YYYYDDD               "    Type B
  2665.  
  2666.          9        struct date                        see dos.h
  2667.         10        struct ddate                       see datehk.h
  2668.  
  2669.         11        char           Mon DD, YYYY        short, no lead 0
  2670.         12         "             Month DD, YYYY      full, no lead 0
  2671.  
  2672.         13         "             MM/DD/YY            US
  2673.         14         "             DD/MM/YY            Europe
  2674.         15         "             YY/MM/DD            Japan
  2675.  
  2676.         16         "             MM-DD-YY            no lead 0
  2677.         17         "             DD-MM-YY                "
  2678.         18         "             YY-MM-DD                "
  2679.  
  2680.         19         "             MM/DD/YY            no lead 0
  2681.         20         "             DD/MM/YY                "
  2682.         21         "             YY/MM/DD                "
  2683.  
  2684.         22         "             MM-DD-YYYY          century
  2685.         23         "             DD-MM-YYYY             "
  2686.         24         "             YYYY-MM-DD             "
  2687.  
  2688.         25         "             MM/DD/YYYY          century
  2689.         26         "             DD/MM/YYYY             "
  2690.         27         "             YYYY/MM/DD             "
  2691.  
  2692.         28         "             MM-DD-YYYY          century, no lead 0
  2693.         29         "             DD-MM-YYYY                   "
  2694.         30         "             YYYY-MM-DD                   "
  2695.  
  2696.         31         "             MM/DD/YYYY          century, no lead 0
  2697.         32         "             DD/MM/YYYY                   "
  2698.         33         "             YYYY/MM/DD                   "
  2699.  
  2700.         34        char           DD-MON-YY           
  2701.         35         "             DD-MON-YY           no lead 0
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.     TCHK 2.1                                                   Page 42
  2713.  
  2714.         36         "             DD-MON-YYYY         century
  2715.         37         "             DD-MON-YYYY            "    no lead 0
  2716.  
  2717.         38         "             Mon DD, YYYY        short
  2718.         39         "             Month DD, YYYY      full
  2719.  
  2720.         40         "             DD MON YY           
  2721.         41         "             DD MON YY           no lead 0
  2722.         42         "             DD MON YYYY         century
  2723.         43         "             DD MON YYYY            "    no lead 0
  2724.  
  2725.  
  2726.      Unless otherwise specified, a date format contains leading zeros.
  2727.  
  2728.      Refer to date_convert() for further specifications.
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.     TCHK 2.1                                                   Page 43
  2779.  
  2780.  
  2781.  
  2782.                   APPENDIX C - time_convert() FORMATS
  2783.  
  2784.      The following formats are supported by time_convert():
  2785.  
  2786.      Type (id)    Data Type      Format              Notes
  2787.      ---------    ---------      ------              -----
  2788.          1        char           HH:MM AM            12-hour (h,m)
  2789.          2         "             HH:MM               24-hour (h,m)
  2790.          3         "             HH:MM:SS AM         12-hour (h,m,s)
  2791.          4         "             HH:MM:SS            24-hour (h,m,s)
  2792.          5         "             HH:MM:SS:CC AM      12-hour (h,m,s,u)
  2793.          6         "             HH:MM:SS:CC         24-hour (h,m,s,u)
  2794.  
  2795.          7        struct time                        see dos.h
  2796.  
  2797.          8        double                             1/100 seconds
  2798.          9          "                                seconds
  2799.         10          "                                minutes
  2800.         11          "                                hours
  2801.         12          "                                days
  2802.  
  2803.         13        char           HHhMMm              no leading zeros
  2804.         14         "             HHhMMmSSs           no leading zeros
  2805.         15         "             HHhMMmSSsCCc        no leading zeros
  2806.  
  2807.         16         "             0HH:MM AM           12-hour (0h,m)
  2808.         17         "             0HH:MM              24-hour (0h,m)
  2809.         18         "             0HH:MM:SS AM        12-hour (0h,m,s)
  2810.         19         "             0HH:MM:SS           24-hour (0h,m,s)
  2811.         20         "             0HH:MM:SS:CC AM     12-hour (0h,m,s,u)
  2812.         21         "             0HH:MM:SS:CC        24-hour (0h,m,s,u)
  2813.  
  2814.         22         "             0HHhMMm             all leading zeros
  2815.         23         "             0HHhMMmSSs          all leading zeros
  2816.         24         "             0HHhMMmSSsCCc       all leading zeros
  2817.  
  2818.  
  2819.      The notation H:M:S:C stands for hours:minutes:seconds:centiseconds
  2820.      (1/100 secs). The notation AM stands for AM or PM, as is
  2821.      appropriate.
  2822.  
  2823.      Unless otherwise specified, a time string contains leading zeros
  2824.      for all values except the hour. The notation 0H stands for hours
  2825.      containing leading zeros.
  2826.  
  2827.      Refer to time_convert() for further specifications.
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.     TCHK 2.1                                                   Page 44
  2845.  
  2846.  
  2847.  
  2848.                      APPENDIX D - SIMULATED FP MATH
  2849.  
  2850.      When I was working on my Free disk space program, I could not get
  2851.      it to link as a Tiny program, no matter what I did. Even if I
  2852.      compiled it with the Small memory model, it would not run without
  2853.      65K RAM available. After exhaustive testing, I realized what the
  2854.      problem was: I was trying to link in Borland's FP Emulation. If
  2855.      you use FP Emulation, you will NOT be able to generate a .COM
  2856.      file. This was a significant problem. Who wants a free disk space
  2857.      program requiring 65K?
  2858.  
  2859.      Unfortunately, I had but two options: leave out all real math,
  2860.      which was totally unacceptable, or write my own FP functions. With
  2861.      great trepidation I wrote a division function which more than fit
  2862.      my needs. The real division found in the source distributed with
  2863.      my free program is far simpler than the rdiv() function in TCHK,
  2864.      fulfilling a far simpler need.
  2865.  
  2866.      Consider yourself warned right now. My real functions are NOT a
  2867.      complete substitute for Borland's FP Emulation library. However,
  2868.      if you only need accuracy up to 8 decimal places for numbers with
  2869.      integer portions less than 2 billion and change, or plan on using
  2870.      the Tiny memory model, they are acceptable.
  2871.  
  2872.      A REAL number is defined as:
  2873.  
  2874.           typedef struct REAL {
  2875.                long rint;        /* real - integer */
  2876.                long rfrac;       /* real - fraction */
  2877.                int precision;         /* (# of decimal places) */
  2878.           };
  2879.  
  2880.      A picture is worth a thousand words, so here are some sample REALs
  2881.      and the real numbers they represent:
  2882.  
  2883.           { 402, 17, 2 }           =       402.17
  2884.           { 12, 2, 3 }             =        12.002
  2885.           { 0, 0, 0 }              =         0.0
  2886.           { -8356, 286, 3 }        =     -8356.286
  2887.           { 0, -3, 1 }             =        -0.3
  2888.  
  2889.      REALs obey certain rules:
  2890.  
  2891.           Sign:  If rint is non-zero, it will contain the sign of the
  2892.                  REAL and rfrac will be positive. If rint is zero,
  2893.                  rfrac will contain the sign of the REAL
  2894.  
  2895.           Precision:  always ranging from 0 to MAXPRECISION, it will
  2896.                       NEVER be negative
  2897.  
  2898.           Decimal:  the decimal portion of a REAL is always represented
  2899.                     as a value displayed to the right of the decimal 
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.     TCHK 2.1                                                   Page 45
  2911.  
  2912.                     point. For instance, { 3, 6, 4 } is the REAL
  2913.                     representation of 3.0006, which could also be
  2914.                     expressed as { 3, 0006, 4 }. Note that a long with
  2915.                     a value of 0006 is the same as a long with a value
  2916.                     of 6. It is only because longs are used to store
  2917.                     the value of REALs that the precision plays such a
  2918.                     crucial role
  2919.  
  2920.      To calculate the value of a REAL, use the following formula:
  2921.  
  2922.           value = rint + rfrac * 10^(-precision)
  2923.  
  2924.      which is read as "value equals rint plus rfrac times ten raised to
  2925.      the negative precision power".
  2926.  
  2927.      Error trapping for such things as division by zero, overflow,
  2928.      underflow, etc. as listed in REAL.H is provided.
  2929.  
  2930.      Planned for some future release is a facility for a user-defined
  2931.      rmatherr() function, much like Borland's facility for a user-
  2932.      -defined matherr(), and a method of handling larger (> LONG_MAX)
  2933.      numbers, probably through the use of negative precision values.
  2934.      Perhaps at an even later date there will be a true set of real
  2935.      math functions, done the right way with mantissas and exponents
  2936.      via bit encoding. This would require a significant amount of
  2937.      effort, since I would basically be rewriting Borland's EMU.LIB, so
  2938.      don't get your hopes up too high. With sufficient user response or
  2939.      personal need, I may give it a shot. However, due to the great
  2940.      complexity of such a project, you will understand if I don't rush
  2941.      right out and whip up said emulation functions.
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.     TCHK 2.1                                                   Page 46
  2977.  
  2978.  
  2979.  
  2980.                       APPENDIX E - MOUSE FUNCTIONS
  2981.  
  2982.      A mickey is the smallest increment the mouse can sense, named,
  2983.      appropriately enough, after Mickey Mouse.
  2984.  
  2985.      Many of the mouse functions return multiple pieces of information.
  2986.      The mouse driver can use the AX, BX, CX and DX registers to return
  2987.      information, but repeating a function call to return another piece
  2988.      of information already provided is ridiculous. If used, the global
  2989.      variables _mouse1, _mouse2, _mouse3 and _mouse4 will usually, but
  2990.      not always, correspond to the AX, BX, CX and DX registers,
  2991.      respectively. MButtonPress() is an example of a mouse function
  2992.      that returns extra information via the _mouse# variables.
  2993.      MMickeysMovedx() is an example of a function that does the work of
  2994.      multiple functions via the _mouse# variables.
  2995.  
  2996.      The MCursorGraphic() function requires a pointer to a bitmap,
  2997.      which consists of a 16 word screen mask and a 16 word cursor mask
  2998.      (64 bytes in total). The global variables listed below are bitmaps
  2999.      available for your use, listed here for you reference. Each global
  3000.      variable bitmap contains the horizontal and vertical hot spots
  3001.      (hotx and hoty) as _Bitmap...[0] and _Bitmap...[1] elements,
  3002.      respectively, and _Bitmap...+2 pointing to the bitmap itself.
  3003.      Thus, each of these global variables is 68 bytes, 4 for hot spots
  3004.      and 64 for the bitmap. Note that the hot spots are signed values
  3005.      ranging from -16 to 16.
  3006.  
  3007.           unsigned int _Bitmap_StandardCursor[] =
  3008.                             { (unsigned int) -1, (unsigned int) -1,
  3009.                                  0x3FFF, 0x1FFF, 0x0FFF, 0x07FF,
  3010.                                  0x03FF, 0x01FF, 0x00FF, 0x007F,
  3011.                                  0x003F, 0x001F, 0x01FF, 0x10FF,
  3012.                                  0x30FF, 0xF87F, 0xF87F, 0xFC3F,
  3013.                                  0x0000, 0x4000, 0x6000, 0x7000,
  3014.                                  0x7800, 0x7C00, 0x7E00, 0x7F00,
  3015.                                  0x7F80, 0x78C0, 0x7C00, 0x4600,
  3016.                                  0x0600, 0x0300, 0x0300, 0x0180 };
  3017.  
  3018.           unsigned int _Bitmap_UpArrow[] =
  3019.                             { (unsigned int) 5, (unsigned int) 0,
  3020.                                  0xF9FF, 0xF0FF, 0xE07F, 0xE07F,
  3021.                                  0xC03F, 0x801F, 0x801F, 0x000F,
  3022.                                  0x000F, 0x000F, 0xF0FF, 0xF0FF,
  3023.                                  0xF0FF, 0xF0FF, 0xF0FF, 0xF0FF,
  3024.                                  0x0000, 0x0600, 0x0F00, 0x0F00,
  3025.                                  0x1F80, 0x1F80, 0x3FC0, 0x3FC0,
  3026.                                  0x7FE0, 0x0600, 0x0600, 0x0600,
  3027.                                  0x0600, 0x0600, 0x0600, 0x0000 };
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.     TCHK 2.1                                                   Page 47
  3043.  
  3044.           unsigned int _Bitmap_LeftArrow[] =
  3045.                             { (unsigned int) 0, (unsigned int) 3,
  3046.                                  0xFE1F, 0xF01F, 0x0000, 0x0000,
  3047.                                  0x0000, 0xF01F, 0xFE1F, 0xFFFF,
  3048.                                  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  3049.                                  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  3050.                                  0x0000, 0x00C0, 0x07C0, 0x7FFE,
  3051.                                  0x07C0, 0x00C0, 0x0000, 0x0000,
  3052.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3053.                                  0x0000, 0x0000, 0x0000, 0x0000 };
  3054.  
  3055.           unsigned int _Bitmap_CheckMark[] =
  3056.                             { (unsigned int) 6, (unsigned int) 7,
  3057.                                  0xFFF0, 0xFFE0, 0xFFC0, 0xFF81,
  3058.                                  0xFF03, 0x0607, 0x000F, 0x001F,
  3059.                                  0xC03F, 0xF07F, 0xFFFF, 0xFFFF,
  3060.                                  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  3061.                                  0x0000, 0x0006, 0x000C, 0x0018,
  3062.                                  0x0030, 0x0060, 0x70C0, 0x1D80,
  3063.                                  0x0700, 0x0000, 0x0000, 0x0000,
  3064.                                  0x0000, 0x0000, 0x0000, 0x0000 };
  3065.  
  3066.           unsigned int _Bitmap_PointingHand[] =
  3067.                             { (unsigned int) 5, (unsigned int) 0,
  3068.                                  0xE1FF, 0xE1FF, 0xE1FF, 0xE1FF,
  3069.                                  0xE1FF, 0xE000, 0xE000, 0xE000,
  3070.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3071.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3072.                                  0x1E00, 0x1200, 0x1200, 0x1200,
  3073.                                  0x1200, 0x13FF, 0x1249, 0x1249,
  3074.                                  0xF249, 0x9001, 0x9001, 0x9001,
  3075.                                  0x8001, 0x8001, 0x8001, 0xFFFF };
  3076.  
  3077.           unsigned int _Bitmap_DiagonalCross[] =
  3078.                             { (unsigned int) 7, (unsigned int) 4,
  3079.                                  0x07E0, 0x0180, 0x0000, 0xC003,
  3080.                                  0xF00F, 0xC003, 0x0000, 0x0180,
  3081.                                  0x07E0, 0xFFFF, 0xFFFF, 0xFFFF,
  3082.                                  0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  3083.                                  0x0000, 0x700E, 0x1C38, 0x0660,
  3084.                                  0x03C0, 0x0660, 0x1C38, 0x700E,
  3085.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3086.                                  0x0000, 0x0000, 0x0000, 0x0000 };
  3087.  
  3088.           unsigned int _Bitmap_RectangularCross[] =
  3089.                             { (unsigned int) 7, (unsigned int) 4,
  3090.                                  0xFC3F, 0xFC3F, 0xFC3F, 0x0000,
  3091.                                  0x0000, 0x0000, 0xFC3F, 0xFC3F,
  3092.                                  0xFC3F, 0x0000, 0x0000, 0x0000,
  3093.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3094.                                  0x0000, 0x0180, 0x0180, 0x0180,
  3095.                                  0x7FFE, 0x0180, 0x0180, 0x0180,
  3096.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3097.                                  0x0000, 0x0000, 0x0000, 0x0000 };
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.     TCHK 2.1                                                   Page 48
  3109.  
  3110.  
  3111.           unsigned int _Bitmap_Hourglass[] =
  3112.                             { (unsigned int) 7, (unsigned int) 7,
  3113.                                  0x0000, 0x0000, 0x0000, 0x0000,
  3114.                                  0x8001, 0xC003, 0xE007, 0xF00F,
  3115.                                  0xE007, 0xC003, 0x8001, 0x0000,
  3116.                                  0x0000, 0x0000, 0x0000, 0xFFFF,
  3117.                                  0x0000, 0x7FFE, 0x6006, 0x300C,
  3118.                                  0x1818, 0x0C30, 0x0660, 0x03C0,
  3119.                                  0x0660, 0x0C30, 0x1998, 0x33CC,
  3120.                                  0x67E6, 0x7FFE, 0x0000, 0x0000 };
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.     TCHK 2.1                                                   Page 49
  3175.  
  3176.  
  3177.  
  3178.                      APPENDIX F - REGISTRATION FORM
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.                   This page intentionally left blank
  3190.  
  3191.  
  3192.  
  3193.  
  3194.  
  3195.  
  3196.  
  3197.  
  3198.  
  3199.  
  3200.  
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.     TCHK 2.1                                                   Page 50
  3241.  
  3242. Quick Registration for TCHK Version 2.1                      TCHK210/BBS
  3243. ------------------------------------------------------------------------
  3244.  
  3245. Please answer as many questions as possible and return this form with
  3246. your registration cash, check or money order to :
  3247.  
  3248.                         Howard Kapustein
  3249.                         1695 Barbara Lane
  3250.                         East Meadow, NY 11554
  3251.                         Phone: (516) 481-9612
  3252.  
  3253.  
  3254.  Name ____________________________________  Sex _________  Age _________
  3255.  
  3256.  Address _______________________________________________________________
  3257.  
  3258.          _______________________________________________________________
  3259.  
  3260.          _______________________________________________________________
  3261.  
  3262.          _______________________________________________________________
  3263.  
  3264.  Phone (_____)_____-______  Occupation _________________________________
  3265.  
  3266.  Type of computer(s) you own ___________________________________________
  3267.  
  3268.  Operating System (circle):  DOS  DESQview  Windows  OS/2  Unix  Other
  3269.  
  3270.  Operating System version ______    DOS version (if OpSys not DOS) _____
  3271.  
  3272.  Type of modem you own (if any) ______________________ Max Speed _______
  3273.  
  3274.  Where did you get TCHK 2.1 from:
  3275.  
  3276.     BBS Name ________________________________ Number (_____)_____-______
  3277.  
  3278.     Other electronic service (Compuserve, GEnie, etc.) _________________
  3279.  
  3280.     Other ______________________________________________________________
  3281.  
  3282.  Are you a SYSOP or CO-SYSOP (circle)  NO - YES ________________________
  3283.  
  3284.  How would you rate TCHK (circle)        1  -  2  -  3  -  4  -  5
  3285.                                      Excellent                Garbage
  3286.  
  3287. ____ TCHK Registration ......................... @ $ 20.00 ea  $ _______
  3288.      (Includes latest version of program diskette, with
  3289.      all memory models and documentation on the disk.)
  3290.  
  3291. ____ TCHK Source Code .......................... @ $ 40.00 ea  $ _______
  3292.      (REGISTERED users ONLY)
  3293.  
  3294. ____ TCHK Registration and Source Code.......... @ $ 55.00 ea  $ _______
  3295.      (As above with source code.)
  3296.  
  3297. ____ TCHK Sampler Disk ......................... @ $ 10.00 ea  $ _______
  3298.      (Does NOT include registration)
  3299.  
  3300.      Non-US Shipping ...............................@ $ 5.00   $ _______
  3301.         (Payments must be in US Dollars, US bank)
  3302.  
  3303.  TOTAL Enclosed ......................................... $ ____________
  3304.  
  3305.  Non-U.S. orders need to include $5.00 extra to cover additional
  3306.  shipping and handling charges.  Checks and money orders must be
  3307.  drawn on a U.S. bank.  Please send all payments payable in U.S. Dollars
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.     TCHK 2.1                                                   Page 51
  3373.  
  3374. ------------------------- User comments --------------------------------
  3375.  
  3376.  I would also appreciate any input you would care to give concerning
  3377.  TCHK.  If you have any ideas or comments that would make TCHK a better
  3378.  program, then please let me know.
  3379.  
  3380.  What features do you find most useful:
  3381.  
  3382.     ____________________________________________________________________
  3383.  
  3384.     ____________________________________________________________________
  3385.  
  3386.     ____________________________________________________________________
  3387.  
  3388.     ____________________________________________________________________
  3389.  
  3390.  
  3391.  What features do you find least useful:
  3392.  
  3393.     ____________________________________________________________________
  3394.  
  3395.     ____________________________________________________________________
  3396.  
  3397.     ____________________________________________________________________
  3398.  
  3399.     ____________________________________________________________________
  3400.  
  3401.  
  3402.  Features you would like to see added (use additional pages, if necessary):
  3403.  
  3404.     ____________________________________________________________________
  3405.  
  3406.     ____________________________________________________________________
  3407.  
  3408.     ____________________________________________________________________
  3409.  
  3410.     ____________________________________________________________________
  3411.  
  3412.     ____________________________________________________________________
  3413.  
  3414.  
  3415.          -------------------------------------------------------
  3416.                THANK YOU for supporting Shareware and TCHK
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.     TCHK 2.1                                                   Page 52
  3439.  
  3440.  
  3441.  
  3442.                       APPENDIX G - BUG REPORT FORM
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.                   This page intentionally left blank
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.     TCHK 2.1                                                   Page 53
  3505.  
  3506.  
  3507. Bug Report for TCHK Version 2.1                             TCHK210/BBS
  3508. -----------------------------------------------------------------------
  3509.  
  3510.  Please use the following form to report any bugs or discrepancies
  3511.  you find with TCHK 2.1.
  3512.  
  3513.  Please take the time to fill out as much information in the following
  3514.  form as possible. I know it's a lot, but it helps if I know what the
  3515.  system looked like when the error occurred. At the minimum, make sure
  3516.  you fill in your name, address, TCHK serial number, operating system
  3517.  (with version!), compiler, and the list of any TSRs, device drivers,
  3518.  or anything else in memory when the error occurred.
  3519.  
  3520.  Return this form, and any necessary additional papers to:
  3521.  
  3522.                         Howard Kapustein
  3523.                         1695 Barbara Lane
  3524.                         East Meadow, NY 11554
  3525.                         Phone: (516) 481-9612
  3526.  
  3527.  
  3528.  Name ____________________________________  TCHK Serial # ______________
  3529.  
  3530.  Address _______________________________________________________________
  3531.  
  3532.          _______________________________________________________________
  3533.  
  3534.          _______________________________________________________________
  3535.  
  3536.          _______________________________________________________________
  3537.  
  3538.  Phone (_____)_____-______
  3539.  
  3540.  Please describe the system you found the error on in as much detail as
  3541.  possible. This will help me to determine the exact nature of the error:
  3542.  
  3543.  Computer Model ________________________________________________________
  3544.  
  3545.  Cpu (circle):  8086/8088  V20/V30  80186  80286  80386  Other _________
  3546.  
  3547.  Cpu speed: __________MHz
  3548.  
  3549.  Math Coprocessor (circle):  None  8087  80287  80387  Other ___________
  3550.  
  3551.  Memory: Conventional _____K   EMS/EEMS _____K   Extended (>640K) _____K
  3552.  
  3553.  If EMS/EEMS:  Product _________________________________________________
  3554.  
  3555.                Product manufacturer ____________________________________
  3556.  
  3557.                Which (circle):  EMS  EEMS   Version: _______________
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.     TCHK 2.1                                                   Page 54
  3571.  
  3572.  
  3573.  Video Adapter (circle):  MDA  Hercules  CGA  EGA  VGA  8514  Other_____
  3574.  
  3575.  Drive letter _____    Size __________   Brand/Model ___________________
  3576.  
  3577.  Type (circle):  5.25" Floppy   3.5" Floppy   Hard drive   Other _______
  3578.  
  3579.  Drive letter _____    Size __________   Brand/Model ___________________
  3580.  
  3581.  Type (circle):  5.25" Floppy   3.5" Floppy   Hard drive   Other _______
  3582.  
  3583.  Drive letter _____    Size __________   Brand/Model ___________________
  3584.  
  3585.  Type (circle):  5.25" Floppy   3.5" Floppy   Hard drive   Other _______
  3586.  
  3587.  # Serial ports ____  # Parallel ports ____   Joystick (circle): Yes  No
  3588.  
  3589.  Operating System (circle):  DOS  DESQview  Windows  OS/2  Unix  Other
  3590.  
  3591.  Operating System version ______    DOS version (if OpSys not DOS) _____
  3592.  
  3593.  Compiler (circle):  Turbo C 1.5   Turbo C 2.0   Other _________________
  3594.  
  3595.  TSRs, device drivers, or any other memory resident software:
  3596.  
  3597.     ____________________________________________________________________
  3598.  
  3599.     ____________________________________________________________________
  3600.  
  3601.     ____________________________________________________________________
  3602.  
  3603.     ____________________________________________________________________
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.     TCHK 2.1                                                   Page 55
  3637.  
  3638. --------------------------- Bug report ---------------------------------
  3639.  
  3640.  Please list the steps necessary for me to discover and duplicate
  3641.  the error. Try to be as explicit as possible when detailing the
  3642.  steps leading to the problem. Include any screen dumps, file lists,
  3643.  source code, or other information necessary. Use additional pages
  3644.  if necessary:
  3645.  
  3646.     ____________________________________________________________________
  3647.  
  3648.     ____________________________________________________________________
  3649.  
  3650.     ____________________________________________________________________
  3651.  
  3652.     ____________________________________________________________________
  3653.  
  3654.     ____________________________________________________________________
  3655.  
  3656.     ____________________________________________________________________
  3657.  
  3658.     ____________________________________________________________________
  3659.  
  3660.     ____________________________________________________________________
  3661.  
  3662.     ____________________________________________________________________
  3663.  
  3664.     ____________________________________________________________________
  3665.  
  3666.     ____________________________________________________________________
  3667.  
  3668.     ____________________________________________________________________
  3669.  
  3670.     ____________________________________________________________________
  3671.  
  3672.     ____________________________________________________________________
  3673.  
  3674.     ____________________________________________________________________
  3675.  
  3676.     ____________________________________________________________________
  3677.  
  3678.     ____________________________________________________________________
  3679.  
  3680.     ____________________________________________________________________
  3681.  
  3682.     ____________________________________________________________________
  3683.  
  3684.  
  3685.          -------------------------------------------------------
  3686.                THANK YOU for supporting Shareware and TCHK
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.     TCHK 2.1                                                   Page 56
  3703.  
  3704.                                  Index
  3705.  
  3706.  
  3707. _cursorinsert                      24, 30
  3708. _cursoroverwrite                   24, 30
  3709. _dvmajor                           25, 31
  3710. _dvminor                           25, 31
  3711. _mouse1                            25, 46
  3712. _mouse2                            25, 46
  3713. _mouse3                            25, 46
  3714. _mouse4                            25, 46
  3715. _rmatherror                        25
  3716. _rmexcep                           20
  3717. _r_maximum                         25
  3718. _r_maxpre                          25
  3719. _r_minpre                          25
  3720. _shadowchar                        27
  3721. _shadowcolor                       27
  3722. _shadowstyle                       27
  3723. _TCHK                              26, 31
  3724. _TCHKdate                          26
  3725. _TCHKmajor                         26, 31
  3726. _TCHKminor                         26, 31
  3727. _TCHKversion                       26, 31
  3728. _TCmajor                           15
  3729. _TCminor                           15
  3730. _ZIPmajor                          23
  3731. _ZIPminor                          23
  3732.  
  3733.  
  3734. A
  3735. Accum_dep                          15, 31
  3736. ACC_DDB                            15
  3737. ACC_SLD                            15
  3738. ACC_SYD                            15
  3739. Ansiback                           30
  3740. Ansifore                           30
  3741. Ansi_call                          33
  3742. Atrim                              31
  3743. Average                            31
  3744.  
  3745.  
  3746. B
  3747. BASE_JUL_YEAR                      13
  3748. BASE_LEAP_YEAR                     13
  3749. Bboolean                           12, 23, 30
  3750. Beep                               20, 29, 31
  3751. BELL                               16
  3752. BINV                               15
  3753. Bitrevb                            28
  3754. Bitrevl                            28
  3755. Bitrevw                            28
  3756. Box                                9, 11, 29, 31, 32
  3757. Boxwindow                          29, 31
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.     TCHK 2.1                                                   Page 57
  3769.  
  3770.  
  3771.  
  3772. C
  3773. Cal...                             33
  3774. CapsLock                           31
  3775. CASEINDEP                          19
  3776. CEDadd                             28
  3777. CEDremove                          28
  3778. Center                             15, 28
  3779. Changelitebar                      31
  3780. CHARHEIGHT                         21
  3781. Char_attribute                     26
  3782. Checksum_block                     28
  3783. Clear                              31
  3784. Cls                                31
  3785. Color                              7, 8, 12, 25, 26, 31, 38
  3786. Commit                             28, 32
  3787. Compaq386GetCpuSpeed               29
  3788. Compaq386GetCpuSpeed               29
  3789. Compaq386KbdType                   29
  3790. CompaqExternalMonitorType          29
  3791. CompaqGetMasterMode                29
  3792. CompaqGetMonitor                   29
  3793. CompaqInternalMonitorType          29
  3794. CompaqModeSwitchDelay              29
  3795. CompaqSelectMonitor                29
  3796. CompaqSetMasterMode                29
  3797. Cpu_id                             12, 31
  3798. CRC16tupdate                       28
  3799. CRC16update                        28
  3800. CRC16_block                        28
  3801. CRC32tupdate                       28
  3802. CURSORON                           19
  3803. Cursor_blink                       33
  3804. CURSOR_HALFBLOCK                   21
  3805. CURSOR_UNDERBAR                    21
  3806.  
  3807.  
  3808. D
  3809. DATECHAR                           13
  3810. DATECHARSTR                        13
  3811. DATECHARTEST                       13
  3812. DATENULL                           13
  3813. Date_convert                       32, 41, 42
  3814. Daylist                            24, 32, 33
  3815. Dayofweek                          33
  3816. Ddatetofull                        31, 32
  3817. DDB                                15
  3818. Depreciation                       31
  3819. DESQapilevel                       28
  3820. DESQappnum                         28
  3821. DESQbeginc                         28
  3822. DESQcommonmem                      30
  3823. DESQconvenmem                      30
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.     TCHK 2.1                                                   Page 58
  3835.  
  3836. DESQdisperror                      28
  3837. DESQendc                           28
  3838. DESQexit                           30
  3839. DESQexpandedmem                    30
  3840. DESQgetbuf                         28
  3841. DESQgetmem                         28
  3842. DESQiskmouse                       28
  3843. DESQjustify                        28
  3844. DESQkmouse_off                     28
  3845. DESQkmouse_on                      28
  3846. DESQostack                         29
  3847. DESQpause                          29
  3848. DESQpoke                           30
  3849. DESQposttask                       28
  3850. DESQpushkey                        28
  3851. DESQputmem                         28
  3852. DESQsound                          29
  3853. DESQstart                          28
  3854. DESQstop                           28
  3855. DESQustack                         30
  3856. DESQversion                        33
  3857. DISABLED                           19, 30
  3858. DISABLENOHILITE                    19, 30
  3859. Diskchanged                        31
  3860. Disktype                           8, 33
  3861. Dosday                             31
  3862. Doshour                            31
  3863. Dosmin                             31
  3864. Dosmonth                           31
  3865. Dossec                             31
  3866. Dostimetolong                      28
  3867. Dosyear                            31
  3868. DoubleDOSfreeCPU                   33
  3869. DoubleDOSGetVirtual                30
  3870. DoubleDOSTaskSwitch                33
  3871. Double_decline_bal_dep             15, 31
  3872. DVERROR_BEEP                       20
  3873. DVERROR_EITHER                     20
  3874. DVERROR_LEFT                       20
  3875. DVERROR_RIGHT                      20
  3876. DVFREESLICE                        16, 19, 29
  3877.  
  3878.  
  3879. E
  3880. EMMversion                         31, 33
  3881. Emptystring                        26, 31
  3882. EMSGetStatus                       30
  3883. EMSinfo                            30
  3884. EMSpages                           30
  3885. EMSwarmbootprep                    30
  3886. ENABLED                            19
  3887. Endstri                            31
  3888. Endstrp                            31
  3889. EQU                                15
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.     TCHK 2.1                                                   Page 59
  3901.  
  3902. ERASEMENU                          19
  3903. ESCQUIT                            19
  3904. Expandfilespec                     31
  3905. Extendedtotal                      33
  3906.  
  3907.  
  3908. F
  3909. Factorial                          31
  3910. Fileexist                          28
  3911. FIRSTTIME                          19
  3912. FNAMESIZE                          14
  3913. Fname_match                        32
  3914. Fncmp                              31
  3915. Frac                               31, 33, 44
  3916. FREEMENU                           19
  3917. Fsgn                               31
  3918. Fulltoddate                        32, 33
  3919. FV                                 31
  3920. FVa                                31
  3921.  
  3922.  
  3923. G
  3924. GetAssignmemseg                    28
  3925. GetBootBlock                       28, 31
  3926. GetBootBlock4                      28
  3927. GetBPB                             31
  3928. Getci_match                        31
  3929. Getcursor                          31
  3930. Getc_match                         31
  3931. Getfilespec                        31
  3932. Getget                             16, 24, 29, 30
  3933. Getk                               24, 31
  3934. Getpw                              28
  3935. Getstr                             24
  3936. GetTypePointDevice                 29
  3937. GetVolSerialNum                    28
  3938. Gotohv                             32
  3939. Greg...                            33
  3940.  
  3941.  
  3942. H
  3943. HIERARCHIAL                        19
  3944.  
  3945.  
  3946. I
  3947. Initkeyvars                        28
  3948. Inkey                              30, 31
  3949. Inkeyc                             31
  3950. Insertmode                         16, 24
  3951. INSERTMODE                         16
  3952. InsLock                            31
  3953. Is2nd8259                          28
  3954. Isallalpha                         28
  3955. Isallalphanum                      28
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.     TCHK 2.1                                                   Page 60
  3967.  
  3968. Isalllower                         28
  3969. Isallupper                         28
  3970. IsAnarkey                          29
  3971. IsAppendavail                      31
  3972. IsAssignavail                      31
  3973. IsAutoPark                         28
  3974. IsBlogical                         31
  3975. IsBREAKon                          32, 33
  3976. Iscdevicemoderaw                   28
  3977. IsCEDavail                         28
  3978. Isdate                             28, 30
  3979. Isdir                              31
  3980. IsDoubleDOS                        28, 33
  3981. Isdrivelocal                       28
  3982. IsDriverSys                        29
  3983. IsEnhanceKbd                       29
  3984. Iseven                             28
  3985. IsExtended                         33
  3986. Isfilename                         28
  3987. Isgameport                         31
  3988. Isgn                               31
  3989. Ishandlelocal                      28
  3990. IsHiliteable                       28
  3991. IsInvisible                        28
  3992. Isleapyear                         13, 33
  3993. IsMCA                              28
  3994. Ismouse                            29
  3995. IsNetwork                          29, 33
  3996. IsNLSFuncCom                       29
  3997. IsNovellNetavail                   28
  3998. Isodd                              28
  3999. Ispathname                         28
  4000. IspcAnywhere                       28
  4001. IsPM                               31
  4002. IsPRINTavail                       31
  4003. Isrealtimeclock                    28
  4004. IsRedirectStdin                    28
  4005. IsRedirectStdout                   28
  4006. Isremoveable                       28
  4007. IsScrnSav2                         28
  4008. IsShareavail                       31
  4009. Isstate                            28
  4010. IsVERIFYon                         32, 33
  4011. IsVidclock                         31
  4012. IsWhoa                             29
  4013. Iswildcarded                       28
  4014. IsXMSinstalled                     28
  4015. Iszip                              28
  4016.  
  4017.  
  4018. J
  4019. JCENTER                            16
  4020. JLEFT                              16
  4021. JNONE                              16
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.     TCHK 2.1                                                   Page 61
  4033.  
  4034. JoystickAx                         28
  4035. JoystickAy                         28
  4036. JoystickBx                         28
  4037. JoystickBy                         28
  4038. Joysticksettings                   28
  4039. JRIGHT                             16
  4040. Jul...                             33
  4041.  
  4042.  
  4043. K
  4044. Keyclick                           28
  4045. Key_extended                       24
  4046. Key_status                         24
  4047.  
  4048.  
  4049. L
  4050. LBPRESSED                          19
  4051. LEFTBUTTON                         19
  4052. Litebarerrno                       25
  4053. Litebar_alloc                      31
  4054. Litebar_free                       31
  4055. Litebar_get                        31
  4056. Litehilite                         31
  4057. Litemessage                        31
  4058. Longtodostime                      28
  4059. Lpow                               28
  4060. Lsgn                               31
  4061. Ltrim                              31
  4062.  
  4063.  
  4064. M
  4065. Machine_id                         32
  4066. MAXDOUBLE                          17
  4067. MAXFLOAT                           17
  4068. MAXFNAME                           14
  4069. MAXLONG                            17, 21
  4070. MAXLONGTIME                        21
  4071. MAXLONG_UNSIGNED                   17
  4072. MAXRPRECISION                      21
  4073. MAXSTATES                          21
  4074. MAX_ZIP_VERSION                    23
  4075. MBPRESSED                          19
  4076. MButtonPress                       29, 46
  4077. MButtonRelease                     29
  4078. MButtonStatus                      29
  4079. MCursorGraphic                     29, 46
  4080. MCursorOff                         29
  4081. MCursorOn                          29
  4082. MCursorRangex                      29
  4083. MCursorRangey                      29
  4084. MCursorText                        29
  4085. MDriverSize                        29
  4086. Memory_strategy                    33
  4087. MEmulateLightpenOff                29
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.     TCHK 2.1                                                   Page 62
  4099.  
  4100. MEmulateLightpenOn                 29
  4101. Menu_litebar                       29
  4102. Menu_popup                         31
  4103. MGetDisplayPage                    29
  4104. MGetDriver                         29
  4105. MGetSensitivity                    29
  4106. MGetVerType                        29
  4107. MGotoxy                            29
  4108. Mid                                19, 31
  4109. MIDDLEBUTTON                       19
  4110. MMickeysMovedx                     29, 46
  4111. MMickeysMovedy                     29
  4112. MODE                               9, 21
  4113. MOUSEINT                           19
  4114. MouseReset                         29
  4115. MOUSE_INSTALLED                    19
  4116. MPutDriver                         29
  4117. MSetDisplayPage                    29
  4118. MSetRatio                          29
  4119. MSetSensitivity                    29
  4120. MSetThreshold                      29
  4121. MSYSMOUSE                          19
  4122. MUpdateScreen                      29
  4123.  
  4124.  
  4125. N
  4126. Ndp_id                             12, 31
  4127. NEQ                                15
  4128. NextZIPlocal                       23
  4129. Nmid                               28
  4130. NOFLAGS                            16
  4131. NOTOPTION                          19
  4132. NO_MOUSE                           19
  4133. NumLock                            31
  4134.  
  4135.  
  4136. P
  4137. PAGE                               21
  4138. PAGELEN                            21
  4139. Parsefilename                      31
  4140. Parsefnameext                      31
  4141. PATHSIZE                           14
  4142. Pause                              31, 38
  4143. PI                                 17
  4144. PMT                                31
  4145. Pophilite                          31
  4146. Popunlite                          31
  4147. Popuperrno                         25
  4148. Popup_alloc                        31
  4149. Popup_free                         31
  4150. Popup_get                          31
  4151. Popup_restore                      31
  4152. Popup_setcurrent                   31
  4153. PRINTadd                           31
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.     TCHK 2.1                                                   Page 63
  4165.  
  4166. PRINThold                          31
  4167. PRINTpurge                         31
  4168. PRINTremove                        31
  4169. PRINTresume                        31
  4170. Print_screen                       31
  4171. PRTSC_STATUS                       20
  4172. Putsay                             34
  4173. Putstr                             26
  4174. PV                                 31
  4175. PVa                                31
  4176.  
  4177.  
  4178. Q
  4179. QUITMENU                           19
  4180.  
  4181.  
  4182. R
  4183. Radd                               28
  4184. RBPRESSED                          19
  4185. Rceil                              28
  4186. Rdiv                               20, 28, 44
  4187. Read_attrib                        31
  4188. Read_char                          31
  4189. Reboot                             8, 10, 33
  4190. ResetPointDevice                   29
  4191. Resolvepath                        28
  4192. RESTORECURSOR                      19
  4193. Rfloor                             28
  4194. RIGHTBUTTON                        19
  4195. Rnegate                            28
  4196. Rnormalize                         28
  4197. Round                              31, 35
  4198. ROWCOUNT                           21
  4199. Rsign                              28
  4200. Rsub                               28
  4201. Rtrim                              31
  4202.  
  4203.  
  4204. S
  4205. Scrbuff                            33
  4206. ScrollLock                         31
  4207. SetAutoPark                        28
  4208. SetBREAK                           32, 33
  4209. Setcdevicemoderaw                  28
  4210. Setcursor                          31
  4211. SetpcAnywhere                      28
  4212. SetPointDevice                     29
  4213. SetRatePointDevice                 29
  4214. SetResPointDevice                  29
  4215. Settextinfo                        31
  4216. SetVERIFY                          32, 33
  4217. SetWhoa                            29
  4218. Set_color                          26
  4219. Set_handles                        33
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.     TCHK 2.1                                                   Page 64
  4231.  
  4232. Shadow                             21, 22, 27, 28
  4233. SHADOW_B                           21, 22, 27
  4234. SHADOW_BL                          21, 22
  4235. SHADOW_BOTTOM                      22
  4236. SHADOW_BR                          21, 22, 27
  4237. SHADOW_L                           21, 22
  4238. SHADOW_LEFT                        22
  4239. SHADOW_R                           21, 22, 27
  4240. SHADOW_RIGHT                       22
  4241. SHADOW_T                           21, 22
  4242. SHADOW_TL                          21, 22
  4243. SHADOW_TOP                         22
  4244. SHADOW_TR                          21, 22
  4245. SHIFT_STATUS                       16
  4246. Shorttoddate                       32, 33
  4247. SLD                                15
  4248. Soundex                            28
  4249. Sqr                                17, 31
  4250. SQRT2                              17
  4251. Stateindex                         28
  4252. StateName                          25
  4253. StateName                          25
  4254. States                             25
  4255. STATICTEXT                         19, 30
  4256. Stddev                             31
  4257. Straight_line_dep                  15
  4258. Strcapital                         31
  4259. Strclean                           31
  4260. Strfill                            31
  4261. Stroccur                           31
  4262. Strpadleft                         28
  4263. Strpadright                        28
  4264. Strspace2tab                       28
  4265. Strtabexpand                       28
  4266. Strtocomma                         31
  4267. Struct BIOSParmBlock               13, 14
  4268. Struct BootBlock                   14, 23, 29
  4269. Struct BootBlock4                  14, 23
  4270. Struct ddate                       13, 23, 40, 41
  4271. Struct DESQmemory                  20, 23
  4272. Struct EMSrecord                   15, 23
  4273. Struct filespec                    14, 23
  4274. Struct fnameext                    14, 23
  4275. Struct keylist                     18, 23
  4276. Struct litebar_field               18, 23
  4277. Struct litebar_header              18, 23
  4278. Struct popup_field                 17, 23
  4279. Struct popup_header                17, 23
  4280. Struct REAL                        20, 44
  4281. Struct ZIP_central_record          22, 23
  4282. Struct ZIP_end_central_record      22, 23
  4283. Struct ZIP_local_header            22, 23
  4284. Strwcmp                            31
  4285. Strwicmp                           31
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.     TCHK 2.1                                                   Page 65
  4297.  
  4298. Summation                          31
  4299. Sum_year_digits_dep                15, 31
  4300. Swap                               31
  4301. SYD                                15
  4302.  
  4303.  
  4304. T
  4305. TIMER_TICKS                        16
  4306. Time_convert                       31, 43
  4307. To24hour                           31
  4308. Tocapkey                           31
  4309. Todosdate                          31
  4310. Todostime                          31
  4311. Tohour                             31
  4312. Tone                               21, 28
  4313. TRIMALL                            16
  4314. TRIMLEFT                           16
  4315. TRIMRIGHT                          16
  4316. TWOBUTTONS                         19
  4317.  
  4318.  
  4319. U
  4320. UDFIDLE                            16, 19
  4321. UninstallWhoa                      29
  4322.  
  4323.  
  4324. V
  4325. Variance                           31
  4326. VIDEO                              7, 9, 21
  4327. VIDOFFSET                          21
  4328.  
  4329.  
  4330. W
  4331. WAITFORKEY                         16
  4332. WRAPAROUND                         19
  4333.  
  4334.  
  4335. X
  4336. XBUTTONS                           19
  4337.  
  4338.  
  4339. Z
  4340. ZipMax                             26
  4341. ZipMin                             26
  4342. ZIPSignatureCentral                23
  4343. ZIPSignatureEndCentral             23
  4344. ZIPSignatureLocal                  23
  4345. ZIPversion                         23
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.