# 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_hex.c mdview2_help.c mdview2_table.c mdview2_enc.c mdview2_md.c mdview2_status.c mdview2_index.c MEMORY := small # --max-allocs 100000: агрессивнее аллокация регистров SDCC — минус ~850 байт # кода на всём приложении (замер 2026-07-04) ценой более долгой компиляции. EXTRA_FLAGS := --max-allocs 100000 include $(PROJ_ROOT)/app.mk # ------------------------------------------------------------------ # Образ дискеты: mdview2.exe + документация. Каждый документ — в СВОЕЙ # кодировке, чтобы дискета заодно покрывала все пути автодетекта: # README.MD — документация, ОРИГИНАЛЬНЫЙ UTF-8 (как в репозитории); # CHANGES.MD — история версий, CP866 (хранится так, кладётся как есть; # имя укорочено: "CHANGELOG" не влезает в FAT 8.3); # DEMO.MD — демонстрация разметки, конвертируется UTF-8 → CP1251. # # iconv -c возвращает ненулевой код, если хоть один символ отброшен # (даже с -c) — это ОЖИДАЕМО при потере символов без аналога в целевой # кодировке, не ошибка конвертации; вывод при этом корректно записан. # Поэтому код возврата iconv игнорируется (|| true). # # Тестовые файлы лимита 256 КБ лежат в testfiles/ (генератор gen_testfiles.py); # на диск НЕ кладутся — при необходимости добавить вручную в список ниже. # ------------------------------------------------------------------ DISK_TMP := .disk_tmp DEMO_DISK := $(DISK_TMP)/DEMO.MD CHLOG_DISK := $(DISK_TMP)/CHANGES.MD $(DISK_TMP): mkdir -p $@ $(CHLOG_DISK): CHANGELOG.md | $(DISK_TMP) cp CHANGELOG.md $@ $(DEMO_DISK): DEMO.MD | $(DISK_TMP) iconv -c -f UTF-8 -t CP1251 DEMO.MD > $@ || true floppy: $(EXAMPLE).exe $(DEMO_DISK) $(CHLOG_DISK) python3 $(MAKE_DISK) $(FLOPPY_IMG) $(EXAMPLE).exe README.md $(DEMO_DISK) $(CHLOG_DISK) @echo @echo "Floppy ready: $(FLOPPY_IMG)" @echo "Run: cd $(MAME_DIR) && ./run_mame.sh" clean: rm -rf .sprinter-cc-* $(EXAMPLE).exe $(DISK_TMP) .PHONY: all clean floppy run