summaryrefslogtreecommitdiffstats
path: root/include/system.h
blob: 9440d6b224b9bd7fdd17bae7e6a65234719ccd38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define IN_PORT(p,b) asm("in %1,%0" : "=a" ((unsigned char)(b)) : "d" ((unsigned short)(p)) )
#define IN_PORT_P(p,b) asm("in %1,%0;in $0x80,%%al" : "=a" ((unsigned char)(b)) : "d" ((unsigned short)(p)) )
#define IN_PORT_PP(p,b) asm("in %1,%0;in $0x80,%%al;in $0x80,%%al;in $0x80,%%al;in $0x80,%%al" \
					: "=a" ((unsigned char)(b)) : "d" ((unsigned short)(p)) )
#define OUT_PORT(b,p) asm("out %0,%1" : : "a" ((unsigned char)(b)), "d" ((unsigned short)(p)) )
#define OUT_PORT_P(b,p) asm("out %0,%1;in $0x80,%%al" : : "a" ((unsigned char)(b)), "d" ((unsigned short)(p)) )
#define OUT_PORT_PP(b,p) asm("out %0,%1;in $0x80,%%al;in $0x80,%%al;in $0x80,%%al;in $0x80,%%al" \
					: : "a" ((unsigned char)(b)), "d" ((unsigned short)(p)) )

#define ANSI2ASCII(x) asm ("mov %0,%%dl;call ansi2ascii;mov %%dl,%0\n" : "+m" (x))
#define ASCII2ANSI(x) asm ("mov %0,%%dl;call ascii2ansi;mov %%dl,%0\n" : "+m" (x))


void print(unsigned char * text);
void print_attr(unsigned char * text, unsigned char attr);
void print_char(unsigned char text);
void print_char_attr(unsigned char text, unsigned char attr);

void print_hex_byte(unsigned char hex);
void print_hex_word(unsigned short hex);
void print_hex_long(unsigned long hex);