DECLARE SUB distcalc () DECLARE SUB fretdist () DECLARE SUB intrvlout () DECLARE SUB intrvlcalc () 10 CLS CONST trt = 1.059463094# DIM SHARED intrvl(1 TO 24) AS DOUBLE DIM SHARED dist(0 TO 24) AS DOUBLE DIM SHARED slength AS SINGLE DIM SHARED prt AS INTEGER prt = 0 INPUT "Enter the scale length in inches (decimal). "; slength CALL intrvlcalc CALL distcalc 100 PRINT "new = enter new scale length" PRINT "prt = output to printer" PRINT "int = outputs fret intervals" PRINT "dst = ouputs distance from all frets to a particular fret." PRINT "q = quit " INPUT "enter command"; comm$ IF comm$ = "new" GOTO 10 IF comm$ = "prt" THEN prt = 1 IF comm$ = "int" THEN CALL intrvlout IF comm$ = "dst" THEN CALL fretdist IF comm$ = "q" THEN SYSTEM GOTO 100 SUB distcalc DIM sum AS SINGLE sum = 0 FOR a = 1 TO 24 sum = sum + intrvl(a) dist(a) = sum NEXT a END SUB SUB fretdist DIM distance AS SINGLE DIM distance64 AS SINGLE DIM distance64p AS INTEGER INPUT "Enter fret # (nut = 0) from which measurements are taken. "; fretnum CLS PRINT "Scale length = "; slength PRINT "Distances from fret # "; fretnum; " (0=nut)" IF prt = 1 THEN LPRINT " " IF prt = 1 THEN LPRINT "Scale length = "; slength IF prt = 1 THEN LPRINT "Distances from fret # "; fretnum; " (0=nut)" FOR a = 0 TO 24 distance = ABS(dist(a) - dist(fretnum)) distance64 = distance * 64 distance64 = distance64 * 10 distance64 = CINT(distance64) distance64 = distance64 / 10 distance64p = 0 330 IF distance64 >= 64 THEN distance64 = distance64 - 64 distance64p = distance64p + 1 GOTO 330 END IF distance64 = distance64 * 10 distance64 = CINT(distance64) distance64 = distance64 / 10 PRINT "To fret # "; a; " is "; distance64p; " and "; distance64; "/64 inches" IF prt = 1 THEN LPRINT " " IF prt = 1 THEN LPRINT "To fret # "; a; " is "; distance64p; " and "; distance64; "/64 inches" NEXT a END SUB SUB intrvlcalc FOR a = 1 TO 24 intrvl(a) = (slength / 17.817162#) / (trt ^ (a - 1)) NEXT a END SUB SUB intrvlout DIM space AS SINGLE DIM spa64 AS SINGLE DIM spa64p AS INTEGER PRINT "scale length = "; slength; " inches" IF prt = 1 THEN LPRINT " " IF prt = 1 THEN LPRINT "scale length = "; slength; " inches" FOR a = 1 TO 24 space = intrvl(a) spa64 = intrvl(a) * 64 spa64p = 0 spa64 = spa64 * 10 spa64 = CINT(spa64) spa64 = spa64 / 10 200 IF spa64 >= 64 THEN spa64 = spa64 - 64 spa64p = spa64p + 1 GOTO 200 END IF spa64 = spa64 * 10 spa64 = CINT(spa64) spa64 = spa64 / 10 PRINT "fret "; a - 1; " to "; a; " = "; space; " ", spa64p; " and "; spa64; " / 64 inches" IF prt = 1 THEN LPRINT " " IF prt = 1 THEN LPRINT "fret "; a - 1; " to "; a; " = "; space; " ", spa64p; " and "; spa64; " / 64 inches" NEXT a END SUB