40ab5b9b48
make run пересобирает образ через floppy, затирая прежний диск. Теперь floppy генерирует BIG.MD (README+READMEBG ×2 ~216 КБ → CP866) и кладёт его рядом с README/UTF8TEST — образ всегда содержит файл >128 КБ для проверки лимита 256 КБ. Состав переопределяется: make floppy BIG_SRCS=... Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
60 lines
2.9 KiB
Makefile
60 lines
2.9 KiB
Makefile
# Build mdview2.exe — Markdown viewer for Sprinter (render-cache version).
|
||
#
|
||
# Фаза 0: скаффолдинг — копия mdview.c как baseline, без изменений
|
||
# логики. План — docs/mdview2-plan.md.
|
||
#
|
||
# small memory mode: code in W1, data/stack/heap in W2 (32 KB total).
|
||
# W3 stays free for the file buffer (EMM-mapped).
|
||
|
||
PROJ_ROOT := $(abspath $(CURDIR)/../..)
|
||
EXAMPLE := mdview2
|
||
EXTRA_SRCS := mdview2_raw.c mdview2_help.c mdview2_table.c mdview2_enc.c mdview2_md.c mdview2_status.c mdview2_index.c
|
||
MEMORY := small
|
||
|
||
include $(PROJ_ROOT)/app.mk
|
||
|
||
# ------------------------------------------------------------------
|
||
# Образ дискеты: только mdview2.exe + README.MD (перекодированный
|
||
# из UTF-8 в CP866 — рабочую кодировку Sprinter).
|
||
#
|
||
# README.MD хранится в репозитории в UTF-8; iconv -c конвертирует
|
||
# его в CP866, отбрасывая символы без аналога в целевой кодировке.
|
||
# Результат кладётся в .disk_tmp/README.MD, чтобы make_disk.py
|
||
# использовал правильное имя файла на диске.
|
||
#
|
||
# iconv -c возвращает ненулевой код, если хоть один символ отброшен
|
||
# (даже с -c) — это ОЖИДАЕМО при потере символов без аналога в CP866,
|
||
# не ошибка конвертации; вывод при этом всё равно корректно записан.
|
||
# Поэтому код возврата iconv игнорируется (|| true).
|
||
# ------------------------------------------------------------------
|
||
DISK_TMP := .disk_tmp
|
||
README_DISK := $(DISK_TMP)/README.MD
|
||
|
||
$(DISK_TMP):
|
||
mkdir -p $@
|
||
|
||
$(README_DISK): README.MD | $(DISK_TMP)
|
||
iconv -c -f UTF-8 -t CP866 README.MD > $@ || true
|
||
|
||
# Большой тестовый файл (>128 КБ) для проверки лимита 256 КБ: склейка
|
||
# README.MD + READMEBG.MD ×2 (~216 КБ) → CP866, кладётся на диск как BIG.MD.
|
||
# Переопределить состав можно через `make floppy BIG_SRCS="a.md b.md"`.
|
||
BIG_DISK := $(DISK_TMP)/BIG.MD
|
||
BIG_SRCS ?= README.MD READMEBG.MD README.MD READMEBG.MD
|
||
|
||
$(BIG_DISK): $(sort $(BIG_SRCS)) | $(DISK_TMP)
|
||
cat $(BIG_SRCS) | iconv -c -f UTF-8 -t CP866 > $@ || true
|
||
|
||
# UTF8TEST.MD кладётся на диск КАК ЕСТЬ (в UTF-8, без перекодировки) —
|
||
# это тестовый вход для проверки UTF-8 рендеринга (Фаза 2 кодировок).
|
||
floppy: $(EXAMPLE).exe $(README_DISK) $(BIG_DISK)
|
||
python3 $(MAKE_DISK) $(FLOPPY_IMG) $(EXAMPLE).exe $(README_DISK) $(BIG_DISK) UTF8TEST.MD
|
||
@echo
|
||
@echo "Floppy ready: $(FLOPPY_IMG) (mdview2.exe + README.MD + BIG.MD + UTF8TEST.MD)"
|
||
@echo "Run: cd $(MAME_DIR) && ./run_mame.sh"
|
||
|
||
clean:
|
||
rm -rf .sprinter-cc-* $(EXAMPLE).exe $(DISK_TMP)
|
||
|
||
.PHONY: all clean floppy run
|