Files
Sprinter-SDCC/tests/w3probe/w3tiny.c
T
snark13 95c22be9bd libbgi: скролл-примитивы + --w3 + отчёт раскладки памяти
Скролл региона video->video (неактивная страница -> активная, банк 0x50:
копия = скролл + heal цели):
- gfx_scroll_h / _bgi_scroll_rows_raw — горизонтальный, построчно без
  страйдов (~54Т/строку), DI/EI бандами по 16 строк, h=0=>256;
- gfx_scroll_v / _bgi_scroll_cols_raw — верт. И/ИЛИ гориз. за один проход
  без буфера (колонка = accel-burst LD A,A, STOP между read/write делает
  промежуточный OUT Port_Y безопасным), банды по 16 колонок;
- _gfx_addr_shadow_base (адрес неактивной страницы) + gfx_rect_t.
Пример examples/scroll.

check_banks.py + sprinter-cc: отчёт раскладки памяти для ЛЮБОЙ модели
(W1/W2 код/данные, остаток кучи/стека, W3 при --w3, банки при --bank),
не только при --bank.  Док docs/memory-management.md §10.

--w3 (резидентный код окна W3) + сопутствующее: crt0_banked W3_RESIDENT,
mkexe -W, tests/w3probe.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 19:38:00 +03:00

31 lines
901 B
C
Raw Permalink 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.
/* w3tiny.c — проба --w3 в режиме tiny.
* tiny: код с 0x8100 (W2), W1 не используется, W3 свободно под резидент.
* Образ тянется 0x8100..0xC0xx (2 страницы) → DSS маппит W2 и W3. */
#include <stdio.h>
#include <stdint.h>
extern uint8_t w3_probe(uint8_t x);
extern void w3_show(void);
uint8_t w1_p, w2_p, w3_p; /* физ-страницы окон (заполняются asm) */
int main(void)
{
__asm
in a,(#0xA2)
ld (_w1_p), a
in a,(#0xC2)
ld (_w2_p), a
in a,(#0xE2)
ld (_w3_p), a
__endasm;
printf("TINY: main @ 0x%04X | pages W1=%02X W2=%02X W3=%02X\n",
(unsigned)&main, w1_p, w2_p, w3_p);
w3_show();
printf("TINY: w3_probe(0x42)=0x%02X (expect 0xBD), exit to DSS.\n",
(unsigned)w3_probe(0x42));
return 0;
}