home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib33b.dsk / LABEL.MAKER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  9KB  |  185 lines

  1. 10  REM  **********************
  2. 20  REM  *     LABEL.MAKER    *
  3. 30  REM  * BY DOUG HILDEBRAND *
  4. 40  REM  * COPYRIGHT (C) 1987 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  GOTO 310
  9. 90  IF K$ = ""  THEN 140: REM  INPUT ROUTINE
  10. 100 BU$ =  LEFT$(BB$, LEN(K$) +1) + LEFT$(UU$,L) + LEFT$(BB$,L): PRINT K$;: INVERSE : PRINT " ";: NORMAL 
  11. 110  WAIT  -16384,128:K =  PEEK( -16384): IF K = 141  OR K = 155  THEN  PRINT B$" ";: POKE  -16368,0: RETURN 
  12. 120  IF K <160  OR K = 255  THEN 110
  13. 130  PRINT BU$;:LI = 0:K$ = "": INVERSE : PRINT " ";: NORMAL : PRINT B$;: GOTO 280
  14. 140  PRINT  LEFT$(UU$,L) LEFT$(BB$,L);:LI = 0:K$ = "": POKE  -16368,0: INVERSE : PRINT " ";: NORMAL : PRINT B$;
  15. 150  POKE  -16368,0
  16. 160 K =  PEEK( -16384): IF K <128  THEN 160
  17. 170  IF K >159  AND K < >255  THEN 290
  18. 180  IF K = 141  THEN  FOR K = LI TO L: PRINT " ";: NEXT : POKE  -16368,0: RETURN 
  19. 190  IF K < >155  THEN 230
  20. 200  IF LI = 0  THEN K$ = EX$: PRINT U$;: POKE  -16368,0: RETURN 
  21. 210  IF LI = L  THEN  PRINT " ";: PRINT B$;
  22. 220  PRINT  LEFT$(BB$,LI);: GOTO 140
  23. 230  IF (K < >136  AND K < >255)  THEN 280
  24. 240  IF LI = 0  THEN  PRINT  CHR$(7);: GOTO 150
  25. 250  IF LI = 1  THEN  PRINT B$;: PRINT U$U$;: PRINT B$;: PRINT B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$ = "": GOTO 150
  26. 260  IF LI = L  THEN  PRINT B$;: PRINT U$" ";: PRINT B$B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$ =  LEFT$(K$,LI): GOTO 150
  27. 270  PRINT B$;: PRINT U$U$;: PRINT B$;: PRINT B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$ =  LEFT$(K$,LI): GOTO 150
  28. 280  IF K <160  THEN 150
  29. 290  IF LI = L  THEN  PRINT  CHR$(7);: GOTO 150
  30. 300  PRINT  CHR$(K);: INVERSE : PRINT " ";: NORMAL : PRINT B$;:K$ = K$ + CHR$(K -128):LI = LI +1: GOTO 150
  31. 310  HOME : PRINT "PRINT SHOP LABEL MAKER": PRINT "BY DOUGLAS HILDEBRAND": PRINT "COPYRIGHT (C) 1987": PRINT "BY MICROSPARC, INC.": VTAB 12: PRINT "PRESS RETURN TO CONTINUE";: GET Z$: PRINT 
  32. 320  LOMEM: 22528:DN =  PEEK( -21912):N$ = "":AD$ = "":CS$ = "":GF = 0:LB$ =  CHR$(91):EX$ =  CHR$(27):SL = 1
  33. 330 B$ =  CHR$(136):U$ =  CHR$(223)
  34. 340  FOR I = 1 TO 80:BB$ = BB$ +B$:UU$ = UU$ +U$:BL$ = BL$ +" ": NEXT 
  35. 350 D$ =  CHR$(4):FLAG = 0:F = 0
  36. 360 EF = 1: ONERR  GOTO 1360
  37. 370  PRINT D$"BLOAD LABELMAKER.ML.0"
  38. 380  PRINT D$"BLOAD LABELMAKER.ML.1"
  39. 390  GOSUB 1800: REM  EPSON CODES//GOSUB 1810 FOR IMAGEWRITER/PROWRITER
  40. 400  REM  GOSUB 1760:REM PRINTER-SPECIFIC PATCHES
  41. 410  REM  GOSUB 1750:REM INTERFACE-SPECIFIC PATCHES
  42. 420 EF = 2: ONERR  GOTO 1360
  43. 430  HOME : GOSUB 1520
  44. 440 HC$ = "CLPTGSQ"
  45. 450  GET A$: PRINT : IF A$ > CHR$(96)  THEN A$ =  CHR$( ASC(A$) -32)
  46. 460  FOR I = 1 TO  LEN(HC$)
  47. 470  IF A$ =  MID$ (HC$,I,1)  THEN PK = I:I =  LEN(HC$): GOTO 500
  48. 480  NEXT I
  49. 490  GOSUB 1640: GOTO 450
  50. 500  ON PK GOTO 530,590,700,1040,1100,1250,1460
  51. 510  GOTO 450
  52. 520  REM  CATALOG ROUTINE
  53. 530 EF = 6: ONERR  GOTO 1360
  54. 540  HOME : PRINT D$;"CATALOG"
  55. 550  PRINT : PRINT "PRESS RETURN TO CONTINUE...";: GET A$
  56. 560  PRINT EX$; CHR$(17)
  57. 570  GOTO 420
  58. 580  REM  LOAD CONVERTED PICTURE
  59. 590 EF = 3: ONERR  GOTO 1360
  60. 600  HOME : VTAB 10: HTAB 10: PRINT "ENTER PICTURE NAME: ": PRINT 
  61. 610  VTAB 23: HTAB 12: PRINT "RETURN FOR MENU"
  62. 620  VTAB 12
  63. 630  HTAB 11: INPUT "";PN$: IF  LEN(PN$) = 0 GOTO 420
  64. 640 PN$ = PN$ +".CVT":A$ = PN$: GOSUB 1660:PN$ = A$
  65. 650 L% =  LEN(PN$ +"LOADING ")/2: VTAB 15: HTAB (19 -L%): FLASH : PRINT "LOADING ";PN$;: NORMAL : PRINT 
  66. 660  VTAB 23: HTAB 5: PRINT  LEFT$(BL$,32): VTAB 20
  67. 670  PRINT D$;"BLOAD ";PN$
  68. 680 GF = 1: GOTO 420
  69. 690  REM  PRINT THE LABELS
  70. 700  HOME : ON   NOT (GF) GOTO 1820: PRINT "HOW MANY LABELS ACROSS (1,2, OR 3): ";: INPUT "";NC$
  71. 710  ON NC$ <"1"  OR NC$ >"3" GOTO 700:NC =  INT( VAL(NC$))
  72. 720  IF NC = 2  OR NC = 1  THEN BK$ =  LEFT$(BL$,35)
  73. 730  IF NC = 3  THEN BK$ =  LEFT$(BL$,24)
  74. 740  POKE 795,NC: POKE 796,NC: POKE 798,FILL(NC)
  75. 750  IF LL$(1) = "" GOTO 770
  76. 760  HOME : VTAB 2: FOR I = 1 TO 4: PRINT : PRINT  LEFT$(LL$(I),35 -11 *(NC = 3)): NEXT I: VTAB 12: PRINT "IS THE ADDRESS OK? ";: GET X$: ON X$ = "Y"  OR X$ =  CHR$(121) GOTO 860: IF X$ < >"N"  AND X$ < > CHR$(110)  THEN  PRINT  CHR$(7);: GOTO 760
  77. 770  HOME 
  78. 780  FOR I = 1 TO 4: VTAB 2 +I *2: PRINT "LINE "I":";:K$ = "":L =  LEN(BK$) -2: GOSUB 90: PRINT 
  79. 790  IF K = 155  THEN I = 4: GOTO 420
  80. 800 LL$(I) = K$: NEXT I
  81. 810  FOR I = 1 TO 4:LL$(I) = "  " +LL$(I):LL =  LEN(BK$) - LEN(LL$(I)): IF LL >0  THEN LL$(I) = LL$(I) + LEFT$(BK$,LL)
  82. 820  IF LL <0  THEN LL$(I) =  LEFT$(LL$(I), LEN(BK$))
  83. 830  NEXT I
  84. 840  FOR I = 1 TO 4: POKE 789 +I, LEN(LL$(I)): NEXT I: POKE 794, PEEK(793)
  85. 850  FOR J = 1 TO 4:K = 18879 +64 *J: FOR I = 1 TO  LEN(LL$(J)): POKE K +I, ASC( MID$ (LL$(J),I,1)): NEXT I,J: GOTO 760
  86. 860  VTAB 23: HTAB 12: PRINT "RETURN FOR MENU"
  87. 870  VTAB 12
  88. 880  INPUT "HOW MANY LABEL ROWS? ";NL$
  89. 890  IF NC = 2  OR NC = 1  THEN  PRINT EX$ CHR$(17)
  90. 900  IF  LEN(NL$) = 0 GOTO 420
  91. 910 NL =  VAL(NL$)
  92. 920 F = 1
  93. 930  IF NC = 2  OR NC = 1  THEN  PRINT EX$ CHR$(17)
  94. 940  HOME : VTAB 12: PRINT "PRESS ESCAPE TO STOP PRINTING"
  95. 950  PRINT D$;"PR#"SL: PRINT  CHR$(9)"255N": PRINT CM$;
  96. 960  PRINT LZ$;
  97. 970  FOR I = 1 TO NL
  98. 980  CALL 854
  99. 990  PRINT L6$;: PRINT 
  100. 995  FOR XX = 1 TO 1000: NEXT XX
  101. 1000  PRINT LZ$;: IF  PEEK( -16384) = 155  THEN I = NL
  102. 1010  NEXT I
  103. 1020  PRINT : PRINT D$;"PR#0": GOTO 420
  104. 1030  REM  TOGGLE DISK DRIVES
  105. 1040  IF DN = 1  THEN DN = 2: GOTO 1060
  106. 1050 DN = 1
  107. 1060  POKE  -21912,DN
  108. 1070  GOSUB 1630: GOTO 440
  109. 1080  REM  GET PRINT SHOP GRAPHIC
  110. 1090  REM  AND CONVERT FOR PRINTING
  111. 1100 EF = 4: ONERR  GOTO 1360
  112. 1110  HOME : VTAB 10: HTAB 10: PRINT "ENTER GRAPHIC NAME: ": PRINT 
  113. 1120  VTAB 23: HTAB 12: PRINT "RETURN FOR MENU"
  114. 1130  VTAB 12
  115. 1140  HTAB 11: INPUT "";GN$: IF  LEN(GN$) = 0 GOTO 420
  116. 1150 A$ = GN$: GOSUB 1660:GN$ = A$
  117. 1160  CALL 851: REM  CLEAR $4000-$43FF
  118. 1170  PRINT D$;"BLOAD ";GN$;",A$4000"
  119. 1180  VTAB 23: HTAB 5: PRINT  LEFT$(BL$,32)
  120. 1190 L% =  LEN(GN$ +"CONVERTING ")/2: VTAB 15: HTAB (19 -L%): FLASH : PRINT "CONVERTING ";GN$;: NORMAL 
  121. 1200  VTAB 23: HTAB 5: PRINT  LEFT$(BL$,32)
  122. 1210  FOR KK = 16956 TO 16959: POKE KK,0: NEXT KK
  123. 1220  CALL 848: REM  CONVERT THE PICTURE
  124. 1230 GF = 1: GOTO 420
  125. 1240  REM  SAVE CONVERTED PICTURE
  126. 1250 EF = 5: ONERR  GOTO 1360
  127. 1260  HOME : ON   NOT (GF) GOTO 1820: VTAB 10: HTAB 10: PRINT "ENTER PICTURE NAME: ": PRINT 
  128. 1270  VTAB 23: HTAB 12: PRINT "RETURN FOR MENU"
  129. 1280  VTAB 12
  130. 1290  HTAB 11: INPUT "";PN$: IF PN$ = "" GOTO 420
  131. 1300 PN$ = PN$ +".CVT":A$ = PN$: GOSUB 1660:PN$ = A$
  132. 1310 L% =  LEN(PN$ +"SAVING ")/2: VTAB 15: HTAB (19 -L%): FLASH : PRINT "SAVING ";PN$;: NORMAL : PRINT 
  133. 1320  VTAB 23: HTAB 5: PRINT  LEFT$(BL$,32)
  134. 1330  PRINT D$;"BSAVE ";PN$;",A$5000,L$758"
  135. 1340  GOTO 420
  136. 1350  REM  ERROR HANDLER
  137. 1360 EC =  PEEK(222):EL =  PEEK(219) *256 + PEEK(218): POKE 216,0: CALL  -3288
  138. 1370  IF EC = 4  THEN A$ = "DISK IS WRITE-PROTECTED": GOTO 1440
  139. 1380  IF EC = 6  THEN A$ = "FILE NOT FOUND ON THIS DISK": GOTO 1440
  140. 1390  IF EC = 8  THEN A$ = "I/O ERROR--CHECK DRIVE DOOR": GOTO 1440
  141. 1400  IF EC = 9  THEN A$ = "DISK FULL": GOTO 1440
  142. 1410  IF EC = 10  THEN A$ = "FILE LOCKED": GOTO 1440
  143. 1420  IF EC = 13  THEN A$ = "FILE TYPE MISMATCH": GOTO 1440
  144. 1430 A$ = "ERROR " + STR$(EC) +" IN LINE " + STR$(EL)
  145. 1440  HOME : VTAB 10: PRINT  LEFT$(BL$, INT((40 - LEN(A$))/2))A$: VTAB 22: PRINT "ESC TO QUIT, RETURN TO TRY AGAIN";: GET A$: PRINT : IF A$ < >EX$  THEN  ON EF GOTO 360,420,590,1100,1250,530
  146. 1450  REM  QUIT ROUTINE
  147. 1460  POKE  -21912,1
  148. 1470  IF F = 0 GOTO 1500
  149. 1480  PRINT  CHR$(4)"PR#"SL: PRINT EC$: PRINT  CHR$(12)
  150. 1490  PRINT  CHR$(4)"PR#0"
  151. 1500  HOME : END 
  152. 1510  REM  SCREEN MENU
  153. 1520  HOME : VTAB 5
  154. 1530  PRINT "PRINT SHOP LABEL MAKER"
  155. 1540  VTAB 8
  156. 1550 X = 5
  157. 1560  HTAB X: PRINT LB$"C] - CATALOG CURRENT DISK"
  158. 1570  HTAB X: PRINT LB$"G] - CONVERT PRINT SHOP GRAPHIC"
  159. 1580  HTAB X: PRINT LB$"L] - LOAD CONVERTED PICTURE"
  160. 1590  HTAB X: PRINT LB$"P] - PRINT LABELS"
  161. 1600  HTAB X: PRINT LB$"S] - SAVE CONVERTED PICTURE"
  162. 1610  HTAB X: PRINT LB$"T] - TOGGLE BETWEEN DRIVE 1 & 2"
  163. 1620  HTAB X: PRINT LB$"Q] - QUIT"
  164. 1630  VTAB 17: HTAB 8: PRINT "DISK DRIVE ";: INVERSE : PRINT DN;: NORMAL : PRINT " IS ACTIVE"
  165. 1640  VTAB 19: HTAB 9: PRINT "ENTER CHOICE: ";
  166. 1650  RETURN 
  167. 1660 AA$ = ""
  168. 1670  FOR Z = 1 TO  LEN(A$)
  169. 1680 T$ =  MID$ (A$,Z,1)
  170. 1690  IF  ASC(T$) > = 97  THEN T$ =  CHR$( ASC(T$) -32)
  171. 1700 AA$ = AA$ +T$
  172. 1710  NEXT Z
  173. 1720 A$ = AA$
  174. 1730  RETURN 
  175. 1740  REM  DATA FOR INTERFACE GOES HERE
  176. 1750  REM  ROUTINE TO POKE INTERFACE DATA STARTING AT 17902--ENDS W/ RETURN
  177. 1760  POKE 17409,1: POKE 17495,10: POKE 17496,48: POKE 17510,1: REM  PROWRITER/IMAGEWRITER PIN INVERSION
  178. 1770  POKE 17964,6: POKE 17965,27: POKE 17966,83: POKE 17967,48: POKE 17968,48: POKE 17969,56: POKE 17970,56: REM  PROWRITER/IMAGEWRITER GRAPHICS
  179. 1780  POKE 17972,4: POKE 17973,27: POKE 17974,84: POKE 17975,49: POKE 17976,52: REM PRO/IMWR7/72-IN.LINESPACING
  180. 1790  RETURN 
  181. 1800 L6$ = EX$ +"A" + CHR$(16):LZ$ = EX$ +"1":CM$ =  CHR$(15):FILL(1) = 21:FILL(2) = 21:FILL(3) = 7:EC$ = EX$ +"@": RETURN 
  182. 1810 L6$ = EX$ +"T32":LZ$ = EX$ +"T14":CM$ = EX$ +"Q":FILL(1) = 21:FILL(2) = 21:FILL(3) = 7:EC$ = EX$ +"N" +EX$ +"A": RETURN 
  183. 1820  VTAB 12: PRINT "NO GRAPHIC IN MEMORY"
  184. 1830  VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: GET Z$: PRINT 
  185. 1840  GOTO 420