68d5be6e47
Новый модуль mdview2_raw.c (+ mdview2.h с общими константами/атрибутами и
extern'ами) — первый шаг разбиения монолита. Опционален через mdview2_conf.h
(#define WITH_RAW): при 0 — пустой объектник, нулевой расход (проверено:
размер как до RAW).
RAW-просмотр (без markdown-форматирования):
- работает по активному буферу (8-бит как есть / UTF-8 декодированный), 1 байт
= 1 ячейка, \t→пробел, ремап CP1251/KOI8 на отрисовке;
- два под-режима: wrap (перенос кратно 80) и hscroll (одна строка + ←/→);
- прокрутка на 1 строку через аппаратный scroll + отрисовка одной строки;
вывод char-буфером (bios_write_until по фону ATTR_TEXT), без win_rest/scratch;
- индекс/кэш markdown не используются, 0 доп. EMM.
Клавиши/меню:
- F2 — тумблер RAW↔MD (запоминает под-режим RAW);
- F3 — Wrap/Unwrap (только в RAW), метка показывает целевой режим;
- меню перестроено: блоки по 8 кол (col i*8), номера всех 10 клавиш без 'F'
(' 1'..' 9','10'), текст-функция 6 симв. сразу за номером и только когда
функция доступна; F8 сокращён до CodePg.
Инкрементальная UTF-8→CP866 конвертация: вместо полного прохода перед
индексацией — чанками впереди позиции чтения (CONV_MARGIN), первый экран
появляется быстро. Конвертер читает оригинал через cv_read (своя W3-страница),
index_lines докручивает конвертацию; progress_tick рисует по текущему виду
(MD/RAW), без мелькания чужого вида.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
2.3 KiB
Makefile
51 lines
2.3 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
|
|
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
|
|
|
|
# UTF8TEST.MD кладётся на диск КАК ЕСТЬ (в UTF-8, без перекодировки) —
|
|
# это тестовый вход для проверки UTF-8 рендеринга (Фаза 2 кодировок).
|
|
floppy: $(EXAMPLE).exe $(README_DISK)
|
|
python3 $(MAKE_DISK) $(FLOPPY_IMG) $(EXAMPLE).exe $(README_DISK) UTF8TEST.MD
|
|
@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
|