Apple IIe config figured out

This commit is contained in:
Luxferre
2022-08-14 21:26:04 +03:00
parent 71eb5bafa8
commit 984ced3396
3 changed files with 8 additions and 19 deletions
+5 -14
View File
@@ -4,8 +4,8 @@ PROJNAME=equi
CFILES=equi.c
PBTDIR=platform-build-tools
PERSFILE=PERS.DAT
# Apple II target configuration
A2FLAGS=-DSTACK_SIZE=256 -DLIT_STACK_SIZE=32 -DGPD_AREA_SIZE=3072 -DCMD_BUF_SIZE=20000 -DCLT_ENTRIES_MAX=512 -DEQUI_TASKS_MAX=8
# Apple IIe target configuration
A2FLAGS=-DSTACK_SIZE=256 -DLIT_STACK_SIZE=32 -DGPD_AREA_SIZE=1024 -DCMD_BUF_SIZE=13500 -DCLT_ENTRIES_MAX=256 -DEQUI_TASKS_MAX=4
# POSIX desktop target configuration
PDFLAGS=-DSTACK_SIZE=256 -DLIT_STACK_SIZE=32 -DGPD_AREA_SIZE=3072 -DCMD_BUF_SIZE=20000 -DCLT_ENTRIES_MAX=512 -DEQUI_TASKS_MAX=8
# Common flags
@@ -18,19 +18,10 @@ desktopcc: perscopy
tcc: perscopy
tcc -std=c89 -o $(PROJNAME) $(CFILES) $(PDFLAGS) $(DFLAGS)
apple2-build:
cl65 --standard c89 -O -Os -t apple2 -C apple2-system.cfg -o $(PROJNAME).apple2 $(CFILES) $(A2FLAGS) $(DFLAGS)
a2-build:
cl65 --standard c89 -O -Os -t apple2enh -C apple2enh-system.cfg -o $(PROJNAME).a2enh $(A2FLAGS) $(DFLAGS) $(CFILES)
apple2: apple2-build
cp $(PBTDIR)/apple2/tpl.dsk $(PROJNAME).dsk
java -jar $(PBTDIR)/apple2/ac.jar -p $(PROJNAME).dsk $(PROJNAME).system sys < $$(cl65 --print-target-path)/apple2/util/loader.system
java -jar $(PBTDIR)/apple2/ac.jar -as $(PROJNAME).dsk $(PROJNAME) bin < $(PROJNAME).apple2
java -jar $(PBTDIR)/apple2/ac.jar -dos $(PROJNAME).dsk $(PERSFILE) bin < $(PBTDIR)/$(PERSFILE)
apple2enh-build:
cl65 --standard c89 -O -Os -t apple2enh -C apple2enh-system.cfg -o $(PROJNAME).a2enh $(CFILES) $(A2FLAGS) $(DFLAGS)
apple2enh: apple2enh-build
a2: a2-build
cp $(PBTDIR)/apple2/tpl.dsk $(PROJNAME)-enh.dsk
java -jar $(PBTDIR)/apple2/ac.jar -p $(PROJNAME)-enh.dsk $(PROJNAME).system sys < $$(cl65 --print-target-path)/apple2enh/util/loader.system
java -jar $(PBTDIR)/apple2/ac.jar -as $(PROJNAME)-enh.dsk $(PROJNAME) bin < $(PROJNAME).a2enh
+2 -4
View File
@@ -172,12 +172,12 @@ Equi's codebase detects TCC and attempts to save size by linking against tcclib
tcc -std=c89 -o equi equi.c [-DSTACK_SIZE=... ...]
```
### Building with CC65 for Enhanced Apple IIe: `make apple2enh`
### Building with CC65 for Enhanced Apple IIe: `make a2`
This is where things start to get interesting, as we need to specify the exact target machine for CC65 and perform certain target-dependent post-build manipulation. For now, Equi reference implementation is only being tested for 65C02-based Enhanced Apple IIe (as the earliest model both supported by CC65 suite and supporting lowercase character I/O), so the command to build it would be:
```
cl65 --standard c89 -O -Os -t apple2enh -o equi.a2enh equi.c
cl65 --standard c89 -O -Os -t apple2enh -o equi.a2enh [-DSTACK_SIZE=... ...] equi.c
```
Then, if there are no compiler/linker errors, we can proceed with building the image (assuming we're using Java and AppleCommander with an empty 140K ProDOS 8 image bundled in the repo for image assembly):
@@ -196,8 +196,6 @@ You can also add a 96K-sized `PERS.DAT` file shipped in the repo to use the pers
java -jar platform-build-tools/apple2/ac.jar -dos equi.dsk PERS.DAT bin < platform-build-tools/PERS.DAT
```
The Makefile also provides a usual `apple2` target and the disk image will run on a "normal" Apple IIe, however the environment is not guaranteed to work correctly due to the way CC65 compiler converts string literals for this target.
## FAQ
### Why does the world need another Forth-like system?
+1 -1
View File
@@ -441,7 +441,7 @@ void portIO(ushort port, ushort p2, ushort p1) {
ushort equi_find_free_task_slot() {
ushort slotid = 0;
/* iterate over task table */
for(;slotid < EQUI_TASKS_MAX;slotid++)
for(;slotid < EQUI_TASKS_MAX;++slotid)
if(!ram.tasks[slotid].active)
return slotid;
/* and error out if all slots are busy and active */