home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1987-02-12 | 15.8 KB | 336 lines
1 ' ****************************** 2 ' * LABEL MAKER 6.04 * 3 ' * LBLPNT60.BAS * 4 ' * January 15, 1986 * 5 ' ****************************** 10 ' ***** INITIALIZE THE PROGRAM ***** 20 CLEAR 3000 : KEY OFF 30 GOSUB 1610: GOSUB 2110 40 DEF FN A$(Y)=STRING$(Y,32): DEF FN B$(LL)=STRING$(LL,"-") 50 DEFINT I-N 60 CLS: LINECOUNT=0: I=1 70 DIM FILE$(300), COMMENTS$(10) 80 ON ERROR GOTO 7510 100 ' ***** READ IN DATA ***** 110 OPEN "NAMEDISK.ZQW" FOR INPUT AS #1 120 IF EFLAG=53 THEN EFLAG=0: PRINT TAB(28)"Disk has not been named.": PRINT: PRINT TAB(20)"If the installation program has been run":PRINT:PRINT TAB(32) "then run LBL.BAT.": SYSTEM 130 IF EFLAG<>0 THEN GOTO 7530 140 INPUT #1,DISKNAME$,CN$,FREEBYTES,BYTESUSED,DS$,TYPEPRINTER$,DCOUNT%,FCOUNT%,LABEL.SIZE,TL,SKIPFILES$,JS,JB,JF,JW,JH,JNB,JSN: DSKNAME$=DISKNAME$ 150 IF TYPEPRINTER$<>"OTHER" THEN TYPEPRINTER$="EPSON": KOMMENTS.PER.LABEL=8: LINES.OF.FILES=11: GOTO 180 160 IF TYPEPRINTER$="OTHER" THEN KOMMENTS.PER.LABEL=4: LINES.OF.FILES=4: GOTO 180 170 GOTO 7530 180 FOR K=1 TO KOMMENTS.PER.LABEL: INPUT #1,COMMENTS$(K): IF COMMENTS$(K)="" THEN GOTO 190 ELSE NEXT K 190 CLOSE 1: KOUNT=K-1: CN%=VAL(CN$): IF SKIPFILES$="no" THEN CN%=DCOUNT%: IF CN%=0 THEN GOTO 270 200 OPEN "TEMPFILE.ZQW" FOR INPUT AS #1 210 IF EFLAG=55 THEN EFLAG=0: CLOSE: GOTO 200 220 IF EFLAG<>0 THEN GOTO 7530 230 FOR I=1 TO CN% 240 INPUT #1,FILE$(I) 250 IF LEN(FILE$(I))<13 THEN FILE$(I)=FILE$(I)+" ": GOTO 250 260 NEXT I: CLOSE 270 IF TYPEPRINTER$="OTHER" THEN GOTO 330 280 ON LABEL.SIZE GOTO 290, 320 290 FILES.PER.LINE=4: LINES.PER.LABEL=8: TOTAL.FILES=96: TEMP.KOUNT=7 300 IF KOUNT>4 THEN KOUNT=4 310 LL=57: TL=15: GOTO 340 320 FILES.PER.LINE=5: LINES.PER.LABEL=15: TOTAL.FILES=260: TEMP.KOUNT=14: LL=64: TL=17: GOTO 340 330 FILES.PER.LINE=5: LINES.PER.LABEL=8: TOTAL.FILES=120: TEMP.KOUNT=8: LL=64: TL=17 340 IF CN%>TOTAL.FILES THEN PRINT: PRINT"You are limited to a total of";TOTAL.FILES;" files": CN%=TOTAL.FILES 400 ' ***** PRINT ON VIDEO OR PRINTER ***** 410 COLOR JF,JB: CLS 420 GOSUB 1010 430 LOCATE 13,5: PRINT"Do you want to print on (V)ideo or the (P)rinter?" 440 X=56: Y=13: LOCATE Y,X: IF JS=1 THEN BEEP 450 GOSUB 3310: VP$=IN$ 460 IF VP$="V" OR VP$="v" THEN OPEN "SCRN:" FOR OUTPUT AS #2: PRINTERFLAG=0: NBR.LABELS=1: GOSUB 1010: GOSUB 5010: GOTO 610 470 IF VP$="P" OR VP$="p" THEN OPEN "LPT1:" AS #2: PRINTERFLAG=1: GOTO 490 480 GOTO 440 490 LOCATE 15,10: PRINT "How many labels do you want to print (0-9)?" 500 X=55: Y=15: LOCATE Y,X: IF JS=1 THEN BEEP 510 GOSUB 3310 520 IF IN$<"0" OR IN$>"9" THEN 500 ELSE NBR.LABELS=VAL(IN$) 530 IF NBR.LABELS=0 THEN 410 540 IF PRINTERFLAG=1 THEN 3510 550 NL=NL + 1 560 GOSUB 6010 570 GOSUB 5010 600 ' ***** SET UP LINE OF FILE NAMES FOR LABEL ***** 610 J=1 620 IF SKIPFILES$="no" THEN CN%=DCOUNT%: IF CN%=0 THEN GOTO 810 630 LABEL$="" 640 FOR M=1 TO FILES.PER.LINE 650 FILE$=LEFT$(FILE$(J),13) 660 LABEL$=LABEL$+FILE$: IF LABEL.SIZE=1 THEN LABEL$=LABEL$+" " 670 J=J+1: IF J>CN% THEN GOTO 690 680 NEXT M 690 GOSUB 5010 ' PRINT LINE OF FILE NAMES ON LABEL 700 IF LINECOUNT=LINES.PER.LABEL THEN GOSUB 6510 710 IF J>CN% THEN GOTO 730 720 GOTO 630 730 IF J>TOTAL.FILES THEN GOTO 5510 740 GOSUB 7010 800 ' ***** READ AND PRINT COMMENTS ON LABEL ***** 810 FOR N=1 TO KOUNT: LABEL$=COMMENTS$(N): GOSUB 5010: NEXT N: ICOMMENTS=1 820 IF LINECOUNT>0 THEN GOSUB 7040 830 GOSUB 6510 840 GOSUB 2110 850 IF NL<NBR.LABELS THEN LINECOUNT=0: J=1: JLABEL=0: ICOMMENTS=0: IF PRINTERFLAG=1 THEN 550 ELSE 5510 860 GOSUB 5510 870 END 1000 ' ***** TITLE SUBROUTINE ***** 1010 LOCATE 1,17: PRINT STRING$(10,"-")+"L A B E L M A K E R 6.04"+STRING$(10,"-") 1020 LOCATE 2,29: PRINT"USER SUPPORTED SOFTWARE" 1030 LOCATE 3,31: PRINT"Serial No.";JSN 1040 LOCATE 23,20: PRINT"Copyright (c) 1984, 1985, 1986 Fort's Software" 1050 RETURN 1500 ' ***** INITIALIZE AND SET THE PRINTER FOR TITLE ***** 1510 LPRINT CHR$(27)"8"; ' DISABLE PAPER-END SIGNAL 1520 LPRINT CHR$(27)"3"; CHR$(34); ' SET TO 34/216" LINE SPACING 1530 LPRINT CHR$(27)"G"; ' SET PRINTER TO DOUBLE STRIKE MODE 1540 LPRINT CHR$(27)"E"; ' SET PRINTER TO EMPHASIZED MODE 1550 LPRINT CHR$(14); ' SET PRINTER TO ENLARGED MODE 1560 RETURN 1600 ' ***** REINITIALIZE THE PRINTER AFTER TITLE ***** 1610 LPRINT CHR$(27)"9"; ' ENABLE PAPER-END SIGNAL 1620 LPRINT CHR$(27)"2"; ' SET TO 1/6" LINE SPACING 1630 LPRINT CHR$(27)"H"; ' CANCEL DOUBLE STRIKE MODE 1640 LPRINT CHR$(27)"F"; ' CANCEL EMPHASIZED MODE 1650 LPRINT CHR$(20); ' CANCEL ENLARGED MODE 1660 RETURN 2000 ' ***** INITIALIZE AND SET THE PRINTER FOR FILE NAMES ***** 2010 LPRINT CHR$(27)"8"; ' DISABLE PAPER-END SIGNAL 2020 LPRINT CHR$(27)"3"; CHR$(16); ' SET TO 16/216" LINE SPACING 2030 LPRINT CHR$(27)"S"; CHR$(0); ' SET TO SUPERSCRIPT MODE 2040 LPRINT CHR$(15); ' SET PRINTER TO CONDENSED MODE 2050 RETURN 2100 ' ***** REINITIALIZE THE PRINTER AFTER FILE NAMES ***** 2110 LPRINT CHR$(27)"9"; ' ENABLE PAPER-END SIGNAL 2120 LPRINT CHR$(27)"2"; ' SET TO 1/6" LINE SPACING 2130 LPRINT CHR$(27)"T"; ' CANCEL SUPERSCRIPT MODE 2140 LPRINT CHR$(18); ' CANCEL CONDENSED MODE 2150 RETURN 3000 ' ***** INKEY SUBROUTINE ***** 3010 W$="": IN$="": CF=0: WD=0: WS=WD: WL=WD 3020 PRINT STRING$(ABS(FL), CHR$(254)): LOCATE Y,X: IF FL=0 THEN FL=1 3030 W$=INKEY$ 3040 IF W$<>"" THEN 3050 ELSE 3030 3050 IF W$<>CHR$(13) THEN 3080 3060 LOCATE Y,X+WL: PRINT STRING$(ABS(FL)-WL," "); 3070 RETURN 3080 IF LEN(W$)<>2 THEN 3110 3090 CF=1 3100 RETURN 3110 IF W$<>CHR$(8) THEN 3150 3120 IF WL>0 THEN WL=WL-1: IN$=LEFT$(IN$,WL): ELSE 3150 3130 LOCATE Y,X: PRINT STRING$(ABS(FL), CHR$(254)) 3140 LOCATE Y,X: PRINT IN$: GOTO 3030 3150 IF W$=CHR$(27) THEN WL=0: IN$="": LOCATE Y,X: GOTO 3020 3160 IF ABS(FL)=WL THEN 3030 3170 IF FL>0 THEN IF W$>=" " AND W$<="z" THEN 3190 3180 IF W$<"0" OR W$>"9" THEN 3010 3190 LOCATE Y,X+WL: PRINT W$; 3200 IN$=IN$+W$ 3210 WL=WL+1 3220 IF ABS(FL)=1 THEN RETURN 3230 GOTO 3030 3300 ' ***** SINGLE KEY INKEY SUBROUTINE ***** 3310 IN$="" 3320 IN$=INKEY$: IF IN$="" THEN 3320 3330 RETURN 3500 ' ***** PROMPT SUBROUTINE ***** 3510 PRINT: PRINT TAB(10)"If the label is lined up: " 3520 PRINT TAB(20)"Hit <C> to continue " 3530 PRINT TAB(20)"Hit <A> to abort" 3540 PRINT TAB(20)"Hit <E> to edit the title or comments." 3550 PRINT TAB(20)"Hit <L> to change the size of labels." 3560 PRINT TAB(30) "Enter your selection--" 3570 X=53: Y=CSRLIN-1: LOCATE Y,X: IF JS=1 THEN BEEP 3580 GOSUB 3310 3590 IF IN$="C" OR IN$="c" THEN 550 3600 IF IN$="A" OR IN$="a" THEN 5710 3610 IF IN$="E" OR IN$="e" THEN 8010 3620 IF IN$="L" OR IN$="l" THEN 9010 3630 PRINT: GOTO 3570 4000 ' ***** PRINT TITLE FOR EPSON PRINTERS ***** 4010 IF PRINTERFLAG=1 THEN GOSUB 1510 ' SET PRINTER FOR TITLE 4020 PRINT: PRINT #2, DISKNAME$ ' PRINT DISK NAME 4030 LINECOUNT=LINECOUNT+1 4040 IF PRINTERFLAG=1 THEN GOSUB 1610: GOSUB 2010 4050 LABEL$=FN B$(LL) ' SET TO PRINT A LINE 4060 RETURN 4500 ' ***** SET PRINTER AND PRINT TITLE FOR OTHER PRINTERS ***** 4510 IF PRINTERFLAG=0 THEN GOTO 4590 4520 LPRINT CHR$(18);: LPRINT CHR$(20); ' CANCEL COND & ENL PRINT MODE 4530 LPRINT CHR$(14); ' SET PRINTER TO ENLARGED MODE 4540 WIDTH #2,255: PRINT #2, DISKNAME$ ' PRINT DISK NAME TO LABEL 4550 WIDTH #2,80 4560 LINECOUNT=LINECOUNT+1 4570 LPRINT CHR$(20); ' CANCEL ENLARGED MODE 4580 LPRINT CHR$(15); ' SET PRINTER TO CONDENSED MODE 4590 LABEL$=STRING$(64,"_") 4600 IF PRINTERFLAG=1 THEN RETURN ELSE PRINT #2, DISKNAME$;: LINECOUNT=LINECOUNT+1: RETURN 5000 ' ***** PRINT LINE ***** 5010 IF LINECOUNT<>0 THEN BOTTOMFLAG=0: GOTO 5080 5020 IF J>CN% THEN IF KOUNT=0 THEN ICOMMENTS=1 5030 IF J>CN% THEN IF ICOMMENTS=1 THEN RETURN 5040 IF JLABEL =0 THEN GOTO 5060 ELSE IF JLABEL<4 AND PRINTERFLAG=0 THEN PRINT: INPUT"Hit <ENTER> to continue";ZZ$: PRINT 5050 IF JLABEL>=4 THEN GOTO 5510 5060 IF TYPEPRINTER$="EPSON" THEN GOSUB 4010 5070 IF TYPEPRINTER$="OTHER" THEN GOSUB 4510 5080 PRINT #2, LABEL$ 5090 LINECOUNT=LINECOUNT+1 5100 IF LINECOUNT=LINES.PER.LABEL THEN RETURN 5110 RETURN 5500 ' ***** END PROGRAM OR PRINT MORE LABELS ***** 5510 CLOSE 2: PRINT: PRINT"DO YOU WANT TO PRINT MORE LABELS FOR THIS DISK (Y/N)?" 5520 X=49: Y=CSRLIN-1: LOCATE Y,X: IF JS=1 THEN BEEP 5530 GOSUB 3310 5540 IF IN$="Y" OR IN$="y" THEN LINECOUNT=0: J=1: JLABEL=0: ICOMMENTS=0: NL=0: GOTO 410 5550 IF IN$="N" OR IN$="n" THEN 5800 ELSE PRINT: GOTO 5520 5700 ' ***** START PROGRAM OVER OR TERMINATE ***** 5710 CLS: CLOSE #2: LOCATE 5,10: PRINT "Do you want to:" 5720 LOCATE 7,20: PRINT "<S>tart the print routine over or" 5730 LOCATE 8,20: PRINT "<T>erminate the program?" 5740 LOCATE 10,30: PRINT "Enter your selection" 5750 X=52: Y=10: LOCATE Y,X: IF JS=1 THEN BEEP 5760 GOSUB 3310 5770 IF IN$="S" OR IN$="s" THEN CLS: GOTO 410 5780 IF IN$="T" OR IN$="t" THEN 5800 5790 GOTO 5750 5800 IF PRINTERFLAG=1 THEN GOSUB 1610: GOSUB 2110: CLS: SYSTEM ELSE SYSTEM 6000 ' ***** PRINT ANOTHER LABEL ***** 6010 CLS: IF NL>1 THEN GOTO 6110 6020 LOCATE 8,15: PRINT "IS ONE OF THE LABELS FOR A MASTER DISK (Y/N)?" 6030 X=62: Y=8: LOCATE Y,X: IF JS=1 THEN BEEP 6040 GOSUB 3310 6050 IF IN$="Y" OR IN$="y" THEN GOTO 6080 6060 IF IN$="N" OR IN$="n" THEN GOTO 6110 6070 GOTO 6030 6080 ON LABEL.SIZE GOTO 6090, 6100 6090 DISKNAME$=LEFT$(DISKNAME$,15)+" M": RETURN 6100 DISKNAME$=LEFT$(DISKNAME$,18)+"M": RETURN 6110 ON LABEL.SIZE GOTO 6120, 6130 6120 DISKNAME$=LEFT$(DISKNAME$,15)+" " : RETURN ELSE 6010 6130 DISKNAME$=LEFT$(DISKNAME$,18)+" " : RETURN ELSE 6010 6500 ' ***** NEW PAGE SUBROUTINE ***** 6510 IF BOTTOMFLAG=1 THEN BOTTOMFLAG=0: RETURN 6515 IF TYPEPRINTER$="EPSON" THEN PRINT #2, FN B$(LL) 6520 IF LABEL.SIZE=1 THEN PRINT #2, DATE$;" ";FCOUNT%;"FILES";" BYTES:";BYTESUSED;"USED ";;FREEBYTES;"FREE": JLABEL=JLABEL+1: BOTTOMFLAG=1: GOTO 6540 6530 PRINT #2, DATE$;" ";FCOUNT%;"FILES";" FORMAT ";DS$;" BYTES:";BYTESUSED;"USED ";;FREEBYTES;"FREE": JLABEL=JLABEL+1: BOTTOMFLAG=1 6540 IF PRINTERFLAG=0 THEN GOTO 6580 6550 IF TYPEPRINTER$="EPSON" THEN LPRINT CHR$(27)"3";CHR$(17) 6560 LPRINT: IF LABEL.SIZE=1 THEN LPRINT CHR$(27)"3";CHR$(3) 6570 IF TYPEPRINTER$="EPSON" THEN GOSUB 2110 6580 LINECOUNT=0: GOSUB 5010 6590 IF J>CN% THEN IF ICOMMENTS=1 THEN RETURN ELSE IF J>CN% GOTO 810 6600 RETURN 7000 ' ***** CONDITIONAL PAGE SUBROUTINE ***** 7010 IF TEMP.KOUNT-LINECOUNT<KOUNT THEN GOSUB 7040 ELSE LABEL$=FN B$(LL): GOSUB 5010: GOTO 7030 7020 GOSUB 6510: GOSUB 5010 7030 RETURN 7040 BLANKS=LINES.PER.LABEL-LINECOUNT 7050 FOR I=1 TO BLANKS 7060 LABEL$="" 7070 GOSUB 5010 7080 NEXT I 7090 RETURN 7500 ' ***** generic error handler ***** 7510 EFLAG=ERR:ELINE=ERL:RESUME NEXT 7520 ' ***** fatal error handler ***** 7530 PRINT"fatal error ";EFLAG;" occurred at line ";ELINE 7540 STOP 8000 ' ***** SUBROUTINE TO EDIT TITLE OR COMMENTS ***** 8010 CLS: GOSUB 1010 8020 LOCATE 5,20: PRINT "Do you want to edit the" 8030 LOCATE 6,25: PRINT "<T>itle or the" 8040 LOCATE 7,25: PRINT "<C>omments?" 8050 X=38: Y=7: LOCATE Y,X: IF JS=1 THEN BEEP 8060 GOSUB 3310 8070 IF IN$="T" OR IN$="t" THEN 8310 8080 IF IN$="C" OR IN$="c" THEN 8610 8090 GOTO 8050 8300 ' ***** EDIT THE TITLE ***** 8310 LENGTH=LEN(DISKNAME$) 8320 INDENT = INT(40-(LENGTH/2)) 8330 LOCATE 9,INDENT: PRINT DISKNAME$ 8340 LOCATE 11,10: PRINT "What is the name of the disk?"; 8350 FL=TL: X=41: Y=CSRLIN: LOCATE Y,X: IF JS=1 THEN BEEP 8360 GOSUB 3010 8370 IF IN$=" " THEN IN$="NO NAME" 8380 IF IN$="" THEN 8400 8390 IF CF=0 THEN DISKNAME$=IN$: DSKNAME$=DISKNAME$ 8400 LENGTH=LEN(DISKNAME$) 8410 INDENT = INT(40-(LENGTH/2)) 8420 SPACES=TL+1-LENGTH 8430 DISKNAME$=DISKNAME$ + STRING$(SPACES," ") 8440 LOCATE 13,20: PRINT "The new disk name is: ": LOCATE 13,42: PRINT DISKNAME$ 8450 LOCATE 15,10: PRINT "Is this the title you want to use (Y/N)?" 8460 X=50: Y=15: LOCATE Y,X: IF JS=1 THEN BEEP 8470 GOSUB 3310 8480 IF IN$="y" OR IN$="Y" THEN 3510 8490 IF IN$="n" OR IN$="N" THEN LOCATE 13,1: PRINT STRING$(80," "): LOCATE 15,1: PRINT STRING$(80," "): GOTO 8310 8500 GOTO 8440 8600 ' ***** EDIT THE COMMENTS ***** 8610 CLS: GOSUB 1010 8620 V$=RIGHT$(STR$(KOMMENTS.PER.LABEL),1) 8630 LOCATE 5,32: PRINT DISKNAME$ 8640 LOCATE 7,1: PRINT "COMMENTS: "; 8650 FOR J=1 TO KOMMENTS.PER.LABEL: LOCATE 6+J,11: PRINT J;STRING$(LL, CHR$(254)): NEXT J 8660 FOR J=1 TO KOMMENTS.PER.LABEL: LOCATE 6+J,11: PRINT J;COMMENTS$(J): NEXT J 8670 LOCATE 7+KOMMENTS.PER.LABEL,5: PRINT "Which comment line do you want to edit (0 to return)?" 8680 X=60: Y=7+KOMMENTS.PER.LABEL: LOCATE Y,X: IF JS=1 THEN BEEP 8690 GOSUB 3310 8700 IF IN$<"0" OR IN$>V$ THEN 8680 ELSE K=VAL(IN$): IF K>KOUNT THEN KOUNT=K 8710 IF K=0 THEN 8790 8720 LOCATE 7+KOMMENTS.PER.LABEL,1: PRINT STRING$(80," ") 8730 LOCATE 6+K,10: PRINT CHR$(26);K;STRING$(LL, CHR$(254)) 8740 FL=LL: X=14: Y=6+K: LOCATE Y,X: IF JS=1 THEN BEEP 8750 GOSUB 3010 8760 IF IN$="" THEN COMMENTS$(K)="" 8770 IF CF=0 THEN COMMENTS$(K)=IN$ 8780 GOTO 8670 8790 FOR J=KOUNT TO 1 STEP -1: IF COMMENTS$(J)<>"" THEN 8800 ELSE NEXT J 8800 KOUNT=J 8810 GOTO 3510 9000 ***** RESET SIZE OF LABELS ***** 9010 CLS 9020 GOSUB 1010: CLOSE #2 ' print heading 9030 LOCATE 5,10: PRINT"What size labels will you be using?" 9040 LOCATE 7,15: PRINT "<1> 3 1/2 x 15/16" 9050 LOCATE 8,15: PRINT "<2> 4 x 1 7/16" 9060 LOCATE 11,10: PRINT "> ENTER SELECTION: " 9070 Y=11: X=31: LOCATE Y,X: IF JS=1 THEN BEEP 9080 GOSUB 3310 9090 LABEL.SIZE=VAL(IN$) 9100 ON LABEL.SIZE GOTO 280,280 9110 GOTO 9070 9500 ' ***** MENU OF GOTO'S AND SUBROUTINES ***** 9510 GOTO 20 ' initialize the program 9520 GOTO 100 ' read in the data 9530 GOTO 400 ' print on screen or printer 9540 GOTO 600 ' set up line of filenames 9550 GOTO 800 ' read and print comments 9560 GOSUB 1000 ' print heading on screen 9570 GOSUB 1500 ' set printer for title 9580 GOSUB 1600 ' reinitialize printer after title 9590 GOSUB 2000 ' set printer for file names 9600 GOSUB 2100 ' reinitialize printer after file names 9610 GOSUB 3000 ' inkey$ subroutine 9620 GOSUB 3300 ' single key inkey$ subroutine 9630 GOSUB 3500 ' prompt subroutine for labels 9640 GOSUB 4000 ' print title for Epson printer 9650 GOSUB 4500 ' print title for other printers 9660 GOSUB 5000 ' print line or files on label 9670 GOSUB 5500 ' ask about more labels 9680 GOSUB 5700 ' start over or terminate program 9690 GOSUB 6000 ' set master disk flag 9700 GOSUB 6500 ' new page subroutine 9710 GOSUB 7000 ' conditional page subroutine 9720 GOSUB 7500 ' error subroutine 9730 GOSUB 7530 ' fatal error subroutine 9740 GOSUB 8000 ' edit the title or comments 9750 GOTO 8300 ' edit the title 9760 GOTO 8600 ' edit the comments 9770 GOSUB 9500 ' routine library 9780 ' ***** LAST LINE *****