1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-07-08 09:28:57 +00:00

Space/time opt for MUL, Apple1 rearrangement to save space

This commit is contained in:
David Schmenk 2014-06-18 17:35:54 -07:00
parent 5f71c1481b
commit 72bea1e510
3 changed files with 145 additions and 145 deletions

View File

@ -50,13 +50,13 @@ IINTERP PLA
;* MUL TOS-1 BY TOS
;*
MUL STY IPY
LDY #$00
STY TMPL ; PRODL
STY TMPH ; PRODH
LDY #$10
MUL1 LSR ESTKH,X ; MULTPLRH
LDA #$00
STA TMPL ; PRODL
STA TMPH ; PRODH
MULLP LSR ESTKH,X ; MULTPLRH
ROR ESTKL,X ; MULTPLRL
BCC MUL2
BCC +
LDA ESTKL+1,X ; MULTPLNDL
CLC
ADC TMPL ; PRODL
@ -64,18 +64,43 @@ MUL1 LSR ESTKH,X ; MULTPLRH
LDA ESTKH+1,X ; MULTPLNDH
ADC TMPH ; PRODH
STA TMPH
MUL2 ASL ESTKL+1,X ; MULTPLNDL
+ ASL ESTKL+1,X ; MULTPLNDL
ROL ESTKH+1,X ; MULTPLNDH
DEY
BNE MUL1
BNE MULLP
INX
; LDA TMPH ; PRODH
STA ESTKH,X
LDA TMPL ; PRODL
STA ESTKL,X
LDA TMPH ; PRODH
STA ESTKH,X
LDY IPY
JMP NEXTOP
;*
;* INCREMENT TOS
;*
INCR INC ESTKL,X
BNE INCR1
INC ESTKH,X
INCR1 JMP NEXTOP
;*
;* DECREMENT TOS
;*
DECR LDA ESTKL,X
BNE DECR1
DEC ESTKH,X
DECR1 DEC ESTKL,X
JMP NEXTOP
;*
;* BITWISE COMPLIMENT TOS
;*
COMP LDA #$FF
EOR ESTKL,X
STA ESTKL,X
LDA #$FF
EOR ESTKH,X
STA ESTKH,X
JMP NEXTOP
;*
;* OPCODE TABLE
;*
!ALIGN 255,0
@ -88,73 +113,6 @@ OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E
!WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E
!WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E
;*
;* INTERNAL DIVIDE ALGORITHM
;*
_NEG LDA #$00
SEC
SBC ESTKL,X
STA ESTKL,X
LDA #$00
SBC ESTKH,X
STA ESTKH,X
RTS
_DIV STY IPY
LDA ESTKH,X
AND #$80
STA DVSIGN
BPL _DIV1
JSR _NEG
INC DVSIGN
_DIV1 LDA ESTKH+1,X
BPL _DIV2
INX
JSR _NEG
DEX
INC DVSIGN
BNE _DIV3
_DIV2 ORA ESTKL+1,X ; DVDNDL
BNE _DIV3
STA TMPL
STA TMPH
RTS
_DIV3 LDY #$11 ; #BITS+1
LDA #$00
STA TMPL ; REMNDRL
STA TMPH ; REMNDRH
_DIV4 ASL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEY
BCC _DIV4
STY ESTKL-1,X
_DIV5 ROL TMPL ; REMNDRL
ROL TMPH ; REMNDRH
LDA TMPL ; REMNDRL
SEC
SBC ESTKL,X ; DVSRL
TAY
LDA TMPH ; REMNDRH
SBC ESTKH,X ; DVSRH
BCC _DIV6
STA TMPH ; REMNDRH
STY TMPL ; REMNDRL
_DIV6 ROL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEC ESTKL-1,X
BNE _DIV5
LDY IPY
RTS
;*
;* NEGATE TOS
;*
NEG LDA #$00
SEC
SBC ESTKL,X
STA ESTKL,X
LDA #$00
SBC ESTKH,X
STA ESTKH,X
JMP NEXTOP
;*
;* DIV TOS-1 BY TOS
;*
DIV JSR _DIV
@ -175,6 +133,73 @@ MOD JSR _DIV
BMI NEG
JMP NEXTOP
;*
;* NEGATE TOS
;*
NEG LDA #$00
SEC
SBC ESTKL,X
STA ESTKL,X
LDA #$00
SBC ESTKH,X
STA ESTKH,X
JMP NEXTOP
;*
;* INTERNAL DIVIDE ALGORITHM
;*
_NEG LDA #$00
SEC
SBC ESTKL,X
STA ESTKL,X
LDA #$00
SBC ESTKH,X
STA ESTKH,X
RTS
_DIV STY IPY
LDA ESTKH,X
AND #$80
STA DVSIGN
BPL +
JSR _NEG
INC DVSIGN
+ LDA ESTKH+1,X
BPL +
INX
JSR _NEG
DEX
INC DVSIGN
BNE _DIV1
+ ORA ESTKL+1,X ; DVDNDL
BNE _DIV1
STA TMPL
STA TMPH
RTS
_DIV1 LDY #$11 ; #BITS+1
LDA #$00
STA TMPL ; REMNDRL
STA TMPH ; REMNDRH
- ASL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEY
BCC -
STY ESTKL-1,X
_DIVLP ROL TMPL ; REMNDRL
ROL TMPH ; REMNDRH
LDA TMPL ; REMNDRL
SEC
SBC ESTKL,X ; DVSRL
TAY
LDA TMPH ; REMNDRH
SBC ESTKH,X ; DVSRH
BCC +
STA TMPH ; REMNDRH
STY TMPL ; REMNDRL
+ ROL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEC ESTKL-1,X
BNE _DIVLP
LDY IPY
RTS
;*
;* ADD TOS TO TOS-1
;*
ADD LDA ESTKL,X
@ -214,31 +239,6 @@ IDXW LDA ESTKL,X
INX
JMP NEXTOP
;*
;* INCREMENT TOS
;*
INCR INC ESTKL,X
BNE INCR1
INC ESTKH,X
INCR1 JMP NEXTOP
;*
;* DECREMENT TOS
;*
DECR LDA ESTKL,X
BNE DECR1
DEC ESTKH,X
DECR1 DEC ESTKL,X
JMP NEXTOP
;*
;* BITWISE COMPLIMENT TOS
;*
COMP LDA #$FF
EOR ESTKL,X
STA ESTKL,X
LDA #$FF
EOR ESTKH,X
STA ESTKH,X
JMP NEXTOP
;*
;* BITWISE AND TOS TO TOS-1
;*
BAND LDA ESTKL+1,X

View File

@ -397,13 +397,13 @@ IDXW LDA ESTKL,X
;* MUL TOS-1 BY TOS
;*
MUL STY IPY
LDY #$00
STY TMPL ; PRODL
STY TMPH ; PRODH
LDY #$10
MUL1 LSR ESTKH,X ; MULTPLRH
LDA #$00
STA TMPL ; PRODL
STA TMPH ; PRODH
MULLP LSR ESTKH,X ; MULTPLRH
ROR ESTKL,X ; MULTPLRL
BCC MUL2
BCC +
LDA ESTKL+1,X ; MULTPLNDL
CLC
ADC TMPL ; PRODL
@ -411,15 +411,15 @@ MUL1 LSR ESTKH,X ; MULTPLRH
LDA ESTKH+1,X ; MULTPLNDH
ADC TMPH ; PRODH
STA TMPH
MUL2 ASL ESTKL+1,X ; MULTPLNDL
+ ASL ESTKL+1,X ; MULTPLNDL
ROL ESTKH+1,X ; MULTPLNDH
DEY
BNE MUL1
BNE MULLP
INX
; LDA TMPH ; PRODH
STA ESTKH,X
LDA TMPL ; PRODL
STA ESTKL,X
LDA TMPH ; PRODH
STA ESTKH,X
LDY IPY
JMP NEXTOP
;*
@ -437,31 +437,31 @@ _DIV STY IPY
LDA ESTKH,X
AND #$80
STA DVSIGN
BPL _DIV1
BPL +
JSR _NEG
INC DVSIGN
_DIV1 LDA ESTKH+1,X
BPL _DIV2
+ LDA ESTKH+1,X
BPL +
INX
JSR _NEG
DEX
INC DVSIGN
BNE _DIV3
_DIV2 ORA ESTKL+1,X ; DVDNDL
BNE _DIV3
BNE _DIV1
+ ORA ESTKL+1,X ; DVDNDL
BNE _DIV1
STA TMPL
STA TMPH
RTS
_DIV3 LDY #$11 ; #BITS+1
_DIV1 LDY #$11 ; #BITS+1
LDA #$00
STA TMPL ; REMNDRL
STA TMPH ; REMNDRH
_DIV4 ASL ESTKL+1,X ; DVDNDL
- ASL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEY
BCC _DIV4
BCC -
STY ESTKL-1,X
_DIV5 ROL TMPL ; REMNDRL
_DIVLP ROL TMPL ; REMNDRL
ROL TMPH ; REMNDRH
LDA TMPL ; REMNDRL
SEC
@ -469,13 +469,13 @@ _DIV5 ROL TMPL ; REMNDRL
TAY
LDA TMPH ; REMNDRH
SBC ESTKH,X ; DVSRH
BCC _DIV6
BCC +
STA TMPH ; REMNDRH
STY TMPL ; REMNDRL
_DIV6 ROL ESTKL+1,X ; DVDNDL
+ ROL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEC ESTKL-1,X
BNE _DIV5
BNE _DIVLP
LDY IPY
RTS
;*

View File

@ -149,31 +149,31 @@ _DIV STY IPY
LDA ESTKH,X
AND #$80
STA DVSIGN
BPL _DIV1
BPL +
JSR _NEG
INC DVSIGN
_DIV1 LDA ESTKH+1,X
BPL _DIV2
+ LDA ESTKH+1,X
BPL +
INX
JSR _NEG
DEX
INC DVSIGN
BNE _DIV3
_DIV2 ORA ESTKL+1,X ; DVDNDL
BNE _DIV3
BNE _DIV1
+ ORA ESTKL+1,X ; DVDNDL
BNE _DIV1
STA TMPL
STA TMPH
RTS
_DIV3 LDY #$11 ; #BITS+1
_DIV1 LDY #$11 ; #BITS+1
LDA #$00
STA TMPL ; REMNDRL
STA TMPH ; REMNDRH
_DIV4 ASL ESTKL+1,X ; DVDNDL
- ASL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEY
BCC _DIV4
BCC -
STY ESTKL-1,X
_DIV5 ROL TMPL ; REMNDRL
_DIVLP ROL TMPL ; REMNDRL
ROL TMPH ; REMNDRH
LDA TMPL ; REMNDRL
SEC
@ -181,13 +181,13 @@ _DIV5 ROL TMPL ; REMNDRL
TAY
LDA TMPH ; REMNDRH
SBC ESTKH,X ; DVSRH
BCC _DIV6
BCC +
STA TMPH ; REMNDRH
STY TMPL ; REMNDRL
_DIV6 ROL ESTKL+1,X ; DVDNDL
+ ROL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH
DEC ESTKL-1,X
BNE _DIV5
BNE _DIVLP
LDY IPY
RTS
;*
@ -206,13 +206,13 @@ OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E
;* MUL TOS-1 BY TOS
;*
MUL STY IPY
LDY #$00
STY TMPL ; PRODL
STY TMPH ; PRODH
LDY #$10
MUL1 LSR ESTKH,X ; MULTPLRH
LDA #$00
STA TMPL ; PRODL
STA TMPH ; PRODH
MULLP LSR ESTKH,X ; MULTPLRH
ROR ESTKL,X ; MULTPLRL
BCC MUL2
BCC +
LDA ESTKL+1,X ; MULTPLNDL
CLC
ADC TMPL ; PRODL
@ -220,15 +220,15 @@ MUL1 LSR ESTKH,X ; MULTPLRH
LDA ESTKH+1,X ; MULTPLNDH
ADC TMPH ; PRODH
STA TMPH
MUL2 ASL ESTKL+1,X ; MULTPLNDL
+ ASL ESTKL+1,X ; MULTPLNDL
ROL ESTKH+1,X ; MULTPLNDH
DEY
BNE MUL1
BNE MULLP
INX
; LDA TMPH ; PRODH
STA ESTKH,X
LDA TMPL ; PRODL
STA ESTKL,X
LDA TMPH ; PRODH
STA ESTKH,X
LDY IPY
JMP NEXTOP
;*