home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38b.dsk / TICKET.KIT.bas < prev    next >
BASIC Source File  |  2023-02-26  |  10KB  |  209 lines

  1. 10  REM *************************
  2. 20  REM * TICKET.KIT            *
  3. 30  REM * BY VAL ADKINS         *
  4. 40  REM * COPYRIGHT(C) 1989     *
  5. 50  REM * MINDCRAFT PUBL. CORP. *
  6. 60  REM * CONCORD, MA 01742     *
  7. 70  REM *************************
  8. 80  PRINT  CHR$(21): REM  SETS DISPLAY TO 40 COLUMNS
  9. 90  HOME 
  10. 100  REM  TITLE SCREEN
  11. 110 BD$ =  CHR$(36)
  12. 120  FOR X = 1 TO 39: PRINT BD$;: NEXT X: PRINT 
  13. 130  FOR X = 1 TO 18: PRINT BD$; SPC( 37);BD$: NEXT X
  14. 140  FOR X = 1 TO 39: PRINT BD$;: NEXT X
  15. 150  VTAB 5: HTAB 16: PRINT "TICKET KIT": VTAB 7: HTAB 15: PRINT "BY VAL ADKINS": VTAB 9: HTAB 13: PRINT "COPYRIGHT(C) 1989": VTAB 11: HTAB 10: PRINT "BY MINDCRAFT PUBL. CORP."
  16. 160  GOSUB 2010
  17. 170  HOME 
  18. 180  REM   INSTRUCTIONS
  19. 190  VTAB 2: PRINT "THIS PROGRAM WILL PRINT ADMISSION"
  20. 200  VTAB 4: PRINT "TICKETS OR NUMBERED RAFFLE TICKETS."
  21. 210  VTAB 6: PRINT "YOU WILL BE PROMPTED TO ENTER THE"
  22. 220  VTAB 8: PRINT "SLOT NUMBER OF YOUR PRINTER AND THE"
  23. 230  VTAB 10: PRINT "TYPE OF TICKET TO BE CREATED.  YOU WILL"
  24. 240  VTAB 12: PRINT "THEN BE ASKED TO ENTER THE TEXT TO BE"
  25. 250  VTAB 14: PRINT "PRINTED ON THE TICKETS.  YOU WILL BE"
  26. 260  VTAB 16: PRINT "LIMITED TO 20 CHARACTERS ON THE FIRST"
  27. 270  VTAB 18: PRINT "LINE AND 40 CHARACTERS ON THE OTHER"
  28. 280  VTAB 20: PRINT "SEVEN LINES.  SIMPLY FOLLOW THE PROMPTS."
  29. 290  GOSUB 2010
  30. 300  HOME : VTAB 10: INPUT "PLEASE ENTER YOUR PRINTER SLOT #";SL$
  31. 310  HOME :SL =  VAL(SL$): IF SL <1  OR SL >7  THEN 300
  32. 320  VTAB 8: PRINT "DO YOU WISH TO CREATE"
  33. 330  VTAB 12: PRINT "A)  RAFFLE TICKETS"
  34. 340  VTAB 14: PRINT "B)  ADMISSION TICKETS"
  35. 350  VTAB 18: HTAB 4: INPUT "YOUR CHOICE ";TK$
  36. 360 TK$ =  LEFT$(TK$,1)
  37. 370  IF TK$ < >"A"  AND TK$ < > CHR$(97)  AND TK$ < >"B"  AND TK$ < > CHR$(98)  THEN 350
  38. 380  HOME 
  39. 390  REM  INPUT TICKET INFORMATION
  40. 400  GOSUB 1700
  41. 410  VTAB 8: PRINT "THE INFORMATION YOU ENTERED WILL BE"
  42. 420  VTAB 10: PRINT "FORMATTED IN THE FOLLOWING MANNER."
  43. 430  GOSUB 2010
  44. 440  HOME 
  45. 450  FOR CK = 1 TO 8
  46. 460 LS =  LEN(K$(CK))
  47. 470  PRINT  SPC( (40 -LS)/2)K$(CK)
  48. 480  IF CK = 1  THEN  PRINT 
  49. 490  NEXT CK
  50. 500  VTAB 22: INPUT "IS THIS CORRECT? (Y/N) ";YN$
  51. 510 YN$ =  LEFT$(YN$,1)
  52. 520  IF YN$ < >"Y"  AND YN$ < > CHR$(121)  AND YN$ < >"N"  AND YN$ < > CHR$(110)  THEN 500
  53. 530  IF YN$ = "N"  OR YN$ =  CHR$(110)  THEN  FOR CR = 1 TO 8:K$(CR) = "": NEXT CR: GOTO 400
  54. 540  HOME 
  55. 550 A$ = K$(1)
  56. 560 B$ = K$(2)
  57. 570 C$ = K$(3)
  58. 580 D$ = K$(4)
  59. 590 E$ = K$(5)
  60. 600 F$ = K$(6)
  61. 610 G$ = K$(7)
  62. 620 H$ = K$(8)
  63. 630 NM$ = "NAME"
  64. 640 ADR$ = "ADDRESS"
  65. 650 TEL$ = "PHONE"
  66. 660 VL$ =  CHR$(252)
  67. 670 HL$ = "-------------------------------------------------------------------------------": REM  79 DASHES
  68. 680 ESC$ =  CHR$(27):TC$ = ESC$ +"E": REM   THIS PRINTS 12 CPI
  69. 690 DW$ =  CHR$(14): REM  THIS PRINTS DOUBLE WIDTH CHARACTERS, IN THIS CASE 6 CPI
  70. 700 EDW$ =  CHR$(15): REM   THIS ENDS DOUBLE WIDTH PRINTING
  71. 710  IF TK$ = "A"  OR TK$ =  CHR$(97)  THEN  GOSUB 750
  72. 720  IF TK$ = "B"  OR TK$ =  CHR$(98)  THEN  GOSUB 1190
  73. 730  END 
  74. 740  REM  PRINT RAFFLE TICKETS
  75. 750  HOME : VTAB 6: INPUT "FIRST TICKET NUMBER: ";FT$
  76. 760 FT =  VAL(FT$): IF FT <1  THEN 750
  77. 770  VTAB 8: INPUT "LAST TICKET NUMBER: ";LT$
  78. 780 LT =  VAL(LT$): IF LT <1  OR LT <FT  THEN 770
  79. 790  HOME : VTAB 12: PRINT "TICKETS WILL BE NUMBERED CONSECUTIVELY": PRINT : PRINT  SPC( 18)"FROM": PRINT : PRINT  SPC( 16)FT;" TO ";LT
  80. 800  VTAB 23: INPUT "IS THIS CORRECT? (Y/N) ";YN$
  81. 810 YN$ =  LEFT$(YN$,1)
  82. 820  IF YN$ < >"Y"  AND YN$ < > CHR$(121)  AND YN$ < >"N"  AND YN$ < > CHR$(110)  THEN 800
  83. 830  IF YN$ = "N"  OR YN$ =  CHR$(110)  THEN 750
  84. 840  HOME : VTAB 12: PRINT "PLEASE BE SURE YOUR PRINTER IS READY.": GOSUB 2010
  85. 850  HOME 
  86. 860  PRINT  CHR$(4);"PR#";SL$
  87. 870  PRINT : PRINT TC$;: REM   12CPI
  88. 880  PRINT HL$
  89. 890 XX = 4
  90. 900  FOR A = FT TO LT
  91. 910  PRINT  SPC( 25)VL$
  92. 920  PRINT  SPC( 25)VL$;
  93. 930  PRINT DW$;: REM    DOUBLE WIDTH CHARACTERS
  94. 940  PRINT  SPC( (28 - LEN(A$))/2)A$
  95. 950  PRINT EDW$;: REM   END DOUBLE WIDTH
  96. 960  PRINT TC$;: REM   12 CPI
  97. 970  PRINT  SPC( 25)VL$
  98. 980  PRINT NM$; SPC( 21)VL$;: PRINT  SPC( (56 - LEN(B$))/2)B$
  99. 990  PRINT  SPC( 25)VL$;: PRINT  SPC( (56 - LEN(C$))/2)C$
  100. 1000  PRINT ADR$; SPC( 18)VL$;: PRINT  SPC( (56 - LEN(D$))/2)D$
  101. 1010  PRINT  SPC( 25)VL$;: PRINT  SPC( (56 - LEN(E$))/2)E$
  102. 1020  PRINT TEL$; SPC( 20)VL$;: PRINT  SPC( (56 - LEN(F$))/2)F$
  103. 1030  PRINT  SPC( 25)VL$;: PRINT  SPC( (56 - LEN(G$))/2)G$
  104. 1040  PRINT  SPC( 25)VL$;: PRINT  SPC( (56 - LEN(H$))/2)H$
  105. 1050  IF A < = 9  AND A > = 1  THEN  PRINT A; SPC( 24)VL$; SPC( 42)A
  106. 1060  IF A < = 99  AND A > = 10  THEN  PRINT A; SPC( 23)VL$; SPC( 42)A
  107. 1070  IF A < = 999  AND A > = 100  THEN  PRINT A; SPC( 22)VL$; SPC( 42)A
  108. 1080  IF A > = 1000  THEN  PRINT A; SPC( 21)VL$; SPC( 42)A
  109. 1090  PRINT HL$
  110. 1100  IF A = FT +XX  THEN  PRINT  CHR$(12)
  111. 1110  IF A = FT +XX  AND A < >LT  THEN  PRINT HL$
  112. 1120  IF A = FT +XX  THEN XX = XX +5
  113. 1130  IF A = LT  THEN  PRINT  CHR$(12)
  114. 1140  IF  PEEK( -16384) = 155  THEN 2020
  115. 1150  NEXT A
  116. 1160  PRINT  CHR$(4);"PR#0"
  117. 1170  HOME : GOSUB 1550
  118. 1180  REM  PRINT ADMISSION TICKETS
  119. 1190  HOME : VTAB 10: INPUT "PRINT HOW MANY TICKETS? ";NT$
  120. 1200 NT =  VAL(NT$)
  121. 1210  IF NT <1  THEN 1190
  122. 1220  HOME : VTAB 12: HTAB 10: PRINT "PRINTING ";NT;" TICKETS."
  123. 1230  VTAB 16: HTAB 10: INPUT "IS THIS CORRECT? (Y/N) ";YN$
  124. 1240 YN$ =  LEFT$(YN$,1)
  125. 1250  IF YN$ < >"Y"  AND YN$ < > CHR$(121)  AND YN$ < >"N"  AND YN$ < > CHR$(110)  THEN 1230
  126. 1260  IF YN$ = "N"  OR YN$ =  CHR$(110)  THEN 1190
  127. 1270  HOME : VTAB 12: PRINT "PLEASE BE SURE YOUR PRINTER IS READY.": GOSUB 2010
  128. 1280  HOME 
  129. 1290  PRINT  CHR$(4);"PR#";SL$
  130. 1300  PRINT TC$: REM  12 CPI
  131. 1310  PRINT HL$
  132. 1320 XX = 4
  133. 1330  FOR A = 1 TO NT
  134. 1340  PRINT 
  135. 1350  PRINT DW$;: REM   DOUBLE WIDTH
  136. 1360  PRINT  SPC( (30 - LEN(A$))/2)A$
  137. 1370  PRINT EDW$;: REM   END DOUBLE WIDTH
  138. 1380  PRINT TC$;: REM  12 CPI
  139. 1390  FOR PT = 2 TO 8
  140. 1400 AD =  LEN(K$(PT))
  141. 1410  PRINT  SPC( (60 -AD)/2)K$(PT)
  142. 1420  NEXT PT
  143. 1430  PRINT 
  144. 1440  PRINT HL$
  145. 1450  IF A = XX +1  THEN  PRINT  CHR$(12)
  146. 1460  IF A = NT  THEN  PRINT  CHR$(12): GOTO 1500
  147. 1470  IF A = XX +1  THEN  PRINT HL$
  148. 1480  IF A = XX +1  THEN XX = XX +5
  149. 1490  IF  PEEK( -16384) = 155  THEN 2060
  150. 1500  NEXT A
  151. 1510  PRINT  CHR$(4);"PR#0"
  152. 1520  HOME : GOSUB 1550
  153. 1530  RETURN 
  154. 1540  REM   CONTINUE OR QUIT
  155. 1550  VTAB 12: INPUT "PRINT MORE TICKETS? (Y/N) ";YN$
  156. 1560 YN$ =  LEFT$(YN$,1)
  157. 1570  IF YN$ < >"Y"  AND YN$ < > CHR$(121)  AND YN$ < >"N"  AND YN$ < > CHR$(110)  THEN 1550
  158. 1580  IF YN$ = "N"  OR YN$ =  CHR$(110)  THEN  HOME : END 
  159. 1590  IF YN$ = "Y"  OR YN$ =  CHR$(121)  THEN  HOME : VTAB 6: PRINT "WOULD YOU LIKE TO..."
  160. 1600  VTAB 9: HTAB 4: PRINT "<A>  USE THE SAME TEXT."
  161. 1610  VTAB 11: HTAB 4: PRINT "<B>  CHANGE THE TEXT."
  162. 1620  VTAB 15: HTAB 4: INPUT "YOUR CHOICE? ";CH$
  163. 1630 CH$ =  LEFT$(CH$,1)
  164. 1640  IF CH$ < >"A"  AND CH$ < > CHR$(97)  AND CH$ < >"B"  AND CH$ < > CHR$(98)  THEN 1620
  165. 1650  IF CH$ = "B"  OR CH$ =  CHR$(98)  THEN  HOME : FOR CT = 1 TO 8:K$(CT) = "": NEXT CT: GOTO 320
  166. 1660  IF (CH$ = "A"  OR CH$ =  CHR$(97))  AND (TK$ = "A"  OR TK$ =  CHR$(97))  THEN A = 0: GOTO 750
  167. 1670  IF (CH$ = "A"  OR CH$ =  CHR$(97))  AND (TK$ = "B"  OR TK$ =  CHR$(98))  THEN A = 0: GOTO 1190
  168. 1680  RETURN 
  169. 1690  REM  INPUT ROUTINE
  170. 1700 B$ =  CHR$(136):U$ =  CHR$(223)
  171. 1710  FOR I = 1 TO 40:BB$ = BB$ + CHR$(136):UU$ = UU$ + CHR$(95): NEXT I
  172. 1720 NL = 1
  173. 1730  HOME : VTAB 10:L = 20: PRINT "LINE #";NL: PRINT : GOSUB 1790: PRINT 
  174. 1740  FOR NL = 2 TO 8
  175. 1750  HOME : VTAB 10:L = 40: PRINT "LINE #";NL: PRINT : GOSUB 1790: PRINT 
  176. 1760  NEXT NL
  177. 1770  HOME 
  178. 1780  RETURN 
  179. 1790  IF K$(NL) = ""  THEN 1840
  180. 1800 BU$ =  LEFT$(BB$, LEN(K$(NL)) +1) + LEFT$(UU$,L) + LEFT$(BB$,L): PRINT K$(NL): INVERSE : PRINT " ";: NORMAL 
  181. 1810  WAIT  -16384,128:K =  PEEK( -16384): IF K = 141  OR K = 155  THEN  PRINT B$" ";: POKE  -16368,0: RETURN 
  182. 1820  IF K <160  OR K = 255  THEN 1790
  183. 1830  PRINT BU$;:LI = 0:K$(NL) = "": INVERSE : PRINT " ";: NORMAL : PRINT B$;: GOTO 1980
  184. 1840  PRINT  LEFT$(UU$,L) LEFT$(BB$,L);:LI = 0:K$(NL) = "": POKE  -16368,0: INVERSE : PRINT " ";: NORMAL : PRINT B$;
  185. 1850  POKE  -16368,0
  186. 1860 K =  PEEK( -16384): IF K <128  THEN 1860
  187. 1870  IF K >159  AND K < >255  THEN 1990
  188. 1880  IF K = 141  THEN  FOR K = LI TO L: PRINT " ";: NEXT K: POKE  -16368,0: RETURN 
  189. 1890  IF K < >155  THEN 1930
  190. 1900  IF LI = 0  THEN K$(NL) =  CHR$(27): PRINT U$;: POKE  -16368,0: RETURN 
  191. 1910  IF LI = L  THEN  PRINT " ";: PRINT B$;
  192. 1920  PRINT  LEFT$(BB$,LI);: GOTO 1840
  193. 1930  IF (K < >136  AND K < >255)  THEN 1980
  194. 1940  IF LI = 0  THEN  PRINT  CHR$(7);: GOTO 1850
  195. 1950  IF LI = 1  THEN  PRINT B$;: PRINT U$U$;: PRINT B$;: PRINT B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$(NL) = "": GOTO 1850
  196. 1960  IF LI = L  THEN  PRINT B$;: PRINT U$" ";: PRINT B$B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$(NL) =  LEFT$(K$(NL),LI): GOTO 1850
  197. 1970  PRINT B$;: PRINT U$U$;: PRINT B$;: PRINT B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$(NL) =  LEFT$(K$(NL),LI): GOTO 1850
  198. 1980  IF K <160  THEN 1850
  199. 1990  IF LI = L  THEN  PRINT  CHR$(7);: GOTO 1850
  200. 2000  PRINT  CHR$(K);: INVERSE : PRINT " ";: NORMAL : PRINT B$;:K$(NL) = K$(NL) + CHR$(K):LI = LI +1: GOTO 1850
  201. 2010  VTAB 23: PRINT "PLEASE PRESS RETURN WHEN READY.": POKE 49168,0: WAIT 49152,128: RETURN 
  202. 2020  GOSUB 2090
  203. 2030  GET CN$: IF CN$ =  CHR$(13)  THEN  PRINT  CHR$(4)"PR#1": POKE  -16368,0: GOTO 1150
  204. 2040  IF CN$ =  CHR$(27)  THEN  POKE  -16368,0: GOTO 1160
  205. 2050  GOTO 2020
  206. 2060  GOSUB 2090: GET CN$: IF CN$ =  CHR$(13)  THEN  PRINT  CHR$(4)"PR#1": POKE  -16368,0: GOTO 1500
  207. 2070  IF CN$ =  CHR$(27)  THEN  POKE  -16368,0: GOTO 1510
  208. 2080  GOTO 2060
  209. 2090  POKE  -16368,0: PRINT  CHR$(4)"PR#0": VTAB 23: HTAB 1: PRINT "PRESS RETURN TO CONTINUE, ESC TO QUIT";: RETURN