–€€100 REM Ðòïçòáí äåíïîóôòáôåó›110 REM Áîéíáôéïî âù ÐÅÅËéîç›120 REM áîä ÐÏËÅéîç›130 DIM CHR(15),DX(15),DY(15)›140 REM Direction} offsets for each joystick position›150 DX(14)=0:DX(13)=0:DX(9)=-1:DX(10)=-1:DX(11)=-1:DX(5)=1:DX(6)=1:DX(7)=1›160 DY(11)=0:D}Y(7)=0:DY(6)=-1:DY(10)=-1:DY(14)=-1:DY(5)=1:DY(9)=1:DY(13)=1›170 REM The character for each joystick Position›180 CHR(14)=92:}CHR(13)=93:CHR(11)=94:CHR(7)=95:CHR(10)=81:CHR(6)=69:CHR(9)=90:CHR(5)=67›190 GRAPHICS 1+16:REM No text window›200 POKE 756,22}6:REM Use lower half of character set›210 SETCOLOR 0,0,0:REM Make hearts vanish›220 REM Calculate screen memory address:›230 }SCREEN=PEEK(88)+256*PEEK(89)›240 BALL=20+128:STAR=73+128:REM CTRL-T AND CTRL-I›250 REM Draw a border:›260 BARHORIZ=82+128:REM } Horizontal bar (CTRL-R)›270 FOR I=1 TO 18›280 POKE SCREEN+I,BARHORIZ›290 POKE SCREEN+460+I,BARHORIZ›300 NEXT I›310 BARVERT=1 }24+128:REM Vertical bar (SHIFT-EQUALS)›320 FOR I=1 TO 22›330 POKE SCREEN+I*20,BARVERT›340 POKE SCREEN+19+I*20,BARVERT›350 NEX }T I›360 REM Do corners CTRL-Q,CTRL-E,CTRL-Z,CTRL-C›370 POKE SCREEN,81+128:POKE SCREEN+19,69+128:POKE SCREEN+460,90+128:POKE S }CREEN+479,67+128›380 REM Put in random "stars"›390 FOR I=1 TO 20:R=SCREEN+INT(480*RND(0)):IF PEEK(R)=0 THEN POKE R,STAR:REM D}on't overwrite border›400 NEXT I›410 PX=10:PY=11:POKE SCREEN+PX+20*PY,CHR(14):REM Plaver X, Player Y. Put "up-arrow" characte}r on screen›420 BX=INT(18*RND(1)+1):BY=INT(22*RND(1)+1):REM Ball X, Ball Y Selected randomly›430 DX=1:DY=1:REM Direction offs}ets for ball›440 REM Main loop›450 REM Check for player's move:›460 ST=STICK(0)›470 IF ST=15 THEN 640:REM Let ball bounce›480} REM Temporary variables hold updated PX and PY›490 TX=PX+DX(ST):REM X offset 1,0,-1›500 TY=PY+DY(ST):REM Same with Y. Table }lookup is fast!›510 PPOS=SCREEN+TX+20*TY:REM Calculate current position›520 IF PEEK(PPOS)=BALL THEN 1000:REM Hit ball›530 IF }PEEK(PPOS)=STAR THEN 2000:REM Hit star›540 IF PEEK(PPOS)<>0 THEN 640:REM If wall hit, don't let player advance›550 REM Update} player›560 REM Table lookup also replaces IF /THEN, and is ultimately more memory efficient:›570 CHR=CHR(ST)›580 POKE SCREEN}+PX+20*PY,0:REM Erase previous character›590 POKE PPOS,CHR:REM Place new one›600 PX=TX:PY=TY:REM Update variables›610 REM ›62}0 REM Let ball have its turn›630 REM ›640 TEMPBX=BX+DX:TEMPBY=BY+DY:REM DX and DY are direction offsets›650 BPOS=SCREEN+TEMPB}X+20*TEMPBY:REM Ball absolute position›660 IF PEEK(BPOS)>64 AND PEEK(BPOS)<96 THEN 1000:REM Ball hit player›670 IF PEEK(BPOS)}=0 THEN 730›680 REM Any other collision is a bounce›690 REM Change direction of either X, Y, or both X and Y:›700 IF RND(1)>0}.5 THEN DX=-DX:GOTO 460›710 IF RND(1)>0.5 THEN DY=-DY:GOTO 460›720 DX=-DX:DY=-DY:GOTO 460›730 REM Update ball›740 POKE SCREEN}+BX+20*BY,0:REM Erase old ball›750 POKE BPOS,BALL:REM Draw new ball›760 BX=TEMPBX:BY=TEMPBY:REM Update ball variables›770 GOT}O 460›1000 REM Hit ball, win!›1010 BALLPOS=SCREEN+BX+20*BY:FLIP=128:REM BALL POSITION, "FLIPPING" VARIABLE›1020 REM FLIP is u}sed to alternate two characters in one spot›1030 REM 257-FLIP switches FLIP from 128 to 129, and vice-versa›1040 FOR I=1 TO 5}:FOR J=1 TO 6:POKE BALLPOS,19+FLIP:POKE 710,PEEK(53770)›1050 FOR W=5 TO 0 STEP -5:SOUND 0,J*2,10,W:NEXT W:FLIP=257-FLIP:NEXT }J:NEXT I›1060 REM STRANGE SOUND, FLASH BALL AGAIN›1070 FOR I=255 TO 0 STEP -5:SOUND 0,I,12,8:SOUND 1,I,10,8:POKE 710,I:NEXT I}›1080 RUN ›2000 REM UH-OH! Hit a star!›2010 FOR I=100 TO 200 STEP 10›2020 XPLODE=XPLODE+0.5:REM Advance character every other } "I", from 1-5›2030 POKE SCREEN+PX+20*PY,65+INT(XPLODE):REM Place a graphics character›2040 POKE 709,PEEK(53770):REM More "ch!}eap thrill" color›2050 SOUND 0,I,0,15-INT((I-100)/6.66):REM Explosion sound›2060 NEXT I›2070 POKE SCREEN+PX+20*PY,0:REM Erase"} character›2080 REM Flash screen›2090 FOR I=1 TO 100:POKE 711,PEEK(53770):NEXT I›2100 RUN ›0 POKE SCREEN+PX+20*PY,0:REM Erase[200 GOSUB 5000:POKE 756,CHSET/256:REM activate character set›240 BALL=20+128:STAR=9:REM CTRL-T AND CTRL-I›2030 POKE SCREEN+PX$}+20*PY,74+INT(XPLODE):REM Place an explosion character›2110 REM DELETE THIS LINE›5000 CHSET=(PEEK(106)-8)*256:FOR I=0 TO 7:PO%}KE CHSET+I,0:NEXT I:REM CLEAR OUT HEART›5001 RESTORE 5005:IF PEEK(CHSET+9*8)=16 THEN RETURN :REM IF CHSET STILL IN MEMORY, WH&}Y RE-INITIALIZE?›5002 READ A:A=A-64:IF A<0 THEN RETURN ›5003 FOR J=0 TO 7:READ B:POKE CHSET+A*8+J,B:NEXT J›5004 GOTO 5002›500'}5 DATA 67,248,254,241,225,96,48,24,0›5006 DATA 69,32,64,64,196,228,252,248,240›5007 DATA 73,16,84,40,198,40,84,16,0›5008 DATA(} 74,0,0,16,56,56,16,0,0›5009 DATA 75,0,32,0,16,8,16,4,0›5010 DATA 76,0,64,0,16,68,16,4,0›5011 DATA 77,0,64,16,2,0,128,32,2›50)}12 DATA 78,128,8,1,0,0,0,0,64›5013 DATA 79,8,0,0,0,0,0,0,0›5014 DATA 81,4,2,2,35,39,63,31,15›5015 DATA 82,0,255,255,255,255,2*}55,0,0›5016 DATA 83,28,34,73,93,93,73,34,28›5017 DATA 84,0,0,8,28,28,8,0,0›5018 DATA 90,31,127,143,135,6,12,24,0›5019 DATA 92+},66,195,129,195,231,126,60,24›5020 DATA 93,24,60,126,231,195,129,195,66›5021 DATA 94,60,126,15,7,7,15,126,60›5022 DATA 95,60,,}126,240,224,224,240,126,60›5023 DATA 124,60,60,60,60,60,60,60,60›5024 DATA 127,16,24,28,30,30,28,24,16›5025 DATA -1›TA 95,60,t1 DIM P0$(1),P1$(1),P2$(1),P3$(1),M$(1),X(3),Y(3),L(3),XM(3),YM(3),LM(3)›10 GRAPHICS 17:POSITION 2,3:? #6;"A SELF-MODIFYING":.}POSITION 3,6:? #6;"PLAYER-MISSILE"›11 POSITION 2,9:? #6;"GRAPHICS UTILITY":POSITION 6,16:? #6;"ken grace"›12 FOR T=1 TO 2000:/}NEXT T›13 GRAPHICS 0:? :? "THIS UTILITY ASKS SEVERAL QUESTIONS ABOUT THE P-M GRAPHICS SITUATION YOU WANT TO SET UP."›14 ? :0}? "IT THEN MODIFIES ITSELF INTO A PROGRAMSKELETON.":? :? "SUBROUTINES FOR PLAYER AND MISSILE "›15 ? "MOTION ARE INCLUDED.":? 1}:? "YOU ADD THE REST OF THE PROGRAM.":? :? "ANIMATION IS POSSIBLE BY COPYING NEW "›16 ? "SHAPE STRINGS INTO THE STRINGS":? "D2}EFINING THE PLAYERS.":? :? :? "PRESS ÓÔÁÒÔ TO BEGIN."›17 X=PEEK(53279):IF X<>6 THEN 17›18 GOSUB 150:FOR I=10 TO 17:? I:NEXT I3}:GOSUB 155›20 ? CHR$(125):? :? "ENTER THE ÂÁÓÉà GRAPHICS MODE FOR THE PLAYFIELD":? "GR. ";:INPUT X›22 GOSUB 150:? "9000 GR. "4};X:GOSUB 155›24 ? "RESOLUTION DESIRED FOR PLAYERS:":? "0 = DOUBLE-LINE":? "1 = SINGLE-LINE (FINER)":INPUT R›26 Y=INT(X/16):X=5}X-16*Y:IF X<=4 THEN S=8*(1+R)›28 IF X=5 THEN S=12+4*R›30 IF X=6 THEN S=16+8*R›32 IF X=7 THEN S=24+8*R›34 IF X=8 THEN S=36+4*R6}›36 GOSUB 150:? "9010 RES=";R;":S=";S:GOSUB 155:S=128*(1+R)›38 GOSUB 150:FOR I=18 TO 36 STEP 2:? I:NEXT I:GOSUB 155›40 ? "NUM7}BER OF PLAYERS TO BE DEFINED";:INPUT NP›42 IF NP<4 THEN GOSUB 150:FOR I=NP TO 3:? 9085+50*I:? 9090+50*I:NEXT I:GOSUB 155›44 I8}F NP<4 THEN GOSUB 150:FOR I=NP TO 3:? 9600+10*I:NEXT I:GOSUB 155›48 GOSUB 150:FOR I=38 TO 44 STEP 2:? I:NEXT I:GOSUB 155›50 F9}OR I=0 TO NP-1›52 ? CHR$(125):? :? "COLOR (0 - 15) AND INTENSITY (0 - 15) FOR PLAYER ";I;:INPUT X,Y›54 GOSUB 150:? 9050+I;" P:}OKE ";704+I;",";16*X+Y:GOSUB 155›56 ? "WIDTH OF PLAYER ";I;":":? "0 = NORMAL":? "1 = TWICE NORMAL":? "3 = FOUR TIMES NORMAL":;}INPUT X›58 GOSUB 150:? 9060+I;" POKE ";53256+I;",";X:GOSUB 155›60 ? "INITIAL HORIZONTAL POSITION (0 - 255) FOR LEFT EDGE OF P<}LAYER ";I;" (45 TO 210ON SCREEN)";:INPUT X›62 GOSUB 150:? 9080+50*I;"X(";I;")=";X;":REM HORIZ POS OF PLAYER ";I:GOSUB 155›64=} ? "VERTICAL LENGTH (BYTES) OF PLAYER ";I;:INPUT X:? CHR$(125):? ›66 ? "INITIAL VERTICAL POSITION OF TOP OF PLAYER (1 TO ">};S-X-1;")";:INPUT Y›68 GOSUB 150:? 9082+50*I;"Y(";I;")=";Y;":L(";I;")=";X+4;":REM VERT POS AND LENGTH":GOSUB 155›70 ? "USE LI?}NES ";9100+50*I;" TO ";9120+50*I;" TO ENTER DATA STATEMENTS WITH THE ";X;" BYTES DEFINING PLAYER ";›72 ? :? "TYPE ÃÏÎÔ WHEN F@}INISHED.":STOP ›74 NEXT I›78 GOSUB 150:FOR I=48 TO 74 STEP 2:? I:NEXT I:GOSUB 155›80 ? :? "HOW MANY MISSILES TO BE DEFINED (0A} TO 4)";:INPUT NM›82 IF NM=0 THEN GOSUB 150:FOR I=180 TO 188:? I:NEXT I:GOSUB 155›84 IF NM=0 THEN GOSUB 150:FOR I=190 TO 198:B}? I:NEXT I:GOSUB 155›86 IF NM<4 THEN GOSUB 150:FOR I=NM TO 3:? 9285+50*I:? 9290+50*I:NEXT I:GOSUB 155›88 GOSUB 150:FOR I=78 TC}O 86 STEP 2:? I:NEXT I:GOSUB 155›90 IF NM=0 THEN ? CHR$(125):GOTO 119›92 S=0:FOR I=0 TO NM-1›94 ? CHR$(125):? :? "WIDTH OF MID}SSILE ";I:? "0 = NORMAL":? "1 = TWICE NORMAL"›96 ? "3 = FOUR TIMES NORMAL":INPUT X:S=INT(4^I+0.1)*X+S›98 GOSUB 150:? "9064 POE}KE 53260,";S:GOSUB 155›100 ? "INITIAL HORIZONTAL POSITION OF MISSILE ";I;:INPUT X›102 GOSUB 150:? 9280+50*I;"XM(";I;")=";X;":F}REM MISSILE ";I;" HORIZ POS":GOSUB 155›104 ? "VERTICAL LENGTH (BYTES) OF MISSILE ";I:INPUT X:? CHR$(125)›106 ? :? "INITIAL VEG}RTICAL POSITION OF TOP OF MISSILE (1 TO ";128*(1+R)-X-1;")":INPUT Y›108 GOSUB 150:? 9282+50*I;" YM(";I;")=";Y;":LM(";I;")="H};X+4;":REM VERT POS AND LENGTH":GOSUB 155›110 ? "USE LINE ";9300+50*I;" (TO ";9320+50*I;") TO ENTER DATA STATEMENTS WITH THE I}";X;" 'BYTES' DEFINING"›112 ? "MISSILE ";I:X=INT(4^I+0.1):? :? "ALLOWED VALUES ARE 0, ";X;", ";2*X;", OR ";3*X:? :STOP ›114 NJ}EXT I›119 GOSUB 150:FOR I=88 TO 114 STEP 2:? I:NEXT I:GOSUB 155›120 IF NM<4 THEN GOSUB 150:FOR I=NM TO 3:? 9650+10*I:NEXT I:GK}OSUB 155›125 IF NM=0 THEN GOSUB 150:FOR I=0 TO 4:? 9700+10*I:NEXT I:GOSUB 155›129 GOSUB 150:? "119":? "120":? "125":GOSUB 155L}›130 ? "PRIORITY SCHEDULE :":? :? "1 - PLAYERS 0-3,PLAYFLDS 0-3,BACKGND"›131 ? :? "2 - PLAYERS 0-1,PLAYFLDS 0-3,PLAYERS M}2-3,BACKGND"›132 ? :? "4 - PLAYFLDS 0-3,PLAYERS 0-,BACKGND"›133 ? :? "8 - PLAYFLDS 0-1,PLAYERS 0-3,PLAYFLDS 2-3,BACKGND"›N}134 ? :? "ALSO, THE NUMERICAL SUMS OF THE ABOVE CHOICES ARE ALLOWED, GIVING BLACK FOR OVERLAPS."›135 ? :? "ABOVE +32 GIVES COO}LOR IN OVERLAPS":? :? "CHOICE";:INPUT X›136 GOSUB 150:? "9045 POKE 623,";X:GOSUB 155›137 ? :? "WHEN YOU SEE ÒÅÁÄÙ YOU MAY LISP}T OR RUN":FOR X=1 TO 900:NEXT X›140 GOSUB 150:FOR I=129 TO 137:? I:NEXT I:GOSUB 155›145 ? :? :? "140":? "145":? "150":? "155"Q}:? "156":? "POKE 842,12:? CHR$(125)":POSITION 0,0:POKE 842,13:STOP ›150 SETCOLOR 1,9,4:? CHR$(125):? :RETURN ›155 ? :? :? "COR}NT":POSITION 0,0:POKE 842,13:STOP ›156 POKE 842,12:? CHR$(125):? :SETCOLOR 1,9,10:RETURN ›159 GOTO 9000›160 REM MOTION OF PLAS}YER P. X(P) AND Y(P) ARE X,Y POSITIONS. DX AND DY ARE CHANGES. USE FOR DY=-2,-1,O,1 OR 2.›161 TRAP 168:IF DY=0 THEN 167›162 OT}N P+1 GOTO 163,164,165,166›163 P0$(Y(P)+DY)=D0$:GOTO 167›164 P1$(Y(P)+DY)=D1$:GOTO 167›165 P2$(Y(P)+DY)=D2$:GOTO 167›166 P3$(U}Y(P)+DY)=D3$›167 POKE 53248+P,X(P)+DX:X(P)=X(P)+DX:Y(P)=Y(P)+DY:DX=0:DY=0:RETURN ›168 DX=0:DY=0:GOTO 161›170 REM MOTION OF PLV}AYER P. USE FOR DY >2 OR <-2 (OR 0).›171 TRAP 177:ON P+1 GOTO 172,173,174,175›172 P0$=B$:POKE 53248,X(P)+DX:P0$(Y(P)+DY)=D0W}$:GOTO 176›173 P1$=B$:POKE 53249,X(P)+DX:P1$(Y(P)+DY)=D1$:GOTO 176›174 P2$=B$:POKE 53250,X(P)+DX:P2$(Y(P)+DY)=D2$:GOTO 176›17X}5 P3$=B$:POKE 53251,X(P)+DX:P3$(Y(P)+DY)=D3$›176 X(P)=X(P)+DX:Y(P)=Y(P)+DY:DX=0:DY=0:RETURN ›177 DX=0:DY=0:GOTO 171›180 REM MY}OTION OF MISSILE P. XM(P),YM(P) ARE X,Y COORDS. DX,DY ARE CHANGES.USE FOR DY=-2,-1,0,1 OR 2.›181 TRAP 158:IF YM(P)+DY<1 OR YZ}M(P)+DY+LM(P)>S OR DY=0 THEN DY=0:GOTO 187›182 ON P+1 GOTO 183,184,185,186›183 Z=USR(MOVE,M+YM(P)+DY,DM0,LM(0),252):GOTO 187›[}184 Z=USR(MOVE,M+YM(P)+DY,DM1,LM(1),243):GOTO 187›185 Z=USR(MOVE,M+YM(P)+DY,DM2,LM(2),207):GOTO 187›186 Z=USR(MOVE,M+YM(P)+DY\},DM3,LM(3),63)›187 POKE 53252+P,XM(P)+DX:XM(P)=XM(P)+DX:YM(P)=YM(P)+DY:DX=0:DY=0:RETURN ›188 DX=0:DY=0:POKE 53252+P,XM(P):RET]}URN ›190 REM MOTION OF MISSILE P. USE FOR DY>2 OR <-2 (OR 0).›191 TRAP 198:IF YM(P)+DY<1 OR YM(P)+DY+LM(P)>S OR DY=0 THEN DY=^}0›192 ON P+1 GOTO 193,194,195,196›193 Z=USR(MOVE,M+YM(P),B,LM(P),252):POKE 53252,XM(P)+DX:Z=USR(MOVE,M+YM(P)+DY,DM0,LM(P),252_}):GOTO 197›194 Z=USR(MOVE,M+YM(P),B,LM(P),243):POKE 53253,XM(P)+DX:Z=USR(MOVE,M+YM(P)+DY,DM1,LM(P),243):GOTO 197›195 Z=USR(MO`}VE,M+YM(P),B,LM(P),207):POKE 53254,XM(P)+DX:Z=USR(MOVE,M+YM(P)+DY,DM2,LM(P),207):GOTO 197›196 Z=USR(MOVE,M+YM(P),B,LM(P),63):a}POKE 53255,XM(P)+DX:Z=USR(MOVE,M+YM(P)+DY,DM3,LM(P),63)›197 YM(P)=YM(P)+DY:XM(P)=XM(P)+DX:DX=0:DY=0:RETURN ›198 DX=0:DY=0:GOTb}O 191›200 GOTO 200›9015 POKE 559,46+16*RES›9020 PMBASE=PEEK(106)-S:POKE 54279,PMBASE:PMBASE=PMBASE*256›9030 POKE 53277,3:S=12c}8:IF RES=1 THEN S=255›9070 DIM B$(S):B=ADR(B$):B$(1)=CHR$(0):B$(S)=CHR$(0):B$(2)=B$›9085 DIM D0$(L(0)):D0$=B$(1,L(0)):POKE 53d}248,X(0)›9090 RESTORE 9100:FOR I=3 TO L(0)-2:READ BYTE:D0$(I,I)=CHR$(BYTE):NEXT I›9135 DIM D1$(L(1)):D1$=B$(1,L(1)):POKE 5324e}9,X(1)›9140 RESTORE 9150:FOR I=3 TO L(1)-2:READ BYTE:D1$(I,I)=CHR$(BYTE):NEXT I›9185 DIM D2$(L(2)):D2$=B$(1,L(2)):POKE 53250,f}X(2)›9190 RESTORE 9200:FOR I=3 TO L(2)-2:READ BYTE:D2$(I,I)=CHR$(BYTE):NEXT I›9235 DIM D3$(L(3)):D3$=B$(1,L(3)):POKE 53251,X(g}3)›9240 RESTORE 9250:FOR I=3 TO L(3)-2:READ BYTE:D3$(I,I)=CHR$(BYTE):NEXT I›9285 DIM DM0$(LM(0)):DM0$=B$(1,LM(0)):POKE 53252,h}XM(0)›9290 RESTORE 9300:FOR I=3 TO LM(0)-2:READ BYTE:DM0$(I,I)=CHR$(BYTE):NEXT I:DM0=ADR(DM0$)›9335 DIM DM1$(LM(1)):DM1$=B$(1i},LM(1)):POKE 53253,XM(1)›9340 RESTORE 9350:FOR I=3 TO LM(1)-2:READ BYTE:DM1$(I,I)=CHR$(BYTE):NEXT I:DM1=ADR(DM1$)›9385 DIM DMj}2$(LM(2)):DM2$=B$(1,LM(2)):POKE 53254,XM(2)›9390 RESTORE 9400:FOR I=3 TO LM(2)-2:REM READ BYTE:DM2$(I,I)=CHR$(BYTE):NEXT I:DMk}2=ADR(DM2$)›9435 DIM DM3$(LM(3)):DM3$=B$(1,LM(3)):POKE 53255,XM(3)›9440 RESTORE 9450:FOR I=3 TO LM(3)-2:READ BYTE:DM3$(I,I)=Cl}HR$(BYTE):NEXT I:DM3=ADR(DM3$)›9500 VTAB=PEEK(134)+256*PEEK(135):ATAB=PEEK(140)+256*PEEK(141)›9505 OFFSET=PMBASE+512*(1+RES)-m}ATAB›9510 FOR I=0 TO 4›9520 V3=INT(OFFSET/256):V2=OFFSET-256*V3›9530 POKE VTAB+2,V2:POKE VTAB+3,V3›9540 POKE VTAB+4,128*(1-REn}S):POKE VTAB+5,RES›9550 POKE VTAB+6,128*(1-RES):POKE VTAB+7,RES›9560 VTAB=VTAB+B:OFFSET=OFFSET+128*(1+RES)›9570 IF I=3 THEN Oo}FFSET=PMBASE+384*(1+RES)-ATAB›9580 NEXT I›9600 P0$=B$:P0$(Y(0))=D0$›9610 P1$=B$:P1$(Y(1))=D1$›9620 P2$=B$:P2$(Y(2))=D2$›9630 p}P3$=B$:P3$(Y(3))=D3$›9650 M$=B$:M$(YM(0))=DM0$:M$(YM(0)+LM(0))=B$›9660 FOR I=1 TO LM(1):J=YM(1)+I-1:M$(J,J)=CHR$(ASC(M$(J,J))q}+ASC(DM1$(I,I))):NEXT I›9670 FOR I=1 TO LM(2):J=YM(2)+I-1:M$(J,J)=CHR$(ASC(M$(J,J))+ASC(DM2$(I,I))):NEXT I›9680 FOR I=1 TO LMr}(3):J=YM(3)+I-1:M$(J,J)=CHR$(ASC(M$(J,J))+ASC(DM3$(I,I))):NEXT I›9700 DIM MOVE$(38):MOVE=ADR(MOVE$):M=ADR(M$)-1›9710 RESTORE s}9730›9720 FOR I=1 TO 37:READ BYTE:MOVE$(I,I)=CHR$(BYTE):NEXT I›9730 DATA 104,104,133,204,104,133,203,104,133,206,104,133,205,t}104,104,133,207,104,104,133,208›9740 DATA 160,0,177,203,37,208,113,205,145,203,200,196,207,208,243,96›9999 GOTO 200›,133,205,t200 DIM D01$(13),D02$(13),D03$(13)›210 D01$=D0$:D02$=B$:D03$=B$:P=0›220 RESTORE 520›230 FOR I=3 TO 11:READ BYTE:D02$(I,I)=CHR v}$(BYTE):NEXT I›240 FOR I=3 TO 11:READ BYTE:D03$(I,I)=CHR$(BYTE):NEXT I›250 SETCOLOR 4,7,2›300 REM ***VIEW POINTER & STRING*** w}›310 C=C+1›320 IF C>4 THEN C=1›330 ON C GOTO 340,350,340,360›340 D0$=D01$:GOTO 370›350 D0$=D02$:GOTO 370›360 D0$=D03$›370 P0$ x}(Y(0))=D0$›380 FOR I=1 TO 9›385 IF C=2 OR C=4 THEN SOUND 0,28*I,6,9-I›390 NEXT I›400 REM *** MOTION ROUTINE ***›410 A=STICK(0 y})›420 IF A=15 THEN 310›430 IF A=11 THEN X(0)=X(0)-1:POKE 53248,X(0)›440 IF A=7 THEN X(0)=X(0)+1:POKE 53248,X(0)›450 IF A=13 T z}HEN DY=1:GOSUB 160›460 IF A=14 THEN DY=-1:GOSUB 160›470 GOTO 310›520 DATA 126,90,66,60,219,189,102,230,7›530 DATA 126,90,66,6 {}0,219,189,102,103,224›9100 DATA 126,90,66,60,219,189,102,102,231›520 DATA 126,90,66,60,219,189,102,230,7›530 DATA 126,90,66,6 A10 REM ÖÅÒÔÉÃÁÌ ÐÏÓÉÔÉÏÎÅÒ ÅØÁÍÐÌÅ›20 REM "ISLAND JUMPER"›50 GRAPHICS 2:POKE 752,1›60 SETCOLOR 4,9,4›70 ? #6:? #6:? #6:? #6;"}} ISLAND"›80 ? #6:? #6;" JUMPER"›90 ? " BY"›100 ? :? ,"DAVID MARKLEY"›110 VP=1536›120 FOR G=0 TO 93›125 READ D›~}130 POKE VP+G,D›135 NEXT G›140 REM ** VERTICAL POSITIONER CODE **›150 DATA 104,162,5,104,149,220,202,16,250,198,220,198,222,1}60,0,177,224,170›160 DATA 168,165,223,240,9,169,0,145,222,136,208,249,138,168,165,221,240,7,177,224,145,220,136,208,249,96›17€}0 REM ** AIRPLANE DATA **›180 APIMG=VP+44›190 DATA 6,142,132,255,255,4,14›200 REM ** JUMPER DATA **›210 JPIMG=APIMG+7›220 DAT}A 9,189,189,90,60,24,24,36,66,129›230 REM ** JUMPER & CHUTE DATA **›240 JSIMG=JPIMG+10›250 DATA 15,60,126,126,255,255,129,189‚},189,90,60,24,24,36,66,195›260 REM ** WAVING JUMPER **›270 JWIMG=JSIMG+16›280 DATA 15,0,0,0,0,0,128,188,188,88,60,26,25,37,66ƒ},195›290 REM ** DATA USED TO CLEAR MEMORY **›300 CLEAR=JWIMG+16›310 DATA 255›320 FOR D=1 TO 300:NEXT D›330 GRAPHICS 5›340 SET„}COLOR 2,9,2›350 SETCOLOR 4,8,6›360 I=PEEK(106)›365 X=I*256-1172›370 POKE X,112›371 POKE X+1,71›372 POKE X+2,96›373 POKE X+3,I…}-1›374 POKE X+4,112›375 POKE X+5,74›376 POKE X+6,160›377 POKE X+7,I-5›380 I=I-8›390 POKE 54279,I›400 J=I*256+513›410 POKE 559†},46›420 POKE 53256,1›430 POKE 53277,3›440 POKE 704,56›450 POKE 705,12›460 D=USR(VP,CLEAR,J,0)›465 SLOPE=2›470 TOP=J+17›480 BO‡}T=J+55›490 SETCOLOR 0,12,8›500 SETCOLOR 1,1,2›510 COLOR 2›520 PLOT 37,34:DRAWTO 42,34›530 PLOT 36,35:DRAWTO 49,35›540 PLOT 47ˆ},29:DRAWTO 47,34›550 COLOR 1›560 PLOT 43,30:DRAWTO 47,27›570 PLOT 51,30:DRAWTO 47,27›580 PLOT 47,27:DRAWTO 49,30›590 PLOT 47,‰}27:DRAWTO 45,30›600 PLOT 46,27›610 HSCORE=0›620 LAPOS=0›630 APOS=J+70›640 I=-1›650 JUMP=5›660 SCORE=0›670 PNTS=30›680 JMP=0›6Š}90 SOUND 0,31,4,4›700 POKE 623,4›710 JSTOP=J-219›720 FOR G=20 TO 245 STEP 3›730 POKE 53248,G›740 D=USR(VP,APIMG,LAPOS,APOS)›7‹}50 IF JMP=0 AND G<180 AND STICK(0)<>15 THEN JMP=APOS+132:POKE 53249,G+4:IMG=JPIMG:D=USR(VP,IMG,O,JMP)›760 LJMP=JMP›770 IF JMPŒ}=0 THEN 880›780 JMP=JMP+3›790 IF JMP=122 AND HJMP<=126 THEN JSTOP=J+208:GOTO 860›820 IF HJMP<120 OR HJMP>134 THEN 860›830 JSTOP=J+2Ž}10›840 POKE 623,1›850 IF PNTS>15 THEN PNTS=15›860 IF JMP>JSTOP THEN 940›870 D=USR(VP,IMG,LJMP,JMP)›880 LAPOS=APOS›890 APOS=AP}OS+I›900 D=USR(VP,APIMG,LAPOS,APOS)›910 IF APOS>BOT THEN I=-SLOPE›920 IF APOS9 THEN PNTS=PNTS-8:GOTO 1220›950 IF JMP134 THEN TONE=8:GOTO 1010›980 SCORE=SCORE+PNTS‘}›985 TONE=12›990 D=USR(VP,JWIMG,0,JMP-1)›1000 ? "SCORE ";SCORE:? :? ›1010 FOR D=15 TO 0 STEP -1›1020 SOUND 1,12,T0NE,D›1030 F’}OR I=1 TO 10:NEXT I›1040 NEXT D›1050 SOUND 0,0,0,0›1055 SOUND 1,0,0,0›1060 JUMP=JUMP-1›1070 IF JUMP<>0 THEN 1170›1080 IF SCOR“}E>HSCORE THEN HSCORE=SCORE›1090 FOR I=1 TO 120›1100 IF I=1 THEN ? "HIGH SCORE ";HSCORE:? :? ›1110 IF I=60 THEN ? "FINAL SCORE”} ";SCORE:? :? ›1120 IF STRIG(0)=1 THEN 1150›1130 D=USR(VP,CLEAR,J,0)›1135 PRINT ›1140 GOTO 630›1150 NEXT I›1160 GOTO 1090›117•}0 ? "JUMP ";6-JUMP:? :? ›1180 FOR D=0 TO 250:NEXT D:? ›1190 D=USR(VP,CLEAR,J,0)›1195 I=SLOPE›1200 IF RND(0)>0.5 THEN I=-SLOPE–}›1210 GOTO 670›1220 POKE 77,0›1225 GOTO 690›1230 END ››1190 D=USR(VP,CLEAR,J,0)›1195 I=SLOPE›1200 IF RND(0)>0.5 THEN I=-SLOPE6Program 2. Assembly of P/M Vertical Positioner››10 ;P/M VERTICAL POSITIONER›20 NEW = 220›30 CURRENT = 222›40 IMAGE = 224›50 S˜}TART PLA ;REMOVE ARGUMENT BYTE COUNT›60 LDX #5 ;REMOVE 6 BYTES›70 LP1 PLA ;AND PLACE IN PAGE ZERO›80 STA NEW,X›™}90 DEX›100 BPL LP1›110 DEC NEW›120 DEC LAST›130 LDY #0›140 LDA (IMAGE),Y ;GET IMAGE BYTE COUNTš}›150 TAX›160 TAY›170 LDA LAST+1 ;IF ZERO DON'T DELETE›180 BEQ SKIPD›190 LP2 LDA #0 ;DELETE IMAGE›200 ›} STA (LAST),Y›210 DEY›220 BNE LP2›230 SKIPD TXA›240 TAY›250 LDA NEW+1 ;IF ZERO DON'T RESTORE›260 BEœ}Q SKIPR›270 LP3 LDA (IMAGE),Y ;COPY IMAGE DATA TO NEW›280 STA (NEW),Y ;ADDRESS›290 DEY›300 BNE LP3›310 SKIP}R RTS›R›270 LP3 LDA (IMAGE),Y ;COPY IMAGE DATA TO NEW›280 STA (NEW),Y ;ADDRESS›290 DEY›300 BNE LP3›310 SKIP90 REM * VBLANK PM DEMO *›100 POKE 752,1:? CHR$(125):SETCOLOR 2,0,0›110 PCOL0=216:PCOL1=56:REM Color of players›120 GOSUB 100Ÿ}0:REM Initialize VBLANK routine›130 POKE PLL,8:POKE PLL+1,8:REM Height of players›140 POKE PLX,108:POKE PLY,102:REM Player 0' }s initial position›150 POKE PLX+1,108:POKE PLY+1,72:REM Player 1's initial position›160 REM Let players dance!›170 POKE PLX,R¡}ND(0)*159+48:POKE PLY,RND(0)*191+32›180 POKE PLX+1,RND(0)*159+48:POKE PLY+1,RND(0)*191+32›190 FOR I=1 TO 75:NEXT I:GOTO 170›2¢}00 END ›1000 REM * INITIALIZE VBLANK *›1010 FOR I=1536 TO 1706:READ A:POKE I,A:NEXT I›1020 FOR I=1774 TO 1787:POKE I,0:NEXT I£}›1030 PM=PEEK(106)-16:PMBASE=256*PM›1040 FOR I=PMBASE+1023 TO PMBASE+2047:POKE I,0:NEXT I›1050 FOR I=PMBASE+1025 TO PMBASE+10¤}32:READ A:POKE I,A:NEXT I›1060 FOR I=PMBASE+1281 TO PMBASE+1288:READ A:POKE I,A:NEXT I›1070 POKE 704,PCOL0:POKE 705,PCOL1:POK¥}E 706,PCOL2:POKE 707,PCOL3›1080 PLX=53248:PLY=1780:PLL=1784›1090 POKE 559,62:POKE 623,1:POKE 1788,PM+4:POKE 53277,3:POKE 5427¦}9,PM›1100 X=USR(1696)›1110 RETURN ›2000 REM * VBLANK INTERRUPT ROUTINE *›2010 DATA 162,3,189,244,6,240,89,56,221,240,6,240,83§},141,254,6,106,141›2020 DATA 255,6,142,253,6,24,169,0,109,253,6,24,109,252,6,133,204,133›2030 DATA 206,189,240,6,133,203,173,¨}254,6,133,205,189,248,6,170,232,46,255›2040 DATA 6,144,16,168,177,203,145,205,169,0,145,203,136,2O2,2O8,244,76,87›2050 DATA 6©},160,0,177,203,145,205,169,0,145,203,200,202,208,244,174,253,6›2060 DATA 173,254,6,157,240,6,189,236,6,240,48,133,203,24,138,ª}141,253,6›2070 DATA 109,235,6,133,204,24,173,253,6,109,252,6,133,206,189,240,6,133›2080 DATA 205,189,248,6,170,160,0,177,203,«}145,205,200,202,208,248,174,253,6›2090 DATA 169,0,157,236,6,202,48,3,76,2,6,76,98,228,0,0,104,169›2100 DATA 7,162,6,160,0,32,¬}92,228,96›3000 REM * Draw players 0 & 1 *›3010 DATA 6,6,8,126,195,195,195,126›3020 DATA 126,195,195,126,24,126,126,24›0,0,32,v5 REM .... P R O G R A M O N E ....›105 GRAPHICS 1:SETCOLOR 2,1,8:SETCOLOR 4,8,4:POSITION 5,3:? #6;"animation":POSITION 3,®}5:? #6;"demonstration"›120 GOSUB 1000:REM initialize vb routine›125 POKE PLY,169:POKE PLL,24›135 DRAW=1›145 FOR I=212 TO 10 S¯}TEP -1:REM move rt to lft horiz›165 POKE PLX,I:REM new position›185 POKE PDR,DRAW:REM new drawing›195 DRAW=DRAW+24:IF DRAW>73°} THEN DRAW=1:REM select next drawing›205 FOR DELAY=1 TO 30:NEXT DELAY:NEXT I:GOTO 145›1000 REM INITIALIZE VBLANK PM SUBR›1010±} FOR I=1536 TO 1706:READ A:POKE I,A:NEXT I›1020 FOR I=1774 TO 1787:POKE I,0:NEXT I›1030 PM=PEEK(106)-16:PMBASE=256*PM›1040 FO²}R I=PMBASE+1023 TO PMBASE+2047:POKE I,0:NEXT I›1045 DRWBAS=PMBASE+1›1055 FOR J=0 TO 3:REM four drawings›1065 FOR K=DRWBAS+J*2³}4 TO DRWBAS+J*24+23:READ X:POKE K,X:NEXT K:NEXT J›1075 POKE 704,12›1080 PLX=53248:PLY=1780:PLL=1784›1090 POKE 559,62:POKE 623´},1:POKE 1788,PM+4:POKE 53277,3:POKE 54279,PM›1095 PDR=1772:POKE 1771,PM›1100 X=USR(1696)›1110 RETURN ›2000 REM vblank interupµ}t routine›2010 DATA 162,3,189,244,6,240,89,56,221,240,6,240,83,141,254,6,106,141›2020 DATA 255,6,142,253,6,24,169,0,109,253,6¶},24,109,252,6,133,204,133›2030 DATA 206,189,240,6,133,203,173,254,6,133,205,189,248,6,170,232,46,255›2040 DATA 6,144,16,168,1·}77,203,145,205,169,0,145,2O3,136,202,208,244,76,87›2050 DATA 6,160,0,177,203,145,205,169,0,145,203,200,202,208,244,174,253,6›¸}2060 DATA 173,254,6,157,240,6,189,236,6,240,48,133,203,24,138,141,253,6›2070 DATA 109,235,6,133,204,24,173,253,6,109,252,6,13¹}3,206,189,240,6,133›2080 DATA 205,189,248,6,170,160,0,177,203,145,205,200,202,208,248,174,253,6›2090 DATA 169,0,157,236,6,202º},48,3,76,2,6,76,98,228,0,0,104,169›2100 DATA 7,162,6,160,0,32,92,228,96›3005 REM drawings 0, 1, 2 and 3›3015 DATA 0,12,12,30,»}0,12,12,0,12,14,30,45,13,13,12,28,28,20,52,34,34,34,102,0›3025 DATA 0,12,12,30,0,12,12,0,12,14,14,13,26,4,8,12,12,28,24,28,20¼},18,50,0›3035 DATA 0,12,12,30,0,12,12,0,12,14,10,14,30,12,8,12,28,28,8,12,12,8,24,0›3045 DATA 0,12,12,30,0,12,12,0,12,12,12,1½}0,6,30,12,12,12,12,20,20,18,50,6,0›12,0,12,14,10,14,30,12,8,12,28,28,8,12,12,8,24,0›3045 DATA 0,12,12,30,0,12,12,0,12,12,12,1#5 REM .... P R O G R A M T W 0 ....›105 GRAPHICS 1:SETCOLOR 2,1,8:SETCOLOR 4,8,4:POSITION 5,3:? #6;"animation":POSITION 3, ¿}5:? #6;"demonstration"›120 GOSUB 1000:REM initialize vb routine›125 FOR J=0 TO 3:POKE PLY+J,169:POKE PLL+J,24:NEXT J›135 DRAW À}=1›145 FOR I=212 TO 10 STEP -1:REM move rt to lft horiz›155 FOR J=0 TO 3:REM four players›165 POKE PLX+J,I+J*10:REM new posit Á}ion, maintain separation›175 NXTDRW=DRAW+J*24:IF NXTDRW>73 THEN NXTDRW=NXTDRW-96:REM select different drawing for each player Â}›185 POKE PDR+J,NXTDRW:NEXT J›195 DRAW=DRAW+24:IF DRAW>73 THEN DRAW=1:REM select next drawing›205 NEXT I:GOTO 145›1000 REM IN Ã}ITIALIZE VBLANK PM SUBR›1010 FOR I=1536 TO 1706:READ A:POKE I,A:NEXT I›1020 FOR I=1774 TO 1787:POKE I,0:NEXT I›1030 PM=PEEK(1 Ä}06)-16:PMBASE=256*PM›1040 FOR I=PMBASE+1023 TO PMBASE+2047:POKE I,0:NEXT I›1045 FOR I=0 TO 3:DRWBAS=PMBASE+I*256+1:REM four p Å}layers›1055 RESTORE 3015:FOR J=0 TO 3:REM four drawings›1065 FOR K=DRWBAS+J*24 TO DRWBAS+J*24+23:READ X:POKE K,X:NEXT K:NEXT Æ}J:NEXT I›1075 POKE 704,12:POKE 705,128:POKE 706,48:POKE 707,192›1080 PLX=53248:PLY=1780:PLL=1784›1090 POKE 559,62:POKE 623,1: Ç}POKE 1788,PM+4:POKE 53277,3:POKE 54279,PM›1095 PDR=1772:POKE 1771,PM›1100 X=USR(1696)›1110 RETURN ›2000 REM vblank interupt r È}outine›2010 DATA 162,3,189,244,6,240,89,56,221,240,6,240,83,141,254,6,106,141›2020 DATA 255,6,142,253,6,24,169,0,109,253,6,24 É},109,252,6,133,204,133›2030 DATA 206,189,240,6,133,203,173,254,6,133,205,189,248,6,170,232,46,255›2040 DATA 6,144,16,168,177, Ê}203,145,205,169,0,145,2O3,136,202,208,244,76,87›2050 DATA 6,160,0,177,203,145,205,169,0,145,203,200,202,208,244,174,253,6›206 Ë}0 DATA 173,254,6,157,240,6,189,236,6,240,48,133,203,24,138,141,253,6›2070 DATA 109,235,6,133,204,24,173,253,6,109,252,6,133,2 Ì}06,189,240,6,133›2080 DATA 205,189,248,6,170,160,0,177,203,145,205,200,202,208,248,174,253,6›2090 DATA 169,0,157,236,6,202,48 Í},3,76,2,6,76,98,228,0,0,104,169›2100 DATA 7,162,6,160,0,32,92,228,96›3005 REM drawings 0, 1, 2 and 3›3015 DATA 0,12,12,30,0,1 Î}2,12,0,12,14,30,45,13,13,12,28,28,20,52,34,34,34,102,0›3025 DATA 0,12,12,30,0,12,12,0,12,14,14,13,26,4,8,12,12,28,24,28,20,18 Ï},50,0›3035 DATA 0,12,12,30,0,12,12,0,12,14,10,14,30,12,8,12,28,28,8,12,12,8,24,0›3045 DATA 0,12,12,30,0,12,12,0,12,12,12,10,6 Ð},30,12,12,12,12,20,20,18,50,6,0›12,0,12,14,10,14,30,12,8,12,28,28,8,12,12,8,24,0›3045 DATA 0,12,12,30,0,12,12,0,12,12,12,10,6 20 REM THE "I" IN THE VARIABLE "POINTER" IN LINES 190,250,320,390 SHOULD BE A "1" AS "POINT" IS A RESERVED WORD›100 REM ** IN$Ò}ITIALIZATION **›110 FOR A=1536 TO 1560:READ I:POKE A,I:NEXT A:REM POKE DATA FOR MACHINE LANGUAGE SUBROUTINE INTO MEMORY PAGE $Ó}6›120 REM ** MACHINE LANGUAGE DATA **›130 DATA 104,104,133,204,104,133,203,104,133,207,104,133,206,160,0,177,206,145,203,200,$Ô}192,8,208,247,96›140 REM ** ADDRESS OF PLAYER DATA **›150 FOR A=260 TO 323:READ I:POKE A,I:NEXT A:REM POKE DATA INTO PROTECTE$Õ}D RAM›155 REM ** PLAYER SHAPE DATA **›160 DATA 28,62,62,28,73,127,73,65,7,23,39,88,154,36,8,16,240,38,47,127,47,38,240,0,16,8$Ö},36,154,88,39,23,7›170 DATA 65,73,127,73,28,62,62,28,8,16,36,89,26,228,232,224,15,100,244,254,244,100,15,0,224,232,228,26,89,$×}36,16,8›180 REM ** POINTERS TO DATA **›190 DIM PO1NTER(8):FOR A=1 TO 8:READ I:PO1NTER(A)=I:NEXT A:DATA 260,268,276,284,292,30$Ø}0,308,316›200 REM ** SET UP PLAYER **›210 GRAPHICS 0:POKE 752,1:POKE 710,0:POKE 559,46›220 A=PEEK(106)-8:POKE 54279,A:POKE 53$Ù}277,3:PMBASE=256*A:POKE 53256,1:X=124:Y=48›230 FOR A=PMBASE+512 TO PMBASE+640:POKE A,0:NEXT A›240 POKE 53248,124:POKE 704,12:$Ú}FACING=1›250 C=0:FOR A=PMBASE+512+Y TO PMBASE+519+Y:POKE A,PEEK(PO1NTER(FACING)+C):C=C+1:NEXT A›270 REM ** MACHINE LANGUAGE C$Û}HANGE **›275 IF STRIG(0)=1 THEN 340›280 POSITION 5,5:? "MACHINE LANGUAGE";›285 J=STICK(0)›290 IF J=15 THEN 270›300 IF J=11 TH$Ü}EN FACING=FACING-1:IF FACING<1 THEN FACING=8›310 IF J=7 THEN FACING=FACING+1:IF FACING>8 THEN FACING=1›320 D=USR(1536,PMBASE+$Ý}512+Y,PO1NTER(FACING))›330 GOTO 270›340 REM ** BASIC CHANGE **›345 IF STRIG(0)=0 THEN 270›350 POSITION 5,5:? "BASIC $Þ} ";›355 J=STICK(0)›360 IF J=15 THEN 270›370 IF J=11 THEN FACING=FACING-1:IF FACING<1 THEN FACING=8›380 IF J=7 THEN FACING=FAC$ß}ING+1:IF FACING>8 THEN FACING=1›390 C=0:FOR A=PMBASE+512+Y TO PMBASE+519+Y:POKE A,PEEK(PO1NTER(FACING)+C):C=C+1:NEXT A›400 GO$à}TO 340›F FACING>8 THEN FACING=1›390 C=0:FOR A=PMBASE+512+Y TO PMBASE+519+Y:POKE A,PEEK(PO1NTER(FACING)+C):C=C+1:NEXT A›400 GO$10 GRAPHICS 9:FOR K=1 TO 10 STEP 2:FOR J=0 TO 15:COLOR J:PLOT 0,K*16+J+1:DRAWTO 79,K*16+J+1›20 PLOT 0,K*16-J:DRAWTO 79,K*16-J(â}:NEXT J:NEXT K›30 FOR K=1 TO 255 STEP 16:POKE 712,K:FOR J=1 TO 500:NEXT J:NEXT K:GOTO 30›+1›20 PLOT 0,K*16-J:DRAWTO 79,K*16-J(Y10 GRAPHICS 10:FOR K=705 TO 712:POKE K,12:NEXT K:FOR K=0 TO 79:COLOR (K+4)/10:PLOT K,0:DRAWTO K,191:NEXT K›20 FOR K=704 TO 71,ä}2:FOR J=1 TO 300:POKE K,PEEK(20):NEXT J:NEXT K:GOTO 20›0 TO 79:COLOR (K+4)/10:PLOT K,0:DRAWTO K,191:NEXT K›20 FOR K=704 TO 71,710 GRAPHICS 11:FOR K=1 TO 124:COLOR K:DRAWTO RND(1)*79,RND(1)*191:NEXT K:GOTO 10›T K,0:DRAWTO K,191:NEXT K›20 FOR K=704 TO 710Q10 GRAPHICS 11:DIM SX(15),SY(15):FOR K=5 TO 15:READ X,Y:SX(K)=X:SY(K)=Y:NEXT K:X=40:Y=96:COLOR 1›20 PLOT X,Y:X=X+SX(STICK(0))4ç}:X=X+(X<0)-(X>79):Y=Y+SY(STICK(0)):Y=Y+(Y<0)-(Y>191):IF STRIG(0) THEN 20›30 C=C+1-15*(C=15):COLOR C:GOTO 20:DATA 1,1,1,-1,1,04è},0,0,-1,1,-1,-1,-1,0,0,0,0,1,0,-1,0,0›+(Y<0)-(Y>191):IF STRIG(0) THEN 20›30 C=C+1-15*(C=15):COLOR C:GOTO 20:DATA 1,1,1,-1,1,04&10 GRAPHICS 10:FOR I=705 TO 712:POKE I,PEEK(53770):NEXT I:FOR I=1 TO 31 STEP 1:C=C+1-9*(C=8)›20 POKE 704+C,PEEK(53770):FOR J=8ê}0 TO 31 STEP 1:COLOR INT(RND(1)*15)+1:K=I+J:J3=J*3:K3=K*3:J8=J+8:J71=71-J›30 PLOT K+7,J3:DRAWTO K+7,191-J3:PLOT 72-K,J3:DRAWT8ë}O 72-K,191-J3:FOR H=3 TO 1 STEP -1›40 PLOT J8,191+H-K3:DRAWTO J71,191+H-K3:PLOT J8,K3-H:DRAWTO J71,K3-H:NEXT H:NEXT J:NEXT I:8ì}POKE 77,0:GOTO 10›H=3 TO 1 STEP -1›40 PLOT J8,191+H-K3:DRAWTO J71,191+H-K3:PLOT J8,K3-H:DRAWTO J71,K3-H:NEXT H:NEXT J:NEXT I:8100 IF PEEK(87) THEN GRAPHICS 0›105 ? CHR$(125):? "GTIA DEMONSTRATION":? ›110 ? "This Program creates an ATASCII file"›120 ? <î}"for ATARI BASIC. The file consists"›130 ? "of one line which will produce 256"›140 ? "colors on your screen if you"›150 ? "h<ï}ave a GTIA installed.":? ›170 DIM S$(120):? "Please enter device specification."›180 INPUT S$:IF S$="" THEN 180›190 ? :TRAP 2<ð}60:OPEN #1,8,0,S$›200 ? #1;"GR.9:F.K=TO79:C.K/5:PL.K,0:DR.K,191:N.K:K=USR(ADR(";›210 PUT #1,34:FOR K=1 TO 15:READ P:PUT #I,P:<ñ}NEXT K:PUT #1,34›220 DATA 173,11,212,10,229,20,41,240,141,26,208,208,243,240,241›230 ? #1;"))":CLOSE #1:? "File has been writ<ò}ten."›245 POSITION 2,19:? "ENTER ";CHR$(34);S$;CHR$(34)›250 POSITION 2,15:? "Now press the RETURN key if"›255 ? "you want to <ó}ENTER the file.":NEW ›260 STATUS #1,P:? "I/O ERROR ";P:END ›POSITION 2,15:? "Now press the RETURN key if"›255 ? "you want to <<10 POKE 54286,0:GRAPHICS 8:POKE 87,11:POKE 623,192:POKE PEEK(560)+256*PEEK(561)+166,143›20 ADDRES=1536:POKE 54286,64:FOR K=0 @õ}TO 18:READ P:POKE ADDRES+K,P:NEXT K:P=INT(ADDRES/256):POKE 513,P›30 POKE 512,ADDRES-256*P:POKE 54286,192:DATA 72,173,111,2,41@ö},63,141,10,212,141,27,208,169,0,141,26,208,104,64›40 FOR K=0 TO 159:COLOR K/10:PLOT 0,K:DRAWTO 79,K:NEXT K:POKE 712,6:STOP ›1@|Program 8. pg 233›0000 10 .PAGE› 11 ;› 12 ;necessary operating system and hardware equates› Dø} 13 ;›026F 14 GPRIOR = $026F ;GTIA priority control (shadow)›D01A 15 COLBK = $D01A ;background color reDù}gister›D01B 16 PRIOR = $D01B ;GTIA priority control (hardware)›D40A 17 WSYNC = $D40A ;horizontal blank synchrDú}onization› 18 ;› 19 ;›0000 20 *= $0600› 21 ;› 22 ;this service routine foDû}r the display list interrupt› 23 ;can be placed anywhere in RAM, and was placed on page six› 24 ;only fDü}or purposes of demonstration› 25 ;› 26 ;begin interrupt service routine code› 27 ;› Dý} 28 ;save contents of accumulator› 29 ;›0600 4B 30 PHA› 31 ;› 32 ;get the multicolor Dþ}player, fifth player, and priority bits› 33 ;››0601 AD6F02 34 LDA GPRIOR› 35 ;› 36 ;force tDÿ}he GTIA mode select bits to zero but save the other bits›0604 293F 37 AND #$3F› 38 ;› 39 ;wait untilE} next scan line for a nice clean change› 40 ;›0606 8D0AD4 41 STA WSYNC› 42 ;› 43 ;change haE}rdware register until VBLANK› 44 ;›0609 8D1BD0 45 STA PRIOR› 46 ;› 47 ;reset COLOR4 to zeroE} (for modes 9 and 11)›060C A900 48 LDA #$00›060E 8D1AD0 49 STA COLBK› 50 ;› 51 ;restore accumulatorE}› 52 ;›0611 68 53 PLA› 54 ;› 55 ;return from the display list interrupt› 56 E};›0612 40 57 RTI› 58 ;› 59 ;end of interrupt service routine› 60 ;›rupt› 56 Di10 POKE 66,1:GRAPHICS 8:POKE 709,0:POKE 710,0:POKE 66,0:POKE 623,64:POKE 53248,42:POKE 53261,3:PUT #6,1›20 POKE 53278,0:FOR KI}=1 TO 300:NEXT K:GRAPHICS 18:POKE 53248,0:POSITION 8,5:? #6;CHR$(71-PEEK(53252));"TIA"›30 POKE 708,PEEK(20):GOTO 30›8,0:FOR KHt5 REM * SCREEN SAVE ROUTINE *›8 REM * JOE TREM *›10 GOTO 30000›40 GRAPHICS 7:SETCOLOR 0,6,6:REM *SET GRAPHICS 7 MODE›60 INC=4M}9:CO=1:COLOR 1›65 INC=INC+0.05›70 X=SIN(INC)*20:Y=COS(INC)*20›75 PLOT X+80,Y+35:SOUND 1,X+50,10,8›80 CO=CO+1:IF CO<130 THEN 6M }5›100 CO=1›110 COLOR 3›130 INC=INC+0.05›140 X=SIN(INC+1)*30:Y=COS(INC)*30›145 IF CO>49 AND CO<70 THEN 160›150 COLOR 2:PLOT X+M }80,Y+35:SOUND 1,X+50,6,8›155 COLOR 3:PLOT X+81,Y+38:COLOR 1:PLOT X+79,Y+32›160 CO=CO+1:IF CO<130 THEN 110›170 COLOR 1:FOR X=1M } TO 159:PLOT X,79:DRAWTO X,79-RND(0)*5:SOUND 1,X,10,8:NEXT X›180 FOR X=1 TO 20:COLOR RND(0)*1+1:PLOT 40,40:DRAWTO RND(0)*10,RM }ND(0)*10:SOUND 1,X+20,8,8:NEXT X›183 FOR X=120 TO 159:COLOR RND(0)*2+1:PLOT X,20:DRAWTO X,RND(0)*20:NEXT X›185 COLOR 2:PLOT 1M }30,30:DRAWTO 130,24:DRAWTO 134,24:DRAWTO 134,30:PLOT 130,27:DRAWTO 134,27›186 PLOT 142,25:DRAWTO 142,24:DRAWTO 138,24:DRAWTO M}138,30:DRAWTO 142,30:DRAWTO 142,29›187 PLOT 150,24:DRAWTO 146,24:DRAWTO 146,30:DRAWTO 150,30:PLOT 146,27:DRAWTO 149,27›190 COM}LOR 2:PLOT 0,0:DRAWTO 159,0:DRAWTO 159,79:DRAWTO 0,79:DRAWTO 0,0›195 COLOR 1:PLOT 30,70:PLOT 40,10:PLOT 140,30:PLOT 150,70:PLM}OT 105,35:SOUND 1,0,0,0›200 GOTO 32000›30000 GRAPHICS 2:? #6;" SCREEN SAVE ROUTINE"›31000 CLOSE #1:OPEN #1,4,0,"K:"›32000 SCRM}N=32240:GOSUB SCRN:POKE 752,1:? " 1... DRAW PICTURE"›32010 ? " 2...SAVE PICTURE"›32020 ? " 3...LOAM}D PICTURE"›32050 GET #1,A:IF A<49 OR A>51 THEN 32050›32060 ON A-48 GOTO 40,32100,32200›32100 ? :? " SAVE TO 1...CASSETTE?":M}? " 2... DISK?"›32101 GET #1,A:IF A<49 OR A>50 THEN 32101›32103 ON A-48 GOTO 32110,32105›32105 ? :? " PLEASE INSERTM} DISKETTE AND PRESS ÒÅÔÕÒÎ":GET #1,A:OPEN #2,8,0,"D:PICTURE":GOTO 32120›32110 ? :? "PLEASE PLACE CLEAN TAPE IN RECORDER M} AND PRESS ÒÅÔÕÒÎ"›32115 OPEN #2,8,0,"C:":REM *OPEN FILE TO SAVE›32120 ? :? "SIT BACK AND RELAX... ÓÁÖÉÎÇ ÐÉÃÔÕÒÅ"›M}32122 MODE=PEEK(87):PUT #2,MODE:FOR I=0 TO 4:COL=PEEK(708+I):PUT #2,COL:NEXT I›32125 FOR I=SCREEN TO SCREEN+(40*80)-1:LOC=PEEM}K(I):PUT #2,LOC:NEXT I:CLOSE #2›32130 GOTO 32000›32200 ? :? " LOAD TO 1...CASSETTE?":? " 2...DISK?"›32201 GETM} #1,A:IF A<49 OR A>50 THEN 32201›32203 POKE 752,1›32205 ON A-48 GOTO 32210,32208›32208 ? :? " PLEASE INSERT DISKETTE AND PREM}SS ÒÅÔÕÒÎ":GET #1,A:OPEN #2,4,0,"D:PICTURE":GOTO 32220›32210 ? " PLEASE INSERT TAPE AND PRESS ÒÅÔÕÒÎ"›32215 OPEN #2,4,0,M}"C:":REM *OPEN FILE TO LOAD›32220 ? :? :? "RELAX AND ENJOY... ÌÏÁÄÉÎÇ ÐÉÃÔÕÒÅ"›32222 GET #2,MODE:GRAPHICS MODE:GOSUB SCRN:FORM} I=0 TO 4:GET #2,COL:POKE 708+I,COL:NEXT I›32225 FOR I=SCREEN TO SCREEN+(40*80)-1:GET #2,LOC:POKE I,LOC:NEXT I:CLOSE #2›32230M} GOTO 32000›32240 SCREEN=PEEK(88)+PEEK(89)*256:RETURN ›SCREEN TO SCREEN+(40*80)-1:GET #2,LOC:POKE I,LOC:NEXT I:CLOSE #2›32230L7efNËàCHR¨DX¨DY¨SCREEÎBALÌSTAÒBARHORIÚÉBARVERÔÒPØPÙBØBÙDØDÙSÔTØTÙPPOÓCHÒTEMPBØTEMPBÙBPOÓBALLPOÓFLIÐÊ×XPLODÅ@@Q}@ Q}dÐòïçòáí äåíïîóôòáôåó›nQ }Áîéíáôéïî âù ÐÅÅËéîç›xáîä ÐÏËÅéî盂&&€9@,9@,‚9@,Œ22Direction offsets for each joystick posiQ!}tion›–®68@,--68@,-C68@ ,-6@Y68@,-6@o68@,-6@„68@Q"},-@™68@,-@®68@,-@ ®6‚8@,--6‚8@,-C6‚8@,-6@Y6‚8Q#}@,-6@o6‚8@,-6@„6‚8@,-@™6‚8@ ,-@®6‚8@,-@ª..The character forQ$} each joystick Position›´«6€8@,-@’-6€8@,-@“B6€8@,-@”W6€8@,-@•l6€8@,-Q%}@6€8@,-@i–6€8@ ,-@«6€8@,-@g¾&+@%@&No text window›È7AVA&Q&}7Use lower half of character set›Ò202Make hearts vanish›Ü&&Calculate screen memory address:Q'}›æ%%6ƒ-F:@ˆ,%AV$F:@‰,ð?6„-@ %A(+6…-@s%A(?CTRL-T AND CTRL-I›úDraw a border:›1Q(}6†-@‚%A(1Horizontal bar (CTRL-R)›‡-@@ ƒ%‡†"ƒ%A`%‡†, ‡656ˆ-A$%A(Q)}5Vertical bar (SHIFT-EQUALS)›@‡-@@"Jƒ%‡$@ ˆTƒ%@%‡$@ ˆ^ ‡h,,Do corners Q*}CTRL-Q,CTRL-E,CTRL-Z,CTRL-C›rkƒ@%A(3ƒ%@@i%A(Oƒ%A`@%A(kƒ%Ay@gQ+}%A(|Put in random "stars"›†a‡-@@ 36‰-ƒ%P:A€$H:,,BF:‰,"H‰…aDon't overwritQ,}e border› ‡šo6Š-@6‹-@6ƒ%Š%@ $‹€8@,oPlaver X, Player Y. Put "up-arrow" character on screeQ-}n›¤j%6Œ-P:@$H:@,%@,G6-P:@"$H:@,%@,jBall X, Ball Y Selected randomly›®86Ž-@6Q.}-@8Direction offsets for ball›¸Main loop›ÂCheck for player's move:›Ì6-R:,Ö)"@A@Q/})Let ball bounce›à00Temporary variables hold updated PX and PY›ê 6‘-Š%8, X offset 1,0,-1›ô36’-‹%‚8,3Same with YQ0}. Table lookup is fast!›þ26“-ƒ%‘%@ $’2Calculate current position›F:“,"„AHit ball›F:“,"…A Q1}Hit star›BF:“,A@BIf wall hit, don't let player advance›&Update player›0SSTable lookup also replacQ2}es IF /THEN, and is ultimately more memory efficient:›: 6”-€8,D6ƒ%Š%@ $‹6Erase previous character›N Q3}“”Place new one›X" 6Š-‘6‹-’"Update variables›b›lLet ball have its turn›v›€5 6•-Œ%Ž6–-%5DX and DY Q4}are direction offsets›Š.6—-ƒ%•%@ $–.Ball absolute position›”9'F:—,!@d*F:—, @–A9Ball hit player›Q5}žF:—,"A0¨%%Any other collision is a bounce›²77Change direction of either X, Y, or both X and Y:›¼)H:Q6}@,!?P6Ž-6Ž) A`Æ)H:@,!?P6-6) A`Ð 6Ž-6Ž6-6 A`ÚUpdate ball›ä,ƒQ7}%Œ%@ $,Erase old ball›î —„Draw new ball›ø' 6Œ-•6-–'Update ball variables› A`èHit bQ8}all, win!›òF6˜-ƒ%Œ%@ $!6™-A(FBALL POSITION, "FLIPPING" VARIABLE›ü::FLIP is used to alternate two charactersQ9} in one spot›<<257-FLIP switches FLIP from 128 to 129, and vice-versa›N‡-@@+š-@@9˜@Q:}%™NAF:B7p,X ›-@6@>2š$@@›B ›P6™-AW&™T šX ‡$%%STRANGQ;}E SOUND, FLASH BALL AGAIN›.h ‡-AU6@<2‡@@X2@‡@@dA‡Q<}h ‡8%ÐUH-OH! Hit a star!›Ú‡-AA@ä?6œ-œ%?P?Advance character every other "I", from Q=}1-5›î= ƒ%Š%@ $‹@e%P:œ,=Place a graphics character›ø4A F:B7p,4More "cheap thrill" color›H62Q>}‡@&P:+‡&A,'@f,HExplosion sound›  ‡-ƒ%Š%@ $‹-Erase character› FlasQ?}h screen›*0‡-@A,AF:B7p,0 ‡4%€ D4:P122L1.BAS$‹-Erase character› FlasPT‚ƒ ((P0¤P1¤P2¤P3¤M¤X¨Y¨L¨XM¨YM¨LM¨ÔØÉÒÙÓNÐNÍDÙÐD0¤D1¤D2¤D3¤DØB¤ÚMOVÅÍDM°DM±DM²ÂDM³REÓPMBASÅBYTÅDM0¤DM1¤DM2¤DM3¤VTAÂAUA}TAÂOFFSEÔV³V²ÊMOVE¤€€€€€@@@@@ @ UB} €€€€€UC} !"#$%€&€'€(€)*+,UD}-./€0~~€;@,;@,‚;@,ƒ;@,„;@,…9@,†9@,‡9@UE},ˆ9@,‰9@,Š9@, k +@-@@=(@A SELF-MODIFYINGO-@@k(@UF}PLAYER-MISSILE \-@@ 3(@GRAPHICS UTILITYE-@@\(@ ken grace ‹-@UG}A  ‹ o +(o(ZTHIS UTILITY ASKS SEVERAL QUESTIONS ABOUT THE P-M GRAPHICS SITUATION YOU WANT TO SET UP.UH}e(:(/IT THEN MODIFIES ITSELF INTO A PROGRAMSKELETON.=(e(#SUBROUTINES FOR PLAYER AND MISSILE q(MOTION ARE INCLUDUI}ED.(D( YOU ADD THE REST OF THE PROGRAM.G(q(%ANIMATION IS POSSIBLE BY COPYING NEW `&(SHAPE STRINGS INTO THE STRINGUJ}S@(DEFINING THE PLAYERS.C(F(`(PRESS ÓÔÁÒÔ TO BEGIN.&6Œ-F:B2y,&Œ@@3 AP!-@@UK}%() 3 AUU(>:A%,(G(/ENTER THE ÂÁÓÉà GRAPHICS MODE FOR THE PLAYFIELDQ(GR. UŒ' AP(UL} 9000 GR. Œ' AU['(RESOLUTION DESIRED FOR PLAYERS:;(0 = DOUBLE-LINEW(1 = SINGLE-LINE (FINER)[ŽH6-P:Œ'UM}@,$6Œ-Œ&@$0Œ@H6-@$+@%Ž,%Œ"@%6-@%@$Ž%Œ"@%6-@%UN}@$Ž %Œ"@%6-@$%@$Ž"%Œ"@%6-@6%@$Ž$G AP%( 9010 RES=Ž:S=/ AUO}UG6-A($+@%Ž,&; AP)-@@6@-(1 ; AU(,((NUMBER OF PLAYERS TO BE DEFINUP}ED,‘*]‘ @ AP'-‘@;(A…%@P$O(A%@P$S ] AU,I‘ @ APUQ}'-‘@;(A–%@$? I AU0; AP)-@8@D@-(1 ; AU2-‘&UR}@4R(>:A%,(L(1COLOR (0 - 15) AND INTENSITY (0 - 15) FOR PLAYER RŒ6F AP<(AP% POKE US}A%,@$Œ%F AU8`(WIDTH OF PLAYER :-( 0 = NORMALB(1 = TWICE NORMAL\(3 = FOUR TIMES NORMAUT}L`Œ:< AP2(A`% POKE B2V%,Œ< AU<fb(>INITIAL HORIZONTAL POSITION (0 - 255) FOR LEFT EDGE UU}OF PLAYER  (45 TO 210ON SCREEN)fŒ>W APM(A€%@P$X()=Œ:REM HORIZ POS OF PLAYER W AUV}U@A-("VERTICAL LENGTH (BYTES) OF PLAYER 1Œ>(>:A%,A(BQM(4INITIAL VERTICAL POSITION OF TOP OF PLAYER (1UW} TO &Œ&@)QDk APa(A‚%@P$Y()=:L()=Œ%@:REM VERT POS AND LENGTHk UX}AUF€€( USE LINES A‘%@P$ TO A‘ %@P$# TO ENTER DATA STATEMENTS WITH THE Œ BYTES DEFININUY}G PLAYER H&(#(TYPE ÃÏÎÔ WHEN FINISHED.&&J N; AP)-@H@t@-(1 ; AUP8(4((UZ}HOW MANY MISSILES TO BE DEFINED (0 TO 4)8’R?’" AP--A€Aˆ1(5 ? AUT?’"U[} AP--AA˜1(5 ? AUV]’ @ AP'-’@;(A’…%@P$O(A’%@P$U\}S ] AUX; AP)-@x@†@-(1 ; AUZ&’"(>:A%,& A\%6-U]}%-’&@^O(>:A%,(+(WIDTH OF MISSILE :( 0 = NORMALO(1 = TWICE NORMAL`>(3 = FOUR TIMES U^}NORMAL!Œ>6-P:@#%?,$Œ%b. AP$(9064 POKE 53260,. AUd62('INITIAL HORIZONTAL POSITION OF MU_}ISSILE 6ŒfY APO(A’€%@P$XM()=Œ :REM MISSILE  HORIZ POSY AUh>-(#VERTICAL LENGTU`}H (BYTES) OF MISSILE 1Œ>(>:A%,je(a(4INITIAL VERTICAL POSITION OF TOP OF MISSILE (1 TO A($+@%Ž,&ŒUa}&@)eln APd(A’‚%@P$ YM()=:LM()=Œ%@:REM VERT POS AND LENGTHn AUUb}nzz( USE LINE A“%@P$ (TO A“ %@P$$) TO ENTER DATA STATEMENTS WITH THE Œ 'BYTES' DEFININGpUc}r(MISSILE +6Œ-P:@#%?,.(l(ALLOWED VALUES ARE 0, Œ, @$Œ, OR @$Œo(r&r w; Ud}AP)-@ˆA@-(1 ; AUxI’ @ AP'-’@;(A–P%@$? I AUUe}}O’" AP--@A(A—%@$E O AU/ AP(119(120%(125/ AUUf}‚G(PRIORITY SCHEDULE :(G($1 - PLAYERS 0-3,PLAYFLDS 0-3,BACKGNDƒ@(@(52 - PLAYERS 0-1,PLAYFLDS 0-3,PLAYERS Ug} 2-3,BACKGND„.(.(#4 - PLAYFLDS 0-3,PLAYERS 0-,BACKGND…@(@(58 - PLAYFLDS 0-1,PLAYERS 0-3,PLAYFLDS 2-3,BACKGND†Uq}Ęÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€BP122L1 LSTB #P122L2 LSTBH-P144L1 LSTBuP144L2 LSTB|P159L1 LSTB—P159L2 SRCBžP170L1 LSTB­P181L1 LSTB¾P183L2 LSTBÑP186L1 LSTBáP230L1 LSTBãP230L2 LSTBåP230L3 LSTBæP230L4 LSTBéP230L5 LSTBíP230L6 LSTBôP230L7 LSTB÷P230L8 SRCBP230L9 LSTBP242L1 LSTB#P122L1 BASBQ@P144L1 BASBšP159L1 BASB¹P170L1 BASBÉP181L1 BASBÛP183L2 BASBïP186L1 BASBÿP230L1 BASBP230L2 BASBP230L3 BASBP230L4 BASB P230L5 BASBP230L6 BASBP230L7 BASBP230L9 BASBP242L1 BAS€CJP067L1 BAS€–P067L2 BAS€ šP067L3 BAS€£P067L4 BAS€¹P086L2 BAS€¼P086L3 BAS€¾P086L4 BAS€ÁP086L5 BAS€ ÄP086L7 BAS€ÏP095L1 BAS€AèP103L1 BAS`(`(UALSO, THE NUMERICAL SUMS OF THE ABOVE CHOICES ARE ALLOWED, GIVING BLACK FOR OVERLAPS.‡?(,(!ABOVE +32 GIVES COLORUr} IN OVERLAPS/(;(CHOICE?Œˆ, AP"(9045 POKE 623,Œ, AU‰I(1(&WHEN YOU SEE ÒÅÁÄÙ YOU MAY LIST OR RUNUs}EŒ-@A I ŒŒ3 AP!-A)A7%() 3 AU‘t( ((140(145!(150)(1551(156MUt}(POKE 842,12:? CHR$(125)_-qAB@t&–00@@ @*(>:A%,-(0$›9( ((Uu}CONT$-6AB@9&œBAB@"(>:A%,%(?0@@ @B$Ÿ AUv} llMOTION OF PLAYER P. X(P) AND Y(P) ARE X,Y POSITIONS. DX AND DY ARE CHANGES. USE FOR DY=-2,-1,O,1 OR 2.›¡! Ah!“"Uw}Ag¢//”%@AcAdAeAf£6€7†8”,%“,.• Ag¤67†8”,%“,.– Ag¥6‚7†Ux}8”,%“,.— Ag¦6ƒ7†8”,%“,.˜§MB2H%”…8”,%™$6…8”,-…8”,%™26†8”,-†8”,%“>6™-J6“-M$¨%6™-Uy}6“-% Aaª88MOTION OF PLAYER P. USE FOR DY >2 OR <-2 (OR 0).›«9 Aw9”%@ArAsAUz}tAu¬2 6€.šB2H…8”,%™(6€7†8”,%“,.•2 Av­2 6.šB2I…8”,%™(67†8”,%“,.–2 Av®2 6‚.šU{}B2P…8”,%™(6‚7†8”,%“,.—2 Av¯( 6ƒ.šB2Q…8”,%™(6ƒ7†8”,%“,.˜°:6…8”,-…8”,%™6†8”,-†8”,%“+6™-76“-U|}:$±%6™-6“-% Aq´ddMOTION OF MISSILE P. XM(P),YM(P) ARE X,Y COORDS. DX,DY ARE CHANGES.USE U}}FOR DY=-2,-1,0,1 OR 2.›µL AX6‰8”,%“ @)‰8”,%“%Š8”,!)“"B6“-L A‡¶//”%@AƒAU~}„A…A†·4*6›-?:œ<%‰8”,%“<ž<Š8,<AR,4 A‡¸4*6›-?:œ<%‰8”,%“<Ÿ<Š8@,<AC,4 A‡U}¹4*6›-?:œ<%‰8”,%“< <Š8@,<A,4 A‡º**6›-?:œ<%‰8”,%“<¢<Š8@,<@c,»MB2R%”ˆ8”,%™$6ˆ8”,-ˆ8U€}”,%™26‰8”,-‰8”,%“>6™-J6“-M$¼/6™-6“-,B2R%”ˆ8”,/$¾66MOTION OF MISSILE P. USE FOU}R DY>2 OR <-2 (OR 0).›¿B A˜6‰8”,%“ @)‰8”,%“%Š8”,!)“"B6“-À//”%@A“A”A•U‚}A–Á^"6›-?:œ<%‰8”,<¡<Š8”,<AR,3B2Rˆ8”,%™T6›-?:œ<%‰8”,%“<ž<Š8”,<AR,^ A—Â^"6›-?:œ<%‰8”,<¡<ŠUƒ}8”,<AC,3B2Sˆ8”,%™T6›-?:œ<%‰8”,%“<Ÿ<Š8”,<AC,^ A—Ã^"6›-?:œ<%‰8”,<¡<Š8”,<A,3B2Tˆ8”,%™TU„}6›-?:œ<%‰8”,%“< <Š8”,<A,^ A—ÄT"6›-?:œ<%‰8”,<¡<Š8”,<@c,3B2Uˆ8”,%™T6›-?:œ<%‰8”,%“<¢<Š8”,<@c,U…}Å:6‰8”,-‰8”,%“6ˆ8”,-ˆ8”,%™+6™-76“-:$Æ%6™-6“-% A‘È A7#AY@FU†}%@$£<#.6¤-F:A,& BBy¤.6¤-¤$AVF#9B2w@!6-A(-£"@96-AUn#L š;U‡},6¡-C:š,+6š7@,.>:,=6š7,.>:,L6š7@,.š}#B•;‡8,,-6•.š7@<‡8,,BB2H…Uˆ}8,‚#B #A‘,-@‡8,&@0"¥>6•7<,.>:¥,B ¯#B–;‡8@,,-6–.š7@<‡8@,,BBU‰}2I…8@,´#B #A‘P,-@‡8@,&@0"¥>6–7<,.>:¥,B á#B—;‡8@,,-6—.š7@<‡8@UŠ},,BB2P…8@,æ#B #A’,-@‡8@,&@0"¥>6—7<,.>:¥,B $B˜;‡8@,,-6˜.š7@<‡8U‹}@,,BB2Q…8@,$B #A’P,-@‡8@,&@0"¥>6˜7<,.>:¥,B E$B¦;Š8,,-6¦.š7@UŒ}<Š8,,BB2Rˆ8,J$K #A“,-@Š8,&@0"¥>6¦7<,.>:¥,B K6ž-C:¦,w$B§;Š8@U},,-6§.š7@<Š8@,,BB2Sˆ8@,|$K #A“P,-@Š8@,&@0"¥>6§7<,.>:¥,B K6Ÿ-CUŽ}:§,©$B¨;Š8@,,-6¨.š7@<Š8@,,BB2Tˆ8@,®$b #A”,-@Š8@,&@bREAD BYTEU}:DM2$(I,I)=CHR$(BYTE):NEXT I:DM2=ADR(DM2$)›Û$B©;Š8@,,-6©.š7@<Š8@,,BB2Uˆ8@,à$K #A”P,U}-@Š8@,&@0"¥>6©7<,.>:¥,B K6¢-C:©,%G%6ª-F:A4,%AV$F:A5,G6«-F:A@,%AV$F:AAU‘},!%6¬-¤%A$+@%£,&«&%-@0%$6­-P:¬'AV,$6®-¬&AV$­:%ª%@®ª%@­U’}D%1#ª%@A($+@&£,1ª%@£N%1#ª%@A($+@&£,1ª%@£X%% 6ª-ª%¡%6¬-¬%A($+U“}@%£,b%+"@+6¬-¤%A„$+@%£,&«l% €% 6€.š6€7†8,,.•Š% 6.š67†8@,,.–”% 6‚.šU”}6‚7†8@,,.—ž% 6ƒ.š6ƒ7†8@,,.˜²%8 6„.š6„7‰8,,.¦86„7‰8,%Š8,,.š¼%W-@Š8@,U•}36¯-‰8@,%&@S6„7¯<¯,.>:@:„7¯<¯,,%@:§7<,,,W Æ%W-@Š8@,36¯-‰8@,%&@S6„7¯<¯,.>:@U–}:„7¯<¯,,%@:¨7<,,,W Ð%W-@Š8@,36¯-‰8@,%&@S6„7¯<¯,.>:@:„7¯<¯,,%@:©7<,,,W ä%*°;@8U—},6œ-C:°,*6-C:„,&@î% #A—0ø%--@@7"¥)6°7<,.>:¥,- &YY104,104,133,204,104,133,203,104,13U˜}3,206,104,133,205,104,104,133,207,104,104,133,208› &AA160,0,177,203,37,208,113,205,145,203,200,196,207,208,243,96›' AU™}€ D4:P144L1.BAS4,133,207,104,104,133,208› &AA160,0,177,203,37,208,113,205,145,203,200,196,207,208,243,96›' ATcdDÑæVÐÇÄAPIMÇJPIMÇJSIMÇJWIMÇCLEAÒÉØÊSLOPÅTOÐBOÔHSCORÅLAPOÓAPOÓJUMÐSCORÅPNTÓJMÐJSTOÐIMÇÏLJMÐHJMÐTONÅT0NÅY›} Yœ} !!ÖÅÒÔÉÃÁÌ ÐÏÓÉÔÉÏÎÅÒ ÅØÁÍÐÌÅ›Y}"ISLAND JUMPER"›2 +@AR@<0@@ @F>(@(@$(@>(@Yž} ISLANDP((@((@ JUMPERZ( BYd(( DAVID MARKLEYn6€-A6x-YŸ}@“}"‚‚ €%‚‡ Œ$$** VERTICAL POSITIONER CODE **›–HH104,162,5,104,149,220,202,16,250,198,220,198,222,16Y }0,0,177,224,170› ff168,165,223,240,9,169,0,145,222,136,208,249,138,168,165,221,240,7,177,224,145,220,136,208,249,96›ª**Y¡} AIRPLANE DATA **›´6ƒ-€%@D¾6,142,132,255,255,4,14›È** JUMPER DATA **›Ò6„-ƒ%@Ü%%9,189,189,90,60,2Y¢}4,24,36,66,129›æ** JUMPER & CHUTE DATA **›ð6…-„%@ú==15,60,126,126,255,255,129,189,189,90,60,24,24,36,66,195›Y£}** WAVING JUMPER **›6†-…%@4415,0,0,0,0,0,128,188,188,88,60,26,25,37,66,195›"%%** DATA USED TO CLEAR MEMORY¤}Y **›,6‡-†%@6 255›@‚-@A ‚J +@T0@@ @^0@@@Y¥}h6ˆ-F:A,m6‰-ˆ$AV&Arr‰As‰%@@qt‰%@@–u‰%@ˆ&Y¦}@v‰%@Aw‰%@@tx‰%@A`y‰%@ˆ&@|6ˆ-ˆ&@†Y§}BByˆ6Š-ˆ$AV%AšAY@F¤B2V@®B2w@¸A@VÂAY¨}@Ì6‚-?:€<‡<Š<,Ñ6‹-@Ö6Œ-Š%@à6-Š%@Uê0@@ô0@Y©}@@þ @',@7@4'/@B@4',@6@5'/@I@5',@GYª}@)'/@G@4& @0',@C@0'/@G@':',@Q@0'/@G@'D',@GY«}@''/@I@0N',@G@''/@E@0X,@F@'b6Ž-l6-v6Y¬}-Š%@p€6ˆ-6@Š6‘-@”6’-ž6“-@0¨6”-²%%2@1@@Y­}¼A#@Æ6•-Š&AÐ-@ AE@ÚB2Hä6‚-?:€<ƒ<<,îc,”"* A€Y®}*R:,@:6”-%A2NB2I%@T6–-„c6‚-?:€<–<—<”,ø 6˜-””"A€ 6”-”%@Y¯}Q” Š%A6™-%@+B2I™G2@@@Q A`  6–-…$6”-”&@(%%2@Y°}*1™A"*™A&'6•-Š%A1 A`4!!™ A )™!A4A`>6•-Š%AHAY±}#@R“!@6“-@\”!•A @f6‚-?:€<–<˜<”,p 6-z 6-%ˆ„6‚-?:€<ƒ<<,Ž !6Y²}ˆ-6‹˜  Œ6ˆ-‹¢ ¬+” Š*“!@ !6“-“&@+ A ¶” ŠA Ê/™ A )™!A4%6š-@/Y³} AÔ 6’-’%“Ù6š-@Þ 6‚-?:€<†<<”&@,è(SCORE ’((ò ‚-@6@üY´}2@@›‚ˆ-@@ ˆ ‚%%2%%2@Yµ}$6‘-‘&@.‘Ap8 ’!Ž6Ž-’Bˆ-@A L'ˆ"@!( HIGH SCORE Ž$('(V(Y¶}ˆ"@`"( FINAL SCORE ’%(((` T:,"@APj6‚-?:€<‡<Š<,o t A0~ ˆˆ AY·}’(JUMP @&‘((œ‚-AP ‚(¦6‚-?:€<‡<Š<,« 6ˆ-‹°H:,!?P6ˆY¸}-6‹º ApÄ@wÉ A΀ D4:P159L1.BASŠ<,« 6ˆ-‹°H:,!?P6ˆXN()‰–«PCOL°PCOL±PLÌPLØPLÙÉÁPÍPMBASÅPCOL²PCOL³Ø]º} Z* VBLANK PM DEMO *›d<AR@"(>:A%,<0@n.6€-A]»}6-@V.Color of players›x) A)Initialize VBLANK routine›‚7‚@#‚%@@7Height of player]¼}s›Œ9ƒA„A9Player 0's initial position›–Iƒ%@A+„%@@rIPlayer 1's initial po]½}sition› Let players dance!›ªA"ƒH:,$AY%@HA„H:,$A‘%@2´Q*ƒ%@H:,$A]¾}Y%@HQ„%@H:,$A‘%@2¾%…-@@u …% ApÈè* INITIALIZE VBLANK *›ò%]¿}…-A6A"†!…†% …ü'…-AtA‡#…' …(6‡-F:A,&@(6ˆ-AV$‡+…-ˆ%A]À}#ˆ%A G'…+ …)…-ˆ%A%ˆ%A2"†%…†) …$)…-ˆ%Aˆ%Aˆ"†%…†) ….3A]Á}€A'A‰3AŠ8'6ƒ-B2H6„-A€'6‚-A„BYAY@b'A#@;Aˆ]Â}‡%@MB2w@YBBy‡L6‹-?:A–,V$Ð""* VBLANK INTERRUPT ROUTINE *›ÚBB162,3,189,244,6,240,]Ã}89,56,221,240,6,240,83,141,254,6,106,141›äAA255,6,142,253,6,24,169,0,109,253,6,24,109,252,6,133,204,133›îFF206,189,240,6,]Ä}133,203,173,254,6,133,205,189,248,6,170,232,46,255›øFF6,144,16,168,177,203,145,205,169,0,145,203,136,2O2,2O8,244,76,87›EE]Å}6,160,0,177,203,145,205,169,0,145,203,200,202,208,244,174,253,6› CC173,254,6,157,240,6,189,236,6,240,48,133,203,24,138,141]Æ},253,6›DD109,235,6,133,204,24,173,253,6,109,252,6,133,206,189,240,6,133› GG205,189,248,6,170,160,0,177,203,145,205,200,2]Ç}02,208,248,174,253,6›*;;169,0,157,236,6,202,48,3,76,2,6,76,98,228,0,0,104,169›4 7,162,6,160,0,32,92,228,96›¸ * Draw p]È}layers 0 & 1 *›Â 6,6,8,126,195,195,195,126›Ì ##126,195,195,126,24,126,126,24›€ D4:P170L1.BAS92,228,96›¸ * Draw p\f()™> S PLÙPLÌDRA×ÉPLØPDÒDELAÙÁPÍPMBASÅDRWBAÓÊËØaÊ} &&.... P R O G R A M O N E ....›i— +@'0@@@A0@aË}@@S-@@j(@ animation|-@@—(@ demonstrationx% A%initaÌ}ialize vb routine›}€Ai@$‡6‚-@‘7 ƒ-A@6@7move rt to lft horiz›¥ „ƒaÍ}new position›¹ …‚new drawing›Ã?6‚-‚%@$‚!@s)6‚-@?select next drawing›Í)†-@@0 aÎ}† ƒ) AEèINITIALIZE VBLANK PM SUBR›ò%ƒ-A6A"‡!ƒ‡% ƒü'ƒ-AtA‡#ƒ' ƒaÏ}(6ˆ-F:A,&@(6‰-AV$ˆ+ƒ-‰%A#‰%A G'ƒ+ ƒ6Š-‰%@'‹-@'foaÐ}ur drawings›)9'Œ-Š%‹$@$Š%‹$@$%@#+"1Œ5 Œ9 ‹3A@8'6„-B2H6€-A€'6-A„aÑ}BYAY@b'A#@;Aˆˆ%@MB2w@YBByˆG6…-ArAqˆL6aÒ}-?:A–,V$Ðvblank interupt routine›ÚBB162,3,189,244,6,240,89,56,221,240,6,240,83,141,254,6,106,141›äAA255,6,aÓ}142,253,6,24,169,0,109,253,6,24,109,252,6,133,204,133›îFF206,189,240,6,133,203,173,254,6,133,205,189,248,6,170,232,46,255›øaÔ}FF6,144,16,168,177,203,145,205,169,0,145,2O3,136,202,208,244,76,87›EE6,160,0,177,203,145,205,169,0,145,203,200,202,208,2aÕ}44,174,253,6› CC173,254,6,157,240,6,189,236,6,240,48,133,203,24,138,141,253,6›DD109,235,6,133,204,24,173,253,6,109,252,6aÖ},133,206,189,240,6,133› GG205,189,248,6,170,160,0,177,203,145,205,200,202,208,248,174,253,6›*;;169,0,157,236,6,202,48,3,7a×}6,2,6,76,98,228,0,0,104,169›4 7,162,6,160,0,32,92,228,96›½ drawings 0, 1, 2 and 3›Ç JJ0,12,12,30,0,12,12,0,12,14,30,45aØ},13,13,12,28,28,20,52,34,34,34,102,0›Ñ GG0,12,12,30,0,12,12,0,12,14,14,13,26,4,8,12,12,28,24,28,20,18,50,0›Û FF0,12,12,30,0aÙ},12,12,0,12,14,10,14,30,12,8,12,28,28,8,12,12,8,24,0›å GG0,12,12,30,0,12,12,0,12,12,12,10,6,30,12,12,12,12,20,20,18,50,6,0›aÚ}€ D4:P181L1.BAS,30,12,8,12,28,28,8,12,12,8,24,0›å GG0,12,12,30,0,12,12,0,12,12,12,10,6,30,12,12,12,12,20,20,18,50,6,0›`)*šK ` ÊPLÙPLÌDRA×ÉPLØNXTDR×PDÒPMBASÅËDRWBAÓØPÍÁeÜ} &&.... P R O G R A M T W 0 ....›i— +@'0@@@A0@eÝ}@@S-@@j(@ animation|-@@—(@ demonstrationx% A%inieÞ}tialize vb routine›}7€-@%%€Ai3‚%€@$7 €‡6ƒ-@‘7 „-A@6@7moeß}ve rt to lft horiz››&€-@&four players›¥9…%€„%€$@9new position, maintain separation›¯X6†-ƒ%€$eà}@$†!@s-6†-†&@–Xselect different drawing for each player›¹ ‡%€† €Ã?6ƒ-ƒ%@$ƒ!@s)6ƒ-eá}@?select next drawing›Í „ AEèINITIALIZE VBLANK PM SUBR›ò%„-A6A"!„% „ü'„-Aeâ}tA‡#„' „(6Œ-F:A,&@(6ˆ-AV$Œ+„-ˆ%A#ˆ%A G'„+ „>„-eã}@/6Š-ˆ%„$AV%@>four players›1 #A0!€-@1four drawings›)='‰-Š%€$@$Š%€$@$eä}%@#+"‹1‰‹5 ‰9 €= „3KA@'AA(9A@HKAA’8'6…-B2Heå}6-A€'6‚-A„BYAY@b'A#@;AˆŒ%@MB2w@YBByŒG6‡-Areæ}AqŒL6‹-?:A–,V$Ðvblank interupt routine›ÚBB162,3,189,244,6,240,89,56,221,240,6,240,83,141,254,6,eç}106,141›äAA255,6,142,253,6,24,169,0,109,253,6,24,109,252,6,133,204,133›îFF206,189,240,6,133,203,173,254,6,133,205,189,248eè},6,170,232,46,255›øFF6,144,16,168,177,203,145,205,169,0,145,2O3,136,202,208,244,76,87›EE6,160,0,177,203,145,205,169,0,14eé}5,203,200,202,208,244,174,253,6› CC173,254,6,157,240,6,189,236,6,240,48,133,203,24,138,141,253,6›DD109,235,6,133,204,24,eê}173,253,6,109,252,6,133,206,189,240,6,133› GG205,189,248,6,170,160,0,177,203,145,205,200,202,208,248,174,253,6›*;;169,0,1eë}57,236,6,202,48,3,76,2,6,76,98,228,0,0,104,169›4 7,162,6,160,0,32,92,228,96›½ drawings 0, 1, 2 and 3›Ç JJ0,12,12,30,0,eì}12,12,0,12,14,30,45,13,13,12,28,28,20,52,34,34,34,102,0›Ñ GG0,12,12,30,0,12,12,0,12,14,14,13,26,4,8,12,12,28,24,28,20,18,50,eí}0›Û FF0,12,12,30,0,12,12,0,12,14,10,14,30,12,8,12,28,28,8,12,12,8,24,0›å GG0,12,12,30,0,12,12,0,12,12,12,10,6,30,12,12,12,1eî}2,20,20,18,50,6,0›€ D4:P183L2.BAS,30,12,8,12,28,28,8,12,12,8,24,0›å GG0,12,12,30,0,12,12,0,12,12,12,10,6,30,12,12,12,1d'l›°ÁÉPO1NTER¨PMBASÅØÙFACINÇÃÊÄ@ nið}nTHE "I" IN THE VARIABLE "POINTER" IN LINES 190,250,320,390 SHOULD BE A "1" AS "POINT" IS A RESERVED WORD›d** INITIALIZAiñ}TION **›nd€-A6A`"!€% €dPOKE DATA FOR MACHINE LANGUAGE SUBROUTINE INTO MEMORY PAGE 6›x!!** MACHINE Liò}ANGUAGE DATA **›‚dd104,104,133,204,104,133,203,104,133,207,104,133,206,160,0,177,206,145,203,200,192,8,208,247,96›Œ""** Aió}DDRESS OF PLAYER DATA **›–D€-A`A#"!€% €DPOKE DATA INTO PROTECTED RAM››** PLAYER SHAPE DATA **› fiô}f28,62,62,28,73,127,73,65,7,23,39,88,154,36,8,16,240,38,47,127,47,38,240,0,16,8,36,154,88,39,23,7›ªnn65,73,127,73,28,62,62iõ},28,8,16,36,89,26,228,232,224,15,100,244,254,244,100,15,0,224,232,228,26,89,36,16,8›´** POINTERS TO DATA **›¾W‚9@iö},$€-@@("16‚8€,-5 €W260,268,276,284,292,300,308,316›È** SET UP PLAYER **›ÒC +AR@i÷}1ACAY@FÜp6€-F:A,&@&BBy€8B2w@F6ƒ-AV$€XB2V@iø}d6„-A$p6…-@Hæ+€-ƒ%Aƒ%A@'€+ €ð3B2HA$'A@36†-@úKiù}6‡-+€-ƒ%A%…ƒ%A%…9€F:‚8†,%‡,G6‡-‡%@K €##** MACHINE LANGUAGE CHANGE **› T:,"@iú}A@+-@@+(MACHINE LANGUAGE6ˆ-R:,"ˆ"@Ap,5ˆ"@6†-†&@iû})† @56†-@65ˆ"@6†-†%@)†!@56†-@@##6‰-?:A6<ƒ%A%…<‚8†,,J Apiü}T** BASIC CHANGE **›Y T:,"Ap^+-@@+(BASIC c6ˆ-R:,hˆiý}"@Apr5ˆ"@6†-†&@)† @56†-@|5ˆ"@6†-†%@)†!@56†-@†iþ}K6‡-+€-ƒ%A%…ƒ%A%…9€F:‚8†,%‡,G6‡-‡%@K € A@€ D4:P186L1.BAS56†-@†hk-ËÊ } +@ )€-@@@=-@A_,€$@%%@n}}/@y€$@%%@7,€$@&//@y€$@&3 7 €Q€-@AU@+An}€?-@AC G €Q @0€ D4:P230L1.BAS€$@&3 7 €Q€-@AU@+AlAÖëËÊ w +@!€-AA-€@1 €E€-@y[+€%@,'@gr},€s/€A‘w €L€-AA+-@A:€F:@ ,> B €L @ € D4:P230L2.BASgp| ezË [ +@!€-@A$%€M/H:@,$@yH:@,$A‘Q €[ @€ D4:v}P230L3.BASzË [ +@!€-@A$%€M/H:@,$@yH:@,$A‘Q €[ @€ D4:t   ;›°SX¨SY¨ËØÙÃ@@ w +@%€9@,9@,9‚-@@z}?"ƒ„H6€8‚,-ƒQ68‚,-„U ‚a6ƒ-@@m6„-@–w@‚ ,ƒ„6ƒ-ƒ%€8R:,,;6ƒ-ƒ%+ƒ ,&+ƒ!@y,z}O6„-„%8R:,,m6„-„%+„ ,&+„!A‘,‚T:,@ g%6…-…%@&@$+…"@,)…3 @ gz }1,1,1,-1,1,0,0,0,-1,1,-1,-1,-1,0,0,0,0,1,0,-1,0,0›€ D4:P230L4.BASg%6…-…%@&@$+…"@,)…3 @ gxGW"7ÉÃÊËJ³K³J¸J7±È r +@!€-A~ }A0€F:B7p,4 €P€-@@1@r6-%@&@ $+"@,–A%F:B7p,6‚-~ }@1@VP:H:@,$@,%@^6ƒ-€%‚l6„-‚$@z6…-ƒ$@ˆ6†-‚%@–6‡-@q&‚h,ƒ%@~ }„'/ƒ%@A‘&„5,@r&ƒ„K/@r&ƒA‘&„hˆ-@@6@([,†A‘%ˆ&…#/‡A‘%~}ˆ&…+,†…&ˆ3/‡…&ˆ7 ˆ; ‚? €Q@w[ @€ D4:P230L5.BAS6@([,†A‘%ˆ&…#/‡A‘%|Q&ezS¤ËÐÉ€dF:@‡,+i*(>:A%,'(GTIA DEMONSTRATION*(n,,(‚}$This Program creates an ATASCII filex**("for ATARI BASIC. The file consists‚**("of one line which will produce 256Œ‚}$$(colors on your screen if you–!(have a GTIA installed.!(ª7€;A ,7("Please enter device specification.´‚}€€4A€¾-( A`-@@€ÈDD(@2GR.9:F.K=TO79:C.K/5:PL.K,0:DR.K,191:N.K:K=USR‚}(ADR(ÒL*@@4*-@@."‚5*ƒ‚9 L*@@4Ü<<173,11,212,10,229,20,41,240,141,26,20‚}8,208,243,240,241›æ9(@))@9(File has been written.õ8-@@8(ENTER >:@4,€>:@4‚},ú5-@@5(Now press the RETURN key ifÿ&#(you want to ENTER the file.&$@‚!( I/O ERRO‚}R ‚$€ D4:P230L6.BASNow press the RETURN key ifÿ&#(you want to ENTER the file.&$@‚!( I/O ERRO€ !¸ÍADDREÓËÐ sBB†+@1@‡@CA#A’sF:A`†},%AV$F:Aa,%AfACb6€-A6!BB†@d5-@9"‚A€%‚E V6‚-P:€'AV,b†}A‚nA€&AV$‚+BB†A’n72,173,111,2,41,63,141,10,212,141,27,208,169,0,141,26,208,104,64›(T†}-AY#'@/,;/@y? QA@T&€ D4:P230L7.BAS0,141,26,208,104,64›(T„d LaË ž@f@+@1A CAU@fgA#@dŠ}yB2H@B‹B2a@ž*@@‚B2x)€-@A- €7+@IB2HŠ}[-@@‚(@>:@q&F:B2R,,TIA"AF:@ ," @0€ D4:P230L9.BAS2Hˆuv” © INÃCÏØÙSCRÎÁMODÅÉCOÌSCREEÎLOà Ž} * SCREEN SAVE ROUTINE *›* JOE TREM *› B(> +@'0@@>*SET GRAPHICS 7 MŽ }ODE›<%6€-@I6-@%@A6€-€%?F%6‚-G:€,$@ %6ƒ-E:€,$@ K=,‚%@€ƒ%@5=2@Ž!}‚%@P@@P%6-%@% A0@ed6-@n @‚6€-€%?Œ-6‚-G:€%Ž"}@,$@0-6ƒ-E:€,$@0‘!!!@I* @pA`–G @#,‚%@€ƒ%@5G2@‚%@P@Ž#}@›C @#,‚%@ƒ%@8-@C,‚%@yƒ%@2 %6-%@% A0Aªl @Ž$}!‚-@AY-,‚@yL/‚@y&H:,$@h2@‚@@l ‚´–‚-@@ 4HŽ%}:,$@%@F,@@@@n/H:,$@H:,$@’2@‚%@ @@– ‚·Ž&}[‚-A AY4H:,$@%@@,‚@ W/‚H:,$@ [ ‚¹y @,A0@01/AŽ'}0@$C/A4@$U/A4@0g,A0@'y/A4@'ºo,AB@%'/AB@$Ž(}9/A8@$K/A8@0]/AB@0o/AB@)»o,AP@$'/AF@$9/AF@0Ž)}K/AP@0],AF@'o/AI@'¾g @,1/AYC/AY@yŽ*}U/@yg/É @,@0@p1,@@@C,A@@0U,AP@pg,AŽ+}@5‰2@È B 0u/ +@/(@ SCREEN SAVE ROUTINEy.@.Ž,}@@K:}E6„-B"@ „%AR@E( 1... DRAW PICTURE }""( 2...SAVE PŽ-}ICTURE}""( 3...LOAD PICTURE2}.)@….… @I)…!@QB P<}''…&@H@@B!B"Ž.}d}=(#( SAVE TO 1...CASSETTE?=( 2... DISK?e}.)@….… @I)…!@PB!g}…&@HBŽ/}!B!i}v(8(- PLEASE INSERT DISKETTE AND PRESS ÒÅÔÕÒÎE)@…l@@ D:PICTUREv Ž0}B! n}J(J(?PLEASE PLACE CLEAN TAPE IN RECORDER AND PRESS ÒÅÔÕÒÎs}8#@@C:8*OPEN FŽ1}ILE TO SAVE›x}/(/($SIT BACK AND RELAX... ÓÁÖÉÎÇ ÐÉÃÔÕÒÅz}U6†-F:@‡,*@†3‡-@D6ˆ-F:A%‡Ž2},Q*@ˆU ‡}}J%‡-‰‰%+@@$@€,&@.6Š-F:‡,;*@Š? ‡J@‚} B È}@(%( LOAD TOŽ3} 1...CASSETTE?@( 2...DISK?É}.)@….… @I)…!@PB"Ë}AR@Í}…&@HŽ4}B"B"Ð}w(9(. PLEASE INSERT DISKETTE AND PRESS ÒÅÔÕÒÎF)@…m@@ D:PICTURŽ5}Ew B" Ò},,($ PLEASE INSERT TAPE AND PRESS ÒÅÔÕÒÎ×}8#@@C:8*OPEN FILE TO LOAD›Ü}0( (0("Ž6}RELAX AND ENJOY... ÌÏÁÄÉÎÇ ÐÉÃÔÕÒÅÞ}K)@†+† „,‡-@9)@ˆGA%‡ˆK ‡á}G%‡-‰‰%+@@Ž7}$@€,&@2)@Š8‡Š< ‡G@æ} B ð}(%6‰-F:@ˆ,%F:@‰,$AV($€ D4:P242L1Ž8}.BAS@€,&@2)@Š8‡Š< ‡G@æ} B ð}(%6‰-F:@ˆ,%F:@‰,$AV($€ D4:P242L1Œ