Apple IIe config figured out
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user