/* sc_screen.h — экранная EMM-модель Commander 80x32. */ #ifndef SC_SCREEN_API_H #define SC_SCREEN_API_H #include #define SC_SCREEN_W 80u #define SC_SCREEN_H 32u #define SC_ROW_BYTES 160u #define SC_SCREEN_BYTES 5120u #define SC_SCROLL_UP 1u #define SC_SCROLL_DOWN 2u typedef struct { uint8_t ch; uint8_t attr; } ScCell; typedef char ScCell_must_be_2_bytes[(sizeof(ScCell) == 2) ? 1 : -1]; void sc_screen_attach(uint8_t page); void sc_screen_detach(void); void sc_screen_clear(uint8_t attr); void sc_screen_cell(uint8_t x, uint8_t y, uint8_t ch, uint8_t attr); void sc_screen_fill(uint8_t x, uint8_t y, uint8_t width, uint8_t ch, uint8_t attr); void sc_screen_text(uint8_t x, uint8_t y, const char *text, uint8_t attr, uint8_t max_width); int sc_screen_present_full(void); int sc_screen_present_row(uint8_t x, uint8_t y, uint8_t width); int sc_screen_present_rows(uint8_t first, uint8_t count); int sc_screen_scroll_rows(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t direction, uint8_t fill_attr); #endif