!*************************** AMUS Program Label ****************************** ! Filename: DSKDOC.BAS Date: 03/30/90 ! Category: UTIL Hash Code: 371-744-067-716 Version: 1.0(100) ! Initials: CHES/AM Name: GARY CHESSER ! Company: EMERGITECH Telephone #: 6148666712 ! Related Files: .LIT : GARWRT,GARRED,FIXGAR .SBR : BLOCKS,AMOS,RINKEY,NOECHO ! Min. Op. Sys.: 1.3 Expertise Level: INT ! Special: Everyone should be off your system when running this program. ! Description: Used to diagnose a possible suspect drive. This program has six ! calls which you may use to check out a disk on your system. ! !***************************************************************************** !PROGRAMS NEEDED FOR THE DISK DOCTOR ! SYS:GARWRT.LIT ! SYS:GARRED.LIT ! SYS:FIXGAR.LIT ! ! BAS:RINKEY.SBR ! BAS:NOECHO.SBR ! BAS:AMOS.SBR ! BAS:BLOCKS.SBR ! ! DSKDOC.TXT AND DSKDOC.RUN MUST BE IN THE SAME PPN ! ! [SAA] Add few trivial items to show them how to exit program. ! Steve Archuleta, AMUS Staff ! Program DSKDOC,1.0(100) MAP1 TITLE,S,30,"Gary Chesser's Disk Doctor" MAP1 TDATE,B,4 MAP1 T1DATE,@TDATE MAP2 MONTH,B,1 MAP2 DAY,B,1 MAP2 YEAR,B,1 MAP2 FIL,B,1 MAP1 DRIVE,S,5,"DSK0:" MAP1 CHOICE,S,1,"D" MAP1 CMDLIN,S,80 MAP1 DT$,S,8 MAP1 CHAR,B,2 MAP1 CONTIG,F,6 MAP1 FREE,F,6 MAP1 PERCENT,F,6 ON ERROR GOTO ABORT'IT GET'TITLE: PRINT TAB(-1,0);TAB(-1,29) !CLEAR SCREEN & TURN OFF CURSOR GOSUB DSP'TITLE !DISPLAY OUR SCREEN GET'INPUT: XCALL NOECHO !NEEDS TO BE SET W/RINKEY XCALL RINKEY,CHAR !INPUT USER'S SPEC IF CHAR=0 THEN GOTO GET'INPUT !IF NOTHING GET MORE INPUT IF CHAR=27 THEN GOTO FINISH !IF ESC THE EXIT PROGRAM IF CHAR=8 THEN GOSUB GO'LEFT !IF LEFT ARROW MOVE LEFT IF CHAR=10 THEN GOSUB GO'DOWN !IF DOWN ARROW MOVE DOWN IF CHAR=11 THEN GOSUB GO'UP !IF UP ARROW MOVE UP IF CHAR=12 THEN GOSUB GO'RIGHT !IF RIGHT ARROW MOVE RIGHT IF CHAR=13 THEN GOSUB GO'DOIT !IF RETURN THEN PERFORM USER REQUEST GOTO GET'INPUT !IF NONE OF ABOVE ANSWERS GET USER REQ !***************************************************************************** !DISPLAY MAIN SCREEN FOR USER INPUT ! DEFAULT CHOICE = D FOR DEVICE SPECIFICATIONS !***************************************************************************** DSP'TITLE: GOSUB PROG'CHOICE !DISPLAY USER HELP ? tab(-1,29); !TURN OFF CUSOR GOSUB GET'DATE PRINT TAB(1,70);DT$ PRINT TAB(3,22);TAB(-1,32);" ";TITLE;" ";TAB(-1,33) PRINT TAB(-1,23) PRINT TAB(5,1);"2ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ3";TAB(-1,33) PRINT TAB(6,1);"62ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ36";TAB(-1,33) PRINT TAB(7,1);"66 66";TAB(-1,33) PRINT TAB(8,1);"66 66";TAB(-1,33) PRINT TAB(9,1);"66 66";TAB(-1,33) PRINT TAB(10,1);"66 66";TAB(-1,33) PRINT TAB(11,1);"66 66";TAB(-1,33) PRINT TAB(12,1);"66 66";TAB(-1,33) PRINT TAB(13,1);"61ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ56";TAB(-1,33) PRINT TAB(14,1);"1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5";TAB(-1,33) PRINT TAB(-1,24) PRINT TAB(7,13);TAB(-1,33);" ";"Help";" ";TAB(-1,33) PRINT TAB(7,29);TAB(-1,32);" ";"Select Drive";" ";TAB(-1,33) PRINT TAB(7,53);TAB(-1,33);" ";"Mounted Drives";" ";TAB(-1,33) PRINT TAB(10,13);TAB(-1,33);" ";"Read";" ";TAB(-1,33) PRINT TAB(10,33);TAB(-1,33);" ";"Write";" ";TAB(-1,33) PRINT TAB(10,53);TAB(-1,33);" ";"Statistics";" ";TAB(-1,33) PRINT TAB(16,30) "Press CTRL-C to EXIT"; ![SAA] Show em how to exit CHOICE = "D" RETURN GET'DATE: TDATE = DATE DT$ = (MONTH USING "#Z")+"/"+(DAY USING "#Z")+"/"+& (YEAR USING "#Z") RETURN GO'DOIT: IF CHOICE = "D" THEN & ? TAB(20,1); : & INPUT "Input Drive name Ex. DSK0: >";DRIVE IF CHOICE = "M" THEN & ? TAB (-1,0) : & CMDLIN = "MOUNT" : & XCALL AMOS,CMDLIN : & ? TAB(20,1);TAB(-1,32); : & ? TAB(20,26);TAB(-1,33); : & ? TAB(20,2); : & INPUT "Press return to continue";W IF CHOICE = "H" THEN & ? TAB (-1,0) : & CMDLIN = "HELP DSKDOC.TXT" : & XCALL AMOS,CMDLIN : & ? TAB(23,1);TAB(-1,32) : & ? TAB(23,26);TAB(-1,33); : & ? TAB(23,2); : & INPUT "Press return to continue";W IF CHOICE = "R" THEN & ? TAB (-1,0) : & CMDLIN = "GARRED " + DRIVE : & XCALL AMOS,CMDLIN IF CHOICE = "W" THEN & ? TAB (-1,0) : & CMDLIN = "GARWRT " + DRIVE : & XCALL AMOS,CMDLIN IF CHOICE = "S" THEN & ? TAB(-1,0) : & CMDLIN = "FIXGAR " + DRIVE[1,3] : & XCALL AMOS,CMDLIN : & GOSUB GET'BLOCKS : & ? TAB(23,1);TAB(-1,32) : & ? TAB(23,26);TAB(-1,33); : & ? TAB(23,2); : & INPUT "Press return to continue";W !start all over again START'AGAIN: GOTO GET'TITLE GET'BLOCKS: XCALL BLOCKS,DRIVE,CONTIG,FREE !NOT DEVELOPED YET,IN NEXT REVISION ? ! PERCENT = 100 * (FREE/57680) PRINT PRINT DRIVE;" has ";CONTIG;"Blocks of contiguous space and" PRINT " ";FREE;"Blocks of total free space" ! PRINT " ";PERCENT;" percent of free space available" RETURN GO'DOWN: IF CHOICE = "W" OR CHOICE = "R" OR CHOICE = "S" THEN RETURN IF CHOICE = "D" THEN & CHOICE = "W" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,32); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO DFINISH IF CHOICE = "H" THEN & CHOICE = "R" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,32); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO DFINISH IF CHOICE = "M" THEN & CHOICE = "S" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33) : & PRINT TAB(10,33);TAB(-1,33) : & PRINT TAB(10,53);TAB(-1,32) DFINISH: RETURN GO'UP: IF CHOICE = "D" OR CHOICE = "M" OR CHOICE = "H" THEN RETURN IF CHOICE = "R" THEN & CHOICE = "H" : & PRINT TAB(7,13);TAB(-1,32); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO UFINISH IF CHOICE = "W" THEN & CHOICE = "D" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,32); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO UFINISH IF CHOICE = "S" THEN & CHOICE = "M" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,32); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); UFINISH: RETURN GO'RIGHT: IF CHOICE = "S" OR CHOICE = "M" THEN RETURN IF CHOICE = "R" THEN & CHOICE = "W" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,32); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO RFINISH IF CHOICE = "W" THEN & CHOICE = "S" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,32); : & GOTO RFINISH IF CHOICE = "H" THEN & CHOICE = "D" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,32); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO RFINISH IF CHOICE = "D" THEN & CHOICE = "M" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,32); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); RFINISH: RETURN GO'LEFT: IF CHOICE = "R" OR CHOICE = "H" THEN RETURN IF CHOICE = "S" THEN & CHOICE = "W" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,32); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO LFINISH IF CHOICE = "W" THEN & CHOICE = "R" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,32); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO LFINISH IF CHOICE = "D" THEN & CHOICE = "H" : & PRINT TAB(7,13);TAB(-1,32); : & PRINT TAB(7,29);TAB(-1,33); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO LFINISH IF CHOICE = "M" THEN & CHOICE = "D" : & PRINT TAB(7,13);TAB(-1,33); : & PRINT TAB(7,29);TAB(-1,32); : & PRINT TAB(7,53);TAB(-1,33); : & PRINT TAB(10,13);TAB(-1,33); : & PRINT TAB(10,33);TAB(-1,33); : & PRINT TAB(10,53);TAB(-1,33); : & GOTO LFINISH LFINISH: RETURN PROG'CHOICE: PRINT TAB(23,10);TAB(-1,145);" Use <-- --> Arrow keys to Select Program Present Drive ";DRIVE;" ";TAB(-1,33) RETURN ABORT'IT: ? TAB(-1,28); !TURN CURSOR BACK ON FOR WHOEVER IF ERR(0) = 1 THEN GOTO FINISH ![SAA] don't complain on CTRL-C PRINT "ERR(0) = ";ERR(0) PRINT "ERR(1) = ";ERR(1) PRINT "ERR(2) = ";ERR(2) FINISH: END