Bugfix int range in sasm, create Makefile, portability fixes
This commit is contained in:
parent
8c84a4b877
commit
a35b8eaf60
8 changed files with 77 additions and 6 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
|
@ -1,5 +1,6 @@
|
|||
pcomp/*.s
|
||||
progs/*.s
|
||||
lib/stdlib.s
|
||||
tests/*.s
|
||||
examples/*.s
|
||||
!runtime.s
|
||||
|
|
@ -22,6 +23,12 @@ sine.pas
|
|||
graph1.pas
|
||||
graph2.pas
|
||||
chase.pas
|
||||
pcomp/libgen
|
||||
pcomp/lsymgen
|
||||
pcomp/pcomp
|
||||
pcomp/sasm
|
||||
pcomp/sdis
|
||||
tridoraemu/tridoraemu
|
||||
**/tridoracpu.cache/
|
||||
**/tridoracpu.hw/
|
||||
**/tridoracpu.ip_user_files/
|
||||
|
|
|
|||
13
README.md
13
README.md
|
|
@ -65,14 +65,25 @@ Everything is open source, so you can read, understand and modify the whole syst
|
|||
- file system is very primitive: only contiguous blocks, no subdirectories
|
||||
- simple shell reminiscent of TP3.0, edit, compile, run programs
|
||||
|
||||
## Building the Compiler
|
||||
- you need to have _FPC_ and _Python3_ installed
|
||||
- on Linux, you need _make_ installed
|
||||
- in the **pcomp** directory, run **make** (or **make.bat** on Windows)
|
||||
- on Linux, you can also run **make nativeprogs** and **make examples**
|
||||
|
||||
## Getting the ROM image
|
||||
- there are two formats for the ROM image, one for the emulator (**rommon.prog**) and one for building the FPGA bitstream (**rom.mem**)
|
||||
- to get the **rommon.prog** file, either copy it from the _tridoraemu_ package file or build it
|
||||
- to build **rom.mem** and **rommon.prog**, find both files in the **lib** directory after running **make nativeprogs** (or **make.bat**) in the **pcomp** directory (see above)
|
||||
|
||||
## Building the FPGA bitstream
|
||||
- install Vivado (known to work with 2020.1, known NOT to work with 2024.1)
|
||||
- install the package for your board in Vivado (Tools -> Vivado Store -> Boards)
|
||||
- copy the ROM image (**rom.mem**) into the **tridoracpu** directory (see above)
|
||||
- start Vivado and open the project file **tridoracpu.xpr** in the **tridoracpu** directory
|
||||
- run synthesis, implementation and bitstream generation (Flow -> Generate Bitstream)
|
||||
- program your device (Flow -> Open Hardware Manager), the bitstream file should be in **tridoracpu/tridoracpu.runs/impl_1**
|
||||
- the bitstream file for (temporarily) programming your device is named **top.bit**, the file for flashing your device is named **top.bin**
|
||||
|
||||
## Documentation
|
||||
- [Instruction Reference](doc/tridoracpu.md)
|
||||
- [Memory Layout](doc/mem.md)
|
||||
|
|
|
|||
|
|
@ -276,4 +276,4 @@ SHELL_ERR:
|
|||
FOUND_MSG:
|
||||
.BYTE " shell.prog ",0
|
||||
|
||||
%include corelib.s
|
||||
%include "corelib.s"
|
||||
|
|
|
|||
47
pcomp/Makefile
Normal file
47
pcomp/Makefile
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
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 lsymgen libgen
|
||||
$(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
|
||||
$(SASM) ../lib/rommon.s
|
||||
$(SASM) -A ../lib/rommon.s ../lib/rom.mem
|
||||
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
|
||||
|
|
@ -26,6 +26,8 @@ py pcomp.py ..\progs\reclaim.pas
|
|||
py pcomp.py ..\progs\dumpdir.pas
|
||||
py pcomp.py ..\progs\partmgr.pas
|
||||
py pcomp.py ..\progs\xfer.pas
|
||||
sasm ..\lib\rommon.s
|
||||
sasm -A ..\lib\rommon.s ..\lib\rom.mem
|
||||
|
||||
rem exit /b
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
procedure initPlatform;
|
||||
begin
|
||||
outputPrefix := '';
|
||||
includePrefix := '..\lib\';
|
||||
includePrefix := '../lib/';
|
||||
end;
|
||||
|
||||
procedure newString(var s:StringRef;len:integer);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,10 @@
|
|||
- written in Golang
|
||||
|
||||
## Getting started
|
||||
From the command line, run the *tridoraemu* or *tridoraemu.exe* program inside the *tridoraemu* directory (see below for details).
|
||||
Download this zipfile: [tridoraemu.zip](https://git.insignificance.de/api/packages/slederer/generic/tridoraemu/0.0.1/tridoraemu.zip).
|
||||
It contains the sources, the ROM image, an SD-card image and a precompiled windows binary.
|
||||
|
||||
A precompiled binary for Windows is provided.
|
||||
From the command line, run the *tridoraemu* or *tridoraemu.exe* program inside the *tridoraemu* directory (see below for details).
|
||||
|
||||
To build the program yourself, you need to have the Go language installed on your system. Building has been tested on Windows and Linux.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue