Advertisement
Guest User

ANTS.BAS converted from ATASCII

a guest
Jun 24th, 2017
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ZXBasic 12.06 KB | None | 0 0
  1. ANTS.BAS source CODE converted from ATASCII
  2. Original by Allan Knopp, 1987
  3. Info here: http://gury.atari8.info/games/2823.php
  4.  
  5. Since ATASCII lacked {} characters, they have been used TO indicate special ATASCII characters:
  6.   A single character in {} appears in inverted colour.
  7.   Longer names in {} are special characters.
  8.  
  9. 1 REM *******************************
  10. 2 REM *     ANTS IN YOUR PANTS      *
  11. 3 REM *             by              *
  12. 4 REM *        ALLAN KNOPP          *
  13. 5 REM *                             *
  14. 6 REM * --------------------------- *
  15. 7 REM *  PAGE 6 MAGAZINE - ENGLAND  *
  16. 8 REM *******************************
  17. 9 REM
  18. 100 GOTO 1080
  19. 105 RAMTOP=PEEK(106)
  20. 110 GOSUB 1045
  21. 115 TX=4
  22. 120 GOSUB 355:GOSUB 400
  23. 125 GOSUB 355:GOSUB 405
  24. 130 GOSUB 355:GOSUB 410
  25. 135 GOSUB 355:GOSUB 415
  26. 140 GOSUB 355:GOSUB 420
  27. 145 GOSUB 355:GOSUB 425
  28. 150 GOSUB 355:GOSUB 430
  29. 155 POSITION 12,22:? "{ }{P}{L}{E}{A}{S}{E}{ }{W}{A}{I}{T}{ }"
  30. 160 POKE 257,182:POKE 258,120:POKE 259,40:POKE 260,6:REM {*}{ }{D}{L}{I}{C}{O}{L}{O}{U}{R}{S}{ }{*}
  31. 165 POKE 708,36:POKE 709,24:POKE 711,14:POKE 710,74
  32. 170 POKE 752,1
  33. 175 GOSUB 835:GOSUB 810
  34. 180 GOSUB 525:GOSUB 865
  35. 185 Z=4.5:GOSUB 445
  36. 190 POSITION 12,22:? "             "
  37. 195 POKE 756,CHI
  38. 200 Y=85:XC=200:XD=200
  39. 205 REM {*}{ }{M}{A}{I}{N}{ }{L}{O}{O}{P}{ }{*}
  40. 210 ST=STICK(0):STR=STRIG(0)
  41. 215 IF ST=15 AND SO=1 THEN POKE DL+5,RAMTOP-28:SO=0:SOO=0
  42. 220 IF ST=6 THEN POKE DL+5,RAMTOP-4:GOSUB 300
  43. 225 IF ST=5 THEN POKE DL+5,RAMTOP-8:GOSUB 300
  44. 230 IF ST=7 THEN POKE DL+5,RAMTOP-12:GOSUB 300
  45. 235 IF ST=11 THEN POKE DL+5,RAMTOP-16:GOSUB 300
  46. 240 IF ST=9 THEN POKE DL+5,RAMTOP-20:GOSUB 300
  47. 245 IF ST=10 THEN POKE DL+5,RAMTOP-24:GOSUB 300
  48. 250 POKE 53278,1
  49. 255 IF PEEK(53255) OR PEEK(53253) OR PEEK(53254) OR PEEK(53252) THEN GOSUB 475
  50. 260 XA=XA+XAA:XB=XB+XBB:XC=XC-XCC:XD=XD-XDD
  51. 265 IF XA>124 THEN XA=40:GOSUB 455
  52. 270 IF XB>124 THEN XB=40:GOSUB 455
  53. 275 IF XC<128 THEN XC=208:GOSUB 455
  54. 280 IF XD<128 THEN XD=208:GOSUB 455
  55. 285 GOSUB 315
  56. 290 GOTO 210
  57. 295 REM {*}{ }{S}{T}{O}{M}{P}{I}{N}{G}{ }{S}{O}{U}{N}{D}{ }{*}
  58. 300 IF SOO<>0 THEN RETURN
  59. 305 FOR X=16 TO 0 STEP -2:SOUND 0,200-10*X,8,X:NEXT X:SOUND 0,0,0,0:SO=1:SOO=1:RETURN
  60. 310 REM {*}{ }{M}{O}{V}{E}{ }{A}{N}{T}{S}{ }{*}
  61. 315 IF IMAGE=1 THEN IMAGE=0:PR=PAR1:PL=PAL2:GOTO 325
  62. 320 IF IMAGE=0 THEN IMAGE=1:PL=PAL1:PR=PAR2
  63. 325 A=USR(MOVE,0,PMB,PR,XA,Y-1,4)
  64. 330 A=USR(MOVE,1,PMB,PR,XB,Y,4)
  65. 335 A=USR(MOVE,2,PMB,PL,XC,Y-1,4)
  66. 340 A=USR(MOVE,3,PMB,PL,XD,Y,4)
  67. 345 RETURN
  68. 350 REM {*}{ }{S}{E}{T}{ }{U}{P}{ }{S}{C}{R}{E}{E}{N}{S}{ }{*}
  69. 355 GRAPHICS 0:DL=PEEK(560)+256*PEEK(561)
  70. 360 POKE DL+3,68:FOR X=6 TO 26:POKE DL+X,PEEK(DL+X)+2:NEXT X:? "{CLS}"
  71. 365 POKE 106,RAMTOP-TX:POKE 559,34:POKE 752,1
  72. 370 POKE 89,RAMTOP-TX:TX=TX+4
  73. 375 POSITION 11,0:? "$$$$$$$   $$$$$$$"
  74. 380 POSITION 11,1:? "$$$$$$$   $$$$$$$"
  75. 385 POSITION 11,21:? "{JUNC-URD}{LINE-D}{CIRCLE}{JUNC-ULRD} {QUARTER-DR}{LINE-D} {HALF-L}{QUARTER-DL}{HALF-D}{LINE-LR} {CLUBS}{JUNC-URD}{LINE-D}{CIRCLE}{JUNC-ULRD}":REM {C}{T}{R}{L} "ANTS IN YOUR PANTS"
  76. 390 POSITION 0,22:? "SCORE ";SCO;"                      HIGH ";HSC
  77. 395 RETURN
  78. 400 POSITION 13,2:? LLEG$(6,LEN(LLEG$)):POSITION 23,2:? RLEG$:RETURN
  79. 405 POSITION 14,2:? LLEG$(6,LEN(LLEG$)):POSITION 24,2:? RLEG$:RETURN
  80. 410 POSITION 15,2:? LLEG$(6,LEN(LLEG$)):POSITION 25,2:? RLEG$:RETURN
  81. 415 POSITION 13,2:? LLEG$:POSITION 23,2:? RLEG$(6,LEN(RLEG$)):RETURN
  82. 420 POSITION 14,2:? LLEG$:POSITION 24,2:? RLEG$(6,LEN(RLEG$)):RETURN
  83. 425 POSITION 15,2:? LLEG$:POSITION 25,2:? RLEG$(6,LEN(RLEG$)):RETURN
  84. 430 POSITION 15,2:? LLEG$(6,LEN(LLEG$)):POSITION 23,2:? RLEG$(6,LEN(RLEG$)):RETURN
  85. 435 RETURN
  86. 440 REM {*}{ }{A}{M}{O}{U}{N}{T}{ }{O}{F}{ }{A}{N}{T}{ }{M}{O}{V}{E}{M}{E}{N}{T}{ }{*}
  87. 445 XAA=RND(0)*Z+0.5:XBB=RND(0)*Z:XCC=RND(0)*Z:XDD=RND(0)*Z+0.5:RETURN
  88. 450 REM {*}{ }{P}{I}{L}{E}{ }{A}{N}{T}{S}{ }{*}
  89. 455 XW=INT(RND(0)*3):FOR SC=0 TO 28 STEP 4:POKE 89,RAMTOP-SC
  90. 460 COLOR ASC("%"):PLOT 19+XW,16-INT(HEIGHT):NEXT SC:HEIGHT=HEIGHT+0.4:IF HEIGHT>15 THEN GOTO 990
  91. 465 FOR X=0 TO 20 STEP 2:SOUND 0,X,8,12:NEXT X:SOUND 0,0,0,0:Z=Z+0.1:POKE 77,0:RETURN
  92. 470 REM {*}{ }{S}{Q}{U}{A}{S}{H}{ }{*}
  93. 475 IF PEEK(53252) THEN XA=40:GOTO 495
  94. 480 IF PEEK(53253) THEN XB=40:GOTO 495
  95. 485 IF PEEK(53254) THEN XC=207:GOTO 495
  96. 490 IF PEEK(53255) THEN XD=207
  97. 495 FOR X=60 TO 0 STEP -10:SOUND 0,X,10,14:NEXT X:SOUND 0,0,0,0
  98. 500 SCO=SCO+1:Z=Z+0.03:POKE 77,0
  99. 505 GOSUB 445
  100. 510 FOR X=0 TO 28 STEP 4:POKE 89,RAMTOP-X
  101. 515 POSITION 6,22:? SCO;"   ":NEXT X:POKE 53278,1:RETURN
  102. 520 REM {*}{ }{E}{D}{I}{T}{ }{C}{H}{S}{E}{T}{ }{*}
  103. 525 POKE 106,PEEK(106)-5:CHSET=(PEEK(106)+1)*256
  104. 530 CHI=CHSET/256:CLO=0:POKE 203,CLO:POKE 204,CHI
  105. 535 DIM XFR$(28):RESTORE 540:FOR N=1 TO 28:READ ML:XFR$(N,N)=CHR$(ML):NEXT N
  106. 540 DATA 104,169,0,133,205,168,169,224,133,206,177,205,145,203,200,208
  107. 545 DATA 249,230,204,230,206,165,206,201,228,208,239,96
  108. 550 XFR=USR(ADR(XFR$))
  109. 555 RESTORE 575
  110. 560 READ A:IF A=-1 THEN RETURN
  111. 565 FOR Z=0 TO 7:READ J:POKE CHSET+A*8+Z,J:NEXT Z
  112. 570 GOTO 560
  113. 575 DATA 1,10,10,10,6,6,1,1,1
  114. 580 DATA 3,170,170,170,106,170,170,170,169
  115. 585 DATA 4,254,254,254,254,254,254,254,254
  116. 590 DATA 5,65,125,20,20,65,20,65,65
  117. 595 DATA 32,160,160,160,144,80,64,64,64
  118. 600 DATA 64,0,0,0,0,0,0,0,0
  119. 605 DATA 65,16,68,136,168,204,204,68,0
  120. 610 DATA 73,84,16,32,32,48,252,84,0
  121. 615 DATA 78,80,84,136,136,204,204,68,0
  122. 620 DATA 79,16,68,136,136,252,252,84,0
  123. 625 DATA 80,80,68,136,160,128,192,64,0
  124. 630 DATA 82,80,68,136,160,204,204,68,0
  125. 635 DATA 83,20,64,128,32,12,252,84,0
  126. 640 DATA 84,84,16,32,32,48,48,16,0
  127. 645 DATA 85,68,68,136,136,252,252,84,0
  128. 650 DATA 89,68,68,136,32,32,48,32,0
  129. 655 DATA 96,7,94,250,170,170,105,85,20
  130. 660 DATA 97,255,170,170,170,170,86,21,5
  131. 665 DATA 98,170,170,170,165,165,149,85,80
  132. 670 DATA 99,170,170,150,85,85,85,0,0
  133. 675 DATA 100,170,170,170,106,86,85,21,1
  134. 680 DATA 101,170,170,170,170,169,85,85,85
  135. 685 DATA 102,164,164,164,148,84,84,80,80
  136. 690 DATA 103,26,26,22,6,6,5,1,1
  137. 695 DATA 104,170,170,170,170,169,85,85,85
  138. 700 DATA 105,170,170,150,85,85,85,80,0
  139. 705 DATA 106,170,170,170,106,86,85,5,1
  140. 710 DATA 107,170,170,170,170,165,85,84,80
  141. 715 DATA 108,255,170,170,170,90,86,21,5
  142. 720 DATA 109,0,232,188,168,168,164,84,80
  143. 725 DATA 110,0,0,0,3,14,58,234,170
  144. 730 DATA 111,15,58,234,170,170,170,170,170
  145. 735 DATA 112,170,106,170,170,170,170,166,170
  146. 740 DATA 113,160,168,168,168,168,152,168,164
  147. 745 DATA 114,170,166,170,170,170,170,105,150
  148. 750 DATA 115,0,0,0,192,128,176,160,160
  149. 755 DATA 116,10,42,38,42,42,42,41,26
  150. 760 DATA 117,224,184,174,171,170,170,170,170
  151. 765 DATA 118,0,0,0,0,224,184,174,171
  152. 770 DATA 119,0,0,3,2,2,14,10,10
  153. 775 DATA 120,106,42,38,42,42,42,42,26
  154. 780 DATA 121,160,160,160,160,160,160,160,160
  155. 785 DATA 122,10,10,10,9,10,10,10,10
  156. 790 DATA 123,169,168,168,168,168,168,168,104
  157. 795 DATA 127,16,24,28,30,28,24,16,155
  158. 800 DATA -1
  159. 805 REM {*}{ }{D}{L}{I}{ }{M}{a}{d}{e}{ }{w}{i}{t}{h}{ }{D}{L}{I}{ }{M}{a}{k}{e}{r}{ }{ }{ }{b}{y}{ }{G}{r}{e}{g}{ }{A}{n}{d}{e}{r}{s}{o}{n}{ }{i}{n}{ }{A}{n}{a}{l}{o}{g}{ }{N}{o}{.}{ }{3}{8}{ }{ }{ }{ }{*}
  160. 810 POKE 559,Z:RESTORE 860:READ DNUM
  161. 815 D=PEEK(560)+256*PEEK(561)
  162. 820 FOR I=1 TO DNUM:READ B:POKE D+B,PEEK(D+B)+128:NEXT I
  163. 825 B=INT(ADR(DLI$)/256):A=ADR(DLI$)-B*256:POKE 512,A:POKE 513,B
  164. 830 POKE 54286,192:POKE 256,Z:POKE 559,46:RETURN
  165. 835 DIM DLI$(85)
  166. 840 DLI$="H{-}{HEART}{JUNC-URD}{n}{HEART}{JUNC-URD}{{LINE-U}}{TRI-DOWN}{T}{I}{HEART}{P}{DIAG-DOWN){)}p{{LINE-U}}{CORN-UR}{P}h@{I}{JUNC-URD}{P}{TRI-UP}{-}{JUNC-URD}{JUNC-URD}{{LINE-U}}{CORN-UR}{P}h@{I}{LINE-R}{P}{CURSOR-R}{)}{HEART}{{LINE-U}}"
  167. 845 DLI$(41)="{CORN-UR}{P}{-}{CIRCLE}{HEART}{{LINE-U}}{LINE-L}{P}{-}{LINE-R}{JUNC-URD}{{LINE-U}}{JUNC-LRD){P}{-}{CORN-UL}{JUNC-URD}{{LINE-U}}{JUNC-ULR}{P}{-}{JUNC-ULD}{JUNC-URD}{{LINE-U}}{HALF-L}{P}h@{)}{HEART}{{LINE-U}}{HEART}{JUNC-URD}{)}{HEART}{{LINE-U}}{JUNC-ULR}{P}{)}{`}"
  168. 850 DLI$(81)="{{LINE-U}}{QUARTER-DR}{T}h@"
  169. 855 RETURN
  170. 860 DATA 4,2,21,24,26
  171. 865 REM {*}{ }{P}{/}{M}{ }{M}{O}{V}{E}{R}{ }{f}{r}{o}{m}{ }{t}{h}{e}{ }{A}{n}{a}{l}{o}{g}{ }{C}{o}{m}{p}{e}{n}{d}{i}{u}{m}{ }{*}
  172. 870 RESTORE 940
  173. 875 DIM PMMOV$(100),AL1$(10),AL2$(10),AR1$(10),AR2$(10):MOVE=ADR(PMMOV$)
  174. 880 FOR X=1 TO 100:READ N:PMMOV$(X)=CHR$(N):NEXT X
  175. 885 FOR X=1 TO 4:READ N:AL1$(X)=CHR$(N):NEXT X
  176. 890 FOR X=1 TO 4:READ N:AL2$(X)=CHR$(N):NEXT X
  177. 895 FOR X=1 TO 4:READ N:AR1$(X)=CHR$(N):NEXT X
  178. 900 FOR X=1 TO 4:READ N:AR2$(X)=CHR$(N):NEXT X
  179. 905 PMBASE=INT((PEEK(145)+3)/4)*4:POKE 54279,PMBASE
  180. 910 PMB=PMBASE*256
  181. 915 PAL1=ADR(AL1$):PAL2=ADR(AL2$):PAR1=ADR(AR1$):PAR2=ADR(AR2$)
  182. 920 POKE 559,46:POKE 53277,3
  183. 925 POKE 704,0:POKE 705,34:POKE 706,0:POKE 707,34
  184. 930 RETURN
  185. 935 REM {*}{ }{P}{/}{M}{ }{M}{O}{V}{E}{ }{D}{A}{T}{A}{ }{*}
  186. 940 DATA 216,104,104,104,133,213,104,24,105,2,133,206,104,133,205,104,133,204,104,133,203,104,104,133,208
  187. 945 DATA 104,104,133,209,104,104,24,101,209,133,207,166,213,240,16,165,205,24,105,128,133,205,165,206,105
  188. 950 DATA 0,133,206,202,208,240,160,0,162,0,196,209,144,19,196,207,176,15,132,212,138,168,177,203,164
  189. 955 DATA 212,145,205,232,169,0,240,4,169,0,145,205,200,192,128,208,224,166,213,165,208,157,0,208,96
  190. 960 REM {*}{ }{I}{M}{A}{G}{E}{ }{D}{A}{T}{A}{ }{*}
  191. 965 DATA 128,110,126,42
  192. 970 DATA 128,110,126,21
  193. 975 DATA 1,118,126,168
  194. 980 DATA 1,118,126,84
  195. 985 REM {*}{ }{S}{H}{O}{W}{ }{S}{C}{O}{R}{E}{ }{*}
  196. 990 IF SCO>HSC THEN HSC=SCO
  197. 995 FOR P=90 TO 3 STEP -3:SOUND 0,P,10,12:NEXT P
  198. 1000 FOR P=3 TO 90 STEP 2:SOUND 0,P,10,12:NEXT P:SOUND 0,0,0,0
  199. 1005 FOR SC=0 TO 28 STEP 4:POKE 89,RAMTOP-SC:POSITION 12,22:? " { }{P}{R}{E}{S}{S}{ }{F}{I}{R}{E}{ }":NEXT SC
  200. 1010 M=INT(RND(0)*5)*4+4
  201. 1015 POKE DL+5,RAMTOP-M:SOUND 0,100-M,8,6:FOR W=1 TO M/6:NEXT W:SOUND 0,0,0,0:FOR W=1 TO M/8:NEXT W
  202. 1020 IF STRIG(0)<>0 THEN 1010
  203. 1025 FOR X=0 TO 28 STEP 4:POKE 89,RAMTOP-X:FOR YX=2 TO 18:POSITION 19,YX:? "   ":NEXT YX
  204. 1030 SCO=0:Z=4.5:HEIGHT=0:SOUND 0,0,0,0
  205. 1035 POSITION 0,22:? "SCORE ";SCO;"                      HIGH ";HSC:NEXT X
  206. 1040 RETURN
  207. 1045 DIM LLEG$(150),RLEG$(150)
  208. 1050 LLEG$="#p{CURSOR-D}{CURSOR-L}{CURSOR-L}p#{CURSOR-D}{CURSOR-L}{CURSOR-L}pp{CURSOR-D}{CURSOR-L}{CURSOR-L}##{CURSOR-D}{CURSOR-L}{CURSOR-L}p#{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}wpp{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}z#{SPADE}{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}!p#{CURSOR-D}{CURSOR-L}{CURSOR-L}pps{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}##y{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}pp@{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}p#{CURSOR-D}{CURSOR-L}{CURSOR-L}#p{CURSOR-D}{CURSOR-L}{CURSOR-L}prs"
  209. 1055 LLEG$(LEN(LLEG$)+1)="{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}noppq{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}`abcdef"
  210. 1060 RLEG$="#p{CURSOR-D}{CURSOR-L}{CURSOR-L}p#{CURSOR-D}{CURSOR-L}{CURSOR-L}pp{CURSOR-D}{CURSOR-L}{CURSOR-L}##{CURSOR-D}{CURSOR-L}{CURSOR-L}p#{CURSOR-D}{CURSOR-L}{CURSOR-L}p#s{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}xpy{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}p#@{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}wp#{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}zpp{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}!p#{CURSOR-D}{CURSOR-L}{CURSOR-L}p#{CURSOR-D}{CURSOR-L}{CURSOR-L}#p{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}"
  211. 1065 RLEG$(LEN(RLEG$)+1)="wp#{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}tppuv{CURSOR-D}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}{CURSOR-L}ghijklm "
  212. 1070 RETURN
  213. 1075 REM {*}{ }{T}{I}{T}{L}{E}{ }{P}{A}{G}{E}{ }{*}
  214. 1080 GRAPHICS 0:DL=PEEK(560)+256*PEEK(561):POKE 752,1:POKE 708,184
  215. 1085 POKE DL+6,6:POKE DL+7,7:POKE 710,128
  216. 1090 POSITION 15,0:? "PRESENTING":POSITION 20,1:? " ANTS IN YOUR PANTS            By Allan Knopp"
  217. 1095 ? :? "  Benny has gone out for a day in the":? "country. He is tastefully dressed in"
  218. 1100 ? "his favourite pair of pink striped":? "Bermuda shorts. Unfortunately there"
  219. 1105 ? "is a particularly vicious colony of":? "ants in the field where he is taking"
  220. 1110 ? "a picnic and the sight of Benny's":? "shorts drives them mad."
  221. 1115 ? " The only way Benny can stop them":? "is to stamp on them before they can"
  222. 1120 ? "reach the centre where they will":? "stand on each other until they can"
  223. 1125 ? "invade Benny's Bermudas.":? " Unfortunately the more ants Benny"
  224. 1130 ? "squashes, the madder they get and the":? "faster they run. The red ants are"
  225. 1135 ? "the most difficult to kill.":? :? "           Press { }{S}{T}{A}{R}{T}{ }"
  226. 1140 IF PEEK(53279)<>6 THEN 1140
  227. 1145 GOTO 105
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement