home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / FOXPRO / FCO24MOD / LIB.MOD < prev   
Text File  |  1992-10-15  |  87KB  |  2,045 lines

  1. FCO Library Modification Log - In Module Name Order
  2.  
  3.  
  4. The title line of each modification reads as follows:
  5.  
  6.   ┌─────────────Version number
  7.   │
  8.   │             Type of modification
  9.   │
  10.   │    ┌────────Bug fix
  11.   │    │┌───────Enhancement of existing function
  12.   │    ││┌──────New Function
  13.   │    │││┌─────German language specific
  14.   │    ││││┌────Modification of existing function
  15.   │    │││││┌───Routine no longer needed
  16.   │    ││││││
  17. -Ver---BENGMX----------------------------------------------------------------
  18.  
  19. -2.3-------M-----------------------------------------------------------------
  20.  
  21.   A_APPBLK.ASM -   Built in an assembler switch 'light' to build a non-LAN
  22.                    version of FCO/FORCE
  23.  
  24. -2.4-------M-----------------------------------------------------------------
  25.  
  26.   B_CMPSTR.ASM -   __$flag_exact: set the default to OFF instead of ON, to
  27.                    be compatible to Clipper, dBase, and FoxBase.
  28.  
  29.                    BE CAREFUL!!!  Now string compares (by default) work as
  30.                    crazy as they do in Clipper, dBase, etc., i.e. the
  31.                    compare returns .T. if the string to the right of the '='
  32.                    operator matches the characters to the left.
  33.  
  34.                    This means
  35.  
  36.                      "blabla" = ""
  37.  
  38.                    will return .T. !!!
  39.  
  40.                    See function IsEmpty() later in this document !
  41.  
  42.                    Users of Jeff Davis' library pay attention - Jeff some-
  43.                    times relies on the internal string compare routine, and
  44.                    he expects that EXACT is ON - otherwise his functions
  45.                    won't work correctly. To be sure, include a SET EXACT ON
  46.                    command in the startup code of your program, and SET
  47.                    EXACT OFF only if you want to do an "unexact" SEEK into
  48.                    a database file.
  49.  
  50. -2.4-----N-------------------------------------------------------------------
  51.  
  52.   BITS.HDR     -   New header file, containing prototypes for bit functions,
  53.                    and logical functions (moved them from MATH.HDR to here).
  54.  
  55. -2.4-----N-------------------------------------------------------------------
  56.  
  57.   BITS.HDR     -   Renamed BitSet, BitTest, BitReset, and BitMask to
  58.                    SetBit, TestBit, ResetBit, and MaskBit to avoid conflicts
  59.                    with Jeff Davis' functions.
  60.  
  61. -2.3-----N-------------------------------------------------------------------
  62.  
  63.   BROWSE.HDR   -   New header file, containing the prototype for browse()
  64.  
  65. -2.3-----N-------------------------------------------------------------------
  66.  
  67.   BROWSE.PRG   -   Added a browse() function, similar to Clipper's dbedit(),
  68.                    but with mouse support, and other extended features.
  69.  
  70. -2.4-----NG------------------------------------------------------------------
  71.  
  72.   C_DBLFRM.ASM -   Added call to _$transform_str to create European numeric
  73.                    format if requested (according to status of
  74.                    __$trans_flag).
  75.  
  76. -2.4---B---------------------------------------------------------------------
  77.  
  78.   C_DBLFRM.ASM -   Fixed a bug which did not format numbers with a lot of
  79.                    zeroes after the decimal point, e.g.
  80.  
  81.                    1.000000001 was formatted as 1.
  82.  
  83. -2.3-----NG------------------------------------------------------------------
  84.  
  85.   CNVUMLT.PRG  -   Added cnvumlt() to allow indexing based upon German DIN
  86.                    standard, i.e. Umlauts will be converted into their
  87.                    "extanded" equivalents, e.g. "ÄGY" --> "AEG", "Ägy" -->
  88.                    "Aeg", "weißer" --> "weisse", etc.
  89.  
  90. -2.4-----N-------------------------------------------------------------------
  91.  
  92.   CTFILE.PRG   -   Added a new library function to create a unique DOS file
  93.                    name (DOS 3.0, and above)
  94.  
  95.                    function logical CreateTempFilename prototype
  96.                      parameters char cPathName
  97.  
  98.                    cPathName must be declared long enough to store the full
  99.                    Drive, Path Name, plus 12 characters for the file name.
  100.  
  101. -2.4-----NG------------------------------------------------------------------
  102.  
  103.   DATA.HDR     -   added declaration for __lib_lang
  104.  
  105. -2.4-----N-------------------------------------------------------------------
  106.  
  107.   DATABASE.HDR -   Added prototypes for ind_order(), and a_ind_order()
  108.  
  109. -2.4-----N-------------------------------------------------------------------
  110.  
  111.   DATABASE.HDR -   Added prototype for a_dbf(), which was in the library, but
  112.                    not yet prototyped
  113.  
  114. -2.4-----N-------------------------------------------------------------------
  115.  
  116.   DATABASE.HDR -   Added prototypes for fldcnt(), which was in the library,
  117.                    but not yet prototyped, and for the new function
  118.                    a_fldcnt():
  119.  
  120.                    function uint fldcnt prototype
  121.  
  122.                    function uint a_fldcnt prototype
  123.                      parameters alias AliasName
  124.  
  125. -2.4-----NG------------------------------------------------------------------
  126.  
  127.   DATE.HDR     -   Added prototype for ddow()
  128.  
  129. -2.3-----NG------------------------------------------------------------------
  130.  
  131.   DUDEN.PRG    -   Added duden() to allow indexing based upon German dictio-
  132.                    nary standard, i.e. Umlauts will be converted into their
  133.                    "plain" equivalents, e.g. "Ä" --> "A", "ß" --> "s", etc.
  134.  
  135. -2.4---B---------------------------------------------------------------------
  136.  
  137.   E_DATA.ASM   -   Moved declarations of __filed_eof, and __exit_status from
  138.                    J_PTREC.ASM resp. H_RUN.ASM to here to avoid linking these
  139.                    modules when DATA.HDR  is #included, where nothing else is
  140.                    needed from the modules.
  141.  
  142. -2.4---B---------------------------------------------------------------------
  143.  
  144.   E_DATA.ASM   -   Moved declaration of __flag_exact from B_CMPSTR.ASM to
  145.                    to avoid linking this module when DATA.HDR is #included,
  146.                    where nothing else is needed from the module.
  147.  
  148.                    Defined the default to OFF, according to all other known
  149.                    xBase dialects.
  150.  
  151.                    CAUTION: take care of the crazy string compare rules, set
  152.                             up by dBase - FORCE/FCO uses them as well !
  153.  
  154. -2.4------G------------------------------------------------------------------
  155.  
  156.   E_DATA.ASM   -   added variable __lib_lang which contains 'German', or
  157.                    'English' depending on the language version of the library
  158.  
  159. -2.4-----N-------------------------------------------------------------------
  160.  
  161.   E_DATA.ASM   -   Added __color_score to define the attribute of the
  162.                    scoreboard indicators.
  163.  
  164. -2.4-----N-------------------------------------------------------------------
  165.  
  166.   E_DATA.ASM   -   Added __max_row, and __max_col to define different screen
  167.                    sizes.
  168.  
  169. -2.4-----N-------------------------------------------------------------------
  170.  
  171.   E_DATA.ASM   -   Added __color_deact for future use with the GET system
  172.                    to save attribute of non-active GET fields.
  173.  
  174. -2.4-----N-------------------------------------------------------------------
  175.  
  176.   E_DATA.ASM   -   Added __$scrn_driver to be used as a flag, indicating
  177.                    which screen driver system is currently active:
  178.  
  179.                    0 = scrn_direct
  180.                    1 = scrn_bios
  181.                    2 = scrn_dos
  182.                  255 = no driver installed
  183.  
  184. -2.4-------M-----------------------------------------------------------------
  185.  
  186.   E_DATA.ASM   -   Moved define for __edit_browse from M_KERNEL to here to
  187.                    avoid linkage of M_KERNEL when DATA.HDR is #included in a
  188.                    program.
  189.  
  190. -2.4-------M-----------------------------------------------------------------
  191.  
  192.   E_DATA.ASM   -   Moved define for __tops_ from L_PICK.PRG to here to
  193.                    avoid linkage of unneeded modules.
  194.  
  195. -2.4-----N-------------------------------------------------------------------
  196.  
  197.   E_FCOST.ASM  -   New module - dummy startup procedure FCO_START (see
  198.                    E_SETUP.ASM). FCO_START calls FORCE_START which is in
  199.                    E_FORST.ASM, thus allowing the user to either use the
  200.                    name FCO_START, or FORCE_START for his own version of
  201.                    the startup routine.
  202.  
  203. -2.4--------X----------------------------------------------------------------
  204.  
  205.   E_DEFSCR.ASM -   Removed this module from the library because the defined
  206.                    variable __$default_scrn is no longer needed. All save
  207.                    screen stuff uses dynamic memory allocation instead which
  208.                    makes it easy to handle different screen sizes.
  209.  
  210. -2.4-----N-------------------------------------------------------------------
  211.  
  212.   E_FORST.ASM  -   New module - dummy startup procedure FORCE_START (see
  213.                    E_FCOST.ASM).
  214.  
  215. -2.4-----N-------------------------------------------------------------------
  216.  
  217.   E_SETUP.ASM  -   Added call to _fco_start at the end of _$setup_world to
  218.                    allow programmers to run an automatic startup-procedure.
  219.                    This procedure MUST be named fco_start. If the programmer
  220.                    does not supply fco_start, an empty dummy procedure will
  221.                    be linked in (see E_FCOST.ASM).
  222.  
  223.                    Example:
  224.  
  225.                    procedure fco_main
  226.                      ? "Hello"
  227.                    endpro
  228.  
  229.                    procedure fco_start
  230.                      ? "I will be automatically called before FCO_MAIN"
  231.                    endpro
  232.  
  233.                    Output:
  234.  
  235.                    I will be automatically called before FCO_MAIN
  236.                    Hello
  237.  
  238.                    WARNING:
  239.  
  240.                    The screen driver system will be initialized after the
  241.                    call to fco_start, i.e. if the user wants to do any
  242.                    screen output in fco_start, there must be an explicite
  243.                    call to scrn_direct, scrn_bios, or scrn_dos in fco_start
  244.                    BEFORE any screen output.
  245.  
  246.                    If there is a screen initialization contained in
  247.                    fco_start, the default initiylization to scrn_direct will
  248.                    be skipped, thus allowing to initialize to a different
  249.                    screen driver system inside fco_start.
  250.  
  251. -2.4-----NG------------------------------------------------------------------
  252.  
  253.   E_SETUP.ASM  -   After calling _fco_start, we now look if any screen driver
  254.                    system has been installed (maybe by a user supplied ver-
  255.                    sion of _fco_start). If not, we will install _scrn_direct.
  256.  
  257. -2.4---B---------------------------------------------------------------------
  258.  
  259.   E_SETUP.ASM  -   Added a cld instruction in _$setup_world (just to be sure).
  260.  
  261. -2.4-----N-------------------------------------------------------------------
  262.  
  263.   E_SETUP.ASM  -   Added a call to _$set_fco (see W_KRS.ASM below).
  264.  
  265. -2.3---B--G------------------------------------------------------------------
  266.  
  267.   E_SWAP.ASM   -   Changed the basic name of the swap file into FCO00000.TMP,
  268.                    which allows nested calls of the RUN SAVE command.
  269.                    NOTE: this was a bug in the German adaptation, David
  270.                    made.
  271.  
  272. -2.4---B---------------------------------------------------------------------
  273.  
  274.   F_BUILD.ASM  -   Fixed a bug in the creation of a dBase File header, i.e.
  275.                    avoided creation of a dummy field, which caused compatibi-
  276.                    lity problems with other xBase products, i.e. trying to
  277.                    read a FORCE/FCO DBF file with Clipper, etc.
  278.  
  279. -2.3------GM-----------------------------------------------------------------
  280.  
  281.   F_CLDBF.ASM  -   Built in an assembler switch 'light' to build a non-LAN
  282.                    version of FCO/FORCE
  283.  
  284. -2.4------G------------------------------------------------------------------
  285.  
  286.   F_SAFETY.ASM -   Translated messages into German
  287.  
  288. -2.4---B---------------------------------------------------------------------
  289.  
  290.   F_SETREL.ASM -   Added code into _$del_relation to correctly handle re-
  291.                    lease of existing relations, i.e. to make SET RELATION TO
  292.                    work correctly. The original code only contained a RET
  293.                    instruction which does not what it's supposed to do.
  294.  
  295. -2.3------GM-----------------------------------------------------------------
  296.  
  297.   F_USE.ASM    -   Built in an assembler switch 'light' to build a non-LAN
  298.                    version of FCO/FORCE
  299.  
  300. -2.4------G------------------------------------------------------------------
  301.  
  302.   G_DISSTR.ASM -   Translated messages into German
  303.  
  304. -2.3------G------------------------------------------------------------------
  305.  
  306.   G_ERRORS.INC -   Translated error messages into German.
  307.                    NOTE: PERROR.EXE needs to be re-linked
  308.  
  309. -2.4-----N-------------------------------------------------------------------
  310.  
  311.   G_GETALT.ASM -   New module containing
  312.  
  313.                    function logical GetSetAlternate prototype
  314.                      parameters value logical NewValue
  315.  
  316.                    This function returns the current state of SET ALTERNATE,
  317.                    and sets the ALTERNATE flag according to NewValue
  318.                    (.t. = ON, .f. = OFF)
  319.  
  320. -2.4-----N-------------------------------------------------------------------
  321.  
  322.   G_GETBEL.ASM -   New module containing
  323.  
  324.                    function logical GetSetBell prototype
  325.                      parameters value logical NewValue
  326.  
  327.                    This function returns the current state of SET BELL,
  328.                    and sets the BELL flag according to NewValue (.t. = ON,
  329.                    .f. = OFF)
  330.  
  331. -2.4-----N-------------------------------------------------------------------
  332.  
  333.   G_GETCEN.ASM -   New module containing
  334.  
  335.                    function logical GetSetCentury prototype
  336.                      parameters value logical NewValue
  337.  
  338.                    This function returns the current state of SET CENTURY,
  339.                    and sets the CENTURY flag according to NewValue (.t. = ON,
  340.                    .f. = OFF)
  341.  
  342. -2.4-----N-------------------------------------------------------------------
  343.  
  344.   G_GETCNS.ASM -   New module containing
  345.  
  346.                    function logical GetSetConsole prototype
  347.                      parameters value logical NewValue
  348.  
  349.                    This function returns the current state of SET CONSOLE,
  350.                    and sets the CONSOLE flag according to NewValue (.t. = ON,
  351.                    .f. = OFF)
  352.  
  353. -2.4-----N-------------------------------------------------------------------
  354.  
  355.   G_GETCON.ASM -   New module containing
  356.  
  357.                    function logical GetSetConfirm prototype
  358.                      parameters value logical NewValue
  359.  
  360.                    This function returns the current state of SET CONFIRM,
  361.                    and sets the CONFIRM flag according to NewValue (.t. = ON,
  362.                    .f. = OFF)
  363.  
  364. -2.4-----N-------------------------------------------------------------------
  365.  
  366.   G_GETDAT.ASM -   New module containing
  367.  
  368.                    function uint GetSetDate prototype
  369.                      parameters value uint NewValue
  370.  
  371.                    This function returns the current state of SET DATE,
  372.                    and sets the DATE according to NewValue; defines for
  373.                    the various DATE types can be found in GETSET.HDR.
  374.  
  375. -2.4-----N-------------------------------------------------------------------
  376.  
  377.   G_GETDEC.ASM -   New module containing
  378.  
  379.                    function uint GetSetDecimals prototype
  380.                      parameters value uint NewValue
  381.  
  382.                    This function returns the current state of SET DECIMALS,
  383.                    and sets the DECIMALS according to NewValue.
  384.  
  385.                    The maximum for NewVal is 15; any values greater than this
  386.                    force DECIMALS to 0.
  387.  
  388. -2.4-----N-------------------------------------------------------------------
  389.  
  390.   G_GETDEL.ASM -   New module containing
  391.  
  392.                    function logical GetSetDeleted prototype
  393.                      parameters value logical NewValue
  394.  
  395.                    This function returns the current state of SET DELETE,
  396.                    and sets the DELETE flag according to NewValue (.t. = ON,
  397.                    .f. = OFF).
  398.  
  399. -2.4-----N-------------------------------------------------------------------
  400.  
  401.   G_GETDLM.ASM -   New module containing
  402.  
  403.                    function logical GetSetDelim prototype
  404.                      parameters value logical NewValue
  405.  
  406.                    This function returns the current state of SET DELIMITERS,
  407.                    and sets the DELIMITERS flag according to NewValue
  408.                    (.t. = ON, .f. = OFF).
  409.  
  410.  
  411. -2.4-----N-------------------------------------------------------------------
  412.  
  413.   G_GETDPR.ASM -   New module containing
  414.  
  415.                    function logical GetSetDevPrt prototype
  416.                      parameters value logical NewValue
  417.  
  418.                    This function returns the current state of SET DEVICE,
  419.                    and sets the DEVICE flag according to NewValue
  420.                    (.t. = PRINTER, .f. = SCREEN).
  421.  
  422.  
  423. -2.4-----N-------------------------------------------------------------------
  424.  
  425.   G_GETEXA.ASM -   New module containing
  426.  
  427.                    function logical GetSetExact prototype
  428.                      parameters value logical NewValue
  429.  
  430.                    This function returns the current state of SET EXACT,
  431.                    and sets the EXACT flag according to NewValue (.t. = ON,
  432.                    .f. = OFF).
  433.  
  434. -2.4-----N-------------------------------------------------------------------
  435.  
  436.   G_GETEXL.ASM -   New module containing
  437.  
  438.                    function logical GetSetExclusive prototype
  439.                      parameters value logical NewValue
  440.  
  441.                    This function returns the current state of SET EXCLUSIVE,
  442.                    and sets the EXCLUSIVE flag according to NewValue
  443.                    (.t. = ON, .f. = OFF).
  444.  
  445. -2.4-----N-------------------------------------------------------------------
  446.  
  447.   G_GETFIX.ASM -   New module containing
  448.  
  449.                    function logical GetSetFixed prototype
  450.                      parameters value logical NewValue
  451.  
  452.                    This function returns the current state of SET FIXED,
  453.                    and sets the FIXED flag according to NewValue (.t. = ON,
  454.                    .f. = OFF).
  455.  
  456. -2.4-----N-------------------------------------------------------------------
  457.  
  458.   G_GETINT.ASM -   New module containing
  459.  
  460.                    function logical GetSetIntensity prototype
  461.                      parameters value logical NewValue
  462.  
  463.                    This function returns the current state of SET INTENSITY,
  464.                    and sets the INTENSITY flag according to NewValue
  465.                    (.t. = ON, .f. = OFF).
  466.  
  467. -2.4-----N-------------------------------------------------------------------
  468.  
  469.   G_GETMAR.ASM -   New module containing
  470.  
  471.                    function uint GetSetMargin prototype
  472.                      parameters value uint NewValue
  473.  
  474.                    This function returns the current value of SET MARGIN,
  475.                    and sets the MARGIN according to NewValue.
  476.  
  477. -2.4-----N-------------------------------------------------------------------
  478.  
  479.   G_GETMSG.ASM -   New module containing
  480.  
  481.                    function uint GetSetMessage prototype
  482.                      parameters value uint NewValue
  483.  
  484.                    This function returns the current value of SET MESSAGE,
  485.                    and sets the MESSAGE line according to NewValue.
  486.  
  487. -2.4-----N-------------------------------------------------------------------
  488.  
  489.   G_GETPRT.ASM -   New module containing
  490.  
  491.                    function logical GetSetPrint prototype
  492.                      parameters value logical NewValue
  493.  
  494.                    This function returns the current state of SET PRINT,
  495.                    and sets the PRINT flag according to NewValue (.t. = ON,
  496.                    .f. = OFF).
  497.  
  498. -2.4-----N-------------------------------------------------------------------
  499.  
  500.   G_GETSCO.ASM -   New module containing
  501.  
  502.                    function logical GetSetScoreboard prototype
  503.                      parameters value logical NewValue
  504.  
  505.                    This function returns the current state of SET SCOREBOARD,
  506.                    and sets the SCOREBOARD flag according to NewValue
  507.                    (.t. = ON, .f. = OFF).
  508.  
  509. -2.4-----N-------------------------------------------------------------------
  510.  
  511.   G_GETSTA.ASM -   New module containing
  512.  
  513.                    function logical GetSetStatus prototype
  514.                      parameters value logical NewValue
  515.  
  516.                    This function returns the current state of SET STATUS,
  517.                    and sets the STATUS flag according to NewValue (.t. = ON,
  518.                    .f. = OFF).
  519.  
  520. -2.4------G------------------------------------------------------------------
  521.  
  522.   G_STKCHK.ASM -   Translated error message into German (Stack checking
  523.                    routine)
  524.  
  525. -2.4------G------------------------------------------------------------------
  526.  
  527.   G_WAIT.ASM   -   Translated message into German
  528.  
  529. -2.4-----N-------------------------------------------------------------------
  530.  
  531.   GETSET.HDR   -   New header file containing definitions for the new
  532.                    GetSet<Status> functions (see G_GET???.ASM above).
  533.  
  534. -2.4-------M-----------------------------------------------------------------
  535.  
  536.   H_BITMSK.ASM  -  Renamed function BitMask into MaskBit to avoid conflicts
  537.                    with Jeff Davis' functions.
  538.  
  539. -2.4-------M-----------------------------------------------------------------
  540.  
  541.   H_BITS.ASM    -  Renamed functions BitSet, BitTest, and BitReset into
  542.                    SetBit, TestBit, and ResetBit to avoid conflicts with
  543.                    Jeff Davis' functions.
  544.  
  545. -2.4------G------------------------------------------------------------------
  546.  
  547.   H_DIR.ASM    -   Translated messages into German
  548.  
  549. -2.4----E--------------------------------------------------------------------
  550.  
  551.   H_DIR.ASM    -   Exchanged hard-coded screen size to use the new variable
  552.                    screen size values.
  553.  
  554. -2.4-------M-----------------------------------------------------------------
  555.  
  556.   H_INT.ASM    -   Removed module from library because it only contains an
  557.                    interrupt function (INT86) similar to the ones in
  558.                    H_INTS.ASM.
  559.  
  560. -2.4---B---------------------------------------------------------------------
  561.  
  562.   H_RUN.ASM    -   Moved declaration of __exit_status from here to E_DATA.ASM
  563.                    to avoid linking this module when DATA.HDR ist #included,
  564.                    and nothing else is needed from H_RUN.ASM
  565.  
  566. -2.3------G------------------------------------------------------------------
  567.  
  568.   I_ERROR.ASM  -   Translated error message into German
  569.  
  570. -2.3------G------------------------------------------------------------------
  571.  
  572.   I_MESAGE.ASM -   Translated general error message into German.
  573.  
  574. -2.4---B---------------------------------------------------------------------
  575.  
  576.   INDEX.INC    -   Added new defines according to the modified index
  577.                    structure to get rid of serveral index bugs (check for an
  578.                    empty leave here). (W.M.)
  579.  
  580. -2.4-----N-------------------------------------------------------------------
  581.  
  582.   ISEMPTY.PRG  -   Added a new library function to test if a string is empty
  583.  
  584.                    function logical IsEmpty prototype
  585.                      parameters  txt
  586.  
  587.                    returns .T. if txt = "", else .F.
  588.  
  589.                    This function is to avoid strange results which happen
  590.                    at string comparisons while EXACT OFF (compatible to
  591.                    dBase):
  592.  
  593.                    ? "hello" = "" returns .T.
  594.                    ? "" = "hello" returns .F.
  595.  
  596. -2.4-----N-------------------------------------------------------------------
  597.  
  598.   IO.HDR       -   added prototype for npready()
  599.  
  600. -2.4-----N-------------------------------------------------------------------
  601.  
  602.   IO.HDR       -   added prototype for prstatus()
  603.                    added #defines for return values of prstatus()
  604.  
  605. -2.4-----N-------------------------------------------------------------------
  606.  
  607.   IO.HDR       -   Added prototype for swap_colors
  608.  
  609. -2.4-----N-------------------------------------------------------------------
  610.  
  611.   IO.HDR       -   Added prototypes for Set_Scroll_Pos, Set_Ins_Pos,
  612.                    Set_Caps_Pos, Set_Num_Pos, and SetColor.
  613.  
  614. -2.4-----N-------------------------------------------------------------------
  615.  
  616.   IO.HDR       -   Added prototype for cursor_type
  617.  
  618.                    procedure cursor_type prototype
  619.                      parameters const uint StartLine, const uint EndLine
  620.  
  621. -2.4-----N-------------------------------------------------------------------
  622.  
  623.   IO.HDR       -   Changed prototype of key_int according to the change in
  624.                    O_KEYBRD.ASM, i.e. made it a function instead of a
  625.                    procedure.
  626.  
  627.                    function key_int prototype
  628.                      parameters value uint key_value
  629.  
  630. -2.4---B---------------------------------------------------------------------
  631.  
  632.   J_PTREC.ASM  -   Moved declaration of __field_eof from here to E_DATA.ASM
  633.                    to avoid linking this module when DATA.HDR ist #included,
  634.                    and nothing else is needed from J_PTREC.ASM
  635.  
  636. -2.3-----N-------------------------------------------------------------------
  637.  
  638.   JUMP.ASM     -   New module containing routines for program jumps:
  639.                    DefineJump, and DoJump
  640.  
  641. -2.3-----N-------------------------------------------------------------------
  642.  
  643.   JUMP.HDR     -   New header file, containing prototypes for jump routines
  644.  
  645. -2.4------G------------------------------------------------------------------
  646.  
  647.   K_BESAFE.ASM -   Translated messages into German
  648.  
  649. -2.4-----N-------------------------------------------------------------------
  650.  
  651.   K_FCOEND.ASM -   New module - dummy end procedure FCO_END (see K_QUIT.ASM).
  652.                    This procedure calls FORCE_END in K_FOREND.ASM to allow
  653.                    the use of any of the two names the a user supplied end
  654.                    procedure.
  655.  
  656. -2.4-----N-------------------------------------------------------------------
  657.  
  658.   K_FOREND.ASM -   New module - dummy end procedure FORCE_END (see
  659.                    K_FCOEND.ASM).
  660.  
  661. -2.4---B---------------------------------------------------------------------
  662.  
  663.   K_OPEN.ASM   -   Changed code to avoid a run-time error when a process
  664.                    tries to open a file in exclusive, or shared mode, when
  665.                    this file has already been opened by another process in
  666.                    exclusive mode. Instead, net_err() will return the correct
  667.                    error code. Like in Clipper, it is the programmer's
  668.                    responsibility to test net_err() after an OPEN before pro-
  669.                    ceeding.
  670.  
  671. -2.4-----N-------------------------------------------------------------------
  672.  
  673.   K_QUIT.ASM   -   Added call to _fco_end in _$QUIT, and _$_QUIT before ter-
  674.                    mination to DOS to allow programmers to run an automatic
  675.                    end procedure.
  676.                    This procedure MUST be named fco_end. If the programmer
  677.                    does not supply fco_end, an empty dummy procedure will
  678.                    be linked in (see K_FCOEND.ASM).
  679.  
  680.                    Example:
  681.  
  682.                    procedure fco_main
  683.                      ? "Hello"
  684.                    endpro
  685.  
  686.                    procedure fco_end
  687.                      ? "I will be automatically called before " + ;
  688.                        "returning to DOS"
  689.                    endpro
  690.  
  691.                    Output:
  692.  
  693.                    Hello
  694.                    I will be automatically called before returning to DOS
  695.  
  696. -2.4-----NG------------------------------------------------------------------
  697.  
  698.   K_QUIT.ASM   -   A procedure _fco_end will be called immediately before
  699.                    returning to DOS. The built-in dummy simly calls
  700.                    _force_end.
  701.  
  702.                    This allows for user supplied versions of _fco_end, or
  703.                    _force_end to de-install any own interrupt stuff, etc.
  704.  
  705.                    This routine will even be called after a run-time
  706.                    error occured, before bailing out to DOS.
  707.  
  708. -2.3------GM-----------------------------------------------------------------
  709.  
  710.   K_SHARE.ASM  -   Built in an assembler switch 'light' to build a non-LAN
  711.                    version of FCO/FORCE
  712.  
  713. -2.4---B---------------------------------------------------------------------
  714.  
  715.   K_VIRT.ASM:  -   Added correct assume directive.
  716.  
  717. -2.4----E--------------------------------------------------------------------
  718.  
  719.   L_BOX.ASM    -   Replaced all direct writes into screen memory by calls
  720.                    through vector __$sg_output. This allows to draw boxes
  721.                    when _scrn_bios is active.
  722.  
  723. -2.4----E--------------------------------------------------------------------
  724.  
  725.   L_BOX.ASM    -   Replaced all hard-coded screen size values by calls into
  726.                    the routines for variable screen size.
  727.  
  728. -2.4-------M-----------------------------------------------------------------
  729.  
  730.   L_BOX.ASM    -   Exchanged calls via __$sg_output against calls to
  731.                    sg_output (see L_SGDISP.ASM above).
  732.  
  733. -2.4------G------------------------------------------------------------------
  734.  
  735.   L_CHANGE.ASM -   Translated help messages into German
  736.  
  737. -2.4----E--------------------------------------------------------------------
  738.  
  739.   L_CHANGE.ASM -   Replaced all hard-coded screen size values by calls into
  740.                    the routines for variable screen size.
  741.  
  742. -2.4---B---------------------------------------------------------------------
  743.  
  744.   L_CMENU.PRG  -   Fixed a bug in the recent version which caused the acti-
  745.                    vation of the first prompt whenever the user typed a
  746.                    letter which was not the initial letter of any promt.
  747.  
  748. -2.3----E-G------------------------------------------------------------------
  749.  
  750.   L_GETCHR.ASM -   Enhanced PICTURE clause "!", and format "@!" to support
  751.                    German Umlauts
  752.  
  753.                  * Enhanced PICTURE clause "L" to allow entry of "J" (German
  754.                  * "JA" = "YES" (requires additional debugging)
  755.  
  756. -2.4----E-G------------------------------------------------------------------
  757.  
  758.   L_GETCHR.ASM -   Enhanced PICTURE format "@A" to support Umlauts
  759.  
  760.                  * Enhanced PICTURE clause "L" to allow entry of "J" (German
  761.                  * "JA" = "YES" (requires additional debugging)
  762.  
  763. -2.4-----NG------------------------------------------------------------------
  764.  
  765.   L_GETDIS.ASM -   Added call to _$transform_char in _$get_display to do a
  766.                    conversion of the numerical format (according to the
  767.                    status of __$trans_flag).
  768.  
  769. -2.4----E--------------------------------------------------------------------
  770.  
  771.   L_GETDIS.ASM -   Replaced all hard-coded screen size values by calls into
  772.                    the routines for variable screen size.
  773.  
  774. -2.4-------M-----------------------------------------------------------------
  775.  
  776.   L_GETDIS.ASM -   Exchanged calls via __$sg_output against calls to
  777.                    sg_output (see L_SGDISP.ASM above).
  778.  
  779. -2.4---B---------------------------------------------------------------------
  780.  
  781.   L_GETLGC.ASM -   Fixed length calculation of internal table.
  782.  
  783. -2.4-----NG------------------------------------------------------------------
  784.  
  785.   L_GETNUM.ASM -   Added a call to _$set_trans in _$get_number to activate
  786.                    conversion of numerical formats if necessary.
  787.  
  788. -2.4-----N-------------------------------------------------------------------
  789.  
  790.   L_MAXCOL.ASM -   New module containing the function _GetMaxCol() to de-
  791.                    termine the current maximum screen column value.
  792.  
  793. -2.4-----N-------------------------------------------------------------------
  794.  
  795.   L_MAXROW.ASM -   New module containing the function _GetMaxRow() to de-
  796.                    termine the current maximum screen row value.
  797.  
  798. -2.4---B---------------------------------------------------------------------
  799.  
  800.   L_MENU.ASM   -   Fixed a bug which made the menu system crash when some
  801.                    masochistic programmer decided to create a menu with
  802.                    only ONE promt.
  803.  
  804. -2.4----E-G------------------------------------------------------------------
  805.  
  806.   L_MENU.ASM   -   Enhanced menu selection via first letters to support
  807.                    Umlauts.
  808.  
  809. -2.4-------M-----------------------------------------------------------------
  810.  
  811.   L_MENU.ASM   -   Used inkey() instead of get_key() in menu_to to allow
  812.                    timer interrupts of any kind while waiting fo a key
  813.  
  814. -2.4-------M-----------------------------------------------------------------
  815.  
  816.   L_MENU.ASM   -   Removed procedure SWAP_COLORS, and changed calls of this
  817.                    routine into calls to _swap_colors
  818.  
  819. -2.4----E--------------------------------------------------------------------
  820.  
  821.   L_MENU.ASM   -   Replaced all hard-coded screen size values by calls into
  822.                    the routines for variable screen size.
  823.  
  824. -2.4-------M-----------------------------------------------------------------
  825.  
  826.   L_PICK.PRG   -   Made declaration of __tops_ external, and moved it into
  827.                    E_DATA.ASM to avoid linkage of unneeded modules.
  828.  
  829. -2.4------G------------------------------------------------------------------
  830.  
  831.   L_PRMUP.ASM  -   Enhanced routines to handle Umlauts in prompts correctly.
  832.  
  833. -2.3------G------------------------------------------------------------------
  834.  
  835.   L_READKY.ASM -   Status displays 'Ins', 'Caps' and 'Num' translated into
  836.                    German ('Einfg', Groß' and 'Num').
  837.  
  838. -2.4----E--------------------------------------------------------------------
  839.  
  840.   L_READKY.ASM -   Totally re-written routine _$caps_insert to display the
  841.                    scoreboard information, and included the following modi-
  842.                    fications/enhancements:
  843.  
  844.                    - Language of messages German/English, depening upon the
  845.                      assembler switch 'germans'.
  846.                    - No hard-coded lenghts for the status messages, instead
  847.                      we use ASCIIZ strings.
  848.                    - Added status display for scroll lock
  849.                    - Removed hard-coded positions for the various status
  850.                      indicators, using variables insert_loc, caps_loc,
  851.                      scroll_loc, and num_loc instead. This allows modifi-
  852.                      cation of the positions (see following modules L_SETINS,
  853.                      etc.); a position value of -1 means that the according
  854.                      status indicator will be suppressed (even when SET
  855.                      SCOREBOARD is ON).
  856.                    - The display attribute for the scoreboard indicators is
  857.                      now defined in a new system variable __color_score
  858.                      (see E_DATA.ASM below).
  859.  
  860.                    Modified _$rg_del_rest to delete commas in the raw string
  861.                    buffer to fix formatting problems with numerig GET fields.
  862.  
  863. -2.4----E--------------------------------------------------------------------
  864.  
  865.   L_READKY.ASM -   Replaced all hard-coded screen size values, now using
  866.                    the routines to determine the current screen size instead.
  867.  
  868. -2.4-------M-----------------------------------------------------------------
  869.  
  870.   L_READKY.ASM -   Exchanged calls via __$sg_output against calls to
  871.                    sg_output (see L_SGDISP.ASM above).
  872.  
  873. -2.4---B---------------------------------------------------------------------
  874.  
  875.   L_READRC.ASM -   Fixed length calculation of three internal tables. This
  876.                    bug crashed the READ when the user pressed an illegal
  877.                    key like Ctrl-PgDn
  878.  
  879. -2.4----E-G------------------------------------------------------------------
  880.  
  881.   L_READRC.ASM -   Added code in _$read_record to activate the numerical
  882.                    format conversion, and to accept a comma as well as the
  883.                    dot as a decimal stop.
  884.  
  885. -2.4----E--------------------------------------------------------------------
  886.  
  887.   L_SAY.ASM    -   Replaced all hard-coded screen size values, now using
  888.                    the routines to determine the current screen size instead.
  889.  
  890. -2.4---B---------------------------------------------------------------------
  891.  
  892.   L_SAYCHR.ASM -   Fixed length calculation of internal table.
  893.  
  894. -2.4---B---------------------------------------------------------------------
  895.  
  896.   L_SAYGET.ASM -   Fixed a bug in _$sg_num_tmp which caused bad formatting
  897.                    of numerical values during READ.
  898.  
  899. -2.4----E--------------------------------------------------------------------
  900.  
  901.   L_SAYNUM.ASM -   Changed names of symbols cr_string and db_string into
  902.                    __cr_string, or __db_string, and declared them public,
  903.                    and increased the lenghts to 6 (+ \0).
  904.  
  905.                    Modified code to display these strings as ASCIIZ instead
  906.                    of using hard-coded lengths.
  907.  
  908.                    This allows the modification of the text which gets dis-
  909.                    played when using PICTURE functions @C, and @X, i.e. some-
  910.                    thing else but " CR", or " DB" (see also Z_DBCR.PRG
  911.                    below).
  912.  
  913. -2.4-------M-----------------------------------------------------------------
  914.  
  915.   L_SAYNUM.ASM -   Added call to _$set_trans in _$say_number to switch number
  916.                    format conversion on or off.
  917.  
  918. -2.4-----N-------------------------------------------------------------------
  919.  
  920.   L_SETCAP.ASM -   New module containing _set_caps_pos which allows to de-
  921.                    fine the position of the CapsLock status indicator.
  922.  
  923.                    procedure Set_Caps_Pos prototype
  924.                      parameters value uint r, value uint c
  925.  
  926.                    If parameter r is -1, the status indicator will be hidden.
  927.  
  928.                    Caution: The routine does not check if coordinates exceed
  929.                             the legal screen boundaries.
  930.  
  931. -2.4-----N-------------------------------------------------------------------
  932.  
  933.   L_SETCLR.ASM -   Added code to define the default attribute for the status
  934.                    indicators in the scoreboard according to __attr_std.
  935.  
  936. -2.4-----N-------------------------------------------------------------------
  937.  
  938.   L_SETINS.ASM -   New module containing _set_ins_pos which allows to de-
  939.                    fine the position of the Insert status indicator.
  940.  
  941.                    procedure Set_Ins_Pos prototype
  942.                      parameters value uint r, value uint c
  943.  
  944.                    If parameter r is -1, the status indicator will be hidden.
  945.  
  946.                    Caution: The routine does not check if coordinates exceed
  947.                             the legal screen boundaries.
  948.  
  949. -2.4-----N-------------------------------------------------------------------
  950.  
  951.   L_SETNUM.ASM -   New module containing _set_num_pos which allows to de-
  952.                    fine the position of the NumLock status indicator.
  953.  
  954.                    procedure Set_Num_Pos prototype
  955.                      parameters value uint r, value uint c
  956.  
  957.                    If parameter r is -1, the status indicator will be hidden.
  958.  
  959.                    Caution: The routine does not check if coordinates exceed
  960.                             the legal screen boundaries.
  961.  
  962. -2.4-----N-------------------------------------------------------------------
  963.  
  964.   L_SETSCR.ASM -   New module containing _set_scroll_pos which allows to de-
  965.                    fine the position of the ScrollLock status indicator.
  966.  
  967.                    procedure Set_Scroll_Pos prototype
  968.                      parameters value uint r, value uint c
  969.  
  970.                    If parameter r is -1, the status indicator will be hidden.
  971.  
  972.                    Caution: The routine does not check if coordinates exceed
  973.                             the legal screen boundaries.
  974.  
  975. -2.4-----N-------------------------------------------------------------------
  976.  
  977.   L_SGBIO.ASM  -   New module containing _$sg_outbio for BIOS output for SAY/
  978.                    GET as alternative to _$sg_output (which does it direct).
  979.  
  980. -2.4----E-G------------------------------------------------------------------
  981.  
  982.   L_SGCHR.ASM  -   Enhanced to support Umlauts (utility routine for GET)
  983.  
  984. -2.4----E--M-----------------------------------------------------------------
  985.  
  986.   L_SGDISP.ASM -   Vector __$sg_output will no longer be initialized to point
  987.                    to _$sg_output (this is now performed by _scrn_dircet,
  988.                    _scrn_bios, or _scrn_dos accordingly).
  989.  
  990. -2.4----E-G------------------------------------------------------------------
  991.  
  992.   L_SGDISP.ASM -   Added call to _$transform_char in _$sg_disp_char to do a
  993.                    conversion of the numerical format (according to the
  994.                    status of __$trans_flag).
  995.  
  996. -2.4-------M-----------------------------------------------------------------
  997.  
  998.   L_SGDISP.ASM -   Added procedure sg_output in $s_common_seg to allow re-
  999.                    direction through vector __$sg_output (which is also in
  1000.                    $s_common_seg).
  1001.  
  1002. -2.4-------M-----------------------------------------------------------------
  1003.  
  1004.   L_SGOUT.ASM  -   New module containing _$sg_output which was previously
  1005.                    located in L_SGDISP.ASM.
  1006.  
  1007. -2.4------G------------------------------------------------------------------
  1008.  
  1009.   L_SLINE.ASM  -   Translated messages into German
  1010.  
  1011. -2.4-----N-------------------------------------------------------------------
  1012.  
  1013.   L_ZOOMBX.PRG     New module containing
  1014.  
  1015.                    PROCEDURE ZoomBox prototype
  1016.                        PARAMETERS VALUE UINT    r,            ;
  1017.                                   VALUE UINT    c,            ;
  1018.                                   VALUE UINT    r1,           ;
  1019.                                   VALUE UINT    c1,           ;
  1020.                                   value logical grow,         ;
  1021.                                   const char(9) FrameFillChar,;
  1022.                                   value byte    BorderAttr,   ;
  1023.                                   value byte    FillAttr,     ;
  1024.                                   value byte    ShadowAttr,   ;
  1025.                                   value uint    speed
  1026.  
  1027.                    This procedure draws a zooming box (if grow = .t.) with
  1028.                    shadows to the left, and bottom line.
  1029.  
  1030.                    The "tricky" thing is that the speed of the zoom is al-
  1031.                    most independant of the current CPU speed.
  1032.  
  1033.                    See Z_BOX.ASM for a description of string FrameFillChar.
  1034.                    If FrameFillChar contains less than 9 characters, spaces
  1035.                    will be padded to the right.
  1036.  
  1037. -2.3-----N-------------------------------------------------------------------
  1038.  
  1039.   M_BUTT.PRG,  -   Added mouse functions MouseCheck, MouseOn, MouseOff,
  1040.   M_MODUL.PRG,     MouseCursorType, MouseSaveState, MouseRestoreState,
  1041.   M_MODUL.PRG      MouseActCol, MouseActRow, MouseSetCol, MouseSetRow,
  1042.                    MouseSetRowCol, MouseDefineArea, MouseButtonCheck,
  1043.                    MouseButtonValue, MouseAnyButtonPressed,
  1044.                    MouseButtonPressed, MouseButtonWait,
  1045.                    MouseButtonWaitPressed, MouseButtonWaitReleased,
  1046.                    MouseButtonPressedRow, MouseButtonPressedCol,
  1047.                    MouseButtonReleasedRow, MouseButtonReleasedCol
  1048.  
  1049. -2.3------G------------------------------------------------------------------
  1050.  
  1051.   M_KERNEL.ASM - * M_EDIT() translated messages into German, and enhanced
  1052.                  * internal routine UPHER to support Umlauts.
  1053.                  *
  1054.                  * The function in general is quite a crap, and needs some
  1055.                  * enhancements.
  1056.  
  1057. -2.4---B---------------------------------------------------------------------
  1058.  
  1059.   M_KERNEL.ASM -   Fixed length calculation of internal tables.
  1060.  
  1061. -2.4-------M-----------------------------------------------------------------
  1062.  
  1063.   M_KERNEL.ASM -   Moved define for __edit_browse to E_DATA.ASM to avoid
  1064.                    linkage of this module when DATA.HDR is #included in a
  1065.                    program.
  1066.  
  1067. -2.3-----N-------------------------------------------------------------------
  1068.  
  1069.   MACROS.ASM   -   New module containing routines for indirect function
  1070.                    calls: FunctionAddress(), and IndCall
  1071.  
  1072. -2.3-----N-------------------------------------------------------------------
  1073.  
  1074.   MACROS.HDR   -   New header file, containing prototypes for MACROS.ASM
  1075.  
  1076. -2.4----E--------------------------------------------------------------------
  1077.  
  1078.   MATH.HDR     -   Added prototypes for BITRESET, AND(), OR() und XOR() -
  1079.                    these functions are in the library but are not docu-
  1080.                    mented.
  1081.  
  1082. -2.4----E--------------------------------------------------------------------
  1083.  
  1084.   MATH.HDR     -   Added prototype for dbl_power()
  1085.  
  1086. -2.4----E--------------------------------------------------------------------
  1087.  
  1088.   MATH.HDR     -   Extended the definition of PI to the full amount of
  1089.                    possible dbl decimals.
  1090.  
  1091. -2.4----E--------------------------------------------------------------------
  1092.  
  1093.   MATH.HDR     -   Added prototype for BitTest() which was in the library,
  1094.                    but not yet prototyped.
  1095.  
  1096. -2.4----E--------------------------------------------------------------------
  1097.  
  1098.   MATH.HDR     -   Added prototype for procedure factorial which was in the
  1099.                    library, but not yet prototyped.
  1100.  
  1101. -2.4-------M-----------------------------------------------------------------
  1102.  
  1103.   MATH.HDR     -   Removed prototypes for bit functions, and logical func-
  1104.                    tions, and moved them into BITS.HDR.
  1105.  
  1106. -2.3-----N-------------------------------------------------------------------
  1107.  
  1108.   MOUSE.HDR    -   New header file, containing prototypes of mouse functions
  1109.  
  1110. -2.4---B---------------------------------------------------------------------
  1111.  
  1112.   N_INDCOM.ASM -   Enhanced/changed code according to the modified index
  1113.                    structure to get rid of serveral index bugs (check for an
  1114.                    empty leave here). (W.M.)
  1115.  
  1116. -2.3-------M-----------------------------------------------------------------
  1117.  
  1118.   N_INDNET.ASM -   Built in an assembler switch 'light' to build a non-LAN
  1119.                    version of FCO/FORCE
  1120.  
  1121. -2.4---B---------------------------------------------------------------------
  1122.  
  1123.   N_INDMAK.ASM -   Modified write_root to use some area in memory instead
  1124.                    of using stack space for the temporary buffer. Up to
  1125.                    now, it could really kill the system, when there was
  1126.                    not enough free stack space available.
  1127.  
  1128. -2.4---B---------------------------------------------------------------------
  1129.  
  1130.   N_INDMAK.ASM -   Enhanced/changed code according to the modified index
  1131.                    structure to get rid of serveral index bugs (check for an
  1132.                    empty leave here). (W.M.)
  1133.  
  1134. -2.4---B---------------------------------------------------------------------
  1135.  
  1136.   N_NODE.ASM   -   Enhanced/changed code according to the modified index
  1137.                    structure to get rid of serveral index bugs (check for an
  1138.                    empty leave here). (W.M.)
  1139.  
  1140. -2.4---B---------------------------------------------------------------------
  1141.  
  1142.   N_SEEK.ASM   -   Enhanced/changed code according to the modified index
  1143.                    structure to get rid of serveral index bugs (check for an
  1144.                    empty leave here). (W.M.)
  1145.  
  1146. -2.3-----N-------------------------------------------------------------------
  1147.  
  1148.   OFFVAL.PRG   -   New module containing function OffsetValue which returns
  1149.                    the offset address of its parameter
  1150.  
  1151. -2.4----E--------------------------------------------------------------------
  1152.  
  1153.   O_CURCLR.ASM -   Modified function curcolor to use current screen size
  1154.                    values instead of hard-coded screen size (80 * 25).
  1155.  
  1156. -2.4---B---M-----------------------------------------------------------------
  1157.  
  1158.   O_KEYBRD.ASM -   Fixed a bug in key_int which caused a system crash if
  1159.                    somebody tried to stuff more characters into the key-
  1160.                    board buffer as there was empty space.
  1161.  
  1162.                    Made a function to return .T. if the character could be
  1163.                    stuffed into the keyboard buffer, i.e. if there was empty
  1164.                    space available.
  1165.  
  1166.                    function logical key_int prototype
  1167.                      parameters value uint key_value
  1168.  
  1169. -2.4---B---------------------------------------------------------------------
  1170.  
  1171.   P_DBLPOW.PRG -   Changed order of parameters, first parameter is mantissa,
  1172.                    second parameter is exponent now.
  1173.  
  1174. -2.4----E-G------------------------------------------------------------------
  1175.  
  1176.   P_STRDBL.ASM -   Enhanced val() to accept "." as well as "," as decimal
  1177.                    stop (necessary for the European numeric format).
  1178.  
  1179. -2.4---B---------------------------------------------------------------------
  1180.  
  1181.   P_TRUNC.PRG  -   Added code to trap the special case of trunc(0) (which
  1182.                    caused the program to bomb).
  1183.  
  1184. -2.4---B---M-----------------------------------------------------------------
  1185.  
  1186.   Q_CCALL.ASM  -   Fully re-worked this module to archieve the following:
  1187.  
  1188.                    - more efficient code
  1189.  
  1190.                    - bug fixes:
  1191.  
  1192.                      - incorrect stack adjustment in _realloc which caused
  1193.                        a program crash when called from C
  1194.  
  1195.                      - wrong test in _calloc which caused a program to over-
  1196.                        write low memory - this was really fatal !
  1197.  
  1198.                      - wrong test in _stackavail which caused the function
  1199.                        to return false values if the stack size exceeded
  1200.                        32887 bytes.
  1201.  
  1202.                    Thanks to Michael Kalkhoff, who did the fixes !!!
  1203.  
  1204. -2.4-------M-----------------------------------------------------------------
  1205.  
  1206.   Q_MEMORY.ASM -   Re-positioned segment declaration to make TLINK happy.
  1207.                    Some versions of TLINK constantly reported fixup over-
  1208.                    flow errors when linking FCO programs, which now
  1209.                    seems to be ok.
  1210.  
  1211. -2.4-------M-----------------------------------------------------------------
  1212.  
  1213.   Q_MEMORY.ASM -   Added some enhancements for a future EMS/XMS memory
  1214.                    handler.
  1215.  
  1216.                    Thanks to Michael Kalkhoff, who did the enhancements !!!
  1217.  
  1218. -2.4------G------------------------------------------------------------------
  1219.  
  1220.   R_LABEL.ASM  -   Translated messages into German
  1221.  
  1222. -2.4------G------------------------------------------------------------------
  1223.  
  1224.   R_REPORT.ASM -   Translated messages into German (Report routine)
  1225.  
  1226. -2.4---B---M-----------------------------------------------------------------
  1227.  
  1228.   R_REPORT.ASM -   Called _$deallocate at the end of the report to release
  1229.                    memory.
  1230.  
  1231.                    Increased length of today_date from 9 to 11 to allow
  1232.                    correct disply with SET CENTURY ON.
  1233.  
  1234.                    Suppressed the Output of date, and page number on page 1
  1235.                    when PLAIN output is selected.
  1236.  
  1237. -2.4-----N-------------------------------------------------------------------
  1238.  
  1239.   S_CLEAR.ASM  -   Defined new vector __$clr_scrn which points to the current
  1240.                    routine for clearing the screen.
  1241.  
  1242.                    _$clear now calls the clear screen routine through this
  1243.                    vector instead of calling the routine to clear the screen
  1244.                    by directly writing into screen memory (this is required
  1245.                    for REAL output through BIOS.
  1246.  
  1247.                    Removed direct clear screen routine from here, and placed
  1248.                    in the new module S_CLRDIR.ASM
  1249.  
  1250. -2.4-------M-----------------------------------------------------------------
  1251.  
  1252.   S_CLEAR.ASM  -   Removed definition of __$clear_scrn, and put this into
  1253.                    S_DATA.ASM (see above).
  1254.  
  1255. -2.4-----N-------------------------------------------------------------------
  1256.  
  1257.   S_CLRBIO.ASM -   New module contining _$clear_bio which clears the screen
  1258.                    through BIOS (required for full BIOS output).
  1259.  
  1260. -2.4-----N-------------------------------------------------------------------
  1261.  
  1262.   S_CLRDIR.ASM -   New module containing __$clear_dir to clear the screen by
  1263.                    directly filling the screen memory (this code was con-
  1264.                    tained in S_CLEAR.ASM before.
  1265.  
  1266. -2.4-------M-----------------------------------------------------------------
  1267.  
  1268.   S_DATA.ASM   -   Moved all vectors which can be modified to re-direct out-
  1269.                    puts through different drivers to here.
  1270.  
  1271. -2.4-------M-----------------------------------------------------------------
  1272.  
  1273.   S_DSTR.ASM   -   Removed call into _scrn_direct (this is now performed by
  1274.                    _fco_start).
  1275.  
  1276. -2.4-------M-----------------------------------------------------------------
  1277.  
  1278.   S_DSTR.ASM   -   Defined __$get_row_col, and __$set_row_col as far pointers
  1279.                    to allow for redirection of the associated routines by
  1280.                    external libraries, like the KRS graphics library.
  1281.  
  1282. -2.4-------M-----------------------------------------------------------------
  1283.  
  1284.   S_DSTR.ASM   -   Moved re-directable vectors from here to S_DATA.ASM (see
  1285.                    above).
  1286.  
  1287. -2.4---B---------------------------------------------------------------------
  1288.  
  1289.   S_EDIT.ASM   -   Fixed length calculation of internal tables.
  1290.  
  1291. -2.4----E--------------------------------------------------------------------
  1292.  
  1293.   S_EDIT.ASM   -   Replaced all hard-coded screen size values by calling
  1294.                    the appropriate routines to report the current screen
  1295.                    size.
  1296.  
  1297. -2.4-------M-----------------------------------------------------------------
  1298.  
  1299.   S_OC_BIO.ASM -   _scrn_bios now defines vector __$sg_output to conatain
  1300.                    the address of _$sg_outbio to make this re-directable.
  1301.  
  1302. -2.4-------M-----------------------------------------------------------------
  1303.  
  1304.   S_OC_BIO.ASM -   _scrn_bios now defines vector __$sg_clear_scrn to conatain
  1305.                    the address of _$clear_bio to make this re-directable.
  1306.  
  1307. -2.4----E--------------------------------------------------------------------
  1308.  
  1309.   S_OC_BIO.ASM -   Replaced all hard-coded screen size values by calling
  1310.                    the appropriate routines to report the current screen
  1311.                    size.
  1312.  
  1313. -2.4-------M-----------------------------------------------------------------
  1314.  
  1315.   S_OC_BIO.ASM -   Changed the initialization of __$get_row_col, and
  1316.                    __$set_row_col to a full FAR initialization (see above).
  1317.  
  1318. -2.4-------M-----------------------------------------------------------------
  1319.  
  1320.   S_OC_BIO.ASM -   Added commands to set up vectors to screen read/write
  1321.                    routines through BIOS.
  1322.  
  1323. -2.4-------M-----------------------------------------------------------------
  1324.  
  1325.   S_OC_BIO.ASM -   Added code to initialize __$screen_driver to 1 (see
  1326.                    E_DATA.ASM).
  1327.  
  1328. -2.4----E--------------------------------------------------------------------
  1329.  
  1330.   S_OC_CAL.ASM -   New module containing routines to calculate the current
  1331.                    bytes per display row, and the curretn bytes per screen
  1332.                    according to the current screen size set.
  1333.  
  1334. -2.4-------M-----------------------------------------------------------------
  1335.  
  1336.   S_OC_DIR.ASM -   _scrn_direct now defines vector __$sg_output to contain
  1337.                    the address of _$sg_output to make this re-directable.
  1338.  
  1339. -2.4-------M-----------------------------------------------------------------
  1340.  
  1341.   S_OC_DIR.ASM -   _scrn_direct now defines vector __$clear_scrn to contain
  1342.                    the address of _$clear_dir to make this re-directable.
  1343.  
  1344. -2.4----E--------------------------------------------------------------------
  1345.  
  1346.   S_OC_DIR.ASM -   Replaced all hard-coded screen size values by calling
  1347.                    the appropriate routines to report the current screen
  1348.                    size.
  1349.  
  1350. -2.4-------M-----------------------------------------------------------------
  1351.  
  1352.   S_OC_DIR.ASM -   Changed the initialization of __$get_row_col, and
  1353.                    __$set_row_col to a full FAR initialization (see above).
  1354.  
  1355. -2.4-------M-----------------------------------------------------------------
  1356.  
  1357.   S_OC_DIR.ASM -   Added commands to set up vectors to direct screen read/
  1358.                    write routines.
  1359.  
  1360. -2.4-------M-----------------------------------------------------------------
  1361.  
  1362.   S_OC_DIR.ASM -   Added code to initialize __$screen_driver to 0 (see
  1363.                    E_DATA.ASM).
  1364.  
  1365. -2.4-------M-----------------------------------------------------------------
  1366.  
  1367.   S_OC_DOS.ASM -   _scrn_dos now defines vector __$sg_output to conatain
  1368.                    the address of _$sg_outbio to make this re-directable.
  1369.  
  1370.                    Remark: There is no special driver for SAY/GET output
  1371.                            under DOS because it does not make sense to re-
  1372.                            direct SAY/GET into a file.
  1373.  
  1374. -2.4-------M-----------------------------------------------------------------
  1375.  
  1376.   S_OC_DOS.ASM -   _scrn_dos now defines vector __$sg_clear_scrn to conatain
  1377.                    the address of _$clear_bio to make this re-directable.
  1378.                    Remark: There is no special driver for the CLEAR command
  1379.                            under DOS because it does not make sense to re-
  1380.                            direct this into a file.
  1381.  
  1382. -2.4-------M-----------------------------------------------------------------
  1383.  
  1384.   S_OC_DOS.ASM -   Changed the initialization of __$get_row_col, and
  1385.                    __$set_row_col to a full FAR initialization (see above).
  1386.  
  1387. -2.4-------M-----------------------------------------------------------------
  1388.  
  1389.   S_OC_DOS.ASM -   Added commands to set up vectors to screen read/write
  1390.                    routines through BIOS.
  1391.  
  1392. -2.4-------M-----------------------------------------------------------------
  1393.  
  1394.   S_OC_DOS.ASM -   Added code to initialize __$screen_driver to 2 (see
  1395.                    E_DATA.ASM).
  1396.  
  1397. -2.4---B---------------------------------------------------------------------
  1398.  
  1399.   S_RC.ASM     -   Added correct assume directive.
  1400.  
  1401. -2.4-------M-----------------------------------------------------------------
  1402.  
  1403.   S_ROWCOL.ASM -   Changed _$get_row_col to do a far call through
  1404.                    __$get_row_col now (see above).
  1405.  
  1406. -2.4-------M-----------------------------------------------------------------
  1407.  
  1408.   S_RSTNEW.ASM -   Replaced all hard-coded screen size values by calling
  1409.                    the appropriate routines to report the current screen
  1410.                    size.
  1411.  
  1412. -2.4-------M-----------------------------------------------------------------
  1413.  
  1414.   S_RSTSCR.ASM -   Replaced all hard-coded screen size values by calling
  1415.                    the appropriate routines to report the current screen
  1416.                    size.
  1417.  
  1418. -2.4-------M-----------------------------------------------------------------
  1419.  
  1420.   S_RSTSCR.ASM -   _restorescrn calls buff_to_scrn instead of directly
  1421.                    writing to the screen memory to allow for re-direction
  1422.                    through BIOS.
  1423.  
  1424. -2.4-------M-----------------------------------------------------------------
  1425.  
  1426.   S_SAVSCR.ASM -   Replaced all hard-coded screen size values by calling
  1427.                    the appropriate routines to report the current screen
  1428.                    size.
  1429.  
  1430. -2.4-------M-----------------------------------------------------------------
  1431.  
  1432.   S_SAVSCR.ASM -   _savescrn calls scrn_to_buff instead of directly reading
  1433.                    the screen memory to allow for re-direction through BIOS.
  1434.  
  1435. -2.4-------M-----------------------------------------------------------------
  1436.  
  1437.   S_SCBIOS.ASM -   Replaced all hard-coded screen size values by calling
  1438.                    the appropriate routines to report the current screen
  1439.                    size.
  1440.  
  1441. -2.4-------M-----------------------------------------------------------------
  1442.  
  1443.   S_SCRSAV.ASM -   Replaced all hard-coded screen size values by calling
  1444.                    the appropriate routines to report the current screen
  1445.                    size.
  1446.  
  1447. -2.4-------M-----------------------------------------------------------------
  1448.  
  1449.   S_WINSAV.ASM -   Replaced all hard-coded screen size values by calling
  1450.                    the appropriate routines to report the current screen
  1451.                    size.
  1452.  
  1453. -2.4-------M-----------------------------------------------------------------
  1454.  
  1455.   S_WINSAV.ASM -   Modified routines save_data, and restore_data to allow
  1456.                    screen saves, and restores to be re-directed via a vector
  1457.                    to allow direct screen read/writes, or read/writes through
  1458.                    BIOS (see below).
  1459.  
  1460. -2.4-------M-----------------------------------------------------------------
  1461.  
  1462.   S_WINSAV.ASM -   Added procedure scrn_to_buff, and buff_to_scrn in
  1463.                    $s_common_seg to allow redirection through vectors
  1464.                    __$scrn_to_buff, and __$buff_to_scrn (which are also in
  1465.                    $s_common_seg).
  1466.  
  1467. -2.4-------M-----------------------------------------------------------------
  1468.  
  1469.   S_WINSAV.ASM -   Modified routines save_data, and restore_data to allow
  1470.                    screen saves, and restores by calling scrn_to_buff, and
  1471.                    buff_to_scrn instead of calling the routines directly
  1472.                    via vectors. This avoids linking of unneeded code.
  1473.  
  1474. -2.4-----N-------------------------------------------------------------------
  1475.  
  1476.   SCREEN.HDR   -   New header file contining prototypes for the following
  1477.                    routines (some of the prototypes have been moved to here
  1478.                    from other modules):
  1479.  
  1480.                    function  uint    col
  1481.                    function  uint    GetMaxCol
  1482.                    function  uint    GetMaxRow
  1483.                    function  uint    GetScrAttr
  1484.                    function  uint    GetScrChar
  1485.                    function  uint    GetScrCharAttr
  1486.                    function  logical iscolor
  1487.                    function  logical Is_Cursor
  1488.                    function  logical RestoreAreaFromFile
  1489.                    function  uint    row
  1490.                    function  logical SaveAreaToFile
  1491.                    function  uint    savescrn
  1492.                    function  uint    ScrnDriver
  1493.                    function  uint    scrseg
  1494.                    function  logical SetBlink
  1495.                    function  ulong   VidAddr
  1496.                    function  uint    VideoType
  1497.  
  1498.                    procedure cursor_off
  1499.                    procedure cursor_on
  1500.                    procedure curcolor
  1501.                    procedure cursor_type
  1502.                    procedure fill
  1503.                    procedure grow_box
  1504.                    procedure PutScrAttr
  1505.                    procedure PutScrChar
  1506.                    procedure PutScrCharAttr
  1507.                    procedure repaint_area
  1508.                    procedure restore_area
  1509.                    procedure restore_new
  1510.                    procedure restorescrn
  1511.                    procedure save_area
  1512.                    procedure save_screen
  1513.                    procedure scroll
  1514.                    procedure Set_Caps_Pos
  1515.                    procedure Set_Ins_Pos
  1516.                    procedure Set_Num_Pos
  1517.                    procedure Set_Scroll_Pos
  1518.                    procedure SetColor
  1519.                    procedure swap_colors
  1520.                    procedure SetMaxRowCol
  1521.  
  1522. -2.4-------M-----------------------------------------------------------------
  1523.  
  1524.   SCREEN.HDR   -   Added prototypes for Box, and ZoomBox
  1525.  
  1526. -2.3-----N-------------------------------------------------------------------
  1527.  
  1528.   SEGVAL.PRG   -   New module containing function SegmentValue which returns
  1529.                    the segment address of its parameter
  1530.  
  1531. -2.3-----N-------------------------------------------------------------------
  1532.  
  1533.   STRING.HDR   -   Added prototypes for the above functions
  1534.  
  1535. -2.4-----N-------------------------------------------------------------------
  1536.  
  1537.   STRING.HDR   -   added prototype for IsEmpty
  1538.  
  1539. -2.3-----N-------------------------------------------------------------------
  1540.  
  1541.   SYSTEM.HDR   -   Added prototypes for SegmentValue(), and OffsetValue()
  1542.  
  1543. -2.4-----N-------------------------------------------------------------------
  1544.  
  1545.   SYSTEM.HDR   -   Added prototype for CreateTempFilename()
  1546.  
  1547. -2.4----E--------------------------------------------------------------------
  1548.  
  1549.   SYSTEM.HDR   -   Added prototypes for existing functions Interrupt, and
  1550.                    Int_W_Flags.
  1551.  
  1552. -2.4-----N-------------------------------------------------------------------
  1553.  
  1554.   SYSTEM.HDR   -   Added prototypes for Poke(), Peek, and ScrSeg()
  1555.  
  1556. -2.4-----N-------------------------------------------------------------------
  1557.  
  1558.   SYSTEM.HDR   -   Added prototypes for PortIn(), and PortOut
  1559.  
  1560. -2.4-----N-------------------------------------------------------------------
  1561.  
  1562.   SYSTEM.HDR   -   Added prototype for function Is_Dir() which was in the
  1563.                    library, but not yet prototyped (see X_ISDIR.ASM).
  1564.  
  1565.                    function logical Is_Dir prototype
  1566.                      parameters const char DirName
  1567.  
  1568. -2.4-----N-------------------------------------------------------------------
  1569.  
  1570.   SYSTEM.HDR   -   Added prototype for function Addr() which was in the
  1571.                    library, but not yet prototyped
  1572.  
  1573.                    function ulong addr prototype
  1574.                      parameters untyped item
  1575.  
  1576. -2.4-----N-------------------------------------------------------------------
  1577.  
  1578.   SYSTEM.HDR   -   Added prototype for function CpuSpeed()
  1579.  
  1580.                    function uint CpuSpeed prototype
  1581.  
  1582.                    (see Z_SPEED.ASM)
  1583.  
  1584. -2.4-----N-------------------------------------------------------------------
  1585.  
  1586.   SYSTEM.HDR   -   Added prototype for procedure Ticks
  1587.  
  1588.                    procedure Ticks prototype
  1589.                      parameters value uint n
  1590.  
  1591.                    (see Z_TICKS.ASM)
  1592.  
  1593. -2.3----E-G------------------------------------------------------------------
  1594.  
  1595.   T_CAP1ST.ASM -   CAPFIRST() enhanced to support Umlauts
  1596.  
  1597. -2.4----E--------------------------------------------------------------------
  1598.  
  1599.   T_FILL.ASM   -   Replaced all hard-coded screen size values by calling
  1600.                    the appropriate routines to report the current screen
  1601.                    size.
  1602.  
  1603. -2.4----E--------------------------------------------------------------------
  1604.  
  1605.   T_FILL.ASM   -   Added code to check __$scrn_driver; if this flag con-
  1606.                    tains values greater than 0, i.e. not scrn_direct, the
  1607.                    fill() will simply return without drawing something on
  1608.                    the screen (see E_DATA for definition of __$scrn_driver).
  1609.  
  1610. -2.4----E-G------------------------------------------------------------------
  1611.  
  1612.   T_ISALP.ASM  -   Enhanced to support Umlauts (function isalpha())
  1613.  
  1614. -2.3----E-G------------------------------------------------------------------
  1615.  
  1616.   T_ISLOW.ASM  -   ISLOWER() enhanced to support Umlauts
  1617.  
  1618. -2.4---B---------------------------------------------------------------------
  1619.  
  1620.   T_ISLOW.ASM  -   Fixed a bug which made the whole machine hang (because
  1621.                    of one missing POP command), and changed code similar to
  1622.                    T_ISUP.ASM to avoid usage of ES register.
  1623.  
  1624. -2.3----E-G------------------------------------------------------------------
  1625.  
  1626.   T_ISUP.ASM   -   ISUPPER() enhanced to support Umlauts
  1627.  
  1628. -2.4---B---------------------------------------------------------------------
  1629.  
  1630.   T_LEN.ASM    -   Added the correct assume directive
  1631.  
  1632. -2.3----E-G------------------------------------------------------------------
  1633.  
  1634.   T_LOWER.ASM  -   LOWER() enhanced to support Umlauts
  1635.  
  1636. -2.4----E-G------------------------------------------------------------------
  1637.  
  1638.   T_SQUISH.ASM -   Enhanced to support Umlauts (function squish())
  1639.  
  1640. -2.3----E-G------------------------------------------------------------------
  1641.  
  1642.   T_UPPER.ASM  -   UPPER() enhanced to support Umlauts
  1643.  
  1644. -2.3-----NG--------not to be used in fututre releases------------------------
  1645.  
  1646.   UISLOWER.PRG -   Modules containing German-language versions of islower(),
  1647.   UISUPPER.PRG     isupper(), upper(), lower(), and capfirst(). These
  1648.   UUPPER.PRG       have been built in to be compatible to older versions of
  1649.   ULOWER.PRG       FCO, because the "regular" functions now support Umlauts
  1650.   UCAPFIRST.PRG    as well (and even faster), so this stuff is no longer
  1651.                    needed.
  1652.  
  1653. -2.3------GM-----------------------------------------------------------------
  1654.  
  1655.   V_CDOW.ASM   -   CDOW() returns German day names
  1656.  
  1657. -2.3------GM-----------------------------------------------------------------
  1658.  
  1659.   V_CMONTH.ASM -   CMONTH() returns German month names
  1660.  
  1661. -2.4---B---------------------------------------------------------------------
  1662.  
  1663.   V_ITOD.ASM   -   Changed order of parameters in itod, i.e. day-month-year,
  1664.                    according to the documentation, and to the header file.
  1665.  
  1666. -2.4-------M-----------------------------------------------------------------
  1667.  
  1668.   W_DBF.ASM    -   Modified code of dbf(), and a_dbf() to really return an
  1669.                    empty string instead of generating a run-time error when
  1670.                    the functions are called without an open database.
  1671.  
  1672.                    It seems, as if it was already SOPHCO's intension to make
  1673.                    the functions behave like this, but it did not work be-
  1674.                    cause the functions call _$alias_header which never re-
  1675.                    turns with the CY flag set to indicate an error, but
  1676.                    calls the error handler instead.
  1677.  
  1678.                    To make things work, I replaced calls to _$alias_header
  1679.                    by calls to a local routine.
  1680.  
  1681. -2.4-----N-------------------------------------------------------------------
  1682.  
  1683.   W_FLDCNT.ASM -   Added code for function a_fldcnt()
  1684.  
  1685.                    function uint a_fldcnt prototype
  1686.                      parameters alias AliasName
  1687.  
  1688. -2.4-----N-------------------------------------------------------------------
  1689.  
  1690.   W_KRS.ASM    -   New module containing the functions
  1691.                    
  1692.                    _$set_fco, and _$is_fco
  1693.  
  1694.                    _$set_fco will be called from the setup module in FCO.LIB,
  1695.                    and it will set the static variable __$is_fco to TRUE.
  1696.  
  1697.                    _$is_fco returns the status of __$is_fco, and may be used
  1698.                    by 3rd party libraries to determine if they are linked with
  1699.                    FCO.LIB.
  1700.  
  1701.                    The specific reason to include this function was to make the
  1702.                    Jeff Davis Library compatible to FCO.LIB which uses far
  1703.                    addresses for some screen-I/O functions.
  1704.  
  1705.                    ATTENTION: never call _$set_fco in your programs because
  1706.                    this may mess up things.
  1707.  
  1708. -2.3-------M-----------------------------------------------------------------
  1709.  
  1710.   W_LOCK.ASM   -   Built in an assembler switch 'light' to build a non-LAN
  1711.                    version of FCO/FORCE
  1712.  
  1713. -2.4---B---------------------------------------------------------------------
  1714.  
  1715.   W_LOCK.ASM   -   Fixed several bugs in the locking, and unlocking routines
  1716.                    to allow real Clipper-compatibility, and to make the func-
  1717.                    tions work properly, e.g. in the original code, after doing
  1718.                    an flock(), the file could never be unlocked again.
  1719.  
  1720.                    In addition even when a file was locked, a run-time error
  1721.                    was issued when somebody tried to REPLACE something in a
  1722.                    record, telling the frustrated user that there would be an
  1723.                    rlock required.
  1724.  
  1725.                    Changed _$hlock to really lock the header only if a
  1726.                    file is opened in shared mode.
  1727.  
  1728. -2.4---B---------------------------------------------------------------------
  1729.  
  1730.   W_LOCK.ASM   -   Fixed another bug which never showed up before the previous
  1731.                    bug-fix.
  1732.  
  1733.                    The original code did not change contents in a record after
  1734.                    REPLACE ... WITH, but the bug did never show up because
  1735.                    before that, the above mentioned run-time error was issued.
  1736.  
  1737. -2.3----E--------------------------------------------------------------------
  1738.  
  1739.   X_ISCURS.ASM -   This module contains an undocumented funktion is_cursor(),
  1740.                    added its prototype to IO.HDR
  1741.  
  1742. -2.4---B---------------------------------------------------------------------
  1743.  
  1744.   Y_DELAY.ASM  -   Fixed a bug in biasing the right value.
  1745.  
  1746. -2.4-------M-----------------------------------------------------------------
  1747.  
  1748.   Y_PRN_RC.ASM -   Removed hard-coded checks for maximum print sizes to allow
  1749.                    any format the programmer wants - it is now the program-
  1750.                    mer's responsibility not to print out of bounds.
  1751.  
  1752. -2.4-----N-------------------------------------------------------------------
  1753.  
  1754.   Z_BLINK.ASM  -   New function which allows switching the video adapter
  1755.                    between display modes blink, or highlighted background
  1756.                    colors.
  1757.  
  1758.                    function logical SetBlink prototype
  1759.                      parameters value logical NewMode
  1760.  
  1761.                    Return value: .T. if blink mode was on before calling the
  1762.                                  function, else .F.
  1763.  
  1764. -2.4-----N-------------------------------------------------------------------
  1765.  
  1766.   Z_BOX.ASM    -   New function to draw a box similar to Clipper's BOX
  1767.                    command.
  1768.  
  1769.                    procedure box prototype
  1770.                      parameters value int     upper_row, ;
  1771.                                 value int     upper_col, ;
  1772.                                 value int     lower_row, ;
  1773.                                 value int     lower_col, ;
  1774.                                 const char(9) border_fill_chars, ;
  1775.                                 value uint    fill_attr
  1776.  
  1777.                    Border_fill_chars contains the eight border characters
  1778.                    plus an (optinal) ninth character to fill the box.
  1779.                    If this character is missing, the box will not be filled,
  1780.                    and the old contents remains unchanged.
  1781.  
  1782.                    Fill_attr defines the attribute of the fill characters,
  1783.                    __color_std will be used for the border attribute.
  1784.  
  1785. -2.4-----N-------------------------------------------------------------------
  1786.  
  1787.   Z_DBCR.PRG   -   New module containing
  1788.  
  1789.                    procedure SetDbCrString prototype
  1790.                      parameters const char(6) dbString, ;
  1791.                                 const char(6) crString
  1792.  
  1793.                    to modify the texts for " DB", and " CR" (see L_SAYNUM.ASM
  1794.                    above). This, for example, allows to display the German
  1795.                    " Soll", and " Haben", or a trailing " +", or " -", etc.
  1796.  
  1797. -2.4-----NG------------------------------------------------------------------
  1798.  
  1799.   Z_DDOW.PRG   -   New module containing function ddow() which is similar to
  1800.                    dow(), but it considers Monday to be the first day of a
  1801.                    week, and Sunday to be the last (7th) day of a week. This
  1802.                    is according to the German DIN standard.
  1803.  
  1804. -2.4-----N-------------------------------------------------------------------
  1805.  
  1806.   Z_NPRDY.ASM  -   new module to test the status of printer no n
  1807.  
  1808.                    function logical npready prototype
  1809.                      parameters value uint PrinterNumber
  1810.  
  1811. -2.4-----N-------------------------------------------------------------------
  1812.  
  1813.   Z_ORDER.ASM  -   New module containing the following functions:
  1814.  
  1815.                    function uint ind_order prototype
  1816.  
  1817.                    function uint a_ind_order prototype
  1818.                      parameters alias aliasname
  1819.  
  1820.                    The functions return the current index order which either
  1821.                    has been set by default (1), or bei SET ORDER TO.
  1822.  
  1823.                    The functions are equivalents to Clipper's order() func-
  1824.                    tions. Different names are necessary because ORDER is a
  1825.                    reserved keyword in FCO/FORCE.
  1826.  
  1827. -2.4-----N-------------------------------------------------------------------
  1828.  
  1829.   Z_PEEK.ASM   -   New module containing
  1830.  
  1831.                    function uint Peek prototype
  1832.                      parameters value uint segment, value uint offset
  1833.  
  1834.                    Returns contents of address segment:offset
  1835.  
  1836. -2.4-----N-------------------------------------------------------------------
  1837.  
  1838.   Z_POKE.ASM   -   New module containing
  1839.  
  1840.                    procedure Poke prototype
  1841.                      parameters value uint segment, ;
  1842.                                 value uint offset   ;
  1843.                                 value uint PokeVal
  1844.  
  1845.                    Writes PokeVal into address segment:offset
  1846.  
  1847. -2.4-----N-------------------------------------------------------------------
  1848.  
  1849.   Z_PORTIB.ASM -   New module containing
  1850.  
  1851.                    function uint PortInB prototype
  1852.                      parameters value uint PortAddress
  1853.  
  1854.                    Reads the specified port address, and returns
  1855.                    an 8 bit value
  1856.  
  1857. -2.4-----N-------------------------------------------------------------------
  1858.  
  1859.   Z_PORTIW.ASM -   New module containing
  1860.  
  1861.                    function uint PortInW prototype
  1862.                      parameters value uint PortAddress
  1863.  
  1864.                    Reads the specified port address, and returns
  1865.                    a 16 bit value
  1866.  
  1867. -2.4-----N-------------------------------------------------------------------
  1868.  
  1869.   Z_PORTOB.ASM -   New module containing
  1870.  
  1871.                    procedure PortOutB prototype
  1872.                      parameters value uint PortAddress, ;
  1873.                                 value uint PortData
  1874.  
  1875.                    Writes an 8 bit value to the specified port address.
  1876.  
  1877. -2.4-----N-------------------------------------------------------------------
  1878.  
  1879.   Z_PORTOW.ASM -   New module containing
  1880.  
  1881.                    procedure PortOutW prototype
  1882.                      parameters value uint PortAddress, ;
  1883.                                 value uint PortData
  1884.  
  1885.                    Writes a 16 bit value to the specified port address.
  1886.  
  1887. -2.4-----N-------------------------------------------------------------------
  1888.  
  1889.   Z_PRSTAT.ASM -   new module to return status of printer no n
  1890.  
  1891.                    function uint prstatus prototype
  1892.                      parameters value uint PrinterNumber
  1893.  
  1894.                    return values:
  1895.  
  1896.                    0 - no error
  1897.                    1 - out of paper
  1898.                    2 - general error
  1899.                    3 - unselect
  1900.                    4 - busy
  1901.  
  1902. -2.4-----N-------------------------------------------------------------------
  1903.  
  1904.   Z_SCRSEG.ASM -   New module containing
  1905.  
  1906.                    function uint ScrSeg prototype
  1907.  
  1908.                    Returns the segment address of the current screen
  1909.                    memory
  1910.  
  1911. -2.4-----N-------------------------------------------------------------------
  1912.  
  1913.   Z_SETCLR.PRG -   New module containing
  1914.  
  1915.                    procedure SetColor prototype
  1916.                      parameters value uint std, ;
  1917.                                 value uint enhcd, ;
  1918.                                 value uint score
  1919.  
  1920.                    to define the color attributes, including the color of
  1921.                    the scoreboard indicators.
  1922.  
  1923. -2.4-----N-------------------------------------------------------------------
  1924.  
  1925.   Z_SETNF.ASM  -   New module containing
  1926.  
  1927.                    procedure SetNumFormat prototype
  1928.                      parameters value logical WhatFormat
  1929.  
  1930.                    to set __$trans_flag to .T. (European format), or to
  1931.                    .F. (American format).
  1932.  
  1933. -2.4-----N-------------------------------------------------------------------
  1934.  
  1935.   Z_SWPCOL.ASM -   New module containing public procedure _swap_colors to
  1936.                    exchange normal and enhanced color attributes.
  1937.  
  1938. -2.4-----N-------------------------------------------------------------------
  1939.  
  1940.   Z_TRANS.ASM  -   New module containing the routines _$transform_str,
  1941.                    _$transform_char, and _$set_trans, and the variable
  1942.                    __$trans_flag.
  1943.  
  1944.                    This all is needed to allow numerical outputs using the
  1945.                    European numeric format, like "123.456,78".
  1946.  
  1947. -2.4-----N-------------------------------------------------------------------
  1948.  
  1949.   Z_VIDTYP.ASM -   New function which returns the type of the current video
  1950.                    adapter.
  1951.  
  1952.                    function VideoType prototype
  1953.  
  1954.                    Return values: 0 - MGA, Hercules
  1955.                                   1 - CGA
  1956.                                   2 - EGA/VGA
  1957.  
  1958. -2.4-----N-------------------------------------------------------------------
  1959.  
  1960.   Z_SAVDIR.ASM -   New module containing the routines save_data_dir, and
  1961.                    rest_data_dir to do direct screen read/writes for the
  1962.                    above routines.
  1963.  
  1964. -2.4-----N-------------------------------------------------------------------
  1965.  
  1966.   Z_SAVBIO.ASM -   New module containing the routines save_data_bio, and
  1967.                    rest_data_bio to do screen read/writes for the above
  1968.                    routines through BIOS.
  1969.  
  1970. -2.4-----N-------------------------------------------------------------------
  1971.  
  1972.   Z_SCREEN.ASM -   New module containing the following routines to read/write
  1973.                    screen data direct:
  1974.  
  1975.                    procedure PutScreenWord prototype
  1976.                      parameters const uint row, ;
  1977.                                 const uint col, ;
  1978.                                 const uint CharAttr
  1979.  
  1980.                    function  uint GetScreenWord prototype
  1981.                      parameters const uint row, ;
  1982.                                 const uint col
  1983.  
  1984.                    procedure PutScreenChar prototype
  1985.                      parameters const uint row, ;
  1986.                                 const uint col, ;
  1987.                                 const uint Char
  1988.  
  1989.                    function  uint GetScreenChar prototype
  1990.                      parameters const uint row, ;
  1991.                                 const uint col
  1992.  
  1993.                    procedure PutScreenAttr prototype
  1994.                      parameters const uint row, ;
  1995.                                 const uint col, ;
  1996.                                 const uint Attr
  1997.  
  1998.                    function  uint GetScreenAttr prototype
  1999.                      parameters const uint row, ;
  2000.                                 const uint col
  2001.  
  2002. -2.4-----N-------------------------------------------------------------------
  2003.  
  2004.   Z_SCRNDR.ASM -   New module containing a function to check for the
  2005.                    current screen driver mode:
  2006.  
  2007.                    function uint ScrnDriver prototype
  2008.  
  2009.                    Return values:
  2010.  
  2011.                    0 - &DIRECT
  2012.                    1 - &BIOS
  2013.                    2 - &DOS
  2014.  
  2015.                    (see #defines in SCREEN.HDR)
  2016.  
  2017. -2.4-----N-------------------------------------------------------------------
  2018.  
  2019.   Z_SPEED.ASM  -   New module containing a function to determine the rela-
  2020.                    tive CPU speed:
  2021.  
  2022.                    function uint CpuSpeed prototype
  2023.  
  2024.                    The return value is relative to the CPU speed, i.e. the
  2025.                    higher the speed, the higher the value.
  2026.  
  2027.                    This function is helpful for programming delay loops which
  2028.                    produce similar delays on machines with different CPU
  2029.                    speeds.
  2030.  
  2031.                    This function determines the speed based upon CPU cycles
  2032.                    within one timer tick.
  2033.  
  2034. -2.4-----N-------------------------------------------------------------------
  2035.  
  2036.   Z_TICKS.ASM  -   New module containing a procedure to delay the program
  2037.                    execution:
  2038.  
  2039.                    procedure Ticks prototype
  2040.                      parameters value uint n
  2041.  
  2042.                    This procedure causes a delay of n timer ticks (18.2 ms).
  2043.  
  2044. -----------------------------------------------------------------------------
  2045.