home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1983 June / Antic_Vol_2_No_3_June_1983.atr / upndown.txt < prev   
Text File  |  2021-02-19  |  5KB  |  1 lines

  1. ¢;SET VERTICAL BLANK VECTOR¢SETVBV  EQU    $E45C¢;VERTICAL BLANK TEXT VECTOR¢XITVBV  EQU    $E462¢;¢;  --------------------------------¢;   ZERO PAGE REGISTERS VARIABLES¢;  --------------------------------¢;¢     ORG   $CB¢VAR1  DB    0¢VAR2  DB    0¢VAR3  DB    0¢ADD1  DS    2¢ADD2  DS    2¢;¢;¢;¢;  --------------------------------¢;   PROGRAM STORAGE LOCATIONS¢;  --------------------------------¢;¢     ORG   $600¢PVERT    DB   0,0,0,0¢MVERT    DB   0,0,0,0¢POLDVERT DB   0,0,0,0¢MOLDVERT DB   0,0,0,0¢;¢;¢;PLAYER TABLE ADDRESS TABLE¢PLAYER¢         DB   0,0¢         DB   0,0¢         DB   0,0¢         DB   0,0¢;¢;MISSILE TABLE ADDRESS TABLE¢MISSILE¢         DB   0,0¢;¢;ON/OFF SWITCH¢SWITCH   DB   0¢;¢;PLAYER IMAGE ADDRESS TABLE¢IMAGE¢         DW   IMAGES0¢         DW   IMAGE1¢         DW   IMAGE2¢         DW   IMAGE3¢;¢;IMAGE DEFINITION TABLE¢;¢; IMAGES¢IMAGE0   DB   0,0,0,0,0¢         DB   0,0,0,0,0¢IMAGE1   DB   0,0,0,0,0¢         DB   0,0,0,0,0¢IMAGE2   DB   0,0,0,0,0¢         DB   0,0,0,0,0¢IMAGE3   DB   0,0,0,0,0¢         DB   0,0,0,0,0¢;¢;PLAYER SIZE TABLE¢PSIZE    DB   0,0,0,0¢;  -------------------------------¢;   INITIALIZE THE PM ROUTINE¢;  -------------------------------¢;¢; THIS IS THE BASIC ENTRY POINT¢         PLA¢;¢; SETUP THE VERTICAL BLANK INTERUPT¢; JUMP VECTOR¢         LDX  #HIGH VB¢         LDY  #LOW VB¢         LDA  #7¢         JSR  SETVBV¢         RTS¢;¢;  -------------------------------¢;   VERTICAL BLANK ROUTINE  (PM)¢;  -------------------------------¢;¢VB¢      LDA  SWITCH ;CHECK IF THE SWITCH IS ON¢      BNE  VB1    ;IF NOT THEN JUST RETURN¢      JSR  MPLOT  ;CALL THE MISSILE PLOT ROUTINE¢      JSR  PPLOT  ;CALL THE PLAYER PLOT ROUTINE¢VB1   JMP  XITVBV¢;¢;¢; THIS IS THE ROUTINE TO PLOT THE¢; PLAYERS¢PPLOT:¢      LDA  #3  ;SET THE PLAYER COUNT¢      STA  VAR1 ; AND SAVE IT IN VAR1¢PPLOT0:¢      LDX  VAR1 ;GET THE CURRENT PLAYER NUMBER¢      LDA PVERT,X ;GET THE NEW Y¢      COOR¢      STA  VAR3 ; AND SAVE IT IN VAR3¢      LDY  POLDVERT,X ;GET THE OLD Y COOR¢      STA  POLDVERT,X ;STORE THE NEW Y COOR AS THE OLD¢      LDA  PSIZE,X ;GET THE SIZE OF THE CURRENT PLAYER¢      STA  VAR2   ; AND STORE IT IN VAR2¢      TXA       ;MULTIPLY THE PLAYER NUMBER¢      ASL  A    ; BY 2¢      TAX¢      LDA  PLAYER,X  ;MOVE THE ADDRESS OF THE PLAYER¢      STA  ADD1  ; TO THE TEMPORARY REGISTER (ADD1)¢      LDA  PLAYER+1,X¢      STA  ADD1+1¢      LDA  IMAGE,X  ;MOVE THE ADDRESS OF THE IMAGE¢      STA  ADD2  ; TO THE TEMPORARY REGISTER (ADD2)¢      LDA  IMAGE+1,X¢      STA  ADD2+1¢; THIS SECTION OF CODE IS USED¢;TO ERASE THE PLAYER FROM HIS¢;OLD POSITION¢      LDX  VAR2   ;LOAD X WITH THE SIZE OF THE PLAYER¢      LDA  #0¢PPLOT1¢      STA  (ADD1),Y ;STORE ZERO¢      DEY          ;DECREMENT THE BYTE POSITION COUNTER¢      CPY  #$FF¢      BEQ  PPLOT2  ;IF EQUAL WE'VE HIT THE TOP OF THE PLAYER¢      DEX          ;DECREMENT THE SIZE COUNTER¢      BPL  PPLOT1  ;IF STILL POSITIVE ZERO THE NEXT BYTE¢;¢;THIS PART OF THE CODE IS USED TO¢;PLOT THE PLAYER 'N HIS NEW LOCATION¢PPLOT2¢      LDY  VAR2  ;GET THE IMAGE OFF¢      SET¢      LDA  (ADD2),Y  ;GET THE NEXT IMAGE BYTE¢      LDY  VAR3   ;GET THE PLAYER TABLE OFFSET¢      STA  (ADD1),Y  ;PUT THE IMAGE BYTE IN THE PLAYER TABLE¢      DEY      ;DECREMENT THE PLAYER TABLE OFFSET¢      STY  VAR3   ;STORE THE NEW PLAYER TABLE OFFSET¢      CPY  #$FF   ;IF THE NEXT BYTE WOULD BE OFF THE END¢               ;OF THE PLAYER THEN EXIT THE PLOT LOOP¢      BEQ  PPLOT3¢      DEC  VAR2   ;DECREMENT THE IMAGE OFFSET¢      BPL  PPLOT2  ;IF WE HAVE NOT REACHED THE END THEN¢                  ;LOOP AGAIN TO PLOT ANOTHER IMAGE BYTE¢PPLOT3¢      DEC  VAR1   ;DECREMENT THE PLAYER COUNT¢      BPL  PPLOT0  ;IF THERE IS STILL ANOTHER PLAYER THEN¢                  ;LOOP AGAIN TO PLOT THE NEXT PLAYER¢      RTS¢;¢;¢MPLOT¢      LDX  #3  ;LOAD X WITH THE MISSILE COUNT¢      LDA  MISSILE   ;PLACE THE ADDRESS OF THE MISSILE TABLE¢                   ;IN THE TEMPORARY ADDRESS REGISTER¢      STA  ADD1¢      LDA  MISSILE+1¢      STA  ADD1+1¢MPLOT0¢      LDY  MOLDVERT,X ;GET THE OLD MISSILE LOCATION¢      LDA  OFFTABLE,X ;TURN THE OLD IMAGE OFF¢      AND  (ADD1),Y¢      STA  (ADD1),Y¢      LDY  MVERT,X  ;GET THE NEW MISSILE LOCATION¢      LDA  ONTABLE,X  ;TURN THE NEW MISSILE IMAGE ON¢      ORA  (ADD1),Y¢      STA  (ADD1),Y¢      TYA             ;MOVE THE NEW LOCATION TO THE OLD¢                      ;MISSILE LOCATION TABLE FOR NEXT TIME¢      STA  MOLDVERT,X¢      DEX             ;DECREMENT THE MISSILE COUNTER¢      BPL  MPLOT0     ;IF THERE IS STILL ANOTHER MISSILE¢                   ;THEN LOOP TO PLOT THE NEXT MISSILE¢      RTS¢;¢ONTABLE  DB $01,$0C,$20,$C0¢OFFTABLE DB $FC,$F2,$CF,$2F¢;¢;¢;  --------------------------------¢;   DUMMY ROUTINE   (IGNORE)¢;  --------------------------------¢;¢START¢      JMP   ($0A)¢      END   START¢