!X;ADD4011:ADDS THE LENGHT OF AX;PLAYFIELD ROW TO TEMP11X;AND THEREBY,SETS TEMP11 TOX;POINT TO NEXT ROW0ADD4011QTEMP11;;LOAD POINTER TO CURRENT ROW ,O>(;;ADD # OF BYTES PER ROW PTEMP11QTEMP11O>;;ADD CARRY TO HIGH BYTE#PTEMP11(:)X;*!X;LINECNT:MOVES POINTER TEMP11+!X;TO NEXT ROW OR RESETS TEMP11,X;TO FIRST ROW-7LINECNT ADD4011;;JMPSUB TO SET POINTER TO NEXT ROW2 R>ENDSC;;ENDSC IS END OF7HEXITSC;;PLAYFIELD SCREEN<QTEMP11;;IF TEMP11<>ENDSCAR>ENDSC;;THEN EXITF HEXITSCK+ORIGIN1Q>ORIGIN;;ELSE RESET TEMP11PPTEMP11;;TO FIRST ROWUQ>ORIGINZ PTEMP11_ EXITSC:d6LINECNT2 ADD4011;;JMPSUB TO SET POINT TO NEXT ROWi,R>ENDSC2;;ENDSC2 IS END OF PLAYFIELDnHEXITSC2;;IF TEMP11<>ENDSC2sQTEMP11;;THEN EXITxR>ENDSC2} HEXITSC2,ORIGINAQ>ORIGIN2;;ELSE RESET TEMP11#PTEMP11;;TO POINT TO 1ST ROWQ>ORIGIN2 PTEMP11 EXITSC2:X;$X;WARS:USED TO HAVE TROLLS ATTACK%X;WIZARDS CASTLE/WIZARD DEFENDERS.!X;ALSO MOVES WIZARDS CHAR BOMB%WARS%>;;START POSITION IN A ROW(TLOOPQ@TEMP117;;LOAD PLAYFIELD BYTER>X;;CMP TO BOMB CHAR FT58A;;BRANCH TO CHANGE CHARR>Y;;CMP TO OTHER BOMB CHARFT59A;;BRANCH T CHANGE CHAR$T2;;LOAD TABLE OFF-SETQT19;;LOAD DELAY VALUER>;;IF VALUE >1 THENET79;; DON'T MOVE ATTACKERS,!TEND;;JMP TO TEST NEXT BYTE OR END LOOP+T79Q@TEMP117;;ELSE LOAD PLAYFIELD BYTER>;;CMP TO TROLL CHARFT10;;IF = THEN MOVE TROLLR> ;;CMP TO TROLL CHARFT12;;IF = MOVE TROLL1!TEND;;ELSE JMP TO TEST NEXT BYTE OR END LOOP T10Q> ;;LOAD NEW TROLL CHAR+ SAVEVAL;;MOVE DRAWING WITHIN SAME BYTE !TEND;;NEXT BYTE OR END LOOP)T12)>";;CMP ROW OFFSET TO POS 1 BYTE DTOK;;TO LEFT OF WIZARD CHAR  STORZ0;;IF>= REMOVE TROLL( KILL2;;JMPSUB TO REMOVE WIZARD CHAR !TEND%TOK3;;SET BYTE POINTER TO NEW POS3"$Q@TEMP117;;LOAD VALUE IN NEW POS'1;;RESET POINTER,11R>;;IF VALUE NOT 06'HTEND;;THEN DON'T DISPLAY NEW TROLL;Q>;;ELSE USE 0 TO CLEAR@P@TEMP117;;OLD CHARE3;;SET NEW POSJ Q>;;LOAD TROLL DRAWING CHARO% SAVEVAL;;JMPSUB TO DISPLAY TROLLT !TENDY"T59AQ>X;;LOAD OTHER BOMB CHAR^PTEMP1;;TEMP SAVEc !T589Ah"T58AQ>Y;;LOAD OTHER BOMB CHARm PTEMP1rT589AQ>;;USE 0 TO CLEARwP@TEMP117;;OLD BOMB CHAR|1;;CHECK POINTER OF ROW BYTE)>;;IF<5 THEN EXIT DTEND)Q@TEMP117;;ELSE LOAD VALUE IN NEW POS#FT98A;;IF = JMP TO DISPLAY BOMB1;;ELSE SET NEW POINTER POS STORZ0;;JMP TO CLEAR BYTES !TEND!T98AQTEMP1;;LDA BOMB CHARP@TEMP117;;DISPLAY BOMBTEND3;;NEXT ROW BYTE)>#;;IF >= 35 THEN ALL,EWED;;BYTES OF A ROW HAVE BEEN PROCESSED !TLOOPX;&X;WARS2:USED TO HAVE WIZARDS ATTACK#X;TROLLS CASTLE/TROLL DEFENDERS.X;ALSO MOVES TROLL CHAR BOMBWED:3WARS2%>;;STARTING POSITION IN A PLAYFIELD ROW)TLOOP2Q@TEMP117;;LOAD PLAYFIELD BYTER>X;;CMP TO BOMB CHARFT58;;IF = CHANGE CHARR>Y;;CMP TO OTHER BOMB CHARFT59;;IF = CHANGE CHAR+$T2;;LOAD X WITH OFFSET FOR DELAY TABLEQT19;;LOAD DELAY VALUER>;;IF =1,ET2527;;THEN MOVE ATTACKING WIZARD CHARS$!TEND2;;ELSE TEST TO SEE IF DONE(T2527Q@TEMP117;;LOAD PLAYFIELD BYTER>;;CMP TO WIZARD CHAR&FT25;;IF = MOVE WIZARD WITHIN BYTE R>;;CMP TO WIZARD CHAR%FT27;;IF = MOVE WIZARD TO NEW POS!TEND2;;TEST TO SEE IF DONE!T25Q>;;LOAD NEW WIZARD CHAR!& SAVEVAL;;JMPSUB TO DISPLAY WIZARD&!TEND2;;TEST TO SEE IF DONE+$T27)>;;CMP ROW POS TO 5TH BYTE0 EWOK;;IF> THEN WIZ POS IS OK5$ STORZ0;;ELSE REMOVE WIZARD CHAR:& KILL;;JMPSUB TO REMOVE TROLL CHAR?!TEND2;;TEST TO SEE IF DONEDWOK1;;SET NEW ROW POSI"Q@TEMP117;;LOAD PLAYFIELD BYTEN3;;RESET ROW POSS/R>;;TEST TO SEE IF PLAYFIELD BYTE IS CLEARX)HTEND2;;IF NOT THEN DON'T MOVE WIZARD]1;;ELSE SET NEW POSbQ>;;LOAD NEW WIZARD CHARg SAVEVAL;;DISPLAY WIZARDl3;SET POINTER TO OLD CHARqQ>;;USE 0 TO CLEAR OLDvP@TEMP117;;PLAYFIELD BYTE{!TEND2;;TEST TO SEE IF DONET59Q>X;;LOAD NEW BOMB CHAR PTEMP1 !T589T58Q>Y;;LOAD NEW BOMB CHAR PTEMP1 T589Q>;;USE 0 TO CLEAR OLDP@TEMP117;;BOMB CHAR3;;SET NEW BOMB POS IN ROW")>$;;CMP TO RIGHT LIMIT OF ROW#FTEND2;;IF = DON'T DISPLAY BOMB'Q@TEMP117;;ELSE LOAD PLAYFIELD BYTE$FT98;;IF DISPLAY BOMB IN NEW POS% STORZ0;;ELSE REMOVE WIZARD CHARS !TEND2'T98QTEMP1;;LOAD POINTER TO BOMB*P@TEMP117;;SAVE BOMB CHAR IN PLAYFIELDTEND23;;NEXT BYTE IN ROW&)>%;;IF = TO 37 THEN ALL BYTES PER!FTED;;ROW HAVE BEEN PROCESSED !TLOOP2TED:X;!X;KILL:CALCULATES # OF WIZARDS&X;THAT HAVE REACHED TROLL DEFENDERS/X;ALSO REPLACES TROLL IF WIZARD IF NECESSARYKILL$T2;;LOAD TABLE OFFSET!"ROWT9;;SUB 1 FROM TABLE VLUE QROWT9HEXITKILL;;IF<> THEN EXIT1;;ELSE SET Y TO POS OF CHAR1;;THAT IS TO BE REMOVED"Q@TEMP117;;LOAD PLAYFIELD BYTE R>r;;CMP TO TROLL CHAR'FKILL1;;IF = THEN REMOVE TROLL CHAR1;;ELSE TEST OTHER BYTE"Q@TEMP117;;LOAD PLAYFIELD BYTE 3;;SET Y TO NEW POS%)R>r;;CMP PLAYFIELD BYTE TO TROLL CHAR*'FKILL1;;IF = THEN REMOVE TROLL CHAR/:4KILL11;;SET ROW POS9Q>;;LOAD WIZARD CHAR> SAVEVAL;;DISPLAY WIZARDC 1;;RESET YH2"TOTALT;;SUB 1 FROM TOTAL # OF TROLL DEFENDERSM QTOTALTRHEXITKILL;;IF <> THEN EXITW)PTKING;;ELSE SET FLAG TO DISPLAY KING\ EXITKILL:]X;^&X;KILL2:CALCULATES # OF TROLLS THAT_"X;HAVE REACHED WIZARD DEFENDERS`$X;AND REMOVES WIZARD IF NECESSARYa KILL2$T2;;LOAD TABLE OFFSETf""ROWW9;;SUB 1 FROM TABLE VALUEk QROWW9p$HEXITKIL2;;IF VALUE <> THEN EXITu-3;;ELSE SET POINTER TO NEXT PLAYFIELD BYTEz"Q@TEMP117;;LOAD PLAYFIELD BYTER>;;CMP TO WIZARD CHAR'FKILL12;;IF = BRANCH TO REMOVE CHAR#3;;SET Y NEW NEXT PLAYFIELD BYTE"Q@TEMP117;;LOAD PLAYFIELD BYTE 1;;RESET YR>;;CMP TO WIZARD CHAR'FKILL12;;IF = BRANCH TO REMOVE CHAR:KILL12Q>;;LOAD TROLL CHAR! SAVEVAL;;DISPLAY NEW DRAWING-"TOTALW;;SUB 1 FROM # OF WIZARD DEFENDERS QTOTALWHEXITKIL2;;IF<> THEN EXIT-PWKING;;ELSE SET FLAG TO DISPLAY WIZ KING EXITKIL2:X;!X;SAVEVAL:TAKES CHAR AND SAVES X;ON PLAYFIELD.THEN ADDS 1 TO(X;POINTER AND SAVE OTHER HALF OF CHAR6SAVEVALP@TEMP117;;SAVE NEW CHAR IN PLAYFIELD BYTE 3;;NEXT BYTE IN PLAYFIELD ROW>;;TRANSFER CHAR2;;SET TO NEXT CHARA.P@TEMP117;;SAVE NEW CHAR IN PLAYFIELD BYTE:X;X;STORZ0:USED TO CLEARX;TWO BYTES OF PLAYFIELDX;STORZ0Q>'P@TEMP117;;SAVE 0 IN PLAYFIELD BYTE 3;;NEXT BYTE IN PLAYFIELD ROW'P@TEMP117;;SAVE 0 IN PLAYFIELD BYTE: