mirror of
https://github.com/dschmenk/PLASMA.git
synced 2026-04-27 03:18:02 +00:00
Restructure project source
This commit is contained in:
1 parent
5118b70b30
commit
a03521eb4c
35 files changed
+99
-198
No files matched your search
@@ -0,0 +1,18 @@
|
||||
import stdlib
|
||||
predef putc, putln, puts, getc, gets
|
||||
predef call, syscall
|
||||
predef heapmark, heapallocallign, heapalloc, heaprelease, heapavail
|
||||
predef memset, memcpy
|
||||
predef isugt, isuge, isult, isule
|
||||
predef load, exec
|
||||
word MACHID, sysvars
|
||||
;
|
||||
; System flags: memory allocator screen holes.
|
||||
;
|
||||
const restxt1 = $0001
|
||||
const restxt2 = $0002
|
||||
const reshgr1 = $0004
|
||||
const reshgr2 = $0008
|
||||
const resxhgr1 = $0010
|
||||
const resxhgr2 = $0020
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
import testlib
|
||||
predef puti, putln
|
||||
word print
|
||||
const dec = 0
|
||||
const hex = 2
|
||||
const newln = 4
|
||||
const str = 6
|
||||
const char = 8
|
||||
end
|
||||
Executable → Regular
+57
-41
@@ -1,16 +1,19 @@
|
||||
.SUFFIXES =
|
||||
AFLAGS = -o $@
|
||||
LFLAGS = -C default.cfg
|
||||
PLVM = plvm
|
||||
PLVM01 = A1PLASMA\#060280
|
||||
PLVM02 = PLASMA.SYSTEM\#FF2000
|
||||
PLVM03 = SOS.INTERP\#050000
|
||||
CMD = CMD\#FF2000
|
||||
ROD = ROD\#FE1000
|
||||
HELLO = HELLO\#FE1000
|
||||
HGR1 = HGR1\#FE1000
|
||||
HGR1TEST= HGR1TEST\#FE1000
|
||||
TEST = TEST\#FE1000
|
||||
TESTLIB = TESTLIB\#FE1000
|
||||
PLASM = plasm
|
||||
INCS = tokens.h symbols.h lex.h parse.h codegen.h
|
||||
OBJS = plasm.c parse.o lex.o codegen.o
|
||||
INCS = toolsrc/tokens.h toolsrc/symbols.h toolsrc/lex.h toolsrc/parse.h toolsrc/codegen.h
|
||||
OBJS = toolsrc/plasm.c toolsrc/parse.o toolsrc/lex.o toolsrc/codegen.o
|
||||
#
|
||||
# Image filetypes for Virtual ][
|
||||
#
|
||||
@@ -21,62 +24,75 @@ TXTTYPE = .TXT
|
||||
#
|
||||
# Image filetypes for CiderPress
|
||||
#
|
||||
#RELTYPE = \#fe1000
|
||||
#RELTYPE = \#FE1000
|
||||
#INTERPTYPE = \#050000
|
||||
#BINTYPE = \#060000
|
||||
#SYSTYPE = \#ff2000
|
||||
#SYSTYPE = \#FF2000
|
||||
#TXTTYPE = \#040000
|
||||
|
||||
all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(ROD) $(HGR1)
|
||||
|
||||
clean:
|
||||
-rm *.o *~ *.a *.SYM $(CMD) *\#FE1000 $(ROD) $(HGR1) $(PLASM) $(PLVM)
|
||||
-rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03)
|
||||
-rm toolsrc/*.o toolsrc/*~ toolsrc/*.a
|
||||
-rm vmsrc/*.o vmsrc/*~ vmsrc/*.a vmsrc/*.sym
|
||||
-rm samplesrc/*.o samplesrc/*~ samplesrc/*.a
|
||||
|
||||
#
|
||||
# PLASMA compiler: plasm
|
||||
#
|
||||
$(PLASM): $(OBJS) $(INCS)
|
||||
cc $(OBJS) -o $(PLASM)
|
||||
|
||||
$(PLVM): plvm.c
|
||||
cc plvm.c -o $(PLVM)
|
||||
#
|
||||
# PLASMA VMs
|
||||
#
|
||||
$(PLVM): vmsrc/plvm.c
|
||||
cc vmsrc/plvm.c -o $(PLVM)
|
||||
|
||||
a1cmd.a: a1cmd.pla $(PLASM)
|
||||
./$(PLASM) -A < a1cmd.pla > a1cmd.a
|
||||
vmsrc/a1cmd.a: vmsrc/a1cmd.pla $(PLASM)
|
||||
./$(PLASM) -A < vmsrc/a1cmd.pla > vmsrc/a1cmd.a
|
||||
|
||||
$(PLVM01): plvm01.s a1cmd.a
|
||||
acme -o $(PLVM01) -l PLVM01.SYM plvm01.s
|
||||
$(PLVM01): vmsrc/plvm01.s vmsrc/a1cmd.a
|
||||
acme -o $(PLVM01) -l vmsrc/plvm01.sym vmsrc/plvm01.s
|
||||
|
||||
cmdexec.a: cmdexec.pla $(PLASM)
|
||||
./$(PLASM) -A < cmdexec.pla > cmdexec.a
|
||||
vmsrc/cmdexec.a: vmsrc/cmdexec.pla $(PLASM)
|
||||
./$(PLASM) -A < vmsrc/cmdexec.pla > vmsrc/cmdexec.a
|
||||
|
||||
$(PLVM02): plvm02.s cmdexec.a
|
||||
acme -o $(PLVM02) -l PLVM02.SYM plvm02.s
|
||||
$(PLVM02): vmsrc/plvm02.s vmsrc/cmdexec.a
|
||||
acme -o $(PLVM02) -l vmsrc/plvm02.sym vmsrc/plvm02.s
|
||||
|
||||
soscmd.a: soscmd.pla $(PLASM)
|
||||
./$(PLASM) -A < soscmd.pla > soscmd.a
|
||||
vmsrc/soscmd.a: vmsrc/soscmd.pla $(PLASM)
|
||||
./$(PLASM) -A < vmsrc/soscmd.pla > vmsrc/soscmd.a
|
||||
|
||||
$(PLVM03): plvm03.s soscmd.a
|
||||
acme -o $(PLVM03) -l PLVM03.SYM plvm03.s
|
||||
$(PLVM03): vmsrc/plvm03.s vmsrc/soscmd.a
|
||||
acme -o $(PLVM03) -l vmsrc/plvm03.sym vmsrc/plvm03.s
|
||||
|
||||
$(CMD): cmd.pla cmdstub.s $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -A < cmd.pla > cmd.a
|
||||
acme --setpc 8192 -o $(CMD) cmdstub.s
|
||||
$(CMD): vmsrc/cmd.pla vmsrc/cmdstub.s $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -A < vmsrc/cmd.pla > vmsrc/cmd.a
|
||||
acme --setpc 8192 -o $(CMD) vmsrc/cmdstub.s
|
||||
|
||||
test: test.pla testlib.pla $(PLVM) $(PLASM)
|
||||
m4 < test.pla | ./$(PLASM) -AM > test.a
|
||||
acme --setpc 4094 -o TEST#FE1000 test.a
|
||||
m4 < testlib.pla | ./$(PLASM) -AM > testlib.a
|
||||
acme --setpc 4094 -o TESTLIB#FE1000 testlib.a
|
||||
./$(PLVM) TEST\#FE1000
|
||||
#
|
||||
# Sample code
|
||||
#
|
||||
test: samplesrc/test.pla samplesrc/testlib.pla $(PLVM) $(PLASM)
|
||||
m4 -I inc < samplesrc/test.pla | ./$(PLASM) -AM > samplesrc/test.a
|
||||
acme --setpc 4094 -o $(TEST) samplesrc/test.a
|
||||
m4 -I inc < samplesrc/testlib.pla | ./$(PLASM) -AM > samplesrc/testlib.a
|
||||
acme --setpc 4094 -o $(TESTLIB) samplesrc/testlib.a
|
||||
./$(PLVM) $(TEST)
|
||||
|
||||
$(ROD): rod.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AM < rod.pla > rod.a
|
||||
acme --setpc 4094 -o $(ROD) rod.a
|
||||
$(ROD): samplesrc/rod.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AM < samplesrc/rod.pla > samplesrc/rod.a
|
||||
acme --setpc 4094 -o $(ROD) samplesrc/rod.a
|
||||
|
||||
$(HGR1): hgr1.pla hgr1test.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AM < hgr1test.pla > hgr1test.a
|
||||
acme --setpc 4094 -o HGR1TEST.REL#FE1000 hgr1test.a
|
||||
./$(PLASM) -AM < hgr1.pla > hgr1.a
|
||||
acme --setpc 4094 -o $(HGR1) hgr1.a
|
||||
$(HGR1): samplesrc/hgr1.pla samplesrc/hgr1test.pla $(PLVM02) $(PLASM)
|
||||
./$(PLASM) -AM < samplesrc/hgr1test.pla > samplesrc/hgr1test.a
|
||||
acme --setpc 4094 -o $(HGR1TEST) samplesrc/hgr1test.a
|
||||
./$(PLASM) -AM < samplesrc/hgr1.pla > samplesrc/hgr1.a
|
||||
acme --setpc 4094 -o $(HGR1) samplesrc/hgr1.a
|
||||
|
||||
hello: hello.pla $(PLVM) $(PLASM)
|
||||
m4 < hello.pla | ./$(PLASM) -AM > hello.a
|
||||
acme --setpc 4094 -o HELLO#FE1000 hello.a
|
||||
./$(PLVM) HELLO#FE1000
|
||||
hello: samplesrc/hello.pla $(PLVM) $(PLASM)
|
||||
m4 -I inc < samplesrc/hello.pla | ./$(PLASM) -AM > samplesrc/hello.a
|
||||
acme --setpc 4094 -o $(HELLO) samplesrc/hello.a
|
||||
./$(PLVM) $(HELLO)
|
||||
@@ -0,0 +1,8 @@
|
||||
import STDLIB
|
||||
predef puts
|
||||
end
|
||||
|
||||
byte hellostr[] = "Hello, world.\n"
|
||||
|
||||
puts(@hellostr)
|
||||
done
|
||||
File renamed without changes.
@@ -54,7 +54,7 @@ word hcolor[] = $0000,$552A,$2A55,$7F7F,$8080,$D5AA,$AAD5,$FFFF
|
||||
; def draw_scan(d8p8, scanptr)
|
||||
;
|
||||
asm draw_scan
|
||||
!SOURCE "plvm02zp.inc"
|
||||
!SOURCE "vmsrc/plvm02zp.inc"
|
||||
WFIXL = $80
|
||||
WFIXH = $81
|
||||
WINT = $82
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
-150
@@ -1,150 +0,0 @@
|
||||
;
|
||||
; Sample PLASMA library.
|
||||
;
|
||||
!TO "samplib.bin", PLAIN
|
||||
* = $1000
|
||||
;
|
||||
; DATA/CODE SEGMENT
|
||||
;
|
||||
_SEGBEGIN
|
||||
!WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT
|
||||
;
|
||||
; MODULE HEADER
|
||||
;
|
||||
!WORD $DA7E ; MAGIC #
|
||||
!WORD _SUBSEG ; BYTECODE SUB-SEGMENT
|
||||
!WORD _INIT ; BYTECODE INIT ROUTINE
|
||||
;
|
||||
; MODULE DEPENDENCY LIST
|
||||
; NOTE: DCI = PSUEDO OP FOR ASCII STRING WITH HI BIT SET EXCEPT LAST CHAR
|
||||
;
|
||||
;DCI "STDLIB"
|
||||
!CT "hi.ascii"
|
||||
!TX "STDLI"
|
||||
!CT RAW
|
||||
!TX 'B'
|
||||
;DCI "FILEIO"
|
||||
!CT "hi.ascii"
|
||||
!TX "FILEI"
|
||||
!CT RAW
|
||||
!TX 'O'
|
||||
!BYTE 0
|
||||
;
|
||||
; NATIVE CODE + GLOBAL DATA
|
||||
;
|
||||
COUNT !WORD 0
|
||||
INCCNT
|
||||
FIXUP1 INC COUNT
|
||||
BNE XINIT
|
||||
FIXUP2 INC COUNT+1
|
||||
XINIT RTS
|
||||
;
|
||||
; BYTECODE SUB-SEGMENT
|
||||
;
|
||||
_SUBSEG
|
||||
MYFUNC !BYTE $58, $01, $16 ; ENTER 1,16
|
||||
!BYTE $66, $02 ; LLW 2
|
||||
!BYTE $2A, $01 ; CB 1
|
||||
!BYTE $54 ; CALL EXTERN(1) "OPEN"
|
||||
FIXUP4 !WORD $0000
|
||||
!BYTE $6E, $04 ; DLW 4
|
||||
!BYTE $54 ; CALL EXTERN(3) "READ"
|
||||
FIXUP5 !WORD $0000
|
||||
!BYTE $30 ; DROP
|
||||
!BYTE $66, $04 ; LLW 4
|
||||
!BYTE $54 ; CALL EXTERN(2) ; "CLOSE"
|
||||
FIXUP6 !WORD $0000
|
||||
!BYTE $30 ; DROP
|
||||
!BYTE $6A ; LAW COUNT
|
||||
FIXUP7 !WORD $0000
|
||||
!BYTE $54 ; CALL INCNT
|
||||
FIXUP8 !WORD $0000
|
||||
!BYTE $5A ; LEAVE
|
||||
_INIT
|
||||
!BYTE $5C ; RET
|
||||
;
|
||||
; END OF CODE/DATA + BYTECODE SEGMENT
|
||||
;
|
||||
_SEGEND
|
||||
;
|
||||
; BYTCODE FUNCTION DICTIONARY
|
||||
;
|
||||
!BYTE $A1 ; FIXUP FLAGS
|
||||
!WORD MYFUNC ; FIXUP OFFSET
|
||||
!BYTE $00 ; FIXUP LO BYTE (OF HI BYTE)/IMPORT INDEX
|
||||
;
|
||||
; RE-LOCATION DICTIONARY (FIXUP TABLE)
|
||||
;
|
||||
!BYTE $81 ; FIXUP FLAGS
|
||||
!WORD FIXUP1+1 ; FIXUP OFFSET
|
||||
!BYTE $00 ; FIXUP LO BYTE (OF HI BYTE)/IMPORT INDEX
|
||||
!BYTE $81
|
||||
!WORD FIXUP2+1
|
||||
!BYTE $00
|
||||
!BYTE $91 ; IMPORT FIXUP
|
||||
!WORD FIXUP4
|
||||
!BYTE $01 ; IMPORT INDEX 1
|
||||
!BYTE $91
|
||||
!WORD FIXUP5
|
||||
!BYTE $03
|
||||
!BYTE $91
|
||||
!WORD FIXUP6
|
||||
!BYTE $02
|
||||
!BYTE $81
|
||||
!WORD FIXUP7
|
||||
!BYTE $00
|
||||
!BYTE $81
|
||||
!WORD FIXUP8
|
||||
!BYTE $00
|
||||
!BYTE 0 ; END OF RLD
|
||||
;
|
||||
; EXTERNAL/ENTRY SYMBOL DIRECTORY
|
||||
;;
|
||||
; IMPORT TABLE
|
||||
;
|
||||
IMPTBL ;DCI "OPEN" ; EXTERNAL SYMBOL NAME
|
||||
!CT "hi.ascii"
|
||||
!TX "OPE"
|
||||
!CT RAW
|
||||
!TX 'N'
|
||||
!BYTE $10 ; EXTERNAL SYMBOL FLAG
|
||||
!WORD 1 ; SYMBOL INDEX
|
||||
;DCI "CLOSE"
|
||||
!CT "hi.ascii"
|
||||
!TX "CLOS"
|
||||
!CT RAW
|
||||
!TX 'E'
|
||||
!BYTE $10
|
||||
!WORD 2
|
||||
;DCI "READ"
|
||||
!CT "hi.ascii"
|
||||
!TX "REA"
|
||||
!CT RAW
|
||||
!TX 'D'
|
||||
!BYTE $10
|
||||
!WORD 3
|
||||
;DCI "MEMSET"
|
||||
!CT "hi.ascii"
|
||||
!TX "MEMSE"
|
||||
!CT RAW
|
||||
!TX 'T'
|
||||
!BYTE $10
|
||||
!WORD 4
|
||||
;
|
||||
; EXPORT TABLE
|
||||
;
|
||||
EXPTBL ;DCI "INCNT" ; ENTRY SYMBOL NAME
|
||||
!CT "hi.ascii"
|
||||
!TX "INCN"
|
||||
!CT RAW
|
||||
!TX 'T'
|
||||
!BYTE $08 ; ENTRY SYMBOL FLAG
|
||||
!WORD INCCNT ; OFFSET
|
||||
;DCI "MYFUNC"
|
||||
!CT "hi.ascii"
|
||||
!TX "MYFUN"
|
||||
!CT RAW
|
||||
!TX 'C'
|
||||
!BYTE $08
|
||||
!WORD MYFUNC
|
||||
!BYTE 0 ; END OF ESD
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -104,7 +104,7 @@ ROMEN = $C082
|
||||
LCRWEN = $C083
|
||||
LCBNK2 = $00
|
||||
LCBNK1 = $08
|
||||
!SOURCE "plvm02zp.inc"
|
||||
!SOURCE "vmsrc/plvm02zp.inc"
|
||||
end
|
||||
;
|
||||
; CALL PRODOS
|
||||
File renamed without changes.
@@ -27,6 +27,6 @@ INTERP = $03D0
|
||||
JMP $1000
|
||||
_CMDBEGIN = *
|
||||
!PSEUDOPC $1000 {
|
||||
!SOURCE "cmd.a"
|
||||
!SOURCE "vmsrc/cmd.a"
|
||||
_CMDEND = *
|
||||
}
|
||||
File renamed without changes.
@@ -965,5 +965,5 @@ LEAVE LDY #$01
|
||||
PLA
|
||||
STA IFPH
|
||||
RET RTS
|
||||
A1CMD !SOURCE "a1cmd.a"
|
||||
A1CMD !SOURCE "vmsrc/a1cmd.a"
|
||||
SEGEND = *
|
||||
@@ -38,7 +38,7 @@ ALTRDOFF= $C002
|
||||
ALTRDON = $C003
|
||||
ALTWROFF= $C004
|
||||
ALTWRON = $C005
|
||||
!SOURCE "plvm02zp.inc"
|
||||
!SOURCE "vmsrc/plvm02zp.inc"
|
||||
STRBUF = $0280
|
||||
;**********************************************************
|
||||
;*
|
||||
@@ -260,7 +260,7 @@ START LDA #$00
|
||||
LDA #$BF
|
||||
STA IFPH
|
||||
LDX #ESTKSZ/2
|
||||
!SOURCE "cmdexec.a"
|
||||
!SOURCE "vmsrc/cmdexec.a"
|
||||
DISABLE80 !BYTE 21, 13, '1', 26, 13
|
||||
}
|
||||
;*
|
||||
File renamed without changes.
@@ -1032,5 +1032,5 @@ LEAVE LDY #$01
|
||||
STA IFPH
|
||||
RET RTS
|
||||
SOSCMD = *
|
||||
!SOURCE "soscmd.a"
|
||||
!SOURCE "vmsrc/soscmd.a"
|
||||
SEGEND = *
|
||||
File renamed without changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in new issue
Block a user