home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 013 / doshelp.arc / HELP.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-04-26  |  14.2 KB  |  312 lines

  1. 2000  ' *******************************************************************
  2. 2010  ' HELP PROGRAM                                             MARCH 1985
  3. 2020  ' *******************************************************************
  4. 2030  ' WRITTEN BY JAMES KENDRICK                             WASHINGTON DC
  5. 2040  ' *******************************************************************
  6. 2050  ' COPYRIGHT 1985 BY JAMES KENDRICK                     (202) 638-7627
  7. 2060  ' *******************************************************************
  8. 2070  '
  9. 2080  '          This is a program written for BASICA.  It has been written
  10. 2090  '          and tested on an IBM PC-XT.  It has also been tested on
  11. 2100  '          a Compaq.
  12. 2110  '
  13. 2120  '          The purpose of this program is to provide on-screen help
  14. 2130  '          with PC-DOS commands.  The program relies on external
  15. 2140  '          ASCII text files to provide the screens about each DOS
  16. 2150  '          command.  Thus the text (and the menu) can be revised
  17. 2160  '          quickly.
  18. 2170  '
  19. 2180  '          This program is Copyrighted (C) 1985 by Kendrick &
  20. 2190  '          Company.  Sale of the program or use of the code
  21. 2200  '          for commercial purposes is prohibited.
  22. 2210  '
  23. 2220  '          Kendrick & Company
  24. 2230  '          800 18th Street, N.W.  #500
  25. 2240  '          Washington, DC 20006
  26. 2250  '
  27. 2260  ' DECLARATIONS ******************************************************
  28. 2270  '
  29. 2280  CLEAR,,1024
  30. 2290  OPTION BASE 1
  31. 2300  DEFINT L - Z
  32. 2310  '
  33. 2320  KEY 1,"" : KEY 2,"" : KEY 3,""  ' CLEAR KEYS
  34. 2330  KEY 4,"" : KEY 5,"" : KEY 6,""
  35. 2340  KEY 7,"" : KEY 8,"" : KEY 9,""
  36. 2350  KEY 10,""
  37. 2360  KEY OFF
  38. 2370  '
  39. 2380  LET MODE = 1                   ' MODE 0 = INITIAL SCREEN; MODE 1 = BASIC HELP; MODE 2 = EXTRA HELP
  40. 2390  LET EXTRAHELPFILES = 9         ' NUMBER OF EXTENDED HELP FILES
  41. 2400  '
  42. 2410  DIM TEMP1$(80)                 ' TEMPORARY STRING VARIABLE FOR TEXT
  43. 2420  DIM TEMP2$(12)                 ' TEMPORARY VARIABLE FOR FILE NAMES
  44. 2430  DIM MENULINE$(24)              ' STRING ARRAY FOR MENU TEXT LINES
  45. 2440  DIM FILENAME$(24)              ' STRING ARRAY FOR FILE NAMES OF HELP TEXT
  46. 2450  DIM ERRORMESSAGE$(80)
  47. 2460  ' FILE$                        ' STRING VARIABLE FOR OPENING DISK FILES
  48. 2470  ' MESSAGE$                     ' STRING FOR MESSAGES ON ROW 25 OF SCREEN
  49. 2480  ' CHOICE$                      ' STRING FOR KEYBOARD INPUT
  50. 2490  ' ANYKEY$                      ' STRING FOR KEYBOARD INPUT (PRESS ANY KEY)
  51. 2500  ' POINTER                      ' USED BY PROGRAM FOR COUNTING
  52. 2510  ' MENUNUMBER                   ' NUMBER OF MENU ITEMS
  53. 2520  '
  54. 2530  ' *******************************************************************
  55. 2540  ' CORE PROGRAM ******************************************************
  56. 2550  '
  57. 2560  GOSUB 4130                        ' INITIAL SCREEN ON ENTERING PROGRAM
  58. 2570  GOSUB 4400                        ' READ DATA
  59. 2580  FOR LOOP = 1 TO 2 STEP 0          ' ENDLESS LOOP
  60. 2590    GOSUB 2830                      ' SHOW MENU OF CHOICES
  61. 2600    IF X = 24 THEN GOSUB 4840 : CLS : SYSTEM ' CHOICE FOR EXITING PROGRAM
  62. 2610    IF X = -1 THEN MODE = 2 : GOSUB 3310: GOTO 2580   ' EXTENDED HELP FEATURE
  63. 2620    LET MESSAGE$ = "PRESS ANY KEY TO CONTINUE"
  64. 2630    MODE = 1 : GOSUB 3700           ' DISPLAY SELECTED TEXT FILE
  65. 2640    GOSUB 2680                      ' WAIT LOOP - PRESS ANY KEY
  66. 2650   NEXT LOOP                        ' REPEAT ENDLESS LOOP
  67. 2660  END                               ' END OF CORE PROGRAM
  68. 2670  '
  69. 2680  '
  70. 2690  ' *******************************************************************
  71. 2700  ' WAIT LOOP *********************************************************
  72. 2710  '
  73. 2720  LET READY = 0
  74. 2730  FOR TYPECLEAR = 1 TO 5
  75. 2740    LET ANYKEY$ = INKEY$
  76. 2750    LET ANYKEY$ = ""
  77. 2760   NEXT TYPECLEAR
  78. 2770  FOR WAITLOOP = 1 TO 2 STEP 0
  79. 2780    LET ANYKEY$ = INKEY$
  80. 2790    LET READY = LEN(ANYKEY$)
  81. 2800    IF READY = 1 THEN RETURN
  82. 2810   NEXT WAITLOOP
  83. 2820  '
  84. 2830  '
  85. 2840  ' *******************************************************************
  86. 2850  ' DISPLAY MENU AND MAKE HELP CHOICE *********************************
  87. 2860  '
  88. 2870  ' * PREPARE MENU *
  89. 2880  '
  90. 2890  COLOR ,1,1                        ' SET BACKGROUND COLOR
  91. 2900  CLS                               ' CLEAR SCREEN
  92. 2910  COLOR 23,1                        ' COLOR FOR ROW 25
  93. 2920  LOCATE 25,5,0                     ' TURN OFF CURSOR
  94. 2930  PRINT "SELECT A LETTER FOR HELP YOU WANT ... X to EXIT ... ? for HELP"
  95. 2940  LOCATE 1,5                        ' GO TO TOP FOR MENU TITLE
  96. 2950  COLOR 10,1                        ' COLOR FOR MENU TITLE
  97. 2960  PRINT ".............   MENU FOR HELP WITH PC-DOS   .............."
  98. 2970  COLOR 14                          ' COLOR FOR MENU BODY
  99. 2980  FOR SCREENLOOP = 3 TO MENUNUMBER+2     'BEGIN WITH ROW THREE
  100. 2990    LOCATE SCREENLOOP,5
  101. 3000    PRINT MENULINE$(SCREENLOOP-2);  ' PRINT LINE OF MENU TEXT
  102. 3010   NEXT SCREENLOOP                  ' REPEAT UNTIL DONE
  103. 3020  '
  104. 3030  ' * WAIT FOR MENU CHOICE AND EVALUATE CHOICE *
  105. 3040  '
  106. 3050  PLAY "T200 MS G"                  ' GET ATTENTION
  107. 3060  KEY OFF
  108. 3070  FOR TYPECLEAR = 1 TO 5            ' CLEAR KEYBOARD
  109. 3080    LET CHOICE$ = INKEY$
  110. 3090    LET CHOICE$ = ""                ' CLEAR VARIABLE
  111. 3100   NEXT TYPECLEAR
  112. 3110  FOR SELECTION = 1 TO 2 STEP 0     ' LOOP WAITING FOR KEYSTROKE
  113. 3120    LET CHOICE$ = INKEY$            ' CHECK FOR KEYSTROKE
  114. 3130    LET STRINGLENGTH = LEN(CHOICE$) ' CHECK FOR LENGTH OF VARIABLE
  115. 3140    IF STRINGLENGTH = 1 THEN 3170   ' LENGTH > 0 IF KEY PRESSED
  116. 3150   NEXT SELECTION                   ' DO LOOP AGAIN IF LENGTH = 0
  117. 3160  '
  118. 3170  LET X = ASC(CHOICE$) - 64         ' CONVERT FROM ASCII "A" TO 1 ETC.
  119. 3180      IF X = -1 OR X = - 17 THEN LET X = -1 : GOTO 3280                               ' CHECK FOR HELP KEY: ? OR /
  120. 3190      IF X < 0 THEN X = 0           ' KEY < "A" WAS PRESSED -- NO GO
  121. 3200      IF X > 32 THEN X = X - 32     ' CHECK FOR LOWER CASE ALPHABET
  122. 3210      IF X = 24 THEN 3280           ' KEY PRESSED IS X TO EXIT
  123. 3220      IF X > MENUNUMBER THEN X = 0  ' BEYOND RANGE OF CHOICES -- NO GO
  124. 3230      IF X > 0 THEN 3270            ' GO! THIS IS A VALID CHOICE
  125. 3240     LET CHOICE$ = ""               ' CLEAR VARIABLE FOR NO GO
  126. 3250   GOTO 3110                        ' NO GO -- REPEAT LOOP
  127. 3260  '
  128. 3270  LET FILE$ = FILENAME$(X)          ' FILENAME CORRESPONDS TO CHOICE
  129. 3280  LOCATE 25,5: PRINT "                                                              ";   ' CLEAR MESSAGE LINE
  130. 3290  RETURN                            ' RETURN TO CORE PROGRAM
  131. 3300  '
  132. 3310  '
  133. 3320  ' *******************************************************************
  134. 3330  ' EXTENDED HELP *****************************************************
  135. 3340  '
  136. 3350  KEY OFF                              ' RESET KEYS
  137. 3360  KEY(12) ON                           ' CURSOR KEYS
  138. 3370  KEY(13) ON
  139. 3380  KEY(14) ON
  140. 3390  LET HELPFILE = 1                      ' COUNTER FOR MULTIPLE TEXT FILES
  141. 3400  LET MODE = 2                          ' SPECIFICATIONS FOR COLOR
  142. 3410  LET DONE = 0                          ' 1 = EXIT EXTRA HELP
  143. 3420  LET FILE$ = "HELP0001.TXT"            ' FIRST TEXT FILE
  144. 3430                                        ' SET UP MESSAGE STRING
  145. 3440  LET MESSAGE$ = CHR$(26)+" NEXT PAGE ... "+CHR$(25)+" LEAVE EXTRA HELP"
  146. 3450  LET MESSAGE1$ = MESSAGE$
  147. 3460  LET MESSAGE2$ = MESSAGE$ + " ... " + CHR$(27)+" LAST PAGE"
  148. 3470  GOSUB 3700                            ' DISPLAY FIRST SCREEN
  149. 3480  '
  150. 3490  ' * WAIT FOR KEYBOARD INPUT USING CURSOR KEYS *
  151. 3500  '
  152. 3510  FOR WAITLOOP = 1 TO 2 STEP 0
  153. 3520    ON KEY(14) GOSUB 3600
  154. 3530    ON KEY(12) GOSUB 3630
  155. 3540    ON KEY(13) GOSUB 3610
  156. 3550    IF DONE = 1 THEN KEY OFF : RETURN
  157. 3560   NEXT WAITLOOP
  158. 3570  '
  159. 3580  ' * WORK WITH KEYBOARD INPUT *
  160. 3590  '
  161. 3600  LET READY = 0 : DONE = 1 : RETURN    ' DOWN CURSOR FOR EXIT
  162. 3610  IF HELPFILE < EXTRAHELPFILES THEN LET HELPFILE = HELPFILE + 1 ELSE LET HELPFILE = 1 : BEEP     ' RIGHT CURSOR; NEXT PAGE
  163. 3620  GOTO 3640                            ' SKIP ACTION FOR LEFT CURSOR
  164. 3630  IF HELPFILE >1 THEN LET HELPFILE = HELPFILE - 1 : ELSE BEEP     ' LEFT CURSOR; PAGE BACK
  165. 3640  IF HELPFILE > 1 THEN LET MESSAGE$ = MESSAGE2$ ELSE LET MESSAGE$ = MESSAGE1$
  166. 3650  LET CHARS = LEN(STR$(HELPFILE)) - 1  ' LENGTH OF NUMBER LESS SPACE FOR SIGN
  167. 3660  MID$(FILE$,9-CHARS,CHARS) = MID$(STR$(HELPFILE),2,CHARS)  ' CHANGE NUMBER IN FILE NAME
  168. 3670  GOSUB 3700                           ' DISPLAY A SCREEN OF TEXT
  169. 3680  LET DONE = 0                         ' NOT READY TO LEAVE EXTENDED HELP
  170. 3690  RETURN                               ' RETURN TO EXTENDED HELP WAIT LOOP FOR CURSOR KEYS
  171. 3700  '
  172. 3710  ' *******************************************************************
  173. 3720  ' ROUTINE FOR ENTERING TEXT FILES ***********************************
  174. 3730  '
  175. 3740  ON ERROR GOTO 3980
  176. 3750  CLOSE #1                          ' CLOSE JUST IN CASE OPEN
  177. 3760  OPEN "I",#1,FILE$                 ' OPEN TEXT FILE
  178. 3770  LET POINTER = 1                   ' SET COUNTER
  179. 3780  IF MODE = 0 THEN COLOR 2,0,0      ' SET BACKGROUND COLOR FOR MODES
  180. 3790  IF MODE = >0 THEN COLOR ,0,0
  181. 3800  CLS                               ' CLEAR TO PROPER BACKGROUND
  182. 3810  COLOR 14
  183. 3820  LOCATE 25,5,0 : PRINT MESSAGE$    ' PRINT MESSAGE PROMPT
  184. 3830  FOR TEXTLOOP = 1 TO 2 STEP 0      ' ENDLESS LOOP
  185. 3840    ON ERROR GOTO 4100
  186. 3850    INPUT#1,TEMP1$                  ' GET LINE OF TEXT FROM FILE
  187. 3860    LET CHARACTER$ = MID$(TEMP1$,1,1)
  188. 3870      IF CHARACTER$ = ";" THEN MID$(TEMP1$,1,1) = " "
  189. 3880    IF TEMP1$ = "###" THEN CLOSE #1: ON ERROR GOTO 0 : RETURN :'     EXIT IF DONE
  190. 3890    IF MODE = 0 THEN COLOR 2,0,0
  191. 3900    IF MODE = 1 THEN IF POINTER = 1 THEN COLOR 9,0 ELSE COLOR 11,0
  192. 3910    IF MODE = 2 THEN IF POINTER = 1 THEN COLOR 9,0 ELSE IF POINTER = 2 THEN COLOR 14,0 ELSE COLOR 10,0
  193. 3920    LOCATE POINTER,5: PRINT TEMP1$; ' GO TO SCREEN LOCATION
  194. 3930    LET POINTER = POINTER + 1       ' INCREMENT COUNTER BY ONE
  195. 3940   NEXT TEXTLOOP                    ' DO IT AGAIN, SAM
  196. 3950  '
  197. 3960  ' * ERROR TRAP FOR DISK DRIVE AND FILE *
  198. 3970  '
  199. 3980  LET ERRORMESSAGE$ = " "
  200. 3990     IF ERR = 71 THEN LET ERRORMESSAGE$ = "DISK DRIVE IS NOT READY"
  201. 4000     IF ERR = 53 THEN LET ERRORMESSAGE$ = "TEXT FILE NOT FOUND"
  202. 4010     IF ERR <> 71 AND ERR <> 53 THEN LET ERRORMESSAGE$ = "UNDOCUMENTED ERROR
  203. 4020     LET ERRORMESSAGE$ = ERRORMESSAGE$ + " ... CORRECT & THEN PRESS ANY KEY"
  204. 4030  LOCATE 25,5 : PRINT SPACE$(65);CHR$(7);CHR$(7);CHR$(7);
  205. 4040  LOCATE 25,5 : PRINT ERRORMESSAGE$;
  206. 4050  GOSUB 2680
  207. 4060  RESUME 3700
  208. 4070  '
  209. 4080  '
  210. 4090  ' * ERROR TRAP FOR TOO RAPID ENTRY OF CURSOR KEYS *
  211. 4100  '
  212. 4110  RESUME 3700
  213. 4120  '
  214. 4130  '
  215. 4140  ' *******************************************************************
  216. 4150  ' INITIAL SCREEN ON ENTERING PROGRAM ********************************
  217. 4160  '
  218. 4170  LET FILE$ = "SCREEN1.TXT"         ' DEFINE TEXT FILE
  219. 4180  LET MESSAGE$ = " "
  220. 4190  LET MODE = 0                      ' COLOR MODE FOR INITIAL SCREEN
  221. 4200  GOSUB 3700                        ' DISPLAY TEXT FILE SCREEN1.TXT
  222. 4210  '
  223. 4220  ' * MUSIC *
  224. 4230  '   LET TONE$ = "GB>DGAG"
  225. 4240  '   PLAY "MF MS T220 O4 XTONE$;"
  226. 4250  '   LET TONE$ = "GB>D<GAG"
  227. 4260  '   PLAY "MF MS T220 O3 XTONE$;"
  228. 4270  '   LET TONE$ = "GB>D<GDG"
  229. 4280  '   PLAY "MF MS T200 O2 XTONE$;P8 GG;"
  230. 4290  '
  231. 4300  LET TIME1! = VAL(RIGHT$(TIME$,2))       ' PAUSE FOR DISPLAY OF 1ST SCREEN
  232. 4310  IF TIME1! > 56 THEN LET TIME1! = -2      ' compensate for 59 seconds/min
  233. 4320  LET TIMEOUT = 1                         ' FORCE 1 PASS THRU WHILE
  234. 4330  WHILE TIMEOUT
  235. 4340    LET TIMEOUT = 0                       ' SET WHILE LOOP TO FALSE
  236. 4350    LET TIME2! = VAL(RIGHT$(TIME$,2))
  237. 4360    IF TIME2! <> TIME1! + 3 THEN LET TIMEOUT = 1
  238. 4370   WEND
  239. 4380  RETURN                            ' RETURN TO CORE PROGRAM
  240. 4390  '
  241. 4400  '
  242. 4410  ' *******************************************************************
  243. 4420  ' READ DATA *********************************************************
  244. 4430  '
  245. 4440  LET POINTER = 1                         ' SET COUNTER
  246. 4450  RESTORE
  247. 4460  LET NOTDONE = 1                         ' FORCE 1 PASS THRU WHILE
  248. 4470  WHILE NOTDONE                           ' LOOP FOR READING DATA
  249. 4480  LET NOTDONE = 0                         ' LOOP FOR READING DATA
  250. 4490    READ TEMP1$, TEMP2$                   ' READ DATA
  251. 4500  '                                         ASSIGN DATA TO STRING ARRAYS
  252. 4510    LET MENULINE$(POINTER) = TEMP1$       ' TEXT FOR MENU
  253. 4520    LET FILENAME$(POINTER) = TEMP2$       ' NAME OF CORRESPONDING TEXT FILE
  254. 4530    LET POINTER = POINTER + 1             ' INCREMENT LOOP COUNT BY ONE
  255. 4540    IF TEMP1$ <> "###" THEN LET NOTDONE = 1     ' EXIT FROM WHILE IF DONE
  256. 4550   WEND
  257. 4560  LET MENUNUMBER = POINTER -2 : RETURN    ' SET NUMBER OF MENU ITEMS : RETURN
  258. 4570  '
  259. 4580  ' * DATA FOR MENU *
  260. 4590  '
  261. 4600  DATA A   ASSIGN   ...........   ROUTES REQUESTS TO A DIFFERENT DRIVE,ASSIGN.TXT
  262. 4610  DATA B   BACKUP   ...........   BACKS UP FIXED DISK FILES,BACKUP.TXT
  263. 4620  DATA C   CD   ...............   CHANGES CURRENT DIRECTORY,CD.TXT
  264. 4630  DATA D   CHKDSK   ...........   CHECKS DISK & REPORTS STATUS,CHKDSK.TXT
  265. 4640  DATA E   CLS   ..............   CLEARS THE DISPLAY SCREEN,CLS.TXT
  266. 4650  DATA F   COPY   .............   COPIES FILES,COPY.TXT
  267. 4660  DATA G   DIR   ..............   LISTS FILE NAMES,DIR.TXT
  268. 4670  DATA H   DISKCOPY   .........   COPY AN ENTIRE FLOPPY DISK,DISKCOPY.TXT
  269. 4680  DATA I   ERASE   ............   DELETES ONE OR MORE FILES,ERASE.TXT
  270. 4690  DATA J   FORMAT   ...........   FORMATS A DISK,FORMAT.TXT
  271. 4700  DATA K   MKDIR   ............   CREATES A SUBDIRECTORY,MKDIR.TXT
  272. 4710  DATA L   MODE   .............   SETS MODE FOR SCREEN--PRINTER--COM,MODE.TXT
  273. 4720  DATA M   PATH   .............   SEARCHES DIRECTORIES FOR COMMANDS,PATH.TXT
  274. 4730  DATA N   RECOVER   ..........   RECOVERS FILES FROM DISK,RECOVER.TXT
  275. 4740  DATA O   RENAME   ...........   RENAMES FILES,RENAME.TXT
  276. 4750  DATA P   RESTORE   ..........   RESTORES FILES TO FIXED DISK,RESTORE.TXT
  277. 4760  DATA Q   RMDIR   ............   REMOVES A SUBDIRECTORY,RMDIR.TXT
  278. 4770  DATA R   SYS   ..............   TRANSFERS DOS TO A DISK,SYS.TXT
  279. 4780  DATA S   TREE   .............   DISPLAYS ALL DIRECTORY PATHS,TREE.TXT
  280. 4790  DATA T   TYPE   .............   DISPLAYS TEXT IN A FILE,TYPE.TXT
  281. 4800  DATA ###,###
  282. 4810  '
  283. 4820  END
  284. 4830  '
  285. 4840  '
  286. 4850  ' *******************************************************************
  287. 4860  ' ADVERTISING  ******************************************************
  288. 4870  '
  289. 4880  CLS
  290. 4890  COLOR 23
  291. 4900  LOCATE 25,1 : PRINT "PRESS ANY KEY TO EXIT SYSTEM";
  292. 4910  COLOR 14
  293. 4920  LOCATE 1,25 : PRINT "RESTRICTED PERMISSION TO COPY"
  294. 4930  LOCATE 3,1 : PRINT "HELP for PC-DOS is not a public domain program.  It is Copyright (C) 1985"
  295. 4940  LOCATE 4,1 : PRINT "by Kendrick & Company.  Individuals and computer clubs are granted permission"
  296. 4950  LOCATE 5,1 : PRINT "to copy the program for their own use and for others to evaluate -- as"
  297. 4960  LOCATE 6,1 : PRINT "long as no price or other consideration is charged.  Changes to the text or"
  298. 4970  LOCATE 7,1 : PRINT "program files are prohibited.  In addition, the program may not be rented."
  299. 4980  LOCATE 9,27 : PRINT "BECOME A REGISTERED USER!"
  300. 4990  LOCATE 11,1 : PRINT "Send a check or money order for $15.00 along with your name and address to"
  301. 5000  LOCATE 12,1 : PRINT "become a registered user of HELP for PC-DOS.  Here are the benefits:"
  302. 5010  LOCATE 14,1 : PRINT "  *  You will receive HELP Version 2.0 with many enhancements.";
  303. 5020  LOCATE 15,1 : PRINT "  *  You will be on our mailing list for future enhancements.";
  304. 5040  LOCATE 19,23 : PRINT "Kendrick & Company";
  305. 5050  LOCATE 20,23 : PRINT "800 Eighteenth Street, N.W. #500"
  306. 5060  LOCATE 21,23 : PRINT "Washington, DC 20006"
  307. 5070  GOSUB 2700
  308. 5080  RETURN
  309. 5090  '
  310. 5100  END
  311. 5110  '
  312.