'===========================================================================
' Subject: DISK BASE TABLE EDITOR             Date: 11-14-97 (16:44)       
'  Author: Andrew S. Gibson                   Code: QB, QBasic, PDS        
'  Origin: zapf_dingbat@juno.com            Packet: DISK.ABC
'===========================================================================
' Disk Base Table editor is Qbasic, QuickBASIC compatible.
' All you need to do is just to load and run this, and read *everything* !!!
' Press <F8> for help, I wrote all of this. You can Email me if you have any
' questions/comments at  Zapf_DingBat@JUNO.COM
DEFINT A-Z
DECLARE SUB Center (Row!, TEXT$, Bold!)
DECLARE SUB DBT (MSDT!, DVFS!, MSUT!)
DECLARE SUB DBTCurrentSettings ()
DECLARE SUB Delay (Period!)
DECLARE SUB DFS ()
DECLARE SUB HELP ()
DECLARE SUB INTFACE ()
DECLARE SUB MST ()
DECLARE SUB INTROandCOMPINFO ()
DECLARE SUB SAVE ()
DECLARE SUB WaitForKey ()
DECLARE SUB WMS ()

DIM SHARED SEGMENT, OFFSET, MSDT!, DVFS!, MSUT!, DBTDefaults(3), TEXT.ADAPTER.MODE!, AlreadySet
DIM SHARED Sucess, Title$(0 TO 195)
CONST FALSE = 0, TRUE = NOT FALSE

RESTORE Greetings
FOR Scroller = 0 TO 195: READ Title$(Scroller): NEXT Scroller
INTROandCOMPINFO
INTFACE
END

Greetings:
DATA "                ÛßßßßßßßßßÛ  ÛßßßßßßÛ ÛßßßßßßßßßÛ ÛßßßßÛ  ÛßßßÛ"
DATA "                ßÛ  ÛßßßÛ ßÛ ßßÛ  Ûßß Û  ÛßßßßÛ Û ßÛ  Ûß Ûß Ûßß"
DATA "                 Û  Û   Û  Û   Û  Û   Û  Û    ßßß  Û  Û Ûß Ûß"
DATA "                 Û  Û   Û  Û   Û  Û   Û  ßßßßßßßÛ  Û  ßßß  ßßÛ"
DATA "                 Û  Û   Û  Û   Û  Û   ßßßßßßßÛ  Û  Û  ÛßßßÛ  Û"
DATA "                 Û  Û   Û  Û   Û  Û   ÛßÛ    Û  Û  Û  Û   Û  Û"
DATA "                Ûß  ßßßßß Ûß Ûßß  ßßÛ Û ßßßßßß  Û Ûß  ßÛ Ûß  ßÛ"
DATA "                ßßßßßßßßßßß  ßßßßßßßß ßßßßßßßßßßß ßßßßßß ßßßßßß"
DATA "Blank"
DATA "               ÛßßßßßßßßßÛ   ÛßßßßßßßßÛ  ÛßßßßßßßßßÛ ÛßßßßßßßßßÛ"
DATA "               ßÛ  ÛßßßÛ ßÛ  Û  ÛßßÛ  Û  Û  ÛßßßßÛ Û ßÛ  ÛßßßÛ Û"
DATA "                Û  Û   Û  Û  Û  Û  Û  Û  Û  Û    ßßß  Û  Û   ßßß"
DATA "                Û  ßßßßß  Û  Û  ßßßß  Û  Û  ßßßßßßßÛ  Û  ßßßÛ"
DATA "                Û  ÛßßßÛ  Û  Û  ÛßßÛ  Û  ßßßßßßßÛ  Û  Û  Ûßßß"
DATA "                Û  Û   Û  Û  Û  Û  Û  Û  ÛßÛ    Û  Û  Û  Û   ÛßÛ"
DATA "               Ûß  ßßßßß Ûß Ûß  ßÛÛß  ßÛ Û ßßßßßß  Û Ûß  ßßßßß Û"
DATA "               ßßßßßßßßßßß  ßßßßßßßßßßßß ßßßßßßßßßßß ßßßßßßßßßßß"
DATA "Blank"
DATA "        ÛßßßßßßßßßßÛ  ÛßßßßßßßßÛ  ÛßßßßßßßßßÛ  ÛßßßßÛ      ÛßßßßßßßßßÛ"
DATA "        Û ÛßÛ  ÛßÛ Û  Û  ÛßßÛ  Û  ßÛ  ÛßßßÛ ßÛ ßÛ  Ûß      ßÛ  ÛßßßÛ Û"
DATA "        ßßß Û  Û ßßß  Û  Û  Û  Û   Û  Û   Û  Û  Û  Û        Û  Û   ßßß"
DATA "            Û  Û      Û  ßßßß  Û   Û  ßßßßß  Û  Û  Û        Û  ßßßÛ"
DATA "            Û  Û      Û  ÛßßÛ  Û   Û  ÛßßßÛ  Û  Û  Û        Û  Ûßßß"
DATA "            Û  Û      Û  Û  Û  Û   Û  Û   Û  Û  Û  Û   ÛßÛ  Û  Û   ÛßÛ"
DATA "           Ûß  ßÛ    Ûß  ßÛÛß  ßÛ Ûß  ßßßßß Ûß Ûß  ßßßßß Û Ûß  ßßßßß Û"
DATA "           ßßßßßß    ßßßßßßßßßßßß ßßßßßßßßßßß  ßßßßßßßßßßß ßßßßßßßßßßß"
DATA "Blank"
DATA "    ÛßßßßßßßßßÛ ÛßßßßßßßßßÛ  ÛßßßßßßÛ ÛßßßßßßßßßßÛ ÛßßßßßßßßßÛ ÛßßßßßßßßßßÛ"
DATA "    ßÛ  ÛßßßÛ Û ßÛ  ÛßßßÛ ßÛ ßßÛ  Ûßß Û ÛßÛ  ÛßÛ Û Û  ÛßßßÛ  Û ßÛ  ÛßßßÛ  Û"
DATA "     Û  Û   ßßß  Û  Û   Û  Û   Û  Û   ßßß Û  Û ßßß Û  Û   Û  Û  Û  Û   Û  Û"
DATA "     Û  ßßßÛ     Û  Û   Û  Û   Û  Û       Û  Û     Û  Û   Û  Û  Û  ßßßßß  Û"
DATA "     Û  Ûßßß     Û  Û   Û  Û   Û  Û       Û  Û     Û  Û   Û  Û  Û  ÛÛ  Ûßßß"
DATA "     Û  Û   ÛßÛ  Û  Û   Û  Û   Û  Û       Û  Û     Û  Û   Û  Û  Û  ÛßÛ ßÛ"
DATA "    Ûß  ßßßßß Û Ûß  ßßßßß Ûß Ûßß  ßßÛ    Ûß  ßÛ    Û  ßßßßß  Û Ûß  ßÛßÛ ßßÛ"
DATA "    ßßßßßßßßßßß ßßßßßßßßßßß  ßßßßßßßß    ßßßßßß    ßßßßßßßßßßß ßßßßßß ßßßßß"
DATA "Blank"
DATA "                                               ÜÛÛÜ          ÜÛÛÜ     ÜÛÛÜ"
DATA "     Ò     Â                                 ÜÛÛÛÛÛ        ÜÛÛÛÛÛ   ÜÛÛÛÛÛ"
DATA "     º     ³                                 ßßÛÛÛÛ        ßßÛÛÛÛ   ßßÛÛÛÛ"
DATA "     Ó·   ÚÙ ÒÄÄ¿ ÒÄÄ¿  ÖÄ¿ ÄÒÄ ÖÄÄ¿ ÖÄÄ¿      ÛÛÛÛ          ÛÛÛÛ     ÛÛÛÛ"
DATA "      º   ³  ÇÄ   ÇÄÂÙ  ÓÄ¿  º  º  ³ º  ³     ÜÛÛÛÛÜ  ÜÛÛÜ  ÜÛÛÛÛÜ   ÜÛÛÛÛÜ"
DATA "      ÓÄÄÄÙ  ÐÄÄÙ Ð Á  ÓÄÄÙ ÄÐÄ ÓÄÄÙ Ð  Á    ßÛÛÛÛÛÛß ßÛÛß ßÛÛÛÛÛÛß ßÛÛÛÛÛÛß"
DATA "Blank"
DATA "Blank"
DATA "    ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ"
DATA "    ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ"
DATA "    ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ"
DATA "            ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ"
DATA "            ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ"
DATA "            ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ        ÛÛÛÛÛÛÛÛ"
DATA "Blank"
DATA "Blank"
DATA "  ßÜ    ßÜ ßÛßßÜ  Û   ÛßßÜßßÛ ÛßßÜßßÛ ÜßÛßßßß ßÛÜ   ßÜ       ßÛßßÜ  ÜßÜ   ßÜ"
DATA "   Û     Û  Û   Û  Û     Û       Û      Û      Û Û   Û        Û   Û   ßÜ Üß  Û"
DATA "   Û  Û  Û ßÛßÛß   Û     Û       Û     ÜÛÜÜ    Û  Û  Û       ßÛßßßÛ     Û"
DATA "   Û Û Û Û  Û  ßÜ  Û     Û       Û    ß Û      Û   Û Û        Û   Û     Û    Û"
DATA "  ÜÛß   Ûß ß    ß  ßÜ   ÜÛÜ     ÜÛÜ    ÜßÜÜÜÜ Üß   ßÜß       ß ßßß     ß"
DATA "Blank"
DATA "Blank"
DATA "     ÜÛÛÛÛÛÛÛÜ  ÜÛÛÜ   ÜÛÛÜ ÜÛÛÛÛÛÛÛÛÜ  ÜÛÛÛÛÛÛÛÛÜ  ÜÛÛÛÛÛÛÛÛÛÜ ÜÛÛÜ   ÜÛÛÜ"
DATA "    ÛÛÛÛßßßÛÛÛÛ ÛÛÛÛÛÜ ÛÛÛÛ ÛÛÛÛ   ßÛÛÛ ÛÛÛß   ßÛÛÛ ÛÛÛÛ    ßßß ÛÛÛÛ   ÛÛÛÛ"
DATA "    ÛÛÛÛÜÜÜÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ    ÛÛÛ ÛÛÛÜ   ÜÛÛÛ ÛÛÛÛÜÜÜÜÜ   ÛÛÛÛ   ÛÛÛÛ"
DATA "    ÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛßÛÛÛÛÛÛ ÛÛÛÛ    ÛÛÛ ÛÛÛÛÛÛÛÛÛß  ÛÛÛÛßßßßß   ÛÛÛÛÜÛÜÛÛÛÛ"
DATA "    ÛÛÛÛ   ÛÛÛÛ ÛÛÛÛ  ßÛÛÛÛ ÛÛÛÛÜÜÜÛÛÛß ÛÛÛÛ ßÛÛÛÛÜ ÛÛÛÛ    ÜÜÜ ÛÛÛÛÛÛÛÛÛÛÛ"
DATA "    ßÛÛß   ßÛÛß ßÛÛß   ßÛÛß ßÛÛÛÛÛÛÛß   ßÛÛß   ßÛÛß ßÛÛÛÛÛÛÛÛÛß  ßÛÛß ßÛÛß"
DATA "Blank"
DATA "        ÜÛÛÛÛÛÛÛÛÜ  ÜÛÜ  ÜÛÛÛÛÛÛÛÛÜ   ÜÛÛÛÛÛÛÛÜ   ÜÛÛÛÛÛÛÛÜ  ÜÛÛÜ   ÜÛÛÜ"
DATA "       ÛÛÛÛß   ßßß ÛÛÛÛÛ ÛÛÛÛ   ÛÛÛÛ ÛÛÛÛß ßÛÛÛÛ ÛÛÛÛßßßÛÛÛÛ ÛÛÛÛÛÜ ÛÛÛÛ"
DATA "       ÛÛÛÛ  ÜÜÜÜ  ÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛß  ßÛÛÛÛÛÜÜ    ÛÛÛ     ÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛ"
DATA "       ÛÛÛÛ  ßßÛÛÛ ÛÛÛÛÛ ÛÛÛÛßßßÛÛÛÜ    ßßÛÛÛÛÛÜ ÛÛÛ     ÛÛÛ ÛÛÛÛßÛÛÛÛÛÛ"
DATA "       ÛÛÛÛÛÜÜÜÛÛÛ ÛÛÛÛÛ ÛÛÛÛÜÜÜÛÛÛÛ ÛÛÛÛÜ ÜÛÛÛÛ ÛÛÛÛÜÜÜÛÛÛÛ ÛÛÛÛ  ßÛÛÛÛ"
DATA "        ßÛÛÛÛÛÛÛÛß  ßÛß  ßÛÛÛÛÛÛÛÛß   ßÛÛÛÛÛÛÛß   ßÛÛÛÛÛÛÛß  ßÛÛß   ßÛÛß"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "           ÛßßßßßßßßßßßßÛ   ÛßßßßßßßßÛ   ÛßßßßÛ   ÛßßßßÛ ÛßßßßÛÛßßßßÛ"
DATA "           Û  ÛßÛ  ÛßÛ  Û   Û  ÛßßÛ  Û   Û    ßÛ  ßÛ  Ûß ßÛ  ÛßßÛ  Ûß"
DATA "           Û  Û Û  Û Û  Û   Û  Û  Û  Û   Û  ÛÛ ßÛ  Û  Û   Û  Û  Û  Û"
DATA "           Û  Û Û  Û Û  Û   Û  ßßßß  Û   Û  ÛßÛ ßÛ Û  Û   Û  ßßßß  Û"
DATA "           Û  Û Û  Û Û  Û   Û  ÛßßÛ  Û   Û  Û ßÛ ßÛÛ  Û   ßßßÛ  Ûßßß"
DATA "           Û  Û ßßßß Û  Û   Û  Û  Û  Û   Û  Û  ßÛ ßÛ  Û      Û  Û"
DATA "          Ûß  ßÛ    Ûß  ßÛ Ûß  ßÛÛß  ßÛ Ûß  ßÛ  ßÛ    Û     Ûß  ßÛ"
DATA "          ßßßßßß    ßßßßßß ßßßßßßßßßßßß ßßßßßß   ßßßßßß     ßßßßßß"
DATA "Blank"
DATA "       ÖÄÄÄÄÄÄ"
DATA "ÿÿÿÿÿÿÿº"
DATA "       º   ÚÄ¿ ÒÄÄ¿ ÒÄÄ¿ ÒÄÄ¿ ÖÄÒÄ¿ ÄÒÄ ÖÄÄ¿ ÖÄÄ¿  ÖÄ¿     ÖÄÄ¿ ÖÄÄ¿ ÒÄÄ¿"
DATA "       º     ³ ÇÄÂÙ ÇÄ   ÇÄ     º    º  º  ³ º Ä¿  ÓÄ¿     ÇÄÄ´ º  ³ º  ³"
DATA "       ÓÄÄÄÄÄÙ Ð Á  ÐÄÄÙ ÐÄÄÙ   Ð   ÄÐÄ Ð  Á ÓÄÄÙ ÓÄÄÙ     Ð  Á Ð  Á ÐÄÄÙ"
DATA "Blank"
DATA "                ÜÜÜÜÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜÜÜÜÜ ÜÜÜ ÜÜÜ ÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜ"
DATA "                ÛÜÜ ÜÜÛ Û ÛÜÛ Û Û ÜÜÜ Û Û ßÛÛ Û Û Ûß ÜÛ Û ÜÜÜÜÛ"
DATA "                  Û Û   Û ÜÜÜ Û Û ÜÜÜ Û Û ÛÜß Û Û Ü ßÛÜ ÛÜÜÜÜ Û"
DATA "                  ÛÜÛ   ÛÜÛ ÛÜÛ ÛÜÛ ÛÜÛ ÛÜÛßÛÜÛ ÛÜÛÛÜÜÛ ÛÜÜÜÜÜÛ"
DATA "Blank"
DATA "             ÚÂÄÄ  ÚÂÄÄ¿    ÚÂÄÄ¿ Ú¿  ¿ ÚÄÂÂÄ¿    ÚÄÂÂÄ¿ ÚÂÄÄ¿   ::"
DATA "             Ã´ Â¿ Ã´  ³    Ã´  ³ Ã´  ³   Ã´        Ã´   Ã´  ³"
DATA "             ÀÁÄÁÙ ÀÁÄÄÙ    ÀÁÄÄÙ ÀÁÄÄÙ   ÀÙ        ÀÙ   ÀÁÄÄÙ   ::"
DATA "Blank"
DATA "ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß"
DATA "Blank"
DATA "                Steven Thomason, Sysop of Wonk's World and Staff"
DATA "                                (817)-439-1814"
DATA "Blank"
DATA "                       Papa Bear, Sysop of The Bear Cave"
DATA "                                (817)-861-2832"
DATA "Blank"
DATA "Other Groups & people at random:"
DATA " Depeche Mode, Erasure, Duran Duran, R. E. M., Future Crew, Microsoft Corp.,"
DATA "fellow & female coders, Rush Limbaugh, International Business Machines, All "
DATA "Acomplished Musicians, Creatives Labs Inc., All Demo Groups, Radio Shack,"
DATA "Apple Computer Corp., Tandy Corp. (why did they bail on the Coco 3 ?),"
DATA "Nintendo Corp., Talented Graphic artists, Ziff Davis Publishing, Peter Norton,"
DATA "Trident Micro Systems, Digital Corporation, Labtec Enterprises Inc., J. Haynie"
DATA "Sanyo Electric Company Limited., Sony Corparation, Kitty, Seeker, Christopher"
DATA "Weis, China, William Yu and so many others !!!!!!"
DATA "Blank"
DATA "Thank you so very much !"
DATA "Blank"
DATA "       Well I'm tired, so in a few lines I'll start this all over again."
DATA "Blank"
DATA "           Sorry the scroller is jerky, one day i'll get it right   :}"
DATA "           and it is also the embodiment of K. I. S. S. Keep It Simple"
DATA "           Stupid."
DATA "Blank"
DATA " ßßßßßß  ßß    ßß ßßßßßßß     ßßßßßß  ßß    ßß ßßßßßßß  ßß  ßß  ßß  ßß  ßß  ßß"
DATA " ßß   ßß  ßß  ßß  ßß          ßß   ßß  ßß  ßß  ßß       ßß  ßß  ßß  ßß  ßß  ßß"
DATA " ßßßßßß    ßßßß   ßßßßß       ßßßßßß    ßßßß   ßßßßß    ßß  ßß  ßß  ßß  ßß  ßß"
DATA " ßß   ßß    ßß    ßß      ÜÜ  ßß   ßß    ßß    ßß       ÜÜ  ÜÜ  ÜÜ  ÜÜ  ÜÜ  ÜÜ"
DATA " ßßßßßß     ßß    ßßßßßßß ßÛ  ßßßßßß     ßß    ßßßßßßß  ßß  ßß  ßß  ßß  ßß  ßß"
DATA "Blank"
DATA "ßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜ"
DATA "Blank"
DATA "     ÞßßßßßÝ ÞßßßßßßÝ ÞßßßßßÝ ÞßßßßßÝ ÞßßßßßÝ     ÞßÝ ÞßßßßßÝ ÞßßßßßÝ ÞßÝ"
DATA "     Þ ÜÜÜ Ý Þ ÜÜÜÜ Ý Þ ÜÜÜÜÝ Þ ÜÜÜÜÝ Þ ÜÜÜÜÝ    ÞßÜÝ Þ ÜÜÜÜÝ Þ ÜÜÜ Ý ÞÜßÝ"
DATA "     Þ ßßß Ý Þ ßßßß Ý Þ ßßÝ   Þ ßßßßÝ Þ ßßßßÝ   ÞßÜÝ  Þ ßßÝ   Þ ßßß Ý  ÞÜßÝ"
DATA "     Þ ÜÜÜÜÝ Þ ÜÜÜ ÜÝ Þ ÜÜÝ   ÞÜÜÜÜ Ý ÞÜÜÜÜ Ý   ÞÜßÝ  Þ ÜÜÝ   Þ ÜÜÜ Ý  ÞßÜÝ"
DATA "     Þ Ý     Þ Ý Þ ßÝ Þ ßßßßÝ Þßßßß Ý Þßßßß Ý    ÞÜßÝ Þ Ý     Þ ßßß Ý ÞßÜÝ"
DATA "     ÞÜÝ     ÞÜÝ ÞÜÜÝ ÞÜÜÜÜÜÝ ÞÜÜÜÜÜÝ ÞÜÜÜÜÜÝ     ÞÜÝ ÞÜÝ     ÞÜÜÜÜÜÝ ÞÜÝ"
DATA "Blank"
DATA "          ÞßßßßßÝ ÞßßßßßßÝ ÞßßßßßßÝ      ÞßÝ ÞßÝ ÞßßßßßÝ ÞßÝ    ÞßßßßßÝ"
DATA "          Þ ÜÜÜÜÝ Þ ÜÜÜÜ Ý Þ ÜÜÜÜ Ý      Þ Ý Þ Ý Þ ÜÜÜÜÝ Þ Ý    Þ ÜÜÜ Ý"
DATA "          Þ ßßÝ   Þ Ý  Þ Ý Þ ßßßß Ý      Þ ßßß Ý Þ ßßÝ   Þ Ý    Þ ßßß Ý"
DATA "          Þ ÜÜÝ   Þ Ý  Þ Ý Þ ÜÜÜ ÜÝ      Þ ÜÜÜ Ý Þ ÜÜÝ   Þ Ý    Þ ÜÜÜÜÝ"
DATA "          Þ Ý     Þ ßßßß Ý Þ Ý Þ ßÝ      Þ Ý Þ Ý Þ ßßßßÝ Þ ßßßÝ Þ Ý"
DATA "          ÞÜÝ     ÞÜÜÜÜÜÜÝ ÞÜÝ ÞÜÜÝ      ÞÜÝ ÞÜÝ ÞÜÜÜÜÜÝ ÞÜÜÜÜÝ ÞÜÝ"
DATA "Blank"
DATA "      ÛÛÛÛÛÛÜ ÛÛÛÛÛÛÜ ÜÛÛÛÛÛÛ ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ     ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ ÛÛ   ÛÛ"
DATA "      ÛÛÜÜÜÛÛ ÛÛ   ÛÛ ÛÛÜÜÜÜ  ÛÛÜÜÜÜ  ÛÛÜÜÜÜ      ÛÛÜÜÜÛÛ ÛÛ   ÛÛ ÛÛÜ ÜÛÛ"
DATA "      ÛÛßßßß  ÛÛÛÛÛÛ  ÛÛßßßß   ßßßßÛÛ  ßßßßÛÛ     ÛÛßßßÛÛ ÛÛ   ÛÛ  ßÛÛÛß"
DATA "      ÛÛ      ÛÛ  ßÛÛ ßÛÛÛÛÛÛ ßÛÛÛÛÛß ßÛÛÛÛÛß     ÛÛ   ÛÛ ÛÛ   ÛÛ   ÞÛÝ"
DATA "Blank"
DATA "                   ÛÛ  ÜÛÛ ÜÛÛÛÛÛÛ ÛÛ   ÛÛ    ÛÛÛÛÛÛÛ ÜÛÛÛÛÛÜ"
DATA "                   ÛÛÜÛÛß  ÛÛÜÜÜÜ  ÛÛÜ ÜÛÛ      ÞÛÝ   ÛÛ   ÛÛ"
DATA "                   ÛÛßÛÛÜ  ÛÛßßßß   ßÛÛÛß       ÞÛÝ   ÛÛ   ÛÛ"
DATA "                   ÛÛ  ßÛÛ ßÛÛÛÛÛÛ   ÞÛÝ        ÞÛÝ   ßÛÛÛÛÛß"
DATA "Blank"
DATA "         ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ ÜÛÛÛÛÛÜ ÛÛÛÛÛÛÛ ÞÛÛÝ ÜÛÛÛÛÛÜ ÛÛ   ÛÛ ÜÛÛÛÛÛÛ"
DATA "         ÛÛ      ÛÛ   ÛÛ ÛÛ   ÛÛ   ÞÛÝ    ÛÛ  ÛÛ   ÛÛ ÛÛ   ÛÛ ÛÛÜÜÜÜ"
DATA "         ÛÛ      ÛÛ   ÛÛ ÛÛ   ÛÛ   ÞÛÝ    ÛÛ  ÛÛ   ÛÛ ÛÛ   ÛÛ ÛÛßßßß"
DATA "         ßÛÛÛÛÛß ßÛÛÛÛÛß ÛÛ   ÛÛ   ÞÛÝ   ÞÛÛÝ ÛÛ   ÛÛ ßÛÛÛÛÛß ßÛÛÛÛÛÛ ÛÛ"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"
DATA "Blank"

Handle:
  DEF SEG : CLOSE
      SELECT CASE ERR
        CASE 5
        Center 18, "Error Number :" + STR$(ERR) + "  Cannot perform internal function request", 1: SLEEP 3: END
        CASE 7
        Center 18, "Error Number :" + STR$(ERR) + "  Malloc Error: Out of memory", 1: SLEEP 3: END
        CASE 14
        Center 18, "Error Number :" + STR$(ERR) + "  Stralloc Error: Out of string space", 1: SLEEP 3: END
        CASE 51
        Center 18, "Error Number :" + STR$(ERR) + "  Program Error: INTERNAL ERROR", 1: SLEEP 3: END
        CASE 52
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: Bad File Name or number", 1
        CASE 57
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  System Interaction Error: Device I/O error", 1
        CASE 58
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: File already exists", 1
        CASE 61
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: Disk FULL", 1
        CASE 64
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: Bad file name", 1
        CASE 67
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Program Error: Too many open files", 1
        CASE 68
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Program Error: Device UNAVAILABLE", 1
        CASE 71
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: Disk not Ready", 1
        CASE 72
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: Disk-Media error", 1
        CASE 75
        Sucess = FALSE
        Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: Path/File access error", 1
        CASE 53
            CLOSE
            Sucess = FALSE
            Center 18, "Error Number :" + STR$(ERR) + "  Disk Error: File not found", 1
   CASE ELSE
   Sucess = FALSE
   Center 18, "Error Number :" + STR$(ERR) + "  One or more errors have occurred.", 1
 END SELECT
 Center 19, "Press Ctrl, Alt or Shift to continue.", 1: SLEEP
 FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
RESUME NEXT

SUB Center (Row!, TEXT$, Bold!)
    IF Bold! = 0 THEN COLOR 7, 0 ELSE COLOR 15, 0
    LOCATE Row!, 41 - LEN(TEXT$) / 2, 0
    PRINT TEXT$;
    COLOR 7, 0
END SUB

SUB DBT (MSDT!, DVFS!, MSUT!)
' Disk Base Table set
DEF SEG = SEGMENT
POKE OFFSET + 2, MSDT! ' Wait time until Motor turned off
POKE OFFSET + 8, DVFS! ' Data in Formatted Sector
POKE OFFSET + 10, MSUT! ' Motor spin-up Time
DEF SEG
END SUB

SUB DBTCurrentSettings
DEF SEG = 0
OFFSET = PEEK(120 + 0) + 256 * PEEK(120 + 1)
SEGMENT = PEEK(120 + 2) + 256 * PEEK(120 + 3)
IF SEGMENT <= &HF000 THEN PRINT "The ROM disk base table is in use. Cannot continue.": SLEEP 2: END
DEF SEG = SEGMENT
DBTDefaults(1) = PEEK(OFFSET + 2)  ' Wait time until Motor turned off
DBTDefaults(2) = PEEK(OFFSET + 8)  ' Data in Formatted Sector
DBTDefaults(3) = PEEK(OFFSET + 10) ' Motor spin-up Time
DEF SEG
MSDT! = DBTDefaults(1): DVFS! = DBTDefaults(2): MSUT! = DBTDefaults(3)
END SUB

SUB Delay (Period!)
   Begin! = TIMER
   DO UNTIL (TIMER - Begin! > Period!) OR (TIMER - Begin! < 0)
   LOOP
END SUB

SUB DFS
' Data in Formatted Sector
LOCATE 16, 1: PRINT "Ú"; : Center 16, STRING$(78, 196), 0: LOCATE 16, 80: PRINT "¿";
LOCATE 17, 1: PRINT "³"; : Center 17, STRING$(78, 32), 0: LOCATE 17, 80: PRINT "³";
LOCATE 18, 1: PRINT "³"; : Center 18, STRING$(78, 32), 0: LOCATE 18, 80: PRINT "³";
LOCATE 19, 1: PRINT "³"; : Center 19, STRING$(78, 32), 0: LOCATE 19, 80: PRINT "³";
LOCATE 20, 1: PRINT "³"; : Center 20, STRING$(78, 32), 0: LOCATE 20, 80: PRINT "³";
LOCATE 21, 1: PRINT "À"; : Center 21, STRING$(78, 196), 0: LOCATE 21, 80: PRINT "Ù";
Center 17, "Use the left or right arrow keys to change the data in the formatted sectors;", 1
Center 18, "The data is an ASCII byte from 0 to 255. Press F1 to see the ASCII byte.", 1
Center 19, "Press Enter to set, Esc to exit.", 0
LOCATE 20, 4: PRINT USING "Data in formatted sectors ---------------------->  ###"; DVFS!: LOCATE 20, 65: PRINT "Hex: "; HEX$(DVFS!);
IF AlreadySet = FALSE THEN DataInFormatedSector = DBTDefaults(2) ELSE DataInFormatedSector = DVFS!
DO
        C$ = INKEY$
        IF C$ = CHR$(0) + CHR$(59) THEN GOSUB ShowASCIIByte
        IF C$ = CHR$(0) + "M" THEN GOSUB ASCII.UpOne
        IF C$ = CHR$(0) + "K" THEN GOSUB ASCII.DownOne
        IF C$ = CHR$(27) THEN
           FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
           Center 18, "Data in formatted sector option not set OK.", 1
           SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
           EXIT SUB
        END IF
LOOP WHILE C$ <> CHR$(13)
FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
LOCATE 18, 41 - LEN("Data to be placed in formatted sector(s) is ASCII number ") / 2: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DataInFormatedSector
DVFS! = DataInFormatedSector
SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
LOCATE 11, 12: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * MSUT! / 100)
LOCATE 12, 12: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DVFS!
LOCATE 13, 12: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * MSDT! / 100)
AlreadySet = TRUE
EXIT SUB

ShowASCIIByte:
Center 17, "Ú" + STRING$(76, 196) + "¿", 0
Center 18, "³" + STRING$(76, 32) + "³", 0
Center 19, "³" + STRING$(76, 32) + "³", 0
Center 20, "À" + STRING$(76, 196) + "Ù", 0
Center 18, "This is the ASCII data byte (character): ", 0
DEF SEG = TEXT.ADAPTER.MODE!: POKE 2840, DataInFormatedSector: DEF SEG
Center 19, "Press any key to continue ...", 1
WaitForKey
Center 20, "À" + STRING$(76, 196) + "Ù", 0: Center 20, STRING$(76, 196), 0
Center 19, "³" + STRING$(76, 32) + "³", 0: Center 19, STRING$(76, 32), 0
Center 18, "³" + STRING$(76, 32) + "³", 0: Center 18, STRING$(76, 32), 0
Center 17, "Ú" + STRING$(76, 196) + "¿", 0: Center 17, STRING$(76, 196), 0
LOCATE 16, 1: PRINT "Ú"; : Center 16, STRING$(78, 196), 0: LOCATE 16, 80: PRINT "¿";
LOCATE 17, 1: PRINT "³"; : Center 17, STRING$(78, 32), 0: LOCATE 17, 80: PRINT "³";
LOCATE 18, 1: PRINT "³"; : Center 18, STRING$(78, 32), 0: LOCATE 18, 80: PRINT "³";
LOCATE 19, 1: PRINT "³"; : Center 19, STRING$(78, 32), 0: LOCATE 19, 80: PRINT "³";
LOCATE 20, 1: PRINT "³"; : Center 20, STRING$(78, 32), 0: LOCATE 20, 80: PRINT "³";
LOCATE 21, 1: PRINT "À"; : Center 21, STRING$(78, 196), 0: LOCATE 21, 80: PRINT "Ù";
Center 17, "Use the left or right arrow keys to change the data in the formatted sectors;", 1
Center 18, "The data is an ASCII byte from 0 to 255. Press F1 to see the ASCII byte.", 1
Center 19, "Press Enter to set, Esc to exit.", 0
LOCATE 20, 4: PRINT USING "Data in formatted sectors ---------------------->  ###"; DataInFormatedSector: LOCATE 20, 65: PRINT "Hex: "; HEX$(DataInFormatedSector);
RETURN

ASCII.UpOne:
DataInFormatedSector = DataInFormatedSector + 1
IF DataInFormatedSector >= 256 THEN DataInFormatedSector = 0
LOCATE 20, 4: PRINT "Data in formatted sectors ---------------------->             ": LOCATE 20, 65: PRINT STRING$(10, 32);
LOCATE 20, 4: PRINT USING "Data in formatted sectors ---------------------->  ###"; DataInFormatedSector: LOCATE 20, 65: PRINT "Hex: "; HEX$(DataInFormatedSector);
RETURN

ASCII.DownOne:
DataInFormatedSector = DataInFormatedSector - 1
IF DataInFormatedSector <= -1 THEN DataInFormatedSector = 255
LOCATE 20, 4: PRINT "Data in formatted sectors ---------------------->             ": LOCATE 20, 65: PRINT STRING$(10, 32);
LOCATE 20, 4: PRINT USING "Data in formatted sectors ---------------------->  ### "; DataInFormatedSector: LOCATE 20, 65: PRINT "Hex: "; HEX$(DataInFormatedSector);
RETURN
END SUB

SUB HELP
CLS
Center 1, "Help for The Disk Base Table Editor", 1
Center 2, STRING$(80, 196), 0
PRINT
PRINT "Pressing 1 or F1 will save the changes to ram and these changes will stay active"
PRINT "until you change them or another program does (after you exit).": PRINT
PRINT "Pressing 2 or F2 will allow you to change the length of time that the floppy"
PRINT "drive's motor will `spin-up' to full speed. You can use this to save the floppy"
PRINT "drive motor if it's is old. Using a value of 0.00 may cause immediate or"
PRINT "intermitting activation of the motor, not really a great idea for archaic"
PRINT "hardware.": PRINT
PRINT "Pressing 3 or F3 will allow you to change the byte that format writes to"
PRINT "freshly formatted clusters when tests their validity. Default should be 246.": PRINT
PRINT "Pressing 4 or F4 will allow you to change the length of time that the floppy"
PRINT "drive's motor will `spin-down' to turn off. You can use this to keep the floppy"
PRINT "drive motor active if your doing something where you would want the motor to"
PRINT "stay on. Using a value of 0.00 may cause the immediate cessation of the motor"
PRINT "activity or the motor will stay on for a really long time, not really a great"
PRINT "idea for archaic hardware.": PRINT
PRINT "Pressing 5 or F5 will just quit the Disk Base Table Editor.": PRINT
PRINT "Pressing F7 will restore the original disk base table settings."
Center 25, "Press any key to continue", 1
WaitForKey
CLS
Center 1, "Help for The Disk Base Table Editor", 1
Center 2, STRING$(80, 196), 0
PRINT
PRINT "Pressing F8 will show you this help <gee>.": PRINT
PRINT "Pressing F9 will save the settings to disk for future reference in a file named"
PRINT "DBT_SET.TXT   DBT_SET.TXT will be written anywhere & will be overwritten if"
PRINT "DBT_SET.TXT already exists.": PRINT
PRINT "Pressing F10 will quit and ABANDON any changes you made!": PRINT
Center 10, "Disclaimer", 1
Center 11, STRING$(80, 196), 0
PRINT "I the programmer make no claims or warranty to this program's fitness for a"
PRINT "particular purpose, nor shall I be responsible for any damage that may arise"
PRINT "from the use of DBTED.BAS   Said program may not be compatible with your"
PRINT "computer as claimed (while every effort was so made).": PRINT
Center 17, "Rights & Costs", 1
Center 18, STRING$(80, 196), 0
PRINT "You may use this program for free but may not disassemble, edit, reverse"
PRINT "engineer DBTED.BAS  Doing so may cause it not to work. However, you may"
PRINT "distribute DBTED.BAS in any archive format or with any other computer"
PRINT "programs. This program is completely free, it costs you nothing at all"
PRINT "except your evaluation time."
Center 24, "I believe this will be the only documentation that you shall require.", 0
Center 25, "Press any key to continue", 1
WaitForKey
CLS

'Menu restore
Center 1, "Disk Base Table Editor", 1
Center 2, STRING$(80, 196), 0
Center 3, "Press the appropriate number for your selection or function key.", 0
Center 5, "1) Save current selection to RAM ONLY !!" + SPACE$(8), 0
Center 6, "2) Set motor spin-up time" + SPACE$(23), 0
Center 7, "3) Change the value stored in a formatted sector", 0
Center 8, "4) Set motor spin-down time" + SPACE$(21), 0
Center 9, "5) Exit Disk Base Table Editor." + SPACE$(17), 0
LOCATE 11, 12: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * MSUT! / 100)
LOCATE 12, 12: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DVFS!
LOCATE 13, 12: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * MSDT! / 100)
Center 25, "F7 = RESTORE DEFAULTS  F8 = HELP  F9 = SAVE SETTINGS TO DISK  F10 = ABANDON", 0

END SUB

SUB INTFACE
' Menu Interface
CLS
Center 1, "Disk Base Table Editor", 1
Center 2, STRING$(80, 196), 0
Center 3, "Press the appropriate number for your selection or function key.", 0
Center 5, "1) Save current selection to RAM ONLY !!" + SPACE$(8), 0
Center 6, "2) Set motor spin-up time" + SPACE$(23), 0
Center 7, "3) Change the value stored in a formatted sector", 0
Center 8, "4) Set motor spin-down time" + SPACE$(21), 0
Center 9, "5) Exit Disk Base Table Editor." + SPACE$(17), 0
LOCATE 11, 12: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * DBTDefaults(3) / 100)
LOCATE 12, 12: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DBTDefaults(2)
LOCATE 13, 12: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * DBTDefaults(1) / 100)
Center 25, "F7 = RESTORE DEFAULTS  F8 = HELP  F9 = SAVE SETTINGS TO DISK  F10 = ABANDON", 0
DO
        X$ = INKEY$
        IF X$ = "1" OR X$ = CHR$(0) + CHR$(58) THEN
          DBT MSDT!, DVFS!, MSUT! ' Disk Base Table set
          FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
          Center 18, "Manually configured values are now active.", 1
          SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
        END IF
        IF X$ = "2" OR X$ = CHR$(0) + CHR$(60) THEN MST ' Motor spin-up Time
        IF X$ = "3" OR X$ = CHR$(0) + CHR$(61) THEN DFS ' Data in Formatted Sector
        IF X$ = "4" OR X$ = CHR$(0) + CHR$(62) THEN WMS ' Wait time until Motor turned off
        IF X$ = "5" OR X$ = CHR$(0) + CHR$(63) THEN
           SCREEN 0, 0, 0 ' Quit
           CLS
           FOR AA = 1 TO 15
              LOCATE 1, 1, 0: COLOR 0, 7: PRINT "Your exiting the Disk Base Table Editor."
              Delay .15
              LOCATE 1, 1, 0: COLOR 7, 0: PRINT "Your exiting the Disk Base Table Editor."
              Delay .15
           NEXT AA: COLOR 7, 0: LOCATE 1, 1, 0: PRINT STRING$(80, 32); : LOCATE 1, 1, 1
           EXIT DO
        END IF
        IF X$ = CHR$(0) + CHR$(65) THEN
           Center 16, "Ú" + STRING$(78, 196) + "¿", 0  ' Restore defaults
           Center 17, "³" + STRING$(78, 32) + "³", 0
           Center 18, "À" + STRING$(78, 196) + "Ù", 0
           Center 17, "The disk base table defaults have been restored to their former state!", 1
           MSDT! = DBTDefaults(1): DVFS! = DBTDefaults(2): MSUT! = DBTDefaults(3)
           DBT MSDT!, DVFS!, MSUT!
           SLEEP 2: LOCATE 16, 1: PRINT STRING$(80, 32); : LOCATE 17, 1: PRINT STRING$(80, 32); : LOCATE 18, 1: PRINT STRING$(80, 32);
           LOCATE 11, 12: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * MSUT! / 100)
           LOCATE 12, 12: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DVFS!
           LOCATE 13, 12: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * MSDT! / 100)
        END IF
        IF X$ = CHR$(0) + CHR$(66) THEN HELP ' Get user some help !
        IF X$ = CHR$(0) + CHR$(67) THEN SAVE 'Save to DISK
        IF X$ = CHR$(0) + CHR$(68) THEN
           SCREEN 0, 0, 0 ' Quit and abandon changes
           CLS
           FOR AA = 1 TO 15
              LOCATE 1, 1, 0: COLOR 0, 7: PRINT "Your exiting the Disk Base Table Editor. I'm abandoning changes OK !!!!"
              Delay .15
              LOCATE 1, 1, 0: COLOR 7, 0: PRINT "Your exiting the Disk Base Table Editor. I'm abandoning changes OK !!!!"
              Delay .15
           NEXT AA: COLOR 7, 0: LOCATE 1, 1, 0: PRINT STRING$(80, 32); : LOCATE 1, 1, 1
           MSDT! = DBTDefaults(1): DVFS! = DBTDefaults(2): MSUT! = DBTDefaults(3)
           DBT MSDT!, DVFS!, MSUT!
           EXIT DO
        END IF
LOOP
END SUB

SUB INTROandCOMPINFO
        DBTCurrentSettings
        VIEW PRINT 2 TO 25: CLS : LOCATE 25, 1, 0: Linenum = 0
DO
Delay .24
IF Title$(Linenum) = "Blank" THEN
   PRINT
ELSE
   LOCATE 25, 1: PRINT Title$(Linenum)
END IF
IF Linenum = 195 THEN Linenum = -1
Linenum = Linenum + 1
LOOP WHILE INKEY$ = ""

FOR zxzz = 0 TO 21: PRINT : NEXT: VIEW PRINT 1 TO 25: FOR zxzz = 0 TO 21: PRINT : NEXT
' determine Color or Monochrome segment
DEF SEG = 0: IF (PEEK(1040) AND 48) = 48 THEN TEXT.ADAPTER.MODE! = 45056! ELSE TEXT.ADAPTER.MODE! = 47104!: DEF SEG
END SUB

SUB MST
' Motor spin-up Time
LOCATE 16, 1: PRINT "Ú"; : Center 16, STRING$(78, 196), 0: LOCATE 16, 80: PRINT "¿";
LOCATE 17, 1: PRINT "³"; : Center 17, STRING$(78, 32), 0: LOCATE 17, 80: PRINT "³";
LOCATE 18, 1: PRINT "³"; : Center 18, STRING$(78, 32), 0: LOCATE 18, 80: PRINT "³";
LOCATE 19, 1: PRINT "³"; : Center 19, STRING$(78, 32), 0: LOCATE 19, 80: PRINT "³";
LOCATE 20, 1: PRINT "³"; : Center 20, STRING$(78, 32), 0: LOCATE 20, 80: PRINT "³";
LOCATE 21, 1: PRINT "À"; : Center 21, STRING$(78, 196), 0: LOCATE 21, 80: PRINT "Ù";
Center 17, "Use the left or right arrow keys to change the spin-up time; the time", 1
Center 18, "in seconds is a calculated estimate. Press Enter to set, Esc to exit.", 1
Center 19, "0.00 seconds, fastest reaction time <--> 14.17 seconds, slow reaction time", 0
LOCATE 20, 4: PRINT USING "Time in seconds ---------------------->  ##.##"; ABS(100 / 18 * MSUT! / 100)
MotorSpinupTime = DBTDefaults(3)
DO
        C$ = INKEY$
        IF C$ = CHR$(0) + "M" THEN GOSUB More.TimeAdjust
        IF C$ = CHR$(0) + "K" THEN GOSUB Less.TimeAdjust
        IF C$ = CHR$(27) THEN
           FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
           Center 18, "Motor spin-up time option not set OK.", 1
           SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
           EXIT SUB
        END IF
LOOP WHILE C$ <> CHR$(13)
FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
LOCATE 18, 41 - LEN("Motor is now set to reach full speed in       seconds") / 2: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * MotorSpinupTime / 100)
MSUT! = MotorSpinupTime
SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
LOCATE 11, 12: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * MSUT! / 100)
LOCATE 12, 12: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DVFS!
LOCATE 13, 12: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * MSDT! / 100)
EXIT SUB

More.TimeAdjust:
MotorSpinupTime = MotorSpinupTime + 1
IF MotorSpinupTime >= 256 THEN MotorSpinupTime = 0
LOCATE 20, 4: PRINT "Time in seconds ---------------------->             "
LOCATE 20, 4: PRINT USING "Time in seconds ---------------------->  ##.##"; ABS(100 / 18 * MotorSpinupTime / 100)
RETURN

Less.TimeAdjust:
MotorSpinupTime = MotorSpinupTime - 1
IF MotorSpinupTime <= -1 THEN MotorSpinupTime = 255
LOCATE 20, 4: PRINT "Time in seconds ---------------------->             "
LOCATE 20, 4: PRINT USING "Time in seconds ---------------------->  ##.##"; ABS(100 / 18 * MotorSpinupTime / 100)
RETURN
END SUB

SUB SAVE
Y$ = RTRIM$(LTRIM$(STR$(DVFS!)))
Sucess = TRUE ' Assume Best case
ON ERROR GOTO Handle
OPEN "DBT_SET.TXT" FOR OUTPUT AS #1
PRINT #1, USING "Motor is now set to reach full speed in ##.## seconds."; ABS(100 / 18 * MSUT! / 100)
PRINT #1, "Data to be placed in formatted sector(s) is ASCII number "; Y$
PRINT #1, USING "Motor is now set to turn off after ##.## seconds."; ABS(100 / 18 * MSDT! / 100)
CLOSE #1
      IF Sucess = TRUE THEN
          FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
          Center 18, "DBT_SET.TXT saved sucessfully.", 1
          SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
      ELSEIF Sucess = FALSE THEN
          FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
          Center 18, "DBT_SET.TXT *CANNOT* be saved sucessfully.", 1
          SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
      END IF
END SUB

SUB WaitForKey
DO: ZXZ$ = INKEY$: LOOP WHILE ZXZ$ = ""
END SUB

SUB WMS
' Wait time until Motor turned off
LOCATE 16, 1: PRINT "Ú"; : Center 16, STRING$(78, 196), 0: LOCATE 16, 80: PRINT "¿";
LOCATE 17, 1: PRINT "³"; : Center 17, STRING$(78, 32), 0: LOCATE 17, 80: PRINT "³";
LOCATE 18, 1: PRINT "³"; : Center 18, STRING$(78, 32), 0: LOCATE 18, 80: PRINT "³";
LOCATE 19, 1: PRINT "³"; : Center 19, STRING$(78, 32), 0: LOCATE 19, 80: PRINT "³";
LOCATE 20, 1: PRINT "³"; : Center 20, STRING$(78, 32), 0: LOCATE 20, 80: PRINT "³";
LOCATE 21, 1: PRINT "À"; : Center 21, STRING$(78, 196), 0: LOCATE 21, 80: PRINT "Ù";
Center 17, "Use the left or right arrow keys to change the spin-down time; the time", 1
Center 18, "in seconds is a calculated estimate. Press Enter to set, Esc to exit.  ", 1
Center 19, "0.00 seconds, fastest reaction time <--> 14.17 seconds, slow reaction time", 0
LOCATE 20, 4: PRINT USING "Time in seconds ---------------------->  ##.##"; ABS(100 / 18 * MSDT! / 100)
MotorSpinDownTime = DBTDefaults(1)
DO
        C$ = INKEY$
        IF C$ = CHR$(0) + "M" THEN GOSUB More.TimeAdjust2
        IF C$ = CHR$(0) + "K" THEN GOSUB Less.TimeAdjust2
        IF C$ = CHR$(27) THEN
           FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
           Center 18, "Motor spin-down time option not set OK.", 1
           SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
           EXIT SUB
        END IF
LOOP WHILE C$ <> CHR$(13)
FOR xx = 16 TO 21: LOCATE xx, 1: PRINT STRING$(80, 32): NEXT xx
LOCATE 18, 41 - LEN("Motor is now set to turn off after       seconds") / 2: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * MotorSpinDownTime / 100)
MSDT! = MotorSpinDownTime
SLEEP 2: LOCATE 18, 1: PRINT STRING$(80, 32);
LOCATE 11, 12: PRINT USING "Motor is now set to reach full speed in ##.## seconds"; ABS(100 / 18 * MSUT! / 100)
LOCATE 12, 12: PRINT USING "Data to be placed in formatted sector(s) is ASCII number ###"; DVFS!
LOCATE 13, 12: PRINT USING "Motor is now set to turn off after ##.## seconds"; ABS(100 / 18 * MSDT! / 100)
EXIT SUB

More.TimeAdjust2:
MotorSpinDownTime = MotorSpinDownTime + 1
IF MotorSpinDownTime >= 256 THEN MotorSpinDownTime = 0
LOCATE 20, 4: PRINT "Time in seconds ---------------------->             "
LOCATE 20, 4: PRINT USING "Time in seconds ---------------------->  ##.##"; ABS(100 / 18 * MotorSpinDownTime / 100)
RETURN

Less.TimeAdjust2:
MotorSpinDownTime = MotorSpinDownTime - 1
IF MotorSpinDownTime <= -1 THEN MotorSpinDownTime = 255
LOCATE 20, 4: PRINT "Time in seconds ---------------------->             "
LOCATE 20, 4: PRINT USING "Time in seconds ---------------------->  ##.##"; ABS(100 / 18 * MotorSpinDownTime / 100)
RETURN
END SUB
