( HOPPED UP 8 BIT MPY ROUTINE )                                 SUBR BABS A ANA, RP, CMA, A INR, RET,                           ( HL= INITIAL DISP, DE= DELTA, A= DIST )                        SUBR HOTMPY RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,           RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,                       RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,                       RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,                       RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,                       RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,                       RRC, CY, IF, D DAD, THEN, E SLAR, D RALR,                       RRC, CY, IF, D DAD, THEN, RET,                                  SUBR SQUARE BABS CALL, A E MOV, 0 D MVI, 0 H LXI,               HOTMPY JMPR,                                                    -->                                                                                                                                                                                             ( CALCULATE X Y POSITION OF OBJECT FROM DISTANCE, BASE, AND )   ( DELTAS ) F= Txy                                               SUBR CALCXY <ASSEMBLE 0 C MVI,                                  NOWR Y A LDX, MEMR Y CMPX, 0<>, IF, C INR, A MEMR Y STX, THEN,  NOWC Y A LDX, MEMC Y CMPX, 0<>, IF, C INR, A MEMC Y STX, THEN,  NOWD Y A LDX, MEMD Y CMPX, 0<>, IF, C INR, A MEMD Y STX, THEN,  DISTANCE 1+ Y A LDX, A B MOV, MEMDIST Y CMPX, 0<>, IF,          C INR, A MEMDIST Y STX, THEN,                                   C A MOV, A ANA, 0=, IF,                                         VX Y E LDX, VX 1+ Y D LDX,                                      VY Y L LDX, VY 1+ Y H LDX,                                      RET,                                                            THEN, VBSUPDATE VLOGICSTAT Y SETX,                              -->                                                                                                                                                                                             ( MORE CUTE CALCULATIONS )                                      LABEL Txy B A MOV,                                              BASEX Y L LDX, BASEX 1+ Y H LDX, DELTAX Y E LDX,                DELTAX 1+ Y D LDX, HOTMPY CALL, L VX Y STX, H VX 1+ Y STX,      H PUSH,                                                         BASEY Y L LDX, BASEY 1+ Y H LDX, DELTAY Y E LDX,                DELTAY 1+ Y D LDX, HOTMPY CALL, L VY Y STX, H VY 1+ Y STX,      D POP,                                                          RET, ASSEMBLE>                                                  -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ( ROUTINE TO ESTABLISH NEW BASE POSITIONS AND DELTAS )          ( FIRST A SIGN ROUTINE )                                        SUBR SGNA A ANA, 0 A MVI, RP, A DCR, RET,                       SUBR NEWPATH                                                    NOWR Y D LDX, NOWC Y E LDX,                                     SETBASEPOS CALL, NOWD Y A LDX, MPL0 ADI, A C MOV,               node^ CALL, M A MOV, A MAXDIST Y STX, 4 D LXI, D DAD,           M A MOV, A DELTAX Y STX, SGNA CALL, A DELTAX 1+ Y STX,          D DAD, M A MOV, A DELTAY Y STX, SGNA CALL, A DELTAY 1+ Y STX,   RET,                                                            ( ROUTINE TO CAUSE OBJECT TO ARRIVE AT A NEW POSITION )         SUBR ARRIVE                                                     NOWR Y D LDX, NOWC Y E LDX, NOWD Y C LDX,                       move:node CALL, D NOWR Y STX, E NOWC Y STX,                     SETBASEPOS CALL, FREEZEBASE CALL, RET,                          -->                                                             ( DISTANCE PHASE ACCUMULATOR )                                  ( DISTANCE HAS BOTH DELTA AND ACCELERATION )                    ( IN A= TIMEBASE TO USE )                                       SUBR DISTPA TBDEST TCHGSTAT Y BITX, RNZ,                        DISTANCE Y L LDX, DISTANCE 1+ Y H LDX,                          DELTADIST Y E LDX, DELTADIST 1+ Y D LDX,                        ( ACCDIST Y C LDX, ACCDIST 1+ Y B LDX, )                        BEGIN, D DAD, ( XCHG, B DAD, XCHG, ) A DCR, 0=, END,            ( IF BEYOND MAX DISTANCE, SET AT MAX DISTANCE AND FLAG )        MAXDIST Y A LDX, A ANA, 0<>, IF, H A MOV, MAXDIST Y CMPX,       CY~, IF, TBDEST TCHGSTAT Y SETX, MAXDIST Y H LDX, 0 L MVI,      THEN, THEN, E DELTADIST Y STX, D DELTADIST 1+ Y STX,            L DISTANCE Y STX, H DISTANCE 1+ Y STX,                          RET,                                                            -->                                                                                                                             ( DISTANCE VECTORING ROUTINE AND VGER VERBS )                   5 C= TB-DVECT ( TVMROPT2 BIT TO ACTIVATE DISTANCE VECTORING )   SUBR DISTVECT PSW PUSH, B PUSH,                                 B A MOV, DISTPA CALL,                                           CALCXY CALL, B POP, PSW POP, RET,                               SUBR NEWVECT TB-DVECT TVMROPT2 Y BITX, vect JZ,                 H PUSH, CUSVEC Y L LDX, CUSVEC 1+ Y H LDX, XTHL, RET,           NEWVECT JAYVECT 1+ U!                                           CODE DVECT-OFF Y PUSHX, vaddr LIYD, TB-DVECT TVMROPT2 Y RESX,   Y POPX, NEXT                                                    CODE CV-ON H POP, Y PUSHX, vaddr LIYD,                          L CUSVEC Y STX, H CUSVEC 1+ Y STX,                              TB-DVECT TVMROPT2 Y SETX, Y POPX, NEXT                          : DVECT-ON DISTVECT CV-ON ;                                     -->                                                                                                                             ( CODE FOR TASKS TO INTERFACE TO NEW GOODIES )                  CODE ESTPOS B PUSH, Y PUSHX, vaddr LIYD,                        NOWC Y E LDX, NOWR Y D LDX,                                     SETBASEPOS CALL, FREEZEBASE CALL, Y POPX, B POP, NEXT           CODE RNIT B PUSH, Y PUSHX, vaddr LIYD,                          NEWPATH CALL, Y POPX, B POP, NEXT                               ( TRAVEL AWAY FROM NODE )                                       CODE DEPART:NODE B PUSH, Y PUSHX, vaddr LIYD,                   NEWPATH CALL,                                                   Y POPX, B POP, NEXT                                             ( ARRIVE NODE )                                                 CODE ARRIVE:NODE B PUSH, Y PUSHX, vaddr LIYD,                   ARRIVE CALL,                                                    Y POPX, B POP, NEXT                                             DATA CK8 0 B,                                                   -->                                                             ( REVERSE DIRECTION ROUTINE )                                   SUBR r:d                                                        NOWR Y D LDX, NOWC Y E LDX, NOWD Y C LDX,                       move:node CALL, C A MOV, CMA, 3 ANI,                            D NOWR Y STX, E NOWC Y STX, A NOWD Y STX,                       NEWPATH CALL, MAXDIST Y H LDX, 0 L MVI,                         DISTANCE Y E LDX, DISTANCE 1+ Y D LDX,                          A ANA, D DSBC, L DISTANCE Y STX, H DISTANCE 1+ Y STX,           RET,                                                            CODE R:D B PUSH, Y PUSHX, vaddr LIYD,                           r:d CALL,                                                       Y POPX, B POP, NEXT                                             -->                                                                                                                                                                                                                                                             