# Обзор примеров

Релиз содержит 27 примеров в каталоге `examples/`.  Каждый — самодостаточная
демо-программа с комментариями (использовались как regression-тесты при разработке).

## Сборка примера

```sh
cd examples/hello
make
```

Результат — `hello.exe` рядом с `hello.c` через `examples/example.mk`.

## Категории

### Hello world / основы
* **`hello`** — stdio + conio Turbo-C-стиль цвета
* **`argv`** — парсинг argv в crt0
* **`conio`** — smoke test conio API
* **`attrprob`** — пробинг байта атрибутов Sprinter

### Файловый ввод-вывод
* **`cat`** — читает и печатает TEST.TXT
* **`seek`** — 32-битный lseek по файлу в 100 КБ
* **`ls`** — листинг каталога через ffirst/fnext
* **`filetest`** — FILE* стримы (`fopen`/`fread`/`fwrite`/`fclose`)
* **`stattest`** — `stat`/`fstat` для файлов и каталогов
* **`openenv`** — флаги open() + environment variables

### Память и банки
* **`malloc`** — стресс-тест heap (200+ allocations)
* **`mem_test`** — page allocator + `bank_read`/`bank_write`
* **`banked`** — banked-код в W3 (huge mode)
* **`bankedbg`** — banked-код в W1 (big mode)
* **`banklocl`** — bank-local статические данные и BSS

### Мышь
* **`mouse`** — драйвер в текстовом режиме
* **`gfx_mous`** — мышь с пользовательским bitmap-курсором в графическом режиме

### Графика
* **`gfx_demo`** — 320×256×256: линии, прямоугольники, fill через accelerator
* **`gfx_d16`** — 640×256×16: те же примитивы в 16-цветном режиме
* **`gfx_text`** — bitmap-текст на графическом экране

### Прочее
* **`errno`** — errno / strerror / perror
* **`timedir`** — дата/время + листинг каталога
* **`ptime`** — POSIX time API (time / localtime / mktime)
* **`strtest`** — `<string.h>` тест (из SDCC's z80.lib)
* **`stdlib`** — `<stdlib.h>` тест (qsort / rand / strtol / etc.)
* **`assrtest`** — assert()
* **`rt_test`** — runtime helpers (sleep, setjmp, atexit)

## Example.mk

Каждый пример использует `examples/example.mk`.  Минимальный Makefile:

```makefile
PROJ_ROOT := $(abspath $(CURDIR)/../..)
EXAMPLE   := my_app
include $(PROJ_ROOT)/examples/example.mk
```

Опциональные параметры (задаются до `include`):

```makefile
MEMORY      := huge                       # по умолчанию tiny
STACK_SIZE  := 4096                       # по умолчанию ~1278
EXTRA_SRCS  := helper.c util.c            # дополнительные .c в той же папке
EXTRA_FLAGS := --bank 1=engine.c --debug  # pass-through в sprinter-cc
```

Используйте этот template для своих программ.
