c71e249a4e
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>
33 lines
3.8 KiB
Plaintext
Executable File
33 lines
3.8 KiB
Plaintext
Executable File
В официальной документации есть информация о том, что при работе с графическим
|
|
экраном есть несколько методов для вывода графики:
|
|
- обычный;
|
|
- прозрачный цвет;
|
|
- временный;
|
|
Режим включается через указание номера страницы в порт окна процессора. Известно,
|
|
что для графического экрана у нас доступно 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 можно использовать как
|
|
раздельно, так и совместно. |