                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ( ROUTE SEARCH ROUTINE ROUTINES )                               SUBR FORKETH PCHL,                                              SUBR VIS? H PUSH, B PUSH, Y PUSHX, H POP, VISMAT B LXI, B DAD,  E C MOV, 0 B MVI, B DAD, D A MOV, BIT^ CALL, M ANA, B POP,      H POP, RET,                                                     SUBR SETVIS H PUSH, B PUSH, Y PUSHX, H POP, VISMAT B LXI,       B DAD, E C MOV, 0 B MVI, B DAD, D A MOV, BIT^ CALL, M ORA,      A M MOV, B POP, H POP, RET,                                     SUBR ZAPVIS B PUSH, H PUSH, VISMAT B LXI, Y PUSHX, H POP,       B DAD, NCOLS DO, 0 M MVI, H INX, LOOP, H POP, B POP, RET,       SUBR Mnd TARCHK CALL, SETVIS CALL,                              MYBOSS Y A LDX, A TPL X STX, MYBOSS 1+ Y A LDX, A TPL 1+ X STX, D A MOV, RLC, RLC, RLC, RLC, E ORA, A TRC X STX, C TD X STX,    TREECK Y L LDX, TREECK 1+ Y H LDX, FORKETH CALL, ( END CHECK? ) TEL D LXI, D DADX, RET, -->                                                                                                     ( GENERATE TREE ENTRYS FOR ONE ENTRY )                          SUBR GENTE MPL0 C MVI, node^ CALL, H PUSH, 4 B MVI,             LDAR, 3 ANI, A C MOV,                                           BEGIN, H POP, H PUSH, B A MOV, 0 B MVI, B DAD, A B MOV,         M A MOV, A ANA, 0<>, IF, D PUSH, move:node CALL,                VIS? CALL, Mnd CZ, ( GENERATE NODE )                            D POP, THEN, C A MOV, A INR, 3 ANI, A C MOV, LOOP, H POP,       RET,                                                            -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ( ADVANCE TREE ONE DEPTH DOWN )                                 SUBR ADVT                                                       MYBOSS Y L LDX, MYBOSS 1+ Y H LDX,                              H INX, H INX, M E MOV,                                          E A MOV, RRC, RRC, RRC, RRC, 15 ANI, A D MOV, E A MOV, 15 ANI,  A E MOV,                                                        GENTE CALL, MYBOSS Y L LDX, MYBOSS 1+ Y H LDX,                  TEL D LXI, D DAD, M E MOV, H INX, M D MOV,                      D INX, D A MOV, E ORA, 0=, IF, H INX, ELSE, H DCX, THEN,        L MYBOSS Y STX, H MYBOSS 1+ Y STX, ADVT JRNZ,                   -1 X 0 MVIX, X INXX, -1 X 0 MVIX, X INXX, RET,                  -->                                                                                                                                                                                                                                                                                                                             ( FIND PATH ROUTINE )                                           ( BC=TARGET R,C DE= NOWR,NOWC HL= ENDCHK IY= TREE RAM )         CODE FPSS H POP, X PUSHX, Y PUSHX, B PUSH,                      vaddr LIYD, ZAPVIS CALL,                                        A XRA, A FNDPTR Y STX, A FNDPTR 1+ Y STX,                       A MYBOSS Y STX, A MYBOSS 1+ Y STX,                              NOWR Y D LDX, NOWC Y E LDX,                                     L TREECK Y STX, H TREECK 1+ Y STX,                              Y PUSHX, X POPX, TREES B LXI, B DADX,                           X PUSHX, DISTANCE Y A LDX, DISTANCE 1+ Y ORAX, 0=, IF,          0 PMOD Y MVIX, GENTE CALL, ELSE,                                -->                                                                                                                                                                                                                                                                                                                             ( IN MIDDLE OF PATH - MAKE ENTRYS FOR TWO OPTIONS )             1 PMOD Y MVIX,                                                  NOWD Y A LDX, CMA, 3 ANI, ( REVERSE TO SOURCE ) A C MOV,        D PUSH, Mnd CALL, D POP,                                        NOWD Y C LDX, move:node CALL, Mnd CALL,                         THEN, H POP, L MYBOSS Y STX, H MYBOSS 1+ Y STX,                 -1 X 0 MVIX, X INXX, -1 X 0 MVIX, X INXX,                       X PUSHX, D POP, E FRONTIER Y STX, D FRONTIER 1+ Y STX,          B POP, Y POPX, X POPX, NEXT                                     F= TREELP F= SCANBK F= SCAN1                                    SUBR BANGTREE <ASSEMBLE                                         FRONTIER Y E LDX, FRONTIER 1+ Y D LDX, D PUSH, X POPX,          FNDPTR Y L LDX, FNDPTR 1+ Y H LDX,                              L A MOV, H ORA, SCAN1 JRNZ, ADVT CALL,                          X PUSHX, D POP, E FRONTIER Y STX, D FRONTIER 1+ Y STX,          A XRA, RET, -->                                                 ( MORE )                                                        LABEL SCAN1 0 B LXI,                                            LABEL SCANBK M E MOV, C M MOV, H INX,                           M D MOV, B M MOV, H DCX, H B MOV, L C MOV,                      E A MOV, D ORA,                                                 0<>, IF, XCHG, SCANBK JMPR, THEN, 1 A MVI, A ANA, RET,          ASSEMBLE>                                                                                                                       CODE LAH Y PUSHX, X PUSHX, B PUSH,                              vaddr LIYD, BANGTREE CALL,                                      B POP, X POPX, Y POPX,                                          0=, IF,                                                         0 H LXI, ELSE, H PUSH, 1 H LXI, THEN, H PUSH,                   NEXT                                                                                                                            -->                                                             ( ROUTINE TO FIND BEST PATH TOWARDS TARGET )                    ( CHECK ROUTINE - ARE WE HOME YET? )                            SUBR BE? INTR Y A LDX, D CMP, RNZ,                              INTC Y A LDX, E CMP, RNZ, X PUSHX, H POP,                       L FNDPTR Y STX, H FNDPTR 1+ Y STX, RET,                                                                                         CODE FOLLOWTRACK Y PUSHX, vaddr LIYD,                           TRACKPTR Y L LDX, TRACKPTR 1+ Y H LDX,                          M E MOV, H INX, M D MOV, H INX, H INX,                          E TRACKPTR Y STX, D TRACKPTR 1+ Y STX, M L MOV, 0 H MVI,        Y POPX, H PUSH, NEXT ASSEMBLE> -->                                                                                                                                                                                                                                                                                                                                                              