mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-08-19 03:27:29 +00:00
int32 WIP
This commit is contained in:
@@ -47,7 +47,7 @@ export asm accum32loadi(imm16)#0
|
|||||||
RTS
|
RTS
|
||||||
end
|
end
|
||||||
export asm accum32load(i32ptr)#0
|
export asm accum32load(i32ptr)#0
|
||||||
LDA ESTKL+0,X ; i32PTR
|
LDA ESTKL+0,X ; I32PTR
|
||||||
STA SRCL
|
STA SRCL
|
||||||
LDA ESTKH+0,X ; I32PTR
|
LDA ESTKH+0,X ; I32PTR
|
||||||
STA SRCL
|
STA SRCL
|
||||||
@@ -67,7 +67,7 @@ export asm accum32load(i32ptr)#0
|
|||||||
RTS
|
RTS
|
||||||
end
|
end
|
||||||
export asm accum32store(i32ptr)#0
|
export asm accum32store(i32ptr)#0
|
||||||
LDA ESTKL+0,X ; i32PTR
|
LDA ESTKL+0,X ; I32PTR
|
||||||
STA DSTL
|
STA DSTL
|
||||||
LDA ESTKH+0,X ; I32PTR
|
LDA ESTKH+0,X ; I32PTR
|
||||||
STA DSTL
|
STA DSTL
|
||||||
@@ -169,63 +169,193 @@ export asm accum32sub(i32ptr)#0
|
|||||||
INX
|
INX
|
||||||
RTS
|
RTS
|
||||||
end
|
end
|
||||||
export asm accum32mul(i32ptr)#0
|
export asm accum32shl(imm8)#0
|
||||||
LDA ESTKL+1,X ; I32PTR
|
LDA ESTKL+0,X ; IMM8
|
||||||
STA SRCL
|
AND #$01F
|
||||||
LDA ESTKH+1,X ; I32PTR
|
|
||||||
STA SRCH
|
|
||||||
STX ESP
|
|
||||||
LDX #$00
|
|
||||||
LDY #$03
|
|
||||||
STY IPY
|
|
||||||
LDA #$80
|
|
||||||
_MULLP PHA
|
|
||||||
LDY IPY
|
|
||||||
AND (TMP),Y
|
|
||||||
BEQ +
|
BEQ +
|
||||||
LDY #$00
|
TAY
|
||||||
CLC
|
- ASL ACCUM32+0
|
||||||
LDA (SRC),Y
|
ROL ACCUM32+1
|
||||||
ADC (DST),Y
|
ROL ACCUM32+2
|
||||||
STA (DST),Y
|
ROL ACCUM32+3
|
||||||
INY
|
DEY
|
||||||
LDA (SRC),Y
|
BNE -
|
||||||
ADC (DST),Y
|
|
||||||
STA (DST),Y
|
|
||||||
INY
|
|
||||||
LDA (SRC),Y
|
|
||||||
ADC (DST),Y
|
|
||||||
STA (DST),Y
|
|
||||||
INY
|
|
||||||
LDA (SRC),Y
|
|
||||||
ADC (DST),Y
|
|
||||||
STA (DST),Y
|
|
||||||
+ DEX
|
|
||||||
BEQ ++
|
|
||||||
LDY #$00
|
|
||||||
ASL (DST),Y
|
|
||||||
INY
|
|
||||||
ROL (DST),Y
|
|
||||||
INY
|
|
||||||
ROL (DST),Y
|
|
||||||
INY
|
|
||||||
ROL (DST),Y
|
|
||||||
PLA
|
|
||||||
LSR
|
|
||||||
BNE _MULLP
|
|
||||||
LDA #$80
|
|
||||||
DEC IPY
|
|
||||||
|
|
||||||
_SHLPRD LDY
|
|
||||||
ASL ESTKL,X ; MULTPLNDL
|
|
||||||
ROL ESTKH,X ; MULTPLNDH
|
|
||||||
DEX
|
|
||||||
BNE _MULLP
|
|
||||||
STA ESTKH+1,X ; PRODH
|
|
||||||
|
|
||||||
LDX ESP
|
|
||||||
INX
|
|
||||||
INX
|
|
||||||
INX
|
INX
|
||||||
RTS
|
RTS
|
||||||
end
|
end
|
||||||
|
export asm accum32shr(imm8)#0
|
||||||
|
LDA ESTKL+0,X ; IMM8
|
||||||
|
AND #$01F
|
||||||
|
BEQ +
|
||||||
|
TAY
|
||||||
|
LDA #$80
|
||||||
|
- CMP ACCUM32
|
||||||
|
ROR ACCUM32+3
|
||||||
|
ROR ACCUM32+2
|
||||||
|
ROR ACCUM32+1
|
||||||
|
ROR ACCUM32+0
|
||||||
|
DEY
|
||||||
|
BNE -
|
||||||
|
INX
|
||||||
|
RTS
|
||||||
|
end
|
||||||
|
export asm accum32muli(imm16)#0
|
||||||
|
LDY #$00
|
||||||
|
LDA ESTKL+0,X ; IMM16
|
||||||
|
STA SRC+0
|
||||||
|
LDA ESTKH+0,X ; IMM16
|
||||||
|
STA SRC+1
|
||||||
|
BPL + ; SIGN EXTENR
|
||||||
|
DEY
|
||||||
|
+ STY SRC+2
|
||||||
|
STY SRC+3
|
||||||
|
end
|
||||||
|
export asm accum32mul(i32ptr)#0
|
||||||
|
LDA ESTKL+0,X ; I32PTR
|
||||||
|
STA TMPL
|
||||||
|
LDA ESTKH+0,X ; I32PTR
|
||||||
|
STA TMPH
|
||||||
|
LDY #$03
|
||||||
|
- LDA (TMP),Y
|
||||||
|
STA SRC,Y
|
||||||
|
DEY
|
||||||
|
BPL -
|
||||||
|
LDA ACCUM32+0
|
||||||
|
STA ESTKL-1,X
|
||||||
|
LDA ACCUM32+1
|
||||||
|
STA ESTKH-1,X
|
||||||
|
LDA ACCUM32+2
|
||||||
|
STA ESTKL+0,X
|
||||||
|
LDA ACCUM32+3
|
||||||
|
STA ESTKH+0,X
|
||||||
|
LDA #$00
|
||||||
|
STA ACCUM32+0
|
||||||
|
STA ACCUM32+1
|
||||||
|
STA ACCUM32+2
|
||||||
|
STA ACCUM32+3
|
||||||
|
LDY #$03
|
||||||
|
LDA #$80
|
||||||
|
STA TMPL
|
||||||
|
_MULLP AND SRC,Y
|
||||||
|
BEQ +
|
||||||
|
CLC
|
||||||
|
LDA ESTKL-1,X
|
||||||
|
ADC ACCUM32+0
|
||||||
|
STA ACCUM32+0
|
||||||
|
LDA ESTKH-1,X
|
||||||
|
ADC ACCUM32+1
|
||||||
|
STA ACCUM32+1
|
||||||
|
LDA ESTKL+0,X
|
||||||
|
ADC ACCUM32+2
|
||||||
|
STA ACCUM32+2
|
||||||
|
LDA ESTKH+0,X
|
||||||
|
ADC ACCUM32+3
|
||||||
|
STA ACCUM32+3
|
||||||
|
+ LSR TMPL
|
||||||
|
BCC +
|
||||||
|
DEY
|
||||||
|
BMI ++
|
||||||
|
ROR TMPL
|
||||||
|
+ ASL ACCUM32+0
|
||||||
|
ROL ACCUM32+1
|
||||||
|
ROL ACCUM32+2
|
||||||
|
ROL ACCUM32+3
|
||||||
|
LDA TMPL
|
||||||
|
BNE _MULLP
|
||||||
|
++ INX
|
||||||
|
RTS
|
||||||
|
end
|
||||||
|
export asm accum32div(i32ptr)#0
|
||||||
|
LDA ESTKL+0,X ; I32PTR
|
||||||
|
STA TMPL
|
||||||
|
LDA ESTKH+0,X ; I32PTR
|
||||||
|
STA TMPH
|
||||||
|
LDY #$03
|
||||||
|
- LDA (TMP),Y
|
||||||
|
STA SRC,Y
|
||||||
|
DEY
|
||||||
|
BPL -
|
||||||
|
LDA ACCUM32+3
|
||||||
|
BMI +
|
||||||
|
STA ESTKH+0,X
|
||||||
|
LDA ACCUM32+2
|
||||||
|
STA ESTKL+0,X
|
||||||
|
LDA ACCUM32+1
|
||||||
|
STA ESTKH-1,X
|
||||||
|
LDA ACCUM32+0
|
||||||
|
STA ESTKL-1,X
|
||||||
|
|
||||||
|
SEC
|
||||||
|
LDA #$00
|
||||||
|
SBC ACCUM32+0
|
||||||
|
STA ESTKL-1,X
|
||||||
|
LDA #$00
|
||||||
|
SBC ACCUM32+1
|
||||||
|
STA ESTKH-1,X
|
||||||
|
LDA #$00
|
||||||
|
SBC ACCUM32+2
|
||||||
|
STA ESTKL+0,X
|
||||||
|
LDA #$00
|
||||||
|
SBC ACCUM32+3
|
||||||
|
STA ESTKH+0,X
|
||||||
|
|
||||||
|
|
||||||
|
LDA #$00
|
||||||
|
STA ACCUM32+0
|
||||||
|
STA ACCUM32+1
|
||||||
|
STA ACCUM32+2
|
||||||
|
STA ACCUM32+3
|
||||||
|
LDY #$03
|
||||||
|
|
||||||
|
|
||||||
|
_NEG LDA #$00
|
||||||
|
SEC
|
||||||
|
SBC ESTKL,X
|
||||||
|
STA ESTKL,X
|
||||||
|
LDA #$00
|
||||||
|
SBC ESTKH,X
|
||||||
|
STA ESTKH,X
|
||||||
|
RTS
|
||||||
|
_DIV STY IPY
|
||||||
|
LDY #$11 ; #BITS+1
|
||||||
|
LDA #$00
|
||||||
|
STA TMPL ; REMNDRL
|
||||||
|
STA TMPH ; REMNDRH
|
||||||
|
STA DVSIGN
|
||||||
|
LDA ESTKH+1,X
|
||||||
|
BPL +
|
||||||
|
INX
|
||||||
|
JSR _NEG
|
||||||
|
DEX
|
||||||
|
LDA #$81
|
||||||
|
STA DVSIGN
|
||||||
|
+ ORA ESTKL+1,X ; DVDNDL
|
||||||
|
BEQ _DIVEX
|
||||||
|
LDA ESTKH,X
|
||||||
|
BPL _DIV1
|
||||||
|
JSR _NEG
|
||||||
|
INC DVSIGN
|
||||||
|
_DIV1 ASL ESTKL+1,X ; DVDNDL
|
||||||
|
ROL ESTKH+1,X ; DVDNDH
|
||||||
|
DEY
|
||||||
|
BCC _DIV1
|
||||||
|
_DIVLP ROL TMPL ; REMNDRL
|
||||||
|
ROL TMPH ; REMNDRH
|
||||||
|
LDA TMPL ; REMNDRL
|
||||||
|
CMP ESTKL,X ; DVSRL
|
||||||
|
LDA TMPH ; REMNDRH
|
||||||
|
SBC ESTKH,X ; DVSRH
|
||||||
|
BCC +
|
||||||
|
STA TMPH ; REMNDRH
|
||||||
|
LDA TMPL ; REMNDRL
|
||||||
|
SBC ESTKL,X ; DVSRL
|
||||||
|
STA TMPL ; REMNDRL
|
||||||
|
SEC
|
||||||
|
+ ROL ESTKL+1,X ; DVDNDL
|
||||||
|
ROL ESTKH+1,X ; DVDNDH
|
||||||
|
DEY
|
||||||
|
BNE _DIVLP
|
||||||
|
_DIVEX INX
|
||||||
|
LDY IPY
|
||||||
|
RTS
|
||||||
|
end
|
||||||
|
Reference in New Issue
Block a user