þþ¡'X;FINDCHAR:THIS SUBROUTINE TAKES THE $X;PLAYER(GUN) AND CALCULATES WHATX;ROW THE PLAYER IS ONX;(&ˆFINDCHAR;;;SUBTRACT OFF AREA WHERE2 S> ;;PLAYER IS NOT ON SCREEN<V?;;DIVIDE BY CHAR LENGTHFV?PV?Z>dQ…DLIST;;LOAD ADDRESSnP†TEMPCH;;OF SCREENx Q…DLIST‚P†TEMPCHŒƒROW0;;CALCULATE ROW OFF-SET–G†EXITCH;;IF>0 THEN ,;;ADD 40(#OF BYTES PER ROW)ª Q†TEMPCH;;TO CALCULATE ROW OF´O>(;;SCREEN THAT PLAYER¾P†TEMPCH;;IS ONÈQ†TEMPCHÒO>ÜP†TEMPCHæ!ƒROWð †EXITCH:úX; X;MISSILE1:ALLOWS PLAYER(GUN)X;TO FIRE CHARACTER BOMBX;ˆMISSILE1Q‡SDELAY1 F„OFF1Q>­PÒ "‡SDELAY1!ƒMF1 „OFF1Q> PÒ"$ƒMF1Q@…TEMPT7;;LOAD TRIGGER VALUE,$F…FIREM;;IF= THEN OK TO FIRE BOMB6:@#…FIREM#…TEMP1;;ADD 1 TO DELAYJ-Q…TEMP1;;COUNT BEFORE BOMB CAN BE FIREDTR> ;;(DELAY VALUE)^ D…NOMIShQ>rP…TEMP1;;RESET DELAY|!Q„TOP19;;VERT START POS OF GUN†, O>;;CALCULATE MIDDLE OF GUNš. ˆFINDCHAR;;FIND ROW OF SCREEN PLAYER IS ON¤)%…TEMP1;;OFFSET WHERE BOMB WILL APPEAR®0Q@†TEMPCH7;;CHECK BYTE WHERE BOMB WILL APPEAR¸H…NOMIS;;IF = THENÂQ>X;;LOAD BOMB CHARÌP@†TEMPCH7;;DISPLAY BOMBÍQ>Î P‡SDELAY1Ö …NOMIS: