home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 6 / 06.iso / b / b032 / 2.img / 14 / GYC15.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1987-09-09  |  10.2 KB  |  328 lines

  1. 5  DEFINT I-P,X,Y
  2. 10  DIM P1%(33),P2%(33),P3%(33),P4%(33),P5%(33),P6%(33),P7%(33),P8%(33),P9%(33),P10%(33),P11%(33),P12%(33),P13%(33),C$(100,8),K1(100),K2(100)
  3. 20  SCREEN 1,0,0,0:COLOR 1:CLS:LINE (0,183)-(319,199),0,BF
  4. 21  LINE(0,0)-(319,199),0,BF
  5. 23  LINE(34,38)-(282,82),3,B
  6. 24  LINE(32,36)-(284,84),3,B
  7. 25  LOCATE 4,8:PRINT "STRING$USR  FNERROR  KEY<UNK! {00FA}>  CALLKEY  NOTOR  MOTORWRITE  STEPLINE"
  8. 26  LOCATE 8,6:PRINT "   OPENNOTWHILEWHILELOCATEELSETAB(TRONCLOSE<UNK! {00FA}>STRING$USRUSRSOUND  OPTION<0xDF!>NOT<0xE5!>WEND<UNK! {FD22}>
  9. 27  LINE(0,16)-(30,199),0,BF
  10. 28  V$=INKEY$:IF V$="" THEN GOTO 28
  11. 30  OPEN "tUJI" AS #1 LEN=68
  12. 40  FIELD #1,68 AS S$
  13. 50  GET 1,1
  14. 60  FOR I%=0 TO 33:P1%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  15. 70  GET 1,2
  16. 80  FOR I%=0 TO 33:P2%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  17. 90  GET 1,3
  18. 100  FOR I%=0 TO 33:P3%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  19. 110  GET 1,4
  20. 120  FOR I%=0 TO 33:P4%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  21. 130  GET 1,5
  22. 140  FOR I%=0 TO 33:P5%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  23. 150  GET 1,6
  24. 160  FOR I%=0 TO 33:P6%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  25. 170  GET 1,7
  26. 180  FOR I%=0 TO 33:P7%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  27. 190  GET 1,8
  28. 200  FOR I%=0 TO 33:P8%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  29. 210  GET 1,9
  30. 220  FOR I%=0 TO 33:P9%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  31. 230  GET 1,10
  32. 240  FOR I%=0 TO 33:P10%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  33. 250  GET 1,11
  34. 260  FOR I%=0 TO 33:P11%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  35. 270  GET 1,12
  36. 280  FOR I%=0 TO 33:P12%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  37. 290  GET 1,13
  38. 300  FOR I%=0 TO 33:P13%(I%)=CVI(MID$(S$,I%*2+1,2)):NEXT
  39. 301  CLOSE #1
  40. 302  OPEN "CK" AS #1 LEN=20:FIELD #1,20 AS S$
  41. 304  MQ=4
  42. 305  CLS:X=38:Y=16:L=27:K=28:LINE(0,183)-(319,199),0,BF
  43. 310  PUT (X,Y),P1%,XOR
  44. 320  PUT (X+L,16),P2%,XOR
  45. 330  PUT (X+2*L,16),P3%,XOR
  46. 340  PUT (X+3*L,16),P4%,XOR
  47. 350  PUT (X+4*L,16),P1%,XOR
  48. 360  PUT (X+5*L,16),P2%,XOR
  49. 370  PUT (X+6*L,16),P3%,XOR
  50. 380  PUT (X+7*L,16),P4%,XOR
  51. 390  PUT (X+8*L,16),P1%,XOR
  52. 400  PUT (X+8*L,Y+K),P2%,XOR
  53. 410  PUT (X+8*L,Y+2*K),P3%,XOR
  54. 420  PUT (X+8*L,Y+3*K),P4%,XOR
  55. 430  PUT (X+8*L,Y+4*K),P1%,XOR
  56. 440  PUT (X+8*L,Y+5*K),P2%,XOR
  57. 450  'PUT (X+8*L,Y+6*L),P3%,XOR
  58. 460  PUT (X,Y+K),P2%,XOR
  59. 470  PUT (X,Y+2*K),P3%,XOR
  60. 480  PUT (X,Y+3*K),P4%,XOR
  61. 490  PUT (X,Y+4*K),P1%,XOR
  62. 500  PUT (X,Y+5*K),P2%,XOR
  63. 510  'PUT (X,Y+6*L),P3%,XOR
  64. 520  PUT (X+L,Y+5*K),P3%,XOR
  65. 530  PUT (X+2*L,Y+5*K),P4%,XOR
  66. 540  PUT (X+3*L,Y+5*K),P1%,XOR
  67. 550  PUT (X+4*L,Y+5*K),P2%,XOR
  68. 560  PUT (X+5*L,Y+5*K),P3%,XOR
  69. 570  PUT (X+6*L,Y+5*K),P4%,XOR
  70. 580  PUT (X+7*L,Y+5*K),P1%,XOR
  71. 600  LOCATE 4,16:PRINT "STRING$<UNK! {00F7}> WEND<0xCB!> <0xB5!>ERASE"
  72. 610  LOCATE 6,14:PRINT "CALLKEY NOTOR WEND<0xE2!> LOCATEERL TO<0xE2!>"
  73. 620  LOCATE 7,14:PRINT "CALLKEY NOTOR MOTORWRITE STEPLINE TO<0xE2!>"
  74. 630  LOCATE 8,14:PRINT "MERGE<0xE1!> LOCATE<UNK! {00F8}>":LINE (0,16)-(7,16),0:LINE (0,160)-(7,160),0:LINE (0,124)-(7,124),0
  75. 650  II=1:XI=80:YI=90:X0=XI:Y0=YI:LL=18
  76. 660  WHILE II>0 AND II<4
  77. 670  PUT (X0,Y0),P1,XOR
  78. 680  FOR I=1 TO 3000:NEXT
  79. 700  PUT (X0,Y0),P1,XOR
  80. 710  FOR I=1 TO 2600:NEXT
  81. 720  V$=INKEY$:IF V$="" THEN GOTO 830
  82. 730  IF RIGHT$(V$,1)=CHR$(80) THEN IF II<3 THEN II=II+1:GOTO 800 ELSE II=1:GOTO 800
  83. 740  IF RIGHT$(V$,1)=CHR$(72) THEN IF II=1 THEN II=3:GOTO 800 ELSE II=II-1:GOTO 800
  84. 750  IF RIGHT$(V$,1)=CHR$(77) THEN IF II<3 THEN II=II+1:GOTO 800 ELSE II=1:GOTO 800
  85. 760  IF RIGHT$(V$,1)=CHR$(75) THEN IF II=1 THEN II=3:GOTO 800 ELSE II=II-1:GOTO 800
  86. 770  IF RIGHT$(V$,1)=CHR$(13) THEN ON II GOTO 900,2000,776:GOTO 20
  87. 774  GOTO 660
  88. 776  END
  89. 800  IF II=1 THEN X0=XI:Y0=YI
  90. 810  IF II=2 THEN X0=XI:Y0=YI+LL
  91. 820  IF II=3 THEN X0=XI:Y0=YI+LL*2
  92. 830  WEND
  93. 850  A$=INKEY$:IF A$="" THEN GOTO 850
  94. 900  GOSUB 5000
  95. 910  MZF=0:X0=240:Y0=2:L=24:MM=4:X3=56:Y3=90:LLL=48:PS=0:PC1=0:KKK=100
  96. 920  PUT (X0,Y0),P9,XOR:PUT (X0+L,Y0),P9,XOR:PUT (X0+2*L,Y0),P9,XOR
  97. 930  GOSUB 6000
  98. 940  K=1
  99. 950  LOCATE 1,6:PRINT USING "###";K:LOCATE 1,22:PRINT USING "####";MZF
  100. 952  GOSUB 6200
  101. 1000  IT=39:IP=1:K0(1)=1:K0(2)=1:K0(3)=1:K0(4)=1:PC0=0:GOSUB 6500
  102. 1004  IF RIGHT$(A$,1)=CHR$(27) THEN GOTO 305
  103. 1010  IF MM=0 THEN GOTO 1200
  104. 1020  IF K<101 THEN GOTO 950
  105. 1030  LOCATE 1,6:PRINT USING "###";K:LOCATE 1,22:PRINT USING "####";MZF
  106. 1040  JJ=176
  107. 1050  GOSUB 6100
  108. 1090  K=1
  109. 1095  GOSUB 6200
  110. 1097  IT=39:IP=1:K0(1)=1:K0(2)=1:K0(3)=1:K0(4)=1:PC0=0:GOSUB 6500
  111. 1098  IF RIGHT$(A$,1)=CHR$(27) THEN GOTO 305
  112. 1100  IF MM=0 THEN GOTO 1200
  113. 1105  IF K=177 THEN GOTO 1200
  114. 1110  LOCATE 1,6:PRINT USING "###";K+100:LOCATE 1,22:PRINT USING "####";MZF
  115. 1120  GOTO 1095
  116. 1200  LINE (0,36)-(319,136),0,BF
  117. 1205  IF PS=0 THEN PP=0:PP1=0:PC1=0 ELSE PP=(PS-PC1)/PS*100:PP1=PS/K*100
  118. 1210  LOCATE 3,6:PRINT "SOUND<UNK! {00FA}>USINGPOINTRANDOMIZEWENDUSING<UNK! {00F6}>MOTOR<0xCB!>";K;"<0xB5!>CLSTO<0xE2!>. USINGPOINTWRITESTRING$TAB(AUTO"; MZF
  119. 1220  LOCATE 4,6:PRINT "USING<UNK! {00F6}><0xB6!>ERL<0xB5!>SOUNDNOTUSR";PS;"<0xB5!>CLSTO<0xE2!>, ERRLOAD";PP1;"%"
  120. 1230  LOCATE 5,6:PRINT "SPC(CLOSE<0xB4!>TAB(USING<UNK! {00F6}><0xB6!>ERL<0xB5!>SOUNDNOTUSR";PS-PC1;"TO<0xE2!>, ERRLOAD";PP;"%"
  121. 1240  LOCATE 6,6:PRINT "USING<UNK! {00F6}><0xB4!>^<0xB5!>SOUNDERRLOAD";100-PP1;"%":LINE (0,124)-(7,124),0:LINE (240,106)-(248,106),0
  122. 1250  A$=INKEY$:IF A$="" THEN GOTO 1250
  123. 1255  IF MQ<6 THEN MQ=MQ+1 ELSE MQ=1
  124. 1260  CLS:GOTO 305
  125. 2000  LINE (64,36)-(220,148),0,BF
  126. 2010  LOCATE 5,14:PRINT  "SOUND<UNK! {00FA}>USINGLOADWHILEOPTIONUSING<UNK! {00F7}>LOADOPTION<0xB5!>CLS"
  127. 2015  LOCATE 6,14:INPUT "<0xB5!>CLSTO<0xE2!>(6-180)";JJ
  128. 2020  IF JJ>180 OR JJ<5 THEN GOTO 2010
  129. 2030  GOSUB 5000
  130. 2040  MZF=0:X0=240:Y0=2:L=24:MM=2:X3=56:Y3=90:LLL=48:PS=0:PC1=0:KKK=JJ
  131. 2050  PUT (X0+2*L,Y0),P9,XOR
  132. 2060  IF KKK>100 THEN KKK=100
  133. 2070  GOSUB 6000
  134. 2080  K=1
  135. 2090  LOCATE 1,6:PRINT USING "###";K:LOCATE 1,22:PRINT USING "####";MZF
  136. 2100  GOSUB 6200:PUT(X0+L+L,Y0),P9,OR
  137. 2300  IT=39:IP=1:K0(1)=1:K0(2)=1:K0(3)=1:K0(4)=1:PC0=0:MM=2:GOSUB 6500
  138. 2310  IF RIGHT$(A$,1)=CHR$(27) THEN GOTO 305
  139. 2320  IF MM=0 OR IT=0 THEN LOCATE 3,8+K1(K)*4:PRINT C$(K,K2(K)+4);:LINE (72+K1(K)*32,52)-(72+K1(K)*32+7,52),0:FOR S=1 TO 3000:NEXT:IF MM=0 THEN K=K+1
  140. 2325  GOSUB 8200
  141. 2330  IF K<=KKK THEN 2090
  142. 2340  LOCATE 1,6:PRINT USING "###";K:LOCATE 1,22:PRINT USING "####";MZF
  143. 2350  IF JJ<101 THEN GOTO 2470
  144. 2360  GOSUB 6100
  145. 2370  K=1
  146. 2380  GOSUB 6200
  147. 2390  IT=39:IP=1:K0(1)=1:K0(2)=1:K0(3)=1:K0(4)=1:PC0=0:GOSUB 6500
  148. 2400  IF RIGHT$(A$,1)=CHR$(27) THEN GOTO 305
  149. 2410  IF MM=0 THEN K=K+1:GOSUB 8200
  150. 2420  IF K=JJ-100 THEN GOTO 2470
  151. 2450  LOCATE 1,6:PRINT USING "###";K+100:LOCATE 1,22:PRINT USING "####";MZF
  152. 2460  GOTO 2390
  153. 2470  LINE (0,36)-(319,136),0,BF:PP=(PS-PC1)/PS*100:PP1=PS/JJ*100
  154. 2475  IF PS=0 THEN PP=0:PP1=0:PC1=0 ELSE PP=(PS-PC1)/PS*100:PP1=PS/JJ*100
  155. 2480  LOCATE 3,6:PRINT "SOUND<UNK! {00FA}>USINGPOINTRANDOMIZEWENDUSING<UNK! {00F6}>MOTOR<0xCB!>";JJ ;"<0xB5!>CLSTO<0xE2!>. USINGPOINTWRITESTRING$TAB(AUTO"; MZF
  156. 2490  LOCATE 4,6:PRINT "USING<UNK! {00F6}><0xB6!>ERL<0xB5!>SOUNDNOTUSR";PS;"<0xB5!>CLSTO<0xE2!>, ERRLOAD";PP1;"%"
  157. 2500  LOCATE 5,6:PRINT "SPC(CLOSE<0xB4!>TAB(USING<UNK! {00F6}><0xB6!>ERL<0xB5!>SOUNDNOTUSR";PS-PC1;"TO<0xE2!>, ERRLOAD";PP;"%"
  158. 2510  LOCATE 6,6:PRINT "USING<UNK! {00F6}><0xB4!>^<0xB5!>SOUNDERRLOAD";100-PP1;"%":LINE (0,124)-(7,124),0
  159. 2520  A$=INKEY$:IF A$="" THEN GOTO 2520
  160. 2530  IF MQ<6 THEN MQ=MQ+1 ELSE MQ=1
  161. 2540  CLS:GOTO 305
  162. 4000  'A$=INKEY$:IF A$="" THEN GOTO 4000
  163. 5000  CLS:LINE (0,183)-(319,199),0,BF:LOCATE 1,4,0:PRINT "<0xB5!>VARPTR    TO<0xE2!>    <0xB5!>BLOADWRITESTRING$:"
  164. 5005  LINE (0,20)-(319,24),2,BF
  165. 5010  LINE (0,20)-(319,24),3,B
  166. 5020  FOR I=1 TO 19:PSET(16*I,23),3:NEXT
  167. 5030  LINE (0,138)-(319,138),1
  168. 5040  LOCATE 9,4:PRINT "  ELSE<UNK! {00FB}> ELSE<UNK! {00FA}> FNELSEERLEQV    CLOSEINSTRCALL<0xB5!>LOAD<UNK! {00FC}> DELETEDELETE FNELSE<0xB6!>RESUME"
  169. 5050  LOCATE 10,10:PRINT "   ESC DELETEDELETE THEN<0xCB!>CALL<UNK! {00F6}>";:LINE (0,160)-(7,160),0
  170. 5060  RETURN
  171. 6000  FOR I=1 TO KKK
  172. 6015  L0=(I-1)*7+MQ
  173. 6017  L0=L0 MOD 180
  174. 6020  GET #1,((I-1)*7+MQ) MOD 180+1
  175. 6030  FOR J=1 TO 8:C$(I,J)=MID$(S$,2*J+1,2):NEXT
  176. 6040  K1(I)=VAL(MID$(S$,19,1)):K2(I)=VAL(MID$(S$,20,1))
  177. 6050  NEXT I
  178. 6060  RETURN
  179. 6100  FOR I=101 TO JJ
  180. 6120  GET #1,((I-1)*7+MQ) MOD 180+1
  181. 6130  FOR J=1 TO 8:C$(I-100,J)=MID$(S$,2*J+1,2):NEXT
  182. 6140  K1(I-100)=VAL(MID$(S$,19,1)):K2(I-100)=VAL(MID$(S$,20,1))
  183. 6150  NEXT
  184. 6160  RETURN
  185. 6200  LOCATE 3,12,0:FOR I=1 TO 4:PRINT C$(K,I)+"  ";:NEXT
  186. 6210  OA=88+(K1(K)-1)*32
  187. 6220  PUT(OA,36),P9,XOR
  188. 6230  PUT (X3,Y3),P1,OR:PUT (X3+LLL,Y3),P2,OR
  189. 6240  PUT (X3+LLL*2,Y3),P3,OR:PUT (X3+LLL*3,Y3),P4,OR
  190. 6250  LOCATE 6,11:PRINT C$(K,5);:LOCATE 6,17:PRINT C$(K,6);
  191. 6260  LOCATE 6,23:PRINT C$(K,7);:LOCATE 6,29:PRINT C$(K,8);:LINE (240,106)-(248,106),0:LINE(0,124)-(7,124),0:RETURN
  192. 6500  A$=INKEY$:IF A$="" THEN GOTO 6550
  193. 6510  IF RIGHT$(A$,1)=CHR$(77) THEN 7000
  194. 6520  IF RIGHT$(A$,1)=CHR$(75) THEN 7050
  195. 6530  IF RIGHT$(A$,1)=CHR$(13) THEN 8000
  196. 6540  IF RIGHT$(A$,1)=CHR$(27) THEN MQ=MQ+1:RETURN
  197. 6550  FOR I=1 TO 7000:NEXT
  198. 6560  ON IP GOTO 6570,6580,6590,6600
  199. 6570  PUT (X3,Y3),P1,XOR:GOTO 6605
  200. 6580  PUT (X3+LLL,Y3),P2,XOR:GOTO 6605
  201. 6590  PUT (X3+LLL*2,Y3),P3,XOR:GOTO 6605
  202. 6600  PUT (X3+LLL*3,Y3),P4,XOR:GOTO 6605
  203. 6605  IF IT>19 THEN IT0=IT-20 ELSE IT0=IT
  204. 6610  LINE (16*IT0+1,21)-(16*IT0+15,23),0,BF
  205. 6612  LINE (16*IT0,21)-(16*IT0,22),0,BF
  206. 6620  FOR I=1 TO 2500:NEXT
  207. 6630  ON IP GOTO 6640,6650,6660,6670
  208. 6640  PUT (X3,Y3),P1,XOR:GOTO 6675
  209. 6650  PUT (X3+LLL,Y3),P2,XOR:GOTO 6675
  210. 6660  PUT (X3+LLL*2,Y3),P3,XOR:GOTO 6675
  211. 6670  PUT (X3+LLL*3,Y3),P4,XOR
  212. 6675  IT=IT-1:IF IT=0 THEN GOTO 6720
  213. 6680  IF IT<>19 THEN GOTO 6500
  214. 6690  GOSUB 8200:GOTO 6500
  215. 6720  PUT (OA,36),P9,XOR:SOUND 180,5
  216. 6730  K=K+1:MM=MM-1
  217. 6735  FOR I=1 TO 3:PUT (OA,36),P13,OR:SOUND 180,5
  218. 6740  FOR J=1 TO 3000:NEXT:PUT (OA,36),P13,XOR:FOR J=1 TO 1000:NEXT:NEXT I
  219. 6745  IF MM=3 THEN PUT(X0,Y0),P9,XOR:GOTO 6770
  220. 6750  IF MM=2 THEN PUT(X0+L,Y0),P9,XOR:GOTO 6770
  221. 6755  IF MM=1 THEN PUT(X0+L+L,Y0),P9,XOR:GOTO 6770
  222. 6760  IF MM=0 THEN IF II=2 THEN PUT(X0+L+L,Y0),P9,XOR:RETURN ELSE RETURN
  223. 6770  GOSUB 8200:RETURN
  224. 7000  IF MM=0 THEN RETURN
  225. 7002  IF K0(1)+K0(2)+K0(3)+K0(4)=2 THEN IF II=1 THEN K=K+1:GOSUB 8200:RETURN ELSE RETRUN
  226. 7005  IF IP<4 THEN IF K0(IP+1)=1 THEN IP=IP+1:GOTO 6500 ELSE GOTO 7020
  227. 7010  IF K0(1)=1 THEN IP=1:GOTO 6500 ELSE IP=2:GOTO 6500
  228. 7020  IF IP<3 THEN IP=IP+2:GOTO 6500 ELSE IP=1:GOTO 6500
  229. 7050  IF IP>1 THEN IF K0(IP-1)=1 THEN IP=IP-1:GOTO 6500 ELSE GOTO 7070
  230. 7060  IF K0(4)=1 THEN IP=4:GOTO 6500 ELSE IP=3:GOTO 6500
  231. 7070  IF IP>2 THEN IP=IP-2:GOTO 6500 ELSE IP=4:GOTO 6500
  232. 8000  IF IP=K2(K) THEN PS=PS+1:IF PC0=1 THEN PC1=PC1+1:PC0=0:GOTO 8500 ELSE GOTO 8500
  233. 8010  K0(IP)=0:MM=MM-1:PUT(OA,36),P9,XOR:IF PC0=0 THEN PC0=1 ELSE PC0=0
  234. 8011  FOR I=1 TO 3:PUT (OA,36),P13,OR:SOUND 180,5
  235. 8012  FOR J=1 TO 3000:NEXT:PUT (OA,36),P13,XOR:FOR J=1 TO 1000:NEXT:NEXT I
  236. 8013  IF MM=3 THEN PUT(X0,Y0),P9,XOR:GOTO 8018
  237. 8014  IF MM=2 THEN PUT(X0+L,Y0),P9,XOR:GOTO 8018
  238. 8015  IF MM=1 THEN PUT(X0+L+L,Y0),P9,XOR:GOTO 8018
  239. 8018  ON IP GOTO 8020,8060,8100,8140
  240. 8020  LINE (X3+18,Y3)-(X3+38,Y3+16),0,BF:SOUND 320,18:PUT (X3,Y3),P1,XOR
  241. 8030  FOR I=1 TO 32 STEP 2
  242. 8040  PUT (X3,Y3+I),P1,XOR:FOR J=1 TO 500:NEXT
  243. 8050  PUT (X3,Y3+I),P1,XOR:NEXT I:PUT(OA,36),P9,XOR:GOTO 7000
  244. 8060  LINE (X3+LLL+18,Y3)-(X3+LLL+38,Y3+16),0,BF:SOUND 320,18:PUT (X3+LLL,Y3),P2,XOR
  245. 8070  FOR I=1 TO 32 STEP 2
  246. 8080  PUT (X3+LLL,Y3+I),P2,XOR:FOR J=1 TO 500:NEXT
  247. 8090  PUT (X3+LLL,Y3+I),P2,XOR:NEXT I:PUT(OA,36),P9,XOR:GOTO 7000
  248. 8100  LINE (X3+LLL*2+18,Y3)-(X3+LLL*2+38,Y3+16),0,BF:SOUND 320,18:PUT (X3+LLL*2,Y3),P3,XOR
  249. 8110  FOR I=1 TO 32 STEP 2
  250. 8120  PUT (X3+LLL*2,Y3+I),P3,XOR:FOR J=1 TO 500:NEXT
  251. 8130  PUT (X3+LLL*2,Y3+I),P3,XOR:NEXT I:PUT(OA,36),P9,XOR:GOTO 7000
  252. 8140  LINE (X3+LLL*3+18,Y3)-(X3+LLL*3+38,Y3+16),0,BF:SOUND 320,18:PUT (X3+LLL*3,Y3),P4,XOR
  253. 8150  FOR I=1 TO 32 STEP 2
  254. 8160  PUT (X3+LLL*3,Y3+I),P4,XOR:FOR J=1 TO 500:NEXT
  255. 8170  PUT (X3+LLL*3,Y3+I),P4,XOR:NEXT I:PUT(OA,36),P9,XOR:GOTO 7000
  256. 8200  LINE (0,20)-(319,24),2,BF
  257. 8210  LINE (0,20)-(319,24),3,B
  258. 8220  FOR I=1 TO 19:PSET(16*I,23),3:NEXT
  259. 8230  RETURN
  260. 8500  X4=88+(K1(K)-1)*32:Y4=54:KK=2000:PU1=2:PU2=2:IT1=1:IT2=1
  261. 8510  IF IP=1 THEN X5=X3:Y5=Y3-12
  262. 8520  IF IP=2 THEN X5=X3+LLL:Y5=Y3-12
  263. 8530  IF IP=3 THEN X5=X3+2*LLL:Y5=Y3-12
  264. 8540  IF IP=4 THEN X5=X3+3*LLL:Y5=Y3-12
  265. 8550  Y45=INT((Y5+Y4)/2):PUT (X4,36),P9,XOR:IF ABS(X5-X4)>31 THEN PU2=4
  266. 8555  IF ABS(X5-X4)>47 THEN PU2=6
  267. 8560  FOR I=0 TO Y45-Y4 STEP 2*PU1
  268. 8570  PUT(X4,Y4+I),P5,XOR:SOUND 100,IT1
  269. 8580  FOR J=1 TO KK:NEXT:PUT(X4,Y4+I),P5,XOR
  270. 8590  PUT(X4,Y4+PU1+I),P6,XOR:SOUND 110,IT2
  271. 8600  FOR J=1 TO KK:NEXT:PUT(X4,Y4+I+PU1),P6,XOR
  272. 8610  NEXT
  273. 8620  IF X5>=X4 THEN GOTO 8690
  274. 8630  FOR I=0 TO X5-X4 STEP -PU2*2
  275. 8640  PUT(X4+I,Y45),P11,XOR:SOUND 100,IT1
  276. 8650  FOR J=1 TO KK:NEXT:PUT(X4+I,Y45),P11,XOR
  277. 8660  PUT(X4+I-PU2,Y45),P12,XOR:SOUND 110,IT2
  278. 8670  FOR J=1 TO KK:NEXT:PUT(X4+I-PU2,Y45),P12,XOR
  279. 8680  NEXT:GOTO 8760
  280. 8690  IF X5=X4 THEN GOTO 8760
  281. 8700  FOR I=0 TO X5-X4 STEP 2*PU2
  282. 8710  PUT(X4+I,Y45),P9,XOR:SOUND 100,IT1
  283. 8720  FOR J=1 TO KK:NEXT:PUT(X4+I,Y45),P9,XOR
  284. 8730  PUT(X4+I+PU2,Y45),P10,XOR:SOUND 110,IT2
  285. 8740  FOR J=1 TO KK:NEXT:PUT(X4+I+PU2,Y45),P10,XOR
  286. 8750  NEXT
  287. 8760  FOR I=0 TO Y5-Y45 STEP PU1*2
  288. 8770  PUT(X5,Y45+I),P5,XOR:SOUND 100,IT1
  289. 8780  FOR J=1 TO KK:NEXT:PUT(X5,Y45+I),P5,XOR
  290. 8790  PUT(X5,Y45+I+PU1),P6,XOR:SOUND 110,IT2
  291. 8800  FOR J=1 TO KK:NEXT:PUT(X5,Y45+I+PU1),P6,XOR
  292. 8810  NEXT
  293. 8820  LINE (X5,Y5+12)-(X5+40,Y5+28),0,BF:SOUND 100,1:SOUND 107,1:SOUND 114,1
  294. 8825  FOR I=1 TO 15000:NEXT
  295. 8830  FOR I=Y5-Y45 TO 0 STEP -PU1*2
  296. 8840  PUT(X5,Y5+I),P7,XOR:SOUND 100,IT1
  297. 8850  FOR J=1 TO KK:NEXT:PUT(X5,Y5+I),P7,XOR
  298. 8860  PUT(X5,Y5+I-PU1),P8,XOR:SOUND 110,IT2
  299. 8870  FOR J=1 TO KK:NEXT:PUT(X5,Y5+I-PU1),P8,XOR
  300. 8880  NEXT
  301. 8890  IF X5>=X4 THEN GOTO 8960
  302. 8900  FOR I=0 TO X4-X5 STEP 2*PU2
  303. 8910  PUT(X5+I,Y45),P9,XOR:SOUND 100,IT1
  304. 8920  FOR J=1 TO KK:NEXT:PUT(X5+I,Y45),P9,XOR
  305. 8930  PUT(X5+I+PU2,Y45),P10,XOR:SOUND 110,IT2
  306. 8940  FOR J=1 TO KK:NEXT:PUT(X5+I+PU2,Y45),P10,XOR
  307. 8950  NEXT
  308. 8960  IF X5=X4 THEN GOTO 9030
  309. 8970  FOR I=0 TO X4-X5 STEP -2*PU2
  310. 8980  PUT(X5+I,Y45),P11,XOR:SOUND 100,IT1
  311. 8990  FOR J=1 TO KK:NEXT:PUT(X5+I,Y45),P11,XOR
  312. 9000  PUT(X5+I-PU2,Y45),P12,XOR:SOUND 110,IT2
  313. 9010  FOR J=1 TO KK:NEXT:PUT(X5+I-PU2,Y45),P12,XOR
  314. 9020  NEXT
  315. 9030  FOR I=Y45-Y4 TO 0 STEP -4
  316. 9040  PUT(X4,Y45+I-12),P7,XOR:SOUND 100,IT1
  317. 9050  FOR J=1 TO KK:NEXT:PUT(X4,Y45+I-12),P7,XOR
  318. 9060  PUT(X4,Y45-14+I),P8,XOR:SOUND 110,IT2
  319. 9070  FOR J=1 TO KK:NEXT:PUT(X4,Y45+I-14),P8,XOR
  320. 9080  NEXT
  321. 9090  LOCATE 3,8+K1(K)*4:PRINT C$(K,IP+4);:LINE (72+K1(K)*32,52)-(72+K1(K)*32+7,52),0
  322. 9105  FOR ZZ=1 TO 5000:NEXT
  323. 9110  K=K+1
  324. 9120  GOSUB 8200
  325. 9135  PPP=FRI(0)
  326. 9137  IF II=1 THEN MZF=MZF+INT(IT/4) ELSE MZF=MZF+1
  327. 9140  RETURN
  328.