nathanriggs c8cac53c5e Rev 0.4 updates
Massive updates that changes the way most subroutines are handled. Major bugfixes, various utilities added, started higher-level libraries.
2019-04-26 18:49:10 -04:00

148 lines
3.0 KiB
Plaintext

AGET82
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA :YIDX
PLA
STA :XIDX
PLA
STA ADDR1
PLA
STA ADDR1+1
LDY #0
LDA (ADDR1),Y
STA :XLEN
LDY #1
LDA (ADDR1),Y
STA :YLEN
LDY #2
LDA (ADDR1),Y
STA :ELEN
LDA ERRCTRL
CMP #1
BEQ :CHKERR
JMP :ERREND
:CHKERR
LDA :XIDX
CMP :XLEN
BCS :XOVF
JMP :ERRCONT1
:XOVF
_ERR #:E_SID;#:E_XOVF;#:E_DUMP;#:XIDX;#15
:ERRCONT1
LDA :YIDX
CMP :YLEN
BCS :YOVF
JMP :ERREND
:YOVF
_ERR #:E_SID;#:E_YOVF;#:E_DUMP;#:XIDX;#15
:ERREND
LDA #0
TAY
STY SCRATCH
BEQ :ENTLP
:DOADD
CLC
ADC :YIDX
TAX
TYA
ADC SCRATCH
TAY
TXA
:LP
ASL :YIDX
ROL SCRATCH
:ENTLP
LSR :YLEN
BCS :DOADD
BNE :LP
STX :PBAK
STY :PBAK+1
LDA :XIDX
STA :MLIER
LDA :ELEN
STA :MCAND
LDA #0
STA :MLIER+1
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
LDA :PROD
CLC
ADC #3
STA :PROD
BCC :NOCAR
INC :PROD+1
:NOCAR
CLC
LDA :PROD
ADC :PBAK
STA :PROD
LDA :PROD+1
ADC :PBAK+1
STA :PROD+1
CLC
LDA :PROD
ADC ADDR1
STA :PROD
LDA :PROD+1
ADC ADDR1+1
STA :PROD+1
LDA RETADR+1
PHA
LDA RETADR
PHA
LDY :PROD
LDX :PROD+1
STY ADDR1
STX ADDR1+1
LDY #0
:RLP
LDA (ADDR1),Y
STA RETURN,Y
INY
CPY :ELEN
BNE :RLP
LDA :ELEN
STA RETLEN
LDA RETLEN
LDY ADDR1
LDX ADDR1+1
RTS
:XIDX DS 2
:YIDX DS 2
:XLEN DS 1
:YLEN DS 1
:PROD DS 4
:MLIER DS 2
:MCAND DS 2
:ELEN DS 1
:PBAK DS 2
:E_SID ASC "AGET82 (GET82 MACRO)",00
:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)"
ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00
:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00
:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00