home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / misc / casslbl.lbr / CASSLBL.BZS / CASSLBL.BAS
Encoding:
BASIC Source File  |  1993-10-25  |  17.0 KB  |  353 lines

  1. 10 '    *************************************************************
  2.  
  3.     *****              CASSETTE  LABEL  PRINTER             *****
  4. 11 '    *****             2/25/90            *****
  5.  
  6.     ***** (c) 1990 by Richard Altman -- All Rights Reserved *****
  7.  
  8.     *************************************************************
  9. 12 '
  10. 13 '     USER SUPPORTED
  11. 14 '
  12. 15 '     This program is user-supported software.  It is copyrighted and cannot
  13. 16 ' be sold for profit (without the author's express written permission),  but
  14. 17 ' it may be copied and distributed for free.
  15. 18 '
  16. 19 '     The SHAREWARE concept is a distribution method that gives the user the
  17. 20 ' opportunity to try a software program before buying.  Its continued exist-
  18. 21 ' ence depends on  each user paying for what he does, in fact, use.
  19. 22 '
  20. 23 '     If you find this program [CASSLBL.BAS] useful, please send the $20 (or
  21. 24 ' more) registration fee directly to the author:
  22. 25 '
  23. 26 '        Richard S. Altman -- P.O. Box 4388 -- Clearlake, CA 95422
  24. 27 '
  25. 28 '     Upon registration,  you will receive a floppy diskette  containing the
  26. 29 ' latest version of this program, as well as a printed manual and a COMPILED
  27. 30 ' version.  You will also receive an ADDRESS LABEL program,  a FREE calendar
  28. 31 ' printing program and other programs by the same author.
  29. 32 '
  30. 33 '     WHEN ORDERING,  please be sure to indicate  single  or double  density
  31. 34 ' disk drive,  and the name of the program [CASSLBL.BAS].   Comments on pro-
  32. 35 ' grams are also most welcome!
  33. 36 '
  34. 37 '     Due to  possible unforeseen circumstances,  the above offer is subject
  35. 38 ' to change without notice.
  36. 39 '
  37. 40 '    SET UP VARIABLES:    String:   A$-F$
  38. 41 '    Integer:   G-J, T-Z    Single Precision:   K-S
  39.  
  40.  
  41. 42 DEFSTR A-F:DEFINT G-J,T-Z:WIDTH 255:CLS=CHR$(26):PRINT CLS:C7=CHR$(7)
  42. 43 DIM F(24),LC(34),AT(34),AB(34),A1(34),A2(34),A3(34),AL(34),AR(34),A4(34)
  43. 44 CLR=CHR$(24):CX=CHR$(23):A=CHR$(34):LR$=" RETURN ":ESC=CHR$(27):FE=ESC+"="
  44. 45 CO=ESC+"B4":CF=ESC+"C4":EO=ESC+"B0":EF=ESC+"C0":FC=" >>>>>>>> "+CX
  45. 46 EL=ESC+"L":FOR X=1 TO 24:F(X)=FE+CHR$(X+31)+CHR$(32):NEXT:GOSUB 5020
  46. 47 DEF FNF(X,Y)=FE+CHR$(X+31)+CHR$(Y+31):CLN=STRING$(56,32)
  47. 48 DEF FNTITLE$(X,M$)=FNF(X,1)+STRING$((80-LEN(M$))/2,12)+M$:FA=F(23)+FC
  48. 49 DD=STRING$(79,45):FF=FNF(11,18)+CLN+C7+FNF(11,18):EE=STRING$(78,32)
  49. 50 F1="first line":F2="second line":F3="third line":F4="bottom line"
  50. 51 S$=STRING$(44,32)+STRING$(44,8):S1$=STRING$(45,32)+STRING$(45,8):F="   "
  51. 52 F8=F+STRING$(30,46)+"|"+STRING$(34,8):FY=" correct?  (Y/N)   "
  52. 53 FRR=" <RETURN> for  ==blank==   ? ":FR=FNF(16,15)+"PRESS"+FRR
  53. 54 F9=LEFT$(F8,33)+"......|"+STRING$(40,8):GOTO 100
  54. 55 '
  55. 60 '    Print box outline & title
  56. 61 PRINT CLS
  57. 62 L$=FNTITLE$(2,"  CASSETTE  LABEL  PROGRAM  "):GOSUB 5065
  58. 63 PRINT EL CHR$(43)CHR$(42)CHR$(43)CHR$(181)CF'    Top
  59. 64 PRINT EL CHR$(53)CHR$(32)CHR$(43)CHR$(42)'        L Diag
  60. 65 PRINT EL CHR$(53)CHR$(191)CHR$(43)CHR$(181)'        R Diag
  61. 66 PRINT EL CHR$(54)CHR$(32)CHR$(111)CHR$(32)'        L Side
  62. 67 PRINT EL CHR$(54)CHR$(191)CHR$(111)CHR$(191)'    R Side
  63. 68 PRINT EL CHR$(111)CHR$(32)CHR$(111)CHR$(191)CO'    Bottom
  64. 69 RETURN
  65. 70 LPRINT ESC"E";ESC CHR$(34);CHR$(15);:RETURN:'    Elite
  66. 72 LPRINT ESC"N";ESC CHR$(33);CHR$(15);:RETURN:'    Pica--BOLD
  67. 74 LPRINT ESC"Q";ESC CHR$(34);CHR$(15);:RETURN:'    Compressed
  68. 75 L$=FA:GOSUB 5065:PRINT"  NEW ";:RETURN
  69. 80 PRINT F9;
  70. 82 LINE INPUT":  ";FLN:LN=LEN(FLN):RETURN
  71. 85 RS=INT(RS):RS$=STR$(RS):RZ$=STRING$(43,32)+"C-":RETURN
  72. 90 GOSUB 6000:IF AK=CHR$(13) THEN LZ$=F+F:RETURN
  73. 91 IF AK="A" THEN LZ$="SIDE A":RETURN
  74. 92 IF AK="B" THEN LZ$="SIDE B":RETURN ELSE 90
  75. 95 '
  76. 100 '    Start program
  77. 105 GOSUB 60:PRINT FNTITLE$(5,"PROGRAM FEATURES:")+CF
  78. 110 PRINT FNF(8,5)"1 --  At the top of the label, you may print a MAXIMUM of ";
  79. 115 PRINT"3 lines.":GOSUB 70:PRINT FNF(10,5)"2 --  On the first line only, ";
  80. 120 PRINT"you may print the line in BOLD LETTERS."FNF(12,5)"3 --  ";
  81. 125 L$=" OPTIONAL: ":GOSUB 5065:PRINT"  You may add "A"SIDE A/B"A;
  82. 130 PRINT" on the left side of the label."FNF(14,5)"4 --  ";:GOSUB 5065
  83. 135 PRINT"  You may add the LENGTH on the right side."FNF(16,5)"5 --  ";
  84. 140 GOSUB 5065:PRINT"  It is possible to print a single line at the bottom."
  85. 145 PRINT FNF(18,5)"6 --  ";:GOSUB 5065:PRINT"  You may also SAVE/LOAD a ";
  86. 150 PRINT"label onto a Disk File."FNF(24,11)"Press <"CO;:L$=" ANY KEY "
  87. 155 GOSUB 5065:PRINT"> to start..."F;C7;:GOSUB 6000
  88. 160 PRINT F(22)CX:GOSUB 4500
  89. 165 GOSUB 60:GOTO 3500
  90. 170 IF XL<>0 THEN 700
  91. 200 '    Input the label data
  92. 210 GOSUB 60:PRINT FNF(7,5)"Input data for the ";:L$="first line"
  93. 220 GOSUB 5050:PRINT":"FNF(12,10)STRING$(52,46)
  94. 230 PRINT FNF(11,10)"Do you want the FIRST LINE in BOLD LETTERS?   (Y/N)"F;
  95. 240 GOSUB 6050:IF AK="Y" OR AK=CHR$(13) THEN 350
  96. 300 '    First line regular
  97. 310 BOLD="N":PRINT FNF(11,10)CLN;FNF(12,10)CLN
  98. 320 PRINT FNF(12,18)STRING$(36,46)" (36 char. max.)"FNF(11,18);
  99. 330 LINE INPUT;LN$:L=LEN(LN$):IF L<3 OR L>36 THEN PRINT FF;:GOTO 330 ELSE 400
  100. 350 '    First line BOLD
  101. 360 BOLD="Y":PRINT FNF(11,10)CLN FNF(12,10)CLN
  102. 370 PRINT FNF(12,18)STRING$(30,46)" (";:L$=" BOLD ":GOSUB 5065
  103. 380 PRINT"  30 char. max.)"FNF(11,18);
  104. 390 LINE INPUT;LN$:L=LEN(LN$):IF L<3 OR L>30 THEN PRINT FF;:GOTO 390
  105. 400 '    2nd and 3rd lines
  106. 410 LINE1$=LN$
  107. 420 LL$="second":GOSUB 450:LINE2$=LN$
  108. 430 LL$="third": GOSUB 450:LINE3$=LN$:GOTO 500
  109. 450 '    2nd/3rd/Bottom lines
  110. 460 GOSUB 60:PRINT FNF(7,5)"Input data for the ";:L$=LL$+" line":GOSUB 5050
  111. 470 PRINT":"FNF(12,18)STRING$(36,46)" (36 char. max.)"FNF(11,18);
  112. 480 LINE INPUT;LN$:IF LEN(LN$)>36 THEN PRINT FF;:GOTO 480
  113. 490 RETURN
  114. 500 '    "SIDE 1," etc.
  115. 510 GOSUB 60:PRINT FNF(7,5)"Input for the ";:L$="SIDE #":GOSUB 5050:PRINT":"
  116. 520 PRINT FNF(11,15)"Enter <";:L$=" A ":GOSUB 5065:PRINT"> for "A"SIDE A"A
  117. 530 PRINT FNF(13,15)"Enter <";:L$=" B ":GOSUB 5065:PRINT"> for "A"SIDE B"A;FR;
  118. 540 GOSUB 90
  119. 550 '    Tape length
  120. 560 GOSUB 60:PRINT FNF(7,5)"Input for ";:L$="Tape length":GOSUB 5050:PRINT":"
  121. 570 PRINT FNF(11,15)"Enter <";:L$=" NUMBER ":GOSUB 5065:PRINT"> for Tape ";
  122. 575 PRINT"Length"FNF(13,22);:L$=" Example -- `60' for a C-60 tape. ":GOSUB 5065
  123. 580 PRINT FR:PRINT FNF(16,50);:LINE INPUT;RS$:RS=VAL(RS$):IF RS<5 THEN 600
  124. 585 GOSUB 85:IF RS>120 THEN PRINT FNF(16,50)STRING$(8,32);C7:GOTO 580
  125. 590 IF RS>99 THEN RZ$=RZ$+RIGHT$(RS$,3) ELSE RZ$=RZ$+RIGHT$(RS$,2)
  126. 600 '    Bottom line
  127. 610 LL$="bottom":GOSUB 450:LINE4$=LN$
  128. 700 '    Add spaces to lines
  129. 710 L=LEN(LINE1$):LB=36-L:IF BOLD="Y" THEN L1=30-L ELSE L1=36-L
  130. 720 L=LEN(LINE2$):L2=36-L:L=LEN(LINE3$):L3=36-L:L=LEN(LINE4$):L4=36-L
  131. 730 LB=LB\2+3:L1=L1\2+3:L2=L2\2+3:L3=L3\2+3:L4=L4\2+3
  132. 740 SB=LB+1:S1=L1+1:S2=L2+1:S3=L3+1:S4=L4+1:IF RT=9 THEN RT=0:RETURN
  133.  
  134.  
  135. 800 '    Check input
  136. 810 GOSUB 60:IF BOLD="Y" THEN L$=FNF(6,8)+" BOLD ":GOSUB 5065:PRINT">>>":B1=L$
  137. 815 PRINT FNF(6,20) STRING$(SB,32)LINE1$ STRING$(SB,32)
  138. 820 PRINT FNF(8,20) STRING$(S2,32)LINE2$ STRING$(S2,32)
  139. 825 PRINT FNF(10,20)STRING$(S3,32)LINE3$ STRING$(S3,32)
  140. 830 PRINT FNF(14,8)LZ$ FNF(14,26)RZ$
  141. 835 PRINT EL CHR$(76)CHR$(72)CHR$(76)CHR$(151)'    Top
  142. 840 PRINT EL CHR$(81)CHR$(67)CHR$(76)CHR$(72)'    L Diag 1
  143. 845 PRINT EL CHR$(81)CHR$(156)CHR$(76)CHR$(151)'R Diag 1
  144. 850 PRINT EL CHR$(81)CHR$(67)CHR$(90)CHR$(67)'     L Side
  145. 855 PRINT EL CHR$(81)CHR$(156)CHR$(90)CHR$(156)'R Side
  146. 860 PRINT EL CHR$(90)CHR$(67)CHR$(95)CHR$(72)'    L Diag 2
  147. 865 PRINT EL CHR$(90)CHR$(156)CHR$(95)CHR$(151)'R Diag 2
  148. 870 PRINT EL CHR$(95)CHR$(72)CHR$(95)CHR$(151)'    Bottom
  149. 875 PRINT FNF(18,20)STRING$(S4,32)LINE4$ STRING$(S4,32)FNF(23,22);
  150. 880 IF RET=99 THEN RET=0:RETURN
  151. 885 L$="  IS THE ABOVE DATA CORRECT?   (Y/N)  ":GOSUB 5065:PRINT C7;
  152. 890 GOSUB 6050:IF AK="Y" OR AK=CHR$(13) THEN 2000
  153.  
  154.  
  155. 1000 '    Make corrections in Label
  156. 1010 PRINT F(6)" ":GOSUB 62:PRINT F(22)CX:L$=B1:GOSUB 5060
  157.  
  158.  
  159. 1050 GOSUB 1700:J=1:GOSUB 1500:PRINT F1;FY;
  160. 1060 GOSUB 6050:IF AK="N" THEN 1070 ELSE 1100
  161. 1070 GOSUB 75:L$=F1:GOSUB 5050:IF BOLD="Y" THEN PRINT F8; ELSE PRINT F9;
  162. 1080 GOSUB 82:IF BOLD="N" THEN 1090
  163. 1085 IF LN>30 THEN PRINT C7;:GOTO 1070 ELSE 1095
  164. 1090 IF LN>36 THEN PRINT C7;:GOTO 1070
  165. 1095 IF LN>3 THEN LINE1$=FLN:RT=9:GOSUB 700
  166.  
  167.  
  168. 1100 GOSUB 1600:J=2:GOSUB 1500:PRINT F2;FY;
  169. 1110 GOSUB 6050:IF AK="N" THEN 1120 ELSE 1150
  170. 1120 GOSUB 75:L$=F2:GOSUB 5050:GOSUB 80
  171. 1130 IF LN>36 THEN PRINT C7;:GOTO 1120
  172. 1140 IF LN>3 THEN LINE2$=FLN:RT=9:GOSUB 700
  173.  
  174.  
  175. 1150 GOSUB 1600:J=3:GOSUB 1500:PRINT F3;FY;
  176. 1160 GOSUB 6050:IF AK="N" THEN 1170 ELSE 1200
  177. 1170 GOSUB 75:L$=F3:GOSUB 5050:GOSUB 80
  178. 1180 IF LN>36 THEN PRINT C7;:GOTO 1170
  179. 1190 IF LN>3 THEN LINE3$=FLN:RT=9:GOSUB 700
  180.  
  181.  
  182. 1200 GOSUB 1600:J=4:GOSUB 1500:PRINT A"SIDE X"A" label "FY;
  183. 1210 GOSUB 6050:IF AK="N" THEN 1220 ELSE 1250
  184. 1220 GOSUB 5065:PRINT"  A) for ";:L$="SIDE A":GOSUB 5050:PRINT"      B) for ";
  185. 1230 L$="SIDE B":GOSUB 5050:PRINT"    "FRR;:GOSUB 90
  186.  
  187.  
  188. 1250 GOSUB 1600:J=5:GOSUB 1500:PRINT A"TAPE LENGTH"A;FY;
  189. 1260 GOSUB 6050:IF AK="N" THEN 1270 ELSE 1300
  190. 1270 GOSUB 5065:PRINT"  Enter <";:L$="NUMBER":GOSUB 5050:PRINT"> for Tape ";
  191. 1280 PRINT"Length -- "FNF(24,20)"Example -- `60' for a C-60 tape."FNF(23,48);
  192. 1285 LINE INPUT;RS$:RS=VAL(RS$):IF RS=0 THEN 1300
  193. 1290 GOSUB 85:IF RS>120 THEN 1270
  194. 1295 IF RS>99 THEN RZ$=RZ$+RIGHT$(RS$,3) ELSE RZ$=RZ$+RIGHT$(RS$,2)
  195.  
  196.  
  197. 1300 GOSUB 1600:J=6:GOSUB 1500:PRINT F4;FY;
  198. 1305 GOSUB 6050:IF AK="N" THEN 1310 ELSE 1325
  199. 1310 GOSUB 75:L$=F4:GOSUB 5050:GOSUB 80
  200. 1315 IF LN>36 THEN PRINT C7;:GOTO 1310
  201. 1320 IF LN>3 THEN LINE4$=FLN:RT=9:GOSUB 700
  202. 1325 GOTO 700
  203. 1500 '    Correction subroutine #1
  204. 1510 GOSUB 5010:RT=9:ON J GOSUB 1730,1740,1750,1760,1770,1785
  205. 1520 RT=0:GOSUB 5015:L$=FA:GOSUB 5065:PRINT"  Is the ";:RETURN
  206. 1600 '    Correction subroutine #2
  207. 1610 GOSUB 5010:GOSUB 5030:RT=9:ON J GOSUB 1730,1740,1750,1760,1770,1785
  208. 1620 RT=0:GOSUB 5015:GOSUB 5035:GOSUB 5025
  209. 1630 FOR X=6 TO 18 STEP 2:PRINT FNF(X,64)F;F:NEXT:GOTO 5020
  210. 1700 '    Correction Screen subroutine
  211. 1710 GOSUB 5010:GOSUB 5030:FOR X=5 TO 11:PRINT FNF(X,19)S1$:NEXT
  212. 1720 FOR X=17 TO 19:PRINT FNF(X,19)S1$:NEXT
  213. 1730 PRINT FNF(6,20) S$;STRING$(SB,32)LINE1$;STRING$(SB,32):IF RT=9 THEN RETURN
  214. 1740 PRINT FNF(8,20) S$;STRING$(S2,32)LINE2$;STRING$(S2,32):IF RT=9 THEN RETURN
  215. 1750 PRINT FNF(10,20)S$;STRING$(S3,32)LINE3$;STRING$(S3,32):IF RT=9 THEN RETURN
  216. 1760 PRINT FNF(14,7)" "LZ$" ":IF RT=9 THEN RETURN
  217. 1770 PRINT FNF(14,69)" "RIGHT$(RZ$,LEN(RZ$)-43)" ";
  218. 1775 IF LEN(RZ$)=47 THEN PRINT" " ELSE PRINT
  219. 1780 IF RT=9 THEN RETURN
  220. 1785 PRINT FNF(18,20)S$;STRING$(S4,32)LINE4$;STRING$(S4,32):IF RT=9 THEN RETURN
  221. 1790 GOSUB 5015:GOTO 5035
  222.  
  223.  
  224. 2000 '    Print Labels
  225. 2010 L$=F(23)+FC:GOSUB 5065
  226. 2020 PRINT"  How many LABELS (Max.=50) do you wish to print"F;F"  [X to ";
  227. 2030 PRINT"check]"STRING$(20,8);:INPUT QN$:QN=VAL(QN$):IF QN>50 THEN 2000
  228. 2040 IF QN$="X" OR QN$="x" THEN 800
  229. 2050 IF QN$="0" THEN 3000
  230. 2060 PRINT F(22)CX:IF QN<2 THEN QN=1:GOSUB 2200:GOTO 3000
  231. 2070 FOR Q=1 TO QN
  232. 2075 PRINT FNF(23,20)CF"Label #"Q;SPC(8)"Press <ANY KEY> to pause."F;CO;
  233. 2080 IF INKEY$<>"" THEN 2500
  234. 2090 GOSUB 2200:FOR T=1 TO 500:NEXT T,Q:GOTO 3000
  235. 2200 '    Printing Subroutine
  236. 2210 GOSUB 70:LPRINT EL"000";:IF BOLD="Y" THEN GOSUB 72 ELSE GOSUB 70
  237. 2220 LPRINT STRING$(L1,32)LINE1$:GOSUB 70
  238. 2230 LPRINT STRING$(L2,32)LINE2$
  239. 2240 LPRINT STRING$(L3,32)LINE3$:LPRINT:LPRINT:GOSUB 74:LPRINT" "LZ$;RZ$
  240. 2250 LPRINT:LPRINT:GOSUB 70:LPRINT STRING$(L4,32)LINE4$:LPRINT:LPRINT:RETURN
  241. 2500 '    Interrupt Printing
  242. 2510 GOSUB 60:L$=FNTITLE$(7," PRINTING INTERRUPTED "):GOSUB 5065
  243. 2520 PRINT FNF(10,15)"The PRINTER will pause when it finishes the last Label."
  244. 2530 PRINT FNF(12,15)"Press <";:L$=" Q ":GOSUB 5065
  245. 2540 PRINT"> to STOP (QUIT) printing."
  246. 2550 PRINT FNF(16,15)"Press any other key to continue..."F;:GOSUB 6000
  247. 2560 IF AK="Q" THEN 3000 ELSE RET=99:GOSUB 800:GOTO 2090
  248.  
  249.  
  250. 3000 '    Printing is finished -- What next?
  251. 3005 GOSUB 60:L$=LR$
  252. 3010 PRINT FNF(6,15)"Press <";:GOSUB 5065:PRINT"> to print some more Labels.";
  253. 3015 PRINT FNF(9,15)"OTHER OPTIONS:":L$=FNF(11,21)+" 1 ":GOSUB 5065
  254. 3020 L$="Old Label":PRINT"  ---  to start over  (NEW Label/ERASE ";:GOSUB 5050
  255. 3025 PRINT")":L$=FNF(13,21)+" 2 ":GOSUB 5065
  256. 3030 PRINT"  ---  to change/check the CURRENT Label.":L$=FNF(15,21)+" 3 "
  257. 3035 GOSUB 5065:PRINT"  --- to SAVE the Label on Disk File."
  258. 3040 L$=FNF(17,21)+" Q ":GOSUB 5065:PRINT"  ---  to QUIT to ";:L$="System"
  259. 3045 GOSUB 5050:PRINT"."FNF(6,62);
  260. 3050 GOSUB 6000:IF AK="Q" THEN 3400
  261. 3055 IF AK=CHR$(13) THEN RET=99:GOSUB 800:L$=F(22)+FC:GOSUB 5065:GOTO 2020
  262. 3060 IF AK="1" THEN 3200
  263. 3065 IF AK="2" THEN 800
  264. 3070 IF AK="3" THEN GOSUB 60:GOTO 4000 ELSE 3050
  265.  
  266.  
  267. 3200 '    --- NEW Label
  268. 3210 CLOSE:LX=0:XL=0:GOTO 165
  269.  
  270.  
  271. 3400 '    --- QUIT to System ?
  272. 3410 GOSUB 60:PRINT FNF(12,20)"Are you ready to QUIT to ";:L$="System"
  273. 3420 GOSUB 5050:PRINT"?   (Y/N)"F;C7;:GOSUB 6000
  274. 3430 IF AK="Y" THEN PRINT CLS:SYSTEM ELSE 3000
  275.  
  276.  
  277. 3500 '    Load LABELS from Disk File
  278. 3505 L$=FNTITLE$(5,"  INPUT LABELS from DISK FILE  "):GOSUB 5065:XL=0:LQ=21
  279. 3510 PRINT CF:FOR X=8 TO LQ-5:PRINT FNF(X,2)EE:NEXT:PRINT F(LQ)CX;CO
  280. 3515 CLOSE:OPEN "I",#1,"CASSLBL.DAT":LL=-15:L=8
  281. 3520 INPUT#1,LC(0),AT(0),AB(0),A1(0),A2(0),A3(0),AL(0),AR(0),A4(0)
  282. 3525 COUNT!=LC(0):FOR X=1 TO COUNT!:LL=LL+19:IF LL>61 THEN LL=4:L=L+1
  283. 3530 INPUT #1,LC(X),AT(X),AB(X),A1(X),A2(X),A3(X),AL(X),AR(X),A4(X)
  284. 3535 PRINT FNF(L,LL);USING"##";X;:PRINT": "AT(X);
  285. 3540 NEXT:LQ=(COUNT!-1)\4+13:IF LQ<15 THEN LQ=15
  286. 3545 PRINT F(LQ-3)C7;STRING$(80,131);CX
  287. 3550 PRINT F(LQ)  ">>>>>  Input the NUMBER of the file you've chosen --- "
  288. 3555 PRINT F(LQ+2)">>>>>  Press <"EO;LR$;EF"> to input a NEW Label,  or ";
  289. 3560 PRINT"press <"EO" X "EF"> to Delete a File."FNF(LQ,55);:INPUT LX$
  290. 3565 PRINT CX:XL=VAL(LX$):IF LX$="X" OR LX$="x" THEN 3585
  291. 3570 IF XL=0 THEN 170 ELSE IF XL>COUNT! THEN 3510
  292. 3575 BOLD=AB(XL):LINE1$=A1(XL):LINE2$=A2(XL):LINE3$=A3(XL):LZ$=AL(XL)
  293. 3580 RZ$=AR(XL):LINE4$=A4(XL):GOTO 170
  294. 3585 PRINT F(LQ)CX">>>>>  Input the NUMBER of the file you wish to DELETE -- ";
  295. 3590 INPUT LX:XL=LX:LC=LC(0):IF XL=0 OR XL>LC THEN 3510
  296. 3595 IF XL>2 THEN 3610
  297. 3600 PRINT F(LQ+2)">>>>>  ";:L$=" Files #1 and #2 cannot be deleted. "
  298. 3605 GOSUB 5065:PRINT"   Press <ANY KEY> to continue. "C7;:GOSUB 6000:GOTO 3510
  299. 3610 L$=AT(XL):PRINT F(LQ+2)">>>>> "XL;CHR$(8)": "A;:GOSUB 5050
  300. 3615 PRINT A" is the file to be DELETED."F;CX;:IF M$="**" THEN RETURN
  301. 3620 L$=" Correct  (Y/N)  ?? ":GOSUB 5065:PRINT C7;
  302. 3625 GOSUB 6000:LC=LC(0):IF AK="Y" THEN 3630 ELSE 3510
  303. 3630 M$="**":GOSUB 3610:M$=A
  304. 3635 FOR X=XL TO LC+1:AT(X)=AT(X+1):AB(X)=AB(X+1):A1(X)=A1(X+1):A2(X)=A2(X+1)
  305. 3640 A3(X)=A3(X+1):AL(X)=AL(X+1):AR(X)=AR(X+1):A4(X)=A4(X+1):NEXT
  306. 3645 LC=LC-1:FOR X=0 TO LC:LC(X)=LC:NEXT
  307. 3650 CLOSE:OPEN "O",#1,"CASSLBL.DAT":FOR X=0 TO LC
  308. 3655 WRITE#1,LC(X),AT(X),AB(X),A1(X),A2(X),A3(X),AL(X),AR(X),A4(X):NEXT
  309. 3660 GOTO 3510
  310.  
  311.  
  312. 4000 '    Save LABELS onto Disk file
  313. 4005 L$=FNTITLE$(7,"  SAVE LABELS onto DISK FILE  "):GOSUB 5065:AK=""
  314. 4010 IF COUNT!<32 THEN 4030
  315. 4015 PRINT FNF(12,14)"You have reached the MAXIMUM number of Labels (32) ..."
  316. 4020 PRINT FNF(14,14)"Press <ANY KEY> to return to Menu."F;C7;
  317. 4025 GOSUB 6000:GOTO 3000
  318. 4030 PRINT FNF(10,10)"1st line of Label:"F;LINE1$
  319. 4035 PRINT FNF(11,10)"2nd line of Label:"F;LINE2$
  320. 4040 PRINT FNF(12,10)"3rd line of Label:"F;LINE3$
  321. 4045 PRINT FNF(13,10)"4th line of Label:"F;LINE4$
  322. 4050 PRINT FNF(16,10)"Input the TITLE you wish to call this Label ---":CLOSE #1
  323. 4055 PRINT FNF(18,10)"Press <RETURN> to cancel this option and return to Menu."
  324. 4060 PRINT FNF(16,59);:LINE INPUT ATITLE:LA=LEN(ATITLE)
  325. 4065 IF LA<3 OR LA>15 THEN 3000
  326. 4070 FOR X=10 TO 18:PRINT FNF(X,2)EE:NEXT
  327. 4075 PRINT FNF(12,10)"Saving the label onto Disk File.":L$=ATITLE
  328. 4080 PRINT FNF(14,10)"Title = "A;:GOSUB 5050:PRINT A;F;
  329. 4085 OPEN "I",#1,"CASSLBL.DAT":INPUT#1,LC,AT,AB,A1,A2,A3,AL,AR,A4
  330. 4090 COUNT!=LC+1:FOR X=1 TO LC
  331. 4095 INPUT#1,LC(X),AT(X),AB(X),A1(X),A2(X),A3(X),AL(X),AR(X),A4(X):NEXT
  332. 4100 CLOSE:LC=COUNT!:FOR X=0 TO 32:LC(X)=LC:NEXT:AT(LC)=ATITLE
  333. 4105 OPEN "O",#1,"CASSLBL.DAT"
  334. 4110 AB(LC)=BOLD:A1(LC)=LINE1$:A2(LC)=LINE2$:A3(LC)=LINE3$
  335. 4115 AL(LC)=LZ$:AR(LC)=RZ$:A4(LC)=LINE4$:FOR X=0 TO LC
  336. 4120 WRITE #1,LC(X),AT(X),AB(X),A1(X),A2(X),A3(X),AL(X),AR(X),A4(X):NEXT
  337. 4125 CLOSE:GOTO 3000
  338.  
  339.  
  340. 4500 '    Check PRINTER alignment
  341. 4510 GOSUB 60:L$=FNTITLE$(6,"  CHECK PRINTER LINE SETTING  ")+CF:GOSUB 5065
  342. 4520 AK="":WIDTH LPRINT 96
  343. 4530 PRINT FNF(10,12)"Position PRINT HEAD at ";:L$="top":GOSUB 5050:K$=INKEY$
  344. 4540 PRINT" of Cassette Label.":L$=FNF(12,12)+"Manually":GOSUB 5050
  345. 4550 PRINT" reverse the platen one `click' for best position.":L$=LR$
  346. 4560 PRINT FNF(16,12)"Press <";:GOSUB 5065:PRINT"> when FINISHED."F;CO;C7;
  347. 4570 GOSUB 6000:IF AK=CHR$(13) OR AK="F" THEN RETURN ELSE 4570
  348.  
  349.  
  350. 5000 '    *****      Misc. Subroutines
  351.  
  352.  
  353. 5010 PRINT ESC "B0";:RETURN:'    Inverse Video ON/OFF
  354. 5015 PRINT ESC "C0";:RETURN
  355. 5020 PRINT ESC "B4";:RETURN:'    Turn Cursor ON/OFF
  356. 5025 PRINT ESC "C4";:RETURN
  357. 5030 PRINT ESC "B1";:RETURN:'    Reduced Intensity ON/OFF
  358. 5035 PRINT ESC "C1";:RETURN
  359. 5040 PRINT ESC "B3";:RETURN:'    Underline ON/OFF
  360. 5045 PRINT ESC "C3";:RETURN
  361. 5050 GOSUB 5040:PRINT L$;:GOTO 5045:'    Underline L$ -----
  362. 5060 GOSUB 5030:GOSUB 5065:GOTO 5035:'    Revrs. Video L$
  363. 5065 PRINT EO;L$;EF;:RETURN:'        BRIGHT Video L$
  364.  
  365.  
  366. 6000 '    INKEY$ Subroutines
  367. 6010 K$=INKEY$:AK=""
  368. 6020 AK=INKEY$:IF AK="" THEN 6020
  369. 6030 IF ASC(AK)>90 THEN AK=CHR$(ASC(AK)-32)
  370. 6040 RETURN
  371. 6050 GOSUB 6010:IF AK="Y" OR AK="N" OR AK=CHR$(13) THEN RETURN ELSE 6050
  372. 6060 '
  373. K)>90 THEN AK=CHR$(ASC(AK)-32)
  374. 6040 RETURN
  375. 6050 GOSUB 6010:IF AK="Y" OR AK="N" OR AK=CHR$(13) T