home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib36a.dsk
/
MAY.1989
/
GET.SET.INFO.bas
next >
Wrap
BASIC Source File
|
2023-02-26
|
11KB
|
347 lines
10 REM **********************
20 REM * GET.SET.INFO *
30 REM * by Bill Tudor *
40 REM * Copyright (c) 1989 *
50 REM * by MicroSPARC, Inc *
60 REM * Concord, MA 01742 *
70 REM **********************
80 :
90 ONERR GOTO 2790
100 DIM B%(7),M$(5)
110 FOR I = 0 TO 10: READ B: POKE 768 +I,B: NEXT
120 FOR I = 1 TO 5: READ M$(I): NEXT
130 :
140 REM ====================
150 REM Setup the Screen:
160 REM ====================
170 :
180 PRINT CHR$(21): HOME
190 PRINT " GET_SET_INFO by Bill Tudor": PRINT " COPYRIGHT(C) 1989 MICROSPARC,INC": REM 7 AND 4 SPACES
200 FOR I = 1 TO 40: PRINT "_";: NEXT
210 VTAB 22: HTAB 1: FOR I = 1 TO 40: PRINT "_";: NEXT
220 POKE 34,3: POKE 35,21: REM -Set text screen
230 :
240 REM ==================
250 REM Main Menu
260 REM ==================
270 :
280 PRINT CHR$(4);"PREFIX": INPUT PF$
290 PRINT CHR$(4);"PREFIX";PF$
300 HOME : PRINT : PRINT "Prefix:";PF$: PRINT
310 PRINT " 1. Enter Filename": REM 8 SPACES
320 PRINT " 2. Catalog disk"
330 PRINT " 3. New Slot & Drive"
340 PRINT " 4. Enter new Prefix"
350 PRINT " 5. Quit Program"
360 PRINT : PRINT " Enter Selection:< >": REM 6 SPACES
370 POKE 35,24: VTAB 24: HTAB 1: CALL -868
380 PRINT "Enter value above or Esacpe to EXIT";: POKE 35,21
390 VTAB 13: HTAB 24: GET Q$
400 IF Q$ = CHR$(27) THEN Q$ = "5"
410 IF Q$ <"1" OR Q$ >"5" THEN PRINT CHR$(7);: GOTO 390
420 PRINT Q$:Q = VAL(Q$): VTAB 6 +Q: HTAB 8: PRINT ">";
430 ON Q GOTO 650,820,490,950,740: PRINT CHR$(7);: GOTO 390
440 :
450 REM ==================
460 REM New Slot & Drive:
470 REM ==================
480 :
490 VTAB 15: HTAB 5: PRINT "Slot(1-7):";: CALL -868
500 GET SL$
510 IF SL$ = CHR$(27) THEN 300
520 IF SL$ <"1" OR SL$ >"7" THEN PRINT CHR$(7);: GOTO 500
530 PRINT SL$;: VTAB 15: HTAB 20: PRINT "Drive(1-2)?";
540 GET DR$
550 IF DR$ = CHR$(27) THEN 490
560 IF DR$ <"1" OR DR$ >"2" THEN PRINT CHR$(7);: GOTO 540
570 PRINT DR$;
580 PRINT CHR$(4);"PREFIX,S";SL$;",D";DR$
590 GOTO 280
600 :
610 REM ==================
620 REM Get the Filename:
630 REM ==================
640 :
650 PN$ = ""
660 GOSUB 3150
670 IF PN$ = "" THEN 300
680 GOTO 1050
690 :
700 REM =============
710 REM Quit Program:
720 REM =============
730 :
740 POKE 35,24: VTAB 24: HTAB 1: CALL -868: PRINT "Quit?(Y/N)";
750 GET Q$: IF Q$ < >"Y" AND Q$ < >"y" THEN POKE 35,21: GOTO 300
760 POKE 34,0: HOME : END
770 :
780 REM =============
790 REM Catalog Disk:
800 REM =============
810 :
820 HOME
830 POKE 35,24: VTAB 24: HTAB 1: CALL -868
840 PRINT "Use <control-S> to pause listing";
850 POKE 35,21: VTAB 3
860 PRINT CHR$(4);"CAT"
870 POKE 35,24: VTAB 24: HTAB 1: CALL -868
880 PRINT "Press RETURN to continue ";: POKE 35,21
890 GET Q$: GOTO 300
900 :
910 REM ==================
920 REM Get Prefix:
930 REM ==================
940 :
950 PN$ = ""
960 GOSUB 3150
970 IF PN$ = "" THEN 300
980 PF$ = PN$
990 GOTO 290
1000 :
1010 REM ==============
1020 REM Get File Info:
1030 REM ==============
1040 :
1050 PRINT CHR$(4);"VERIFY";PN$
1060 HOME : PRINT
1070 PRINT "File:";PN$
1080 VTAB 5: HTAB 1
1090 T = PEEK(48824): REM -File type
1100 PRINT "File Type :";T
1110 PRINT "Aux. Type :"; PEEK(48825) +256 * PEEK(48826);
1120 IF T = 6 THEN PRINT " (Load Address)";
1130 IF T = 4 THEN PRINT " (Record size)";
1140 IF PEEK(48827) = 15 THEN PRINT " (Total Blocks)";
1150 PRINT
1160 B = PEEK(48823): REM -Access Byte
1170 PRINT "File Access:";B;
1180 GOSUB 3040
1190 IF B%(0) = 1 AND B%(1) = 1 AND B%(6) = 1 AND B%(7) = 1 THEN 1210
1200 PRINT ",locked";: GOTO 1220
1210 PRINT ",UNlocked";
1220 IF B%(5) = 1 THEN PRINT ",Bckp needed": GOTO 1240
1230 PRINT ",NO Bckp needed"
1240 PRINT "Blocks Used:"; PEEK(48828) +256 * PEEK(48829)
1250 H$ = STR$( PEEK(48833)): IF LEN(H$) = 1 THEN H$ = "0" +H$
1260 M$ = STR$( PEEK(48832)): IF LEN(M$) = 1 THEN M$ = "0" +M$
1270 B = PEEK(48830): GOSUB 3040
1280 MM = B%(5) +2 *B%(6) +4 *B%(7)
1290 YY = PEEK(48831)
1300 IF INT(YY/2) < >YY/2 THEN MM = MM +8
1310 YY = INT(YY/2)
1320 DD = B%(0) +2 *B%(1) +4 *B%(2) +8 *B%(3) +16 *B%(4)
1330 PRINT "Mod. Date :";MM;"/";DD;"/";YY
1340 PRINT "Mod. Time :";H$;":";M$
1350 :
1360 REM ================
1370 REM Provide Options:
1380 REM ================
1390 :
1400 VTAB 11: HTAB 1: CALL -958: PRINT " -----------------------": REM 8 SPACES, 23 DASHES
1410 PRINT " Select Option to Change": REM 8 SPACES
1420 S = 1: VTAB 14: CALL -958
1430 IF PEEK(48827) = 15 THEN S = 5
1440 VTAB 14: FOR I = 1 TO 5
1450 IF S = I THEN INVERSE : HTAB 11: PRINT M$(I): NORMAL : GOTO 1470
1460 HTAB 11: PRINT M$(I)
1470 NEXT
1480 POKE 35,24: VTAB 24: HTAB 1: CALL -958
1490 PRINT "Type # or use arrows then press Return ";: POKE 35,21
1500 IF PEEK(48827) < >15 THEN 1550
1510 VTAB 21: HTAB 8: PRINT "<Cannot change VOLUME data>";
1520 PRINT CHR$(7);: GET Q$
1530 IF Q$ < > CHR$(13) AND Q$ < > CHR$(27) THEN 1520
1540 GOTO 300
1550 POKE 49168,0: GET Q$
1560 IF Q$ >"0" AND Q$ <"6" THEN S = VAL(Q$): GOTO 1440
1570 IF Q$ < > CHR$(13) THEN 1600
1580 POKE 35,24: VTAB 24: HTAB 1: CALL -868: POKE 35,21
1590 ON S GOTO 1720,1890,2000,2250,300
1600 IF Q$ = CHR$(11) OR Q$ = CHR$(8) THEN S = S -1: GOTO 1640
1610 IF Q$ = CHR$(10) OR Q$ = CHR$(21) THEN S = S +1: GOTO 1650
1620 IF Q$ = CHR$(27) THEN 300
1630 PRINT CHR$(7);: GOTO 1550
1640 IF S = 0 THEN S = 5
1650 IF S >5 THEN S = 1
1660 GOTO 1440
1670 :
1680 REM ==============
1690 REM New File Type:
1700 REM ==============
1710 :
1720 VTAB 12: CALL -958
1730 PRINT
1740 PRINT "Code Type Code Type Code Type Code Type"
1750 PRINT " 0 NON 15 DIR 239 PAS 252 BAS"
1760 PRINT " 1 BAD 25 ADB 240 CMD 253 VAR"
1770 PRINT " 4 TXT 26 AWP 250 INT 254 REL"
1780 PRINT " 6 BIN 27 ASP 251 IVR 255 SYS"
1790 P$ = "Enter File Type (0-255):":X = 3: GOSUB 3340
1800 IF X$ = "" THEN 1400
1810 T = VAL(X$): IF T <0 OR T >255 THEN 2710
1820 POKE 48824,T
1830 GOTO 2570
1840 :
1850 REM =============
1860 REM New Aux_Type:
1870 REM =============
1880 :
1890 P$ = "Enter Aux Type (0-65535):":X = 5: GOSUB 3340
1900 IF X$ = "" THEN 1420
1910 AX = VAL(X$)
1920 IF AX <0 OR AX >65535 THEN 2710
1930 X = INT(AX/256): POKE 48826,X: POKE 48825,AX -256 *X
1940 GOTO 2570
1950 :
1960 REM ================
1970 REM New Access byte:
1980 REM ================
1990 :
2000 VTAB 12: HTAB 1: CALL -958
2010 PRINT
2020 PRINT " Code Locked Needs Backup": REM 6,3,2,1 SPACES
2030 PRINT " 1 Y N": REM 8,7,9 SPACES
2040 PRINT " 33 Y Y": REM 7,7,9 SPACES
2050 PRINT " 195 N N": REM 6,7,9 SPACES
2060 PRINT " 227 N Y": REM 6,7,9 SPACES
2070 P$ = "Enter Access Code (0-255):":X = 3: GOSUB 3340
2080 IF X$ = "" THEN 1400
2090 AC = VAL(X$)
2100 IF AC <0 OR AC >255 THEN 2710
2110 X = INT(AC/4):B = 0
2120 FOR I = 1 TO 3
2130 X1 = INT(X/2)
2140 IF X1 < >X/2 THEN B = 1
2150 X = X1: NEXT
2160 IF B THEN 2710
2170 POKE 48823,AC:AC = INT(AC/32)
2180 IF AC/2 = INT(AC/2) THEN POKE 49045,32
2190 GOTO 2570
2200 :
2210 REM ==============
2220 REM New Date/Time:
2230 REM ==============
2240 :
2250 P$ = "Enter DAY (1-31):":X = 2: GOSUB 3340
2260 IF X$ = "" THEN 1420
2270 DD = VAL(X$)
2280 IF DD <1 OR DD >31 THEN 2710
2290 :
2300 P$ = "Enter MONTH (1-12):":X = 2: GOSUB 3340
2310 IF X$ = "" THEN 1420
2320 MM = VAL(X$)
2330 IF MM <1 OR MM >12 THEN 2710
2340 :
2350 P$ = "Enter YEAR (0-99):":X = 2: GOSUB 3340
2360 IF X$ = "" THEN 1420
2370 YY = VAL(X$)
2380 IF YY <0 OR YY >99 THEN 2710
2390 :
2400 P$ = "Enter HOUR (0-23):":X = 2: GOSUB 3340
2410 IF X$ = "" THEN 1420
2420 HR = VAL(X$)
2430 IF HR <0 OR HR >23 THEN 2710
2440 :
2450 P$ = "Enter MIN. (0-59):":X = 2: GOSUB 3340
2460 IF X$ = "" THEN 1420
2470 MN = VAL(X$)
2480 IF MN <0 OR MN >59 THEN 2710
2490 POKE 48832,MN: POKE 48833,HR
2500 YY = YY *2: IF MM >7 THEN MM = MM -8:YY = YY +1
2510 POKE 48831,YY: POKE 48830,MM *32 +DD
2520 :
2530 REM =====================
2540 REM ProDOS SET_INFO Call:
2550 REM =====================
2560 :
2570 POKE 35,24: VTAB 24: HTAB 1: CALL -868
2580 PRINT "Press Return to change; Escape to Exit";
2590 POKE 49168,0: GET Q$: IF Q$ < > CHR$(13) THEN 1400
2600 VTAB 24: HTAB 1: CALL -868: PRINT "Changing file...";
2610 POKE 48820,7: CALL 768
2620 HTAB 1: CALL -868: PRINT "Done! ";
2630 PRINT "Press Return to continue";
2640 GET Q$
2650 POKE 35,21: GOTO 1050
2660 :
2670 REM ===============
2680 REM Invalid Option:
2690 REM ===============
2700 :
2710 POKE 35,24: VTAB 24: HTAB 1: CALL -868
2720 PRINT CHR$(7);"INVALID ENTRY; Press Return";
2730 GET Q$: POKE 35,21: GOTO 1400
2740 :
2750 REM ==============
2760 REM Error Handler:
2770 REM ==============
2780 :
2790 EC = PEEK(222):EL = PEEK(218) + PEEK(219) *256
2800 POKE 35,24: VTAB 24: HTAB 1: CALL -868
2810 PRINT CHR$(7);
2820 IF EC = 16 OR EC = 255 THEN PRINT "Syntax Error";: GOTO 2860
2830 IF EC = 6 THEN PRINT "File/Path not found";: GOTO 2860
2840 IF EC = 8 OR EC = 3 THEN PRINT "I/O Error";: GOTO 2860
2850 PRINT "Error in line ";EL;",code ";EC;
2860 PRINT "; Press Return";: GET Q$
2870 CALL -3288: POKE 35,21: GOTO 300
2880 :
2890 REM ===================
2900 REM Set_Info/Menu Data:
2910 REM ===================
2920 :
2930 DATA 169,195,32,112,190,144,3,76,9,190,96
2940 DATA " 1. NEW FILE TYPE "
2950 DATA " 2. NEW AUX TYPE "
2960 DATA " 3. NEW ACCESS CODE "
2970 DATA " 4. NEW MOD. DATE/TIME "
2980 DATA " 5. BACK TO MAIN MENU "
2990 :
3000 REM ==================
3010 REM Form Bit Array
3020 REM ==================
3030 :
3040 FOR I = 0 TO 7
3050 IF B/2 = INT(B/2) THEN B%(I) = 0: GOTO 3070
3060 B%(I) = 1
3070 B = INT(B/2)
3080 NEXT
3090 RETURN
3100 :
3110 REM ==================
3120 REM Input a Pathname:
3130 REM ==================
3140 :
3150 VTAB 16: HTAB 1: PRINT "Path:";PN$;: CALL -958
3160 GET Q$
3170 IF Q$ = CHR$(27) THEN PN$ = "": RETURN
3180 IF Q$ = CHR$(13) THEN RETURN
3190 IF Q$ = CHR$(8) OR Q$ = CHR$(127) THEN 3260
3200 IF Q$ <"[" AND Q$ >"@" THEN 3240
3210 IF Q$ <":" AND Q$ >"-" THEN 3240
3220 IF Q$ >"`" AND Q$ <"{" THEN Q$ = CHR$( ASC(Q$) -32): GOTO 3240
3230 PRINT CHR$(7);: GOTO 3160
3240 IF LEN(PN$) > = 64 THEN 3230
3250 PN$ = PN$ +Q$: GOTO 3150
3260 IF PN$ = "" THEN 3230
3270 IF LEN(PN$) = 1 THEN PN$ = "": GOTO 3150
3280 PN$ = LEFT$(PN$, LEN(PN$) -1): GOTO 3150
3290 :
3300 REM ==================
3310 REM Get a Value:
3320 REM ==================
3330 :
3340 POKE 35,24: VTAB 24: HTAB 1: CALL -868
3350 PRINT "Press Escape to Exit ";: POKE 35,21
3360 X$ = ""
3370 VTAB 20: HTAB 1: PRINT P$;X$;: CALL -868
3380 GET Q$
3390 IF Q$ = CHR$(27) THEN X$ = "": RETURN
3400 IF Q$ = CHR$(13) THEN RETURN
3410 IF Q$ = CHR$(127) OR Q$ = CHR$(8) THEN 3450
3420 IF Q$ <"0" OR Q$ >"9" THEN 3440
3430 IF LEN(X$) <X THEN X$ = X$ +Q$: GOTO 3370
3440 PRINT CHR$(7);: GOTO 3380
3450 IF LEN(X$) = 1 THEN 3360
3460 IF X$ = "" THEN 3440
3470 X$ = LEFT$(X$, LEN(X$) -1): GOTO 3370