From 970d692592be9d2344295e400ec312f96d295b9a Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Tue, 20 Dec 2022 09:58:26 -0800 Subject: [PATCH] Update code to ALPHA2 --- src/makefile | 12 ++++++++---- src/mkrel | 12 +++++++----- src/samplesrc/coniotst.pla | 31 +++++++++++++++++++++++++++++++ src/toolsrc/codegen.c | 10 +++------- src/toolsrc/parse.c | 2 +- src/toolsrc/parse.pla | 9 ++++++--- src/toolsrc/plasm.pla | 4 ++-- src/vmsrc/apple/a1cmd.pla | 2 +- src/vmsrc/apple/cmd.pla | 2 +- src/vmsrc/apple/cmdjit.pla | 2 +- src/vmsrc/apple/sossys.pla | 2 +- src/vmsrc/apple/sossysjit.pla | 2 +- 12 files changed, 63 insertions(+), 27 deletions(-) create mode 100644 src/samplesrc/coniotst.pla diff --git a/src/makefile b/src/makefile index 394fc33..bff11a6 100755 --- a/src/makefile +++ b/src/makefile @@ -76,6 +76,7 @@ ROGUE = rel/ROGUE\#FE1000 ROGUEMAP = rel/ROGUEMAP\#FE1000 ROGUECOMBAT= rel/ROGUECOMBAT\#FE1000 MON = rel/apple/MON\#FE1000 +CONIOTST = rel/apple/CONIOTST\#FE1000 TILETEST = rel/apple/TILETEST\#FE1000 HGRTEST = rel/apple/HGRTEST\#FE1000 GRTEST = rel/apple/GRTEST\#FE1000 @@ -109,11 +110,11 @@ TXTTYPE = .TXT #SYSTYPE = \#FF2000 #TXTTYPE = \#040000 -apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIPCHIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) +apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIPCHIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) $(CONIOTST) -rm vmsrc/plvmzp.inc -c64: $(PLVMZP_C64) $(PLASM) $(PLVM) $(PLVMC64) +c64: $(PLVMZP_C64) $(PLASM) $(PLVM) $(PLVMC64) -rm vmsrc/plvmzp.inc all: apple c64 @@ -287,6 +288,11 @@ hello: samplesrc/hello.pla $(PLVM) $(PLASM) ./$(PLASM) -AMOW < samplesrc/hello.pla > samplesrc/hello.a acme --setpc 4094 -o $(HELLO) samplesrc/hello.a ./$(PLVM) HELLO + +$(CONIOTST): samplesrc/coniotst.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/coniotst.pla > samplesrc/coniotst.a + acme --setpc 4094 -o $(CONIOTST) samplesrc/coniotst.a + $(ROD): samplesrc/rod.pla $(PLVM02) $(PLASM) ./$(PLASM) -AMOW < samplesrc/rod.pla > samplesrc/rod.a acme --setpc 4094 -o $(ROD) samplesrc/rod.a @@ -522,5 +528,3 @@ $(JIT16): libsrc/apple/jit16.pla libsrc/jit16core.pla $(PLVMJIT) $(PLASM) $(JITUNE): utilsrc/apple/jitune.pla $(PLVMJIT) $(PLASM) ./$(PLASM) -AMOW < utilsrc/apple/jitune.pla > utilsrc/apple/jitune.a acme --setpc 4094 -o $(JITUNE) utilsrc/apple/jitune.a - - diff --git a/src/mkrel b/src/mkrel index 8b11a2f..1a6d5d6 100755 --- a/src/mkrel +++ b/src/mkrel @@ -125,11 +125,12 @@ cp ../sysfiles/ELEMS.CODE#060000 prodos/fpsos/sys/ELEMS.CODE.BIN rm -rf prodos/demos mkdir prodos/demos -cp rel/INT32TEST#FE1000 prodos/demos/INT32TEST.REL -cp rel/apple/ROD#FE1000 prodos/demos/ROD.REL -cp rel/RPNCALC#FE1000 prodos/demos/RPNCALC.REL -cp rel/LZ4CAT#FE1000 prodos/demos/LZ4CAT.REL -cp rel/PRIMEGAP#FE1000 prodos/demos/PRIMEGAP.REL +cp rel/INT32TEST#FE1000 prodos/demos/INT32TEST.REL +cp rel/apple/CONIOTST#FE1000 prodos/demos/CONIOTST.REL +cp rel/apple/ROD#FE1000 prodos/demos/ROD.REL +cp rel/RPNCALC#FE1000 prodos/demos/RPNCALC.REL +cp rel/LZ4CAT#FE1000 prodos/demos/LZ4CAT.REL +cp rel/PRIMEGAP#FE1000 prodos/demos/PRIMEGAP.REL mkdir prodos/demos/rogue cp rel/ROGUE#FE1000 prodos/demos/rogue/ROGUE.REL @@ -178,6 +179,7 @@ cp rel/CODEOPT#FE1000 prodos/bld/CODEOPT.REL mkdir prodos/bld/samples cp samplesrc/hello.pla prodos/bld/samples/HELLO.PLA.TXT cp samplesrc/int32test.pla prodos/bld/samples/INT32TEST.PLA.TXT +cp samplesrc/coniotst.pla prodos/bld/samples/CONIOTST.PLA.TXT cp samplesrc/grtest.pla prodos/bld/samples/GRTEST.PLA.TXT cp samplesrc/dgrtest.pla prodos/bld/samples/DGRTEST.PLA.TXT cp samplesrc/hgrtest.pla prodos/bld/samples/HGRTEST.PLA.TXT diff --git a/src/samplesrc/coniotst.pla b/src/samplesrc/coniotst.pla new file mode 100644 index 0000000..921f584 --- /dev/null +++ b/src/samplesrc/coniotst.pla @@ -0,0 +1,31 @@ +// text screen +include "inc/cmdsys.plh" +include "inc/conio.plh" +const SCR_PTR = $0400 +const SCR_SIZE = 1024 + +byte[SCR_SIZE] ScrSave +byte I +word Name + +// save text screen +memcpy(@ScrSave, SCR_PTR, SCR_SIZE) +conio:home() +for I=0 to 23 + conio:gotoxy(I,I) + putc('A'+I) + putc(' ') + puti(I) +next +conio:gotoxy(10, 5) +puts("What is your name") +Name = gets('?'|$80) // $BF +conio:gotoxy(12, 7) +puts("Nice to meet you, ") +puts(Name) +conio:gotoxy(16, 10) +puts("Press any key ...") +getc() +conio:gotoxy(0, 5) +memcpy(SCR_PTR, @ScrSave, SCR_SIZE) +done diff --git a/src/toolsrc/codegen.c b/src/toolsrc/codegen.c index 8e4de44..8b0ffba 100755 --- a/src/toolsrc/codegen.c +++ b/src/toolsrc/codegen.c @@ -130,7 +130,7 @@ int idlocal_add(char *name, int len, int type, int size) return (0); } if (len > ID_LEN) len = ID_LEN; - char c = name[len]; + c = name[len]; name[len] = '\0'; emit_idlocal(name, localsize); name[len] = c; @@ -145,7 +145,6 @@ int idlocal_add(char *name, int len, int type, int size) } int idglobal_add(char *name, int len, int type, int size) { - //char c; if (globals > 1024) { printf("Global variable count overflow\n"); @@ -162,9 +161,6 @@ int idglobal_add(char *name, int len, int type, int size) return (0); } if (len > ID_LEN) len = ID_LEN; - //c = name[len]; - //name[len] = '\0'; - //name[len] = c; idglobal_name[globals][0] = len; while (len--) idglobal_name[globals][1 + len] = toupper(name[len]); @@ -882,10 +878,10 @@ void emit_caseblock(int casecnt, int *caseof, int *casetag) if (casecnt < 1 || casecnt > 256) parse_error("Switch count under/overflow\n"); emit_pending_seq(); - printf("\t%s\t$%02lX\t\t\t; CASEBLOCK\n", DB, casecnt & 0xFF); + printf("\t%s\t$%02X\t\t\t; CASEBLOCK\n", DB, casecnt & 0xFF); for (i = 0; i < casecnt; i++) { - printf("\t%s\t$%04lX\n", DW, caseof[i] & 0xFFFF); + printf("\t%s\t$%04X\n", DW, caseof[i] & 0xFFFF); printf("\t%s\t_B%03d-*\n", DW, casetag[i]); } } diff --git a/src/toolsrc/parse.c b/src/toolsrc/parse.c index 44d3cf0..5c1ea0f 100755 --- a/src/toolsrc/parse.c +++ b/src/toolsrc/parse.c @@ -558,7 +558,7 @@ t_opseq *parse_value(t_opseq *codeseq, int rvalue, int *stackdepth) parse_error("Using BYTE value as a pointer"); else deref++; - type = (type & PTR_TYPE) | (scantoken == PTRB_TOKEN) ? BYTE_TYPE : WORD_TYPE; // Type override + type = (type & PTR_TYPE) | ((scantoken == PTRB_TOKEN) ? BYTE_TYPE : WORD_TYPE); // Type override if (!parse_const(&const_offset)) { /* diff --git a/src/toolsrc/parse.pla b/src/toolsrc/parse.pla index aaa495d..5e791bb 100644 --- a/src/toolsrc/parse.pla +++ b/src/toolsrc/parse.pla @@ -138,10 +138,13 @@ def parse_constval is ID_TKN size = 2 idptr = lookup_id(tknptr, tknlen) - type = idptr=>idtype + if not idptr; exit_err(ERR_INVAL|ERR_CONST); fin + type = idptr=>idtype if type & (FUNC_TYPE|ADDR_TYPE) if mod <> 8; exit_err(ERR_INVAL|ERR_CONST); fin type = CONSTADDR_TYPE + elsif type <> CONST_TYPE + exit_err(ERR_INVAL|ERR_CONST) fin value = idptr=>idval break @@ -1064,8 +1067,8 @@ def parse_struc#0 scan end def parse_vars(type) - byte idlen, size, cfnparms, cfnvals - word value, idptr + byte idlen, cfnparms, cfnvals + word size, value, idptr when token is SYSFLAGS_TKN diff --git a/src/toolsrc/plasm.pla b/src/toolsrc/plasm.pla index 92ecc4e..c5b5e9c 100755 --- a/src/toolsrc/plasm.pla +++ b/src/toolsrc/plasm.pla @@ -5,6 +5,7 @@ include "inc/longjmp.plh" // // Tokens // +const ID_LEN = 32 const ID_TKN = $D6 // V const CHR_TKN = $C3 // C const INT_TKN = $C9 // I @@ -292,7 +293,6 @@ word lineno // // Parser variables // -const ID_LEN = 32 // Significant ID characters const LVALUE = 0 const RVALUE = 1 const LAMBDANUM = 16 @@ -508,7 +508,7 @@ include "toolsrc/parse.pla" // // Look at command line arguments and compile module // -puts("PLASMA Compiler, Version 2.0 ALPHA1\n") +puts("PLASMA Compiler, Version 2.0 ALPHA2\n") arg = argNext(argFirst) if ^arg and ^(arg + 1) == '-' opt = arg + 2 diff --git a/src/vmsrc/apple/a1cmd.pla b/src/vmsrc/apple/a1cmd.pla index 92bc4cc..096f30f 100755 --- a/src/vmsrc/apple/a1cmd.pla +++ b/src/vmsrc/apple/a1cmd.pla @@ -52,7 +52,7 @@ byte perr, refauto // String pool. // byte autorun[] = "AUTORUN" -byte verstr[] = "\nPLASMA ALPHA1" +byte verstr[] = "\nPLASMA ALPHA2" byte freestr[] = "MEM FREE:$" byte errorstr[] = "ERR:$" byte prompt[] = "PLASMA" diff --git a/src/vmsrc/apple/cmd.pla b/src/vmsrc/apple/cmd.pla index d221336..3ac051d 100755 --- a/src/vmsrc/apple/cmd.pla +++ b/src/vmsrc/apple/cmd.pla @@ -1377,7 +1377,7 @@ heap = @lastdef // // Print PLASMA version // -prstr("PLASMA 2.0 ALPHA1 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout +prstr("PLASMA 2.0 ALPHA2 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout // // Init symbol table. // diff --git a/src/vmsrc/apple/cmdjit.pla b/src/vmsrc/apple/cmdjit.pla index f5f1e4d..576a747 100755 --- a/src/vmsrc/apple/cmdjit.pla +++ b/src/vmsrc/apple/cmdjit.pla @@ -1454,7 +1454,7 @@ heap = @lastdef // // Print PLASMA version // -prstr("PLASMA 2.0 ALPHA1 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout +prstr("PLASMA 2.0 ALPHA2 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout // // Init symbol table. // diff --git a/src/vmsrc/apple/sossys.pla b/src/vmsrc/apple/sossys.pla index c8f1f49..61acf4b 100755 --- a/src/vmsrc/apple/sossys.pla +++ b/src/vmsrc/apple/sossys.pla @@ -1263,7 +1263,7 @@ cmdlnptr = @cmdln // Print PLASMA version // init_cons -prstr("PLASMA 2.0 ALPHA1\n")//; putb(version.1); putc('.'); putb(version.0); putln +prstr("PLASMA 2.0 ALPHA2\n")//; putb(version.1); putc('.'); putb(version.0); putln prstr("MEM:$"); prword(availheap); crout // // Exec command line parser diff --git a/src/vmsrc/apple/sossysjit.pla b/src/vmsrc/apple/sossysjit.pla index 521f710..adf36ea 100755 --- a/src/vmsrc/apple/sossysjit.pla +++ b/src/vmsrc/apple/sossysjit.pla @@ -1286,7 +1286,7 @@ cmdlnptr = @cmdln // Print PLASMA version // init_cons -prstr("PLASMA 2.0 ALPHA1 JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln +prstr("PLASMA 2.0 ALPHA2 JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln prstr("MEM:$"); prword(availheap); crout // // Exec command line parser