8e389c03f8
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
/*
|
|
* p1_platform.h — общий контракт платформенных проб Commander P1.
|
|
*
|
|
* Это диагностический код приложения, не публичный заголовок libc. После
|
|
* подтверждения в MAME стабильные wrappers либо останутся в Commander,
|
|
* либо будут перенесены в libc отдельными модулями и тестами.
|
|
*/
|
|
|
|
#ifndef P1_PLATFORM_H
|
|
#define P1_PLATFORM_H
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef struct {
|
|
uint8_t sectors_per_cluster;
|
|
uint16_t total_clusters;
|
|
uint16_t free_clusters;
|
|
uint16_t bytes_per_sector;
|
|
} P1DiskInfo;
|
|
|
|
typedef char P1DiskInfo_must_be_7_bytes[(sizeof(P1DiskInfo) == 7) ? 1 : -1];
|
|
|
|
/* Последний код завершения, возвращённый EXEC при CF=0. */
|
|
extern uint8_t p1_exec_exit_code;
|
|
|
|
int p1_disk_info(uint8_t disk, P1DiskInfo *out);
|
|
int p1_exec(uint8_t path_mode, const char *path);
|
|
uint8_t p1_wait_code(void);
|
|
|
|
void p1_winrest(uint8_t row, uint8_t col, uint8_t height, uint8_t width,
|
|
uint8_t page, uint16_t offset);
|
|
|
|
int p1_test_emm(void);
|
|
int p1_test_directory(void);
|
|
int p1_test_screen(void);
|
|
int p1_test_keyboard(void);
|
|
int p1_test_exec(void);
|
|
int p1_test_disk_info(void);
|
|
|
|
void p1_heading(const char *title);
|
|
void p1_pause(void);
|
|
|
|
#endif
|