Files
Sprinter-SDCC/examples/mdview
snark13 138e783e72 mdview2: горизонтальный скролл по типу блока + фиксы fence/HR/SDCC
Горизонтальный скролл (Фаза 5, финал):
- Скроллим по ТИПУ, а не по длине: новый флаг IF_HSCROLL ставится только
  на код и таблицы; HR и границы fence (IF_NOWRAP без IF_HSCROLL) не
  двигаются. Блок едет целиком, включая строки короче 80.
- Обход бага кодогенерации SDCC z80: `if (n!=g) g=n;` пишет (n-g) вместо n
  (SUB сравнения затирает A, store переиспользует испорченный A). Лечится
  записью viewport_x ДО сравнения. Минимальный репродьюсер и оба описания
  для трекера — в docs/bugs/sdcc-z80-cmp-store-a/ (воспроизводится на чистом
  sdcc 4.5, в т.ч. с --no-peep → это кодогенератор, не peephole).

Рендеринг:
- Отступленный fence (```c внутри списка) теперь распознаётся: is_fence_raw
  пропускает ведущие пробелы/табы; то же в рендере прячет строку-границу.
- Строки-разделители (HR, ровно 80) больше не участвуют в скролле.

Чистка: удалён мёртвый код (is_fence_delim, get_init_style[_raw], is_cont,
seg_flags). Makefile (mdview/mdview2): iconv UTF-8→CP866 завершается ненулевым
кодом при отбрасывании символов — игнорируем (|| true).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 10:11:27 +03:00
..
2026-06-10 10:35:48 +03:00

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 <stdio.h>
#include <sprinter.h>

int main(void) {
    puts("Hello, Sprinter!");
    return 0;
}

Горизонтальная линия

Три или более символов ---, *** или ___ на отдельной строке:


Технические характеристики

  • Платформа: Sprinter, процессор Z80 @ 21 МГц
  • Кодировка: CP866 (DOS Cyrillic)
  • Максимальный размер файла: 128 КБ
  • Максимальное число строк в индексе: 16 384
  • Режим памяти: small
    • Код программы, cтек, данные, куча — окнa W1-W2 (32 КБ, адреса 0x40000xBFFF).
    • Буфер файла — страницы EMM, отображаемые в W3 (0xC0000xFFFF)

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 Петров А.Г.