add rogue submodule and support for compiling, some cleanup

This commit is contained in:
slederer 2025-05-15 01:44:06 +02:00
parent a060b65bb9
commit 3eb51f7d4e
9 changed files with 132 additions and 7 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "rogue"]
path = rogue
url = https://gitlab.com/slederer/ecl-rogue-m.git

View file

@ -40,6 +40,4 @@ begin
loadPalette(pic); loadPalette(pic);
loadPic(pic); loadPic(pic);
write('Press any key...');
read(ch);
end. end.

View file

@ -33,6 +33,7 @@ nativeprogs: nativecomp
$(PCOMP) ../progs/xfer.pas $(PCOMP) ../progs/xfer.pas
$(SASM) ../lib/rommon.s $(SASM) ../lib/rommon.s
$(SASM) -A ../lib/rommon.s ../lib/rom.mem $(SASM) -A ../lib/rommon.s ../lib/rom.mem
examples: nativecomp examples: nativecomp
$(PCOMP) ../tests/readtest.pas $(PCOMP) ../tests/readtest.pas
$(PCOMP) ../tests/readchartest.pas $(PCOMP) ../tests/readchartest.pas
@ -41,6 +42,7 @@ examples: nativecomp
-$(PCOMP) ../examples/chase.pas -$(PCOMP) ../examples/chase.pas
$(PCOMP) ../tests/cchangetest.pas $(PCOMP) ../tests/cchangetest.pas
$(PCOMP) ../tests/tree.pas $(PCOMP) ../tests/tree.pas
-$(MAKE) -C ../rogue -f Makefile.tridoracpu
clean: clean:
rm -f pcomp sasm sdis libgen lsymgen *.o *.s rm -f pcomp sasm sdis libgen lsymgen *.o *.s

View file

@ -39,3 +39,11 @@ py pcomp.py ..\tests\test133.pas
py pcomp.py ..\examples\chase.pas py pcomp.py ..\examples\chase.pas
py pcomp.py ..\tests\cchangetest.pas py pcomp.py ..\tests\cchangetest.pas
py pcomp.py ..\tests\tree.pas py pcomp.py ..\tests\tree.pas
if not exist ..\rogue\rogue.pas exit /b
cd ..\rogue
..\pcomp\pcomp rogue.pas
..\pcomp\sasm rogue.s
cd ..\pcomp

1
rogue Submodule

@ -0,0 +1 @@
Subproject commit 412f961abab7bf769d2dc7eadbc530a0285503ee

8
tests/arraytest.pas Normal file
View file

@ -0,0 +1,8 @@
program arraytest;
var arr:array[-5..5] of integer;
var s:string[5];
begin
arr[-5] := 10;
arr[5] := 11;
writeln(arr[-5], ' ', arr[5]);
end.

49
tests/nestedtest.pas Normal file
View file

@ -0,0 +1,49 @@
program NestedTest;
var g:integer;
procedure first;
var f:integer;
procedure second;
var s:integer;
procedure third1;
var t1:integer;
begin
t1 := 310;
s := 31;
writeln('t1:', t1);
end;
procedure third2;
var t2:integer;
begin
t2 := 320;
s := 32;
writeln('t2:', t2);
if g <> 21 then
begin
g := 21;
second;
end;
end;
begin
f := 2;
writeln('g:',g);
third1;
writeln('g:', g);
third2;
writeln('s:',s);
end;
begin
second;
writeln('f:', f);
end;
begin
g := 0;
first;
writeln('g:', g);
end.

20
tests/settest2.pas Normal file
View file

@ -0,0 +1,20 @@
program settest2;
type weekday = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);
days = set of weekday;
var s:days;
d:weekday;
begin
s := [Sat,Sun]; (* set literal *)
d := Sun;
if d in [Sat,Sun] then (* array literal *)
writeln('weekend');
if d in s then
writeln('also weekend');
d := Mon;
s := s + [d];
end.

View file

@ -1,6 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/python3
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
# Copyright 2021-2024 Sebastian Lederer. See the file LICENSE.md for details # Copyright 2021-2025 Sebastian Lederer. See the file LICENSE.md for details
import struct import struct
import sys import sys
@ -372,6 +372,31 @@ def writetoimg(img, pathname, infilepath):
putfile(infilepath, filename, img, vol, vol.startBlock, slotno) putfile(infilepath, filename, img, vol, vol.startBlock, slotno)
def initfs(f, partno):
part = getpartslot(f, partno)
partstart = part.startBlock
dir_slots = part.dirSize
extent_size = part.extentSize
slots_per_extent = extent_size // 64
reserved_slots = dir_slots // slots_per_extent
print()
print("Partition {} at {}".format(part.name, part.startBlock))
print("creating",reserved_slots, "reserved directory slots")
for a in range(0,reserved_slots):
d = createdirslot("DIR", SlotReserved, 0, 0, 0, 0, 0)
putdirslot(f, partstart, a, d)
print("creating", dir_slots - reserved_slots, "free slots")
for a in range(reserved_slots, dir_slots):
d = createdirslot("", SlotFree, 0, 0, 0, 0, 0)
putdirslot(f, partstart, a, d)
return (part, partstart, reserved_slots)
def create_image_with_stuff(imgfile): def create_image_with_stuff(imgfile):
bootimage = "../lib/coreloader.prog" bootimage = "../lib/coreloader.prog"
dir_slots = 256 dir_slots = 256
@ -381,22 +406,27 @@ def create_image_with_stuff(imgfile):
f = open(imgfile,"w+b") f = open(imgfile,"w+b")
b = createpart("PHYS", PartPhysical, 0, 12288, 4096, 0, 0) b = createpart("PHYS", PartPhysical, 0, 16384, 4096, 0, 0)
#print(b) #print(b)
f.write(b) f.write(b)
with open(bootimage, "rb") as bf: with open(bootimage, "rb") as bf:
bootdata = bf.read() bootdata = bf.read()
bootBlocks = len(bootdata) // 512 + 1 bootBlocks = len(bootdata) // 512 + 1
b = createpart("BOOT", PartBoot, 16, 112, 0, 0, bootBlocks) b = createpart("BOOT", PartBoot, 16, 112, 0, 0, bootBlocks)
f.write(b) f.write(b)
b = createpart("Testvolume 1", PartEnabled, 128, 3968, 8192, 248) b = createpart("Testvolume 1", PartEnabled, 128, 3968, 8192, 248)
f.write(b) f.write(b)
b = createpart("SYSTEM", PartEnabled, 4096, 4096, 8192, 256) b = createpart("SYSTEM", PartEnabled, 4096, 4096, 8192, 256)
f.write(b) f.write(b)
b = createpart("Examples", PartEnabled + PartLast, 8192, 4096, 8192, 256) b = createpart("Examples", PartEnabled, 8192, 4096, 8192, 256)
f.write(b)
b = createpart("Rogue", PartEnabled + PartLast, 12288, 4096, 8192, 256)
f.write(b) f.write(b)
part = getpartslot(f, 2) part = getpartslot(f, 2)
@ -572,7 +602,6 @@ def create_image_with_stuff(imgfile):
slotnr = putfile("../examples/lines.pas", None , f, part, partstart, slotnr) slotnr = putfile("../examples/lines.pas", None , f, part, partstart, slotnr)
slotnr = putfile("../examples/pictviewer.pas", None , f, part, partstart, slotnr) slotnr = putfile("../examples/pictviewer.pas", None , f, part, partstart, slotnr)
# slotnr = putfile("viewpict.prog", None , f, part, partstart, slotnr)
slotnr = putfile("../examples/ara.pict", "ara.pict" , f, part, partstart, slotnr) slotnr = putfile("../examples/ara.pict", "ara.pict" , f, part, partstart, slotnr)
slotnr = putfile("../examples/shinkansen.pict", "shinkansen.pict" , f, part, partstart, slotnr) slotnr = putfile("../examples/shinkansen.pict", "shinkansen.pict" , f, part, partstart, slotnr)
slotnr = putfile("../examples/snow_leopard.pict", "snow_leopard.pict" , f, part, partstart, slotnr) slotnr = putfile("../examples/snow_leopard.pict", "snow_leopard.pict" , f, part, partstart, slotnr)
@ -581,6 +610,13 @@ def create_image_with_stuff(imgfile):
listdir(f, part) listdir(f, part)
part, partstart, slotnr = initfs(f, 5)
slotnr = putfile("../rogue/rogue.init", None, f, part, partstart, slotnr)
slotnr = putfile("../rogue/rogue.message", None, f, part, partstart, slotnr)
slotnr = putfile("../rogue/rogue.prog", None, f, part, partstart, slotnr)
listdir(f, part)
write_bootimage(f, 16, bootdata) write_bootimage(f, 16, bootdata)
f.close() f.close()