Espresso 0.0.1c

This commit is contained in:
2025-07-01 20:39:38 -05:00
parent f9f3faca4f
commit 8648637b51
23 changed files with 384 additions and 419 deletions

View File

@ -1,6 +1,6 @@
#ifndef _AHCI_H
#define _AHCI_H
#include <types.h>
#endif

View File

@ -0,0 +1,6 @@
#ifndef _AHCI_TYPES_H
#define _AHCI_TYPES_H
#endif

View File

@ -33,8 +33,12 @@
#define ATA_SR_ERR 0x01
void ide_initialize(void);
int32_t ide_identify(uint8_t drive, uint16_t* buffer);
int32_t ide_read48(uint8_t drive, uint64_t lba, uint8_t sector_count, void* buffer);
int32_t ide_write48(uint8_t drive, uint64_t lba, uint8_t sector_count, const void* buffer);
int32_t read_sector(uint64_t lba, void* buffer);
int32_t write_sector(uint64_t lba, const void* buffer);
#endif

View File

@ -3,6 +3,10 @@
#include <types.h>
typedef void (*irq_func_t)(void);
void irq_init(void);
void irq_handler(uint8_t irq_number);
void set_irq_handler(uint32_t num, irq_func_t* handler);
#endif

View File

@ -1,7 +1,66 @@
#ifndef _PCI_H
#define _PCI_H
#include <stdint.h>
#include <types.h>
struct pci_header {
uint16_t vendor_id;
uint16_t device_id;
uint16_t command;
uint16_t status;
uint8_t revision_id;
uint8_t prog_if;
uint8_t subclass;
uint8_t class_code;
uint8_t cache_line_size;
uint8_t latency_timer;
uint8_t header_type;
uint8_t bist;
} __attribute__((packed));
struct pci_header_type_0 {
uint16_t vendor_id;
uint16_t device_id;
uint16_t command;
uint16_t status;
uint8_t revision_id;
uint8_t prog_if;
uint8_t subclass;
uint8_t class_code;
uint8_t cache_line_size;
uint8_t latency_timer;
uint8_t header_type;
uint8_t bist;
uint32_t bar0;
uint32_t bar1;
uint32_t bar2;
uint32_t bar3;
uint32_t bar4;
uint32_t bar5;
uint32_t cardbus_cis_ptr;
uint16_t subsystem_vendor_id;
uint16_t subsystem_id;
uint32_t expansion_rom_base;
uint8_t capabilities_ptr;
uint8_t reserved1[3];
uint32_t reserved2;
uint8_t interrupt_line;
uint8_t interrupt_pin;
uint8_t min_grant;
uint8_t max_latency;
} __attribute__((packed));
uint32_t pci_config_read(uint8_t bus, uint8_t device, uint8_t function, uint8_t offset);
void pci_config_write(uint8_t bus, uint8_t device, uint8_t function, uint8_t offset, uint32_t value);

View File

@ -1,38 +0,0 @@
#ifndef _FAT16_H
#define _FAT16_H
#include <types.h>
#define FAT16_MAX_FILENAME 256
#define FAT16_ATTR_DIRECTORY 0x10
typedef struct {
uint8_t drive;
uint32_t fat_start;
uint32_t root_dir_start;
uint32_t data_start;
uint16_t bytes_per_sector;
uint8_t sectors_per_cluster;
uint16_t root_entry_count;
uint32_t current_dir_cluster;
} fat16_t;
typedef struct {
char name[FAT16_MAX_FILENAME];
uint8_t attr;
uint32_t cluster;
uint32_t size;
} fat16_dir_entry_t;
int32_t fat16_init(uint8_t drive);
uint32_t cluster_to_lba(uint16_t cluster);
uint16_t fat16_get_fat_entry(uint16_t cluster);
uint16_t fat16_alloc_cluster(void);
int32_t fat16_list_dir(fat16_dir_entry_t* entries, size_t max_entries);
int32_t fat16_change_dir(const char* dirname);
int32_t fat16_read_file(const char* filename, void* buffer, size_t max_size);
int32_t fat16_write_file(const char* filename, const void* data, size_t size);
#endif

12
include/fs/sfs.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _SFS_H
#define _SFS_H
#include <types.h>
int32_t sfs_init(bool format);
bool sfs_get_formatted_name(const char* raw_name, char output[37]);
int32_t sfs_read_file(char* name, void* buffer, uint32_t num);
#endif

View File

@ -3,7 +3,7 @@
#include <types.h>
typedef int32_t FILE;

View File

@ -4,7 +4,7 @@
#define SSE_XMM_SIZE 128
void enable_sse(void);
/*void enable_sse(void);*/ /* We use _enable_sse_asm (in boot.s) instead */
int32_t test_sse(void);