# MDView — Просмотрщик Markdown для Sprinter **MDView** — программа для просмотра документов в формате *Markdown* на компьютере Sprinter (процессор Z80). Документ хранится в отдельном W3 окне и не занимает основную RAM программы. ## Возможности - Документы до **128 КБ** (8 страниц EMM по 16 КБ каждая) - До **16 384** экранных строк в индексе - Автоматический перенос слов по ширине экрана (80 столбцов) - Горизонтальный сдвиг для широких строк (блоки кода, таблицы) - Статус-бар: имя файла, диапазон строк, процент прокрутки - Спиннер в строке состояния во время загрузки и индексации - Поддержка «мягкого» склеивания строк в абзацах и цитатах ## Запуск ``` mdview [имя_файла.md] ``` Если имя файла не задано, загружается `README.MD`. ## Управление ``` Клавиша Действие ───────────── ──────────────────────────────────────── Up Down Прокрутка на одну строку вверх / вниз PgUp PgDn Прокрутка на страницу (30 строк) Home Начало документа End Конец документа Left Right Горизонтальный сдвиг (только nowrap-строки) F1 Окно справки F10 / Esc Выход из программы ``` ## Синтаксис Markdown ### Заголовки Поддерживаются уровни H1–H4. Уровни H5 и H6 отображаются как H4. # Заголовок первого уровня ## Заголовок второго уровня ### Заголовок третьего уровня #### Заголовок четвёртого уровня ### Текстовое форматирование **Жирный текст** выделяется двойными звёздочками: `**текст**` *Курсив* выделяется одиночными звёздочками `*текст*` или знаком подчёркивания `_текст_` `Встроенный код` обозначается обратными кавычками ~~Зачёркнутый текст~~ — двойные тильды: `~~текст~~` ### Ненумерованный список Маркеры `-`, `*` или `+`: - Первый пункт списка - Второй пункт списка - Третий пункт с достаточно длинным текстом, который при необходимости будет перенесён на следующую строку с сохранением отступа ### Нумерованный список 1. Первый элемент 2. Второй элемент 3. Третий элемент ### Цитата > Блок цитаты начинается с символа `>`. Несколько последовательных > строк одной цитаты склеиваются в единый абзац с автоматическим > переносом слов. ### Блок кода (verbatim) Блок кода заключается в тройные обратные кавычки. Внутри блока текст отображается «как есть» без разбора Markdown: ``` #include #include int main(void) { puts("Hello, Sprinter!"); return 0; } ``` ### Горизонтальная линия Три или более символов `---`, `***` или `___` на отдельной строке: --- ## Технические характеристики - **Платформа:** Sprinter, процессор Z80 @ 21 МГц - **Кодировка:** CP866 (DOS Cyrillic) - **Максимальный размер файла:** 128 КБ - **Максимальное число строк в индексе:** 16 384 - **Режим памяти:** small - Код программы, cтек, данные, куча — окнa W1-W2 (32 КБ, адреса 0x4000–0xBFFF). - Буфер файла — страницы EMM, отображаемые в W3 (0xC000–0xFFFF) ## TODO 1. **Увеличение размера документов.** Снять лимит 128 КБ: Достаточно разрешить работать с большим кол-вом страниц памяти, пока оттестированно на работе с 8-мю страницами по 16Кб. 2. **Форматированные таблицы.** Разбирать строки вида `| ячейка | ячейка |` с автоматическим выравниванием столбцов и отрисовкой разделительных линий (строки `|---|---|`). На текущий момент таблицы отображаются как обычные nowrap-строки без выравнивания. 3. **Поддержка кодировок CP1251 и UTF-8.** Автоопределение кодировки по BOM, явное указание через аргумент командной строки (`--encoding cp1251`), возможность переключения кодировки во время просмотра (`F8`). Нужно прежде всего для документов на русском языке; CP866 кодировака уже поддерживается. 4. **Ускорение рендеринга.** Кэш строк экрана. Оптимизация цикла вывода символов через BIOS WRCHAR (пакетный вывод, DMA). --- *MDView v0.2 · (c) 2026 Петров А.Г.*