nathanriggs 9b12b6fd9b HOUSEKEEPING
- getting ready for major changes for 0.6.0.
- be sure to download the 0.5.0 release to ensure proper functionality, as these rountines will not work together in the SRC or BIN folder during the transition
- Beginning to significantly alter documentation
2019-12-17 17:19:24 -05:00

149 lines
3.4 KiB
NASM

]ESIZE EQU VARTAB
]XIDX EQU VARTAB+2
]YIDX EQU VARTAB+4
]MCAND EQU VARTAB+6
]MLIER EQU VARTAB+8
]PBAK EQU VARTAB+10
]XLEN EQU VARTAB+12
]YLEN EQU VARTAB+14
]PROD EQU VARTAB+16
APUT162
PLA
TAX
PLA
TAY
PLA
STA ]YIDX
PLA
STA ]YIDX+1
PLA
STA ]XIDX
PLA
STA ]XIDX+1
PLA
STA ADDR4
PLA
STA ADDR4+1
PLA
STA ADDR3
PLA
STA ADDR3+1
TYA
PHA
TXA
PHA
LDY #4
LDA (ADDR4),Y
STA ]ESIZE
LDY #0
LDA (ADDR4),Y
STA ]XLEN
LDY #1
LDA (ADDR4),Y
STA ]XLEN+1
LDY #2
LDA (ADDR4),Y
STA ]YLEN
LDY #3
LDA (ADDR4),Y
STA ]YLEN+1
LDY #0
LDA ]YIDX
STA ]MLIER
LDA ]YIDX+1
STA ]MLIER+1
LDA ]YLEN
STA ]MCAND
LDA ]YLEN+1
STA ]MCAND+1
LDA #00
STA ]PROD
STA ]PROD+1
STA ]PROD+2
STA ]PROD+3
LDX #$10
:SHIFT_R
LSR ]MLIER+1
ROR ]MLIER
BCC :ROT_R
LDA ]PROD+2
CLC
ADC ]MCAND
STA ]PROD+2
LDA ]PROD+3
ADC ]MCAND+1
:ROT_R
ROR
STA ]PROD+3
ROR ]PROD+2
ROR ]PROD+1
ROR ]PROD
DEX
BNE :SHIFT_R
LDA ]PROD
STA ]PBAK
LDA ]PROD+1
STA ]PBAK+1
LDA ]XIDX
STA ]MLIER
LDA ]XIDX+1
STA ]MLIER+1
LDA ]ESIZE
STA ]MCAND
LDA #0
STA ]MCAND+1
STA ]PROD
STA ]PROD+1
STA ]PROD+2
STA ]PROD+3
LDX #$10
:SHIFTR LSR ]MLIER+1
ROR ]MLIER
BCC :ROTR
LDA ]PROD+2
CLC
ADC ]MCAND
STA ]PROD+2
LDA ]PROD+3
ADC ]MCAND+1
:ROTR
ROR
STA ]PROD+3
ROR ]PROD+2
ROR ]PROD+1
ROR ]PROD
DEX
BNE :SHIFTR
CLC
LDA ]PROD
ADC ]PBAK
STA ]PROD
LDA ]PROD+1
ADC ]PBAK+1
STA ]PROD+1
CLC
LDA ]PROD
ADC #5
STA ]PROD
LDA ]PROD+1
ADC #0
STA ]PROD+1
CLC
LDA ]PROD
ADC ADDR4
STA ADDR2 ; ELEMENT ADDRESS
LDA ]PROD+1
ADC ADDR4+1
STA ADDR2+1
LDY #0
:CLP
LDA (ADDR3),Y
STA (ADDR2),Y
INY
CPY ]ESIZE
BNE :CLP
LDY ADDR2+1
LDX ADDR2
LDA ]ESIZE
RTS