#ifndef __SYSTEM_H #define __SYSTEM_H /* Primitives */ typedef enum { false, true } bool; /* MAIN.C */ extern unsigned char *memcpy(unsigned char *dest, const unsigned char *src, int count); extern unsigned char *memset(unsigned char *dest, unsigned char val, int count); extern unsigned short *memsetw(unsigned short *dest, unsigned short val, int count); extern int strlen(const char *str); extern unsigned char inportb (unsigned short _port); extern void outportb (unsigned short _port, unsigned char _data); /* ISRS.C */ void isrs_install(); /* This defines what the stack looks like after an ISR was running */ struct regs { unsigned int gs, fs, es, ds; /* pushed the segs last */ unsigned int edi, esi, ebp, esp, ebx, edx, ecx, eax; /* pushed by 'pusha' */ unsigned int int_no, err_code; /* our 'push byte #' and ecodes do this */ unsigned int eip, cs, eflags, useresp, ss; /* pushed by the processor automatically */ }; /* IRQ.C */ void irq_install_handler(int irq, void (*handler)(struct regs *r)); void irq_uninstall_handler(int irq); void irq_install(); /* TIMER.C */ void timer_handler(struct regs *r); void timer_install(); /* KB.C */ void kb_install(); #endif