A Bit of Vectrex History
From RoadsideThoughts ...
Home >> A Bit of Vectrex History >> Dark Tower >> FRGMNT.DRK - Rev. AIndex...

FRGMNT.DRK - Rev. A

The top most file for Dark Tower:

DRKTWR.ASM


The LINKed files:



;
;
         IF      L.FRAG = OFF     ;-------------------------------------------
         LIST    -L               ;--  FRGMNT  -------------------------------
         ENDIF                    ;-------------------------------------------
;
;
;
;
;  HANDLE EXPLOSION FRAGMENTS
;  ==========================
;
         SETDP   $C8
;        =====   ===
;
FRGMNT   PSHS    DP               ;  SAVE ENTRY VALUES
         LDA     #$C8             ;  .    SETP 'DP' = RAM
         TFR     A,DP             ;  .    .
;
         CLR     RFLAG            ;  RESET DRAW REVERSE FLAG
         CLR     EXPEND           ;  RESET EXPLOSION PENDING FLAG
;
         LDU     #EXPTBL          ;  HANDLE FRAGMENT MOVEMENT
         LDA     #EXPCNT          ;  .
         STA     TEMP1            ;  .
;
FRAG1    LDA     EXPFLG,U         ;  .    IS ENTRY ACTIVE ?
         BEQ     FRAG3            ;  .    .
;
         DEC     EXPTMR,U         ;  .    DECREMENT EXPLOSION TIMER
         BEQ     FRAG2            ;  .    .
;
         LDA     EXPEND           ;  .    SET EXPLOSION PENDING FLAG
         ORA     EXPTMR,U         ;  .    .
         STA     EXPEND           ;  .    .
;
         JSR     MOVOBJ           ;  .    MOVE FRAGMENT ALONG 'Y / X' AXIS
         BVS     FRAG2            ;  .    .    HAS FRAGMENT MOVED OFF-SCREEN ?
         BCS     FRAG2            ;  .    .    .
;
         PSHS    U                ;  ROTATE FRAGMENT
         LDA     EXPROT,U         ;  .    FETCH ROTATION VALUE
         ADDA    EXPRAT,U         ;  .    .
         ANDA    #$3F             ;  .    .
         STA     EXPROT,U         ;  .    .
         LDX     EXPTR,U          ;  .    SET SOURCE POINTER
         LDU     #RFLAME          ;  .    SET DESTINATION POINTER
         LDB     X+               ;  .    FETCH NUMBER OF VECTORS
         STB     U+               ;  .    .
         ANDB    #$3F             ;  .    .
         JSR     DROT             ;  .    ROTATE FRAGMENT
         PULS    U                ;  .
;
         PSHS    DP               ;  DISPLAY FRAGMENT SEED
         LDA     #$D0             ;  .    SET 'DP' = I/O
         TFR     A,DP             ;  .    .
         SETDP   $D0              ;  .    .
;
         LDX     #RFLAME          ;  .    DISPLAY FRAGMENT
         LDA     EXPTMR,U         ;  .    .    SET INTENSITY
         ADDA    #$30             ;  .    .    .
         LDB     EXPSIZ,U         ;  .    .    SET SIZE
         LEAY    EXPYW,U          ;  .    .    SET ABSOLUTE POSITION
         JSR     WDIFFY           ;  .    .
;
         PULS    DP               ;  .    SET 'DP' = RAM
         BRA     FRAG3            ;  .    .
;
;
         SETDP   $C8
;
FRAG2    CLR     EXPFLG,U         ;  RESET CURRENT FRAGMENT ENTRY
;
FRAG3    LEAU    EXPLEN,U         ;  BUMP TO NEXT ENTRY
         DEC     TEMP1            ;  .
         BNE     FRAG1            ;  .
;
         PULS    DP,PC            ;  RETURN TO CALLER
;
         IF      L.FRAG = OFF     ;-------------------------------------------
         LIST    *                ;-------------------------------------------
         ENDIF                    ;-------------------------------------------





 

Copyright 2024
All Rights Reserved

Thank you for visiting our website.

In closing, please keep in mind that we can not guarantee the accuracy or timeliness of the information on this website, so use with care. We encourage you to double-check the information that is critical to you.

If you've found an error or have additional information that you would like to share, please don't hesitate to write: Click here to contact us.

This page was last modified/updated: 04 Feb 2024