
PROGRAM LISTING: 89-07/EXWALL.M65
þþÖ_
P…ZTEMPL$>V
…CPSUB`jX;t
…PLOT ~$ˆ%’Q>†PUTCHRœ
P…IOCOM¦
…IOSUB°ºX;ćDRAWTO Î$Ø%â ‡DRAWSUBìöX;P…COLORFZX;d‰HIT.WALL nX;%1 - (0-1) PLAYER#xC†COLOR &…TEMP3
'…TEMP4ª ‡HIT.SUB´QƒEX0¾ F„HW.1ÃX;ÈQ>ÒRƒEX0;;LIMIT EXÜ D„HW.1áX;æP†EXLIM0;;SHORTEN EXðE†HW.1.1õX;ú„HW.1 †M0.OFF
†HW.1.1"SET.X.Y.MISSLE ,
&…TEMP36
'…TEMP4@ ‡HIT.SUBJQƒEX1T F„HW.1YX;^Q>hRƒEX1;;LIMIT EXr D„HW.1wX;|P†EXLIM1;;SHORTEN EX†E†HW.1.1‹X;„HW.1š †M1.OFF¤
†HW.1.1®¸ÂX;ÌCLEAR.MISSLE ÖX;%1 - VPOSM(0-1)àX;%2 - MISSLE DATAêX;%3 - EX(0-1)ôQ>þ
P…TEMP2QP„TEMP;;LOOP COUNT,&O0 ‰CLR.M.SUB:DX;N†FLASH XX;%1 - COLP(0-1)b,lQv ‰FLASH.SUB€PŠ”X;žŒMOVE.PLAYER ¨X;%1 - (0-1) [PLAYER #]²X;%2 - HORDIRP(0-1)¼X;%3 - VERDIRP(0-1)Æ<X;%4 - IF USED, TOGGLES LIMIT CHECKÐQÚF‡MP.VERTßX;ä
I…MP.UPç X;ì %†VPOSP0ö
)†BOTLIM
F†MP.END
X;
'‰PREVPOSP0(
#†VPOSP0;; DOWN2
!ƒMP37
X;<
…MP.UPF
%†VPOSP0P
)†TOPLIMd
F†MP.ENDi
X;n
x
'‰PREVPOSP0‚
"†VPOSP0;; UPŒ
ƒMP3–
ŒVERT.DRAW.P0
X;ª
´
I†MP1.UP¹
X;¾
%†VPOSP1È
)†BOTLIMÜ
F†MP.ENDá
X;æ
ð
'‰PREVPOSP1ú
#†VPOSP1;; DOWN!ƒMP4 X;
†MP1.UP%†VPOSP1"
†MP.END†X;šSET.X.Y.WALL ¤HX; CONVERT P/M COORDINATES -> SCREEN X,Y©$X;& PUT VALUES IN X & Y REGISTERS®X;%1 - (0-1) PLAYER'S #¸X;Â$>'…TEMP2H
#‰SHDHPOSM0R
Q‰SHDHPOSM0\
"‰SHDHPOSM0f
‰SETXY.SUBp
z
Q†VPOSM1„
>Ž
;˜
SƒEX1¢
P„TEMP¬
A¶
,À
OƒEX1Ê
‹SETXY.SUB.1Ô
'…TEMP2Þ
Q‰SHDHPOSM1è
‰SETXY.SUBò
ü
X;†?WALL X;IS THERE A WALL HERE?$X;%1 - WALLX(0-1).X;%2 - WALLY(0-1)8X;%3 - JUMP LABLEBX;%4 - PLAYER #L$V%`Q>†GETCHRj
P…IOCOMt
…IOSUB~R>;;WALL COLORˆ
EXPAND.MISSILE X;%1 - (0-1) MISSILE #
P…TEMP2<V?F
E…EM0.0KX;PQ†VPOSM0Z P„TEMPdQ>n
P…TEMP4xT?‚
P…TEMP3Œ
ˆEX.M.SUB–#ƒEX0 #ƒEX0ª …EM0.0¯#ƒEX0´¾QƒEX1È
P…TEMP2ÒV?Ü
E…EM1.0áX;æQ†VPOSM1ð P„TEMPúQ>
P…TEMP3T?
P…TEMP4"
ˆEX.M.SUB,#ƒEX16#ƒEX1@ …EM1.0E#ƒEX1JT^X;h‰CENTER.M rX;%1 - MISSILE #(0-1)|$>D…CS.5ASX;X%>b'…TEMP2;; LEFTl
#…TEMP3v …CS.5A€W?Š D„CS.6X;”%>ž'…TEMP2;; RIGHT¨
&…TEMP3²¼
D…CS.5BÁX;Æ%>Ð'…TEMP2;; LEFTÚ
&…TEMP3ä …CS.5BîW?ø D„CS.6ýX;%>'…TEMP2;; RIGHT
#…TEMP3 *„CS.64>X;H†SOUND RX;%1 %2 %3 %4 SAME AS BASIC\ ‰SOUND.SUBf$>p
ÿzQ„ŽQ>˜¢
P„AUDF9¬
ÿ¶QÀÊQ>ÔÞ,èO>ò
P„AUDC9üX; „POS !X;%1,%2 = X,Y POS. TEXT WINDOW$Q>.
P…TXCOL8Q>B
P…TXROWLVX;`†PRINT jX;%1 = STRING TO PRINTt!
yX;~ƒSTRƒˆ
Q>4ƒSTR’
P…ZTEMPœ
Q>5ƒSTR¦
P…ZTEMP°%>;; STRING LENGTHº ‰PRINT.SUBÄÎX;ØŠPRINT.NUM âX;%1 = VARIABLEìX;SET POS FIRSTöQQ>†INIT.1V'Q>†ROUND1ÿ`'
PˆRDOFFSETj'Q>†ROUND1X;GR. 5ì'$>`ö'
Q>;;GR.5(Q>(
P„IOCB
9(Q>†SCREENÿ((
P„IOCB92(Q>†SCREENP„AUDF9š)0¤)I‚SF®)X;¸)X;CLEAR P/M AREAÂ)X;Ì)‹CLEAR.PAGE …BASEM=Ö)X;à)X;CLEAR HIT REGISTERSê)X;ô)P†HITCLRþ)X;*X;DRAW SCREEN*X;*
#…ROUND&*X;0*„R1.05*%>R…DELAYL,?DŠTIME.DELAY;;LOOP UNTIL TIME UPV,Q>-Q>#…HITP1.X;š.„H4.1¤.Q„M1PL;;MISSLE -> PLAYER®.M>¸. F„H4.2Â.X;Ì.#†SCORE1Ö. †M1.OFFà. STOP.BUILD0.1ê.
#…HITP0ô.X;þ.„H4.2/Q„P0PL;;PLAYER <--> PLAYER/ F„H5.1/X;/ STOP.BUILD0.1&/ STOP.BUILD1.10/
#…HITP0:/
#…HITP1D/X;N/„H5.1X/
Q…HITP0b/ F„H6.1g/X;l/†FLASH †COLPM0v/
#…HITP0€/
Q…HITP0Š/V?”/M>ž/N>¨/ P„TEMP²/†SOUND R…HITP0Ð/E„H6.1;; >= HITP0Ú/Q>P…HITP0î/‹CLEAR.PAGE †BASEP0=ø/
Q…HITP10H„H6.1;;P1 EXPLODING0 †M1.OFF0 STOP.BUILD1.10!ŒEND.OF.ROUND 0„H6.1*0
Q…HITP140F‰CLEAR.HIT>0†FLASH †COLPM0H0
#…HITP1R0
Q…HITP1\0V?f0M>p0N>z0 P„TEMP„0†SOUND =<=R…HITP1¢0E‰CLEAR.HIT;; >= HITP1¬0Q>P…HITP1À0‹CLEAR.PAGE †BASEP1=Ê0
Q…HITP0Ô0H‰CLEAR.HIT;; P0 EXPLODINGÞ0 †M0.OFFã0 STOP.BUILD0.1è0!ŒEND.OF.ROUNDò0X;ü0
‰CLEAR.HIT1P†HITCLR1X;1X;$1X;^^^^^ CHECK BUTTONA ^^^^^.1X;81
‰BUTTON1.1B1
Q…WAIT0L1
F…BT1.1V1
"…WAIT0`1
!…BT2.1j1 …BT1.1t1
Q…HITP0~1H…BT2.1;;CAN'T FIRE WHEN HITˆ1QƒEX0’1
H…BT2.1œ1
Q…TRIG0¦1H…BT2.1;; NOT PRESSED°1
Q>‡WAITLIMº1
P…WAIT0Ä1
Q…FIRE0Î1
H…BT1.2Ø1
#…FIRE0â1Q>ì1 P„VOL0ö1
!…BT2.12 Q>ƒEXP2P„SKM0;;PENETRATION OF EXPLO2#ƒEX0;;SET MISSLE EXPLOTION(2Q>
22 P„VOL0<2 …BT2.1F2
Q…WAIT1P2F‡BT2.1.1Z2
"…WAIT1d2 !„M0.0n2‡BT2.1.1x2
Q…HITP1‚2H„M0.0;;CAN'T FIRE WHEN HITŒ2QƒEX1–2 H„M0.0 2
Q…TRIG1ª2H„M0.0;; NOT PRESSED´2
Q>‡WAITLIM¾2
P…WAIT1È2
Q…FIRE1Ò2
H…BT2.2Ü2
#…FIRE1æ2Q>ð2 P„VOL1ú2 !„M0.0ÿ2X;3 …BT2.23 Q>ƒEXP3P„SKM1;;PREPAR OF EXPLOSO"3#ƒEX1;;SET MISSLE EXPLOTION,3Q>
63 P„VOL1T3X; MOVE MISSILE ROUTINEh3„M0.0r3
Q…FIRE0|3
H…M0.013X;†3 !„M1.0‹3X;3 …M0.01š3R>¤3 H„M0.1©3X;®3Q‰SHDHPOSP0¸3,Â3O>Ì3P‰SHDHPOSM0Ö3‰CENTER.M #…FIRE04„M0.14#‰SHDHPOSM04%‰SHDHPOSM0&4 '„TEMP04†SOUND =„TEMP==„VOL0:4'†HPOSM0D4)†RLIMM0N4 D„M0.2S4X;X4 †M0.OFFb4 !„M1.0g4X;l4„M0.2v4QƒEX0€4 F„M1.0…4X;Š4R†EXLIM0”4
D…M0.21™4X;ž4 †M0.OFF¨4 !„M1.04X;²4 …M0.21¼4 "„SKM0Æ4 H„M1.0Ë4X;Ð4 Q>ƒEXPÚ4 P„SKM0ä4EXPAND.MISSILE Q…FIRE15
H…M1.015X;5!‰CK.M.ONLY5X; 5 …M1.01*5R>45 H„M1.195X;>5%‰SHDHPOSP1H51R5'‰SHDHPOSM1\5‰CENTER.M f5Q>p5L…BASEM8z5P…BASEM8„5
#…FIRE1Ž5„M1.1˜5"‰SHDHPOSM1¢5%‰SHDHPOSM1¬5C¶5N>ÿÀ5 P„TEMPÊ5†SOUND =„TEMP==„VOL1Ô5'†HPOSM1Þ5)†LLIMITè5 E„M1.2í5X;ò5 †M1.OFFü5!‰CK.M.ONLY6X;6„M1.26QƒEX16F‰CK.M.ONLY6X;$6R†EXLIM1.6
D…M1.2136X;86 †M1.OFFB6!‰CK.M.ONLYG6X;L6 …M1.21V6 "„SKM1`6H‰CK.M.ONLYe6X;j6 Q>ƒEXPt6 P„SKM1~6EXPAND.MISSILE ˆ6X;œ6
‰CK.M.ONLY¦6Q‰MONLYMOVE;;MISSLE MOVES°6FŒCHECK.STICK0µ6X;º6!ŠTIME.DELAYÄ6X;Î6ŒCHECK.STICK0Ø6Q>7P†BUILD07„S0.17%…HITP0;;CAN'T MOVE IF HIT(7H†S0.1.1-7X;27Q><7N†STICK0F7H„S0.2;;MOVEMENT DETECTEDK7X;P7
†S0.1.1Z7P‡VERDIR0d7P‡HORDIR0n7$†BUILD0x7H†S0.1.2}7X;‚7†SOUND †S0.1.2–7!ŒCHECK.STICK1
7X; 7„S0.2ª75´7A¾75È7†SOUND '…TEMP28%†BUILD08
'…TEMP3"8ŒCHECK.STICK Q…TEMP2J8P‡HORDIR0T8
Q…TEMP3^8P†BUILD0h8R>r8FŒCHECK.STICK1w8X;|8Q‹BUILDCOUNT0†8FŒCHECK.STICK1‹8X;8 ‹STOP.BUILD0š8X;¤8ŒCHECK.STICK1®8Q>†S1.1.109P‡VERDIR1:9P‡HORDIR1D9$†BUILD1N9H†S1.1.2S9X;X9†SOUND =†S1.1.2l9
!…MP0.0q9X;v9„S1.2€95Š9A”95ž9†SOUND =ë==¨97²9>¼97Æ9%>'…TEMP2ä9%†BUILD1î9
'…TEMP3ø9ŒCHECK.STICK : Q„TEMP:P‡VERDIR1:
Q…TEMP2 :P‡HORDIR1*:
Q…TEMP34:P†BUILD1>:R>H:
F…MP0.0M:X;R:Q‹BUILDCOUNT1\:
F…MP0.0a:X;f: ‹STOP.BUILD1p:X;„:X; MOVE PLAYER ROUTINE˜: …MP0.0¢:(ŒMOVE.PLAYER F…B0.01;X;; !„B1.0;X;; …B0.01;†SOUND H…B0.02/;X;8;Q>B;P‹BUILDCOUNT0L;SET.X.Y.WALL <„B0.2<Q><R‹BUILDCOUNT0(< H„B0.3-<X;2<T‹BUILDCOUNT0<< ‡B0.SUB1F<#†WALLY0P<#†WALLY0Z<#†?WALL †WALLX0=†WALLY0=„B0.3=F…B1.01ÿ=X;>!‚B2
>X;> …B1.01>†SOUND =<==&>$†WALLX10>
H…B1.025>X;:>Q>D>P‹BUILDCOUNT1N>SET.X.Y.WALL X>&†WALLX1b>'†WALLY1l> …B1.02v>Q>€>R‹BUILDCOUNT1Š> H„B1.1>X;”>T‹BUILDCOUNT1ž>#†?WALL †WALLX1=†WALLY1=„B1.1=¨>!‚B2>X;²>„B1.1¼>Q>Æ>R‹BUILDCOUNT1Ð> H„B1.2Õ>X;Ú>T‹BUILDCOUNT1ä> ‡B1.SUB1î>"†WALLY1ø>#†?WALL †WALLX1=†WALLY1=„B1.2=?!‚B2?X;?„B1.2?Q> ?R‹BUILDCOUNT1*? H„B1.3/?X;4?T‹BUILDCOUNT1>? ‡B1.SUB1H?#†WALLY1R?#†WALLY1\?#†?WALL †WALLX1=†WALLY1=„B1.3=f?!‚B2k?X;p?„B1.3z?Q>„?R‹BUILDCOUNT1Ž? H„B1.4“?X;˜?T‹BUILDCOUNT1¢? ‡B1.SUB1¬?"†WALLY1¶?"†WALLY1À?"†WALLY1Ê?#†?WALL †WALLX1=†WALLY1=„B1.4=Ô?!‚B2Ù?X;Þ?„B1.4è?Q>ò?R‹BUILDCOUNT1ü? H„B1.5@X;@T‹BUILDCOUNT1@ ‡B1.SUB1@#†WALLY1$@#†WALLY1.@#†WALLY18@#†WALLY1B@#†?WALL †WALLX1=†WALLY1=„B1.5=L@!‚B2Q@X;V@„B1.5`@ ‡B1.SUB1j@QŒSECONDLAYER1t@ H„B1.6y@X;~@#ŒSECONDLAYER1ˆ@#†WALLX1’@"†WALLY1œ@"†WALLY1¦@Q>°@P‹BUILDCOUNT1º@!‚B2¿@X;Ä@„B1.6Î@ ‹STOP.BUILD1â@‚B2ì@!ŠTIME.DELAYö@X;
AŒEND.OF.ROUNDA%>H…CPS.1kNX;pN0zN
H…CPS.2NX;„N:ŽN…CPS.2#…ZTEMP˜N
!…CPS.1¢NX;¬N
‰INC.ZTEMP¶N
#…ZTEMPÀN
H…IT1.1ÅNX;ÊN
#…ZTEMPÔN
…IT1.1:ÞNX;èN‹SET.UP.PLOTòN ‰INC.ZTEMPüNQ@…ZTEMP7O P„TEMPO ‰INC.ZTEMPOQ@…ZTEMP7$O
P…TEMP2.O:8OX;BOŒVERT.DRAW.P0LO%>H…VD1.0«OX;°O:ºOX;ÄOŒVERT.DRAW.P1ÎO%>PP†BASEP19P2P1(P
H…VD1.1-PX;2P:<PX;FP …IOSUBPP'T;; ROWCRSZP&U;; COLCRSdPQ>Q…COLORæP!P‡SVCOLOR;; COLOR TO DRAW WITHðPQTúPPZ;;OLD ROWCRSQ"UQQUQP[;;OLD COLCRS"Q'T;;ROWCRS,Q&U;;COLCRS6QQ>†M0.OFFQ†SOUND =P…FIRE0ÖQPƒEX0àQ P„SKM0êQQ>ôQP†EXLIM0þQ:RX;R
†M1.OFFR†SOUND =P…FIRE1bRPƒEX1lR P„SKM1vRQ>€RP†EXLIM1ŠR:”RX;žR
‰CLR.M.SUB¨R>²RT„TEMP;;COUNT * 2¼R„CM.1ÆRQ…BASEM9ÐR
M…TEMP2ÚRP…BASEM9äR0îR "„TEMPøR I„CM.1ýRX;S:SX;S
‰FLASH.SUB SO>;;INC HUE*S P„TEMP4SM>;;GET LUMIN.>S
F…FL1.1CSX;HSQ>ðRSM„TEMP;;INVERT LUMIN.\S:aSX;fS …FL1.1pSQ>zSL„TEMP;;INVERT LUMIN.„S:ŽSX;˜SCHECK.STICK.SUB¢SW?¬S D„CS.3±SX;¶S%>ÀS
'„TEMP;;UPÊS
&…TEMP3ÔS„CS.3ÞSW?èS D„CS.4íSX;òS%>üS'„TEMP;; DOWNT
&…TEMP3T„CS.4TW?$T:.TX;8T
‰SETXY.SUBBT;LTS>0;;START OF SCREEN LEFTVTV?;;DIV BY 2`T>;;= SCREEN X COORDINATEjT Q„TEMPtT‹SETXY.SUB.1~T;ˆTS> ;;START OF SCREEN TOP’TV?;;DIV BY 4œTV?¦TR>2;;IF OFF TOP°TD‹SETXY.SUB.2;;OF SCREENµTX;ºTQ>U:UX;U‡B0.SUB2(U
†COLOR 2U…PLOT †WALLX0=†WALLY0<U:FUX;PU‡B1.SUB1ZU
†COLOR dU…PLOT †WALLX1=†WALLY1nU:xUX;‚U‡B1.SUB2ŒU
†COLOR –U…PLOT †WALLX1=†WALLY1 U:ªUX;´UˆEX.M.SUB¾UX;X = EX(0-1)ÈUX;TEMP = VPOSM(0-1)ÒUX;TEMP3 = MISSILE SHAPE DATAÜUX;TEMP4 = MISSILE SHAPE DATAæUX;ðU Q„TEMPúU;V
S…TEMP2V?V
Q…TEMP4"VL…BASEM8,VP…BASEM86V3@V3JV
Q…TEMP3TVL…BASEM8^VP…BASEM8hVX;rV Q„TEMP|V,†V
O…TEMP2V?šV
Q…TEMP4¤VL…BASEM8®VP…BASEM8¸V1ÂV1ÌV
Q…TEMP3ÖVL…BASEM8àVP…BASEM8êV:ôVX;þV‘RDOFFSET.TO.ZTEMPW
QˆRDOFFSETW
P…ZTEMPWQˆRDOFFSET&W
P…ZTEMP0W::WX;DW‘ZTEMP.TO.RDOFFSETNW
Q…ZTEMPXW
PˆRDOFFSETbW
Q…ZTEMPlWPˆRDOFFSETvW:€WX;ŠW‹STOP.BUILD0”W ‡B0.SUB1žWSTOP.BUILD0.1¨W†SOUND †PCLOOPY %„TEMPYQ†STRBUF8$Y „CIOV.Y "„TEMP8YI†PCLOOP=YX;BY:LYX;VY
‰PRINT.SUB`Y1jY '„TEMPtY$>I…SLOOPµYX;ºY ŠPUTCHR.SUBÄY:ÎYX;ØYPRINT.NUM.SUBâY ƒIFP;;INT. TO F.P.ìY „FASC;;F.P. TO ASCII STRINGöYX;ZƒPN1ZQ@…INBUF7;;COUNT CHARACTERSZGƒPN2;;IN STRING#ZX;(Z32Z!ƒPN17ZX;<ZƒPN2FZ '„TEMPPZ$>P…TEMP3[ ‰INC.ZTEMP"[Q@…ZTEMP7,[
P…TEMP46[…PLOT „TEMP=…TEMP2@[‡DRAWTO …TEMP3=…TEMP4J[%>"…TEMP5^[H„R1.1;;DO NEXT SETc[X;h[„R1.2r[ ‰INC.ZTEMP|["Q@…ZTEMP7;; NUM PLOT POINT SETS†[F„R1.4;;SKIP IF "0"‹[X;[P…TEMP5;; SETSš[„R1.3¤[ ‹SET.UP.PLOT®[…PLOT „TEMP=…TEMP2¸[%>"…TEMP5Ì[ H„R1.3Ñ[X;Ö[„R1.4à[:ê[X;ô[‡HIT.SUBþ[‡HS.LOOP\Q>†GETCHR\
P…IOCOM\
…IOSUB&\R>0\F‰HS.LOOP.15\X;:\Q>†PUTCHRD\
P…IOCOMN\
$…TEMP3X\
%…TEMP4b\
…IOSUBl\
‰HS.LOOP.1v\
%…TEMP4€\
)…TEMP2Š\ F„HS.1\X;”\
$…TEMP3ž\
#…TEMP4¨\
%…TEMP4²\!‡HS.LOOP·\X;¼\„HS.1Æ\:Ð\X;Ú\EIHq==
==========
==
=====================vc===
====
====
====================vc================6==1==7==2==8==3==0==0= vc1==1==2==2==1= =6=%=2= =7=%=3= =8=%=@==@= =A==A= =B==B= *v6C==C= =D==D= =E==E= ===
==========
==
Hvc====>=
=@=
====A=====A====
=A=
=>==@===$==&==$==&Rv3=$=6=&=4=$=6=&=======
==F==B==B==F== == =
=!==!=="=="==#==#=
fvW$==$=
=*==*=
=+==+=
=,==,==-==-==.==.=
====pvZ=====!==%=>==9==7==:==<=!=<=%=== =;= =0=È=m=mzvy†ROUND3
===F=&= ==G=&===
====== == ==
==
=============˜vc========?=
=?==@==@==?==?==@==@==A==A==F==F=¢vBG==G==H==H==F==F= =G==G= =H==H= ===============================
=%Þvc===%====%=C==<==D=====E==>==<==<========>==>=èvN@==@==<==C=%====D=%=>==E=%==A==A==
==
=òv@=¶=Œ=Œüvm†ROUND5===9= =C=
=9=
=B==?=
=@==C==@==?====?===wK============
======6=&===6='w====
Back to previous page