AppleIIAsm-Collection/source/d3_arrays/T.MIN.SUB.ADIM162.ASM
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

138 lines
3.1 KiB
NASM

]AXSIZE EQU WPAR1
]AYSIZE EQU WPAR2
]ELEN EQU BPAR1
]FILL EQU BPAR2
]ADDR EQU WPAR3
]ADDR2 EQU ADDR1
]PROD EQU VARTAB
]AXBAK EQU VARTAB+4
]AYBAK EQU VARTAB+6
]MLIER EQU VARTAB+8
]MCAND EQU VARTAB+10
ADIM162
LDA ]AYSIZE
STA ]AYBAK
STA ]MCAND
LDA ]AYSIZE+1
STA ]AYBAK+1
STA ]MCAND+1
LDA ]AXSIZE
STA ]AXBAK
STA ]MLIER
LDA ]AXSIZE+1
STA ]AXBAK+1
STA ]MLIER+1
LDA ]ADDR
STA ]ADDR2 ; LOBYTE
LDA ]ADDR+1
STA ]ADDR2+1
LDA #0
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 ]ELEN
STA ]MCAND
LDA #0
STA ]MCAND+1 ;
LDA ]PROD
STA ]MLIER
LDA ]PROD+1
STA ]MLIER+1
LDA #0
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 #5
STA ]PROD
LDA ]PROD+1
ADC #0
STA ]PROD+1
LDA ]FILL
LDX ]PROD+1
BEQ :PART
LDY #0
:FULL
STA (]ADDR),Y
INY
BNE :FULL
INC ]ADDR+1
DEX
BNE :FULL
:PART
LDX ]PROD
BEQ :MFEXIT
LDY #0
:PARTLP
STA (]ADDR),Y
INY
DEX
BNE :PARTLP
:MFEXIT
LDY #0
LDA ]AXBAK
STA (]ADDR2),Y
INY
LDA ]AXBAK+1
STA (]ADDR2),Y
INY
LDA ]AYBAK
STA (]ADDR2),Y
INY
LDA ]AYBAK+1
STA (]ADDR2),Y
INY
LDA ]ELEN
STA (]ADDR2),Y
LDY ]ADDR2
LDX ]ADDR2+1
LDA ]PROD
STA RETURN
LDA ]PROD+1
STA RETURN+1
LDA ]PROD+2
STA RETURN+2
LDA ]PROD+3
STA RETURN+3
LDA #4
STA RETLEN
RTS