From b3687d20ee384594c7fa523bf2413311193366a6 Mon Sep 17 00:00:00 2001 From: xamidev Date: Tue, 7 Jan 2025 15:11:10 +0100 Subject: [PATCH] AFUERAAAA --- src/drivers/ata.c | 62 ----------------- src/drivers/ata.h | 35 ---------- src/drivers/kb.c | 158 ------------------------------------------ src/drivers/kb.h | 20 ------ src/drivers/pci.c | 103 --------------------------- src/drivers/pci.h | 29 -------- src/drivers/rtc.c | 64 ----------------- src/drivers/rtc.h | 23 ------ src/kernel/irq.c | 4 -- src/kernel/kmain.c | 13 ---- src/kernel/loader.s | 31 --------- src/kernel/syscalls.c | 33 --------- src/kernel/sysinfo.c | 16 ----- src/kernel/sysinfo.h | 11 --- src/libc/crypto.c | 48 ------------- src/libc/crypto.h | 19 ----- src/libc/stdio.c | 3 +- 17 files changed, 2 insertions(+), 670 deletions(-) delete mode 100644 src/drivers/ata.c delete mode 100644 src/drivers/ata.h delete mode 100644 src/drivers/kb.c delete mode 100644 src/drivers/kb.h delete mode 100644 src/drivers/pci.c delete mode 100644 src/drivers/pci.h delete mode 100644 src/drivers/rtc.c delete mode 100644 src/drivers/rtc.h delete mode 100644 src/kernel/syscalls.c delete mode 100644 src/kernel/sysinfo.c delete mode 100644 src/kernel/sysinfo.h delete mode 100644 src/libc/crypto.c delete mode 100644 src/libc/crypto.h diff --git a/src/drivers/ata.c b/src/drivers/ata.c deleted file mode 100644 index bdcc09f..0000000 --- a/src/drivers/ata.c +++ /dev/null @@ -1,62 +0,0 @@ -// ATA PIO driver implementation -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include -#include "../kernel/io.h" -#include "../libc/stdio.h" -#include "ata.h" - -static inline uint16_t inw(uint16_t port) { - uint16_t result; - asm volatile("inw %1, %0" : "=a"(result) : "dN"(port)); - return result; -} - -static inline void outw(uint16_t port, uint16_t data) { - asm volatile("outw %1, %0" : : "dN"(port), "a"(data)); -} - -void ata_wait_bsy() { - while (inb(ATA_PRIMARY_IO + ATA_REG_STATUS) & ATA_SR_BSY); -} - -void ata_wait_drq() { - while (!(inb(ATA_PRIMARY_IO + ATA_REG_STATUS) & ATA_SR_DRQ)); -} - -void ata_select_drive(uint8_t drive) { - outb(ATA_PRIMARY_IO + ATA_REG_HDDEVSEL, 0xE0 | (drive << 4)); -} - -void ata_read_sector(uint32_t lba, uint8_t* buffer) { - ata_wait_bsy(); - ata_select_drive(0); - - outb(ATA_PRIMARY_IO + ATA_REG_SECCOUNT0, 1); - outb(ATA_PRIMARY_IO + ATA_REG_LBA0, (uint8_t)lba); - outb(ATA_PRIMARY_IO + ATA_REG_LBA1, (uint8_t)(lba >> 8)); - outb(ATA_PRIMARY_IO + ATA_REG_LBA2, (uint8_t)(lba >> 16)); - outb(ATA_PRIMARY_IO + ATA_REG_HDDEVSEL, 0xE0 | ((lba >> 24) & 0x0F)); - - outb(ATA_PRIMARY_IO + ATA_REG_COMMAND, ATA_CMD_READ_PIO); - - ata_wait_bsy(); - ata_wait_drq(); - - for (int i = 0; i < 256; i++) { - ((uint16_t*)buffer)[i] = inw(ATA_PRIMARY_IO + ATA_REG_DATA); - } -} - -// Works only w/o paging -void test_read_sector() { - uint8_t buffer[512]; - ata_read_sector(0, buffer); - - for (int i = 0; i < 512; i++) { - if (i%25==0) puts("\n"); - printf("%02x ", buffer[i]); - } -} diff --git a/src/drivers/ata.h b/src/drivers/ata.h deleted file mode 100644 index 8eb11d3..0000000 --- a/src/drivers/ata.h +++ /dev/null @@ -1,35 +0,0 @@ -// ATA PIO driver implementation header -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#ifndef ATA_H -#define ATA_H - -#include - -#define ATA_PRIMARY_IO 0x1F0 -#define ATA_PRIMARY_CTRL 0x3F6 -#define ATA_CMD_READ_PIO 0x20 -#define ATA_CMD_WRITE_PIO 0x30 -#define ATA_IDENTIFY 0xEC - -#define ATA_REG_DATA 0x00 -#define ATA_REG_ERROR 0x01 -#define ATA_REG_SECCOUNT0 0x02 -#define ATA_REG_LBA0 0x03 -#define ATA_REG_LBA1 0x04 -#define ATA_REG_LBA2 0x05 -#define ATA_REG_HDDEVSEL 0x06 -#define ATA_REG_COMMAND 0x07 -#define ATA_REG_STATUS 0x07 - -#define ATA_SR_BSY 0x80 -#define ATA_SR_DRDY 0x40 -#define ATA_SR_DRQ 0x08 -#define ATA_SR_ERR 0x01 - -void ata_read_sector(uint32_t lba, uint8_t* buffer); -void test_read_sector(); - -#endif diff --git a/src/drivers/kb.c b/src/drivers/kb.c deleted file mode 100644 index b45e5f1..0000000 --- a/src/drivers/kb.c +++ /dev/null @@ -1,158 +0,0 @@ -// Keyboard driver -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include "../kernel/io.h" -#include "../libc/stdio.h" -#include "../kernel/system.h" -#include "kb.h" - -unsigned char kbdus[128] = -{ - 0, 27, '1', '2', '3', '4', '5', '6', '7', '8', /* 9 */ - '9', '0', '-', '=', '\b', /* Backspace */ - '\t', /* Tab */ - 'q', 'w', 'e', 'r', /* 19 */ - 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\n', /* Enter key */ - 0, /* 29 - Control */ - 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', /* 39 */ - '\'', '`', 0, /* Left shift */ - '\\', 'z', 'x', 'c', 'v', 'b', 'n', /* 49 */ - 'm', ',', '.', '/', 0, /* Right shift */ - '*', - 0, /* Alt */ - ' ', /* Space bar */ - 0, /* Caps lock */ - 0, /* 59 - F1 key ... > */ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, /* < ... F10 */ - 0, /* 69 - Num lock*/ - 0, /* Scroll Lock */ - 0, /* Home key */ - 0, /* Up Arrow */ - 0, /* Page Up */ - '-', - 0, /* Left Arrow */ - 0, - 0, /* Right Arrow */ - '+', - 0, /* 79 - End key*/ - 0, /* Down Arrow */ - 0, /* Page Down */ - 0, /* Insert Key */ - 0, /* Delete Key */ - 0, 0, 0, - 0, /* F11 Key */ - 0, /* F12 Key */ - 0, /* All other keys are undefined */ -}; - -unsigned char kbdus_shift[128] = -{ - 0, 27, '!', '@', '#', '$', '%', '^', '&', '*', /* 9 */ - '(', ')', '_', '+', '\b', /* Backspace */ - '\t', /* Tab */ - 'Q', 'W', 'E', 'R', /* 19 */ - 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', '\n', /* Enter key */ - 0, /* 29 - Control */ - 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', /* 39 */ - '"', '~', 0, /* Left shift */ - '|', 'Z', 'X', 'C', 'V', 'B', 'N', /* 49 */ - 'M', '<', '>', '?', 0, /* Right shift */ - '*', - 0, /* Alt */ - ' ', /* Space bar */ - 0, /* Caps lock */ - 0, /* 59 - F1 key ... > */ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, /* < ... F10 */ - 0, /* 69 - Num lock*/ - 0, /* Scroll Lock */ - 0, /* Home key */ - 0, /* Up Arrow */ - 0, /* Page Up */ - '-', - 0, /* Left Arrow */ - 0, - 0, /* Right Arrow */ - '+', - 0, /* 79 - End key*/ - 0, /* Down Arrow */ - 0, /* Page Down */ - 0, /* Insert Key */ - 0, /* Delete Key */ - 0, 0, 0, - 0, /* F11 Key */ - 0, /* F12 Key */ - 0, /* All other keys are undefined */ -}; - -static char keyboard_buffer[KEYBOARD_BUFFER_SIZE]; -static unsigned int keyboard_buffer_start = 0; -static unsigned int keyboard_buffer_end = 0; -static int shift_pressed = 0; - -void keyboard_handler() -{ - unsigned char scancode; - - scancode = inb(0x60); - - if (scancode & 0x80) - { - if (scancode == LEFT_SHIFT_RELEASED || scancode == RIGHT_SHIFT_RELEASED) { - shift_pressed = 0; - } - } - else - { - if (scancode == LEFT_SHIFT_PRESSED || scancode == RIGHT_SHIFT_PRESSED) { - shift_pressed = 1; - } else { - char c; - if (shift_pressed) { - c = kbdus_shift[scancode]; - } else { - c = kbdus[scancode]; - } - - if (c) - { - keyboard_buffer[keyboard_buffer_end] = c; - keyboard_buffer_end = (keyboard_buffer_end+1) % KEYBOARD_BUFFER_SIZE; - } - } - } -} - -void keyboard_install() -{ - irq_install_handler(1, keyboard_handler); - printf("[keyboard] installed irq handler\n"); -} - -char keyboard_getchar() -{ - while (keyboard_buffer_start == keyboard_buffer_end); - - char c = keyboard_buffer[keyboard_buffer_start]; - keyboard_buffer_start = (keyboard_buffer_start+1) % KEYBOARD_BUFFER_SIZE; - return c; -} - -int keyboard_has_input() -{ - return keyboard_buffer_start != keyboard_buffer_end; -} - -char keyboard_getchar_non_blocking() -{ - if (keyboard_has_input()) - { - char c = keyboard_buffer[keyboard_buffer_start]; - keyboard_buffer_start = (keyboard_buffer_start+1)%KEYBOARD_BUFFER_SIZE; - return c; - } - return 0; -} diff --git a/src/drivers/kb.h b/src/drivers/kb.h deleted file mode 100644 index ceff888..0000000 --- a/src/drivers/kb.h +++ /dev/null @@ -1,20 +0,0 @@ -// Keyboard driver header -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#ifndef KB_H -#define KB_H - -#define KEYBOARD_BUFFER_SIZE 256 - -#define LEFT_SHIFT_PRESSED 0x2A -#define RIGHT_SHIFT_PRESSED 0x36 -#define LEFT_SHIFT_RELEASED 0xAA -#define RIGHT_SHIFT_RELEASED 0xB6 - -char keyboard_getchar(); -int keyboard_has_input(); -char keyboard_getchar_non_blocking(); - -#endif diff --git a/src/drivers/pci.c b/src/drivers/pci.c deleted file mode 100644 index 18d05b6..0000000 --- a/src/drivers/pci.c +++ /dev/null @@ -1,103 +0,0 @@ -// PCI bus driver implementation -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include -#include "pci.h" -#include "../libc/stdio.h" - -static inline void outl(uint16_t port, uint32_t value) -{ - __asm__ volatile ("outl %0, %1" : : "a"(value), "Nd"(port)); -} - -static inline uint32_t inl(uint16_t port) -{ - uint32_t ret; - __asm__ volatile ("inl %1, %0" : "=a"(ret) : "Nd"(port)); - return ret; -} - -void pci_write_config_address(uint32_t address) -{ - outl(PCI_CONFIG_ADDRESS, address); -} - -uint32_t pci_read_config_data() -{ - return inl(PCI_CONFIG_DATA); -} - -uint32_t pci_config_address(uint8_t bus, uint8_t device, uint8_t function, uint8_t offset) -{ - return (1 << 31) | (bus << 16) | (device << 11) | (function << 8) | (offset & 0xFC); -} - -uint32_t pci_read(uint8_t bus, uint8_t device, uint8_t function, uint8_t offset) -{ - uint32_t address = pci_config_address(bus, device, function, offset); - pci_write_config_address(address); - return pci_read_config_data(); -} - -pci_device_t pci_get_device(uint8_t bus, uint8_t device, uint8_t function) -{ - pci_device_t dev; - - uint32_t reg0 = pci_read(bus, device, function, 0x00); // Vendor ID, Device ID - uint32_t reg2 = pci_read(bus, device, function, 0x08); // Class, Subclass, Prog IF, Revision - - dev.vendor_id = reg0 & 0xFFFF; - dev.device_id = (reg0 >> 16) & 0xFFFF; - dev.class_code = (reg2 >> 24) & 0xFF; - dev.subclass = (reg2 >> 16) & 0xFF; - dev.prog_if = (reg2 >> 8) & 0xFF; - dev.revision_id = reg2 & 0xFF; - dev.bus = bus; - dev.device = device; - dev.function = function; - - return dev; -} - -void scan_pci_bus() -{ - for (uint16_t bus = 0; bus < 256; bus++) { - for (uint8_t device = 0; device < 32; device++) { - for (uint8_t function = 0; function < 8; function++) { - pci_device_t dev = pci_get_device(bus, device, function); - - if (dev.vendor_id != 0xFFFF) { - - // Maybe put that in a database in initrd.tar? - char* vendor_string; - switch(dev.vendor_id) - { - case 0x8086: - vendor_string = "Intel Corporation"; - break; - case 0x1234: - vendor_string = "Brain Actuated Technologies"; - break; - default: - vendor_string = "Unknown"; - break; - } - - char* device_string; - switch(dev.device_id) - { - default: - device_string = "Unknown"; - break; - } - - printf("PCI Device found: Bus %u, Device %u, Function %u, Vendor ID: 0x%x (%s), Device ID: 0x%x (%s), Class: 0x%x\n", - dev.bus, dev.device, dev.function, dev.vendor_id, vendor_string, dev.device_id, device_string, dev.class_code); - } - } - } - } -} - diff --git a/src/drivers/pci.h b/src/drivers/pci.h deleted file mode 100644 index d9483bb..0000000 --- a/src/drivers/pci.h +++ /dev/null @@ -1,29 +0,0 @@ -// PCI bus driver implementation header -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#ifndef PCI_H -#define PCI_H - -#include - -#define PCI_CONFIG_ADDRESS 0xCF8 -#define PCI_CONFIG_DATA 0xCFC - -typedef struct -{ - uint16_t vendor_id; - uint16_t device_id; - uint8_t class_code; - uint8_t subclass; - uint8_t prog_if; - uint8_t revision_id; - uint8_t bus; - uint8_t device; - uint8_t function; -} pci_device_t; - -void scan_pci_bus(); - -#endif diff --git a/src/drivers/rtc.c b/src/drivers/rtc.c deleted file mode 100644 index 92a5beb..0000000 --- a/src/drivers/rtc.c +++ /dev/null @@ -1,64 +0,0 @@ -// Real-time clock driver implementation for better PRNG -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include -#include "rtc.h" -#include "../kernel/io.h" -#include "../libc/stdio.h" - -uint8_t rtc_read_register(uint8_t reg) -{ - outb(0x70, reg); - return inb(0x71); -} - -uint8_t bcd_to_bin(uint8_t bcd) -{ - return ((bcd/16)*10) + (bcd%16); -} - -int rtc_is_updating() -{ - outb(0x70, 0x0A); - return (inb(0x71) & 0x80); -} - -void rtc_read_time(rtc_time_t *time) -{ - while (rtc_is_updating()); - - time->seconds = rtc_read_register(0x00); - time->minutes = rtc_read_register(0x02); - time->hours = rtc_read_register(0x04); - time->day = rtc_read_register(0x06); - time->month = rtc_read_register(0x07); - time->year = rtc_read_register(0x08); - - outb(0x70, 0x0B); - uint8_t registerB = inb(0x71); - - if (!(registerB & 0x04)) - { - time->seconds = bcd_to_bin(time->seconds); - time->minutes = bcd_to_bin(time->minutes); - time->hours = bcd_to_bin(time->hours); - time->day = bcd_to_bin(time->day); - time->month = bcd_to_bin(time->month); - time->year = bcd_to_bin(time->year); - } -} - -void print_time(const rtc_time_t *time) -{ - printf("%02d/%02d/%02d %02d:%02d:%02d\n", time->day, time->month, time->year, time->hours, time->minutes, time->seconds); -} - -long time_seed() -{ - rtc_time_t* time = {0}; - rtc_read_time(time); - - return time->day + time->month + time->year + time->hours + time->minutes + time->seconds; -} diff --git a/src/drivers/rtc.h b/src/drivers/rtc.h deleted file mode 100644 index ef2bddf..0000000 --- a/src/drivers/rtc.h +++ /dev/null @@ -1,23 +0,0 @@ -// Real-time clock driver implementation header for better PRNG -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#ifndef RTC_H -#define RTC_H - -typedef struct -{ - uint8_t seconds; - uint8_t minutes; - uint8_t hours; - uint8_t day; - uint8_t month; - uint8_t year; -} rtc_time_t; - -void rtc_read_time(rtc_time_t *time); -long time_seed(); -void print_time(const rtc_time_t *time); - -#endif diff --git a/src/kernel/irq.c b/src/kernel/irq.c index baa117a..05f6f6f 100644 --- a/src/kernel/irq.c +++ b/src/kernel/irq.c @@ -25,8 +25,6 @@ extern void irq13(); extern void irq14(); extern void irq15(); -extern void syscall_common_stub(); - void *irq_routines[16] = { 0, 0, 0, 0, 0, 0, 0, 0, @@ -78,8 +76,6 @@ void irq_install() idt_set_gate(46, (unsigned)irq14, 0x08, 0x8E); idt_set_gate(47, (unsigned)irq15, 0x08, 0x8E); printf("[kernel] installed irq 0-15\n"); - - idt_set_gate(0x80, (unsigned long)syscall_common_stub, 0x08, 0x8E); } void irq_handler(struct regs *r) diff --git a/src/kernel/kmain.c b/src/kernel/kmain.c index cf2de4c..64485de 100644 --- a/src/kernel/kmain.c +++ b/src/kernel/kmain.c @@ -8,14 +8,12 @@ #include "gdt.h" #include "idt.h" #include "system.h" -#include "../drivers/ata.h" #include #include "../drivers/framebuffer.h" #include "kmain.h" #include "multiboot2.h" #include "kheap.h" #include "initrd.h" -#include "../libc/crypto.h" void kmain(multiboot2_info *mb_info) { @@ -112,19 +110,8 @@ void kmain(multiboot2_info *mb_info) __asm__ __volatile__("sti"); init_alloc(); - void* ptr1 = malloc(256); - void* ptr2 = malloc(512); - printf("[debug] malloc test ptr1=0x%x, ptr2=0x%x\n", (unsigned int)ptr1, (unsigned int)ptr2); - free(ptr1); free(ptr2); - - void* ptr3 = calloc(1024, 2); - printf("[debug] calloc test ptr3=0x%x\n", (unsigned int)ptr3); - free (ptr3); - - // usually the place where i do testing timer_install(); - keyboard_install(); printf("Nothing to do, halting..."); asm("hlt"); } diff --git a/src/kernel/loader.s b/src/kernel/loader.s index 1029284..7ae9c0a 100644 --- a/src/kernel/loader.s +++ b/src/kernel/loader.s @@ -210,37 +210,6 @@ irq_common_stub: add esp, 8 iret -; we'll be placing the syscall_common_stub here. -; push everything, then call syscall_handler (be sure to define it extern) -; then pop back everything and iret -extern syscall_handler - -global syscall_common_stub -syscall_common_stub: - pusha - push ds - push es - push fs - push gs - - mov eax, ds - push eax ; save ds - mov ax, 0x01 ; kernel segment YES I CHEATED I KNOW THIS SUCKS - mov ds, ax - mov es, ax - - call syscall_handler - - pop eax - mov ds, eax ; restore ds - - pop gs - pop fs - pop es - pop ds - popa - iret - section .bss align 4 diff --git a/src/kernel/syscalls.c b/src/kernel/syscalls.c deleted file mode 100644 index aac4650..0000000 --- a/src/kernel/syscalls.c +++ /dev/null @@ -1,33 +0,0 @@ -// System calls -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include "../libc/stdio.h" - -void handle_syscall(int syscall_number) -{ - switch(syscall_number) - { - case 1: - puts("Here's the syscall 1\n"); - break; - default: - printf("[error] Invalid syscall number '%d'!\n", syscall_number); - break; - } -} - -void syscall_handler() -{ - int syscall_number; - void* arg; - // mov eax, syscall_number - // mov ebx, arg - asm volatile("mov %%eax, %0" : "=r"(syscall_number)); - asm volatile("mov %%ebx, %0" : "=r"(arg)); - - printf("[syscall] syscall_number=%d, arg=%p\n", syscall_number, arg); - - handle_syscall(syscall_number); -} diff --git a/src/kernel/sysinfo.c b/src/kernel/sysinfo.c deleted file mode 100644 index 088f41d..0000000 --- a/src/kernel/sysinfo.c +++ /dev/null @@ -1,16 +0,0 @@ -// System information kernel module -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include "../libc/stdio.h" -#include "../libc/string.h" - -void cpuid(int code, unsigned int* a, unsigned int* d) -{ - asm volatile("cpuid" - : "=a"(*a), "=d"(*d) - : "a"(code) - : "ecx", "ebx"); -} - diff --git a/src/kernel/sysinfo.h b/src/kernel/sysinfo.h deleted file mode 100644 index d05a265..0000000 --- a/src/kernel/sysinfo.h +++ /dev/null @@ -1,11 +0,0 @@ -// System information kernel module header -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#ifndef SYSINFO_H -#define SYSINFO_H - -void cpuid(int code, unsigned int* a, unsigned int* d); - -#endif diff --git a/src/libc/crypto.c b/src/libc/crypto.c deleted file mode 100644 index ba2a48e..0000000 --- a/src/libc/crypto.c +++ /dev/null @@ -1,48 +0,0 @@ -// Cryptography routines for blankos/libc -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#include "crypto.h" -#include - -int lcg(int seed) -{ - int x = seed; - - // Constants (ZX81 LCG) - int a = 75; - int c = 74; - long m = 65537; - - for (int i=0; i<10; i++) - { - x = (a*x + c) % m; - } - - return x; -} - -int randint(int seed) -{ - int x = lcg(seed); - return x; -} - -static uint32_t next = 1; - -uint32_t rand() -{ - next = next * 1103515245 + 12345; - return (next/65536) % 32768; -} - -float rand_float() -{ - return rand() / 32767.0f; -} - -void srand(uint32_t seed) -{ - next = seed; -} diff --git a/src/libc/crypto.h b/src/libc/crypto.h deleted file mode 100644 index fddbbc9..0000000 --- a/src/libc/crypto.h +++ /dev/null @@ -1,19 +0,0 @@ -// Cryptography routines for blankos/libc header -// Author: xamidev -// Licensed under the Unlicense. See the repo below. -// https://github.com/xamidev/blankos - -#ifndef CRYPTO_H -#define CRYPTO_H - -#define RAND_MAX 1024 - -#include - -int lcg(int seed); -int randint(int seed); -uint32_t rand(); -float rand_float(); -void srand(uint32_t seed); - -#endif diff --git a/src/libc/stdio.c b/src/libc/stdio.c index d332202..bf9428a 100644 --- a/src/libc/stdio.c +++ b/src/libc/stdio.c @@ -482,7 +482,7 @@ int* printf_number(int* argp, int length, bool sign, int radix, int width, char return argp; } - +/* int getch() { return keyboard_getchar(); @@ -511,6 +511,7 @@ void get_input(char *buffer, int size) { } buffer[index] = '\0'; } +*/ void colorprintf(uint32_t fg, uint32_t bg, const char* fmt, ...) {