#DEF ARC #DEF HEAT #DEF TARGET #DEF DIRECTION !BEGIN MOV ARC, 64 ; GET READY TO SET ARC OPO 17, ARC ; SET ARC !SCAN OPO 11, 100 ;GO! OPO 14, DIRECTION ;TURN IPO 7, TARGET ; SCAN FOR SOMEONE CMP TARGET, 1500 ; GOT NEONE?? JA !NONEFOUND ; IF WE DONT, GO TO NONEFOUND CMP @3, 0 ; HOW ACCURATE JE !FIRE ; IF EQUAL, THEN FIRE JA !RIGHT ; IF ITS ABOVE 0 THEN ITS RIGHT MORE ; IF ITS LESS THEN, THEN WE JUST FALL DOWN TO LEFT !LEFT CMP @3, -2 ; FAR LEFT OR LITTLE LEFT JNE !LLEFT ; ITS LITTLE LEFT THEN GOTO !LLEFT MOV DIRECTION, ARC ; SET IT NEG DIRECTION ; 0 - DIRECTION OPO 12, DIRECTION ; TURN TURRET THAT MUCH JE !FIRE !LLEFT MOV DIRECTION, ARC ; DIRECTION = ARC SHR DIRECTION, 1 ; DIRECTION / 2 NEG DIRECTION ; 0 - DIRECTION OPO 12, DIRECTION ;TURN TURRET THAT MUCH JNE !FIRE !RIGHT CMP @3, 2 ; HOW FAR RIGHT JNE !LRIGHT ; NOT THAT FAR THEN GO TO LITTLE RIGHT OPO 12, ARC ; TURN THE TURRET THAT MUCH MOV DIRECTION, ARC ; JE !FIRE !LRIGHT MOV DIRECTION, ARC ; SHR DIRECTION, 1 ; HALF IT OPO 12, DIRECTION ; TURN ; LET IT FALL THROUGH TO FIRE !FIRE JMP ARC :1 :2 :4 :8 :16 :32 IPO 2, HEAT ; GET OUR HEAT CMP HEAT, 200 ; ARE WE TO HEAT? JA 64 ; IF ABOVE THEN DONT FIRE OPO 15, DIRECTION ; FIRE AWAY! :64 CMP ARC, 2 ; ARE WE TOO SMALL? JLE !BEGIN ; IS SO BEGIN SHR ARC, 2 ; ARC / 2 OPO 17, ARC ; SET IT JMP !SCAN !NONEFOUND CMP ARC, 64 ; ARE WE STUCK? JAE !SCAN SHL ARC, 2 ; MAKE ARC BIGGER OPO 17, ARC ; SET IT JMP !SCAN ; GO