mirror of https://github.com/dschmenk/PLASMA.git
Update images to 2.11
This commit is contained in:
parent
d3b9fe14a0
commit
b1d463f4e4
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -192,7 +192,7 @@ $(PLVMZP_C64): FORCE
|
|||
FORCE:
|
||||
|
||||
vmsrc/c64/cmd.a: vmsrc/c64/cmd.pla $(PLASM)
|
||||
./$(PLASM) -AOW < vmsrc/c64/cmd.pla > vmsrc/c64/cmd.a
|
||||
./$(PLASM) -AOW vmsrc/c64/cmd.pla
|
||||
|
||||
$(PLVMC64): vmsrc/c64/plvmc64.s vmsrc/c64/cmd.a
|
||||
acme -f cbm -o $(PLVMC64) -l vmsrc/c64/plvmc64.sym vmsrc/c64/plvmc64.s
|
||||
|
|
|
@ -222,4 +222,6 @@ cp inc/spiport.plh prodos/bld/inc/SPIPORT.PLH.TXT
|
|||
cp inc/testlib.plh prodos/bld/inc/TESTLIB.PLH.TXT
|
||||
cp inc/grafix.plh prodos/bld/inc/GRAFIX.PLH.TXT
|
||||
cp inc/lz4.plh prodos/bld/inc/LZ4.PLH.TXT
|
||||
cp vmsrc/apple/plvmzp.inc prodos/bld/inc/PLVMZP.INC.TXT
|
||||
cp inc/plasma.inc prodos/bld/inc/PLASMA.INC.TXT
|
||||
cp inc/extheader.inc prodos/bld/inc/EXTHEADER.INC.TXT
|
||||
cp inc/extdefseg.inc prodos/bld/inc/EXTDEFSEG.INC.TXT
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
include "inc/cmdsys.plh"
|
||||
import test
|
||||
predef hello#0
|
||||
predef goodbye#0
|
||||
end
|
||||
|
||||
hello
|
||||
puts("Did it load?\n")
|
||||
goodbye
|
||||
hello
|
||||
done
|
||||
|
|
|
@ -1,47 +1,25 @@
|
|||
;
|
||||
; EXTENDED REL MODULE WITH DEPENDENCIES, BYTECODE SEGMENT, AND INIT
|
||||
;
|
||||
REL
|
||||
ORG $1000
|
||||
;
|
||||
; USEFUL ZERO PAGE LOCATIONS
|
||||
;
|
||||
SRC EQU $06
|
||||
SRCL EQU SRC
|
||||
SRCH EQU SRC+1
|
||||
DST EQU SRC+2
|
||||
DSTL EQU DST
|
||||
DSTH EQU DST+1
|
||||
TMP EQU $E7
|
||||
TMPL EQU TMP
|
||||
TMPH EQU TMP+1
|
||||
ESTKH EQU $C0
|
||||
ESTKL EQU $D0
|
||||
DROPOP EQU $EF
|
||||
NEXTOP EQU $F0
|
||||
FETCHOP EQU NEXTOP+1
|
||||
;
|
||||
; JUMP TO BYTECODE INTERPRETER ADDRESS
|
||||
;
|
||||
INTERP EQU $03D0
|
||||
INCLUDE INC/PLASMA.INC
|
||||
;
|
||||
; EXTERNALS USED BY THIS MODULE
|
||||
;
|
||||
EXTRN PUTS
|
||||
EXTRN PUTLN
|
||||
;
|
||||
; EXT HEADER
|
||||
; EXT REL HEADER
|
||||
;
|
||||
INCLUDE INC/EXTHEADER.INC
|
||||
;
|
||||
; ADD MODULE DEPENDENCIES
|
||||
; (DCI BACKWARDS HI/LO BIT FROM REL FILE)
|
||||
;
|
||||
DW $6502
|
||||
DW 0 ; SYSFLAGS
|
||||
DW DEFSEG ; DEF OFFSET
|
||||
DW 1 ; DEF COUNT (INCLUDING INIT)
|
||||
DW MODINIT ; MOD INIT
|
||||
MSB ON
|
||||
ASC "CMDSY" ; MOD DEPENDENCIES (DCI BACKWARDS HI/LO BIT FROM REL FILE)
|
||||
ASC "CMDSY"
|
||||
MSB OFF
|
||||
ASC "S"
|
||||
DB 0
|
||||
DB 0 ; TERMINATE LIST WITH ZERO
|
||||
;
|
||||
; DATA AND 6502 CODE SEGMENT
|
||||
;
|
||||
|
@ -66,21 +44,13 @@ GOODBYE DEF GOODBYE ; CALLABLE FROM EXTERNAL MODULES
|
|||
;
|
||||
; INITIALIZE MODULE AND RETURN SUCCESS
|
||||
;
|
||||
INIT LDA #$00
|
||||
JSR HELLO
|
||||
LDY #$00
|
||||
INIT JSR HELLO
|
||||
LDA #$00
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STY ESTKH,X
|
||||
STA ESTKH,X
|
||||
RTS
|
||||
;
|
||||
; BYTECODE DEFS SEGMENT
|
||||
; EXT REL DEFSEG
|
||||
;
|
||||
DB 0 ; PAD BYE
|
||||
DEFSEG EQU *
|
||||
;
|
||||
; INIT CODE RUNS WHEN MODULE LOADED
|
||||
;
|
||||
MODINIT DB $54 ; CALL ASM INIT
|
||||
DW INIT
|
||||
DB $5C ; RET
|
||||
INCLUDE INC/EXTDEFSEG.INC
|
||||
|
|
|
@ -1,29 +1,7 @@
|
|||
;
|
||||
; SIMPLE REL FILE - NO DEPENDENCIES, NO INIT CODE
|
||||
;
|
||||
REL
|
||||
ORG $1000
|
||||
;
|
||||
; USEFUL ZERO PAGE LOCATIONS
|
||||
;
|
||||
SRC EQU $06
|
||||
SRCL EQU SRC
|
||||
SRCH EQU SRC+1
|
||||
DST EQU SRC+2
|
||||
DSTL EQU DST
|
||||
DSTH EQU DST+1
|
||||
TMP EQU $E7
|
||||
TMPL EQU TMP
|
||||
TMPH EQU TMP+1
|
||||
ESTKH EQU $C0
|
||||
ESTKL EQU $D0
|
||||
DROPOP EQU $EF
|
||||
NEXTOP EQU $F0
|
||||
FETCHOP EQU NEXTOP+1
|
||||
;
|
||||
; JUMP TO BYTECODE INTERPRETER ADDRESS
|
||||
;
|
||||
INTERP EQU $03D0
|
||||
INCLUDE INC/PLASMA.INC
|
||||
;
|
||||
; EXTERNALS USED BY THIS MODULE
|
||||
;
|
||||
|
|
|
@ -40,7 +40,7 @@ predef sext(a)#1, divmod(a,b)#2, execmod(modfile)#1, syslookuptbl(a)#1
|
|||
//
|
||||
// Exported CMDSYS table
|
||||
//
|
||||
word version = $0210 // 02.10
|
||||
word version = $0211 // 02.11
|
||||
word syspath
|
||||
word syscmdln
|
||||
word = @execmod
|
||||
|
@ -758,9 +758,6 @@ asm cin()#1
|
|||
STA ESTKH,X
|
||||
RTS
|
||||
end
|
||||
def syslookuptbl(dci)#1
|
||||
return lookuptbl(dci, symtbl)
|
||||
end
|
||||
def crout()#0
|
||||
cout($0D)
|
||||
end
|
||||
|
@ -916,6 +913,9 @@ end
|
|||
//
|
||||
// Symbol table routines.
|
||||
//
|
||||
def syslookuptbl(dci)#1
|
||||
return lookuptbl(dci, symtbl)
|
||||
end
|
||||
def addsym(sym, addr)#0
|
||||
while ^sym & $80
|
||||
^lastsym = ^sym
|
||||
|
|
|
@ -39,7 +39,7 @@ predef lookuptbl(dci)#1, execsys(sysfile)#0
|
|||
//
|
||||
// Exported CMDSYS table
|
||||
//
|
||||
word version = $0210 // 02.01 Dev
|
||||
word version = $0211 // 02.11
|
||||
word syspath
|
||||
word syscmdln
|
||||
word = @execmod, @open, @close, @read, 0
|
||||
|
@ -1388,7 +1388,7 @@ heap = @lastdef
|
|||
//
|
||||
// Print PLASMA version
|
||||
//
|
||||
prstr("PLASMA 2.1 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
prstr("PLASMA 2.11 64K\n")
|
||||
//
|
||||
// Init symbol table.
|
||||
//
|
||||
|
|
|
@ -53,11 +53,10 @@ predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, str
|
|||
predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1, sext(a)#1, divmod(a,b)#2
|
||||
predef execmod(modfile)#1, open(path)#1, close(refnum)#1, read(refnum, buf, len)#1
|
||||
predef lookuptbl(dci)#1, execsys(sysfile)#0
|
||||
|
||||
//
|
||||
// Exported CMDSYS table
|
||||
//
|
||||
word version = $0210 // 02.10
|
||||
word version = $0211 // 02.11
|
||||
word syspath
|
||||
word syscmdln
|
||||
word = @execmod, @open, @close, @read, 0
|
||||
|
@ -1473,7 +1472,7 @@ heap = @lastdef
|
|||
//
|
||||
// Print PLASMA version
|
||||
//
|
||||
prstr("PLASMA 2.1 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
prstr("PLASMA 2.11 128K\n")
|
||||
//
|
||||
// Init symbol table.
|
||||
//
|
||||
|
|
|
@ -45,12 +45,12 @@ predef syslookuptbl(dci)#1
|
|||
//
|
||||
// Exported CMDSYS table
|
||||
//
|
||||
word version = $0210 // 02.10
|
||||
word version = $0211 // 02.11
|
||||
word syspath
|
||||
word cmdlnptr
|
||||
word = @execmod, @open, @close, @read, @write
|
||||
byte perr
|
||||
byte jitcount = 0 // Keep these here for compatibility
|
||||
byte jitcount = 0
|
||||
byte jitsize = 0
|
||||
byte refcons = 0
|
||||
byte devcons = 0
|
||||
|
@ -1284,7 +1284,7 @@ cmdlnptr = @cmdln
|
|||
// Print PLASMA version
|
||||
//
|
||||
init_cons
|
||||
prstr("PLASMA 2.1\n")//; putb(version.1); putc('.'); putb(version.0); putln
|
||||
prstr("PLASMA 2.11\n")
|
||||
prstr("MEM:$"); prword(availheap); crout
|
||||
//
|
||||
// Exec command line parser
|
||||
|
|
|
@ -56,7 +56,7 @@ predef syslookuptbl(dci)#1
|
|||
//
|
||||
// Exported CMDSYS table
|
||||
//
|
||||
word version = $0210 // 02.10
|
||||
word version = $0211 // 02.11
|
||||
word syspath
|
||||
word cmdlnptr
|
||||
word = @execmod, @open, @close, @read, @write
|
||||
|
@ -1307,7 +1307,7 @@ cmdlnptr = @cmdln
|
|||
// Print PLASMA version
|
||||
//
|
||||
init_cons
|
||||
prstr("PLASMA 2.1 JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln
|
||||
prstr("PLASMA 2.11 JITC\n")
|
||||
prstr("MEM:$"); prword(availheap); crout
|
||||
//
|
||||
// Exec command line parser
|
||||
|
|
|
@ -26,17 +26,19 @@ predef cin()#1, rdstr(p)#1, toupper(c)#1, strcpy(dst,src)#1, strcat(dst,src)#1
|
|||
predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr), releaseheap(newheap)#1, availheap()#1
|
||||
predef memset(addr,value,size)#0, memcpy(dst,src,size)#0
|
||||
predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1
|
||||
predef sext(a)#1, divmod(a,b)#2, execmod(modfile)#1
|
||||
predef sext(a)#1, divmod(a,b)#2, execmod(modfile)#1, syslookuptbl(dci)#1
|
||||
//
|
||||
// Exported CMDSYS table
|
||||
//
|
||||
word version = $0200 // 02.00
|
||||
word version = $0211 // 02.11
|
||||
word syspath
|
||||
word syscmdln
|
||||
word = @execmod, 0, 0, 0, 0
|
||||
byte perr
|
||||
byte jitcount = 0
|
||||
byte jitsize = 0
|
||||
word = 0
|
||||
word = @syslookuptbl
|
||||
//
|
||||
// String pool.
|
||||
//
|
||||
|
@ -651,25 +653,42 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
BEQ RLDEX ; END OF RLD
|
||||
PHA
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
CLC
|
||||
ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX
|
||||
STA DSTL
|
||||
INY
|
||||
LDA (SRC),Y
|
||||
ADC ESTKH+3,X
|
||||
STA DSTH
|
||||
PLA
|
||||
LDY #$00
|
||||
LDA (SRC),Y
|
||||
AND #$10 ; EXTERN REF - EXIT
|
||||
BNE RLDEX
|
||||
TAY ; FIXUP=*ADDR+MODOFST
|
||||
LDA (SRC),Y
|
||||
BMI FIX16
|
||||
AND #$40
|
||||
BNE FIXMSB
|
||||
FIXLSB LDA (DST),Y
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIXMSB LDY #$03
|
||||
LDA (SRC),Y ; FIXUPH=(ENTRY->3+MODOFSTL)+(^ADDR+MODOFSTH)
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
LDY #$00
|
||||
LDA (DST),Y
|
||||
INY
|
||||
ADC ESTKH+2,X
|
||||
CLC
|
||||
BCC FIX8
|
||||
FIX16 LDA (DST),Y ; FIXUP=*ADDR+MODOFST
|
||||
CLC
|
||||
ADC ESTKL+2,X
|
||||
STA TMPL
|
||||
INY
|
||||
LDA (DST),Y
|
||||
ADC ESTKH+2,X
|
||||
CMP ESTKH+1,X ; FIXUP >= BYTECODE?
|
||||
|
@ -683,7 +702,7 @@ asm reloc(modfix, modofst, bytecode, rld)#3
|
|||
+ STA (DST),Y ; *ADDR=FIXUP
|
||||
DEY
|
||||
LDA TMPL
|
||||
STA (DST),Y
|
||||
FIX8 STA (DST),Y
|
||||
LDA SRCL ; NEXT ENTRY
|
||||
; CLC
|
||||
ADC #$04
|
||||
|
@ -823,6 +842,9 @@ end
|
|||
//
|
||||
// Symbol table routines.
|
||||
//
|
||||
def syslookuptbl(dci)#1
|
||||
return lookuptbl(dci, symtbl)
|
||||
end
|
||||
def addsym(sym, addr)#0
|
||||
while ^sym & $80
|
||||
^lastsym = ^sym
|
||||
|
@ -1078,7 +1100,7 @@ heap = *freemem
|
|||
//
|
||||
// Print PLASMA version
|
||||
//
|
||||
prstr("\nPLASMA 2.0 Dev\n") //; prbyte(version.1); cout('.'); prbyte(version.0); crout
|
||||
prstr("\nPLASMA 2.11\n")
|
||||
//
|
||||
// Init symbol table.
|
||||
//
|
||||
|
|
|
@ -121,8 +121,8 @@ OPTBL !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 00 02
|
|||
!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
|
||||
!WORD ADDLB,ADDLW,ADDAB,ADDAW,IDXLB,IDXLW,IDXAB,IDXAW ; B0 B2 B4 B6 B8 BA BC BE
|
||||
!WORD NATV ; C0
|
||||
;*
|
||||
!WORD NATV,JUMPZ,JUMP ; C0 C2 C4
|
||||
;;*
|
||||
;* DIV TOS-1 BY TOS
|
||||
;*
|
||||
DIV JSR _DIV
|
||||
|
@ -1193,6 +1193,28 @@ NATV TYA ; FLATTEN IP
|
|||
JMP (IP)
|
||||
+ INC IPH
|
||||
JMP (IP)
|
||||
;*
|
||||
;* JUMPS FOR FORTH COMPILER
|
||||
;*
|
||||
JUMPZ INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
BEQ JUMP
|
||||
INY ;+INC_IP
|
||||
INY
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
JUMP INY
|
||||
LDA (IP),Y
|
||||
PHA
|
||||
INY
|
||||
LDA (IP),Y
|
||||
STA IPH
|
||||
PLA
|
||||
STA IPL
|
||||
LDY #$00
|
||||
JMP FETCHOP
|
||||
CMD !SOURCE "vmsrc/c64/cmd.a"
|
||||
SEGEND = *
|
||||
VMINIT JSR $FFE7 ; CLOSE ALL CHANNELS
|
||||
|
|
Loading…
Reference in New Issue