( COMPUTE DISTANCES BETWEEN TWO VECTORS )                       ( THIS GUY USES THE COORDINATES IN THE VECTOR )                 HEX                                                             SUBR ABSHL H A MOV, A ANA, RP, CMA, A H MOV, L A MOV,           CMA, A L MOV, H INX, RET,                                                                                                       SUBR LRDIST B PUSH, D PUSH, H PUSH,                             VXH X D LDX, VX X E LDX, VXH Y H LDX, VX Y L LDX,               A ANA, D DSBC, ABSHL CALL, L C MOV, H B MOV,                    VYH X D LDX, VY X E LDX, VYH Y H LDX, VY Y L LDX,               A ANA, D DSBC, ABSHL CALL, B DAD,                               H A MOV, 1F CPI, CY~, IF, 7F A MVI, ELSE,                       H DAD, H DAD, H A MOV, THEN, H POP, D POP, B POP, RET,          DECIMAL -->                                                                                                                                                                                     ( COORDINATE SHOVELERS )                                        SUBR PUSHyc H POP, VX Y E LDX, VXH Y D LDX, D PUSH,             VY Y E LDX, VYH Y D LDX, D PUSH, PCHL,                          SUBR POPyc H POP, D POP, E VY Y STX, D VYH Y STX,               D POP, E VX Y STX, D VXH Y STX, PCHL,                                                                                           SUBR PUSHxc H POP, VX X E LDX, VXH X D LDX, D PUSH,             VY X E LDX, VYH X D LDX, D PUSH, PCHL,                          SUBR POPxc H POP, D POP, E VY X STX, D VYH X STX,               D POP, E VX X STX, D VXH X STX, PCHL,                           -->                                                                                                                                                                                                                                                                                                                                                                                             ( BEARING CALCULATOR - RETURNS BEARING 0-7 )                    DATA BEART 1 B, 3 B, 7 B, 5 B, 0 B, 4 B, 0 B, 4 B, 2 B, 2 B,    6 B, 6 B,                                                       SUBR BEARING 0 C MVI, XCHG, H A MOV, RAL, C RALR, ABSHL CALL,   XCHG, H A MOV, RAL, CMC, C RALR, ABSHL CALL,                    ( CHECK ABS X > ABS Y*2 )                                       H PUSH, H DAD, A ANA, D DSBC, H POP,                            CY, IF, 3 C SET, ELSE, ( NOW CHECK Y CASE )                     XCHG, H DAD, A ANA, D DSBC, CY, IF, 2 C SET, THEN, THEN,        0 B MVI, BEART H LXI, B DAD, M A MOV, RET,                      -->                                                             CODE BT EXX, H POP, D POP, B POP, A ANA, B DSBC,                XCHG, B POP, A ANA, B DSBC, XCHG, BEARING CALL,                 EXX, A L MOV, 0 H MVI, H PUSH, NEXT                             ;S                                                                                                                              ( MORE BEARING STUFF )                                          ( IY= ME, IX= HIM )                                             SUBR BEARV VX X L LDX, VXH X H LDX,                             VX Y C LDX, VXH Y B LDX, A ANA, B DSBC,                         XCHG, VY X L LDX, VYH X H LDX,                                  VY Y C LDX, VYH Y B LDX, A ANA, B DSBC,                         BEARING JMP,                                                    ( TABLE TO CONVERT DIRECTION TO BEARING ANGLE )                 DATA DIR2B 0 B, 6 B, 2 B, 4 B,                                  SUBR Dxy B PUSH, D PUSH, H PUSH, Txy CALL,                      H POP, D POP, B POP, RET,                                                                                                       ( UPDATE POSITION OF VECTOR POINTED AT BY X )                   SUBR Xxy X PUSHX, XTIY, X POPX, Dxy CALL,                       X PUSHX, XTIY, X POPX, RET,                                     -->                                                             ( NEW FINDCLOSE ROUTINE )                                       DECIMAL                                                         F= SRCL F= FCLD F= uF                                           SUBR FINDCLOSE <ASSEMBLE                                        0 HOSTAB H LXI, EXX, A E MOV, 127 C MVI, EXX,                   LABEL SRCL M E MOV, H INX, M D MOV, H INX, D A MOV, E ORA,      FCLD JRZ, D PUSH, X POPX, ASSMSV X A LDX, ASNOT CPI,            SRCL JRNZ, OBJSV X A LDX, EXX, E CMP, EXX, SRCL JRNZ,           LRDIST CALL, EXX, C CMP, uF JRZ, CY, IF,                        LABEL uF A C MOV, X PUSHX, H POP, EXX, B A MOV, EXX, A B MOV,   THEN, EXX, SRCL JMPR,                                           LABEL FCLD EXX, RET, ASSEMBLE>                                  -->                                                                                                                                                                                                                                                             ( CHECK FINDCLOSE, AND IF FOUND LIGHT UP FOLLOWER )             SUBR LOOKFOLLOWER ( SEARCH LIST ) FINDCLOSE CALL,               C A MOV, MAXASSM CPI, ( IS FOLLOWER CLOSE ENUF? )               RNC, ( IF TOO FAR AWAY ) DISPF Y B LDX, B DCR, B DCR,           B CMP, RC, ( OR TOO CLOSE ) H PUSH, X POPX, ( IX= FOLLOWER )    DISTANCE 1+ Y A LDX, 8 ADI, A B MOV, PUSHyc CALL,               Dxy CALL, LRDIST CALL, POPyc CALL,                              C CMP, RC, X PUSHX, H POP,                                      Y PUSHX, D POP, ( DE=LDR )                                      ( LINK HER IN ) L BEHIND Y STX, H BEHIND 1+ Y STX,              E AHEAD X STX, D AHEAD 1+ X STX, ASSIM ASSMSV X MVIX,           DELTADIST Y A LDX, A DELTADIST X STX,                           DELTADIST 1+ Y A LDX, A DELTADIST 1+ X STX,                     -->                                                                                                                                                                                             ( CHECK FOR REVERSAL NEED )                                     PUSHxc CALL, DISTANCE 1+ X A LDX,                               8 ADI, A B MOV, Xxy CALL,                                       LRDIST CALL, POPxc CALL, A D MOV,                               C A MOV, D CMP, RNC,                                            ( FIX RESULT OF REVERSAL )                                      Y PUSHX, X PUSHX, Y POPX, r:d CALL, H B MOV, Txy CALL,          Y POPX, RET,                                                    -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ( LOOKASS ROUTINE )                                             F= ASSL                                                         SUBR LOOKASS <ASSEMBLE HSATP A MVI,                             LABEL ASSL                                                      PSW PUSH, BEHIND Y A LDX, BEHIND 1+ Y ORAX, 0=, IF,             PSW POP, B PUSH, D PUSH, H PUSH, X PUSHX,                       LOOKFOLLOWER CALL,                                              X POPX, H POP, D POP, B POP, ELSE, PSW POP, THEN, RET,          ASSEMBLE>                                                       SUBR LKBUN HSATM A MVI, ASSL JMPR,                              -->                                                                                                                                                                                                                                                                                                                                                                                             ( CHECK VECTOR FOR INTERCEPT WITH OTHER VECTORS )               ( ROUTINE TO FIND INTERCEPTORS, IF ANY )                        ( ENTRY: BC= NEARNESS X AND Y, HL= CHECKLIST ADDR )             ( IY= SUBJECT VECTOR )                                          ( RETURNS Z= NOFIND NZ= FIND, IX= FOUND THANG )                 DATA MON-LS MONV1 , MONV2 , XC? IFTRUE MONV3 , MONV4 , JAWSV ,  IFEND 0 ,                                                       SUBR PX-M MON-LS H LXI,                                         BEGIN,                                                          M E MOV, H INX, M D MOV, H INX, D A MOV, E ORA,                 0<>, WHILE, D PUSH, X POPX, TBACT TSTAT X BITX, 0<>, IF,        OBJSV X A LDX, MSPRO CPI, 0=, IF,                               PRXC CALL, RNZ, THEN, THEN, REPEAT, RET,                        -->                                                                                                                                                                                             