{
  "disks": {
    "1": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "ACKERMAN BAS",
              "size": 1026,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "BALL     BAS",
              "size": 3792,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "GETDIR   ASM",
              "size": 1996,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "GETDIR   BIN",
              "size": 31,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "GETDRIVE ASM",
              "size": 1044,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "GETDRIVE BIN",
              "size": 17,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "GETDTA   ASM",
              "size": 1591,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "GETDTA   BIN",
              "size": 22,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "HANOI    BAS",
              "size": 7033,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "HILBD    BAS",
              "size": 5211,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC       BAS",
              "size": 3992,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC0      INC",
              "size": 4079,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC1      INC",
              "size": 5304,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC2      INC",
              "size": 3135,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC3      INC",
              "size": 7554,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC4      INC",
              "size": 8848,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC5      INC",
              "size": 10846,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC6      INC",
              "size": 19276,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC7      INC",
              "size": 1990,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MC8      INC",
              "size": 3805,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MCDEMO",
              "size": 23236,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "MUSIC    BAS",
              "size": 10857,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "NC       HLP",
              "size": 5326,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "NONAME   BAS",
              "size": 43,
              "date": "1980-01-04",
              "time": "8:40"
            },
            {
              "name": "NONAME   EXE",
              "size": 32,
              "date": "1988-04-20",
              "time": "9:30"
            },
            {
              "name": "QUIKSORT BAS",
              "size": 29466,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "README",
              "size": 15995,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "README   COM",
              "size": 4066,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "RECQUICK BAS",
              "size": 28493,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "REGNAMES INC",
              "size": 1050,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "SETDTA   ASM",
              "size": 2617,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "SETDTA   BIN",
              "size": 51,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "SIEVE    BAS",
              "size": 1227,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "TB       EXE",
              "size": 204312,
              "date": "1980-01-01",
              "time": "0:03"
            },
            {
              "name": "TBCOFING TB",
              "size": 886,
              "date": "1991-03-13",
              "time": "22:06"
            },
            {
              "name": "TBCONFIG TB",
              "size": 886,
              "date": "1988-04-18",
              "time": "19:18"
            },
            {
              "name": "TBHELP   TBH",
              "size": 41029,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "TBINST   COM",
              "size": 39976,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "WHEREIS  BAS",
              "size": 7594,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "WHEREIS  INC",
              "size": 21761,
              "date": "1987-04-02",
              "time": "1:00"
            },
            {
              "name": "WY3      BAS",
              "size": 1575,
              "date": "1980-01-01",
              "time": "2:02"
            },
            {
              "name": "WY3      EXE",
              "size": 37427,
              "date": "1980-01-01",
              "time": "2:02"
            },
            {
              "name": "WY4      BAS",
              "size": 1108,
              "date": "1980-01-01",
              "time": "0:32"
            }
          ]
        }
      ]
    }
  },
  "desc_file": "README",
  "desc_text": "\r\n\r\n                 WELCOME TO TURBO BASIC\r\n                 哪哪哪哪哪哪哪哪哪哪哪\r\n\r\n    This README file contains information that will be useful\r\n    and/or of interest to you. Please read it in its entirety,\r\n    referring to it when you encounter problems in the manual.\r\n\r\n    TABLE OF CONTENTS\r\n    哪哪哪哪哪哪哪哪�\r\n\r\n    1. How to get Help\r\n    2. Graphics support for the new IBM Personal System computers\r\n    3. Corrections/Additions to the Manual\r\n    4. Important tips\r\n    5. Files on the disk\r\n\r\n\r\n    1. HOW TO GET HELP\r\n    哪哪哪哪哪哪哪哪哪\r\n\r\n    If you have any problems, please read this file and the\r\n    Owner's Handbook first. If you still have a question and need\r\n    assistance, help is available from the following sources:\r\n\r\n       1. Type GO BORLAND on the CompuServe bulletin board system.\r\n       2. Check with your local software dealer or users' group.\r\n       3. Write to us at the following address:\r\n\r\n         Borland International\r\n         Turbo Basic Technical Support\r\n         4585 Scotts Valley Dr.\r\n         Scotts Valley, CA  95066\r\n\r\n       4. If you have an urgent problem that cannot wait and you\r\n       have sent in the license agreement from the front of\r\n       your manual, then call the Borland Technical Support\r\n       department. Please have the following information ready\r\n       before calling:\r\n\r\n       a) Product name and serial number on your original\r\n          distribution disk.\r\n\r\n       b) Product version number. The version number for Turbo\r\n          Basic is displayed when you first load the program\r\n          and before you press any keys.\r\n\r\n       c) Computer brand, model, and the brands and model\r\n          numbers of any additional hardware.\r\n\r\n       d) Operating system and version number. (The version\r\n          number can be determined by typing VER at the DOS\r\n          prompt.)\r\n\r\n       e) Contents of your AUTOEXEC.BAT file.\r\n\r\n       f) Contents of your CONFIG.SYS file.\r\n\r\n\r\n\r\n    2. NEW IBM GRAPHICS MODE SUPPORT\r\n    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪\r\n\r\n    Turbo Basic supports the new enhanced graphics modes\r\n    available on the new IBM Personal System computers.\r\n\r\n    Use the SCREEN statement to access the new modes.  The \r\n    following table describes the new modes the SCREEN\r\n    statement takes:\r\n\r\n\r\n       SCREEN   MODE\r\n       哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪�\r\n       11   640 X 480  black and white\r\n       12   640 X 480  16 Color\r\n\r\n\r\n    3. CORRECTIONS/ADDITIONS TO THE MANUAL\r\n    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪\r\n\r\n    The following lists the corrections and additions to the\r\n    Turbo Basic manual. They are sequential by page number so you\r\n    can easily update your manual while you read through them.\r\n\r\n    Page 38 - The G (for global) option in the editor's Find\r\n    command does NOT stop at the position of each occurrence of\r\n    your search string. It searches through the entire file from\r\n    beginning to end, and positions the cursor on the LAST\r\n    occurrence of the search string.\r\n\r\n    Page 38 - The N (for Next) option of the Find command is not\r\n    documented here. The N option finds the Next occurrence of a\r\n    search string, starting at the current cursor position in the\r\n    file you are editing. Keep in mind that the G option will\r\n    override the N option if you use both at the same time. Also,\r\n    note that the N option is different than the n of the Find\r\n    command. The lower case n represents an integer that can be\r\n    used in the option list of the Find command.\r\n\r\n    Page 39 - The n (for number) option of the Find and replace\r\n    command. Unlike the n option in the Find command, the n\r\n    option for Find and replace causes the next n cases of the\r\n    search string to be replaced by the replace string. If the G\r\n    option is used, the search starts at the top of the file;\r\n    otherwise it starts at the current cursor position.\r\n\r\n    Page 49 - A word of warning is necessary concerning the 8087\r\n    coprocessor and Turbo Basic. In some cases, a program will\r\n    read that your machine has an 8087 chip when it really\r\n    doesn't; for example, if you've set the switch on for 8087\r\n    but have yet to install the chip. This will either cause\r\n    Turbo Basic to hang when running a program or to generate\r\n    compile-time errors when compiling programs with numbers.\r\n    Environment variables solve this problem nicely. Add the\r\n    following to your AUTOEXEC.BAT file:\r\n\r\n       SET 87=NO\r\n\r\n    Take a look at Appendix G, \"A DOS Primer,\" for more\r\n    information about environment variables and AUTOEXEC.BAT\r\n    files.\r\n\r\n    Page 52 - The sentence: \"Note that 8 notes equal 1 byte;\"\r\n    should be: \"Note that 1 note equals 8 bytes;\"\r\n\r\n    Page 55 - In the discussion of Save Options/Window/Setup, it\r\n    says that you may save the options to TB.EXE. Actually, a\r\n    file extension of .TB is always added to the end of the\r\n    configuration file's name.\r\n\r\n    Page 57 - Under the Run-time error option in the Debug menu,\r\n    note that you'll receive a \"Run-time error not found\" error\r\n    message if you give an invalid program counter.\r\n\r\n    Page  76 - Arrays are  considered dynamic in the following\r\n    cases:\r\n\r\n       - If declared after the $DYNAMIC metastatement is used, \r\n         as in\r\n        10 $DYNAMIC\r\n        20 DIM A(10)\r\n       - If declared as dynamic explicitly, as in\r\n        10 DIM DYNAMIC A(10)\r\n       - If a variable is used in the DIM statement, as in\r\n        10 X% = 10\r\n        20 DIM A(X%)\r\n       - If the array is included in a COMMON statement, as in\r\n        10 DIM A(10)\r\n        20 COMMON A(1)\r\n       - If there are two or more DIM statements for the same\r\n         array identifier, as in\r\n        10 DIM A(10)\r\n        20 A(0) = 10\r\n        30 DIM A(10)\r\n       - If an array is declared local to a procedure or function, \r\n         as in\r\n        DEF FNTest%\r\n          LOCAL A()\r\n          DIM A(10)\r\n          FNTest% = A(0)\r\n        END DEF\r\n\r\n\r\n    Page 107 - The example program on this page  uses a variable\r\n    called name$. This variable will cause a syntax error because\r\n    you cannot use a reserved  word as a  variable. Replace the\r\n    variable name$ with FileName$.\r\n\r\n    Page 125 - $INLINE's example program contains two extra\r\n    commas that will cause a compile error. Remove the commas\r\n    at the end of the first two $INLINE statements.\r\n\r\n    Page 144 - The description of the CEIL function should read:\r\n\r\n       The CEIL function converts a numeric variable or\r\n       expression to an integer by returning the smallest integer\r\n       that is...\r\n\r\n    Page 155 - Make the following modification to the example program for\r\n    the CLOSE statement:\r\n\r\n     Change:\r\n       OPEN \"CLOSEFIL.ONE\" AS #1\r\n       OPEN \"CLOSEFIL.TWO\" AS #2\r\n\r\n     To:\r\n       OPEN \"CLOSEFIL.ONE\" FOR OUTPUT AS #1\r\n       OPEN \"CLOSEFIL.TWO\" FOR OUTPUT AS #2\r\n\r\n    Page 162 - Remove the OPEN statement in COM(n)'s example\r\n    program; it is extraneous and will cause a compile error.\r\n\r\n    Page 174 - Remove the following line from the example program:\r\n\r\n       Your results:\r\n\r\n    Page 180 - The example statement in the middle of the page:\r\n\r\n       = m + 16\r\n\r\n     should be:\r\n\r\n       n = m + 16\r\n\r\n    Page 191 - Make the following change to the example program\r\n    for DRAW:\r\n\r\n     Change:\r\n\r\n       DRAW \"M= \" +VARPTR$(I%) + \",40\"\r\n\r\n     To:\r\n\r\n       DRAW \"BM=\" + VARPTR$(I%) + \",40\"\r\n\r\n    Page 239 - The first sentence in the Remarks section should be:\r\n\r\n       n is the trapped key, and integer expression from 1-25,\r\n       30, or 31, according to the following:\r\n\r\n    The table following the first paragraph should be modified to\r\n    look exactly like the one on page 274.\r\n\r\n    Page 242 - The syntax description for LBOUND is:\r\n\r\n       LBOUND(array(dimension))\r\n\r\n     In the example program, the statement:\r\n\r\n       PRINT \"Lower Array Bound of Dimension 2 is \";LBOUND(Array%,2)\r\n\r\n     Should be changed to:\r\n\r\n       PRINT \"Lower Array Bound of Dimension 2 is \";LBOUND(Array%(2))\r\n\r\n\r\n    Page 274 - The first sentence in the Remarks section should be:\r\n\r\n       n is the trapped key, and integer expression from 1-25,\r\n       30, or 31, according to the following:\r\n\r\n    Page 286 - The syntax for the OPEN COM statement is:\r\n\r\n       OPEN \"COMn:[baud] [,parity] [,data] [,stop] [options]\"\r\n\r\n    Page 287 - The example program for OPEN COM should be changed\r\n    to the following:\r\n\r\n       ' allocate a string array to store input\r\n       DIM ComPortInput$(1)\r\n\r\n       $COM1 1024    ' set up a 1K input buffer\r\n\r\n       OPEN \"COM1:300,n,8,1,DS,RS,CS,CD\" AS #1 LEN = 1\r\n\r\n       PRINT \"Press any key to terminate the program...\"\r\n       WHILE NOT INSTAT ' while a key hasn't been pressed\r\n        ' if there is any input available\r\n         IF LOF(1) > 0 THEN\r\n            ' read any info available in the com port buffer\r\n            ComPortInput$(0) = INPUT$(LOF(1), #1)\r\n            ' display input\r\n            PRINT \"COM Port input: \";ComPortInput$(0)\r\n         END IF\r\n       WEND\r\n\r\n       END   ' end of program\r\n\r\n    Page 301 - The example statement in the middle of the page is\r\n    missing a colon.\r\n\r\n     Change:\r\n\r\n       a$ = \"C D E\" PLAY \"E D E X\" + VARPTR$(a$)\r\n\r\n     To:\r\n\r\n       a$ = \"C D E\" : PLAY \"E D E X\" + VARPTR$(a$)\r\n\r\n    Page 319 - The DATA statements for the example program are\r\n    missing. Use the following:\r\n\r\n       DATA W. Perry,    78, 65, 35, 79, 86, 93, 79, 85, 99, 96\r\n       DATA P. Watson,   98, 94, 70, 88, 99, 100, 75, 96, 100, 95\r\n       DATA M. Ciccone, 65, 59, 75, 82, 56, 79, 82, 76, 69, 89\r\n\r\n    Page 352 - Remove the comment from the first statement of the\r\n    program:\r\n\r\n      Change:\r\n\r\n       ' top$ = STRING$(40,61)\r\n\r\n      To:\r\n\r\n       top$ = STRING$(40,61)\r\n\r\n    Page 365 - The syntax for UBOUND is:\r\n\r\n       UBOUND(array(dimension))\r\n\r\n     In the example program, the statement:\r\n\r\n       FOR index% = LBOUND(Array%) TO UBOUND(Array%)\r\n\r\n     Should be changed to:\r\n\r\n       FOR index% = LBOUND(Array%(1)) TO UBOUND(Array%(1))\r\n\r\n    Page 382 - In the DATA statement for the example program add\r\n    an ending double quote to the word \"Paris\".\r\n\r\n    Page 401 - The original assembly language source code for the\r\n    INLINE procedure on this page is:\r\n\r\n      program segment   ; begin program segment\r\n      assume cs:program\r\n\r\n      push BP           ; save the Base Pointer\r\n      mov  BP,SP        ; move stack pointer to BP\r\n      les  DI,[BP+6]    ; offset address of parameter\r\n      mov  AX, 64h      ; constant to fill\r\n      mov  CX, C8h      ; length of fill\r\n      cld               ; clear the direction flag\r\n      rep               ; fill the words\r\n      stosw\r\n      pop  BP           ; restore Base Pointer\r\n\r\n      program ends      ; end program segment\r\n      ends              ; end compilation\r\n\r\n\r\n    Note that there is no RET at the end of the routine. You may\r\n    run this code through The MicroSoft Assembler to generate the\r\n    code listed in the manual.\r\n\r\n    Page 416 - Error 242, String memory corrupt, should be\r\n    String/array memory corrupt.\r\n\r\n\r\n    4. IMPORTANT TIPS\r\n    哪哪哪哪哪哪哪哪�\r\n\r\n    CTRL-BREAK - If you want to be able to use CTRL-BREAK when\r\n    running a program, toggle ON the Keyboard break option in the\r\n    Options pulldown menu before compiling/running your program.\r\n    Note that CTRL-BREAK will only interrupt your program if the\r\n    Keyboard break option is turned ON and your program is doing\r\n    screen I/O or you have turned the Trace option ON in the\r\n    Debug menu. This is important to note because many public\r\n    domain programs written for BASICA do not provide any way\r\n    for the user to terminate execution other than pressing\r\n    CTRL-BREAK.\r\n\r\n    PRINT USING - When using the PRINT USING statement to display\r\n    real numbers (single and double precision), you may find that\r\n    the format strings for your BASICA programs do not format the\r\n    numeric values correctly. One symptom may be that your\r\n    numbers are displayed with a preceding % character followed\r\n    by the number. This is because Turbo Basic provides 80 bits\r\n    of numeric precision compared to BASICA's 24 bits. In other\r\n    words, you have proportionately more-significant digits for\r\n    all of your numbers. And consequently, you may have to make\r\n    more room for your numbers when you output them.\r\n\r\n    We have also found that some versions of GW BASIC\r\n    automatically remove the last character of a number when\r\n    there isn't enough room in the format string to display a\r\n    negative sign. BASICA does not do this, nor does Turbo Basic.\r\n    If you need to display a negative sign, you must allow for it\r\n    in the PRINT USING statement's format string.\r\n\r\n\r\n    5. FILES ON THE DISK\r\n    哪哪哪哪哪哪哪哪哪哪\r\n\r\n    Disk 1\r\n    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪\r\n    README   COM - The program to use to peruse this README file\r\n\r\n    TB       EXE - The Turbo Basic compiler\r\n\r\n    TBINST   COM - The Turbo Basic installation program\r\n\r\n    TBHELP   TBH - The help file for Turbo Basic\r\n\r\n    HANOI    BAS - An example Turbo Basic program that plays the\r\n                   famous Towers of Hanoi game.\r\n\r\n    README       - This file!\r\n\r\n\r\n\r\n    Disk 2\r\n    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪\r\n\r\n    REGNAMES INC - The named constants representing the registers\r\n                   used by the CALL INTERRUPT statement\r\n\r\n    ACKERMAN BAS - An example program demonstrating the Ackerman\r\n                   algorithm (illustrating recursion)\r\n\r\n    BALL     BAS - An example graphics program\r\n\r\n    HANOI    BAS - An example Turbo Basic program that plays the\r\n                   famous Towers of Hanoi game.\r\n\r\n    HILBD    BAS - An example program demonstrating the precision\r\n                   of the 8087 math package\r\n\r\n    MUSIC    BAS - An example sound program\r\n\r\n    QUIKSORT BAS - An example program implementing the Quick Sort\r\n                   algorithm\r\n\r\n    RECQUICK BAS - An example program implementing the Quick Sort\r\n                   algorithm using recursion\r\n\r\n    SIEVE    BAS - An example program implementing the Sieve\r\n                   algorithm\r\n\r\n    WHEREIS  BAS - The Main file for the WHEREIS program\r\n    WHEREIS  INC - The Include file for the WHEREIS program\r\n    GETDIR   ASM - The Assembly language source for Turbo Basic\r\n                   Inline procedure; gets the current directory\r\n    GETDRIVE ASM - The Assembly language source for Turbo Basic\r\n                   Inline procedure; gets the current drive\r\n    GETDTA   ASM - The Assembly language source for Turbo Basic\r\n                   Inline procedure; gets the current DTA\r\n    SETDTA   ASM - The Assembly language source for Turbo Basic\r\n                   Inline procedure; sets the DTA to a new location\r\n    GETDIR   BIN - The Assembled version of GETDIR.ASM; ready to be\r\n                   used by WHEREIS.BAS\r\n    GETDRIVE BIN - The Assembled version of GETDRIVE.ASM; ready to\r\n                   be used by WHEREIS.BAS\r\n    GETDTA   BIN - The Assembled version of GETDTA.ASM; ready to\r\n                   be used by WHEREIS.BAS\r\n    SETDTA   BIN - The Assembled version of SETDTA.ASM; ready to\r\n                   be used by WHEREIS.BAS\r\n\r\n    MC       BAS - The Main file for the MicroCalc example program\r\n    MC0      INC - An Include file for MicroCalc\r\n    MC1      INC - An Include file for MicroCalc\r\n    MC2      INC - An Include file for MicroCalc\r\n    MC3      INC - An Include file for MicroCalc\r\n    MC4      INC - An Include file for MicroCalc\r\n    MC5      INC - An Include file for MicroCalc\r\n    MC6      INC - An Include file for MicroCalc\r\n    MC7      INC - An Include file for MicroCalc\r\n    MC8      INC - An Include file for MicroCalc\r\n    MC       HLP - The help file for MicroCalc\r\n    MCDEMO       - The Demonstration work sheet for MicroCalc"
}