Files
Sprinter-SDCC/docs/reference/README.md
T
snark13 c71e249a4e Add full compiler toolchain, libc, examples and reference docs
First substantive commit: the entire Sprinter C compiler tree on top of
the bare README+gitignore initial commit.

What's in here:
  bin/sprinter-cc        — driver script invoking SDCC + linker + mkexe
  libc/                  — Sprinter-specific libc layer over ESTEX/BIOS
                           (conio, gfx, io, mem, stdio + headers)
  runtime/               — crt0 variants (default/small/banked/minimal)
                           + heap + bank trampolines
  toolchain/             — mkexe (SprintEXE packer, C + tests)
  examples/              — 30 demo programs (gfx, file I/O, env, time, …)
  lib/Makefile           — builds the libc archive (sprinter.lib)
  docs/                  — converted Sprinter manuals + asm reference samples
  third_party/           — solid-c reference compiler dump + sdcc setup script
  release_docs/          — packaging / release notes

gitignore overhaul:
  • Drop dangerous blanket patterns: *.asm (would hide docs/samples/*.asm)
    and *.exe (case-insensitive match was hiding third_party/solid-c/*.EXE
    on macOS APFS).  Replaced with examples/*/*.{asm,exe,…} and lib/*.lib.
  • Restore tracking of toolchain/mkexe/tests/{one,big}.bin — those are
    INPUT fixtures, not build outputs.
  • Collapse the duplicated SDCC/C/Sdcc sections into one section per
    concern (build outputs / vendored / OS-junk).
  • Add .sprinter-cc-*/, build/ (catches lib/build/ too), .claude/.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 16:13:21 +03:00

35 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Reference materials
Положи сюда оригинальную документацию Sprinter / ESTEX. Любые форматы — PDF, TXT, MD, .h / .asm файлы — годятся. Перед написанием кода нужно сверить с этими источниками:
## Что особенно полезно
1. **Спецификация формата .EXE (ESTEX SprintEXE)**
- Заголовок 512 байт, поля `load`, `start`, `stack`, `offset`, `loader`
- Любые упоминания "loader-секции" и multi-page загрузки
- Что находится в зарезервированных полях `reserv1`, `reserv2`, `res[490]`
2. **Карта портов и аппаратной паджинации**
- Точная битовая раскладка портов **0x82, 0xA2, 0xC2, 0xE2** (page select для окон 0-3)
- Возможные служебные биты: write-protect, video overlay, ROM mapping
- Номера физических страниц видеопамяти — соответствие EMM-номеров (0x50..0x5F) и hardware page numbers
3. **ESTEX API**
- Полный список функций RST #10 (особенно файловые и memory management)
- Соглашение о возврате ошибок (CF=1?, регистр-код?)
- BIOS RST #08 функции (особенно EMM_FN0..EMM_FN7 — менеджер памяти)
4. **Видеорежимы**
- Режимы 320×256×256, 640×256×16, текст 80×32 — как маппится экранная память, какие страницы используются
- Адрес VRAM в каждом режиме (если она вообще попадает в адресное пространство CPU)
- Регистры выбора видеостраницы и активной палитры
5. **Прерывания**
- IM2 / IM1 / NMI семантика на Sprinter
- Источники прерываний (VBL? timer? keyboard?)
- Как ESTEX устанавливает таблицу IM2 и можно ли её переопределить
## Имена файлов
Можно как угодно — но если у файла есть осмысленное оригинальное имя, лучше оставить (например `estex-api.txt`, `sprinter-ports.pdf`).