Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ANTS.BAS source CODE converted from ATASCII
- Original by Allan Knopp, 1987
- Info here: http://gury.atari8.info/games/2823.php
- Since ATASCII lacked {} characters, they have been used TO indicate special ATASCII characters:
- A single character in {} appears in inverted colour.
- Longer names in {} are special characters.
- 1 REM *******************************
- 2 REM * ANTS IN YOUR PANTS *
- 3 REM * by *
- 4 REM * ALLAN KNOPP *
- 5 REM * *
- 6 REM * --------------------------- *
- 7 REM * PAGE 6 MAGAZINE - ENGLAND *
- 8 REM *******************************
- 9 REM
- 100 GOTO 1080
- 105 RAMTOP=PEEK(106)
- 110 GOSUB 1045
- 115 TX=4
- 120 GOSUB 355:GOSUB 400
- 125 GOSUB 355:GOSUB 405
- 130 GOSUB 355:GOSUB 410
- 135 GOSUB 355:GOSUB 415
- 140 GOSUB 355:GOSUB 420
- 145 GOSUB 355:GOSUB 425
- 150 GOSUB 355:GOSUB 430
- 155 POSITION 12,22:? "{ }{P}{L}{E}{A}{S}{E}{ }{W}{A}{I}{T}{ }"
- 160 POKE 257,182:POKE 258,120:POKE 259,40:POKE 260,6:REM {*}{ }{D}{L}{I}{C}{O}{L}{O}{U}{R}{S}{ }{*}
- 165 POKE 708,36:POKE 709,24:POKE 711,14:POKE 710,74
- 170 POKE 752,1
- 175 GOSUB 835:GOSUB 810
- 180 GOSUB 525:GOSUB 865
- 185 Z=4.5:GOSUB 445
- 190 POSITION 12,22:? " "
- 195 POKE 756,CHI
- 200 Y=85:XC=200:XD=200
- 205 REM {*}{ }{M}{A}{I}{N}{ }{L}{O}{O}{P}{ }{*}
- 210 ST=STICK(0):STR=STRIG(0)
- 215 IF ST=15 AND SO=1 THEN POKE DL+5,RAMTOP-28:SO=0:SOO=0
- 220 IF ST=6 THEN POKE DL+5,RAMTOP-4:GOSUB 300
- 225 IF ST=5 THEN POKE DL+5,RAMTOP-8:GOSUB 300
- 230 IF ST=7 THEN POKE DL+5,RAMTOP-12:GOSUB 300
- 235 IF ST=11 THEN POKE DL+5,RAMTOP-16:GOSUB 300
- 240 IF ST=9 THEN POKE DL+5,RAMTOP-20:GOSUB 300
- 245 IF ST=10 THEN POKE DL+5,RAMTOP-24:GOSUB 300
- 250 POKE 53278,1
- 255 IF PEEK(53255) OR PEEK(53253) OR PEEK(53254) OR PEEK(53252) THEN GOSUB 475
- 260 XA=XA+XAA:XB=XB+XBB:XC=XC-XCC:XD=XD-XDD
- 265 IF XA>124 THEN XA=40:GOSUB 455
- 270 IF XB>124 THEN XB=40:GOSUB 455
- 275 IF XC<128 THEN XC=208:GOSUB 455
- 280 IF XD<128 THEN XD=208:GOSUB 455
- 285 GOSUB 315
- 290 GOTO 210
- 295 REM {*}{ }{S}{T}{O}{M}{P}{I}{N}{G}{ }{S}{O}{U}{N}{D}{ }{*}
- 300 IF SOO<>0 THEN RETURN
- 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
- 310 REM {*}{ }{M}{O}{V}{E}{ }{A}{N}{T}{S}{ }{*}
- 315 IF IMAGE=1 THEN IMAGE=0:PR=PAR1:PL=PAL2:GOTO 325
- 320 IF IMAGE=0 THEN IMAGE=1:PL=PAL1:PR=PAR2
- 325 A=USR(MOVE,0,PMB,PR,XA,Y-1,4)
- 330 A=USR(MOVE,1,PMB,PR,XB,Y,4)
- 335 A=USR(MOVE,2,PMB,PL,XC,Y-1,4)
- 340 A=USR(MOVE,3,PMB,PL,XD,Y,4)
- 345 RETURN
- 350 REM {*}{ }{S}{E}{T}{ }{U}{P}{ }{S}{C}{R}{E}{E}{N}{S}{ }{*}
- 355 GRAPHICS 0:DL=PEEK(560)+256*PEEK(561)
- 360 POKE DL+3,68:FOR X=6 TO 26:POKE DL+X,PEEK(DL+X)+2:NEXT X:? "{CLS}"
- 365 POKE 106,RAMTOP-TX:POKE 559,34:POKE 752,1
- 370 POKE 89,RAMTOP-TX:TX=TX+4
- 375 POSITION 11,0:? "$$$$$$$ $$$$$$$"
- 380 POSITION 11,1:? "$$$$$$$ $$$$$$$"
- 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"
- 390 POSITION 0,22:? "SCORE ";SCO;" HIGH ";HSC
- 395 RETURN
- 400 POSITION 13,2:? LLEG$(6,LEN(LLEG$)):POSITION 23,2:? RLEG$:RETURN
- 405 POSITION 14,2:? LLEG$(6,LEN(LLEG$)):POSITION 24,2:? RLEG$:RETURN
- 410 POSITION 15,2:? LLEG$(6,LEN(LLEG$)):POSITION 25,2:? RLEG$:RETURN
- 415 POSITION 13,2:? LLEG$:POSITION 23,2:? RLEG$(6,LEN(RLEG$)):RETURN
- 420 POSITION 14,2:? LLEG$:POSITION 24,2:? RLEG$(6,LEN(RLEG$)):RETURN
- 425 POSITION 15,2:? LLEG$:POSITION 25,2:? RLEG$(6,LEN(RLEG$)):RETURN
- 430 POSITION 15,2:? LLEG$(6,LEN(LLEG$)):POSITION 23,2:? RLEG$(6,LEN(RLEG$)):RETURN
- 435 RETURN
- 440 REM {*}{ }{A}{M}{O}{U}{N}{T}{ }{O}{F}{ }{A}{N}{T}{ }{M}{O}{V}{E}{M}{E}{N}{T}{ }{*}
- 445 XAA=RND(0)*Z+0.5:XBB=RND(0)*Z:XCC=RND(0)*Z:XDD=RND(0)*Z+0.5:RETURN
- 450 REM {*}{ }{P}{I}{L}{E}{ }{A}{N}{T}{S}{ }{*}
- 455 XW=INT(RND(0)*3):FOR SC=0 TO 28 STEP 4:POKE 89,RAMTOP-SC
- 460 COLOR ASC("%"):PLOT 19+XW,16-INT(HEIGHT):NEXT SC:HEIGHT=HEIGHT+0.4:IF HEIGHT>15 THEN GOTO 990
- 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
- 470 REM {*}{ }{S}{Q}{U}{A}{S}{H}{ }{*}
- 475 IF PEEK(53252) THEN XA=40:GOTO 495
- 480 IF PEEK(53253) THEN XB=40:GOTO 495
- 485 IF PEEK(53254) THEN XC=207:GOTO 495
- 490 IF PEEK(53255) THEN XD=207
- 495 FOR X=60 TO 0 STEP -10:SOUND 0,X,10,14:NEXT X:SOUND 0,0,0,0
- 500 SCO=SCO+1:Z=Z+0.03:POKE 77,0
- 505 GOSUB 445
- 510 FOR X=0 TO 28 STEP 4:POKE 89,RAMTOP-X
- 515 POSITION 6,22:? SCO;" ":NEXT X:POKE 53278,1:RETURN
- 520 REM {*}{ }{E}{D}{I}{T}{ }{C}{H}{S}{E}{T}{ }{*}
- 525 POKE 106,PEEK(106)-5:CHSET=(PEEK(106)+1)*256
- 530 CHI=CHSET/256:CLO=0:POKE 203,CLO:POKE 204,CHI
- 535 DIM XFR$(28):RESTORE 540:FOR N=1 TO 28:READ ML:XFR$(N,N)=CHR$(ML):NEXT N
- 540 DATA 104,169,0,133,205,168,169,224,133,206,177,205,145,203,200,208
- 545 DATA 249,230,204,230,206,165,206,201,228,208,239,96
- 550 XFR=USR(ADR(XFR$))
- 555 RESTORE 575
- 560 READ A:IF A=-1 THEN RETURN
- 565 FOR Z=0 TO 7:READ J:POKE CHSET+A*8+Z,J:NEXT Z
- 570 GOTO 560
- 575 DATA 1,10,10,10,6,6,1,1,1
- 580 DATA 3,170,170,170,106,170,170,170,169
- 585 DATA 4,254,254,254,254,254,254,254,254
- 590 DATA 5,65,125,20,20,65,20,65,65
- 595 DATA 32,160,160,160,144,80,64,64,64
- 600 DATA 64,0,0,0,0,0,0,0,0
- 605 DATA 65,16,68,136,168,204,204,68,0
- 610 DATA 73,84,16,32,32,48,252,84,0
- 615 DATA 78,80,84,136,136,204,204,68,0
- 620 DATA 79,16,68,136,136,252,252,84,0
- 625 DATA 80,80,68,136,160,128,192,64,0
- 630 DATA 82,80,68,136,160,204,204,68,0
- 635 DATA 83,20,64,128,32,12,252,84,0
- 640 DATA 84,84,16,32,32,48,48,16,0
- 645 DATA 85,68,68,136,136,252,252,84,0
- 650 DATA 89,68,68,136,32,32,48,32,0
- 655 DATA 96,7,94,250,170,170,105,85,20
- 660 DATA 97,255,170,170,170,170,86,21,5
- 665 DATA 98,170,170,170,165,165,149,85,80
- 670 DATA 99,170,170,150,85,85,85,0,0
- 675 DATA 100,170,170,170,106,86,85,21,1
- 680 DATA 101,170,170,170,170,169,85,85,85
- 685 DATA 102,164,164,164,148,84,84,80,80
- 690 DATA 103,26,26,22,6,6,5,1,1
- 695 DATA 104,170,170,170,170,169,85,85,85
- 700 DATA 105,170,170,150,85,85,85,80,0
- 705 DATA 106,170,170,170,106,86,85,5,1
- 710 DATA 107,170,170,170,170,165,85,84,80
- 715 DATA 108,255,170,170,170,90,86,21,5
- 720 DATA 109,0,232,188,168,168,164,84,80
- 725 DATA 110,0,0,0,3,14,58,234,170
- 730 DATA 111,15,58,234,170,170,170,170,170
- 735 DATA 112,170,106,170,170,170,170,166,170
- 740 DATA 113,160,168,168,168,168,152,168,164
- 745 DATA 114,170,166,170,170,170,170,105,150
- 750 DATA 115,0,0,0,192,128,176,160,160
- 755 DATA 116,10,42,38,42,42,42,41,26
- 760 DATA 117,224,184,174,171,170,170,170,170
- 765 DATA 118,0,0,0,0,224,184,174,171
- 770 DATA 119,0,0,3,2,2,14,10,10
- 775 DATA 120,106,42,38,42,42,42,42,26
- 780 DATA 121,160,160,160,160,160,160,160,160
- 785 DATA 122,10,10,10,9,10,10,10,10
- 790 DATA 123,169,168,168,168,168,168,168,104
- 795 DATA 127,16,24,28,30,28,24,16,155
- 800 DATA -1
- 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}{ }{ }{ }{ }{*}
- 810 POKE 559,Z:RESTORE 860:READ DNUM
- 815 D=PEEK(560)+256*PEEK(561)
- 820 FOR I=1 TO DNUM:READ B:POKE D+B,PEEK(D+B)+128:NEXT I
- 825 B=INT(ADR(DLI$)/256):A=ADR(DLI$)-B*256:POKE 512,A:POKE 513,B
- 830 POKE 54286,192:POKE 256,Z:POKE 559,46:RETURN
- 835 DIM DLI$(85)
- 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}}"
- 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}{)}{`}"
- 850 DLI$(81)="{{LINE-U}}{QUARTER-DR}{T}h@"
- 855 RETURN
- 860 DATA 4,2,21,24,26
- 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}{ }{*}
- 870 RESTORE 940
- 875 DIM PMMOV$(100),AL1$(10),AL2$(10),AR1$(10),AR2$(10):MOVE=ADR(PMMOV$)
- 880 FOR X=1 TO 100:READ N:PMMOV$(X)=CHR$(N):NEXT X
- 885 FOR X=1 TO 4:READ N:AL1$(X)=CHR$(N):NEXT X
- 890 FOR X=1 TO 4:READ N:AL2$(X)=CHR$(N):NEXT X
- 895 FOR X=1 TO 4:READ N:AR1$(X)=CHR$(N):NEXT X
- 900 FOR X=1 TO 4:READ N:AR2$(X)=CHR$(N):NEXT X
- 905 PMBASE=INT((PEEK(145)+3)/4)*4:POKE 54279,PMBASE
- 910 PMB=PMBASE*256
- 915 PAL1=ADR(AL1$):PAL2=ADR(AL2$):PAR1=ADR(AR1$):PAR2=ADR(AR2$)
- 920 POKE 559,46:POKE 53277,3
- 925 POKE 704,0:POKE 705,34:POKE 706,0:POKE 707,34
- 930 RETURN
- 935 REM {*}{ }{P}{/}{M}{ }{M}{O}{V}{E}{ }{D}{A}{T}{A}{ }{*}
- 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
- 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
- 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
- 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
- 960 REM {*}{ }{I}{M}{A}{G}{E}{ }{D}{A}{T}{A}{ }{*}
- 965 DATA 128,110,126,42
- 970 DATA 128,110,126,21
- 975 DATA 1,118,126,168
- 980 DATA 1,118,126,84
- 985 REM {*}{ }{S}{H}{O}{W}{ }{S}{C}{O}{R}{E}{ }{*}
- 990 IF SCO>HSC THEN HSC=SCO
- 995 FOR P=90 TO 3 STEP -3:SOUND 0,P,10,12:NEXT P
- 1000 FOR P=3 TO 90 STEP 2:SOUND 0,P,10,12:NEXT P:SOUND 0,0,0,0
- 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
- 1010 M=INT(RND(0)*5)*4+4
- 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
- 1020 IF STRIG(0)<>0 THEN 1010
- 1025 FOR X=0 TO 28 STEP 4:POKE 89,RAMTOP-X:FOR YX=2 TO 18:POSITION 19,YX:? " ":NEXT YX
- 1030 SCO=0:Z=4.5:HEIGHT=0:SOUND 0,0,0,0
- 1035 POSITION 0,22:? "SCORE ";SCO;" HIGH ";HSC:NEXT X
- 1040 RETURN
- 1045 DIM LLEG$(150),RLEG$(150)
- 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"
- 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"
- 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}"
- 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 "
- 1070 RETURN
- 1075 REM {*}{ }{T}{I}{T}{L}{E}{ }{P}{A}{G}{E}{ }{*}
- 1080 GRAPHICS 0:DL=PEEK(560)+256*PEEK(561):POKE 752,1:POKE 708,184
- 1085 POKE DL+6,6:POKE DL+7,7:POKE 710,128
- 1090 POSITION 15,0:? "PRESENTING":POSITION 20,1:? " ANTS IN YOUR PANTS By Allan Knopp"
- 1095 ? :? " Benny has gone out for a day in the":? "country. He is tastefully dressed in"
- 1100 ? "his favourite pair of pink striped":? "Bermuda shorts. Unfortunately there"
- 1105 ? "is a particularly vicious colony of":? "ants in the field where he is taking"
- 1110 ? "a picnic and the sight of Benny's":? "shorts drives them mad."
- 1115 ? " The only way Benny can stop them":? "is to stamp on them before they can"
- 1120 ? "reach the centre where they will":? "stand on each other until they can"
- 1125 ? "invade Benny's Bermudas.":? " Unfortunately the more ants Benny"
- 1130 ? "squashes, the madder they get and the":? "faster they run. The red ants are"
- 1135 ? "the most difficult to kill.":? :? " Press { }{S}{T}{A}{R}{T}{ }"
- 1140 IF PEEK(53279)<>6 THEN 1140
- 1145 GOTO 105
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement