60373930fb
- <dos.h>: getdate/gettime/setdate/settime (структуры Turbo-C, обёртки над getdatetime), getdisk/setdisk (ESTEX $02/$01), absread/abswrite (BIOS $55/$56, rst 8 — номера найдены в solid-c DOS.ASM; сектор 0 = boot логического диска) - scanf/fscanf/sscanf: своё C-ядро _scanf_core (%d %u %x %o %c %s, модификатор l, ширина, подавление '*', %%); в SDCC z80 scanf нет, asm solid-c не портируем из-за чужого ABI; 22 хост-теста ядра - хвост П2: fdopen/freopen/fclosall/fgetpos/fsetpos поверх таблицы FILE; парсер режима и выдача слота вынесены в _file_mode/_file_slot - rename() — ESTEX RENAME $10; isatty(fd) = fd <= 0 (tty только псевдо-fd 0/-1/-2: из CLI DSS манипуляторы идут с 1 — verified, fd 1 не резерв, под Flex Navigator его держит навигатор) - errno.h: Solid-C имена ошибок (EZERO/EINVFNC/ENOFILE/...) как алиасы - <sprinter_solid.h> — зонтичный заголовок для портирования; ltell/_setargv в sprinter_compat.h; div/ldiv — из SDCC (проверено) - tests/solidt — smoke всех П3/П4 API, зелёный в MAME (вкл. absread boot-сектора с сигнатурой 55AA) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
78 lines
2.4 KiB
Makefile
78 lines
2.4 KiB
Makefile
# Sprinter C Compiler — top-level Makefile
|
|
#
|
|
# make build host tools, libc archive, all tests, all apps
|
|
# make tools build only host tools (mkexe)
|
|
# make lib build lib/sprinter.lib (libc archive used by sprinter-cc)
|
|
# make tests build all libc feature tests under tests/
|
|
# make examples build all real applications under examples/
|
|
# make floppy package every .exe + test fixtures into mame/v306/IMG/mc.img
|
|
# make check run mkexe unit tests
|
|
# make clean remove all build artefacts
|
|
# make sdcc download/extract vendored SDCC
|
|
#
|
|
# Most heavy lifting is delegated to sub-Makefiles.
|
|
|
|
# Small libc-feature tests (one program per .c-language feature or libc API).
|
|
TESTS := hello banked bankedbg strtest cat seek malloc mem_test argv errno \
|
|
rt_test openenv ls conio attrprob timedir mouse banklocl stdlib \
|
|
assrtest ptime stattest filetest fdmax fbench solidt \
|
|
gfx_demo gfx_d16 gfx_text gfx_mous
|
|
|
|
# Larger end-user applications under examples/.
|
|
APPS := mdview
|
|
|
|
MAME_DIR := mame/v306
|
|
FLOPPY_IMG := $(MAME_DIR)/IMG/mc.img
|
|
MAKE_DISK := $(MAME_DIR)/make_disk.py
|
|
|
|
TEST_EXES := $(foreach t,$(TESTS),tests/$(t)/$(t).exe)
|
|
APP_EXES := $(foreach a,$(APPS),examples/$(a)/$(a).exe)
|
|
ALL_EXES := $(TEST_EXES) $(APP_EXES)
|
|
|
|
DATA_FILES := \
|
|
tests/cat/test.txt \
|
|
tests/seek/big.txt \
|
|
examples/mdview/SAMPLE.MD
|
|
|
|
.PHONY: all tools lib tests examples check clean sdcc floppy $(TESTS) $(APPS)
|
|
|
|
all: tools lib tests examples
|
|
|
|
tools:
|
|
$(MAKE) -C toolchain/mkexe
|
|
|
|
lib:
|
|
$(MAKE) -C lib
|
|
|
|
check: tools
|
|
$(MAKE) -C toolchain/mkexe check
|
|
|
|
tests: $(TESTS)
|
|
examples: $(APPS)
|
|
|
|
$(TESTS): tools lib
|
|
$(MAKE) -C tests/$@
|
|
|
|
$(APPS): tools lib
|
|
$(MAKE) -C examples/$@
|
|
|
|
# Generate big.txt if missing (gen_bigfile.py creates 100 KB marker file).
|
|
tests/seek/big.txt:
|
|
cd tests/seek && python3 gen_bigfile.py big.txt 102400
|
|
|
|
# Re-pack the MAME floppy image with every built exe + needed data files.
|
|
floppy: tests examples tests/seek/big.txt
|
|
python3 $(MAKE_DISK) $(FLOPPY_IMG) $(ALL_EXES) $(DATA_FILES)
|
|
@echo
|
|
@echo "Floppy ready: $(FLOPPY_IMG)"
|
|
@echo "Run: cd $(MAME_DIR) && ./run_mame.sh"
|
|
|
|
clean:
|
|
$(MAKE) -C toolchain/mkexe clean
|
|
$(MAKE) -C lib clean
|
|
@for t in $(TESTS); do $(MAKE) -C tests/$$t clean; done
|
|
@for a in $(APPS); do $(MAKE) -C examples/$$a clean; done
|
|
|
|
sdcc:
|
|
bash third_party/setup-sdcc.sh
|