mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-04-07 16:41:59 +00:00
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.
BIN
images/apple/PLASMA-2.11-UPD.po
Normal file
BIN
images/apple/PLASMA-2.11-UPD.po
Normal file
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…
x
Reference in New Issue
Block a user