home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib36a.dsk / APRIL.1989 / DISK.SLEEVER.bas next >
BASIC Source File  |  2023-02-26  |  7KB  |  128 lines

  1. 10  REM  *********************
  2. 20  REM  *    DISK.SLEEVER   *
  3. 30  REM  * BY MARK A. HEATH  *
  4. 40  REM  * COPYRIGHT(C) 1989 *
  5. 50  REM  * MICROSPARC, INC.  *
  6. 60  REM  * CONCORD, MA 01742 *
  7. 70  REM  *********************
  8. 80 B$ =  CHR$(136):U$ =  CHR$(223)
  9. 90  FOR I = 1 TO 40:BB$ = BB$ + CHR$(136):UU$ = UU$ + CHR$(95): NEXT 
  10. 100 PS = 1:ST$ =  CHR$(27) + CHR$(78):SLOT = 6:DRIVE = 1
  11. 110  DIM D$(66)
  12. 120  REM  *** MAIN MENU ***
  13. 130  TEXT : HOME : PRINT :A$ = "Disk Sleever By Mark Heath": GOSUB 740:A$ = "(C) 1989 BY MICROSPARC, INC.": GOSUB 740:A$ = "----------------------------": GOSUB 740: REM  28 -'S
  14. 140  VTAB 15:A$ = "Use numbers/arrows & press <RETURN>": GOSUB 740
  15. 150  VTAB 19:A$ = "Current drive: Slot " + STR$(SLOT) +", Drive " + STR$(DRIVE): GOSUB 740
  16. 160  VTAB 21:A$ = "Printer slot: " + STR$(PS): GOSUB 740: VTAB 5
  17. 170  RESTORE : READ B: FOR A = 1 TO B: READ A$(A): NEXT 
  18. 180  DATA  5,PRINT SLEEVE WITH CATALOG,PRINT SLEEVE WITHOUT CATALOG,CHANGE SLOT AND DRIVE,CHANGE PRINTER SLOT,QUIT
  19. 190  FOR A = 1 TO B: PRINT "     ";A;". ";A$(A): PRINT : NEXT :SE = 1: GOSUB 270
  20. 200  WAIT  -16384,128:KEY =  PEEK( -16384) -128: POKE  -16368,0
  21. 210  IF KEY = 21  OR KEY = 10  THEN  GOSUB 290:SE = SE +1: GOTO 310
  22. 220  IF KEY = 8  OR KEY = 11  THEN  GOSUB 290:SE = SE -1: GOTO 310
  23. 230  IF KEY > = 49  AND KEY < = 48 +B  THEN  GOSUB 290:SE = KEY -48: GOTO 310
  24. 240  IF KEY = 13  THEN  ON SE GOTO 390,370,440,530,350
  25. 250  GOTO 200
  26. 260  REM   TURN CURSOR ON
  27. 270  VTAB 3 +(SE *2): HTAB 2: INVERSE : PRINT "--> ";SE;". ";A$(SE): NORMAL : RETURN 
  28. 280  REM   TURN CURSOR OFF
  29. 290  VTAB 3 +(SE *2): HTAB 2: PRINT "    ";SE;". ";A$(SE): RETURN 
  30. 300  REM    CHECK SE FOR VALIDITY
  31. 310  IF SE <1  THEN SE = B
  32. 320  IF SE >B  THEN SE = 1
  33. 330  GOSUB 270: GOTO 200
  34. 340  REM  *** QUIT ***
  35. 350  HOME : END 
  36. 360  REM  *** PRINT SLEEVE, NO CATALOG ***
  37. 370 CF = 0: GOSUB 780: GOTO 130
  38. 380  REM  *** PRINT SLEEVE WITH CATALOG ***
  39. 390  HOME : PRINT : PRINT "Place your ProDOS disk in slot ";SLOT;",": PRINT 
  40. 400  PRINT "drive ";DRIVE;", and press RETURN...";:K$ = "":L = 1: GOSUB 580: PRINT 
  41. 410  IF K$ =  CHR$(27)  THEN 130
  42. 420  GOSUB 1080:CF = 1: GOSUB 780: GOTO 130
  43. 430  REM  *** CHANGE SLOT AND DRIVE ***
  44. 440  HOME : PRINT "Change Slot and Drive": PRINT "---------------------": REM  22 DASHES
  45. 450  PRINT : PRINT "The directory of the disk in the drive": PRINT "that you select will be printed on the": PRINT "disk sleeve.  The selected drive must"
  46. 460  PRINT "contain a ProDOS disk."
  47. 470  VTAB 10: CALL  -958: PRINT "Enter slot (1-7): ";:K$ =  STR$(SLOT):L = 1: GOSUB 580: PRINT : IF K$ =  CHR$(27)  THEN 130
  48. 480 SLOT =  VAL(K$): IF SLOT <1  OR SLOT >7  THEN 470
  49. 490  VTAB 12: CALL  -958: PRINT "Enter drive (1-2): ";:K$ =  STR$(DRIVE):L = 1: GOSUB 580: PRINT : IF K$ =  CHR$(27)  THEN 470
  50. 500 DRIVE =  VAL(K$): IF DRIVE <1  OR DRIVE >2  THEN 490
  51. 510  GOTO 130
  52. 520  REM  *** CHANGE PRINTER SLOT ***
  53. 530  HOME : PRINT "Change Printer Slot": PRINT "-------------------": REM  19 DASHES
  54. 540  VTAB 4: CALL  -958: PRINT "Enter your printer slot: (1-7) ";:K$ =  STR$(PS):L = 1: GOSUB 580: PRINT : IF K$ =  CHR$(27)  THEN 130
  55. 550 PS =  VAL(K$): IF PS <1  OR PS >7  THEN 540
  56. 560  GOTO 130
  57. 570  REM    *** INPUT ROUTINE ***
  58. 580  IF K$ = ""  THEN 600
  59. 590  INVERSE : PRINT K$;: NORMAL : PRINT B$;
  60. 600  WAIT  -16384,128:K =  PEEK( -16384): IF K = 155  THEN K$ =  CHR$(27): POKE  -16368,0: RETURN 
  61. 610  POKE  -16368,0
  62. 620  IF K = 141  THEN  NORMAL : PRINT K$;: PRINT B$;: RETURN 
  63. 630  IF K <177  OR K = 255  OR K >183  THEN 600
  64. 640  GOTO 720
  65. 650  POKE  -16368,0
  66. 660 K =  PEEK( -16384): IF K <128  THEN 660
  67. 670  IF K = 141  THEN  NORMAL : PRINT K$;: PRINT B$;: POKE  -16368,0: RETURN 
  68. 680  IF K >183  OR K <177  AND K < >255  THEN 710
  69. 690  IF K = 155  THEN K$ =  CHR$(27): POKE  -16368,0: RETURN 
  70. 700  GOTO 600
  71. 710  PRINT  CHR$(7);:K$ = "": GOTO 600
  72. 720 K$ = "": INVERSE : PRINT  CHR$(K);: PRINT B$;:K$ = K$ + CHR$(K -128):LI = LI +1: NORMAL : GOTO 600
  73. 730  REM  *** CENTER A$ ON CURRENT LINE ***
  74. 740  HTAB 20 - INT( LEN(A$)/2): PRINT A$: RETURN 
  75. 750  REM  *** PRINT THE ENVELOPE ***
  76. 760  REM  *** NOTE: APPLE II+ USERS CAN MODIFY THIS PORTION OF CODE... ***
  77. 770  REM  *** IN ORDER TO PRINT THE BACKSLASH CHARACTER USE CHR$(47) ***
  78. 780  HOME : VTAB 10: PRINT "Make sure your printer is on-line": PRINT : PRINT "and press RETURN...";:K$ = "":L = 1: GOSUB 580: PRINT : IF K$ =  CHR$(27)  THEN 130
  79. 790  GOSUB 1040
  80. 800  FOR A = 1 TO 6: PRINT " ";: NEXT : FOR A = 1 TO 55: PRINT "_";: NEXT : PRINT 
  81. 810  FOR A = 1 TO 23: GOSUB 880: NEXT 
  82. 820  FOR A = 1 TO 5: PRINT " ";: NEXT : PRINT "!";: FOR A = 1 TO 55: PRINT ".";: NEXT : PRINT "!"
  83. 830  FOR A = 1 TO 27: FOR B = 1 TO 6: PRINT " ";: NEXT B: PRINT "!";: FOR B = 1 TO 53: PRINT " ";: NEXT B: PRINT "!": NEXT A
  84. 840  FOR A = 1 TO 6: PRINT " ";: NEXT : PRINT "\";: FOR A = 1 TO 53: PRINT " ";: NEXT : PRINT "/"
  85. 850  FOR A = 1 TO 7: PRINT " ";: NEXT : PRINT "\";: FOR A = 1 TO 51: PRINT "_";: NEXT : PRINT "/"
  86. 860  GOSUB 1060: GOTO 130
  87. 870  REM  *** PRINT LINE #A OF FRONT ***
  88. 880  IF A = 1  THEN L$ = "    /":R$ = "\": GOTO 990
  89. 890  IF A = 2  THEN L$ = "   / ":R$ = " \": GOTO 990
  90. 900  IF A = 3  THEN L$ = "  /  ":R$ = "  \": GOTO 990
  91. 910  IF A = 4  THEN L$ = " /   ":R$ = "   \": GOTO 990
  92. 920  IF A = 5  THEN L$ = "/    ":R$ = "    \": GOTO 990
  93. 930  IF A = 19  THEN L$ = "\    ":R$ = "    /": GOTO 990
  94. 940  IF A = 20  THEN L$ = " \   ":R$ = "   /": GOTO 990
  95. 950  IF A = 21  THEN L$ = "  \  ":R$ = "  /": GOTO 990
  96. 960  IF A = 22  THEN L$ = "   \ ":R$ = " /": GOTO 990
  97. 970  IF A = 23  THEN L$ = "    \":R$ = "/": GOTO 990
  98. 980 L$ = "!    ":R$ = "    !"
  99. 990  PRINT L$;"!";: IF CF  THEN  GOSUB 1160: GOTO 1010
  100. 1000 A$ = "": FOR B = 1 TO 55:A$ = A$ +" ": NEXT 
  101. 1010  PRINT A$;"!";R$
  102. 1020  RETURN 
  103. 1030  REM  *** INITIALIZE PRINTER ***
  104. 1040  PRINT  CHR$(4)"PR#"PS: PRINT ST$: RETURN 
  105. 1050  REM  *** TURN PRINTER OFF ***
  106. 1060  PRINT  CHR$(4)"PR#0": RETURN 
  107. 1070  REM  *** READ DIRECTORY INTO D$ ***
  108. 1080  ONERR  GOTO 1140
  109. 1090  PRINT  CHR$(4)"PREFIX,S"SLOT",D";DRIVE: PRINT  CHR$(4)"PREFIX": INPUT PR$
  110. 1100  PRINT  CHR$(4)"OPEN ";PR$;",TDIR": PRINT  CHR$(4)"READ ";PR$: INPUT D$(0): INPUT A$: INPUT A$:N = 0
  111. 1110  INPUT D$(N +1): IF D$(N +1) = ""  THEN 1130
  112. 1120 N = N +1: IF N <69  THEN 1110
  113. 1130  PRINT  CHR$(4)"CLOSE": POKE 216,0: RETURN 
  114. 1140  POKE 216,0: HOME : VTAB 10: INPUT "Disk error.  Please press RETURN...";A$: GOTO 130
  115. 1150  REM  *** BUILD LINE #A WITH CATALOG ***
  116. 1160  IF N <23  THEN 1260
  117. 1170  IF N <45  THEN 1220
  118. 1180  IF A = 1  THEN A$ = "  " + LEFT$(D$(0),16):C = 55 - LEN(A$): FOR B = 1 TO C:A$ = A$ +" ": NEXT : RETURN 
  119. 1190 A$ = "  " + MID$ (D$(A -1),2,15) +"  "
  120. 1200 A$ = A$ + MID$ (D$(A +21),2,15) +"  ": IF A +43 >N  THEN  FOR B = 1 TO 19:A$ = A$ +" ": NEXT : RETURN 
  121. 1210 A$ = A$ + MID$ (D$(A +43),2,15) +"    ": RETURN 
  122. 1220  IF A = 1  THEN A$ = "  " + LEFT$(D$(0),16):C = 55 - LEN(A$): FOR B = 1 TO C:A$ = A$ +" ": NEXT : RETURN 
  123. 1230 A$ = "": FOR B = 1 TO 5:A$ = A$ +" ": NEXT :A$ = A$ + MID$ (D$(A -1),2,19): FOR B = 1 TO 6:A$ = A$ +" ": NEXT 
  124. 1240  IF A +21 >N  THEN  FOR B = 1 TO 25:A$ = A$ +" ": NEXT : RETURN 
  125. 1250 A$ = A$ + MID$ (D$(A +21),2,19): FOR B = 1 TO 6:A$ = A$ +" ": NEXT : RETURN 
  126. 1260  IF A = 1  THEN A$ = "  " + LEFT$(D$(0),16):C = 55 - LEN(A$): FOR B = 1 TO C:A$ = A$ +" ": NEXT : RETURN 
  127. 1270 A$ = "": IF A -1 >N  THEN : FOR B = 1 TO 55:A$ = A$ +" ": NEXT : RETURN 
  128. 1280  FOR B = 1 TO 5:A$ = A$ +" ": NEXT :A$ = A$ + MID$ (D$(A -1),2,44): FOR B = 1 TO 6:A$ = A$ +" ": NEXT : RETURN