Sparse Invaders Source - Macros.txt

From Retrosoftware

(Difference between revisions)
Jump to: navigation, search

Neilb (Talk | contribs)
(New page: == Sparse Invaders Source - Macros.txt == ;------------------------------------------------------------------------------- ; Macros ... ; Written by Neil Beresford. ; ...)
Next diff →

Current revision

Sparse Invaders Source - Macros.txt

   ;-------------------------------------------------------------------------------
   ;  Macros ...
   ;  Written by Neil Beresford.
   ;
   ;  Copyright 2008,2009 Neil Beresford
   ;
   ;    This file is part of Sparse Invaders.
   ;    Sparse Invaders is free software: you can redistribute it and/or modify
   ;    it under the terms of the GNU General Public License as published by
   ;    the Free Software Foundation, either version 3 of the License, or
   ;    (at your option) any later version.
   ;
   ;    Sparse Invaders is distributed in the hope that it will be useful,
   ;    but WITHOUT ANY WARRANTY; without even the implied warranty of
   ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   ;    GNU General Public License for more details.
   ;
   ;    You should have received a copy of the GNU General Public License
   ;    along with Sparse Invaders.  If not, see <http://www.gnu.org/licenses/>.
   ;
   ;
   ;-------------------------------------------------------------------------------
   
   ;-------------------------------------------------------------------------------
   ; Mode change ...
   ; A trashed 
   ;-------------------------------------------------------------------------------
   .macro MODE
      LDA #$16
      JSR oswrch
      LDA _1
      JSR oswrch
   .macend
   
   ;-------------------------------------------------------------------------------
   
   .macro CURSOROFF 
      LDA #10
      STA $FE00
      LDA #32
      STA $FE01
   .macend
   
   
   ;-------------------------------------------------------------------------------
   .macro WAIT_VBLANK
      LDA #19
      jsr osbyte
   .macend
   
   ;-------------------------------------------------------------------------------
   ; PushRegs
   ;
   ;-------------------------------------------------------------------------------
   .macro PUSHREGS
      PHA            ; preserve the registers
      TXA
      PHA
      TYA
      PHA
   .macend
   
   ;-------------------------------------------------------------------------------
   ; PopRegs
   ;
   ;-------------------------------------------------------------------------------
   .macro POPREGS
      PLA            ; restore the regs
      TAY
      PLA
      TAX
      PLA
   .macend
   
   
   ;-------------------------------------------------------------------------------
   ;-------------------------------------------------------------------------------
   .macro CHECK_KEY  ; checks the key, trashes the regs ...
      LDA  #$81
      LDX  #0
      LDY  #0
      JSR  osbyte
      CPY  #0
   .macend
   
   
   ;-------------------------------------------------------------------------------
   ; Change background colour
   ;  _1 Colour to change to 
   ;  all regs trashed...
   ;
   ;-------------------------------------------------------------------------------
   .macro BORDERCOLOUR
      lda #155
      ldx #_1
      jsr $fff4
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Store16bit - _1 Value to be stored
   ;              _2 Place to store
   ;   A trashed
   ;
   ;-------------------------------------------------------------------------------
   .macro STORE16BIT
      LDA _1
      STA _2
      LDA _1+1
      STA _2+1
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Add16bit - _1 Value 1
   ;            _2 Value 2
   ;            _3 Result
   ;   A trashed and also carry
   ;-------------------------------------------------------------------------------
   .macro ADD16BIT
      CLC             ;Ensure carry is clear
      LDA _1+0       ;Add the two least significant bytes
      ADC _2+0
      STA _3+0       ;... and store the result
      LDA _1+1       ;Add the two most significant bytes
      ADC _2+1       ;... and any propagated carry bit
      STA _3+1       ;... and store the result
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Sub16bit - _1 Value 1
   ;            _2 Value 2
   ;            _3 Result
   ;   A trashed and also carry
   ;-------------------------------------------------------------------------------
   .macro SUB16BIT
      SEC             ;Ensure carry is clear
      LDA _1+0       ;Sub the two most significant bytes
      SBC _2+0
      STA _3+0       ;... and store the result
      LDA _1+1       ;sub the two least significant bytes
      SBC _2+1       ;... and any propagated carry bit
      STA _3+1       ;... and store the result
   .macend
   
   
   ;-------------------------------------------------------------------------------
   ; Multiply by 8 the 16bit contents in
   ;
   ;
   ;-------------------------------------------------------------------------------
   .macro MUL8
      CLC
      LDA _1
      ASL
      ROL _1+1
      ASL
      ROL _1+1
      ASL
      ROL _1+1
      STA _1
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Multiply by 6  A and store in _1
   ;
   ;
   ;-------------------------------------------------------------------------------
   .macro MUL6
      ASL
      STA  _1
      ASL
      CLC
      ADC  _1
      STA  _1
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Multiply by 3  A and store in _1
   ;
   ;
   ;-------------------------------------------------------------------------------
   .macro MUL3
      STA  _1
      ASL
      CLC
      ADC  _1
      STA  _1
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Multiply by 5  A and store in _1
   ;
   ;
   ;-------------------------------------------------------------------------------
   .macro MUL5
      STA  _1
      ASL
      ASL
      CLC
      ADC  _1
      STA  _1
   .macend
   
   
   
   
   
   ;-------------------------------------------------------------------------------
   ; Multiply by 32 the 16bit contents in
   ;
   ;
   ;-------------------------------------------------------------------------------
   .macro MUL32
      CLC
      LDA _1
      ASL
      ROL _1+1
      ASL
      ROL _1+1
      ASL
      ROL _1+1
      ASL
      ROL _1+1
      ASL
      ROL _1+1
      STA _1
   .macend
   
   ;-------------------------------------------------------------------------------
   ; Divide by 6  A and store in _1
   ;
   ;
   ;-------------------------------------------------------------------------------
   .macro DIV6
      LSR
      STA  _1
      LSR
      SEC
      SBC  _1
      STA  _1
   .macend
   
   
   ;-------------------------------------------------------------------------------
   ; Multipy 8bit by 8, then add to 16bit address
   ; uses scratch reg temp($76) for uppper 8bits in
   ; multiply by 8
   ;
   ;-------------------------------------------------------------------------------
   .macro MUL8ADDTOADDRESS
      LDA  #0       ; multiply by 8
      STA  TEMP
      CLC
      ASL  _1
      ROL  TEMP
      ASL  _1
      ROL  TEMP
      ASL  _1
      ROL  TEMP
      LDA  _1       ; now the addition to the 16bit   
      CLC
      ADC  _2
      STA  _2
      LDA  TEMP
      ADC  _2+1
      STA  _2+1
   .macend  
   
   
   ;-------------------------------------------------------------------------------
   ;  Add A to 16bit value ...
   ;-------------------------------------------------------------------------------
   .macro ADDTO16BIT
      
      CLC
      ADC  _1
      STA  _1
      LDA  _1+1
      ADC  #0   
      STA  _1+1
   
   .macend
   
   
   
   ;-------------------------------------------------------------------------------
   ; End of Macros
   ;-------------------------------------------------------------------------------