mirror of
https://github.com/dschmenk/PLASMA.git
synced 2024-10-18 22:24:28 +00:00
Apple 3 VM updates
This commit is contained in:
parent
2e952bfde3
commit
25599c00c8
BIN
PLASMA-BLD2.PO
Normal file
BIN
PLASMA-BLD2.PO
Normal file
Binary file not shown.
BIN
PLASMA-DEM2.PO
Normal file
BIN
PLASMA-DEM2.PO
Normal file
Binary file not shown.
BIN
PLASMA-SOS2.PO
Normal file
BIN
PLASMA-SOS2.PO
Normal file
Binary file not shown.
BIN
PLASMA-SYS2.PO
Normal file
BIN
PLASMA-SYS2.PO
Normal file
Binary file not shown.
@ -706,34 +706,6 @@ DUP DEX
|
|||||||
STA ESTKH,X
|
STA ESTKH,X
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
;*
|
;*
|
||||||
;* CONSTANT -1, NYBBLE, BYTE, $FF BYTE, WORD (BELOW)
|
|
||||||
;*
|
|
||||||
MINUS1 DEX
|
|
||||||
LDA #$FF
|
|
||||||
STA ESTKL,X
|
|
||||||
STA ESTKH,X
|
|
||||||
JMP NEXTOP
|
|
||||||
CN DEX
|
|
||||||
LSR ; A = CONST * 2
|
|
||||||
STA ESTKL,X
|
|
||||||
LDA #$00
|
|
||||||
STA ESTKH,X
|
|
||||||
JMP NEXTOP
|
|
||||||
CB DEX
|
|
||||||
LDA #$00
|
|
||||||
STA ESTKH,X
|
|
||||||
INY ;+INC_IP
|
|
||||||
LDA (IP),Y
|
|
||||||
STA ESTKL,X
|
|
||||||
JMP NEXTOP
|
|
||||||
CFFB DEX
|
|
||||||
LDA #$FF
|
|
||||||
STA ESTKH,X
|
|
||||||
INY ;+INC_IP
|
|
||||||
LDA (IP),Y
|
|
||||||
STA ESTKL,X
|
|
||||||
JMP NEXTOP
|
|
||||||
;*
|
|
||||||
;* ADD IMMEDIATE TO TOS
|
;* ADD IMMEDIATE TO TOS
|
||||||
;*
|
;*
|
||||||
ADDI INY ;+INC_IP
|
ADDI INY ;+INC_IP
|
||||||
@ -774,6 +746,34 @@ ORI INY ;+INC_IP
|
|||||||
STA ESTKL,X
|
STA ESTKL,X
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
;*
|
;*
|
||||||
|
;* CONSTANT -1, NYBBLE, BYTE, $FF BYTE, WORD (BELOW)
|
||||||
|
;*
|
||||||
|
MINUS1 DEX
|
||||||
|
LDA #$FF
|
||||||
|
STA ESTKL,X
|
||||||
|
STA ESTKH,X
|
||||||
|
JMP NEXTOP
|
||||||
|
CN DEX
|
||||||
|
LSR ; A = CONST * 2
|
||||||
|
STA ESTKL,X
|
||||||
|
LDA #$00
|
||||||
|
STA ESTKH,X
|
||||||
|
JMP NEXTOP
|
||||||
|
CB DEX
|
||||||
|
LDA #$00
|
||||||
|
STA ESTKH,X
|
||||||
|
INY ;+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
STA ESTKL,X
|
||||||
|
JMP NEXTOP
|
||||||
|
CFFB DEX
|
||||||
|
LDA #$FF
|
||||||
|
STA ESTKH,X
|
||||||
|
INY ;+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
STA ESTKL,X
|
||||||
|
JMP NEXTOP
|
||||||
|
;*
|
||||||
;* LOAD ADDRESS & LOAD CONSTANT WORD (SAME THING, WITH OR WITHOUT FIXUP)
|
;* LOAD ADDRESS & LOAD CONSTANT WORD (SAME THING, WITH OR WITHOUT FIXUP)
|
||||||
;*
|
;*
|
||||||
- TYA ; RENORMALIZE IP
|
- TYA ; RENORMALIZE IP
|
||||||
@ -1450,22 +1450,6 @@ ADDBRLE LDA ESTKL,X
|
|||||||
STA ESTKH+1,X
|
STA ESTKH+1,X
|
||||||
INX
|
INX
|
||||||
BNE _BRLE
|
BNE _BRLE
|
||||||
;IBRNCH TYA ; FLATTEN IP
|
|
||||||
; CLC
|
|
||||||
; ADC IPL
|
|
||||||
; STA TMPL
|
|
||||||
; LDA #$00
|
|
||||||
; TAY
|
|
||||||
; ADC IPH
|
|
||||||
; STA TMPH ; ADD BRANCH OFFSET
|
|
||||||
; LDA TMPL
|
|
||||||
; ;CLC ; BETTER NOT CARRY OUT OF IP+Y
|
|
||||||
; ADC ESTKL,X
|
|
||||||
; STA IPL
|
|
||||||
; LDA TMPH
|
|
||||||
; ADC ESTKH,X
|
|
||||||
; STA IPH
|
|
||||||
; JMP DROP
|
|
||||||
;*
|
;*
|
||||||
;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
|
;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
|
||||||
;*
|
;*
|
||||||
|
@ -138,14 +138,17 @@ VMCORE = *
|
|||||||
;* OPCODE TABLE
|
;* OPCODE TABLE
|
||||||
;*
|
;*
|
||||||
!ALIGN 255,0
|
!ALIGN 255,0
|
||||||
OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E
|
OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
|
||||||
!WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 10 12 14 16 18 1A 1C 1E
|
!WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
|
||||||
!WORD LNOT,LOR,LAND,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
!WORD MINUS1,NEXTOP,NEXTOP,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
|
||||||
!WORD DROP,DUP,NEXTOP,DIVMOD,BRGT,BRLT,BREQ,BRNE ; 30 32 34 36 38 3A 3C 3E
|
!WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
|
||||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||||
!WORD BRNCH,IBRNCH,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
!WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
|
||||||
!WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E
|
!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
|
!WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E
|
||||||
|
!WORD LNOT,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 80 82 84 86 88 8A 8C 8E
|
||||||
|
!WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 90 92 94 96 98 9A 9C 9E
|
||||||
|
!WORD BRGT,BRLT,INCBRLE,ADDBRLE,DECBRGE,SUBBRGE,BRAND,BROR ; A0 A2 A4 A6 A8 AA AC AE
|
||||||
;*
|
;*
|
||||||
;* SYSTEM INTERPRETER ENTRYPOINT
|
;* SYSTEM INTERPRETER ENTRYPOINT
|
||||||
;*
|
;*
|
||||||
@ -440,31 +443,6 @@ SHR STY IPY
|
|||||||
+ LDY IPY
|
+ LDY IPY
|
||||||
JMP DROP
|
JMP DROP
|
||||||
;*
|
;*
|
||||||
;* LOGICAL AND
|
|
||||||
;*
|
|
||||||
LAND LDA ESTKL+1,X
|
|
||||||
ORA ESTKH+1,X
|
|
||||||
BEQ ++
|
|
||||||
LDA ESTKL,X
|
|
||||||
ORA ESTKH,X
|
|
||||||
BEQ +
|
|
||||||
LDA #$FF
|
|
||||||
+ STA ESTKL+1,X
|
|
||||||
STA ESTKH+1,X
|
|
||||||
++ JMP DROP
|
|
||||||
;*
|
|
||||||
;* LOGICAL OR
|
|
||||||
;*
|
|
||||||
LOR LDA ESTKL,X
|
|
||||||
ORA ESTKH,X
|
|
||||||
ORA ESTKL+1,X
|
|
||||||
ORA ESTKH+1,X
|
|
||||||
BEQ +
|
|
||||||
LDA #$FF
|
|
||||||
STA ESTKL+1,X
|
|
||||||
STA ESTKH+1,X
|
|
||||||
+ JMP DROP
|
|
||||||
;*
|
|
||||||
;* DUPLICATE TOS
|
;* DUPLICATE TOS
|
||||||
;*
|
;*
|
||||||
DUP DEX
|
DUP DEX
|
||||||
@ -478,17 +456,64 @@ DUP DEX
|
|||||||
;*
|
;*
|
||||||
LNOT LDA ESTKL,X
|
LNOT LDA ESTKL,X
|
||||||
ORA ESTKH,X
|
ORA ESTKH,X
|
||||||
BNE +
|
BEQ +
|
||||||
LDA #$FF
|
LDA #$FF
|
||||||
|
+ EOR #$FF
|
||||||
STA ESTKL,X
|
STA ESTKL,X
|
||||||
STA ESTKH,X
|
STA ESTKH,X
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
;*
|
;*
|
||||||
;* CONSTANT
|
;* ADD IMMEDIATE TO TOS
|
||||||
;*
|
;*
|
||||||
ZERO DEX
|
ADDI INY ;+INC_IP
|
||||||
+ LDA #$00
|
LDA (IP),Y
|
||||||
|
CLC
|
||||||
|
ADC ESTKL,X
|
||||||
STA ESTKL,X
|
STA ESTKL,X
|
||||||
|
BCC +
|
||||||
|
INC ESTKH,X
|
||||||
|
+ JMP NEXTOP
|
||||||
|
;*
|
||||||
|
;* SUB IMMEDIATE FROM TOS
|
||||||
|
;*
|
||||||
|
SUBI INY ;+INC_IP
|
||||||
|
LDA ESTKL,X
|
||||||
|
SEC
|
||||||
|
SBC (IP),Y
|
||||||
|
STA ESTKL,X
|
||||||
|
BCS +
|
||||||
|
DEC ESTKH,X
|
||||||
|
+ JMP NEXTOP
|
||||||
|
;*
|
||||||
|
;* AND IMMEDIATE TO TOS
|
||||||
|
;*
|
||||||
|
ANDI INY ;+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
AND ESTKL,X
|
||||||
|
STA ESTKL,X
|
||||||
|
LDA #$00
|
||||||
|
STA ESTKH,X
|
||||||
|
JMP NEXTOP
|
||||||
|
;*
|
||||||
|
;* IOR IMMEDIATE TO TOS
|
||||||
|
;*
|
||||||
|
ORI INY ;+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
ORA ESTKL,X
|
||||||
|
STA ESTKL,X
|
||||||
|
JMP NEXTOP
|
||||||
|
;*
|
||||||
|
;* CONSTANT -1, NYBBLE, BYTE, $FF BYTE, WORD (BELOW)
|
||||||
|
;*
|
||||||
|
MINUS1 DEX
|
||||||
|
LDA #$FF
|
||||||
|
STA ESTKL,X
|
||||||
|
STA ESTKH,X
|
||||||
|
JMP NEXTOP
|
||||||
|
CN DEX
|
||||||
|
LSR ; A = CONST * 2
|
||||||
|
STA ESTKL,X
|
||||||
|
LDA #$00
|
||||||
STA ESTKH,X
|
STA ESTKH,X
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
CFFB LDA #$FF
|
CFFB LDA #$FF
|
||||||
@ -716,7 +741,10 @@ SW LDA ESTKL,X
|
|||||||
JMP DROP
|
JMP DROP
|
||||||
+ INC ESTKH,X
|
+ INC ESTKH,X
|
||||||
STA (ESTKH-1,X)
|
STA (ESTKH-1,X)
|
||||||
INX
|
;*
|
||||||
|
;* DROP TOS, TOS-1
|
||||||
|
;*
|
||||||
|
DROP2 INX
|
||||||
JMP DROP
|
JMP DROP
|
||||||
;*
|
;*
|
||||||
;* STORE VALUE TO LOCAL FRAME OFFSET
|
;* STORE VALUE TO LOCAL FRAME OFFSET
|
||||||
@ -900,16 +928,71 @@ ISLT LDA ESTKL+1,X
|
|||||||
+ BMI ISFLS
|
+ BMI ISFLS
|
||||||
BPL ISTRU
|
BPL ISTRU
|
||||||
;*
|
;*
|
||||||
;* NORMALIZE IP+Y BEFORE CALLING NEXTOP
|
;* BRANCHES
|
||||||
;*
|
;*
|
||||||
|
SEL INX
|
||||||
|
TYA ; FLATTEN IP
|
||||||
|
SEC
|
||||||
|
ADC IPL
|
||||||
|
STA TMPL
|
||||||
|
LDA #$00
|
||||||
|
TAY
|
||||||
|
ADC IPH
|
||||||
|
STA TMPH ; ADD BRANCH OFFSET
|
||||||
|
LDA (TMP),Y
|
||||||
|
;CLC ; BETTER NOT CARRY OUT OF IP+Y
|
||||||
|
ADC TMPL
|
||||||
|
STA IPL
|
||||||
|
INY
|
||||||
|
LDA (TMP),Y
|
||||||
|
ADC TMPH
|
||||||
|
STA IPH
|
||||||
|
DEY
|
||||||
|
LDA (IP),Y
|
||||||
|
BEQ ++
|
||||||
|
STA TMPL ; CASE COUNT
|
||||||
|
INC IPL
|
||||||
|
BNE +
|
||||||
|
INC IPH
|
||||||
|
+ LDA ESTKL-1,X
|
||||||
|
CASELP CMP (IP),Y
|
||||||
|
BNE +
|
||||||
|
LDA ESTKH-1,X
|
||||||
|
INY
|
||||||
|
CMP (IP),Y
|
||||||
|
BEQ BRNCH
|
||||||
|
LDA ESTKL-1,X
|
||||||
|
DEY
|
||||||
|
+ DEC TMPL
|
||||||
|
BEQ +
|
||||||
|
INY
|
||||||
|
INY
|
||||||
|
INY
|
||||||
|
INY
|
||||||
|
BNE CASELP
|
||||||
|
INC IPH
|
||||||
|
BNE CASELP
|
||||||
|
+ INY
|
||||||
|
INY
|
||||||
|
INY
|
||||||
FIXNEXT TYA
|
FIXNEXT TYA
|
||||||
LDY #$00
|
LDY #$00
|
||||||
CLC
|
CLC
|
||||||
ADC IPL
|
ADC IPL
|
||||||
STA IPL
|
STA IPL
|
||||||
BCC +
|
BCC ++
|
||||||
INC IPH
|
INC IPH
|
||||||
+ JMP NEXTOP
|
++ JMP NEXTOP
|
||||||
|
BRAND LDA ESTKL,X
|
||||||
|
ORA ESTKH,X
|
||||||
|
BEQ BRNCH
|
||||||
|
INX ; DROP LEFT HALF OF AND
|
||||||
|
BNE NOBRNCH
|
||||||
|
BROR LDA ESTKL,X
|
||||||
|
ORA ESTKH,X
|
||||||
|
BNE BRNCH
|
||||||
|
INX ; DROP LEFT HALF OF OR
|
||||||
|
BNE NOBRNCH
|
||||||
;*
|
;*
|
||||||
;* BRANCHES
|
;* BRANCHES
|
||||||
;*
|
;*
|
||||||
@ -946,58 +1029,71 @@ BRNCH TYA ; FLATTEN IP
|
|||||||
DEY
|
DEY
|
||||||
STY TMPX ; CLEAR TMPX
|
STY TMPX ; CLEAR TMPX
|
||||||
JMP FETCHOP
|
JMP FETCHOP
|
||||||
BREQ INX
|
;*
|
||||||
LDA ESTKL-1,X
|
;* FOR LOOPS PUT TERMINAL VALUE AT ESTK+1 AND CURRENT COUNT ON ESTK
|
||||||
|
;*
|
||||||
|
BRGT LDA ESTKL+1,X
|
||||||
CMP ESTKL,X
|
CMP ESTKL,X
|
||||||
BNE NOBRNCH
|
LDA ESTKH+1,X
|
||||||
LDA ESTKH-1,X
|
|
||||||
CMP ESTKH,X
|
|
||||||
BEQ BRNCH
|
|
||||||
BNE NOBRNCH
|
|
||||||
BRNE INX
|
|
||||||
LDA ESTKL-1,X
|
|
||||||
CMP ESTKL,X
|
|
||||||
BNE BRNCH
|
|
||||||
LDA ESTKH-1,X
|
|
||||||
CMP ESTKH,X
|
|
||||||
BEQ NOBRNCH
|
|
||||||
BNE BRNCH
|
|
||||||
BRGT INX
|
|
||||||
LDA ESTKL-1,X
|
|
||||||
CMP ESTKL,X
|
|
||||||
LDA ESTKH-1,X
|
|
||||||
SBC ESTKH,X
|
SBC ESTKH,X
|
||||||
BVS +
|
BVS +
|
||||||
BPL NOBRNCH
|
BPL NOBRNCH
|
||||||
BMI BRNCH
|
- INX ; DROP FOR VALUES
|
||||||
+ BPL BRNCH
|
INX
|
||||||
BMI NOBRNCH
|
BNE BRNCH ; BMI BRNCH
|
||||||
BRLT INX
|
BRLT LDA ESTKL,X
|
||||||
LDA ESTKL,X
|
CMP ESTKL+1,X
|
||||||
CMP ESTKL-1,X
|
|
||||||
LDA ESTKH,X
|
LDA ESTKH,X
|
||||||
SBC ESTKH-1,X
|
SBC ESTKH+1,X
|
||||||
BVS +
|
BVS +
|
||||||
BPL NOBRNCH
|
BPL NOBRNCH
|
||||||
BMI BRNCH
|
BMI -
|
||||||
+ BPL BRNCH
|
+ BMI NOBRNCH
|
||||||
BMI NOBRNCH
|
BPL -
|
||||||
IBRNCH TYA ; FLATTEN IP
|
INCBRLE INC ESTKL,X
|
||||||
|
BNE _BRLE
|
||||||
|
INC ESTKH,X
|
||||||
|
_BRLE LDA ESTKL+1,X
|
||||||
|
CMP ESTKL,X
|
||||||
|
LDA ESTKH+1,X
|
||||||
|
SBC ESTKH,X
|
||||||
|
BVS +
|
||||||
|
BPL BRNCH
|
||||||
|
- INX ; DROP FOR VALUES
|
||||||
|
INX
|
||||||
|
BNE NOBRNCH ; BMI NOBRNCH
|
||||||
|
DECBRGE DEC ESTKL,X
|
||||||
|
LDA ESTKL,X
|
||||||
|
CMP #$FF
|
||||||
|
BNE +
|
||||||
|
DEC ESTKH,X
|
||||||
|
_BRGE LDA ESTKL,X
|
||||||
|
+ CMP ESTKL+1,X
|
||||||
|
LDA ESTKH,X
|
||||||
|
SBC ESTKH+1,X
|
||||||
|
BVS +
|
||||||
|
BPL BRNCH
|
||||||
|
BMI -
|
||||||
|
+ BMI BRNCH
|
||||||
|
BPL -
|
||||||
|
SUBBRGE LDA ESTKL+1,X
|
||||||
|
SEC
|
||||||
|
SBC ESTKL,X
|
||||||
|
STA ESTKL+1,X
|
||||||
|
LDA ESTKH+1,X
|
||||||
|
SBC ESTKH,X
|
||||||
|
STA ESTKH+1,X
|
||||||
|
INX
|
||||||
|
BNE _BRGE
|
||||||
|
ADDBRLE LDA ESTKL,X
|
||||||
CLC
|
CLC
|
||||||
ADC IPL
|
ADC ESTKL+1,X
|
||||||
STA TMPL
|
STA ESTKL+1,X
|
||||||
LDA #$00
|
LDA ESTKH,X
|
||||||
TAY
|
ADC ESTKH+1,X
|
||||||
ADC IPH
|
STA ESTKH+1,X
|
||||||
STA TMPH ; ADD BRANCH OFFSET
|
INX
|
||||||
LDA TMPL
|
BNE _BRLE
|
||||||
;CLC ; BETTER NOT CARRY OUT OF IP+Y
|
|
||||||
ADC ESTKL,X
|
|
||||||
STA IPL
|
|
||||||
LDA TMPH
|
|
||||||
ADC ESTKH,X
|
|
||||||
STA IPH
|
|
||||||
JMP DROP
|
|
||||||
;*
|
;*
|
||||||
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
|
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
|
||||||
;*
|
;*
|
||||||
|
@ -29,7 +29,7 @@ predef execmod(modfile)#1
|
|||||||
//
|
//
|
||||||
// Exported CMDSYS table
|
// Exported CMDSYS table
|
||||||
//
|
//
|
||||||
word version = $0102 // 01.02
|
word version = $0202 // 02.00
|
||||||
word syspath
|
word syspath
|
||||||
word cmdlnptr
|
word cmdlnptr
|
||||||
word = @execmod
|
word = @execmod
|
||||||
@ -1428,7 +1428,7 @@ init_cons
|
|||||||
//
|
//
|
||||||
// Print PLASMA version
|
// Print PLASMA version
|
||||||
//
|
//
|
||||||
prstr("PLASMA "); prbyte(version.1); cout('.'); prbyte(version.0); crout
|
prstr("PLASMA 2.0 Dev\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||||
//
|
//
|
||||||
// Init 2K symbol table.
|
// Init 2K symbol table.
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user