8e389c03f8
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
39 lines
1.2 KiB
C
39 lines
1.2 KiB
C
/* sc_screen.h — экранная EMM-модель Commander 80x32. */
|
|
|
|
#ifndef SC_SCREEN_API_H
|
|
#define SC_SCREEN_API_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#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
|