/* * mouse_load_cursor — загрузить форму курсора из *c (RST 30h, fn $09 * LOAD MOUSE CURSOR). Драйвер берёт указатель битмапа в IX, поля — * в H/L/D/E; переносим их из структуры через общий скретч (_mouse.h), * чтобы у asm были известные имена. */ #include "_mouse.h" #include void mouse_load_cursor(const mouse_cursor_t *c) { /* Разложить поля структуры по скретч-переменным для asm. */ _mc_image = (uint16_t)(uintptr_t)c->image; _mc_width = c->width; _mc_height = c->height; _mc_hot_x = c->hot_x; _mc_hot_y = c->hot_y; __asm push ix ld ix, (__mc_image) ld a, (__mc_height) ld h, a ld a, (__mc_width) ld l, a ld a, (__mc_hot_y) ld d, a ld a, (__mc_hot_x) ld e, a ld b, #0 ld c, #0x09 ; LOAD MOUSE CURSOR rst #0x30 ; MOUSE pop ix __endasm; }