/* p3map.c — экранный отчёт матрицы длинного перебора каталога. */ #include #include #include #include #include #include uint16_t p3_enum_mode(uint8_t mode, uint8_t page, int *end_errno) __banked; int main(void) { uint8_t block; uint8_t page; uint8_t mode; uint16_t count; int end_errno; (void)settextmode(TEXT_MODE_80x32); clrscr_attr(0x17u); gotoxy(0u, 0u); textattr(0x1Fu); cputs("P3 F_NEXT / W3 matrix\r\n\r\n"); textattr(0x17u); block = mem_alloc_pages(1u); page = block ? mem_get_page(block, 0u) : 0u; printf("EMM: block=%u page=%02X errno=%d\n", (unsigned)block, (unsigned)page, errno); if (!block || !page) goto done; for (mode = 0u; mode != 5u; mode++) { errno = 0; if (chdir("\\BIGDIR") != 0) { printf("mode %u: chdir error=%d\n", (unsigned)mode, errno); break; } count = p3_enum_mode(mode, page, &end_errno); printf("mode %u: count=%u end_errno=%d\n", (unsigned)mode, (unsigned)count, end_errno); errno = 0; if (chdir("\\") != 0) { printf("root after mode %u: error=%d\n", (unsigned)mode, errno); break; } } mem_free_block(block); done: textattr(0x1Eu); cputs("\r\nProbe stopped; MAME test will take a snapshot."); for (;;) (void)getkey(); }