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>
This commit is contained in:
Executable
+33
@@ -0,0 +1,33 @@
|
||||
В официальной документации есть информация о том, что при работе с графическим
|
||||
экраном есть несколько методов для вывода графики:
|
||||
- обычный;
|
||||
- прозрачный цвет;
|
||||
- временный;
|
||||
Режим включается через указание номера страницы в порт окна процессора. Известно,
|
||||
что для графического экрана у нас доступно 16 страниц с номерами 50h - 5fh.
|
||||
При этом по факту программист не участвует в переключении этих страниц. Нужно
|
||||
знать только одно, что в номере страницы биты 2 и 3 отвечают за режим вывода.
|
||||
3..2 = 0 = 50h обычный метод вывода. Все данные попадают на экран без исключения.
|
||||
bit3 = 1 = 58h режим прозрачного цвета. Цвет с номером FFh не выводится на экран.
|
||||
bit2 = 1 = 54h временный вывод на экран. Самый мутный режим и тут нужно немного
|
||||
пояснить как работает экран у Спринтера.
|
||||
|
||||
Для работы с графикой на Спринтере установлена отдельная память - vram,
|
||||
т.е. видео-озу. По факту это sram, быстрая память. Экран устроен так, что при
|
||||
обычном методе или с приминением прозрачности все данные записываются и в vram
|
||||
и в ram (озу). Суть метода 3 в том, что когда он активен данные пишутся
|
||||
только в vram. Например, мы включили граф.режим, обычный метод и вывели фоновую
|
||||
картинку на весь экран. Потом включили бит3+бит2 и вывели какой-то спрайт.
|
||||
Координаты вывода мы запомнили. Потом нам нужно сдвинуть спрайт на сколько-то
|
||||
пикселей в сторону. Мы берём ранее сохранённые координаты, включаем обычный
|
||||
режим и делаем чтение и запись в те же координаты. Что получается в результате?
|
||||
Фоновая картинка была записана и в ram и в vram. Потом по методу 3+прозрачность
|
||||
мы вывели спрайт. Его данные попали только в vram, а в ram сохранена фоновая
|
||||
картинка. Когда мы снова включили обычный режим и сделали чтение, мы прочитали
|
||||
данные из ram, а потом записали их в vram и повторно в ram. Таким образом мы
|
||||
восстановили область под спрайтом. После этого можно рисовать спрайт в новых
|
||||
координатах. Замысел данного метода в том, что нам не требуется процедура
|
||||
и лишний буфер для сохранения фона (данные под спрайтом). Однако процедура
|
||||
которая будет восстанавливать этот фон, всё же нужна. При использовании
|
||||
акселератора это работает достаточно быстро. Биты 2 и 3 можно использовать как
|
||||
раздельно, так и совместно.
|
||||
Reference in New Issue
Block a user