/* * scroll — прокрутка окна (x, y, w, h) на 1 позицию в направлении * direction, с очисткой освободившейся строки/колонки атрибутом clear. * ESTEX SCROLL ($55). * * SDCC __sdcccall(1): x в A, y в L; w,h и direction,clear запушены * парами на стек. Void-возврат → callee снимает стековые аргументы * (pop до RST) и уходит через jp (iy). */ #include "_conio.h" void scroll(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t direction, uint8_t clear) __naked { (void)x; (void)y; (void)w; (void)h; (void)direction; (void)clear; __asm pop iy ; адрес возврата ld d, l ; D = row (y) ld e, a ; E = col (x) pop hl ; H = высота (h), L = ширина (w) pop bc ; C = direction, B = clear ld a, b ; A = clear(B) ld b, c ; B = direction(C) push ix ld c, #0x55 ; ESTEX SCROLL rst #0x10 pop ix jp (iy) __endasm; }