Restructure project source

This commit is contained in:
David Schmenk 2014-06-12 15:23:52 -07:00
parent 5118b70b30
commit a03521eb4c
35 changed files with 99 additions and 198 deletions

18
src/inc/stdlib.plh Normal file
View File

@ -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

9
src/inc/testlib.plh Normal file
View File

@ -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

98
src/makefile Executable file → Normal file
View File

@ -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)

8
src/samplesrc/hello.pla Normal file
View File

@ -0,0 +1,8 @@
import STDLIB
predef puts
end
byte hellostr[] = "Hello, world.\n"
puts(@hellostr)
done

View File

@ -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

View File

@ -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

View File

@ -104,7 +104,7 @@ ROMEN = $C082
LCRWEN = $C083
LCBNK2 = $00
LCBNK1 = $08
!SOURCE "plvm02zp.inc"
!SOURCE "vmsrc/plvm02zp.inc"
end
;
; CALL PRODOS

View File

@ -27,6 +27,6 @@ INTERP = $03D0
JMP $1000
_CMDBEGIN = *
!PSEUDOPC $1000 {
!SOURCE "cmd.a"
!SOURCE "vmsrc/cmd.a"
_CMDEND = *
}

View File

@ -965,5 +965,5 @@ LEAVE LDY #$01
PLA
STA IFPH
RET RTS
A1CMD !SOURCE "a1cmd.a"
A1CMD !SOURCE "vmsrc/a1cmd.a"
SEGEND = *

View File

@ -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
}
;*

View File

@ -1032,5 +1032,5 @@ LEAVE LDY #$01
STA IFPH
RET RTS
SOSCMD = *
!SOURCE "soscmd.a"
!SOURCE "vmsrc/soscmd.a"
SEGEND = *

BIN
sysfiles/EDASM#FF2000 Normal file

Binary file not shown.

BIN
sysfiles/EDASM.ASM#063000 Normal file

Binary file not shown.

BIN
sysfiles/EDASM.ED#063000 Normal file

Binary file not shown.

BIN
sysfiles/EDASM.SWAP#062000 Normal file

Binary file not shown.

BIN
sysfiles/SOS.DRIVER#0C0000 Normal file

Binary file not shown.

BIN
sysfiles/SOS.KERNEL#0C0000 Normal file

Binary file not shown.