const char *tutorial3;
void main(){
clrscr(); print(tutorial3);
for(;;);} const char *tutorial3 = "MuOS Tutorial 3";
void clrscr(){ unsigned char *vidmem = (unsigned char *)0xB8000;c
onst long size = 80*25; long loop; for (loop=0; loop
}out(0x3D4, 14);
out(0x3D5, 0);
out(0x3D4, 15);
out(0x3D5, 0);}
unsigned char in(unsigned short _port){ unsigned char result; __asm__ ("in %%dx, %%al" : "=a" (result) : "d" (_port));
return result;}
void out(unsigned short _port, unsigned char _data){ __asm__ ("out %%al, %%dx" : : "a" (_data), "d" (_port));} void print(const char *_message){ unsigned char *vidmem = (unsigned char *)0xB8000); unsigned short offset;
unsigned long i;out(0x3D4, 14);
offset = in(0x3D5) << offset =" in(0x3D5);" i =" 0;" vidmem =" _message[i++];">> 8));}
nasmw -f bin tutor3.asm -o bootsect.bin gcc -ffreestanding -c main.c -o main.o
gcc -c video.c -o video.o
gcc -c ports.c -o ports.o
'ld -e _main -Ttext 0x1000 -o kernel.o main.o video.o ports.o
ld -i -e _main -Ttext 0x1000 -o kernel.o main.o video.o ports.o
objcopy -R .note -R .comment -S -O binary kernel.o kernel.bin makeboot a.img bootsect.bin kernel.bin
}

