/* * dos.h — DOS-подобный слой Solid-C поверх ESTEX/BIOS: диски, * дата/время в Turbo-C-структурах, абсолютное чтение/запись секторов. * * Структуры совместимы с Solid-C DOS.H (и Turbo C): * struct time { ti_min, ti_hour, ti_hund, ti_sec } * struct date { da_year, da_day, da_mon (1 = январь) } * ti_hund (сотые секунды) не поддержан RTC Sprinter — всегда 0. */ #ifndef DOS_H #define DOS_H #include struct time { unsigned char ti_min; /* минуты */ unsigned char ti_hour; /* часы */ unsigned char ti_hund; /* сотые доли секунды (не используются) */ unsigned char ti_sec; /* секунды */ }; struct date { int da_year; /* год (полный, напр. 2026) */ char da_day; /* день месяца */ char da_mon; /* месяц (1 = январь) */ }; /* Чтение/установка даты и времени (обёртки над getdatetime/ * setdatetime — set* делает read-modify-write полного datetime_t). */ void getdate(struct date *d); int setdate(const struct date *d); void gettime(struct time *t); int settime(const struct time *t); /* Текущий диск: 0=A, 1=B, ... setdisk возвращает число дисков или * -1 + errno. */ uint8_t getdisk(void); int setdisk(uint8_t drive); /* Абсолютное чтение/запись секторов ЛОГИЧЕСКОГО диска (BIOS $55/$56, * rst 8; сектор 0 = boot-сектор, с 1 — первая FAT и т.д.). * Возврат 0 или -1 + errno (EREAD/EWRITE, как у Solid-C). * Буфер должен лежать в #4000-#BFFF (требование BIOS). */ int absread (uint8_t disk, uint16_t nsect, uint8_t count, void *buffer); int abswrite(uint8_t disk, uint16_t nsect, uint8_t count, const void *buffer); #endif