{
  "disks": {
    "1": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "README",
              "size": 15201,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "OVERCL   NG",
              "size": 87545,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "-------- ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "RESIDENT OBJ",
              "size": 807,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "OVERCL   LIB",
              "size": 38175,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "-------  ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "EXTINKEY PRG",
              "size": 359,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "INKEY    PRG",
              "size": 380,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "INKEY2   PRG",
              "size": 241,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "TEST     PRG",
              "size": 7706,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "------   ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "-----    ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "----     ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "---      ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "RTLINK",
              "dir": true,
              "date": "1994-01-15",
              "time": "13:07"
            },
            {
              "name": "UTIL",
              "dir": true,
              "date": "1994-01-15",
              "time": "13:08"
            },
            {
              "name": "OBJ",
              "dir": true,
              "date": "1994-01-15",
              "time": "13:08"
            }
          ]
        },
        {
          "path": "/RTLINK",
          "files": [
            {
              "name": "OVERCLRT LIB",
              "size": 38175,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "OVERCLVM LNK",
              "size": 14971,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "-------- ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "OBJ",
              "dir": true,
              "date": "1994-01-15",
              "time": "13:07"
            }
          ]
        },
        {
          "path": "/RTLINK/OBJ",
          "files": [
            {
              "name": "RESIDENT OBJ",
              "size": 855,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "OVERLAY  OBJ",
              "size": 17329,
              "date": "1991-04-22",
              "time": "3:50"
            }
          ]
        },
        {
          "path": "/UTIL",
          "files": [
            {
              "name": "TSRINT   COM",
              "size": 8734,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "TSRINT2  COM",
              "size": 8128,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "TSRMCB   COM",
              "size": 6078,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "-------- ---",
              "size": 20,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "TEXTMODE EXE",
              "size": 16460,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "INT0001",
              "size": 4352,
              "date": "1992-09-15",
              "time": "2:09"
            },
            {
              "name": "INT0002",
              "size": 4352,
              "date": "1992-09-15",
              "time": "2:09"
            },
            {
              "name": "MCB0001",
              "size": 830,
              "date": "1992-09-15",
              "time": "2:10"
            }
          ]
        },
        {
          "path": "/OBJ",
          "files": [
            {
              "name": "RESIDENT OBJ",
              "size": 807,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "OVERLAY  OBJ",
              "size": 17285,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "CD       OBJ",
              "size": 489,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "CURPATH  OBJ",
              "size": 513,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "DIREXIST OBJ",
              "size": 597,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "DOSVER   OBJ",
              "size": 314,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "ENVSIZE  OBJ",
              "size": 423,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "ERRLEVEL OBJ",
              "size": 336,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "ERRMAJOR OBJ",
              "size": 336,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "ERRMINOR OBJ",
              "size": 333,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "ERRWAIT  OBJ",
              "size": 439,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "EXTINKEY OBJ",
              "size": 339,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "EXTINUSE OBJ",
              "size": 425,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "EXTRAENV OBJ",
              "size": 428,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "GETID    OBJ",
              "size": 462,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "INKEY    OBJ",
              "size": 324,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "KEYBOARD OBJ",
              "size": 2728,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "LOADINTS OBJ",
              "size": 459,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "MD       OBJ",
              "size": 401,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "NEWENV   OBJ",
              "size": 814,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "RD       OBJ",
              "size": 401,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "RELOCATE OBJ",
              "size": 441,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "RESTDIR  OBJ",
              "size": 439,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "RESTINTS OBJ",
              "size": 441,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "SAVEINTS OBJ",
              "size": 585,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "SETID    OBJ",
              "size": 482,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "SKIPINTS OBJ",
              "size": 555,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "STUFF0   OBJ",
              "size": 437,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "TEMPEXT  OBJ",
              "size": 477,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "TEMPNAME OBJ",
              "size": 506,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "USEDOS2  OBJ",
              "size": 439,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "USEEXP   OBJ",
              "size": 437,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "USEEXT   OBJ",
              "size": 437,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "USEHIMEM OBJ",
              "size": 441,
              "date": "1991-04-22",
              "time": "3:50"
            },
            {
              "name": "VERSION  OBJ",
              "size": 321,
              "date": "1991-04-22",
              "time": "3:50"
            }
          ]
        }
      ]
    }
  },
  "desc_file": "README",
  "desc_text": "                               OverLay() 3.5\r\n\r\n\r\n          This README file contains additions and bug fix information\r\n          for OverLay() version 3.5.  Listed below is each major\r\n          version release (including 3.5) and it's improvements over\r\n          the previous major release.\r\n\r\n          This file contains printer page feeds to start a new page\r\n          at each major section.\r\n\r\n          If you are using Blinker, WarpLink, or RTLink, please note\r\n          that you MUST link RESIDENT.OBJ into the root.  Also, if\r\n          you are using RTLink/Plus and want to use virtual memory\r\n          overlays, you must use the auto-response file OVERCLVM.LNK\r\n          which uses a special version of the OverLay() library file\r\n          called OVERCLRT.LIB.\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Corrections to the manual:\r\n\r\n\r\n          On page 89 in the listing of OverLay() error codes, error 9\r\n          should be entitled, \"Error writing/reading from HIMEM\r\n          memory\" instead of \"Error locking HIMEM for\r\n          writing/reading\"\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 3.5 bug fixes and enhancements to version 3.4:\r\n\r\n\r\n          OverLay() now works with HIMEM.SYS memory under Windows\r\n          3.0's 386 enhanced mode.  OverLay() now uses an alternative\r\n          method of writing to HIMEM.SYS memory that is compatible\r\n          with Windows 3.0's 386 enhanced mode.\r\n\r\n          OverLay() now saves the entire interrupt table, not just\r\n          the first 63 interrupts.  This eliminates the need for the\r\n          Advanced Functions O_SaveInts() and O_LoadInts() which\r\n          were needed with a few software packages that changed\r\n          interrupts above the first 63.\r\n\r\n          When expanded handle tables are in use, it is best to make\r\n          sure that 15 or fewer files are open when the OverLay()\r\n          function is called.  OverLay() uses an alternative method\r\n          of moving expanded handle tables under DOS 3.3 or above if\r\n          15 or fewer files are open.  This will assure that your\r\n          program will work under OS/2's DOS compatibility box.  This\r\n          enhancement of the OverLay() function has removed the need\r\n          for the O_SetFiles() function.\r\n\r\n          The .OBJ files containing OverLay()'s library of functions\r\n          were renamed to match the name of the function they\r\n          contain.\r\n\r\n          Many of the \"default setting\" functions were modified to\r\n          return the current value when no parameter is passed to\r\n          them.  These modified functions include: O_EnvSize(),\r\n          O_ExtInUse(), O_ExtraEnv(), O_NewEnv(), O_RestDir(),\r\n          O_Stuff0(), O_TempExt(), O_TempName(), O_UseDOS2(),\r\n          O_UseExp(), O_UseExt(), O_UseHIMEM(), O_Relocate(),\r\n          O_RestInts().\r\n\r\n          The O_CD() function would return true if you specified the\r\n          root directory of a non-existent drive.  This has been\r\n          fixed.\r\n\r\n          The O_ErrWait() function was added to modify OverLay()'s\r\n          behavior when a critical error occurs.\r\n\r\n          The O_ExtINKEY() and O_INKEY() functions were modified to\r\n          return the \"enhanced\" keycode of the extra keys on an\r\n          \"enhanced keyboard\".\r\n\r\n          The O_GetTemp() function was modified to return the fully\r\n          qualified path of the temporary file.  O_GetTemp()'s file\r\n          numbering logic was also modified to allow a user to create\r\n          large numbers of temporary files in the same directory\r\n          faster.\r\n\r\n          The O_Keyboard() function has been greatly enhanced.  You\r\n          can now specify non-alphanumeric keys within curly\r\n          brackets.  You no longer have to specify the keycodes for\r\n          these keys.  This totally eliminates the need for the\r\n          O_INKEY() and O_ExtINKEY() functions.\r\n\r\n          The O_Keyboard() function was also enhanced to eliminate\r\n          the need to use the O_Stuff0(.f.) function with some\r\n          programs such as WordPerfect when an enhanced keyboard is\r\n          being used.\r\n\r\n          The O_NewEnv() function has been modifed to copy enviroment\r\n          strings passed to it into static \"locked\" memory.  This\r\n          function can now be used with Clipper 5.0.\r\n\r\n          The O_SetFiles() function is no longer needed and has been\r\n          removed from the library.\r\n\r\n          The O_SkipInts() function has been added as an Advanced\r\n          Function to make it easier to keep interrupt routines\r\n          active while shelled out with OverLay().  The function\r\n          eliminates the need for the Advanced Functions O_ResetInt()\r\n          and O_RestInts().\r\n\r\n          The O_TempName() function can now accept a name of less\r\n          than four characters.\r\n\r\n          The O_Version() function has been standardized so that the\r\n          first three characters will always represent the version\r\n          number in use.\r\n\r\n          The TSR utility TSRINT.COM was enhanced to mark changed\r\n          interrupts with an \"*\".\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 3.4 bug fixes and enhancements to version 3.3:\r\n\r\n\r\n          OverLay() can now be used with RTLink/Plus!  The entire\r\n          library can even be virtualized!  You must link in\r\n          OVERCLRT.LIB and you must use the supplied OVERCLVM.LNK\r\n          auto response file.\r\n\r\n          When using the O_GetID() function under DR-DOS, the\r\n          function would return the current directory instead of an\r\n          empty string to indicate there was no previous OverLay()\r\n          shell at the specified level.  This was due to an anomoly\r\n          in DR-DOS.  OverLay()'s O_GetID() function has been\r\n          enhanced to overcome this problem.  It is important to note\r\n          that the change to O_GetID() requires you to re-link all of\r\n          your applications that use the O_GetID() function.\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 3.3 bug fixes and enhancements to version 3.2:\r\n\r\n\r\n          Quite incredibly, a rather unsightly bug was discovered\r\n          during routine testing.  It appears that this bug existed\r\n          in the last several revisions of OverLay().\r\n\r\n          When OverLay() is called it checks to see how much memory\r\n          is already free and only frees up what it has to free up.\r\n          If no memory needs to be freed up to meet the requested\r\n          amount of free memory, then OverLay() does not free any up.\r\n          The bug occurred under those circumstances.  If the amount\r\n          of already free memory exceeded the request for free memory\r\n          and expanded memory was turned on, OverLay() would try to\r\n          allocate 0K of expanded memory and would be unsuccessful.\r\n          O_ErrMajor() would then return an error code of 8.\r\n\r\n          Since most program using OverLay() are huge and they use\r\n          OverLay() to run other huge programs, not many would have\r\n          encountered this problem.\r\n\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 3.2 bug fixes and enhancements to version 3.1:\r\n\r\n\r\n          The O_Keyboard() command has been enhanced.  You may now\r\n          use the number 1 by itself as a special character.  This\r\n          tells O_Keyboard() to wait for the user to hit a key before\r\n          continuing.  This has limited uses, but is useful when the\r\n          user must make a choice or enter a code.\r\n\r\n          The O_Keyboard() command did fool some programs that allow\r\n          the use of \"enhanced keyboards\".  These programs would\r\n          think a \"standard keyboard\" was installed instead.  This\r\n          caused the F11 and F12 keys to appear to be disabled.\r\n          OverLay() has now been enhanced to support the \"enhanced\r\n          keyboard\" BIOS calls.\r\n\r\n          Some TSRs (particularly some mainframe communications TSRs)\r\n          do not expect other programs to use expanded memory or if\r\n          other programs use expanded memory, the TSRs expect the\r\n          other programs to restore the expanded memory \"mapping\".\r\n          OverLay() has been enhanced to accomodate those TSRs.\r\n\r\n          The demo version of OverLay() contained a line of code that\r\n          caused problems with Blinker if the OVERCL.LIB file was\r\n          dynamically overlaid.  In particular, Blinker would cause\r\n          OverLay() to overwrite a random byte in memory.  This line\r\n          of code has now been modified to overcome this limitation\r\n          of Blinker.  The problem only occured with the demo version\r\n          of OverLay() and only with Blinker.\r\n\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 3.1 bug fixes and enhancements to version 3.0:\r\n\r\n\r\n          Two new functions were added.  O_DOSVer() returns the DOS\r\n          version number.  O_SetFiles() expands/contracts the DOS\r\n          file handle table and is used especially with OS/2's DOS\r\n          compatibility box.\r\n\r\n          If OverLay() encountered an error allocating expanded\r\n          memory or HIMEM.SYS memory, it would continue saving to\r\n          disk.  Yet, upon return it would report an error allocating\r\n          expanded or HIMEM.SYS memory.  This has been changed.  Now,\r\n          if an allocation error occurs, OverLay() returns\r\n          immediately and reports the error.\r\n\r\n          The .OBJ file's \"MODULE\" names were changed to match the\r\n          name of the function contained in the .OBJ.  This is useful\r\n          in connection with PLINK86 and RTLINK's SECTION MODULE\r\n          command.  Please see Appendix G and H below for more\r\n          information.\r\n\r\n          When linking with PLINK86, PLINK86 would sometimes report a\r\n          Warning 10 when OVERLAY.OBJ was put into a PLINK86 overlay.\r\n          This would happen when other functions from The OverLay()\r\n          Library were also used and their .OBJ files were not\r\n          individually linked in, but, rather, OVERCL.LIB was linked\r\n          in so that PLINK86 could find the functions.  This has now\r\n          been corrected.\r\n\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 3.0 bug fixes and enhancements to version 2.09:\r\n\r\n\r\n          When a critical error occurs, OverLay() now displays a\r\n          message on the screen describing the error number before\r\n          aborting to DOS.\r\n\r\n          The O_Keyboard() function has been expanded to allow you to\r\n          \"stuff\" up to 250 characters.\r\n\r\n          OverLay() has been improved to allow better use within a\r\n          overlay.  If you place the OVERLAY.OBJ file in an overlay,\r\n          you no longer have to set OverLay()'s user definable\r\n          options every time you call OverLay().\r\n\r\n          OverLay() can now be used with \"dynamic\" overlay managers\r\n          such as Blinker and WarpLink.  These \"dynamic\" linkers are\r\n          similiar to RTLink (that will be included in Clipper 5.0),\r\n          but they also allow the \"dynamic\" overlaying of C and\r\n          Assembler code, as well as Clipper code.  When used with\r\n          either product, OverLay() increases the .EXE size by less\r\n          than 1K!\r\n\r\n          OverLay() is now compatible with PC-MOS/386.\r\n\r\n          OverLay() now saves the first 63 interrupts instead of just\r\n          the first 40.  This makes it more compatible with other 3rd\r\n          party products such as Clipper Tools One.  With Clipper\r\n          Tools One you no longer need to use the DSETWINDOW()\r\n          function before calling OverLay().\r\n\r\n          OverLay() is now compatible with DOS version 2.0 and 2.10.\r\n          Because of a bug in DOS versions prior to 2.11, OverLay()\r\n          was only compatible with DOS version 2.11 and higher.  We\r\n          have now found a way around the DOS bug.\r\n\r\n          The O_DirExist() function was finally (truly) fixed to\r\n          detect the existence of drives only.  Thus, you can see if\r\n          drive E: exists by calling the function O_DirExist(\"E:\").\r\n\r\n          The expanded memory support has been enhanced.  Some\r\n          expanded memory managers were operating in an \"unexpected\"\r\n          way from the standpoint of OverLay() causing one of several\r\n          problems.  OverLay() now allows for this \"unexpected\"\r\n          behavior.\r\n\r\n          Support for expanded handle tables with DOS versions 3.3\r\n          and above was modified.  This corrects a problem with\r\n          certain versions of DOS 3.3 that caused an extra 64K to be\r\n          unavailable.\r\n\r\n          OverLay() was interfering with at least one program's\r\n          ability to return the current directory.  Extra safeguards\r\n          have been added to prevent this from happening again.\r\n\r\n\r\n          -----------------------------------------------------------\f\r\n\r\n\r\n          Version 2.09 bug fixes and enhancements to version 2.05:\r\n\r\n\r\n          The OverLay() function had faulty logic when restoring the\r\n          interrupts after returning from the called program.  This\r\n          could cause the computer to \"hang\" if the calling program\r\n          changed any interrupts before calling OverLay().  This has\r\n          been corrected.\r\n\r\n          The O_RestAll() function has been removed from the library.\r\n          OverLay() now restores all of the first 40 interrupts (now\r\n          the first 63 interrupts with version 3.0) that have been\r\n          changed.\r\n\r\n          The O_RestInts(.F.) function now prevents OverLay() from\r\n          restoring changed interrupts when OverLay() returns from\r\n          the called program, as well as, preventing OverLay() from\r\n          restoring changed interrupts when OverLay() is called.\r\n          Interrupts 0, 15, 16, 21, 23, 24 are special cases.  They\r\n          are almost always restored when OverLay() returns from the\r\n          called program.\r\n\r\n          The O_DirExist() function sometimes would give errorneous\r\n          results when checking for a drive letter only, i.e. the\r\n          call O_DirExist(\"F:\") could return .T. even if it did not\r\n          exist.\r\n\r\n          The OverLay() function was always restoring the cursor if\r\n          it was turned off.  This has been removed.\r\n\r\n          The O_GetTemp() function had a serious logic error that\r\n          caused a random location in memory to be overwritten.  This\r\n          could, of course, cause serious problems.\r\n\r\n          HIMEM.SYS driver use has now been turned OFF by default.\r\n          You must call the function O_UseHIMEM(.T.) to turn on\r\n          HIMEM.SYS usage.  Extended memory usage is still turned OFF\r\n          by default.  Expanded memory usage is still turned ON by\r\n          default.\r\n\r\n          OverLay() can now be placed within a PLINK86-type overlay.\r\n\r\n\r\n          -----------------------------------------------------------"
}