add system time, clean up pci into pci.sys, clean up syscall names, fix USERAPC1 typo
This commit is contained in:
1 parent
c1a291c4c9
commit
e41bf6e2c0
64 files changed
+4514
-2220
No files matched your search
@@ -251,7 +251,7 @@ static bool g_prev_key[KEYMAP_COUNT];
|
||||
static void poll_input(void)
|
||||
{
|
||||
for (int i = 0; i < (int)KEYMAP_COUNT; i++) {
|
||||
bool cur_down = (SysKbIsKeyDown(g_keymap[i].inputKey) != 0);
|
||||
bool cur_down = (SysIsKeyDown(g_keymap[i].inputKey) != 0);
|
||||
bool prev_down = g_prev_key[i];
|
||||
|
||||
if (cur_down && !prev_down) doom_key_down(g_keymap[i].key);
|
||||
@@ -295,7 +295,7 @@ static void render_frame(const uint8_t* rgba)
|
||||
}
|
||||
}
|
||||
|
||||
SysScreenBlit(0, 0, DISP_W, DISP_H, g_blit_buf);
|
||||
SysBlitScreen(0, 0, DISP_W, DISP_H, g_blit_buf);
|
||||
}
|
||||
|
||||
static int build_argv_from_command_line(const char* cmdline, char* storage, size_t storageSize,
|
||||
|
||||
@@ -81,7 +81,7 @@ static void update_screen_size(void) {
|
||||
int oldCols = gCols;
|
||||
int oldRows = gRows;
|
||||
|
||||
if (SysScreenGetSize(&pxW, &pxH) == 0 && pxW > 0 && pxH > 0) {
|
||||
if (SysGetScreenSize(&pxW, &pxH) == 0 && pxW > 0 && pxH > 0) {
|
||||
gCols = pxW / GLYPH_W;
|
||||
gRows = pxH / GLYPH_H;
|
||||
|
||||
@@ -111,7 +111,7 @@ static void put_cell(int col, int row, char c, uint32_t fg, uint32_t bg) {
|
||||
cell->bg = bg;
|
||||
}
|
||||
|
||||
SysScreenPutChar(c, col * GLYPH_W, row * GLYPH_H, fg, bg);
|
||||
SysPutScreenChar(c, col * GLYPH_W, row * GLYPH_H, fg, bg);
|
||||
}
|
||||
|
||||
static void clear_row(int row, uint32_t bg) {
|
||||
@@ -473,8 +473,8 @@ static void editor_loop(void) {
|
||||
while (true) {
|
||||
render();
|
||||
|
||||
INPUT_KEY key = SysKbReadKey();
|
||||
uint32_t mods = SysKbGetModifiers();
|
||||
INPUT_KEY key = SysReadKey();
|
||||
uint32_t mods = SysGetKeyModifiers();
|
||||
bool ctrl = (mods & INPUT_MOD_CTRL) != 0;
|
||||
|
||||
if (ctrl && key == EDIT_KEY_Q) {
|
||||
@@ -535,10 +535,10 @@ static void print(const char* s) {
|
||||
int main(void) {
|
||||
parse_filename_from_cmdline();
|
||||
load_file();
|
||||
SysScreenClear(COL_BG);
|
||||
SysClearScreen(COL_BG);
|
||||
invalidate_screen_cache();
|
||||
editor_loop();
|
||||
SysScreenClear(0x012456);
|
||||
SysClearScreen(0x012456);
|
||||
invalidate_screen_cache();
|
||||
print("edit: goodbye\n");
|
||||
SysExitProcess(0);
|
||||
|
||||
@@ -191,9 +191,9 @@ int main(void) {
|
||||
print(")\n");
|
||||
|
||||
uint32_t sock = 0;
|
||||
st = SysSocket(SYS_AF_INET, SYS_SOCK_STREAM, SYS_IPPROTO_TCP, &sock);
|
||||
st = SysCreateSocket(SYS_AF_INET, SYS_SOCK_STREAM, SYS_IPPROTO_TCP, &sock);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("httpget: SysSocket failed "); print_u64(st); print("\n");
|
||||
print("httpget: SysCreateSocket failed "); print_u64(st); print("\n");
|
||||
SysExitProcess(1);
|
||||
}
|
||||
|
||||
@@ -206,9 +206,9 @@ int main(void) {
|
||||
addr.Address[2] = ip[2];
|
||||
addr.Address[3] = ip[3];
|
||||
|
||||
st = SysConnect(sock, &addr, sizeof(addr));
|
||||
st = SysConnectSocket(sock, &addr, sizeof(addr));
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("httpget: SysConnect failed "); print_u64(st); print("\n");
|
||||
print("httpget: SysConnectSocket failed "); print_u64(st); print("\n");
|
||||
SysCloseHandle(sock);
|
||||
SysExitProcess(1);
|
||||
}
|
||||
@@ -225,9 +225,9 @@ int main(void) {
|
||||
size_t totalSent = 0;
|
||||
while (totalSent < off) {
|
||||
size_t sent = 0;
|
||||
st = SysSend(sock, request + totalSent, off - totalSent, 0, &sent);
|
||||
st = SysSendSocket(sock, request + totalSent, off - totalSent, 0, &sent);
|
||||
if (st != SYS_STATUS_SUCCESS || sent == 0) {
|
||||
print("httpget: SysSend failed "); print_u64(st); print(" sent="); print_u64(sent); print("\n");
|
||||
print("httpget: SysSendSocket failed "); print_u64(st); print(" sent="); print_u64(sent); print("\n");
|
||||
SysCloseHandle(sock);
|
||||
SysExitProcess(1);
|
||||
}
|
||||
@@ -238,9 +238,9 @@ int main(void) {
|
||||
size_t total = 0;
|
||||
for (;;) {
|
||||
size_t got = 0;
|
||||
st = SysRecv(sock, buf, sizeof(buf) - 1, 0, &got);
|
||||
st = SysRecvSocket(sock, buf, sizeof(buf) - 1, 0, &got);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("\nhttpget: SysRecv failed "); print_u64(st); print(" after "); print_u64(total); print(" bytes\n");
|
||||
print("\nhttpget: SysRecvSocket failed "); print_u64(st); print(" after "); print_u64(total); print(" bytes\n");
|
||||
SysCloseHandle(sock);
|
||||
SysExitProcess(1);
|
||||
}
|
||||
@@ -251,7 +251,7 @@ int main(void) {
|
||||
}
|
||||
|
||||
print("\nhttpget: done, "); print_u64(total); print(" bytes\n");
|
||||
SysShutdown(sock, SYS_SHUTDOWN_BOTH);
|
||||
SysShutdownSocket(sock, SYS_SHUTDOWN_BOTH);
|
||||
SysCloseHandle(sock);
|
||||
SysExitProcess(0);
|
||||
return 0;
|
||||
|
||||
@@ -250,9 +250,9 @@ int main(void) {
|
||||
format_ipv4(ipText, sizeof(ipText), ip);
|
||||
|
||||
uint32_t sock = 0;
|
||||
st = SysSocket(SYS_AF_INET, SYS_SOCK_RAW, SYS_IPPROTO_ICMP, &sock);
|
||||
st = SysCreateSocket(SYS_AF_INET, SYS_SOCK_RAW, SYS_IPPROTO_ICMP, &sock);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("ping: SysSocket(raw icmp) failed "); print_u64(st); print("\n");
|
||||
print("ping: SysCreateSocket(raw icmp) failed "); print_u64(st); print("\n");
|
||||
SysExitProcess(1);
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@ int main(void) {
|
||||
sendReq.SentOut = &sent;
|
||||
|
||||
uint64_t start = SysGetTick();
|
||||
st = SysSendTo(sock, &sendReq);
|
||||
st = SysSendToSocket(sock, &sendReq);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("ping: send failed seq="); print_u64(seq); print(" status="); print_u64(st); print("\n");
|
||||
if (i + 1 < count) SysSleep(1000);
|
||||
@@ -319,7 +319,7 @@ int main(void) {
|
||||
recvReq.RemoteAddressSizeInOut = &fromSize;
|
||||
recvReq.ReceivedOut = &got;
|
||||
|
||||
st = SysRecvFrom(sock, &recvReq);
|
||||
st = SysRecvFromSocket(sock, &recvReq);
|
||||
if (st == SYS_STATUS_TIMEOUT)
|
||||
break;
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
|
||||
@@ -77,12 +77,35 @@ static void printUIntWidth(uint32_t n, size_t width) {
|
||||
printUInt(n);
|
||||
}
|
||||
|
||||
static void printUIntZeroWidth(uint32_t n, size_t width) {
|
||||
uint32_t digits = u64Digits(n);
|
||||
while (width > digits) { print("0"); width--; }
|
||||
printUInt(n);
|
||||
}
|
||||
|
||||
static void printUInt64Width(uint64_t n, size_t width) {
|
||||
uint32_t digits = u64Digits(n);
|
||||
if (width > digits) printSpaces(width - digits);
|
||||
printUInt64(n);
|
||||
}
|
||||
|
||||
static void printDirTime(const SYS_SYSTEM_TIME* t) {
|
||||
if (!t || !(t->Flags & SYS_TIME_FLAG_VALID)) {
|
||||
print("---- -- -- --:-- ");
|
||||
return;
|
||||
}
|
||||
printUIntZeroWidth(t->Year, 4);
|
||||
print("-");
|
||||
printUIntZeroWidth(t->Month, 2);
|
||||
print("-");
|
||||
printUIntZeroWidth(t->Day, 2);
|
||||
print(" ");
|
||||
printUIntZeroWidth(t->Hour, 2);
|
||||
print(":");
|
||||
printUIntZeroWidth(t->Minute, 2);
|
||||
print(" ");
|
||||
}
|
||||
|
||||
static void printStringWidth(const char* s, size_t width) {
|
||||
size_t len = s ? strlen(s) : 0;
|
||||
if (s) print(s);
|
||||
@@ -95,7 +118,7 @@ static void printStringWidth(const char* s, size_t width) {
|
||||
static void readLine(char* buf, int len) {
|
||||
int pos = 0;
|
||||
while (true) {
|
||||
char c = SysKbReadChar();
|
||||
char c = SysReadKeyboardChar();
|
||||
if (!c) { SysYield(); continue; }
|
||||
if (c == '\r' || c == '\n') { print("\n"); break; }
|
||||
if ((c == '\b' || c == 127) && pos > 0) { pos--; print("\b \b"); continue; }
|
||||
@@ -120,6 +143,7 @@ static void cmd_help() {
|
||||
print("Available commands:\n"
|
||||
" help - Show this list\n"
|
||||
" mem - Show memory usage\n"
|
||||
" time - Show system wall-clock time\n"
|
||||
" stats - Show scheduler/CPU/PMM telemetry\n"
|
||||
" ps - List processes\n"
|
||||
" dir [path] - List directory contents\n"
|
||||
@@ -226,6 +250,34 @@ static void cmd_stats(void) {
|
||||
print(" 1024+: "); printUInt64(pmm.FreeRunHistogram[7]); print("\n");
|
||||
}
|
||||
|
||||
|
||||
static void cmd_time(void) {
|
||||
SYS_SYSTEM_TIME t;
|
||||
uint32_t status = SysGetSystemTime(&t);
|
||||
if (status != 0) {
|
||||
print("time: failed: ");
|
||||
printUInt(status);
|
||||
print("\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printUIntZeroWidth(t.Year, 4); print("-");
|
||||
printUIntZeroWidth(t.Month, 2); print("-");
|
||||
printUIntZeroWidth(t.Day, 2); print(" ");
|
||||
printUIntZeroWidth(t.Hour, 2); print(":");
|
||||
printUIntZeroWidth(t.Minute, 2); print(":");
|
||||
printUIntZeroWidth(t.Second, 2); print(".");
|
||||
printUIntZeroWidth(t.Millisecond, 3);
|
||||
print(" epoch="); printUInt64(t.EpochSeconds);
|
||||
print(" flags=0x"); printUInt(t.Flags);
|
||||
if (t.Flags & SYS_TIME_FLAG_TZ_KNOWN) {
|
||||
print(" tz="); printInt(t.TimeZoneMinutes);
|
||||
} else {
|
||||
print(" tz=unspecified");
|
||||
}
|
||||
print("\n");
|
||||
}
|
||||
|
||||
static void cmd_mem(void) {
|
||||
SYS_MEMORY_STATUS st;
|
||||
if (SysGetMemoryStatus(&st) != 0) {
|
||||
@@ -338,6 +390,8 @@ static void cmd_dir(const char* path) {
|
||||
|
||||
SYS_DIR_ENTRY ke;
|
||||
while (SysReadDir(hDir, &ke) == 0) {
|
||||
printDirTime(&ke.LastWriteTime);
|
||||
|
||||
// Corrected Attribute Check: 0x10 is the Directory bit in FAT
|
||||
if (ke.Attr & 0x10) {
|
||||
print("<DIR> ");
|
||||
@@ -397,7 +451,7 @@ static int runCommand(const char* cmd) {
|
||||
if (!cmd || *cmd == '\0') return 0;
|
||||
if (strcmp(cmd, "exit") == 0) return 1;
|
||||
if (strcmp(cmd, "help") == 0) { cmd_help(); return 0; }
|
||||
if (strcmp(cmd, "clear") == 0) { SysScreenClear(0x012456); return 0; }
|
||||
if (strcmp(cmd, "clear") == 0) { SysClearScreen(0x012456); return 0; }
|
||||
if (strncmp(cmd, "crash", 5) == 0) {
|
||||
// Check the sub-option trailing "crash " (offset 6)
|
||||
if (strcmp(cmd + 6, "void") == 0) {
|
||||
@@ -437,6 +491,7 @@ static int runCommand(const char* cmd) {
|
||||
}
|
||||
}
|
||||
if (strcmp(cmd, "mem") == 0) { cmd_mem(); return 0; }
|
||||
if (strcmp(cmd, "time") == 0 || strcmp(cmd, "date") == 0) { cmd_time(); return 0; }
|
||||
if (strcmp(cmd, "stats") == 0 || strcmp(cmd, "telemetry") == 0) { cmd_stats(); return 0; }
|
||||
if (strcmp(cmd, "ps") == 0) { cmd_ps(); return 0; }
|
||||
if (strcmp(cmd, "dir") == 0) { cmd_dir("."); return 0; }
|
||||
@@ -453,7 +508,7 @@ static int runCommand(const char* cmd) {
|
||||
if (create_process(program, &hProc, cmd) == 0) {
|
||||
SysWaitForProcess(hProc);
|
||||
SysCloseHandle(hProc);
|
||||
while (SysKbPoll()) (void)SysKbReadChar();
|
||||
while (SysPollKeyboard()) (void)SysReadKeyboardChar();
|
||||
} else { print("shell: launch failed\n"); }
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -76,9 +76,9 @@ int main(void) {
|
||||
}
|
||||
|
||||
uint32_t listener = 0;
|
||||
uint32_t st = SysSocket(SYS_AF_INET, SYS_SOCK_STREAM, SYS_IPPROTO_TCP, &listener);
|
||||
uint32_t st = SysCreateSocket(SYS_AF_INET, SYS_SOCK_STREAM, SYS_IPPROTO_TCP, &listener);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("tcpserve: SysSocket failed "); print_u64(st); print("\n");
|
||||
print("tcpserve: SysCreateSocket failed "); print_u64(st); print("\n");
|
||||
SysExitProcess(1);
|
||||
}
|
||||
|
||||
@@ -91,16 +91,16 @@ int main(void) {
|
||||
bindAddr.Address[2] = 0;
|
||||
bindAddr.Address[3] = 0;
|
||||
|
||||
st = SysBind(listener, &bindAddr, sizeof(bindAddr));
|
||||
st = SysBindSocket(listener, &bindAddr, sizeof(bindAddr));
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("tcpserve: SysBind failed "); print_u64(st); print("\n");
|
||||
print("tcpserve: SysBindSocket failed "); print_u64(st); print("\n");
|
||||
SysCloseHandle(listener);
|
||||
SysExitProcess(1);
|
||||
}
|
||||
|
||||
st = SysListen(listener, 4);
|
||||
st = SysListenSocket(listener, 4);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("tcpserve: SysListen failed "); print_u64(st); print("\n");
|
||||
print("tcpserve: SysListenSocket failed "); print_u64(st); print("\n");
|
||||
SysCloseHandle(listener);
|
||||
SysExitProcess(1);
|
||||
}
|
||||
@@ -111,9 +111,9 @@ int main(void) {
|
||||
SYS_SOCKET_ADDRESS_IPV4 remote;
|
||||
size_t remoteSize = sizeof(remote);
|
||||
uint32_t client = 0;
|
||||
st = SysAccept(listener, &remote, &remoteSize, &client);
|
||||
st = SysAcceptSocket(listener, &remote, &remoteSize, &client);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("tcpserve: SysAccept failed "); print_u64(st); print("\n");
|
||||
print("tcpserve: SysAcceptSocket failed "); print_u64(st); print("\n");
|
||||
SysCloseHandle(listener);
|
||||
SysExitProcess(1);
|
||||
}
|
||||
@@ -129,9 +129,9 @@ int main(void) {
|
||||
|
||||
char request[1025];
|
||||
size_t got = 0;
|
||||
st = SysRecv(client, request, sizeof(request) - 1, 0, &got);
|
||||
st = SysRecvSocket(client, request, sizeof(request) - 1, 0, &got);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("tcpserve: SysRecv failed "); print_u64(st); print("\n");
|
||||
print("tcpserve: SysRecvSocket failed "); print_u64(st); print("\n");
|
||||
SysCloseHandle(client);
|
||||
SysCloseHandle(listener);
|
||||
SysExitProcess(1);
|
||||
@@ -168,13 +168,13 @@ int main(void) {
|
||||
#undef APPEND_LITERAL
|
||||
|
||||
size_t sent = 0;
|
||||
st = SysSend(client, response, off, 0, &sent);
|
||||
st = SysSendSocket(client, response, off, 0, &sent);
|
||||
if (st == SYS_STATUS_SUCCESS)
|
||||
st = SysSend(client, body, sizeof(body) - 1, 0, &sent);
|
||||
st = SysSendSocket(client, body, sizeof(body) - 1, 0, &sent);
|
||||
if (st != SYS_STATUS_SUCCESS)
|
||||
print("tcpserve: SysSend failed "), print_u64(st), print("\n");
|
||||
print("tcpserve: SysSendSocket failed "), print_u64(st), print("\n");
|
||||
|
||||
SysShutdown(client, SYS_SHUTDOWN_BOTH);
|
||||
SysShutdownSocket(client, SYS_SHUTDOWN_BOTH);
|
||||
SysCloseHandle(client);
|
||||
SysCloseHandle(listener);
|
||||
print("tcpserve: done\n");
|
||||
|
||||
+10
-10
@@ -116,9 +116,9 @@ static int run_send(const char* cmd) {
|
||||
}
|
||||
|
||||
uint32_t sock = 0;
|
||||
uint32_t st = SysSocket(SYS_AF_INET, SYS_SOCK_DGRAM, SYS_IPPROTO_UDP, &sock);
|
||||
uint32_t st = SysCreateSocket(SYS_AF_INET, SYS_SOCK_DGRAM, SYS_IPPROTO_UDP, &sock);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("udp: SysSocket failed "); print_u64(st); print("\n");
|
||||
print("udp: SysCreateSocket failed "); print_u64(st); print("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -140,10 +140,10 @@ static int run_send(const char* cmd) {
|
||||
req.RemoteAddressSize = sizeof(remote);
|
||||
req.SentOut = &sent;
|
||||
|
||||
st = SysSendTo(sock, &req);
|
||||
st = SysSendToSocket(sock, &req);
|
||||
SysCloseHandle(sock);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("udp: SysSendTo failed "); print_u64(st); print("\n");
|
||||
print("udp: SysSendToSocket failed "); print_u64(st); print("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -159,9 +159,9 @@ static int run_listen(const char* cmd) {
|
||||
if (!tok[0] || !parse_port(tok, &port)) { usage(); return 1; }
|
||||
|
||||
uint32_t sock = 0;
|
||||
uint32_t st = SysSocket(SYS_AF_INET, SYS_SOCK_DGRAM, SYS_IPPROTO_UDP, &sock);
|
||||
uint32_t st = SysCreateSocket(SYS_AF_INET, SYS_SOCK_DGRAM, SYS_IPPROTO_UDP, &sock);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("udp: SysSocket failed "); print_u64(st); print("\n");
|
||||
print("udp: SysCreateSocket failed "); print_u64(st); print("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -170,9 +170,9 @@ static int run_listen(const char* cmd) {
|
||||
bindAddr.Family = SYS_AF_INET;
|
||||
bindAddr.Port = port;
|
||||
|
||||
st = SysBind(sock, &bindAddr, sizeof(bindAddr));
|
||||
st = SysBindSocket(sock, &bindAddr, sizeof(bindAddr));
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("udp: SysBind failed "); print_u64(st); print("\n");
|
||||
print("udp: SysBindSocket failed "); print_u64(st); print("\n");
|
||||
SysCloseHandle(sock);
|
||||
return 1;
|
||||
}
|
||||
@@ -191,10 +191,10 @@ static int run_listen(const char* cmd) {
|
||||
req.RemoteAddressSizeInOut = &remoteSize;
|
||||
req.ReceivedOut = &got;
|
||||
|
||||
st = SysRecvFrom(sock, &req);
|
||||
st = SysRecvFromSocket(sock, &req);
|
||||
SysCloseHandle(sock);
|
||||
if (st != SYS_STATUS_SUCCESS) {
|
||||
print("udp: SysRecvFrom failed "); print_u64(st); print("\n");
|
||||
print("udp: SysRecvFromSocket failed "); print_u64(st); print("\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user