| 
;
;
         IF      L.BLST = OFF     ;-------------------------------------------
         LIST    -L               ;--  GBLAST  -------------------------------
         ENDIF                    ;-------------------------------------------
;
;
;
;
;  HANDLE BLASTER GAME LOGIC
;  =========================
;
         SETDP   $C8
;        =====   ===
;
GBLAST   LDA     ABORT            ;  GAME ABORTED ?
         LBNE    DBLST3           ;  .
;
         LDA     BLSTMR           ;  DECREMENT BLASTER INHIBIT TIMER
         BEQ     BLST1            ;  .    TIMER = ZERO ?
;
;==========================================================================JJH
;        DECA                     ;  CODE DELETED - REV. B CHANGES   ======JJH
;        STA     BLSTMR           ;  .                               ======JJH
;==========================================================================JJH
;
;==========================================================================JJH
         DEC     BLSTMR           ;  CODE ADDED - REV. B CHANGES     ======JJH
;==========================================================================JJH
;
;
BLST1    CLR     BLSTYD           ;  CLEAR DISPLACEMENT VALUES
         CLR     BLSTXD           ;  .
;
         LDA     POT1             ;  HANDLE JOYSTICK ACTIVITY
         BEQ     BLST3            ;  .    UP / DOWN MOTION ?
         BMI     BLST2            ;  .    .    MOVE DOWN ?
;
         LDA     #$02             ;  .    .    MOVE BLASTER UP
         STA     BLSTYD           ;  .    .    .
         BRA     BLST3            ;  .    .    .
;
BLST2    LDA     #$FC             ;  .    .    MOVE BLASTER DOWN
         STA     BLSTYD           ;  .    .    .
;
BLST3    LDA     POT0             ;  .    LEFT / RIGHT MOTION ?
         BEQ     BLST7            ;  .    .    MOVE LEFT ?
         BMI     BLST5            ;  .    .    .
;
BLST4    LDA     #$03             ;  .    MOVE BLASTER RIGHT
         BRA     BLST6            ;  .    .
;
BLST5    LDA     #$FD             ;  .    MOVE BLASTER LEFT
BLST6    STA     BLSTXD           ;  .    .
;
;
BLST7    LDA     #BIRDS           ;  WAR-BIRD SHIELD(S) BLOCKING MOTION ?
         STA     TEMP1            ;  .
         LDU     #BRDTBL          ;  .
;
BLST8    LDA     BRDFLG,U         ;  .    WAR-BIRD IN SHIELD MODE ?
         BMI     BLST10           ;  .    .
;
BLST9    LEAU    BRDLEN,U         ;  .    TRY NEXT ENTRY
         DEC     TEMP1            ;  .    .
         BNE     BLST8            ;  .    .
         BRA     BLST11           ;  .    UPDATE BLASTER POSITION
;
BLST10   LDD     BLSTYX           ;  .    WAR-BIRD SHIELD FOUND
         ADDA    BLSTYD           ;  .    .    SET-UP NEXT BLASTER POSITION
         ADDB    BLSTXD           ;  .    .    .
         TFR     D,X              ;  .    .    .
         LDY     BRDYX,U          ;  .    .    SET-UP SHIELD POSITION
         LDD     BRDBOX,U         ;  .    .    SET-UP COLLISION BOX
         JSR     BXTEST           ;  .    .    PERFORM BOX TEST
         BCC     BLST9            ;  .    .    .
;
         CLR     BLSTYD           ;  .    WAR-BIRD SHIELD BLOCKING MOTION
         CLR     BLSTXD           ;  .    .    RESET POSITION UPDATE INFO
         BRA     BLST9            ;  .    .    .
;
;
BLST11   LDA     BLSTY            ;  UPDATE BLASTER POSITIONING
         ADDA    BLSTYD           ;  .    UPDATE 'Y' VALUE
         STA     BLSTY            ;  .    .
         CLR     BLSTY + 1        ;  .    .
;
         LDB     BLSTX            ;  .    UPDATE 'X' VALUE
         ADDB    BLSTXD           ;  .    .
         STB     BLSTX            ;  .    .
         CLR     BLSTX + 1        ;  .    .
;
         CMPA    #LLIMIT          ;  .    CHECK FOR MOTION LIMITS
         BGE     BLST12           ;  .    .    CHECK FOR LOWER-LIMIT
         LDA     #LLIMIT          ;  .    .    .    SET LOWER ROAD-WAY LIMIT
         BRA     BLST14           ;  .    .    .    .
;
BLST12   LDB     KILFLG           ;  .    .    CHECK FOR UPPER-LIMIT
         BNE     BLST44           ;  .    .    .    KILLER SEQUENCE ?
         LDB     ACTIVE           ;  .    .    .    GAME ACTIVITY PENDING ?
         BEQ     BLST13           ;  .    .    .    .
;
         CMPA    #ULIMIT          ;  .    .    .    PENDING ACTIVITY
         BLE     BLST14           ;  .    .    .    .
         LDA     #ULIMIT          ;  .    .    .    .    SET UPPER LIMIT
         BRA     BLST14           ;  .    .    .    .    .
;
BLST13   CMPA    #GLIMIT          ;  .    .    .    NO FURTHER ACTIVITY
         BLE     BLST14           ;  .    .    .    .
         LDA     #GLIMIT          ;  .    .    .    .    SET UPPER LIMIT
         BRA     BLST14           ;  .    .    .    .    .
;
BLST44   CMPA    #KLIMIT          ;  .    .    .    KILLER SEQUENCE
         BLE     BLST14           ;  .    .    .    .
         LDA     #KLIMIT          ;  .    .    .    .
;
BLST14   STA     BLSTY            ;  .    .    SET CURRENT 'Y' POSITION
         STA     BLSTYX           ;  .    .    .
;
;
         LDX     #CR.LIM          ;  .    UPDATE PERSPECTIVE INFO
         JSR     PRSPCT           ;  .    .    CALCULATE NEW POINTER
         STA     TEMP1            ;  .    .    .
         STB     BLSTR            ;  .    .    SAVE RIGHT WALL LIMIT
;
         LDX     #CL.LIM          ;  .    SET LEFT WALL LIMIT
         LDB     A,X              ;  .    .
         STB     BLSTL            ;  .    .
;
         ADDA    #BLBIAS          ;  .    SET BLASTER SIZE
         LDX     #G.SIZ           ;  .    .    BIAS SIZE VS. DEPTH
         LDB     A,X              ;  .    .
         STB     BLSTSZ           ;  .    .
;
         LDA     TEMP1            ;  .    SET COLLISION BOX
         LSLA                     ;  .    .
         LDX     #BL.BOX          ;  .    .
         LDX     A,X              ;  .    .
         STX     BLSTBX           ;  .    .
;
;
         LDA     BLSTX            ;  .    CHECK FOR MOTION LIMITS
         CMPA    BLSTR            ;  .    .    CHECK FOR RIGHT BORDER
         BLE     BLST15           ;  .    .    .
         LDA     BLSTR            ;  .    .    .
         BRA     BLST16           ;  .    .    .
;
BLST15   CMPA    BLSTL            ;  .    .    CHECK FOR LEFT BORDER
         BGE     BLST16           ;  .    .    .
         LDA     BLSTL            ;  .    .    .
BLST16   STA     BLSTX            ;  .    .    .
         STA     BLSTYX + 1       ;  .    .    .
;
;
         PSHS    DP               ;  SET "DP" TO I/O
         LDB     #$D0             ;  .
         TFR     B,DP             ;  .
         SETDP   $D0              ;  .
;
         LDX     #CHRLIM          ;  BLASTER HIDDEN BY WALL ?
         LDB     TEMP1            ;  .    RIGHT WALL ?
         CMPA    B,X              ;  .    .
         BGT     DBLST1           ;  .    .
         LDX     #CHLLIM          ;  .    LEFT WALL ?
         CMPA    B,X              ;  .    .
         BLT     DBLST1           ;  .    .
;
;
DBLAST   JSR     INT3Q            ;  DRAW BLASTER (VISIBLE ON ROADWAY
         BRA     DBLST2           ;  .
;
DBLST1   JSR     INT2Q            ;  DRAW BLASTER (HIDDEN BY WALL)
;
DBLST2   LDX     BLSTYX           ;  DRAW VECTOR STRING
         LDU     #XBLAST          ;  .
         LDA     BLSTSZ           ;  .
         JSR     SUPRDF           ;  .
;
         PULS    DP               ;  RETURN TO CALLER
DBLST3   PULS    PC               ;  .
;
;
         IF      L.BLST = OFF     ;-------------------------------------------
         LIST    *                ;-------------------------------------------
         ENDIF                    ;-------------------------------------------
 |