sos

[unmaintained] experimenting with low level OS development
Log | Files | Refs | README | LICENSE

io.h (576B)


      1 #ifndef IO_H
      2 #define IO_H
      3 
      4 #include <stdint.h>
      5 
      6 #define VIDMEM 0xb8000
      7 #define VIDEO_SCREEN_WIDTH 80
      8 #define VIDEO_SCREEN_HEIGHT 25
      9 
     10 static inline uint8_t inb(uint16_t port) {
     11     uint8_t ret;
     12     asm volatile("inb %1, %0" : "=a"(ret) : "Nd"(port));
     13     return ret;
     14 }
     15 
     16 static inline void outb(uint16_t port, uint8_t value) {
     17     asm volatile("outb %0, %1" :: "a"(value), "Nd"(port));
     18 }
     19 
     20 static inline void io_wait() {
     21     asm volatile("outb %%al, $0x80" :: "a"(0));
     22 }
     23 
     24 void kprint(char *str);
     25 
     26 void kprintc(char c);
     27 
     28 void kprinti(int value);
     29 
     30 void kprintx(int value);
     31 
     32 #endif