( JOYSTICK ROUTINES )                                           HEX DATA JOYTBL                                                 -1 B, 0 B, 3 B, -1 B, 1 B, -1 B, -1 B, -1 B,                    2 B, -1 B, -1 B, -1 B, -1 B, -1 B, -1 B, -1 B,                  SUBR g;j Ijs CALL, CMA, 0F ANI, A E MOV, 0 D MVI,               JOYTBL H LXI, D DAD, M A MOV, A ANA, RET,                       DECIMAL -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ( PLAYER VELOCITY SETTER )                                      HEX                                                             SUBR PVD PSW PUSH, B PUSH,                                      Hctr LDA, 3 ANI, A INR, A B MOV, -20 A MVI, BEGIN,              20 ADI, LOOP, A C MOV, 0 B MVI,                                 VPERINX PLYRV + LDA, 1 ANI, 0<>, IF, Vps LHLD, ELSE,            Vpf LHLD, THEN, A ANA, B DSBC, XCHG, B POP, PSW POP, RET,       SUBR btrk? PLYRV BEHIND + LHLD, H A MOV, L ORA, RZ,             NOWD D LXI, D DAD, PLYRV NOWD + LDA, CMA, 3 ANI, M CMP, RNZ,    HALTNOW JMP,                                                    DECIMAL -->                                                                                                                                                                                                                                                                                                                                                                                     ( PLAYER VELOCITY SET UP )                                      DECIMAL CODE EPLYRV EXX, SOB LDA, A ANA, 0<>, IF,               448 H LXI, 320 D LXI,                                           ELSE, 0 g#m H LXI, nerd+ CALL, nerd+ CALL, M A MOV, 2 CPI,      CY~, IF, 2 A MVI, THEN,                                         RLC, RLC, RLC, A C MOV, 0 B MVI, XCHG, 320 H LXI, B DAD,        RLC, A C MOV, B DAD, D LDAX, 2 CPI, CY~, IF, 2 A MVI, THEN,     RLC, RLC, RLC, A C MOV, 0 B MVI, XCHG, 448 H LXI, B DAD,        RLC, A C MOV, B DAD,                                            THEN, ( MAFLG LDA, A ANA, 0<>, IF, 64 B LXI, B DAD, XCHG, B DAD,XCHG, THEN, ) Vpf SHLD, XCHG, Vps SHLD,                         PLYRV DELTADIST + SHLD, 1 A MVI, O-M STA,                       EXX, NEXT                                                       -->                                                                                                                                                                                             ( INTERRUPT LEVEL JOY MONITOR )                                 F= FDG F= F90 F= Lsd                                            SUBR JOYCHECK <ASSEMBLE O-M LDA, A ANA, RZ,                     P-S LDA, A DCR, 2 CPI, RNC, ( MAKE CERTAIN WE MOVING )          TBDEST TCHGSTAT Y BITX, RNZ, PLYRV DISTANCE 1+ + LDA,           A ANA, RZ,  g;j CALL,                                           .ABS 0<, IF,                                                    0 H LXI, ( NOT IN COAST ZONE )                                  PLYRV DELTADIST + SHLD, COPYDELTS JMP, THEN, .REL               ( JUMP IF SAME DIRECTION AS LAST TIME )                         A C MOV, PLYRV NOWD + LDA, C CMP, FDG JZ,                       -->                                                                                                                                                                                                                                                                                                                             ( REVERSE ENTERED? )                                            PLYRV NOWD + LDA, CMA, 3 ANI, C CMP, F90 JRNZ,                  DIRFLAG LDA, CMA, DIRFLAG STA,                                  r:d CALL, HALTNOW CALL, FDG JMP,                                ( SHOULD WE CHECK FOR 90 ???? )                                 LABEL F90                                                       PLYRV DISTANCE 1+ + LDA, JMLZ CPI, FDG JNC,                     -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ( MORE OF 90 CHECK )                                            DIRFLAG LDA, A ANA, FDG JRNZ, ( ONLY OUTBOUND )                 NOWR Y D LDX, NOWC Y E LDX,                                     KEY OBJSV + LDA, KYOPEN CPI, Lsd JRZ,                           MAFLG LDA, A ANA, 0<>, IF,                                      LABEL Lsd D A MOV, START-ROW CPI, 0=, IF, E A MOV,              START-COL CPI, 0=, IF, C A MOV, A ANA, 0=, IF, PLESC A MVI,     P-S STA,                                                        1 A MVI, PLYRV MYFLAG + STA, HALTNOW JMP, THEN, THEN,           THEN, THEN, noded^ CALL, M A MOV, A ANA, FDG JZ, ( BAD DIR )    C NOWD Y STX, ( VALID - ESTABLISH IT )                          NEWPATH CALL, ( CHANGE ALL INNER PARAMETERS OF THANG )          btrk? CALL, ( CHECK FOR BACKTRACK MODE )                        FDG JMP, ( GO HOME, CHANGE ROT )                                -->                                                                                                                             LABEL FDG DIRFLAG LDA, A ANA, 0<>, IF, PVD CALL,                ELSE, ( ONLY WORRY ABOUT REVEALER OUTBOUND )                    NOWR Y D LDX, NOWC Y E LDX, NOWD Y C LDX, noder^ CALL,          M A MOV, DISTANCE 1+ Y SUBX, 0 D LXI, .ABS 0>=, IF,             PVD CALL, THEN, .REL THEN,                                      PLYRV DELTADIST + LHLD, PLYRV DELTADIST + SDED,                 A ANA, D DSBC, 0<>, IF, XCHG, COPYDELTS CALL, THEN,             NOWD Y E LDX, 0 D MVI, 0 ROTN H LXI, D DAD, M A MOV,            A VANGLE Y STX, RET, ASSEMBLE>                                  -->                                                                                                                                                                                                                                                                                                                                                                                                                                                             ( PLAYER INTERRUPT ROUTINE )                                    SUBR PL-M JOYCHECK CALL, Pac CALL, PILOTC CALL,                 MS-F CALL, ( CHECK MAGIC BUTTON )                               SMTMR LHLD, H A MOV, L ORA, RZ,                                 H DCX, H A MOV, L ORA, 0=, IF, SMARTS H LXI, M INR,             ASSH H LXI, M INR, M A MOV, 9 CPI, CY~, IF, SOB STA, THEN,      SMTMRV LHLD, THEN, SMTMR SHLD, RET,                             DECIMAL -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ( CHECK FOR PLAYER ESCAPING INTO EXIT CHAMBER )                 F= etw                                                          SUBR ESCAPE? <ASSEMBLE                                          KEY OBJSV + LDA, KYOPEN CPI, etw JRZ,                           MAFLG LDA, A ANA, RZ,                                           LABEL etw PLYRV NOWC + LDA, START-COL CPI, RNZ,                 PLYRV NOWR + LDA, START-ROW CPI, RNZ,                           ( WE WIN! - SHAZAM! )                                           PLESC A MVI, P-S STA,                                           RET, ASSEMBLE>                                                  HEX ( CHECK FOR REVENGE AGAINST JAWS )                          SUBR RJAW? XC? IFTRUE                                           JAWSF LDA, 1 CPI, RNZ, JAWSV X LXIX, 0200 B LXI,                PRXC CALL, RZ, 2 A MVI, JAWSF STA, IFEND RET, DECIMAL           -->                                                                                                                             ( PLAYER TASK JOYSTICK CHECKER )                                SUBR g:jc                                                       g;j CALL, 0 H LXI, RM,                                          A C MOV, PLYRV NOWR + LDA, A D MOV, PLYRV NOWC + LDA, A E MOV,  noded^ CALL, M A MOV, A ANA, 0=, IF, C A MOV,                   A ANA, 0=, IF, ESCAPE? CALL, 0 H LXI, P-S LDA, PLESC CPI, RZ,   THEN,                                                           PLYRV NOWD + LDA, A C MOV, noded^ CALL, M A MOV, A ANA,         THEN, 0 H LXI, RZ, C A MOV, PLYRV NOWD + STA,                   A E MOV, 0 D MVI, 0 ROTN H LXI, D DAD, M A MOV,                 PLYRV VANGLE + STA,                                             btrk? CALL, 1 H LXI, RET,                                                                                                       CODE G:JC B PUSH, g:jc CALL, B POP, H PUSH, NEXT                -->                                                                                                                             ( CHECK PLAYER INTERCEPT WITH HOSTAGES )                        ( 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 )                 F= C:UH F= C:UL                                                 SUBR C:U:H <ASSEMBLE                                            LABEL C:UH                                                      M E MOV, H INX, M D MOV, H INX, D A MOV, E ORA,                 RZ, D PUSH, X POPX,                                             OBJSV X A LDX, HSFREE CPI, C:UL JRZ, HSATM CPI, C:UH JRNZ,      MAFLG LDA, A ANA, C:UH JRZ,                                     LABEL C:UL PRXC CALL, RNZ, C:UH JMPR,                           ASSEMBLE>                                                       -->                                                                                                                             ( CHECK PLAYER INTERCEPT WITH OTHER VECTORS )                   HEX                                                             SUBR P:I:C FREEZE? CALL, EXX, 0=, IF,                           P-S LDA, A DCR, 2 CPI, CY, IF,                                  0200 B LXI, PX-M CALL, 0<>, IF,                                 LRDIST CALL, 8 CPI, CY, IF,                                     1 A MVI, MYFLAG PLYRV + STA, FREEZE CALL,                       PLDOA A MVI, P-S STA, EXX, RET, THEN, THEN, THEN, THEN,         0 HOSTAB H LXI, 0202 B LXI, C:U:H CALL,                         0<>, IF, 1 MYFLAG X MVIX, HSATP OBJSV X MVIX,                   X PUSHX, Y PUSHX, H POP, D POP, FUZH CALL,                      Hctr H LXI, M INR, HALTNOW CALL, THEN,                          MAFLG LDA, A ANA, RJAW? CNZ, TR:CHK CALL, EXX, RET,             DECIMAL -->                                                                                                                                                                                     ( SETVEL, ETC )                                                 HEX CODE SETVEL H POP, PLYRV DELTADIST + SHLD, NEXT             ( CODE BTRK? btrk? CALL, NEXT )                                 CODE HALTER HALTNOW CALL, NEXT                                  CODE PERZAP Y PUSHX, vaddr LIYD, PLYRV VPERINX + LDA,           2 ANI, CH-PX CALL, Y POPX, NEXT                                 CODE WALKER B PUSH, Y PUSHX, vaddr LIYD,                        NOWR Y D LDX, NOWC Y E LDX, NOWD Y C LDX, noder^ CALL,          M A MOV, 6 CPI, CY~, IF, walk-s CALL, THEN,                     Y POPX, B POP, NEXT                                             DECIMAL -->                                                                                                                                                                                                                                                                                                                                                                                     