From a49bce948c6d34eab35cfa2928c9de61a834d7ca Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 6 Oct 2024 22:55:35 +0200 Subject: [PATCH] Bugfix int range in sasm, create Makefile, portability fixes --- .gitignore | 6 ++++++ lib/coreloader.s | 2 +- pcomp/Makefile | 46 +++++++++++++++++++++++++++++++++++++++++++++ pcomp/platform+.pas | 2 +- pcomp/sasm.pas | 5 ++++- 5 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 pcomp/Makefile diff --git a/.gitignore b/.gitignore index 2096fdb..d30556f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ pcomp/*.s progs/*.s +lib/stdlib.s tests/*.s examples/*.s !runtime.s @@ -22,6 +23,11 @@ sine.pas graph1.pas graph2.pas chase.pas +pcomp/libgen +pcomp/lsymgen +pcomp/pcomp +pcomp/sasm +pcomp/sdis **/tridoracpu.cache/ **/tridoracpu.hw/ **/tridoracpu.ip_user_files/ diff --git a/lib/coreloader.s b/lib/coreloader.s index 542b667..46a63bf 100644 --- a/lib/coreloader.s +++ b/lib/coreloader.s @@ -276,4 +276,4 @@ SHELL_ERR: FOUND_MSG: .BYTE " shell.prog ",0 -%include corelib.s +%include "corelib.s" diff --git a/pcomp/Makefile b/pcomp/Makefile new file mode 100644 index 0000000..aa4530f --- /dev/null +++ b/pcomp/Makefile @@ -0,0 +1,46 @@ +PCOMP=./pcomp +SASM=./sasm +LSYMGEN=./lsymgen +LIBGEN=./libgen + +.SUFFIXES: +.SUFFIXES: .pas .o + +.pas: + fpc -Mobjfpc -gl $< + +all: pcomp sasm sdis libgen lsymgen + +libs: pcomp sasm + $(SASM) ../lib/coreloader.s + $(LSYMGEN) ../lib/coreloader.sym + $(PCOMP) -n ../lib/stdlib.pas + $(LIBGEN) ../lib/stdlib.s + $(LIBGEN) ../lib/runtime.s + $(LIBGEN) ../lib/float32.s + +nativecomp: pcomp sasm libs + $(PCOMP) sasm.pas + $(PCOMP) pcomp.pas + $(PCOMP) lsymgen.pas + $(PCOMP) libgen.pas + +nativeprogs: nativecomp + $(PCOMP) ../progs/shell.pas + $(PCOMP) ../progs/editor.pas + $(PCOMP) ../progs/reclaim.pas + $(PCOMP) ../progs/dumpdir.pas + $(PCOMP) ../progs/partmgr.pas + $(PCOMP) ../progs/xfer.pas + +examples: nativecomp + $(PCOMP) ../tests/readtest.pas + $(PCOMP) ../tests/readchartest.pas + $(PCOMP) ../tests/timetest.pas + $(PCOMP) ../tests/test133.pas + -$(PCOMP) ../examples/chase.pas + $(PCOMP) ../tests/cchangetest.pas + $(PCOMP) ../tests/tree.pas + +clean: + rm -f pcomp sasm sdis libgen lsymgen *.o *.s diff --git a/pcomp/platform+.pas b/pcomp/platform+.pas index 73c04c5..f4ab281 100644 --- a/pcomp/platform+.pas +++ b/pcomp/platform+.pas @@ -2,7 +2,7 @@ procedure initPlatform; begin outputPrefix := ''; - includePrefix := '..\lib\'; + includePrefix := '../lib/'; end; procedure newString(var s:StringRef;len:integer); diff --git a/pcomp/sasm.pas b/pcomp/sasm.pas index 4d15987..8d63792 100644 --- a/pcomp/sasm.pas +++ b/pcomp/sasm.pas @@ -1185,7 +1185,10 @@ begin intValue := getSymbolValue(value) else intValue := convertNumber(value); - emitWord(intValue + current^.offset); + + if intValue <> Unresolved then + intValue := intValue + current^.offset; + emitWord(intValue); current := current^.prev; end;