Codebase cleanup & harmonization #2
@@ -1,27 +1,12 @@
|
||||
// ATA PIO driver implementation
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../kernel/io.h"
|
||||
#include "../libc/stdio.h"
|
||||
|
||||
#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
|
||||
#include "ata.h"
|
||||
|
||||
static inline uint16_t inw(uint16_t port) {
|
||||
uint16_t result;
|
||||
|
||||
@@ -1,8 +1,34 @@
|
||||
// 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 <stdint.h>
|
||||
|
||||
#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();
|
||||
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
// Framebuffer driver
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include "framebuffer.h"
|
||||
#include "serial.h"
|
||||
#include "../kernel/system.h"
|
||||
|
||||
//extern uint32_t *g_framebuffer;
|
||||
extern char* framebuffer;
|
||||
|
||||
void putpixel(uint32_t* fb, int pitch, int bpp, int x, int y, uint32_t color) // framebuffer pointer, x, y, color
|
||||
void putpixel(uint32_t* fb, int pitch, int bpp, int x, int y, uint32_t color)
|
||||
{
|
||||
if (bpp == 32) {
|
||||
uint32_t* pixel_addr = (uint32_t*)((uint8_t*)fb + y * pitch + x *(bpp / 8));
|
||||
@@ -13,14 +18,6 @@ void putpixel(uint32_t* fb, int pitch, int bpp, int x, int y, uint32_t color) //
|
||||
}
|
||||
}
|
||||
|
||||
extern char* framebuffer;
|
||||
extern int scanline;
|
||||
extern char _binary_include_fonts_UniCyr_8x16_psf_start;
|
||||
uint16_t* unicode;
|
||||
|
||||
#define PIXEL uint32_t
|
||||
|
||||
// Character, cursor X, cursor Y, foreground, background
|
||||
void draw_char(unsigned short int c, int cx, int cy, uint32_t fg, uint32_t bg)
|
||||
{
|
||||
PSF_font *font = (PSF_font*)&_binary_include_fonts_UniCyr_8x16_psf_start;
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
// Framebuffer driver header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef FRAMEBUFFER_H
|
||||
#define FRAMEBUFFER_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
extern int scanline;
|
||||
extern char _binary_include_fonts_UniCyr_8x16_psf_start;
|
||||
uint16_t* unicode;
|
||||
|
||||
#define PIXEL uint32_t
|
||||
|
||||
#define PSF1_FONT_MAGIC 0x0436
|
||||
|
||||
typedef struct {
|
||||
@@ -24,7 +35,6 @@ typedef struct {
|
||||
uint32_t width; /* width in pixels */
|
||||
} PSF_font;
|
||||
|
||||
//extern const unsigned char font[512][64];
|
||||
void putpixel(uint32_t* fb, int pitch, int bpp, int x, int y, uint32_t color);
|
||||
void draw_char(unsigned short int c, int cx, int cy, uint32_t fg, uint32_t bg);
|
||||
void scroll();
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
// 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"
|
||||
|
||||
#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
|
||||
#include "kb.h"
|
||||
|
||||
unsigned char kbdus[128] =
|
||||
{
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
// 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();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Serial I/O driver
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../kernel/io.h"
|
||||
#include "serial.h"
|
||||
#include "../libc/stdio.h"
|
||||
@@ -279,4 +284,3 @@ void serial_printf(int errlevel, const char* fmt, ...)
|
||||
}
|
||||
serial_puts("\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#ifndef INCLUDE_SERIAL_H
|
||||
#define INCLUDE_SERIAL_H
|
||||
// Serial I/O driver header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef SERIAL_H
|
||||
#define SERIAL_H
|
||||
|
||||
#define PORT 0x3f8 //COM1
|
||||
|
||||
@@ -9,4 +14,5 @@ void write_serial(const char a);
|
||||
void serial_puts(const char* str);
|
||||
void log(const char* str, const int errlevel);
|
||||
void serial_printf(int errlevel, const char* fmt, ...);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Programmable Interval Timer channel 0 driver
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../kernel/system.h"
|
||||
#include "../libc/stdio.h"
|
||||
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
// Global descriptor table setup
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "gdt.h"
|
||||
#include "../libc/stdio.h"
|
||||
|
||||
struct gdt_entry
|
||||
{
|
||||
unsigned short limit_low;
|
||||
unsigned short base_low;
|
||||
unsigned char base_middle;
|
||||
unsigned char access;
|
||||
unsigned char granularity;
|
||||
unsigned char base_high;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct gdt_ptr
|
||||
{
|
||||
unsigned short limit;
|
||||
unsigned int base;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct gdt_entry gdt[3];
|
||||
struct gdt_ptr gp;
|
||||
|
||||
|
||||
@@ -1,8 +1,28 @@
|
||||
// Global descriptor table setup header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef GDT_H
|
||||
#define GDT_H
|
||||
|
||||
void gdt_set_gate(int num, unsigned long base, unsigned long limit, unsigned char access, unsigned char gran);
|
||||
struct gdt_entry
|
||||
{
|
||||
unsigned short limit_low;
|
||||
unsigned short base_low;
|
||||
unsigned char base_middle;
|
||||
unsigned char access;
|
||||
unsigned char granularity;
|
||||
unsigned char base_high;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct gdt_ptr
|
||||
{
|
||||
unsigned short limit;
|
||||
unsigned int base;
|
||||
} __attribute__((packed));
|
||||
|
||||
void gdt_set_gate(int num, unsigned long base, unsigned long limit, unsigned char access, unsigned char gran);
|
||||
void gdt_install();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
// Interrupt descriptor table setup
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "idt.h"
|
||||
#include "system.h"
|
||||
#include "../libc/stdio.h"
|
||||
|
||||
struct idt_entry
|
||||
{
|
||||
unsigned short base_lo;
|
||||
unsigned short sel;
|
||||
unsigned char always0;
|
||||
unsigned char flags;
|
||||
unsigned short base_hi;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct idt_ptr
|
||||
{
|
||||
unsigned short limit;
|
||||
unsigned int base;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct idt_entry idt[256];
|
||||
struct idt_ptr idtp;
|
||||
|
||||
|
||||
@@ -1,8 +1,27 @@
|
||||
// Interrupt descriptor table setup header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef IDT_H
|
||||
#define IDT_H
|
||||
|
||||
void idt_set_gate(unsigned char num, unsigned long base, unsigned short sel, unsigned char flags);
|
||||
struct idt_entry
|
||||
{
|
||||
unsigned short base_lo;
|
||||
unsigned short sel;
|
||||
unsigned char always0;
|
||||
unsigned char flags;
|
||||
unsigned short base_hi;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct idt_ptr
|
||||
{
|
||||
unsigned short limit;
|
||||
unsigned int base;
|
||||
} __attribute__((packed));
|
||||
|
||||
void idt_set_gate(unsigned char num, unsigned long base, unsigned short sel, unsigned char flags);
|
||||
void idt_install();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#ifndef INCLUDE_IO_H
|
||||
#define INCLUDE_IO_H
|
||||
// Raw CPU port I/O kernel module header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef IO_H
|
||||
#define IO_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
; Raw CPU port I/O kernel module
|
||||
; Author: xamidev
|
||||
; Licensed under the Unlicense. See the repo below.
|
||||
; https//github.com/xamidev/blankos
|
||||
|
||||
global outb
|
||||
|
||||
outb:
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Interrupt Requests setup
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "system.h"
|
||||
#include "io.h"
|
||||
#include "idt.h"
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Interrupt service routines setup
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "system.h"
|
||||
#include "../libc/stdio.h"
|
||||
#include "idt.h"
|
||||
@@ -37,7 +42,6 @@ extern void isr31();
|
||||
|
||||
void isr_install()
|
||||
{
|
||||
|
||||
idt_set_gate(0, (unsigned)isr0, 0x08, 0x8E);
|
||||
idt_set_gate(1, (unsigned)isr1, 0x08, 0x8E);
|
||||
idt_set_gate(2, (unsigned)isr2, 0x08, 0x8E);
|
||||
@@ -116,4 +120,3 @@ void fault_handler(struct regs *r)
|
||||
for (;;);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
#include "kheap.h"
|
||||
// Kernel heap management
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "kheap.h"
|
||||
#include <stdint.h>
|
||||
|
||||
extern uint32_t end;
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Kernel heap management header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef KHEAP_H
|
||||
#define KHEAP_H
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
; Kernel loader assembly stub and multiboot2 header
|
||||
; Author: xamidev
|
||||
; Licensed under the Unlicense. See the repo below.
|
||||
; https//github.com/xamidev/blankos
|
||||
|
||||
global loader
|
||||
|
||||
section .multiboot_header
|
||||
@@ -44,8 +49,6 @@ extern kmain
|
||||
|
||||
loader:
|
||||
cli
|
||||
; mov eax, 0xCAFEBABE
|
||||
; push dword 42
|
||||
push ebx
|
||||
call kmain
|
||||
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
// Paging kernel module
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include "paging.h"
|
||||
#include "../libc/stdio.h"
|
||||
#include "system.h"
|
||||
#include "kheap.h"
|
||||
|
||||
|
||||
uint32_t *frames;
|
||||
uint32_t nframes;
|
||||
|
||||
extern uint32_t placement_address;
|
||||
|
||||
#define INDEX_FROM_BIT(a) (a/(8*4))
|
||||
#define OFFSET_FROM_BIT(a) (a%(8*4))
|
||||
|
||||
static void set_frame(uint32_t frame_addr)
|
||||
{
|
||||
uint32_t frame = frame_addr/0x1000;
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
// Paging kernel module header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef PAGING_H
|
||||
#define PAGING_H
|
||||
|
||||
#include "system.h"
|
||||
#include <stdint.h>
|
||||
|
||||
#define INDEX_FROM_BIT(a) (a/(8*4))
|
||||
#define OFFSET_FROM_BIT(a) (a%(8*4))
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t present : 1;
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Basic shell and commands kernel module
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "system.h"
|
||||
#include "../libc/stdio.h"
|
||||
#include "../libc/string.h"
|
||||
@@ -8,7 +13,6 @@
|
||||
#define MAX_COMMANDS 16
|
||||
#define MAX_ARGS 64
|
||||
|
||||
|
||||
char* ascii_title =
|
||||
"\n"
|
||||
"----------------------------------------------\n"
|
||||
@@ -17,7 +21,6 @@ char* ascii_title =
|
||||
"----------------------------------------------\n"
|
||||
"\n";
|
||||
|
||||
|
||||
typedef void (*command_func_t)(int argc, char *argv[]);
|
||||
|
||||
typedef struct
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// 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"
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// 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
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// System utilities and routines kernel module
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "system.h"
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// System utilities and routines kernel module header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef SYSTEM_H
|
||||
#define SYSTEM_H
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Cryptography routines for blankos/libc
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "crypto.h"
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// 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
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// Ctype implementation for blankos/libc
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
@@ -7,7 +11,6 @@ bool isdigit(char c)
|
||||
return c >= '0' && c <= '9';
|
||||
}
|
||||
|
||||
|
||||
bool isspace(char c)
|
||||
{
|
||||
return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Ctype implementation for blankos/libc header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef CTYPE_H
|
||||
#define CTYPE_H
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Standard input/output implementation for blankos/libc
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../kernel/io.h"
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
@@ -10,9 +15,6 @@ extern uint32_t* framebuffer;
|
||||
extern uint32_t VGA_WIDTH;
|
||||
extern uint32_t VGA_HEIGHT;
|
||||
unsigned int VGA_X = 0, VGA_Y = 0;
|
||||
|
||||
#define CURSOR_WIDTH 8
|
||||
#define CURSOR_HEIGHT 16
|
||||
extern int scanline;
|
||||
|
||||
void draw_cursor(uint32_t color)
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#ifndef INCLUDE_STDIO_H
|
||||
#define INCLUDE_STDIO_H
|
||||
// Standard input/output implementation for blankos/libc header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef STDIO_H
|
||||
#define STDIO_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
@@ -12,6 +17,8 @@
|
||||
#define FB_HIGH_BYTE_CMD 14
|
||||
#define FB_LOW_BYTE_CMD 15
|
||||
|
||||
#define CURSOR_WIDTH 8
|
||||
#define CURSOR_HEIGHT 16
|
||||
|
||||
void draw_cursor(uint32_t color);
|
||||
void erase_cursor();
|
||||
@@ -44,7 +51,6 @@ void printf(const char* fmt, ...);
|
||||
int* printf_number(int* argp, int length, bool sign, int radix, int width, char pad_char);
|
||||
int getch();
|
||||
void get_input(char *buffer, int size);
|
||||
|
||||
void dtostrf(double val, char *buffer, int precision);
|
||||
|
||||
enum Colors
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// String operations implementation for blankos/libc
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../kernel/system.h"
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#ifndef INCLUDE_STRING_H
|
||||
#define INCLUDE_STRING_H
|
||||
// String operations implementation for blankos/libc header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef STRING_H
|
||||
#define STRING_H
|
||||
|
||||
int strlen(const char* str);
|
||||
int strcmp(const char* str1, const char* str2);
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// Simple brainfuck interpreter program
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../kernel/system.h"
|
||||
#include "../libc/stdio.h"
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// Cipher programs
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../libc/stdio.h"
|
||||
#include "ciphers.h"
|
||||
#include "../libc/string.h"
|
||||
#include <stdint.h>
|
||||
|
||||
void rot13(char* input, char* output)
|
||||
{
|
||||
@@ -32,9 +39,6 @@ void program_rot13()
|
||||
printf("\n%s\n", output);
|
||||
}
|
||||
|
||||
#include "../libc/string.h"
|
||||
#include <stdint.h>
|
||||
|
||||
const char* morse_alphabet[] = {
|
||||
".-", // A
|
||||
"-...", // B
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Cipher programs header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef CIPHERS_H
|
||||
#define CIPHERS_H
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Conway's Game of Life program
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "conway.h"
|
||||
#include "../libc/stdio.h"
|
||||
#include "../kernel/system.h"
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Conway's Game of Life program header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef CONWAY_H
|
||||
#define CONWAY_H
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
// Math expression lexer and parser
|
||||
// Basic math expression lexer and parser program
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../kernel/system.h"
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
// Miscellaneous small programs
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../libc/stdio.h"
|
||||
#include "../kernel/system.h"
|
||||
@@ -30,7 +33,7 @@ void program_rainbow()
|
||||
|
||||
void program_clear()
|
||||
{
|
||||
for (int i=0; i<ROWS; i++) scroll();
|
||||
clear();
|
||||
}
|
||||
|
||||
// Get uptime in ticks
|
||||
@@ -38,7 +41,7 @@ void program_clear()
|
||||
void program_uptime()
|
||||
{
|
||||
int ticks = uptime();
|
||||
double seconds = ticks/18.2065; // PIC channel 0 freq
|
||||
double seconds = ticks/18.2065; // PIT channel 0 freq
|
||||
printf("%d ticks\t%f seconds\n", ticks, seconds);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Prime number computation program
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../libc/stdio.h"
|
||||
#include "../kernel/system.h"
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
// Global program entry points header
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#ifndef PROGRAMS_H
|
||||
#define PROGRAMS_H
|
||||
|
||||
@@ -22,4 +27,5 @@ void program_uptime();
|
||||
void program_panic();
|
||||
void program_help();
|
||||
void program_echo();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// System information program
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../kernel/sysinfo.h"
|
||||
#include "../libc/stdio.h"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// Pseudo-random word generation program
|
||||
// Author: xamidev
|
||||
// Licensed under the Unlicense. See the repo below.
|
||||
// https//github.com/xamidev/blankos
|
||||
|
||||
#include "../libc/stdio.h"
|
||||
#include "../libc/crypto.h"
|
||||
@@ -37,7 +41,7 @@ char* words[] =
|
||||
|
||||
int words_size = sizeof(words)/sizeof(words[0]);
|
||||
|
||||
// Generates 5 random words
|
||||
// Generates random words
|
||||
void program_words()
|
||||
{
|
||||
for (int i=0; i<10; i++)
|
||||
|
||||
Reference in New Issue
Block a user