mirror of
https://github.com/dschmenk/PLASMA.git
synced 2024-06-01 03:41:34 +00:00
Compare commits
9 Commits
919339041a
...
fa94f4c8d8
Author | SHA1 | Date | |
---|---|---|---|
|
fa94f4c8d8 | ||
|
b3f6c7970a | ||
|
bc1cf8368d | ||
|
7aed4d4d4a | ||
|
d9d57f383d | ||
|
3424b085cf | ||
|
eefd9ba2dd | ||
|
9587423c46 | ||
|
d4dee597dc |
|
@ -53,16 +53,24 @@ While running code, `<CTRL-C>` will break out and return to the interpreter.
|
|||
|
||||
`PLASMA zzzz`: Create word `zzzz` with code address from `LOOKUP`
|
||||
|
||||
### Word to run a script:
|
||||
### Words to run a script:
|
||||
|
||||
`SRC`: Source filename on stack as input. Can be nested
|
||||
|
||||
`SRC" ssss"`: Source file `ssss` as input. Can be nested
|
||||
|
||||
### Word for compiler modes:
|
||||
`ENDSRC`: End sourcing file as input if stack flag non-zero
|
||||
|
||||
### Words for compiler modes:
|
||||
|
||||
`PBC`: Compile into PLASMA Byte Code
|
||||
|
||||
`ITC`: Compile into Indirect Threaded Code
|
||||
|
||||
### Word for converting string to number:
|
||||
|
||||
`?NUM`: Convert string and length to number, returning number and valid flag
|
||||
|
||||
## Debugging vs Performance
|
||||
|
||||
PLFORTH defaults to compiling using ITC (Indirect Threaded Code). This supports a list of inspection and debugging features while developing programs and scripts. However, the compiler can easily switch to PBC (PLASMA Byte Code) to greatly improve performance, but most of the debugging tools are lost. ITC compiled words and PBC compiled words can be intermingled and call each other seemlessly. PLASMA Byte Code is a direct match to many low-level FORTH constructs.
|
||||
|
|
Binary file not shown.
|
@ -1,3 +1,5 @@
|
|||
make apple
|
||||
|
||||
cp rel/apple/CMD#061000 prodos/CMD.BIN
|
||||
cp rel/apple/CMD128#061000 prodos/CMD128.BIN
|
||||
cp rel/apple/PLASMA.SYSTEM#FF2000 prodos/PLASMA.SYSTEM.SYS
|
||||
|
@ -286,3 +288,6 @@ 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
|
||||
|
||||
open /Applications/Virtual\ \]\[/Virtual\ \]\[.app/
|
||||
|
|
@ -1,32 +1,6 @@
|
|||
: ?PLASMA
|
||||
" IFACE" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" PLASMA.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?PLASMA ( Load PLASMA if not already )
|
||||
|
||||
: ?CONIO
|
||||
" CONIOAPI" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" CONIO.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?CONIO ( Load CONIO if not already )
|
||||
|
||||
: ?GRLIB
|
||||
" GRLIB" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" GRLIB.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?GRLIB ( Load GRLIB if not already )
|
||||
SRC" PLASMA.4TH"
|
||||
SRC" CONIO.4TH"
|
||||
SRC" GRLIB.4TH"
|
||||
|
||||
5 VARIABLE BALLCLR
|
||||
10 VARIABLE BALLX
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
' CONIOAPI ENDSRC ( Avoid multiple loads )
|
||||
|
||||
( LOADMOD" CONIO" CONIO is already available in plforth )
|
||||
|
||||
LOOKUP CONIO CONSTANT CONIOAPI
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
' FILEIOAPI ENDSRC ( Avoid multiple loads )
|
||||
|
||||
( LOADMOD" FILEIO" FILEIO is already available in plforth )
|
||||
|
||||
LOOKUP FILEIO CONSTANT FILEIOAPI
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
' FPULIB ENDSRC ( Avoid multipe loads )
|
||||
|
||||
" SANE" LOADMOD" "
|
||||
" FPSTR" LOADMOD" "
|
||||
" FPU" LOADMOD" "
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
' GRMODE ENDSRC ( Avoid multiple loads )
|
||||
|
||||
" GRLIB" LOADMOD" "
|
||||
|
||||
LOOKUP GRPLOT PLASMA GRPLOT
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
' HGRMODE ENDSRC ( Avoid multiple loads )
|
||||
|
||||
" HGRLIB" LOADMOD" "
|
||||
|
||||
LOOKUP HGRPLOT PLASMA HGRPLOT
|
||||
|
|
|
@ -2,35 +2,9 @@ LOOKUP HRFORTH ( HGR page 1 reserved )
|
|||
LOOKUP HR2FORTH ( HGR page 1 and 2 reserved )
|
||||
OR NOT ABORT" Must run with HRFORTH."
|
||||
|
||||
: ?PLASMA
|
||||
" IFACE" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" PLASMA.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?PLASMA ( Load PLASMA if not already )
|
||||
|
||||
: ?CONIO
|
||||
" CONIOAPI" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" CONIO.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?CONIO ( Load CONIO if not already )
|
||||
|
||||
: ?HGRLIB
|
||||
" HGRLIB" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" HGRLIB.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?HGRLIB ( Load GRLIB if not already )
|
||||
SRC" PLASMA.4TH"
|
||||
SRC" CONIO.4TH"
|
||||
SRC" HGRLIB.4TH"
|
||||
|
||||
5 VARIABLE BALLCLR
|
||||
10 VARIABLE BALLX
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
' DVAR ENDSRC ( Avoid multiple loads )
|
||||
|
||||
" INT32" LOADMOD" "
|
||||
|
||||
LOOKUP ZERO32 PLASMA ZERO32 ( -- )
|
||||
|
|
|
@ -1,72 +1,29 @@
|
|||
' IFACE ENDSRC ( Avoid multiple loads )
|
||||
: IFACE 2 * + @ ;
|
||||
|
||||
LOOKUP CMDSYS 0 IFACE CONSTANT PLASMAVER
|
||||
LOOKUP CMDSYS 2 IFACE CONSTANT CMDLINE
|
||||
LOOKUP CMDSYS 3 IFACE PLASMA EXECMOD
|
||||
LOOKUP STRCPY PLASMA STRCPY
|
||||
LOOKUP STRCAT PLASMA STRCAT
|
||||
LOOKUP TOUPPER PLASMA TOUPPER
|
||||
LOOKUP HEAPAVAIL PLASMA FREEMEM
|
||||
|
||||
: PLASMAVER.
|
||||
PLASMAVER 12 RSHIFT $0F AND CHAR 0 + EMIT
|
||||
PLASMAVER 8 RSHIFT $0F AND CHAR 0 + EMIT
|
||||
CHAR . EMIT
|
||||
PLASMAVER 4 RSHIFT $0F AND CHAR 0 + EMIT
|
||||
PLASMAVER $0F AND CHAR 0 + EMIT
|
||||
;
|
||||
|
||||
: LOADMOD ( modulename paramstr -- )
|
||||
CMDLINE " . " STRCPY DROP ( Dummy parameter for module name )
|
||||
CMDLINE SWAP STRCAT DROP
|
||||
EXECMOD 0< ABORT" Failed to load module"
|
||||
;
|
||||
|
||||
CMDLINE " . " STRCPY DROP ( Module name )
|
||||
CMDLINE SWAP STRCAT DROP ( Parameter string )
|
||||
EXECMOD 0< ABORT" Failed to load module" ;
|
||||
: LOADMOD" ( modulename -- )
|
||||
PAD SWAP STRCPY ( Move module name out of the way in case its immediate )
|
||||
34 WORD ( Build a string from input )
|
||||
LOADMOD
|
||||
;
|
||||
|
||||
: EDIT
|
||||
" ED" " " LOADMOD
|
||||
;
|
||||
|
||||
: EDIT"
|
||||
" ED" LOADMOD"
|
||||
;
|
||||
|
||||
: CAT
|
||||
" CAT" " " LOADMOD
|
||||
;
|
||||
|
||||
: CAT"
|
||||
" CAT" LOADMOD"
|
||||
;
|
||||
|
||||
: DEL"
|
||||
" DEL" LOADMOD"
|
||||
;
|
||||
|
||||
: REN"
|
||||
" REN" LOADMOD"
|
||||
;
|
||||
|
||||
: COPY"
|
||||
" COPY" LOADMOD"
|
||||
;
|
||||
|
||||
: NEWDIR"
|
||||
" NEWDIR" LOADMOD"
|
||||
;
|
||||
|
||||
CHAR " WORD ( Build a string from input )
|
||||
LOADMOD ;
|
||||
: EDIT " ED" " " LOADMOD ;
|
||||
: EDIT" " ED" LOADMOD" ;
|
||||
: CAT " CAT" " " LOADMOD ;
|
||||
: CAT" " CAT" LOADMOD" ;
|
||||
: DEL" " DEL" LOADMOD" ;
|
||||
: REN" " REN" LOADMOD" ;
|
||||
: COPY" " COPY" LOADMOD" ;
|
||||
: NEWDIR" " NEWDIR" LOADMOD" ;
|
||||
LOOKUP FILEIO 0 IFACE PLASMA GETPFX
|
||||
LOOKUP FILEIO 1 IFACE PLASMA SETPFX
|
||||
|
||||
: PFX.
|
||||
HERE GETPFX DROP HERE (.")
|
||||
;
|
||||
|
||||
: PFX"
|
||||
34 WORD SETPFX DROP
|
||||
;
|
||||
HERE FENCE
|
||||
: PFX. HERE GETPFX DROP HERE (.") ;
|
||||
: PFX" 34 WORD SETPFX DROP ;
|
|
@ -1,22 +1,5 @@
|
|||
: ?PLASMA
|
||||
" IFACE" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" PLASMA.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?PLASMA ( Load PLASMA if not already )
|
||||
|
||||
: ?CONIO
|
||||
" CONIOAPI" FIND
|
||||
SWAP DROP
|
||||
0= IF
|
||||
" CONIO.4TH" SRC
|
||||
THEN
|
||||
;
|
||||
|
||||
?CONIO ( Load CONIO if not already )
|
||||
SRC" PLASMA.4TH"
|
||||
SRC" CONIO.4TH"
|
||||
|
||||
0 VARIABLE K
|
||||
0 VARIABLE W
|
||||
|
|
18
src/tftp4th
Executable file
18
src/tftp4th
Executable file
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
# FORTH and scripts
|
||||
echo "SYS/PLFORTH"; atftp --option "disable windowsize" $1 --put -l rel/PLFORTH#FE1000 -r $2/SYS/PLFORTH#FE1000
|
||||
echo "SYS/HRFORTH"; atftp --option "disable windowsize" $1 --put -l rel/HRFORTH#FE1000 -r $2/SYS/HRFORTH#FE1000
|
||||
echo "SYS/HR2FORTH"; atftp --option "disable windowsize" $1 --put -l rel/HR2FORTH#FE1000 -r $2/SYS/HR2FORTH#FE1000
|
||||
echo "SCRIPTS/CONIO.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/conio.4th -r $2/SYS/SCRIPTS/CONIO.4TH#040000
|
||||
echo "SCRIPTS/FILEIO.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/fileio.4th -r $2/SYS/SCRIPTS/FILEIO.4TH#040000
|
||||
echo "SCRIPTS/FPU.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/fpu.4th -r $2/SYS/SCRIPTS/FPU.4TH#040000
|
||||
echo "SCRIPTS/GRLIB.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/grlib.4th -r $2/SYS/SCRIPTS/GRLIB.4TH#040000
|
||||
echo "SCRIPTS/HGRLIB.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/hgrlib.4th -r $2/SYS/SCRIPTS/HGRLIB.4TH#040000
|
||||
echo "SCRIPTS/INT32.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/int32.4th -r $2/SYS/SCRIPTS/INT32.4TH#040000
|
||||
echo "SCRIPTS/PLASMA.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/plasma.4th -r $2/SYS/SCRIPTS/PLASMA.4TH#040000
|
||||
|
||||
# Sample scripts
|
||||
echo "SCRIPTS/BOUNCE.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/bounce.4th -r $2/SCRIPTS/BOUNCE.4TH#040000
|
||||
echo "SCRIPTS/HRBOUNCE.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/hrbounce.4th -r $2/SCRIPTS/HRBOUNCE.4TH#040000
|
||||
echo "SCRIPTS/ROD.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/rod.4th -r $2/SCRIPTS/ROD.4TH#040000
|
12
src/tftpbld
12
src/tftpbld
|
@ -59,15 +59,3 @@ echo "BLD/SAMPLES/SFM.PLA"; atftp --option "disable windowsize" $1 --put -
|
|||
echo "BLD/SAMPLES/SFMSPRT.PLA"; atftp --option "disable windowsize" $1 --put -l samplesrc/sfmsprt.pla -r $2/BLD/SAMPLES/SFMSPRT.PLA#040000
|
||||
echo "BLD/SAMPLES/FPPOW.PLA"; atftp --option "disable windowsize" $1 --put -l samplesrc/fppow.pla -r $2/BLD/SAMPLES/FPPOW.PLA#040000
|
||||
echo "BLD/SAMPLES/MON.PLA"; atftp --option "disable windowsize" $1 --put -l utilsrc/apple/mon.pla -r $2/BLD/SAMPLES/MON.PLA#040000
|
||||
|
||||
# Scripts
|
||||
echo "SCRIPTS/BOUNCE.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/bounce.4th -r $2/SCRIPTS/BOUNCE.4TH#040000
|
||||
echo "SCRIPTS/HRBOUNCE.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/hrbounce.4th -r $2/SCRIPTS/HRBOUNCE.4TH#040000
|
||||
echo "SCRIPTS/CONIO.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/conio.4th -r $2/SCRIPTS/CONIO.4TH#040000
|
||||
echo "SCRIPTS/FILEIO.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/fileio.4th -r $2/SCRIPTS/FILEIO.4TH#040000
|
||||
echo "SCRIPTS/FPU.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/fpu.4th -r $2/SCRIPTS/FPU.4TH#040000
|
||||
echo "SCRIPTS/GRLIB.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/grlib.4th -r $2/SCRIPTS/GRLIB.4TH#040000
|
||||
echo "SCRIPTS/HGRLIB.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/hgrlib.4th -r $2/SCRIPTS/HGRLIB.4TH#040000
|
||||
echo "SCRIPTS/INT32.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/int32.4th -r $2/SCRIPTS/INT32.4TH#040000
|
||||
echo "SCRIPTS/ROD.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/rod.4th -r $2/SCRIPTS/ROD.4TH#040000
|
||||
echo "SCRIPTS/PLASMA.4TH"; atftp --option "disable windowsize" $1 --put -l scripts/plasma.4th -r $2/SCRIPTS/PLASMA.4TH#040000
|
||||
|
|
|
@ -36,7 +36,3 @@ echo "SYS/SNDSEQ"; atftp --option "disable windowsize" $1 --put -l rel/apple/S
|
|||
echo "SYS/PORTIO"; atftp --option "disable windowsize" $1 --put -l rel/apple/PORTIO#FE1000 -r $2/SYS/PORTIO#FE1000
|
||||
echo "SYS/UTHERNET2";atftp --option "disable windowsize" $1 --put -l rel/apple/UTHERNET2#FE1000 -r $2/SYS/UTHERNET2#FE1000
|
||||
echo "SYS/UTHERNET"; atftp --option "disable windowsize" $1 --put -l rel/apple/UTHERNET#FE1000 -r $2/SYS/UTHERNET#FE1000
|
||||
echo "SYS/PLFORTH"; atftp --option "disable windowsize" $1 --put -l rel/PLFORTH#FE1000 -r $2/SYS/PLFORTH#FE1000
|
||||
echo "SYS/HRFORTH"; atftp --option "disable windowsize" $1 --put -l rel/HRFORTH#FE1000 -r $2/SYS/HRFORTH#FE1000
|
||||
echo "SYS/HR2FORTH"; atftp --option "disable windowsize" $1 --put -l rel/HR2FORTH#FE1000 -r $2/SYS/HR2FORTH#FE1000
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user