aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-01-31 11:16:38 +0100
committerAleksa Vučković <aleksav013@gmail.com>2022-01-31 14:03:24 +0100
commit03035c98b4ba3297b837e96080e78e0aac1e86db (patch)
tree55b5f69f83bc8b77ec229062f702c0a4f960e87f
parent11e780fd0f7bed3594de9a7170fadc88c4d48be8 (diff)
Promene
-rw-r--r--Makefile3
-rw-r--r--include/01.pocetak/boot.s30
-rw-r--r--include/01.pocetak/boot1.s (renamed from include/01.pocetak/deo1)0
-rw-r--r--include/01.pocetak/boot2.s (renamed from include/01.pocetak/deo2)0
-rw-r--r--include/01.pocetak/boot3.s (renamed from include/01.pocetak/deo8)0
-rw-r--r--include/01.pocetak/boot4.s (renamed from include/01.pocetak/deo9)0
-rw-r--r--include/01.pocetak/boot5.s (renamed from include/01.pocetak/deo10)1
-rw-r--r--include/01.pocetak/boot6.s (renamed from include/01.pocetak/deo11)0
-rw-r--r--include/01.pocetak/boot7.s (renamed from include/01.pocetak/deo12)0
-rw-r--r--include/01.pocetak/deo36
-rw-r--r--include/01.pocetak/deo44
-rw-r--r--include/01.pocetak/deo55
-rw-r--r--include/01.pocetak/deo64
-rw-r--r--include/01.pocetak/deo75
-rw-r--r--include/02.vga/deo14
-rw-r--r--include/02.vga/deo44
-rw-r--r--include/02.vga/vga.c26
-rw-r--r--include/02.vga/vga1.c4
-rw-r--r--include/02.vga/vga10.c (renamed from include/02.vga/deo10)0
-rw-r--r--include/02.vga/vga11.c (renamed from include/02.vga/deo11)2
-rw-r--r--include/02.vga/vga12.c (renamed from include/02.vga/deo12)0
-rw-r--r--include/02.vga/vga13.c (renamed from include/02.vga/deo13)0
-rw-r--r--include/02.vga/vga14.c (renamed from include/02.vga/deo14)5
-rw-r--r--include/02.vga/vga2.c (renamed from include/02.vga/deo2)0
-rw-r--r--include/02.vga/vga3.c (renamed from include/02.vga/deo3)2
-rw-r--r--include/02.vga/vga4.c5
-rw-r--r--include/02.vga/vga5.c (renamed from include/02.vga/deo5)2
-rw-r--r--include/02.vga/vga6.c (renamed from include/02.vga/deo6)0
-rw-r--r--include/02.vga/vga7.c (renamed from include/02.vga/deo7)2
-rw-r--r--include/02.vga/vga8.c (renamed from include/02.vga/deo8)2
-rw-r--r--include/02.vga/vga9.c (renamed from include/02.vga/deo9)2
-rw-r--r--include/03.gdt/deo69
-rw-r--r--include/03.gdt/deo85
-rw-r--r--include/03.gdt/gdt.c36
-rw-r--r--include/03.gdt/gdt.h26
-rw-r--r--include/03.gdt/gdt1.c2
-rw-r--r--include/03.gdt/gdt1.h2
-rw-r--r--include/03.gdt/gdt2.c (renamed from include/03.gdt/deo4)0
-rw-r--r--include/03.gdt/gdt2.h (renamed from include/03.gdt/deo1)0
-rw-r--r--include/03.gdt/gdt3.c (renamed from include/03.gdt/deo5)0
-rw-r--r--include/03.gdt/gdt3.h (renamed from include/03.gdt/deo2)0
-rw-r--r--include/03.gdt/gdt4.c10
-rw-r--r--include/03.gdt/gdt4.h (renamed from include/03.gdt/deo3)0
-rw-r--r--include/03.gdt/gdt5.c (renamed from include/03.gdt/deo7)2
-rw-r--r--include/03.gdt/gdt5.h3
-rw-r--r--include/03.gdt/gdt6.c5
-rw-r--r--include/03.gdt/gdt6.h1
-rw-r--r--include/03.gdt/gdt7.c (renamed from include/03.gdt/deo9)0
-rw-r--r--include/04.idt/deo13
-rw-r--r--include/04.idt/idt.h37
-rw-r--r--include/04.idt/idt1.h2
-rw-r--r--include/04.idt/idt2.h (renamed from include/08.heap/deo1)0
-rw-r--r--include/04.idt/idt3.h (renamed from include/04.idt/deo2)0
-rw-r--r--include/04.idt/idt4.h (renamed from include/04.idt/deo3)0
-rw-r--r--include/04.idt/idt5.h (renamed from include/04.idt/deo4)0
-rw-r--r--include/04.idt/idt6.h (renamed from include/04.idt/deo5)0
-rw-r--r--include/04.idt/idt7.h (renamed from include/04.idt/deo6)0
-rw-r--r--include/04.idt/idt8.h5
-rw-r--r--include/04.idt/idt9.h1
-rw-r--r--include/05.irq/idt.c (renamed from include/04.idt/idt.c)43
-rw-r--r--include/05.irq/idt1.c4
-rw-r--r--include/05.irq/idt2.c (renamed from include/04.idt/deo7)1
-rw-r--r--include/05.irq/idt3.c (renamed from include/04.idt/deo8)0
-rw-r--r--include/05.irq/idt4.c (renamed from include/04.idt/deo9)7
-rw-r--r--include/05.irq/idt5.c (renamed from include/04.idt/deo10)2
-rw-r--r--include/05.irq/idt6.c (renamed from include/04.idt/deo11)2
-rw-r--r--include/05.irq/idt7.c (renamed from include/04.idt/deo12)2
-rw-r--r--include/05.irq/idt8.c (renamed from include/04.idt/deo13)0
-rw-r--r--include/05.irq/idt9.c (renamed from include/04.idt/deo14)0
-rw-r--r--include/06.keyboard/deo13
-rw-r--r--include/06.keyboard/deo37
-rw-r--r--include/06.keyboard/deo46
-rw-r--r--include/06.keyboard/deo57
-rw-r--r--include/06.keyboard/keyboard.c27
-rw-r--r--include/06.keyboard/keyboard1.c7
-rw-r--r--include/06.keyboard/keyboard10.c (renamed from include/06.keyboard/deo12)0
-rw-r--r--include/06.keyboard/keyboard11.c (renamed from include/06.keyboard/deo13)0
-rw-r--r--include/06.keyboard/keyboard12.c (renamed from include/06.keyboard/deo14)0
-rw-r--r--include/06.keyboard/keyboard13.c (renamed from include/06.keyboard/deo15)0
-rw-r--r--include/06.keyboard/keyboard14.c (renamed from include/06.keyboard/deo16)0
-rw-r--r--include/06.keyboard/keyboard15.c (renamed from include/06.keyboard/deo17)0
-rw-r--r--include/06.keyboard/keyboard16.c (renamed from include/06.keyboard/deo18)0
-rw-r--r--include/06.keyboard/keyboard17.c (renamed from include/06.keyboard/deo19)0
-rw-r--r--include/06.keyboard/keyboard18.c (renamed from include/06.keyboard/deo20)0
-rw-r--r--include/06.keyboard/keyboard2.c (renamed from include/06.keyboard/deo2)2
-rw-r--r--include/06.keyboard/keyboard3.c3
-rw-r--r--include/06.keyboard/keyboard4.c (renamed from include/06.keyboard/deo6)0
-rw-r--r--include/06.keyboard/keyboard5.c (renamed from include/06.keyboard/deo7)0
-rw-r--r--include/06.keyboard/keyboard6.c (renamed from include/06.keyboard/deo8)0
-rw-r--r--include/06.keyboard/keyboard7.c (renamed from include/06.keyboard/deo9)0
-rw-r--r--include/06.keyboard/keyboard8.c (renamed from include/06.keyboard/deo10)0
-rw-r--r--include/06.keyboard/keyboard9.c (renamed from include/06.keyboard/deo11)0
-rw-r--r--include/07.pit/deo13
-rw-r--r--include/07.pit/deo21
-rw-r--r--include/07.pit/deo63
-rw-r--r--include/07.pit/deo74
-rw-r--r--include/07.pit/deo82
-rw-r--r--include/07.pit/timer.c17
-rw-r--r--include/07.pit/timer1.c4
-rw-r--r--include/07.pit/timer2.c (renamed from include/07.pit/deo3)0
-rw-r--r--include/07.pit/timer3.c (renamed from include/07.pit/deo4)3
-rw-r--r--include/07.pit/timer4.c (renamed from include/07.pit/deo5)0
-rw-r--r--include/07.pit/timer5.c4
-rw-r--r--include/07.pit/timer6.c (renamed from include/07.pit/deo9)1
-rw-r--r--include/07.pit/timer7.c (renamed from include/07.pit/deo10)1
-rw-r--r--include/08.heap/deo125
-rw-r--r--include/08.heap/deo144
-rw-r--r--include/08.heap/deo194
-rw-r--r--include/08.heap/deo27
-rw-r--r--include/08.heap/deo33
-rw-r--r--include/08.heap/deo43
-rw-r--r--include/08.heap/heap.c77
-rw-r--r--include/08.heap/heap1.c2
-rw-r--r--include/08.heap/heap10.c7
-rw-r--r--include/08.heap/heap11.c (renamed from include/08.heap/deo13)3
-rw-r--r--include/08.heap/heap12.c6
-rw-r--r--include/08.heap/heap13.c (renamed from include/08.heap/deo15)3
-rw-r--r--include/08.heap/heap14.c (renamed from include/08.heap/deo16)7
-rw-r--r--include/08.heap/heap15.c (renamed from include/08.heap/deo17)6
-rw-r--r--include/08.heap/heap16.c (renamed from include/08.heap/deo18)3
-rw-r--r--include/08.heap/heap17.c2
-rw-r--r--include/08.heap/heap18.c (renamed from include/08.heap/deo20)0
-rw-r--r--include/08.heap/heap19.c (renamed from include/08.heap/deo21)0
-rw-r--r--include/08.heap/heap2.c4
-rw-r--r--include/08.heap/heap20.c (renamed from include/08.heap/deo22)0
-rw-r--r--include/08.heap/heap21.c (renamed from include/08.heap/deo23)3
-rw-r--r--include/08.heap/heap22.c (renamed from include/08.heap/deo24)3
-rw-r--r--include/08.heap/heap23.c (renamed from include/08.heap/deo25)13
-rw-r--r--include/08.heap/heap24.c (renamed from include/08.heap/deo26)0
-rw-r--r--include/08.heap/heap25.c (renamed from include/08.heap/deo27)0
-rw-r--r--include/08.heap/heap26.c (renamed from include/08.heap/deo28)0
-rw-r--r--include/08.heap/heap27.c (renamed from include/08.heap/deo29)0
-rw-r--r--include/08.heap/heap28.c (renamed from include/08.heap/deo30)0
-rw-r--r--include/08.heap/heap29.c (renamed from include/08.heap/deo31)0
-rw-r--r--include/08.heap/heap3.c (renamed from include/08.heap/deo5)4
-rw-r--r--include/08.heap/heap4.c (renamed from include/08.heap/deo6)0
-rw-r--r--include/08.heap/heap5.c (renamed from include/08.heap/deo7)0
-rw-r--r--include/08.heap/heap6.c (renamed from include/08.heap/deo8)0
-rw-r--r--include/08.heap/heap7.c (renamed from include/08.heap/deo9)0
-rw-r--r--include/08.heap/heap8.c (renamed from include/08.heap/deo10)0
-rw-r--r--include/08.heap/heap9.c (renamed from include/08.heap/deo11)0
-rw-r--r--include/09.paging/deo11
-rw-r--r--include/09.paging/paging.c16
-rw-r--r--include/09.paging/paging1.c2
-rw-r--r--include/09.paging/paging2.c (renamed from include/09.paging/deo2)2
-rw-r--r--include/09.paging/paging3.c (renamed from include/09.paging/deo3)0
-rw-r--r--include/09.paging/paging4.c (renamed from include/09.paging/deo4)2
-rw-r--r--include/09.paging/paging5.c (renamed from include/09.paging/deo5)0
-rw-r--r--include/09.paging/paging6.c (renamed from include/09.paging/deo6)6
-rw-r--r--include/09.paging/paging7.c (renamed from include/09.paging/deo7)3
-rw-r--r--include/09.paging/paging8.c (renamed from include/09.paging/deo8)0
-rw-r--r--include/09.paging/paging9.c (renamed from include/09.paging/deo9)2
-rw-r--r--include/10.libc/asm.h13
-rw-r--r--include/10.libc/heap.h11
-rw-r--r--include/10.libc/irq.h39
-rw-r--r--include/10.libc/source/gdt.h26
-rw-r--r--include/10.libc/source/heap.h31
-rw-r--r--include/10.libc/source/idt.h37
-rw-r--r--include/10.libc/source/irq.h39
-rw-r--r--include/10.libc/source/irq_handler.h43
-rw-r--r--include/10.libc/source/kernel.h6
-rw-r--r--include/10.libc/source/keyboard.h21
-rw-r--r--include/10.libc/source/keymap.h14
-rw-r--r--include/10.libc/source/paging.h10
-rw-r--r--include/10.libc/source/stack_protector.h6
-rw-r--r--include/10.libc/source/stdio.h6
-rw-r--r--include/10.libc/source/string.h17
-rw-r--r--include/10.libc/source/timer.h9
-rw-r--r--include/10.libc/source/tty.h19
-rw-r--r--include/10.libc/source/vga.h (renamed from include/10.libc/vga.h)15
-rw-r--r--include/10.libc/stdio.h2
-rw-r--r--include/10.libc/string.h11
-rw-r--r--include/10.libc/types.h4
-rwxr-xr-xinclude/setup.sh41
-rw-r--r--kernel.pdfbin451732 -> 437581 bytes
-rw-r--r--kernel.tex344
176 files changed, 802 insertions, 598 deletions
diff --git a/Makefile b/Makefile
index 881f5be..f1fa7f3 100644
--- a/Makefile
+++ b/Makefile
@@ -13,4 +13,5 @@ $(PDF_FILE): $(TEX_FILE) $(BIB_FILE)
pdflatex $(TEX_FILE)
clean:
- rm $(PDF_FILE)
+ git clean -dfx
+ rm -f $(PDF_FILE)
diff --git a/include/01.pocetak/boot.s b/include/01.pocetak/boot.s
index 907cd3c..f65cc72 100644
--- a/include/01.pocetak/boot.s
+++ b/include/01.pocetak/boot.s
@@ -10,35 +10,6 @@
.long FLAGS
.long CHECKSUM
-.global _start
-.global load_gdt
-.global load_idt
-.global enable_interrupts
-.global ioport_in
-.global ioport_out
-
-load_gdt:
- movl 4(%esp), %edx
- lgdt (%edx)
- ret
-
-load_idt:
- movl 4(%esp), %edx
- lidt (%edx)
- sti
- ret
-
-ioport_in:
- movl 4(%esp),%edx
- in %dx,%al
- ret
-
-ioport_out:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outb %al,%dx
- ret
-
.set CODE_SEGMENT, 0x08
.set DATA_SEGMENT, 0x10
@@ -49,6 +20,7 @@ stack_bottom:
stack_top:
.section .text
+.global _start
.type _start, @function
_start:
call init_gdt_table
diff --git a/include/01.pocetak/deo1 b/include/01.pocetak/boot1.s
index 0e1bfbe..0e1bfbe 100644
--- a/include/01.pocetak/deo1
+++ b/include/01.pocetak/boot1.s
diff --git a/include/01.pocetak/deo2 b/include/01.pocetak/boot2.s
index cd7b353..cd7b353 100644
--- a/include/01.pocetak/deo2
+++ b/include/01.pocetak/boot2.s
diff --git a/include/01.pocetak/deo8 b/include/01.pocetak/boot3.s
index cd3f772..cd3f772 100644
--- a/include/01.pocetak/deo8
+++ b/include/01.pocetak/boot3.s
diff --git a/include/01.pocetak/deo9 b/include/01.pocetak/boot4.s
index a9280a6..a9280a6 100644
--- a/include/01.pocetak/deo9
+++ b/include/01.pocetak/boot4.s
diff --git a/include/01.pocetak/deo10 b/include/01.pocetak/boot5.s
index 3cd7ea1..2fe5ffc 100644
--- a/include/01.pocetak/deo10
+++ b/include/01.pocetak/boot5.s
@@ -1,4 +1,5 @@
.section .text
+.global _start
.type _start, @function
_start:
call init_gdt_table
diff --git a/include/01.pocetak/deo11 b/include/01.pocetak/boot6.s
index bd0f1da..bd0f1da 100644
--- a/include/01.pocetak/deo11
+++ b/include/01.pocetak/boot6.s
diff --git a/include/01.pocetak/deo12 b/include/01.pocetak/boot7.s
index d1d8388..d1d8388 100644
--- a/include/01.pocetak/deo12
+++ b/include/01.pocetak/boot7.s
diff --git a/include/01.pocetak/deo3 b/include/01.pocetak/deo3
deleted file mode 100644
index 44fcb34..0000000
--- a/include/01.pocetak/deo3
+++ /dev/null
@@ -1,6 +0,0 @@
-.global _start
-.global load_gdt
-.global load_idt
-.global enable_interrupts
-.global ioport_in
-.global ioport_out
diff --git a/include/01.pocetak/deo4 b/include/01.pocetak/deo4
deleted file mode 100644
index 975ee19..0000000
--- a/include/01.pocetak/deo4
+++ /dev/null
@@ -1,4 +0,0 @@
-load_gdt:
- movl 4(%esp), %edx
- lgdt (%edx)
- ret
diff --git a/include/01.pocetak/deo5 b/include/01.pocetak/deo5
deleted file mode 100644
index 6f095e9..0000000
--- a/include/01.pocetak/deo5
+++ /dev/null
@@ -1,5 +0,0 @@
-load_idt:
- movl 4(%esp), %edx
- lidt (%edx)
- sti
- ret
diff --git a/include/01.pocetak/deo6 b/include/01.pocetak/deo6
deleted file mode 100644
index 3f23d36..0000000
--- a/include/01.pocetak/deo6
+++ /dev/null
@@ -1,4 +0,0 @@
-ioport_in:
- movl 4(%esp),%edx
- in %dx,%al
- ret
diff --git a/include/01.pocetak/deo7 b/include/01.pocetak/deo7
deleted file mode 100644
index f441d17..0000000
--- a/include/01.pocetak/deo7
+++ /dev/null
@@ -1,5 +0,0 @@
-ioport_out:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outb %al,%dx
- ret
diff --git a/include/02.vga/deo1 b/include/02.vga/deo1
deleted file mode 100644
index dfee578..0000000
--- a/include/02.vga/deo1
+++ /dev/null
@@ -1,4 +0,0 @@
-#include<types.h>
-#include<string.h>
-#include<asm.h>
-#include<vga.h>
diff --git a/include/02.vga/deo4 b/include/02.vga/deo4
deleted file mode 100644
index 173e598..0000000
--- a/include/02.vga/deo4
+++ /dev/null
@@ -1,4 +0,0 @@
-static inline uint16_t vga_entry(unsigned char uc, uint8_t color)
-{
- return (uint16_t) uc | (uint16_t) color << 8;
-}
diff --git a/include/02.vga/vga.c b/include/02.vga/vga.c
index 67c8b02..ac1e409 100644
--- a/include/02.vga/vga.c
+++ b/include/02.vga/vga.c
@@ -1,7 +1,7 @@
+#include<source/vga.h>
#include<types.h>
-#include<string.h>
+#include<source/string.h>
#include<asm.h>
-#include<vga.h>
size_t terminal_row;
size_t terminal_column;
@@ -10,15 +10,16 @@ uint16_t* terminal_buffer;
void set_color(enum vga_color fg, enum vga_color bg)
{
- terminal_color = fg | bg << 4;
+ terminal_color = (uint8_t)(fg|bg<<4);
}
-static inline uint16_t vga_entry(unsigned char uc, uint8_t color)
+static inline uint16_t vga_entry(char uc, uint8_t color);
+static inline uint16_t vga_entry(char uc, uint8_t color)
{
- return (uint16_t) uc | (uint16_t) color << 8;
+ return (uint16_t)(uc|color<<8);
}
-void terminal_initialize()
+void terminal_initialize(void)
{
terminal_row=0;
terminal_column=0;
@@ -40,19 +41,19 @@ void terminal_putentryat(char c, uint8_t color, size_t x, size_t y)
terminal_buffer[index]=vga_entry(c, color);
}
-void movescreen()
+void movescreen(void)
{
terminal_row--;
for(size_t i=0;i<VGA_HEIGHT;i++) for(size_t j=0;j<VGA_WIDTH;j++)
terminal_buffer[i*VGA_WIDTH+j]=terminal_buffer[(i+1)*VGA_WIDTH+j];
}
-void next_field()
+void next_field(void)
{
if(++terminal_column==VGA_WIDTH) terminal_column=0,terminal_row++;
}
-void previous_field()
+void previous_field(void)
{
if(terminal_column) terminal_column--;
else terminal_row--,terminal_column=VGA_WIDTH-1;
@@ -69,7 +70,7 @@ void terminal_putchar(char c)
if (terminal_row==VGA_HEIGHT) movescreen();
}
-void terminal_writestring(char* data)
+void terminal_writestring(const char* data)
{
for(int i=0;data[i]!='\0';i++) terminal_putchar(data[i]);
}
@@ -92,9 +93,10 @@ void terminal_writefloat(double num)
terminal_writestring(str);
}
-void clear()
+void clear(void)
{
- for(size_t i=0;i<VGA_HEIGHT;i++) for(size_t j=0;j<VGA_WIDTH;j++) terminal_putchar(' ');
+ for(size_t i=0;i<VGA_HEIGHT;i++) for(size_t j=0;j<VGA_WIDTH;j++)
+ terminal_putchar(' ');
terminal_column=0;
terminal_row=0;
}
diff --git a/include/02.vga/vga1.c b/include/02.vga/vga1.c
new file mode 100644
index 0000000..2b2cbe1
--- /dev/null
+++ b/include/02.vga/vga1.c
@@ -0,0 +1,4 @@
+#include<source/vga.h>
+#include<types.h>
+#include<source/string.h>
+#include<asm.h>
diff --git a/include/02.vga/deo10 b/include/02.vga/vga10.c
index 9511b21..9511b21 100644
--- a/include/02.vga/deo10
+++ b/include/02.vga/vga10.c
diff --git a/include/02.vga/deo11 b/include/02.vga/vga11.c
index 8a757f4..d2a78f5 100644
--- a/include/02.vga/deo11
+++ b/include/02.vga/vga11.c
@@ -1,4 +1,4 @@
-void terminal_writestring(char* data)
+void terminal_writestring(const char* data)
{
for(int i=0;data[i]!='\0';i++) terminal_putchar(data[i]);
}
diff --git a/include/02.vga/deo12 b/include/02.vga/vga12.c
index be40f5a..be40f5a 100644
--- a/include/02.vga/deo12
+++ b/include/02.vga/vga12.c
diff --git a/include/02.vga/deo13 b/include/02.vga/vga13.c
index dfa3994..dfa3994 100644
--- a/include/02.vga/deo13
+++ b/include/02.vga/vga13.c
diff --git a/include/02.vga/deo14 b/include/02.vga/vga14.c
index efe6d3a..5ad2ed9 100644
--- a/include/02.vga/deo14
+++ b/include/02.vga/vga14.c
@@ -1,6 +1,7 @@
-void clear()
+void clear(void)
{
- for(size_t i=0;i<VGA_HEIGHT;i++) for(size_t j=0;j<VGA_WIDTH;j++) terminal_putchar(' ');
+ for(size_t i=0;i<VGA_HEIGHT;i++) for(size_t j=0;j<VGA_WIDTH;j++)
+ terminal_putchar(' ');
terminal_column=0;
terminal_row=0;
}
diff --git a/include/02.vga/deo2 b/include/02.vga/vga2.c
index be0ba00..be0ba00 100644
--- a/include/02.vga/deo2
+++ b/include/02.vga/vga2.c
diff --git a/include/02.vga/deo3 b/include/02.vga/vga3.c
index 5a12424..f956514 100644
--- a/include/02.vga/deo3
+++ b/include/02.vga/vga3.c
@@ -1,4 +1,4 @@
void set_color(enum vga_color fg, enum vga_color bg)
{
- terminal_color = fg | bg << 4;
+ terminal_color = (uint8_t)(fg|bg<<4);
}
diff --git a/include/02.vga/vga4.c b/include/02.vga/vga4.c
new file mode 100644
index 0000000..0c3dd87
--- /dev/null
+++ b/include/02.vga/vga4.c
@@ -0,0 +1,5 @@
+static inline uint16_t vga_entry(char uc, uint8_t color);
+static inline uint16_t vga_entry(char uc, uint8_t color)
+{
+ return (uint16_t)(uc|color<<8);
+}
diff --git a/include/02.vga/deo5 b/include/02.vga/vga5.c
index f4875e6..79c5657 100644
--- a/include/02.vga/deo5
+++ b/include/02.vga/vga5.c
@@ -1,4 +1,4 @@
-void terminal_initialize()
+void terminal_initialize(void)
{
terminal_row=0;
terminal_column=0;
diff --git a/include/02.vga/deo6 b/include/02.vga/vga6.c
index 7079bf9..7079bf9 100644
--- a/include/02.vga/deo6
+++ b/include/02.vga/vga6.c
diff --git a/include/02.vga/deo7 b/include/02.vga/vga7.c
index 2fbf259..dfa48c4 100644
--- a/include/02.vga/deo7
+++ b/include/02.vga/vga7.c
@@ -1,4 +1,4 @@
-void movescreen()
+void movescreen(void)
{
terminal_row--;
for(size_t i=0;i<VGA_HEIGHT;i++) for(size_t j=0;j<VGA_WIDTH;j++)
diff --git a/include/02.vga/deo8 b/include/02.vga/vga8.c
index cfb7051..19ec6da 100644
--- a/include/02.vga/deo8
+++ b/include/02.vga/vga8.c
@@ -1,4 +1,4 @@
-void next_field()
+void next_field(void)
{
if(++terminal_column==VGA_WIDTH) terminal_column=0,terminal_row++;
}
diff --git a/include/02.vga/deo9 b/include/02.vga/vga9.c
index 6e1236d..217deff 100644
--- a/include/02.vga/deo9
+++ b/include/02.vga/vga9.c
@@ -1,4 +1,4 @@
-void previous_field()
+void previous_field(void)
{
if(terminal_column) terminal_column--;
else terminal_row--,terminal_column=VGA_WIDTH-1;
diff --git a/include/03.gdt/deo6 b/include/03.gdt/deo6
deleted file mode 100644
index 8d6a1f0..0000000
--- a/include/03.gdt/deo6
+++ /dev/null
@@ -1,9 +0,0 @@
-void init_gdt_entry(size_t num, uint32_t limit, uint32_t base, uint8_t access, uint8_t limit_flags)
-{
- gdt[num].limit=limit;
- gdt[num].base1=(base & 0xffff);
- gdt[num].base2=(base & 0xff0000) >> 16;
- gdt[num].access=access;
- gdt[num].limit_flags=limit_flags;
- gdt[num].base3=(base & 0xff000000) >> 24;
-}
diff --git a/include/03.gdt/deo8 b/include/03.gdt/deo8
deleted file mode 100644
index a122d84..0000000
--- a/include/03.gdt/deo8
+++ /dev/null
@@ -1,5 +0,0 @@
- init_gdt_entry(0,0,0,0,0); // null segment
- init_gdt_entry(1,0xffffffff,0,0b10011010,0b11001111); // code segment
- init_gdt_entry(2,0xffffffff,0,0b10010010,0b11001111); // data segment
- init_gdt_entry(3,0xffffffff,0,0b11111010,0b11001111); // user mode code segment
- init_gdt_entry(4,0xffffffff,0,0b11110010,0b11001111); // user mode data segment
diff --git a/include/03.gdt/gdt.c b/include/03.gdt/gdt.c
index e3d2b4c..76ae9dd 100644
--- a/include/03.gdt/gdt.c
+++ b/include/03.gdt/gdt.c
@@ -1,46 +1,32 @@
+#include<source/gdt.h>
#include<types.h>
-struct gdt_entry
-{
- uint16_t limit;
- uint16_t base1;
- uint8_t base2;
- uint8_t access;
- uint8_t limit_flags;
- uint8_t base3;
-} __attribute__((packed));
-
-struct gdt_pointer
-{
- uint16_t size;
- uint32_t offset;
-} __attribute__((packed));
-
extern void load_gdt(struct gdt_pointer *gdtp);
struct gdt_entry gdt[5];
struct gdt_pointer gdtp;
-void init_gdt_entry(size_t num, uint32_t limit, uint32_t base, uint8_t access, uint8_t limit_flags)
+void init_gdt_entry(size_t num, uint16_t limit, uint32_t base, uint8_t access,
+ uint8_t limit_flags)
{
gdt[num].limit=limit;
gdt[num].base1=(base & 0xffff);
- gdt[num].base2=(base & 0xff0000) >> 16;
+ gdt[num].base2=(uint8_t)((base & 0xff0000) >> 16);
gdt[num].access=access;
gdt[num].limit_flags=limit_flags;
- gdt[num].base3=(base & 0xff000000) >> 24;
+ gdt[num].base3=(uint8_t)((base & 0xff000000) >> 24);
}
-void init_gdt_table()
+void init_gdt_table(void)
{
gdtp.size=sizeof(gdt)-1;
gdtp.offset=(uint32_t)&gdt;
- init_gdt_entry(0,0,0,0,0); // null segment
- init_gdt_entry(1,0xffffffff,0,0b10011010,0b11001111); // code segment
- init_gdt_entry(2,0xffffffff,0,0b10010010,0b11001111); // data segment
- init_gdt_entry(3,0xffffffff,0,0b11111010,0b11001111); // user mode code segment
- init_gdt_entry(4,0xffffffff,0,0b11110010,0b11001111); // user mode data segment
+ init_gdt_entry(0,0,0,0,0); // null segment
+ init_gdt_entry(1,0xffff,0,0x9a,0xcf); // code segment
+ init_gdt_entry(2,0xffff,0,0x92,0xcf); // data segment
+ init_gdt_entry(3,0xffff,0,0xfa,0xcf); // user mode code segment
+ init_gdt_entry(4,0xffff,0,0xf2,0xcf); // user mode data segment
load_gdt(&gdtp);
}
diff --git a/include/03.gdt/gdt.h b/include/03.gdt/gdt.h
new file mode 100644
index 0000000..f31a982
--- /dev/null
+++ b/include/03.gdt/gdt.h
@@ -0,0 +1,26 @@
+#ifndef SOURCE_GDT_H
+#define SOURCE_GDT_H
+
+#include<types.h>
+
+struct gdt_entry
+{
+ uint16_t limit;
+ uint16_t base1;
+ uint8_t base2;
+ uint8_t access;
+ uint8_t limit_flags;
+ uint8_t base3;
+} __attribute__((packed));
+
+struct gdt_pointer
+{
+ uint16_t size;
+ uint32_t offset;
+} __attribute__((packed));
+
+void init_gdt_entry(size_t num, uint16_t limit, uint32_t base, uint8_t access,
+ uint8_t limit_flags);
+void init_gdt_table(void);
+
+#endif
diff --git a/include/03.gdt/gdt1.c b/include/03.gdt/gdt1.c
new file mode 100644
index 0000000..dfd3835
--- /dev/null
+++ b/include/03.gdt/gdt1.c
@@ -0,0 +1,2 @@
+#include<source/gdt.h>
+#include<types.h>
diff --git a/include/03.gdt/gdt1.h b/include/03.gdt/gdt1.h
new file mode 100644
index 0000000..07fcf62
--- /dev/null
+++ b/include/03.gdt/gdt1.h
@@ -0,0 +1,2 @@
+#ifndef SOURCE_GDT_H
+#define SOURCE_GDT_H
diff --git a/include/03.gdt/deo4 b/include/03.gdt/gdt2.c
index 1abf809..1abf809 100644
--- a/include/03.gdt/deo4
+++ b/include/03.gdt/gdt2.c
diff --git a/include/03.gdt/deo1 b/include/03.gdt/gdt2.h
index c45e28b..c45e28b 100644
--- a/include/03.gdt/deo1
+++ b/include/03.gdt/gdt2.h
diff --git a/include/03.gdt/deo5 b/include/03.gdt/gdt3.c
index ba7c6e2..ba7c6e2 100644
--- a/include/03.gdt/deo5
+++ b/include/03.gdt/gdt3.c
diff --git a/include/03.gdt/deo2 b/include/03.gdt/gdt3.h
index cbc5e1d..cbc5e1d 100644
--- a/include/03.gdt/deo2
+++ b/include/03.gdt/gdt3.h
diff --git a/include/03.gdt/gdt4.c b/include/03.gdt/gdt4.c
new file mode 100644
index 0000000..ebff5cb
--- /dev/null
+++ b/include/03.gdt/gdt4.c
@@ -0,0 +1,10 @@
+void init_gdt_entry(size_t num, uint16_t limit, uint32_t base, uint8_t access,
+ uint8_t limit_flags)
+{
+ gdt[num].limit=limit;
+ gdt[num].base1=(base & 0xffff);
+ gdt[num].base2=(uint8_t)((base & 0xff0000) >> 16);
+ gdt[num].access=access;
+ gdt[num].limit_flags=limit_flags;
+ gdt[num].base3=(uint8_t)((base & 0xff000000) >> 24);
+}
diff --git a/include/03.gdt/deo3 b/include/03.gdt/gdt4.h
index e708661..e708661 100644
--- a/include/03.gdt/deo3
+++ b/include/03.gdt/gdt4.h
diff --git a/include/03.gdt/deo7 b/include/03.gdt/gdt5.c
index d69d009..c41ef42 100644
--- a/include/03.gdt/deo7
+++ b/include/03.gdt/gdt5.c
@@ -1,4 +1,4 @@
-void init_gdt_table()
+void init_gdt_table(void)
{
gdtp.size=sizeof(gdt)-1;
gdtp.offset=(uint32_t)&gdt;
diff --git a/include/03.gdt/gdt5.h b/include/03.gdt/gdt5.h
new file mode 100644
index 0000000..430309c
--- /dev/null
+++ b/include/03.gdt/gdt5.h
@@ -0,0 +1,3 @@
+void init_gdt_entry(size_t num, uint16_t limit, uint32_t base, uint8_t access,
+ uint8_t limit_flags);
+void init_gdt_table(void);
diff --git a/include/03.gdt/gdt6.c b/include/03.gdt/gdt6.c
new file mode 100644
index 0000000..974a942
--- /dev/null
+++ b/include/03.gdt/gdt6.c
@@ -0,0 +1,5 @@
+ init_gdt_entry(0,0,0,0,0); // null segment
+ init_gdt_entry(1,0xffff,0,0x9a,0xcf); // code segment
+ init_gdt_entry(2,0xffff,0,0x92,0xcf); // data segment
+ init_gdt_entry(3,0xffff,0,0xfa,0xcf); // user mode code segment
+ init_gdt_entry(4,0xffff,0,0xf2,0xcf); // user mode data segment
diff --git a/include/03.gdt/gdt6.h b/include/03.gdt/gdt6.h
new file mode 100644
index 0000000..69331c3
--- /dev/null
+++ b/include/03.gdt/gdt6.h
@@ -0,0 +1 @@
+#endif
diff --git a/include/03.gdt/deo9 b/include/03.gdt/gdt7.c
index 89736a5..89736a5 100644
--- a/include/03.gdt/deo9
+++ b/include/03.gdt/gdt7.c
diff --git a/include/04.idt/deo1 b/include/04.idt/deo1
deleted file mode 100644
index 7c174c9..0000000
--- a/include/04.idt/deo1
+++ /dev/null
@@ -1,3 +0,0 @@
-#include<types.h>
-#include<irq.h>
-#include<asm.h>
diff --git a/include/04.idt/idt.h b/include/04.idt/idt.h
new file mode 100644
index 0000000..cbae940
--- /dev/null
+++ b/include/04.idt/idt.h
@@ -0,0 +1,37 @@
+#ifndef SOURCE_IDT_H
+#define SOURCE_IDT_H
+
+#include<types.h>
+
+#define INTERRUPT_GATE_32 0x8E
+
+#define KERNEL_CODE 0x08
+#define KERNEL_DATA 0x10
+
+#define PIC1_COMMAND_PORT 0x20
+#define PIC1_DATA_PORT 0x21
+#define PIC2_COMMAND_PORT 0xA0
+#define PIC2_DATA_PORT 0xA1
+
+struct idt_entry
+{
+ uint16_t offset1;
+ uint16_t selector;
+ uint8_t zero;
+ uint8_t type_attr;
+ uint16_t offset2;
+} __attribute__((packed));
+
+struct idt_pointer
+{
+ uint16_t size;
+ uint32_t offset;
+} __attribute__((packed));
+
+void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t
+ type_attr);
+void add_idt_entry(size_t num,uint32_t offset);
+void init_pic(void);
+void init_idt_table(void);
+
+#endif
diff --git a/include/04.idt/idt1.h b/include/04.idt/idt1.h
new file mode 100644
index 0000000..46876e9
--- /dev/null
+++ b/include/04.idt/idt1.h
@@ -0,0 +1,2 @@
+#ifndef SOURCE_IDT_H
+#define SOURCE_IDT_H
diff --git a/include/08.heap/deo1 b/include/04.idt/idt2.h
index c45e28b..c45e28b 100644
--- a/include/08.heap/deo1
+++ b/include/04.idt/idt2.h
diff --git a/include/04.idt/deo2 b/include/04.idt/idt3.h
index afb8506..afb8506 100644
--- a/include/04.idt/deo2
+++ b/include/04.idt/idt3.h
diff --git a/include/04.idt/deo3 b/include/04.idt/idt4.h
index c564d8a..c564d8a 100644
--- a/include/04.idt/deo3
+++ b/include/04.idt/idt4.h
diff --git a/include/04.idt/deo4 b/include/04.idt/idt5.h
index ca70fa7..ca70fa7 100644
--- a/include/04.idt/deo4
+++ b/include/04.idt/idt5.h
diff --git a/include/04.idt/deo5 b/include/04.idt/idt6.h
index dcab25c..dcab25c 100644
--- a/include/04.idt/deo5
+++ b/include/04.idt/idt6.h
diff --git a/include/04.idt/deo6 b/include/04.idt/idt7.h
index fe1bff5..fe1bff5 100644
--- a/include/04.idt/deo6
+++ b/include/04.idt/idt7.h
diff --git a/include/04.idt/idt8.h b/include/04.idt/idt8.h
new file mode 100644
index 0000000..046ac06
--- /dev/null
+++ b/include/04.idt/idt8.h
@@ -0,0 +1,5 @@
+void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t
+ type_attr);
+void add_idt_entry(size_t num,uint32_t offset);
+void init_pic(void);
+void init_idt_table(void);
diff --git a/include/04.idt/idt9.h b/include/04.idt/idt9.h
new file mode 100644
index 0000000..69331c3
--- /dev/null
+++ b/include/04.idt/idt9.h
@@ -0,0 +1 @@
+#endif
diff --git a/include/04.idt/idt.c b/include/05.irq/idt.c
index 843c9da..f73d574 100644
--- a/include/04.idt/idt.c
+++ b/include/05.irq/idt.c
@@ -1,54 +1,29 @@
+#include<source/idt.h>
#include<types.h>
-#include<irq.h>
+#include<source/irq.h>
#include<asm.h>
-#define INTERRUPT_GATE_32 0x8E
-
-#define KERNEL_CODE 0x08
-#define KERNEL_DATA 0x10
-
-#define PIC1_COMMAND_PORT 0x20
-#define PIC1_DATA_PORT 0x21
-#define PIC2_COMMAND_PORT 0xA0
-#define PIC2_DATA_PORT 0xA1
-
-struct idt_entry
-{
- uint16_t offset1;
- uint16_t selector;
- uint8_t zero;
- uint8_t type_attr;
- uint16_t offset2;
-} __attribute__((packed));
-
-struct idt_pointer
-{
- uint16_t size;
- uint32_t offset;
-} __attribute__((packed));
-
-
extern void load_idt(struct idt_pointer *idtp);
-extern void keyboard_irq();
struct idt_entry idt[256];
struct idt_pointer idtp;
-void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t type_attr)
+void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t
+ type_attr)
{
- idt[num].offset1=(offset & 0xffff);
+ idt[num].offset1=(uint16_t)(offset & 0xffff);
idt[num].selector=selector;
idt[num].zero=0;
idt[num].type_attr=type_attr;
- idt[num].offset2=(offset & 0xffff0000)>>16;
+ idt[num].offset2=(uint16_t)((offset & 0xffff0000)>>16);
}
-void add_idt_entry(size_t num,uint32_t offset)
+void add_idt_entry(size_t num, uint32_t offset)
{
init_idt_entry(num,offset,KERNEL_CODE,INTERRUPT_GATE_32);
}
-void init_pic()
+void init_pic(void)
{
ioport_out(PIC1_COMMAND_PORT, 0x11);
ioport_out(PIC2_COMMAND_PORT, 0x11);
@@ -63,7 +38,7 @@ void init_pic()
ioport_out(PIC1_DATA_PORT, 0xFC);
}
-void init_idt_table()
+void init_idt_table(void)
{
init_pic();
add_idt_entry(0,(uint32_t)irq0);
diff --git a/include/05.irq/idt1.c b/include/05.irq/idt1.c
new file mode 100644
index 0000000..991abe3
--- /dev/null
+++ b/include/05.irq/idt1.c
@@ -0,0 +1,4 @@
+#include<source/idt.h>
+#include<types.h>
+#include<source/irq.h>
+#include<asm.h>
diff --git a/include/04.idt/deo7 b/include/05.irq/idt2.c
index ffa0e82..f284e8b 100644
--- a/include/04.idt/deo7
+++ b/include/05.irq/idt2.c
@@ -1,2 +1 @@
extern void load_idt(struct idt_pointer *idtp);
-extern void keyboard_irq();
diff --git a/include/04.idt/deo8 b/include/05.irq/idt3.c
index 28b2298..28b2298 100644
--- a/include/04.idt/deo8
+++ b/include/05.irq/idt3.c
diff --git a/include/04.idt/deo9 b/include/05.irq/idt4.c
index d11c19e..e0d97ff 100644
--- a/include/04.idt/deo9
+++ b/include/05.irq/idt4.c
@@ -1,8 +1,9 @@
-void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t type_attr)
+void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t
+ type_attr)
{
- idt[num].offset1=(offset & 0xffff);
+ idt[num].offset1=(uint16_t)(offset & 0xffff);
idt[num].selector=selector;
idt[num].zero=0;
idt[num].type_attr=type_attr;
- idt[num].offset2=(offset & 0xffff0000)>>16;
+ idt[num].offset2=(uint16_t)((offset & 0xffff0000)>>16);
}
diff --git a/include/04.idt/deo10 b/include/05.irq/idt5.c
index 409dd15..0e0e2ea 100644
--- a/include/04.idt/deo10
+++ b/include/05.irq/idt5.c
@@ -1,4 +1,4 @@
-void add_idt_entry(size_t num,uint32_t offset)
+void add_idt_entry(size_t num, uint32_t offset)
{
init_idt_entry(num,offset,KERNEL_CODE,INTERRUPT_GATE_32);
}
diff --git a/include/04.idt/deo11 b/include/05.irq/idt6.c
index 055e22a..eae37fa 100644
--- a/include/04.idt/deo11
+++ b/include/05.irq/idt6.c
@@ -1,4 +1,4 @@
-void init_pic()
+void init_pic(void)
{
ioport_out(PIC1_COMMAND_PORT, 0x11);
ioport_out(PIC2_COMMAND_PORT, 0x11);
diff --git a/include/04.idt/deo12 b/include/05.irq/idt7.c
index ea57b35..14d0f1a 100644
--- a/include/04.idt/deo12
+++ b/include/05.irq/idt7.c
@@ -1,4 +1,4 @@
-void init_idt_table()
+void init_idt_table(void)
{
init_pic();
add_idt_entry(0,(uint32_t)irq0);
diff --git a/include/04.idt/deo13 b/include/05.irq/idt8.c
index 427144b..427144b 100644
--- a/include/04.idt/deo13
+++ b/include/05.irq/idt8.c
diff --git a/include/04.idt/deo14 b/include/05.irq/idt9.c
index 8442fdc..8442fdc 100644
--- a/include/04.idt/deo14
+++ b/include/05.irq/idt9.c
diff --git a/include/06.keyboard/deo1 b/include/06.keyboard/deo1
deleted file mode 100644
index 13fd550..0000000
--- a/include/06.keyboard/deo1
+++ /dev/null
@@ -1,3 +0,0 @@
-#include<types.h>
-#include<asm.h>
-#include<stdio.h>
diff --git a/include/06.keyboard/deo3 b/include/06.keyboard/deo3
deleted file mode 100644
index 239c874..0000000
--- a/include/06.keyboard/deo3
+++ /dev/null
@@ -1,7 +0,0 @@
-#define PIC1_COMMAND_PORT 0x20
-#define PIC1_DATA_PORT 0x21
-#define PIC2_COMMAND_PORT 0xA0
-#define PIC2_DATA_PORT 0xA1
-// IO Ports for Keyboard
-#define KEYBOARD_DATA_PORT 0x60
-#define KEYBOARD_STATUS_PORT 0x64
diff --git a/include/06.keyboard/deo4 b/include/06.keyboard/deo4
deleted file mode 100644
index 3322fd7..0000000
--- a/include/06.keyboard/deo4
+++ /dev/null
@@ -1,6 +0,0 @@
-void previous_field(void);
-void tty(char *buffer);
-void prompt(void);
-void clear();
-void us_en(char keymap[]);
-void us_en_shift(char keymap[]);
diff --git a/include/06.keyboard/deo5 b/include/06.keyboard/deo5
deleted file mode 100644
index 57028c5..0000000
--- a/include/06.keyboard/deo5
+++ /dev/null
@@ -1,7 +0,0 @@
-char charcode[256];
-char shift_charcode[256];
-bool ispressed[128];
-#define lshift 0x2A
-#define rshift 0x36
-#define lctrl 0x1D
-#define rctrl 0x1D
diff --git a/include/06.keyboard/keyboard.c b/include/06.keyboard/keyboard.c
index 2218f09..a95d399 100644
--- a/include/06.keyboard/keyboard.c
+++ b/include/06.keyboard/keyboard.c
@@ -1,37 +1,20 @@
+#include<source/keyboard.h>
#include<types.h>
#include<asm.h>
-#include<stdio.h>
+#include<source/stdio.h>
+#include<source/keymap.h>
+#include<source/vga.h>
+#include<source/tty.h>
-#define BUFFER_SIZE 200
-#define BUFFER_LOG 200
char buffer[BUFFER_LOG][BUFFER_SIZE];
size_t buffer_size[BUFFER_LOG];
size_t buffer_current=0;
size_t buffer_all=0;
size_t buffer_index=0;
-#define PIC1_COMMAND_PORT 0x20
-#define PIC1_DATA_PORT 0x21
-#define PIC2_COMMAND_PORT 0xA0
-#define PIC2_DATA_PORT 0xA1
-// IO Ports for Keyboard
-#define KEYBOARD_DATA_PORT 0x60
-#define KEYBOARD_STATUS_PORT 0x64
-
-void previous_field(void);
-void tty(char *buffer);
-void prompt(void);
-void clear();
-void us_en(char keymap[]);
-void us_en_shift(char keymap[]);
-
char charcode[256];
char shift_charcode[256];
bool ispressed[128];
-#define lshift 0x2A
-#define rshift 0x36
-#define lctrl 0x1D
-#define rctrl 0x1D
void init_keyboard()
{
diff --git a/include/06.keyboard/keyboard1.c b/include/06.keyboard/keyboard1.c
new file mode 100644
index 0000000..7576f1e
--- /dev/null
+++ b/include/06.keyboard/keyboard1.c
@@ -0,0 +1,7 @@
+#include<source/keyboard.h>
+#include<types.h>
+#include<asm.h>
+#include<source/stdio.h>
+#include<source/keymap.h>
+#include<source/vga.h>
+#include<source/tty.h>
diff --git a/include/06.keyboard/deo12 b/include/06.keyboard/keyboard10.c
index b40c42b..b40c42b 100644
--- a/include/06.keyboard/deo12
+++ b/include/06.keyboard/keyboard10.c
diff --git a/include/06.keyboard/deo13 b/include/06.keyboard/keyboard11.c
index 87b6e42..87b6e42 100644
--- a/include/06.keyboard/deo13
+++ b/include/06.keyboard/keyboard11.c
diff --git a/include/06.keyboard/deo14 b/include/06.keyboard/keyboard12.c
index 15df074..15df074 100644
--- a/include/06.keyboard/deo14
+++ b/include/06.keyboard/keyboard12.c
diff --git a/include/06.keyboard/deo15 b/include/06.keyboard/keyboard13.c
index c7fca4c..c7fca4c 100644
--- a/include/06.keyboard/deo15
+++ b/include/06.keyboard/keyboard13.c
diff --git a/include/06.keyboard/deo16 b/include/06.keyboard/keyboard14.c
index a55e9c2..a55e9c2 100644
--- a/include/06.keyboard/deo16
+++ b/include/06.keyboard/keyboard14.c
diff --git a/include/06.keyboard/deo17 b/include/06.keyboard/keyboard15.c
index ded0af2..ded0af2 100644
--- a/include/06.keyboard/deo17
+++ b/include/06.keyboard/keyboard15.c
diff --git a/include/06.keyboard/deo18 b/include/06.keyboard/keyboard16.c
index 04688a9..04688a9 100644
--- a/include/06.keyboard/deo18
+++ b/include/06.keyboard/keyboard16.c
diff --git a/include/06.keyboard/deo19 b/include/06.keyboard/keyboard17.c
index 359ba30..359ba30 100644
--- a/include/06.keyboard/deo19
+++ b/include/06.keyboard/keyboard17.c
diff --git a/include/06.keyboard/deo20 b/include/06.keyboard/keyboard18.c
index d594130..d594130 100644
--- a/include/06.keyboard/deo20
+++ b/include/06.keyboard/keyboard18.c
diff --git a/include/06.keyboard/deo2 b/include/06.keyboard/keyboard2.c
index 50d7c07..6361589 100644
--- a/include/06.keyboard/deo2
+++ b/include/06.keyboard/keyboard2.c
@@ -1,5 +1,3 @@
-#define BUFFER_SIZE 200
-#define BUFFER_LOG 200
char buffer[BUFFER_LOG][BUFFER_SIZE];
size_t buffer_size[BUFFER_LOG];
size_t buffer_current=0;
diff --git a/include/06.keyboard/keyboard3.c b/include/06.keyboard/keyboard3.c
new file mode 100644
index 0000000..f42433e
--- /dev/null
+++ b/include/06.keyboard/keyboard3.c
@@ -0,0 +1,3 @@
+char charcode[256];
+char shift_charcode[256];
+bool ispressed[128];
diff --git a/include/06.keyboard/deo6 b/include/06.keyboard/keyboard4.c
index 5c089ce..5c089ce 100644
--- a/include/06.keyboard/deo6
+++ b/include/06.keyboard/keyboard4.c
diff --git a/include/06.keyboard/deo7 b/include/06.keyboard/keyboard5.c
index 55e04b8..55e04b8 100644
--- a/include/06.keyboard/deo7
+++ b/include/06.keyboard/keyboard5.c
diff --git a/include/06.keyboard/deo8 b/include/06.keyboard/keyboard6.c
index 95a5ac5..95a5ac5 100644
--- a/include/06.keyboard/deo8
+++ b/include/06.keyboard/keyboard6.c
diff --git a/include/06.keyboard/deo9 b/include/06.keyboard/keyboard7.c
index bc07378..bc07378 100644
--- a/include/06.keyboard/deo9
+++ b/include/06.keyboard/keyboard7.c
diff --git a/include/06.keyboard/deo10 b/include/06.keyboard/keyboard8.c
index e5d558c..e5d558c 100644
--- a/include/06.keyboard/deo10
+++ b/include/06.keyboard/keyboard8.c
diff --git a/include/06.keyboard/deo11 b/include/06.keyboard/keyboard9.c
index 33bc64b..33bc64b 100644
--- a/include/06.keyboard/deo11
+++ b/include/06.keyboard/keyboard9.c
diff --git a/include/07.pit/deo1 b/include/07.pit/deo1
deleted file mode 100644
index 13fd550..0000000
--- a/include/07.pit/deo1
+++ /dev/null
@@ -1,3 +0,0 @@
-#include<types.h>
-#include<asm.h>
-#include<stdio.h>
diff --git a/include/07.pit/deo2 b/include/07.pit/deo2
deleted file mode 100644
index dfa7284..0000000
--- a/include/07.pit/deo2
+++ /dev/null
@@ -1 +0,0 @@
-void add_idt_entry(size_t num,uint32_t offset);
diff --git a/include/07.pit/deo6 b/include/07.pit/deo6
deleted file mode 100644
index 12cee6a..0000000
--- a/include/07.pit/deo6
+++ /dev/null
@@ -1,3 +0,0 @@
-void init_timer(uint32_t frequency)
-{
- // Firstly, register our timer callback.
diff --git a/include/07.pit/deo7 b/include/07.pit/deo7
deleted file mode 100644
index c780ebc..0000000
--- a/include/07.pit/deo7
+++ /dev/null
@@ -1,4 +0,0 @@
- // The value we send to the PIT is the value to divide it's input clock
- // (1193180 Hz) by, to get our required frequency. Important to note is
- // that the divisor must be small enough to fit into 16-bits.
- uint32_t divisor = 1193180 / frequency;
diff --git a/include/07.pit/deo8 b/include/07.pit/deo8
deleted file mode 100644
index 8c64aaf..0000000
--- a/include/07.pit/deo8
+++ /dev/null
@@ -1,2 +0,0 @@
- // Send the command byte.
- ioport_out(0x43, 0x36);
diff --git a/include/07.pit/timer.c b/include/07.pit/timer.c
index 390e512..3a8f159 100644
--- a/include/07.pit/timer.c
+++ b/include/07.pit/timer.c
@@ -1,20 +1,18 @@
+#include<source/timer.h>
#include<types.h>
#include<asm.h>
-#include<stdio.h>
-
-void add_idt_entry(size_t num,uint32_t offset);
+#include<source/stdio.h>
uint32_t tick=0;
const uint32_t TICKS_PER_SECOND=50;
extern uint32_t time;
uint32_t time=0;
-void timer_handler()
+void timer_handler(void)
{
tick++;
if(tick==TICKS_PER_SECOND)
{
- //printf("%d seconds passed\n",time);
tick=0;
time++;
}
@@ -25,21 +23,12 @@ void timer_handler()
void init_timer(uint32_t frequency)
{
- // Firstly, register our timer callback.
-
- // The value we send to the PIT is the value to divide it's input clock
- // (1193180 Hz) by, to get our required frequency. Important to note is
- // that the divisor must be small enough to fit into 16-bits.
uint32_t divisor = 1193180 / frequency;
-
- // Send the command byte.
ioport_out(0x43, 0x36);
- // Divisor has to be sent byte-wise, so split here into upper/lower bytes.
uint8_t l = (uint8_t)(divisor & 0xFF);
uint8_t h = (uint8_t)( (divisor>>8) & 0xFF );
- // Send the frequency divisor.
ioport_out(0x40, l);
ioport_out(0x40, h);
}
diff --git a/include/07.pit/timer1.c b/include/07.pit/timer1.c
new file mode 100644
index 0000000..02e3f5b
--- /dev/null
+++ b/include/07.pit/timer1.c
@@ -0,0 +1,4 @@
+#include<source/timer.h>
+#include<types.h>
+#include<asm.h>
+#include<source/stdio.h>
diff --git a/include/07.pit/deo3 b/include/07.pit/timer2.c
index 025eb31..025eb31 100644
--- a/include/07.pit/deo3
+++ b/include/07.pit/timer2.c
diff --git a/include/07.pit/deo4 b/include/07.pit/timer3.c
index 8eba051..6527a48 100644
--- a/include/07.pit/deo4
+++ b/include/07.pit/timer3.c
@@ -1,9 +1,8 @@
-void timer_handler()
+void timer_handler(void)
{
tick++;
if(tick==TICKS_PER_SECOND)
{
- //printf("%d seconds passed\n",time);
tick=0;
time++;
}
diff --git a/include/07.pit/deo5 b/include/07.pit/timer4.c
index eaf7bcf..eaf7bcf 100644
--- a/include/07.pit/deo5
+++ b/include/07.pit/timer4.c
diff --git a/include/07.pit/timer5.c b/include/07.pit/timer5.c
new file mode 100644
index 0000000..c1718a5
--- /dev/null
+++ b/include/07.pit/timer5.c
@@ -0,0 +1,4 @@
+void init_timer(uint32_t frequency)
+{
+ uint32_t divisor = 1193180 / frequency;
+ ioport_out(0x43, 0x36);
diff --git a/include/07.pit/deo9 b/include/07.pit/timer6.c
index 1deca04..c93e648 100644
--- a/include/07.pit/deo9
+++ b/include/07.pit/timer6.c
@@ -1,3 +1,2 @@
- // Divisor has to be sent byte-wise, so split here into upper/lower bytes.
uint8_t l = (uint8_t)(divisor & 0xFF);
uint8_t h = (uint8_t)( (divisor>>8) & 0xFF );
diff --git a/include/07.pit/deo10 b/include/07.pit/timer7.c
index 208a223..b7da9b6 100644
--- a/include/07.pit/deo10
+++ b/include/07.pit/timer7.c
@@ -1,4 +1,3 @@
- // Send the frequency divisor.
ioport_out(0x40, l);
ioport_out(0x40, h);
}
diff --git a/include/08.heap/deo12 b/include/08.heap/deo12
deleted file mode 100644
index 84c5721..0000000
--- a/include/08.heap/deo12
+++ /dev/null
@@ -1,5 +0,0 @@
-static uint8_t k_heapBMGetNID(uint8_t a, uint8_t b) {
- uint8_t c;
- for (c = a + 1; c == b || c == 0; ++c);
- return c;
-}
diff --git a/include/08.heap/deo14 b/include/08.heap/deo14
deleted file mode 100644
index 8bfb6f0..0000000
--- a/include/08.heap/deo14
+++ /dev/null
@@ -1,4 +0,0 @@
- /* iterate blocks */
- for (b = heap->fblock; b; b = b->next) {
- /* check if block has enough room */
- if (b->size - (b->used * b->bsize) >= size) {
diff --git a/include/08.heap/deo19 b/include/08.heap/deo19
deleted file mode 100644
index 9b49484..0000000
--- a/include/08.heap/deo19
+++ /dev/null
@@ -1,4 +0,0 @@
- /* allocate by setting id */
- for (z = 0; z < y; ++z) {
- bm[x + z] = nid;
- }
diff --git a/include/08.heap/deo2 b/include/08.heap/deo2
deleted file mode 100644
index 2a69314..0000000
--- a/include/08.heap/deo2
+++ /dev/null
@@ -1,7 +0,0 @@
-typedef struct _KHEAPBLOCKBM {
- struct _KHEAPBLOCKBM *next;
- uint32_t size;
- uint32_t used;
- uint32_t bsize;
- uint32_t lfb;
-} KHEAPBLOCKBM;
diff --git a/include/08.heap/deo3 b/include/08.heap/deo3
deleted file mode 100644
index d07786d..0000000
--- a/include/08.heap/deo3
+++ /dev/null
@@ -1,3 +0,0 @@
-typedef struct _KHEAPBM {
- KHEAPBLOCKBM *fblock;
-} KHEAPBM;
diff --git a/include/08.heap/deo4 b/include/08.heap/deo4
deleted file mode 100644
index c2dc3b5..0000000
--- a/include/08.heap/deo4
+++ /dev/null
@@ -1,3 +0,0 @@
-void k_heapBMInit(KHEAPBM *heap) {
- heap->fblock = 0;
-}
diff --git a/include/08.heap/heap.c b/include/08.heap/heap.c
index 99d0a37..3120ed8 100644
--- a/include/08.heap/heap.c
+++ b/include/08.heap/heap.c
@@ -1,22 +1,14 @@
+#include<source/heap.h>
#include<types.h>
-typedef struct _KHEAPBLOCKBM {
- struct _KHEAPBLOCKBM *next;
- uint32_t size;
- uint32_t used;
- uint32_t bsize;
- uint32_t lfb;
-} KHEAPBLOCKBM;
-
-typedef struct _KHEAPBM {
- KHEAPBLOCKBM *fblock;
-} KHEAPBM;
-
-void k_heapBMInit(KHEAPBM *heap) {
+void k_heapBMInit(KHEAPBM *heap)
+{
heap->fblock = 0;
}
-int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t bsize) {
+int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t
+ bsize)
+{
KHEAPBLOCKBM *b;
uint32_t bcnt;
uint32_t x;
@@ -48,13 +40,16 @@ int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t bsiz
return 1;
}
-static uint8_t k_heapBMGetNID(uint8_t a, uint8_t b) {
+static uint8_t k_heapBMGetNID(uint8_t a, uint8_t b);
+static uint8_t k_heapBMGetNID(uint8_t a, uint8_t b)
+{
uint8_t c;
- for (c = a + 1; c == b || c == 0; ++c);
+ for (c=a+1;c==b||c==0;++c);
return c;
}
-void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size) {
+void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size)
+{
KHEAPBLOCKBM *b;
uint8_t *bm;
uint32_t bcnt;
@@ -63,33 +58,36 @@ void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size) {
uint8_t nid;
/* iterate blocks */
- for (b = heap->fblock; b; b = b->next) {
+ for (b = heap->fblock; b; b = b->next)
+ {
/* check if block has enough room */
- if (b->size - (b->used * b->bsize) >= size) {
+ if (b->size - (b->used * b->bsize) >= size)
+ {
bcnt = b->size / b->bsize;
- bneed = (size / b->bsize) * b->bsize < size ? size / b->bsize + 1 : size / b->bsize;
+ bneed = (size / b->bsize) * b->bsize < size ? size / b->bsize + 1 :
+ size / b->bsize;
bm = (uint8_t*)&b[1];
- for (x = (b->lfb + 1 >= bcnt ? 0 : b->lfb + 1); x != b->lfb; ++x) {
+ for (x = (b->lfb + 1 >= bcnt ? 0 : b->lfb + 1); x != b->lfb; ++x)
+ {
/* just wrap around */
- if (x >= bcnt) {
- x = 0;
- }
+ if (x >= bcnt) x = 0;
- if (bm[x] == 0) {
+ if (bm[x] == 0)
+ {
/* count free blocks */
- for (y = 0; bm[x + y] == 0 && y < bneed && (x + y) < bcnt; ++y);
+ for (y = 0; bm[x + y] == 0 && y < bneed && (x + y) < bcnt;
+ ++y);
/* we have enough, now allocate them */
- if (y == bneed) {
+ if (y == bneed)
+ {
/* find ID that does not match left or right */
nid = k_heapBMGetNID(bm[x - 1], bm[x + y]);
/* allocate by setting id */
- for (z = 0; z < y; ++z) {
- bm[x + z] = nid;
- }
+ for (z = 0; z < y; ++z) bm[x + z] = nid;
/* optimization */
b->lfb = (x + bneed) - 2;
@@ -100,7 +98,8 @@ void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size) {
return (void*)(x * b->bsize + (uintptr_t)&b[1]);
}
- /* x will be incremented by one ONCE more in our FOR loop */
+ /* x will be incremented by one ONCE more in our FOR loop
+ * */
x += (y - 1);
continue;
}
@@ -110,7 +109,8 @@ void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size) {
return 0;
}
-void k_heapBMFree(KHEAPBM *heap, void *ptr) {
+void k_heapBMFree(KHEAPBM *heap, void *ptr)
+{
KHEAPBLOCKBM *b;
uintptr_t ptroff;
uint32_t bi, x;
@@ -118,10 +118,13 @@ void k_heapBMFree(KHEAPBM *heap, void *ptr) {
uint8_t id;
uint32_t max;
- for (b = heap->fblock; b; b = b->next) {
- if ((uintptr_t)ptr > (uintptr_t)b && (uintptr_t)ptr < (uintptr_t)b + sizeof(KHEAPBLOCKBM) + b->size) {
+ for (b = heap->fblock; b; b = b->next)
+ {
+ if ((uintptr_t)ptr > (uintptr_t)b && (uintptr_t)ptr < (uintptr_t)b +
+ sizeof(KHEAPBLOCKBM) + b->size) {
/* found block */
- ptroff = (uintptr_t)ptr - (uintptr_t)&b[1]; /* get offset to get block */
+ ptroff = (uintptr_t)ptr - (uintptr_t)&b[1]; /* get offset to get
+ block */
/* block offset in BM */
bi = ptroff / b->bsize;
/* .. */
@@ -130,9 +133,7 @@ void k_heapBMFree(KHEAPBM *heap, void *ptr) {
id = bm[bi];
/* oddly.. GCC did not optimize this */
max = b->size / b->bsize;
- for (x = bi; bm[x] == id && x < max; ++x) {
- bm[x] = 0;
- }
+ for (x = bi; bm[x] == id && x < max; ++x) bm[x] = 0;
/* update free block count */
b->used -= x - bi;
return;
diff --git a/include/08.heap/heap1.c b/include/08.heap/heap1.c
new file mode 100644
index 0000000..24aa321
--- /dev/null
+++ b/include/08.heap/heap1.c
@@ -0,0 +1,2 @@
+#include<source/heap.h>
+#include<types.h>
diff --git a/include/08.heap/heap10.c b/include/08.heap/heap10.c
new file mode 100644
index 0000000..15505de
--- /dev/null
+++ b/include/08.heap/heap10.c
@@ -0,0 +1,7 @@
+static uint8_t k_heapBMGetNID(uint8_t a, uint8_t b);
+static uint8_t k_heapBMGetNID(uint8_t a, uint8_t b)
+{
+ uint8_t c;
+ for (c=a+1;c==b||c==0;++c);
+ return c;
+}
diff --git a/include/08.heap/deo13 b/include/08.heap/heap11.c
index 369c3f3..90d72d6 100644
--- a/include/08.heap/deo13
+++ b/include/08.heap/heap11.c
@@ -1,4 +1,5 @@
-void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size) {
+void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size)
+{
KHEAPBLOCKBM *b;
uint8_t *bm;
uint32_t bcnt;
diff --git a/include/08.heap/heap12.c b/include/08.heap/heap12.c
new file mode 100644
index 0000000..78285eb
--- /dev/null
+++ b/include/08.heap/heap12.c
@@ -0,0 +1,6 @@
+ /* iterate blocks */
+ for (b = heap->fblock; b; b = b->next)
+ {
+ /* check if block has enough room */
+ if (b->size - (b->used * b->bsize) >= size)
+ {
diff --git a/include/08.heap/deo15 b/include/08.heap/heap13.c
index a867821..ab7463c 100644
--- a/include/08.heap/deo15
+++ b/include/08.heap/heap13.c
@@ -1,3 +1,4 @@
bcnt = b->size / b->bsize;
- bneed = (size / b->bsize) * b->bsize < size ? size / b->bsize + 1 : size / b->bsize;
+ bneed = (size / b->bsize) * b->bsize < size ? size / b->bsize + 1 :
+ size / b->bsize;
bm = (uint8_t*)&b[1];
diff --git a/include/08.heap/deo16 b/include/08.heap/heap14.c
index 78f4675..6edcf6f 100644
--- a/include/08.heap/deo16
+++ b/include/08.heap/heap14.c
@@ -1,5 +1,4 @@
- for (x = (b->lfb + 1 >= bcnt ? 0 : b->lfb + 1); x != b->lfb; ++x) {
+ for (x = (b->lfb + 1 >= bcnt ? 0 : b->lfb + 1); x != b->lfb; ++x)
+ {
/* just wrap around */
- if (x >= bcnt) {
- x = 0;
- }
+ if (x >= bcnt) x = 0;
diff --git a/include/08.heap/deo17 b/include/08.heap/heap15.c
index d20be4c..5a39a40 100644
--- a/include/08.heap/deo17
+++ b/include/08.heap/heap15.c
@@ -1,3 +1,5 @@
- if (bm[x] == 0) {
+ if (bm[x] == 0)
+ {
/* count free blocks */
- for (y = 0; bm[x + y] == 0 && y < bneed && (x + y) < bcnt; ++y);
+ for (y = 0; bm[x + y] == 0 && y < bneed && (x + y) < bcnt;
+ ++y);
diff --git a/include/08.heap/deo18 b/include/08.heap/heap16.c
index fed8463..206a5e0 100644
--- a/include/08.heap/deo18
+++ b/include/08.heap/heap16.c
@@ -1,4 +1,5 @@
/* we have enough, now allocate them */
- if (y == bneed) {
+ if (y == bneed)
+ {
/* find ID that does not match left or right */
nid = k_heapBMGetNID(bm[x - 1], bm[x + y]);
diff --git a/include/08.heap/heap17.c b/include/08.heap/heap17.c
new file mode 100644
index 0000000..ff94380
--- /dev/null
+++ b/include/08.heap/heap17.c
@@ -0,0 +1,2 @@
+ /* allocate by setting id */
+ for (z = 0; z < y; ++z) bm[x + z] = nid;
diff --git a/include/08.heap/deo20 b/include/08.heap/heap18.c
index f141368..f141368 100644
--- a/include/08.heap/deo20
+++ b/include/08.heap/heap18.c
diff --git a/include/08.heap/deo21 b/include/08.heap/heap19.c
index 8fd73e2..8fd73e2 100644
--- a/include/08.heap/deo21
+++ b/include/08.heap/heap19.c
diff --git a/include/08.heap/heap2.c b/include/08.heap/heap2.c
new file mode 100644
index 0000000..8757694
--- /dev/null
+++ b/include/08.heap/heap2.c
@@ -0,0 +1,4 @@
+void k_heapBMInit(KHEAPBM *heap)
+{
+ heap->fblock = 0;
+}
diff --git a/include/08.heap/deo22 b/include/08.heap/heap20.c
index 98c1157..98c1157 100644
--- a/include/08.heap/deo22
+++ b/include/08.heap/heap20.c
diff --git a/include/08.heap/deo23 b/include/08.heap/heap21.c
index 21aa8c8..2ed3f8c 100644
--- a/include/08.heap/deo23
+++ b/include/08.heap/heap21.c
@@ -1,4 +1,5 @@
- /* x will be incremented by one ONCE more in our FOR loop */
+ /* x will be incremented by one ONCE more in our FOR loop
+ * */
x += (y - 1);
continue;
}
diff --git a/include/08.heap/deo24 b/include/08.heap/heap22.c
index e9c116b..88cd773 100644
--- a/include/08.heap/deo24
+++ b/include/08.heap/heap22.c
@@ -1,4 +1,5 @@
-void k_heapBMFree(KHEAPBM *heap, void *ptr) {
+void k_heapBMFree(KHEAPBM *heap, void *ptr)
+{
KHEAPBLOCKBM *b;
uintptr_t ptroff;
uint32_t bi, x;
diff --git a/include/08.heap/deo25 b/include/08.heap/heap23.c
index 1a22151..70305b7 100644
--- a/include/08.heap/deo25
+++ b/include/08.heap/heap23.c
@@ -1,7 +1,10 @@
- for (b = heap->fblock; b; b = b->next) {
- if ((uintptr_t)ptr > (uintptr_t)b && (uintptr_t)ptr < (uintptr_t)b + sizeof(KHEAPBLOCKBM) + b->size) {
+ for (b = heap->fblock; b; b = b->next)
+ {
+ if ((uintptr_t)ptr > (uintptr_t)b && (uintptr_t)ptr < (uintptr_t)b +
+ sizeof(KHEAPBLOCKBM) + b->size) {
/* found block */
- ptroff = (uintptr_t)ptr - (uintptr_t)&b[1]; /* get offset to get block */
+ ptroff = (uintptr_t)ptr - (uintptr_t)&b[1]; /* get offset to get
+ block */
/* block offset in BM */
bi = ptroff / b->bsize;
/* .. */
@@ -10,9 +13,7 @@
id = bm[bi];
/* oddly.. GCC did not optimize this */
max = b->size / b->bsize;
- for (x = bi; bm[x] == id && x < max; ++x) {
- bm[x] = 0;
- }
+ for (x = bi; bm[x] == id && x < max; ++x) bm[x] = 0;
/* update free block count */
b->used -= x - bi;
return;
diff --git a/include/08.heap/deo26 b/include/08.heap/heap24.c
index 11a4697..11a4697 100644
--- a/include/08.heap/deo26
+++ b/include/08.heap/heap24.c
diff --git a/include/08.heap/deo27 b/include/08.heap/heap25.c
index 6ac75a9..6ac75a9 100644
--- a/include/08.heap/deo27
+++ b/include/08.heap/heap25.c
diff --git a/include/08.heap/deo28 b/include/08.heap/heap26.c
index 6d7223d..6d7223d 100644
--- a/include/08.heap/deo28
+++ b/include/08.heap/heap26.c
diff --git a/include/08.heap/deo29 b/include/08.heap/heap27.c
index de767a2..de767a2 100644
--- a/include/08.heap/deo29
+++ b/include/08.heap/heap27.c
diff --git a/include/08.heap/deo30 b/include/08.heap/heap28.c
index 22972f4..22972f4 100644
--- a/include/08.heap/deo30
+++ b/include/08.heap/heap28.c
diff --git a/include/08.heap/deo31 b/include/08.heap/heap29.c
index d4d5941..d4d5941 100644
--- a/include/08.heap/deo31
+++ b/include/08.heap/heap29.c
diff --git a/include/08.heap/deo5 b/include/08.heap/heap3.c
index 8eda156..dceb8a3 100644
--- a/include/08.heap/deo5
+++ b/include/08.heap/heap3.c
@@ -1,4 +1,6 @@
-int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t bsize) {
+int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t
+ bsize)
+{
KHEAPBLOCKBM *b;
uint32_t bcnt;
uint32_t x;
diff --git a/include/08.heap/deo6 b/include/08.heap/heap4.c
index 024a09a..024a09a 100644
--- a/include/08.heap/deo6
+++ b/include/08.heap/heap4.c
diff --git a/include/08.heap/deo7 b/include/08.heap/heap5.c
index c816b2c..c816b2c 100644
--- a/include/08.heap/deo7
+++ b/include/08.heap/heap5.c
diff --git a/include/08.heap/deo8 b/include/08.heap/heap6.c
index 3a9ea03..3a9ea03 100644
--- a/include/08.heap/deo8
+++ b/include/08.heap/heap6.c
diff --git a/include/08.heap/deo9 b/include/08.heap/heap7.c
index 7183948..7183948 100644
--- a/include/08.heap/deo9
+++ b/include/08.heap/heap7.c
diff --git a/include/08.heap/deo10 b/include/08.heap/heap8.c
index fd64ff9..fd64ff9 100644
--- a/include/08.heap/deo10
+++ b/include/08.heap/heap8.c
diff --git a/include/08.heap/deo11 b/include/08.heap/heap9.c
index a61193b..a61193b 100644
--- a/include/08.heap/deo11
+++ b/include/08.heap/heap9.c
diff --git a/include/09.paging/deo1 b/include/09.paging/deo1
deleted file mode 100644
index c45e28b..0000000
--- a/include/09.paging/deo1
+++ /dev/null
@@ -1 +0,0 @@
-#include<types.h>
diff --git a/include/09.paging/paging.c b/include/09.paging/paging.c
index f08530d..9c4875a 100644
--- a/include/09.paging/paging.c
+++ b/include/09.paging/paging.c
@@ -1,11 +1,12 @@
+#include<source/paging.h>
#include<types.h>
extern void loadPageDirectory(uint32_t*);
-extern void enablePaging();
+extern void enablePaging(void);
uint32_t page_directory[1024] __attribute__((aligned(4096)));
-void set_pd()
+void set_pd(void)
{
//set each entry to not present
for(size_t i=0;i<1024;i++)
@@ -22,22 +23,25 @@ uint32_t page_table[1024][1024] __attribute__((aligned(4096)));
void set_pt(size_t num,uint32_t address)
{
- // holds the physical address where we want to start mapping these pages to.
- // in this case, we want to map these pages to the very beginning of memory.
+ // holds the physical address where we want to start mapping these pages
+ // to.
+ // in this case, we want to map these pages to the very beginning of
+ // memory.
//we will fill all 1024 entries in the table, mapping 4 megabytes
for(size_t i=0;i<1024;i++)
{
// As the address is page aligned, it will always leave 12 bits zeroed.
// Those bits are used by the attributes ;)
- page_table[num][i] = (address + i * 0x1000) | 3; // attributes: supervisor level, read/write, present.
+ page_table[num][i] = (address + i * 0x1000) | 3; // attributes:
+ supervisor level, read/write, present.
}
page_directory[num] = ((uint32_t)page_table[num]) | 3;
// attributes: supervisor level, read/write, present
}
-void set_paging()
+void set_paging(void)
{
set_pd();
for(size_t i=0;i<1024;i++) set_pt(i,0x00400000 * i); // all 4GB mapped
diff --git a/include/09.paging/paging1.c b/include/09.paging/paging1.c
new file mode 100644
index 0000000..2893924
--- /dev/null
+++ b/include/09.paging/paging1.c
@@ -0,0 +1,2 @@
+#include<source/paging.h>
+#include<types.h>
diff --git a/include/09.paging/deo2 b/include/09.paging/paging2.c
index b56d18e..8baa0b4 100644
--- a/include/09.paging/deo2
+++ b/include/09.paging/paging2.c
@@ -1,2 +1,2 @@
extern void loadPageDirectory(uint32_t*);
-extern void enablePaging();
+extern void enablePaging(void);
diff --git a/include/09.paging/deo3 b/include/09.paging/paging3.c
index cbfbd25..cbfbd25 100644
--- a/include/09.paging/deo3
+++ b/include/09.paging/paging3.c
diff --git a/include/09.paging/deo4 b/include/09.paging/paging4.c
index 6905d35..2523a96 100644
--- a/include/09.paging/deo4
+++ b/include/09.paging/paging4.c
@@ -1,4 +1,4 @@
-void set_pd()
+void set_pd(void)
{
//set each entry to not present
for(size_t i=0;i<1024;i++)
diff --git a/include/09.paging/deo5 b/include/09.paging/paging5.c
index 57f997d..57f997d 100644
--- a/include/09.paging/deo5
+++ b/include/09.paging/paging5.c
diff --git a/include/09.paging/deo6 b/include/09.paging/paging6.c
index 4e670bb..c5ffd58 100644
--- a/include/09.paging/deo6
+++ b/include/09.paging/paging6.c
@@ -1,4 +1,6 @@
void set_pt(size_t num,uint32_t address)
{
- // holds the physical address where we want to start mapping these pages to.
- // in this case, we want to map these pages to the very beginning of memory.
+ // holds the physical address where we want to start mapping these pages
+ // to.
+ // in this case, we want to map these pages to the very beginning of
+ // memory.
diff --git a/include/09.paging/deo7 b/include/09.paging/paging7.c
index 5898f28..1b9c590 100644
--- a/include/09.paging/deo7
+++ b/include/09.paging/paging7.c
@@ -3,5 +3,6 @@
{
// As the address is page aligned, it will always leave 12 bits zeroed.
// Those bits are used by the attributes ;)
- page_table[num][i] = (address + i * 0x1000) | 3; // attributes: supervisor level, read/write, present.
+ page_table[num][i] = (address + i * 0x1000) | 3; // attributes:
+ supervisor level, read/write, present.
}
diff --git a/include/09.paging/deo8 b/include/09.paging/paging8.c
index b842a0c..b842a0c 100644
--- a/include/09.paging/deo8
+++ b/include/09.paging/paging8.c
diff --git a/include/09.paging/deo9 b/include/09.paging/paging9.c
index d99797b..eacd1a6 100644
--- a/include/09.paging/deo9
+++ b/include/09.paging/paging9.c
@@ -1,4 +1,4 @@
-void set_paging()
+void set_paging(void)
{
set_pd();
for(size_t i=0;i<1024;i++) set_pt(i,0x00400000 * i); // all 4GB mapped
diff --git a/include/10.libc/asm.h b/include/10.libc/asm.h
index 9f2a9e6..ee15f00 100644
--- a/include/10.libc/asm.h
+++ b/include/10.libc/asm.h
@@ -1,9 +1,16 @@
-#ifndef ASM_H
-#define ASM_H
+#ifndef SOURCE_ASM_H
+#define SOURCE_ASM_H
#include<types.h>
+#define PIC1_COMMAND_PORT 0x20
+#define PIC1_DATA_PORT 0x21
+#define PIC2_COMMAND_PORT 0xA0
+#define PIC2_DATA_PORT 0xA1
+
+
extern uint8_t ioport_in(uint8_t port);
-extern void ioport_out(uint8_t port, char data);
+extern void ioport_out(uint8_t port, int data);
+
#endif
diff --git a/include/10.libc/heap.h b/include/10.libc/heap.h
deleted file mode 100644
index fa32f26..0000000
--- a/include/10.libc/heap.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef HEAP_H
-#define HEAP_H
-
-#include<types.h>
-
-void kheapinit();
-int kheapaddblock(uintptr_t addr,uint32_t size,uint32_t bsize);
-void *kmalloc(uint32_t size);
-void kfree(void *ptr);
-
-#endif
diff --git a/include/10.libc/irq.h b/include/10.libc/irq.h
deleted file mode 100644
index 58b3cd3..0000000
--- a/include/10.libc/irq.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef IRQ_H
-#define IRQ_H
-
-extern void irq0();
-extern void irq1();
-extern void irq2();
-extern void irq3();
-extern void irq4();
-extern void irq5();
-extern void irq6();
-extern void irq7();
-extern void irq8();
-extern void irq9();
-extern void irq10();
-extern void irq11();
-extern void irq12();
-extern void irq13();
-extern void irq14();
-extern void irq15();
-extern void irq16();
-extern void irq17();
-extern void irq18();
-extern void irq19();
-extern void irq20();
-extern void irq21();
-extern void irq22();
-extern void irq23();
-extern void irq24();
-extern void irq25();
-extern void irq26();
-extern void irq27();
-extern void irq28();
-extern void irq29();
-extern void irq30();
-extern void irq31();
-extern void timer_irq();
-extern void keyboard_irq();
-
-#endif
diff --git a/include/10.libc/source/gdt.h b/include/10.libc/source/gdt.h
new file mode 100644
index 0000000..f31a982
--- /dev/null
+++ b/include/10.libc/source/gdt.h
@@ -0,0 +1,26 @@
+#ifndef SOURCE_GDT_H
+#define SOURCE_GDT_H
+
+#include<types.h>
+
+struct gdt_entry
+{
+ uint16_t limit;
+ uint16_t base1;
+ uint8_t base2;
+ uint8_t access;
+ uint8_t limit_flags;
+ uint8_t base3;
+} __attribute__((packed));
+
+struct gdt_pointer
+{
+ uint16_t size;
+ uint32_t offset;
+} __attribute__((packed));
+
+void init_gdt_entry(size_t num, uint16_t limit, uint32_t base, uint8_t access,
+ uint8_t limit_flags);
+void init_gdt_table(void);
+
+#endif
diff --git a/include/10.libc/source/heap.h b/include/10.libc/source/heap.h
new file mode 100644
index 0000000..4bf12a7
--- /dev/null
+++ b/include/10.libc/source/heap.h
@@ -0,0 +1,31 @@
+#ifndef SOURCE_HEAP_H
+#define SOURCE_HEAP_H
+
+#include<types.h>
+
+typedef struct _KHEAPBLOCKBM {
+ struct _KHEAPBLOCKBM *next;
+ uint32_t size;
+ uint32_t used;
+ uint32_t bsize;
+ uint32_t lfb;
+} KHEAPBLOCKBM;
+
+typedef struct _KHEAPBM {
+ KHEAPBLOCKBM *fblock;
+} KHEAPBM;
+
+extern KHEAPBM kheap;
+
+void k_heapBMInit(KHEAPBM *heap);
+int k_heapBMAddBlock(KHEAPBM *heap, uintptr_t addr, uint32_t size, uint32_t
+ bsize);
+void *k_heapBMAlloc(KHEAPBM *heap, uint32_t size);
+void k_heapBMFree(KHEAPBM *heap, void *ptr);
+
+void kheapinit(void);
+int kheapaddblock(uintptr_t addr,uint32_t size,uint32_t bsize);
+void *kmalloc(uint32_t size);
+void kfree(void *ptr);
+
+#endif
diff --git a/include/10.libc/source/idt.h b/include/10.libc/source/idt.h
new file mode 100644
index 0000000..cbae940
--- /dev/null
+++ b/include/10.libc/source/idt.h
@@ -0,0 +1,37 @@
+#ifndef SOURCE_IDT_H
+#define SOURCE_IDT_H
+
+#include<types.h>
+
+#define INTERRUPT_GATE_32 0x8E
+
+#define KERNEL_CODE 0x08
+#define KERNEL_DATA 0x10
+
+#define PIC1_COMMAND_PORT 0x20
+#define PIC1_DATA_PORT 0x21
+#define PIC2_COMMAND_PORT 0xA0
+#define PIC2_DATA_PORT 0xA1
+
+struct idt_entry
+{
+ uint16_t offset1;
+ uint16_t selector;
+ uint8_t zero;
+ uint8_t type_attr;
+ uint16_t offset2;
+} __attribute__((packed));
+
+struct idt_pointer
+{
+ uint16_t size;
+ uint32_t offset;
+} __attribute__((packed));
+
+void init_idt_entry(size_t num, uint32_t offset, uint16_t selector, uint8_t
+ type_attr);
+void add_idt_entry(size_t num,uint32_t offset);
+void init_pic(void);
+void init_idt_table(void);
+
+#endif
diff --git a/include/10.libc/source/irq.h b/include/10.libc/source/irq.h
new file mode 100644
index 0000000..febf3e1
--- /dev/null
+++ b/include/10.libc/source/irq.h
@@ -0,0 +1,39 @@
+#ifndef SOURCE_IRQ_H
+#define SOURCE_IRQ_H
+
+extern void irq0(void);
+extern void irq1(void);
+extern void irq2(void);
+extern void irq3(void);
+extern void irq4(void);
+extern void irq5(void);
+extern void irq6(void);
+extern void irq7(void);
+extern void irq8(void);
+extern void irq9(void);
+extern void irq10(void);
+extern void irq11(void);
+extern void irq12(void);
+extern void irq13(void);
+extern void irq14(void);
+extern void irq15(void);
+extern void irq16(void);
+extern void irq17(void);
+extern void irq18(void);
+extern void irq19(void);
+extern void irq20(void);
+extern void irq21(void);
+extern void irq22(void);
+extern void irq23(void);
+extern void irq24(void);
+extern void irq25(void);
+extern void irq26(void);
+extern void irq27(void);
+extern void irq28(void);
+extern void irq29(void);
+extern void irq30(void);
+extern void irq31(void);
+extern void timer_irq(void);
+extern void keyboard_irq(void);
+
+#endif
diff --git a/include/10.libc/source/irq_handler.h b/include/10.libc/source/irq_handler.h
new file mode 100644
index 0000000..a20ed70
--- /dev/null
+++ b/include/10.libc/source/irq_handler.h
@@ -0,0 +1,43 @@
+#ifndef SOURCE_IRQ_HANDLER_H
+#define SOURCE_IRQ_HANDLER_H
+
+#define INTERRUPT_GATE_32 0x8e
+
+#define KERNEL_CODE 0x08
+#define KERNEL_DATA 0x10
+
+
+void irq0_handler(void);
+void irq1_handler(void);
+void irq2_handler(void);
+void irq3_handler(void);
+void irq4_handler(void);
+void irq5_handler(void);
+void irq6_handler(void);
+void irq7_handler(void);
+void irq8_handler(void);
+void irq9_handler(void);
+void irq10_handler(void);
+void irq11_handler(void);
+void irq12_handler(void);
+void irq13_handler(void);
+void irq14_handler(void);
+void irq15_handler(void);
+void irq16_handler(void);
+void irq17_handler(void);
+void irq18_handler(void);
+void irq19_handler(void);
+void irq20_handler(void);
+void irq21_handler(void);
+void irq22_handler(void);
+void irq23_handler(void);
+void irq24_handler(void);
+void irq25_handler(void);
+void irq26_handler(void);
+void irq27_handler(void);
+void irq28_handler(void);
+void irq29_handler(void);
+void irq30_handler(void);
+void irq31_handler(void);
+
+#endif
diff --git a/include/10.libc/source/kernel.h b/include/10.libc/source/kernel.h
new file mode 100644
index 0000000..0a3903f
--- /dev/null
+++ b/include/10.libc/source/kernel.h
@@ -0,0 +1,6 @@
+#ifndef SOURCE_KERNEL_H
+#define SOURCE_KERNEL_H
+
+void kernel_main(void);
+
+#endif
diff --git a/include/10.libc/source/keyboard.h b/include/10.libc/source/keyboard.h
new file mode 100644
index 0000000..a023e66
--- /dev/null
+++ b/include/10.libc/source/keyboard.h
@@ -0,0 +1,21 @@
+#ifndef SOURCE_KEYBOARD_H
+#define SOURCE_KEYBOARD_H
+
+#define BUFFER_SIZE 200
+#define BUFFER_LOG 200
+
+#define KEYBOARD_DATA_PORT 0x60
+#define KEYBOARD_STATUS_PORT 0x64
+
+void init_keyboard(void);
+void deletelast(void);
+void backspace(void);
+void enter(void);
+void space(void);
+void keyup(void);
+void keydown(void);
+void keyleft(void);
+void keyright(void);
+void keyboard_handler(void);
+
+#endif
diff --git a/include/10.libc/source/keymap.h b/include/10.libc/source/keymap.h
new file mode 100644
index 0000000..7d01291
--- /dev/null
+++ b/include/10.libc/source/keymap.h
@@ -0,0 +1,14 @@
+#ifndef SOURCE_KEYMAP_H
+#define SOURCE_KEYMAP_H
+
+#include<types.h>
+
+#define lshift 0x2A
+#define rshift 0x36
+#define lctrl 0x1D
+#define rctrl 0x1D
+
+void us_en(char keymap[]);
+void us_en_shift(char keymap[]);
+
+#endif
diff --git a/include/10.libc/source/paging.h b/include/10.libc/source/paging.h
new file mode 100644
index 0000000..dc4e357
--- /dev/null
+++ b/include/10.libc/source/paging.h
@@ -0,0 +1,10 @@
+#ifndef SOURCE_PAGING_H
+#define SOURCE_PAGING_H
+
+#include<types.h>
+
+void set_pd(void);
+void set_pt(size_t num, uint32_t address);
+void set_paging(void);
+
+#endif
diff --git a/include/10.libc/source/stack_protector.h b/include/10.libc/source/stack_protector.h
new file mode 100644
index 0000000..d5532e2
--- /dev/null
+++ b/include/10.libc/source/stack_protector.h
@@ -0,0 +1,6 @@
+#ifndef SOURCE_STACK_PROTECTOR_H
+#define SOURCE_STACK_PROTECTOR_H
+
+void __stack_chk_fail(void);
+
+#endif
diff --git a/include/10.libc/source/stdio.h b/include/10.libc/source/stdio.h
new file mode 100644
index 0000000..dbf901a
--- /dev/null
+++ b/include/10.libc/source/stdio.h
@@ -0,0 +1,6 @@
+#ifndef SOURCE_STDIO_H
+#define SOURCE_STDIO_H
+
+void printf(const char *str, ...);
+
+#endif
diff --git a/include/10.libc/source/string.h b/include/10.libc/source/string.h
new file mode 100644
index 0000000..98aef4f
--- /dev/null
+++ b/include/10.libc/source/string.h
@@ -0,0 +1,17 @@
+#ifndef SOURCE_STRING_H
+#define SOURCE_STRING_H
+
+#include<types.h>
+
+size_t stringlen(char* str);
+bool stringcmp(const char* str1, const char* str2);
+void stringcat(char* str1, const char* str2);
+void stringcpy(char* str1, const char* str2);
+void stringrev(char* str);
+
+void itos(uint32_t num, char *str);
+uint32_t stoi(const char* str);
+double stof(const char* str);
+void ftos(double num, char* str);
+
+#endif
diff --git a/include/10.libc/source/timer.h b/include/10.libc/source/timer.h
new file mode 100644
index 0000000..bfdc4cd
--- /dev/null
+++ b/include/10.libc/source/timer.h
@@ -0,0 +1,9 @@
+#ifndef SOURCE_TIMER_H
+#define SOURCE_TIMER_H
+
+#include<types.h>
+
+void timer_handler(void);
+void init_timer(uint32_t frequency);
+
+#endif
diff --git a/include/10.libc/source/tty.h b/include/10.libc/source/tty.h
new file mode 100644
index 0000000..2b22eff
--- /dev/null
+++ b/include/10.libc/source/tty.h
@@ -0,0 +1,19 @@
+#ifndef SOURCE_TTY_H
+#define SOURCE_TTY_H
+
+#include<types.h>
+
+#define CMD_LENGTH 20
+
+size_t pieces(char pieces[][CMD_LENGTH], char *buffer);
+void echo(size_t numberof, char parts[][CMD_LENGTH]);
+void merge(char parts[][CMD_LENGTH]);
+void ls(void);
+void number(size_t numberof, char parts[][CMD_LENGTH]);
+void uptime(void);
+void prompt(void);
+void neofetch(void);
+void help(void);
+void tty(char *buffer);
+
+#endif
diff --git a/include/10.libc/vga.h b/include/10.libc/source/vga.h
index eb43644..69abc44 100644
--- a/include/10.libc/vga.h
+++ b/include/10.libc/source/vga.h
@@ -1,5 +1,5 @@
-#ifndef VGA_H
-#define VGA_H
+#ifndef SOURCE_VGA_H
+#define SOURCE_VGA_H
#include<types.h>
@@ -24,6 +24,17 @@ enum vga_color {
VGA_COLOR_YELLOW = 14,
VGA_COLOR_WHITE = 15,
};
+
void set_color(enum vga_color fg, enum vga_color bg);
+void terminal_initialize(void);
+void terminal_putentryat(char c, uint8_t color, size_t x, size_t y);
+void movescreen(void);
+void next_field(void);
+void previous_field(void);
+void terminal_putchar(char c);
+void terminal_writestring(const char* data);
+void terminal_writeint(uint32_t num);
+void terminal_writefloat(double num);
+void clear(void);
#endif
diff --git a/include/10.libc/stdio.h b/include/10.libc/stdio.h
index 6bb87be..88f18cc 100644
--- a/include/10.libc/stdio.h
+++ b/include/10.libc/stdio.h
@@ -20,6 +20,4 @@ size_t fwrite(const void*, size_t, size_t, FILE*);
void setbuf(FILE*, char*);
int vfprintf(FILE*, const char*, va_list);
-void printf(char *str, ...);
-
#endif
diff --git a/include/10.libc/string.h b/include/10.libc/string.h
index 78fa956..16da969 100644
--- a/include/10.libc/string.h
+++ b/include/10.libc/string.h
@@ -8,15 +8,4 @@ void* memset(void*, int, size_t);
char* strcpy(char*, const char*);
size_t strlen(const char*);
-#include<types.h>
-
-size_t stringlen(char *str);
-bool stringcmp(char *str1,char *str2);
-void stringcat(char *str1,char *str2);
-void stringrev(char *str);
-void itos(uint32_t num,char *str);
-uint32_t stoi(const char *str);
-double stof(const char *str);
-void ftos(double num, char *str);
-
#endif
diff --git a/include/10.libc/types.h b/include/10.libc/types.h
index a6d6530..391284d 100644
--- a/include/10.libc/types.h
+++ b/include/10.libc/types.h
@@ -1,5 +1,5 @@
-#ifndef TYPES_H
-#define TYPES_H
+#ifndef SOURCE_TYPES_H
+#define SOURCE_TYPES_H
#include<stdbool.h>
#include<stddef.h>
diff --git a/include/setup.sh b/include/setup.sh
index adc27cb..26c70dc 100755
--- a/include/setup.sh
+++ b/include/setup.sh
@@ -6,42 +6,49 @@ mkdir "01.pocetak" "02.vga" "03.gdt" "04.idt" "05.irq" "06.keyboard" "07.pit" "0
cp ../../mykernel/src/as/boot.s ./01.pocetak
cd 01.pocetak || exit
-awk -v RS= '{print > ("deo" NR )}' boot.s
-cd .. || exit
+awk -v RS= '{print > ("boot" NR ".s")}' boot.s
+cd ..
cp ../../mykernel/src/c/vga.c ./02.vga
cd 02.vga || exit
-awk -v RS= '{print > ("deo" NR )}' vga.c
-cd .. || exit
+awk -v RS= '{print > ("vga" NR ".c")}' vga.c
+cd ..
cp ../../mykernel/src/c/gdt.c ./03.gdt
+cp ../../mykernel/src/include/source/gdt.h ./03.gdt
cd 03.gdt || exit
-awk -v RS= '{print > ("deo" NR )}' gdt.c
-cd .. || exit
+awk -v RS= '{print > ("gdt" NR ".c")}' gdt.c
+awk -v RS= '{print > ("gdt" NR ".h")}' gdt.h
+cd ..
-cp ../../mykernel/src/c/idt.c ./04.idt
+cp ../../mykernel/src/include/source/idt.h ./04.idt
cd 04.idt || exit
-awk -v RS= '{print > ("deo" NR )}' idt.c
-cd .. || exit
+awk -v RS= '{print > ("idt" NR ".h")}' idt.h
+cd ..
+
+cp ../../mykernel/src/c/idt.c ./05.irq
+cd 05.irq || exit
+awk -v RS= '{print > ("idt" NR ".c")}' idt.c
+cd ..
cp ../../mykernel/src/c/keyboard.c ./06.keyboard
cd 06.keyboard || exit
-awk -v RS= '{print > ("deo" NR )}' keyboard.c
-cd .. || exit
+awk -v RS= '{print > ("keyboard" NR ".c")}' keyboard.c
+cd ..
cp ../../mykernel/src/c/timer.c ./07.pit
cd 07.pit || exit
-awk -v RS= '{print > ("deo" NR )}' timer.c
-cd .. || exit
+awk -v RS= '{print > ("timer" NR ".c")}' timer.c
+cd ..
cp ../../mykernel/src/c/heap.c ./08.heap
cd 08.heap || exit
-awk -v RS= '{print > ("deo" NR )}' heap.c
-cd .. || exit
+awk -v RS= '{print > ("heap" NR ".c")}' heap.c
+cd ..
cp ../../mykernel/src/c/paging.c ./09.paging
cd 09.paging || exit
-awk -v RS= '{print > ("deo" NR )}' paging.c
-cd .. || exit
+awk -v RS= '{print > ("paging" NR ".c")}' paging.c
+cd ..
cp -r ../../mykernel/src/include/* ./10.libc
diff --git a/kernel.pdf b/kernel.pdf
index f5d3b11..6d6f0c6 100644
--- a/kernel.pdf
+++ b/kernel.pdf
Binary files differ
diff --git a/kernel.tex b/kernel.tex
index c407859..56d999d 100644
--- a/kernel.tex
+++ b/kernel.tex
@@ -76,7 +76,8 @@
\vspace*{10pt}
\begin{center}
- {\naslov Izrada \textbf{\eng\Large X86 32bit i686} jezgra operativnog sistema}
+ {\naslov Izrada \textbf{\eng\Large X86 32bit i686} jezgra operativnog
+ sistema}
\end{center}
\vspace*{70mm}
@@ -132,13 +133,14 @@ Kod, zajedno sa svim alatima za njegovo korishenje i upotrebu, je dostupan pod
Ovaj projakat se konstantno unapredjuje i nemoguc1e je odrzhavati
sinhronizovanim fajlove koji sachinjavaju operativni sistem, a koji se
-istovremeno pominju u ovom radu. Iz tog razloga, rad c1e biti napisan za verziju
-operativnog sistema 1.0.0. Na stranici {\eng GitHub}-a ova verzija se mozhe
-nac1i pod {\eng tag/s} sekcijom na stranici projekta.
+istovremeno pominju u ovom radu. Iz tog razloga, rad c1e biti napisan za
+verziju operativnog sistema 1.0.0. Na stranici {\eng GitHub}-a ova verzija se
+mozhe nac1i pod {\eng tag/s} sekcijom na stranici projekta.
Radi laksheg kompajlovanja koda od strane chitaoca, kreiran je {\eng toolchain}
-- set alata, specifichno za kompajlovanje ovog operativnog sistema, koji se mozhe
-nac1i na stranici {\eng\url{https://github.com/aleksav013/aleksa-toolchain}},
+- set alata, specifichno za kompajlovanje ovog operativnog sistema, koji se
+mozhe nac1i na stranici
+{\eng\url{https://github.com/aleksav013/aleksa-toolchain}},
takodje dostupan pod {\eng GPLv3} licencom otvorenog koda. Set alata {\eng
aleksa-toolchain} kreiran je takodje i iz razloga shto je zapravo neizbezhan
proces kreiranja {\eng cross-compilera} - kompajlera koji kompapajluje kod za
@@ -156,9 +158,10 @@ potrebnom za njegovo razumevanje.
\chapter{{\eng X86} arhitektura}
\bigskip
-{\eng X86} arhitektura je probitno bila osmobitna (sadrzhala je registre duzhine 8
-bitova), 16bitna, zatim 32bitna i na kraju 64bitna. Danas 64bitnu {\eng X86}
-arhitekturu znamo kao i {\eng{} AMD64}, {\eng X86-64} ili {\eng X86\_64}.\\
+{\eng X86} arhitektura je probitno bila osmobitna (sadrzhala je registre
+duzhine 8 bitova), 16bitna, zatim 32bitna i na kraju 64bitna. Danas 64bitnu
+{\eng X86} arhitekturu znamo kao i {\eng{} AMD64}, {\eng X86-64} ili {\eng
+X86\_64}.\\
Zajedno sa {\eng ARM}-om jedna od najkorish\/c1enijih arhitektura danashnjice.
@@ -168,8 +171,10 @@ Zajedno sa {\eng ARM}-om jedna od najkorish\/c1enijih arhitektura danashnjice.
Postoji vishe vrsta registara procesora\cite[75]{misc:1}. Neki od osnovnih
registara koje je potrebno pomenuti dati su u tekstu koji sledi. Razlog zbog
kojeg su navedena i imena registara prethodnih verzija {\eng X86} arhitekture
-je zbog toga shto je moguc1e adresirati prvih {\eng x} bitova ako se koristi ime
-registra za {\eng x}-tobitnu verziju {\eng X86} arhitekture. Naravno, ovo vazhi samo
+je zbog toga shto je moguc1e adresirati prvih {\eng x} bitova ako se koristi
+ime
+registra za {\eng x}-tobitnu verziju {\eng X86} arhitekture. Naravno, ovo vazhi
+samo
ukoliko je duzhina registra vec1a ili jednaka duzhini registra chiju notaciju
koristimo.\\
@@ -292,7 +297,8 @@ Specifichna uloga segmentnih registara:
\medskip
Realni mod je stanje procesora u kojem nam je dozvoljeno adresiranje samo prvih
-20 megabajta memorije. Prelazak iz realnog u zastic1eni mod postizhe se dalekim skokom
+20 megabajta memorije. Prelazak iz realnog u zastic1eni mod postizhe se dalekim
+skokom
{\eng "far jump"}.
%{\eng\url{https://wiki.osdev.org/Real_Mode}}
@@ -308,7 +314,8 @@ shto je to hardverski predvidjeno.
\section{{\eng Protected mode}}
\medskip
-Zashtic1en mod je stanje procesora u kojem procesor ima pun pristup celom opsegu
+Zashtic1en mod je stanje procesora u kojem procesor ima pun pristup celom
+opsegu
memorije za razliku od realnog moda.
%{\eng\url{https://wiki.osdev.org/Protected_Mode}}
@@ -367,7 +374,8 @@ Jedini programi sa ove liste koji nije kreirao {\eng GNU} su {\eng QEMU}
virtualna mashina, {\eng git} i {\eng NeoVim}.\\
Operativni sistem korish\/c1en u izradi ovog projekta je {\eng Artix Linux}.
-{\eng Artix Linux} je {\eng GNU/Linux} distribucija bazirana na {\eng Arch Linux}-u.
+{\eng Artix Linux} je {\eng GNU/Linux} distribucija bazirana na {\eng Arch
+Linux}-u.
Vec1ina korish\/c1enih programa je vec1 kompajlovana i spremna za upotrebu i
nalazi se u oficijalnim repozitorijima.\\
@@ -394,17 +402,20 @@ kreiranje biblioteka ({\eng ar}).
\smallskip
Iz razloga shto se ne koristi standardna biblioteka vec1 samostalno napisana
-specificno za ovaj projekat, potrebno je manuelno kompajlovati {\eng GNU Binutils}.
+specificno za ovaj projekat, potrebno je manuelno kompajlovati {\eng GNU
+Binutils}.
Medjutim, postoji moguc1nost korish\/c1enja vec1 spremnog paketa koji se za
distribucije bazirane na {\eng Arch Linux}-u mozhe nac1i na stanici
-{\eng\url{https://aur.archlinux.org/packages/i686-elf-binutils/}}. Pojedine distribucije
+{\eng\url{https://aur.archlinux.org/packages/i686-elf-binutils/}}. Pojedine
+distribucije
vec1 imaju ovaj paket kompajlovan, ali je preporuka manuelno kompajlovati da bi
se izbegla nekompatibilnost, a i prosto iz razloga shto c1e nakon formiranja
nashe {\eng C} biblioteke biti neophodno kompajlovati ovaj program za svaki
sistem posebno.
Za one koje zhele sami da kompajluju dat je deo instrukcija koji se razlikuje
-od uput\/stva datog na zvanichnom sajtu a tiche se konfigurisanja pre kompilacije.\\
+od uput\/stva datog na zvanichnom sajtu a tiche se konfigurisanja pre
+kompilacije.\\
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make]{include/00.alati/binutils/binutils1}\srb\end{minipage}
@@ -415,7 +426,8 @@ Nakon dodavanja nashe {\eng C} biblioteke potrebno je kompajlovati {\eng GNU
Binutils} tako da tu biblioteku i koristi prilikom kompajlovanja nasheg
operativnog sistema.
-\textbf{Napomena:} Potrebno je postaviti {\eng \$SYSROOT} na lokaciju gde se biblioteka nalazi.
+\textbf{Napomena:} Potrebno je postaviti {\eng \$SYSROOT} na lokaciju gde se
+biblioteka nalazi.
To je moguc1e uraditi na sledec1i nachin:\\
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=make]{include/00.alati/binutils/exportsysroot}\srb\end{minipage}
@@ -441,7 +453,8 @@ Ovaj program je korish\/c1en za kompajlovanje dela koda napisanog u asembleru.
\subsection{{\eng GNU Linker}}
\smallskip
-Ovaj program je korish\/c1en za linkovanje, tj. "spajanje" svog komapjlovanog koda
+Ovaj program je korish\/c1en za linkovanje, tj. "spajanje" svog komapjlovanog
+koda
u jednu binarnu datoteku tipa {\eng ELF} koja predstavlja kernel.
\section{{\eng GCC}}
@@ -491,7 +504,8 @@ zajedno sa uput\/stvom za kompajlovanje i korish\/c1enje.
{\eng QEMU} je virtualna mashina u kojoj c1e jezgro biti testirano i
prikazano zarad praktichnih razloga. {\eng QEMU} je odabran za ovaj projekat
jer za razliku od drugih virutalnih mashina poseduje {\eng cli (command line
-interface)} iz koga se lako mozhe pozivati iz skripti kao shto su {\eng Makefile}-ovi.
+interface)} iz koga se lako mozhe pozivati iz skripti kao shto su {\eng
+Makefile}-ovi.
\section{{\eng Make}}
\medskip
@@ -600,59 +614,54 @@ trenutnu verziju rada, s obrzirom na to da bi rad bio nepotrebno duzhi.
U prvom delu postavljamo promenljive na vrednosti koje su odredjene {\eng
Multiboot2} standardom da bi {\eng bootloader} prepoznao nashe jezgro.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo1}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot1.s}\srb\end{minipage}
Nakon toga postavljamo prvih 512 bitova na prethodno pomenute vrednosti ali
tako da za svaku promenljivu ostavljamo 32 bita prostora.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo2}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot2.s}\srb\end{minipage}
Postavljamo funkcije koje cemo definisati u ovom fajlu za globalne da bi smo
kasnije mogli da ih pozivamo iz {\eng C}-a.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo3}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot3.s}\srb\end{minipage}
Funkcija za uchitavanje {\eng gdt} tabele.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo4}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot4.s}\srb\end{minipage}
Funkcija za uchitavanje {\eng idt} tabele.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo5}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot5.s}\srb\end{minipage}
Funkcije koje su zaduzene za razmenu informacija preko magistrale za
ulaz/izlaz. Koristi se pri inicijalizaciji {\eng IRQ}-a i korish\/c1enju
tastature.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo6}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo7}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot6.s}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/boot7.s}\srb\end{minipage}
Segmenti za kod i podatke koji su postavljeni u {\eng gdt} tabeli.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo8}\srb\end{minipage}
Definishemo sekciju {\eng bss} u kojoj kreiramo stek i dodeljujemo mu 16
kilobajta.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo9}\srb\end{minipage}
Definishemo pochetnu funkciju {\eng \_start} pozivajuc1i funkciju za
inicijalizaciju {\eng gdt} tabele i "skachemo" na segment koda. Ovaj postupak
ima naziv {\eng "far jump"} jer skachemo van tekuc1eg segmenta.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo10}\srb\end{minipage}
U segmentu koda postavljamo segmentne registre na adresu segmenta podataka.
-Zatim postavljamo {\eng esp} registar na pochetak steka koji smo inicijalizovali
+Zatim postavljamo {\eng esp} registar na pochetak steka koji smo
+inicijalizovali
u {\eng bss} sekciji i predajemo upravljanje {\eng kernel\_main} funkciji.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo11}\srb\end{minipage}
Postavljamo velichinu funkcije {\eng \_start} shto nam kasnije mozhe biti
korisno pri {\eng debug}-ovanju.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=Assembler]{include/01.pocetak/deo12}\srb\end{minipage}
-
\section{Ispis na ekran - {\eng VGA}}
@@ -660,126 +669,134 @@ korisno pri {\eng debug}-ovanju.
{\eng c/vga.c}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo1}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga1.c}\srb\end{minipage}
-Primetimo da u {\eng C}-u koristimo {\eng uintX\_t} promenljive. To je zbog toga
+Primetimo da u {\eng C}-u koristimo {\eng uintX\_t} promenljive. To je zbog
+toga
shto nam je u ovakvom okruzhenju vrlo bitno da pazimo na velichinu koju
zauzimaju promenljive.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo2}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga2.c}\srb\end{minipage}
-4 znachajnija bita oznachavaju boju pozadine, dok ostala 4 bita oznachavaju boju karaktera.
+4 znachajnija bita oznachavaju boju pozadine, dok ostala 4 bita oznachavaju
+boju karaktera.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo3}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga3.c}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo4}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga4.c}\srb\end{minipage}
Na {\eng VGA} izlaz ispisujemo tako shto pochev od adrese {\eng 0xB80000}
pishemo shesnaestobitne vrednosti koje se prevode u karaktere i njihovu boju. 8
-znachajnijih bitova odredjuju boju karaktera dok preostalih 8 bitova oznachavaju
+znachajnijih bitova odredjuju boju karaktera dok preostalih 8 bitova
+oznachavaju
karakter.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo5}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga5.c}\srb\end{minipage}
Funkcija koja ispisuje karakter na monitoru.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo6}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga6.c}\srb\end{minipage}
Fukcija koja pomera sve do sada ispisano za jedan red na dole i oslobadja novi
red kada ponestane mesta na ekranu.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo7}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga7.c}\srb\end{minipage}
-Funkfija koja postavlja brojache kolone i reda na sledec1e, uglavnom prazno, polje na ekranu.
+Funkfija koja postavlja brojache kolone i reda na sledec1e, uglavnom prazno,
+polje na ekranu.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo8}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga8.c}\srb\end{minipage}
Funkfija koja postavlja brojache kolone i reda na proshlo polje na ekranu.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo9}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga9.c}\srb\end{minipage}
Funkcija koja ispisuje jedan karakter na ekran. Proverava da li je potrebno
ispisati novi red umesto karaktera {\eng '$\backslash$n'}, kao i da li je
potrebno osloboditi novi red ukoliko se ekran popunio.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo10}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga10.c}\srb\end{minipage}
Funkcija koja ispisuje niz karaktera na ekran.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo11}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga11.c}\srb\end{minipage}
-Funcija koja ispisuje celobrojnu vrednost na ekran tako shto je prvo pretvori u niz
+Funcija koja ispisuje celobrojnu vrednost na ekran tako shto je prvo pretvori u
+niz
karaktera a zatim iskoristi prethodnu funkciju.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo12}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga12.c}\srb\end{minipage}
Funcija koja ispisuje realnu vrednost na ekran tako shto je prvo pretvori u niz
karaktera a zatim iskoristi funkciju za ispis niza karaktera.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo13}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga13.c}\srb\end{minipage}
-Funkcija koja brishe sve sa ekrana i postavlja brojache kolone i reda na pochetnu poziciju.
+Funkcija koja brishe sve sa ekrana i postavlja brojache kolone i reda na
+pochetnu poziciju.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/deo14}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/02.vga/vga14.c}\srb\end{minipage}
\section{{\eng Global Desctiptor Table}}
\medskip
+{\eng include/source/gdt.h}:
+
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt1.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt2.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt3.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt4.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt5.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt6.h}\srb\end{minipage}
+
{\eng c/gdt.c}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo1}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt1.c}\srb\end{minipage}
Format u kom rachunar prihvata unos pojedinachnih definicija segmenata.
Primetimo {\eng \_\_attribute\_\_((packed))}, na kraju definicije strukture. To
nam oznachava da se nece ostavljati mesta u memoriji izmedju promenljivih
unutar strukture, vec1 c1e se "pakovati" jedna do druge u memoriji.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo2}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt2.c}\srb\end{minipage}
Format koji rachunar prihvata za tabelu svih definicija segmenata.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo3}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt3.c}\srb\end{minipage}
Funcija iz asemblera koja uchitava tabelu segmenata, kreiranu u sledec1ih
nekoliko funcija, u odgovarajuc1i registar. Ovu funciju smo imali priliku
videti u pochetnom fajlu.
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo4}\srb\end{minipage}
-
-
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo5}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt4.c}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo6}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt5.c}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo7}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt6.c}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo8}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/gdt7.c}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/03.gdt/deo9}\srb\end{minipage}
-
%{\eng\url{https://wiki.osdev.org/GDT}}
\section{{\eng Interrupt Desctiptor Table}}
\medskip
-{\eng c/idt.c}:
+{\eng include/source/idt.h}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo1}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo2}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo3}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo4}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo5}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo6}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo7}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo8}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo9}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo10}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo11}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt1.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt2.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt3.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt4.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt5.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt6.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt7.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt8.h}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/idt9.h}\srb\end{minipage}
%{\eng\url{https://wiki.osdev.org/IDT}}
@@ -787,9 +804,15 @@ videti u pochetnom fajlu.
\medskip
{\eng c/idt.c}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo12}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo13}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/04.idt/deo14}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt1.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt2.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt3.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt4.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt5.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt6.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt7.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt8.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/05.irq/idt9.c}\srb\end{minipage}
%{\eng\url{https://wiki.osdev.org/IRQ}}
@@ -800,42 +823,37 @@ videti u pochetnom fajlu.
{\eng c/keyboard.c}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo1}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo2}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo3}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo4}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo5}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo6}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo7}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo8}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo9}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo10}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo11}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo12}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo13}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo14}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo15}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo16}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo17}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo18}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo19}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/deo20}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard1.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard2.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard3.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard4.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard5.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard6.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard7.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard8.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard9.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard10.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard11.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard12.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard13.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard14.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard15.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard16.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard17.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/06.keyboard/keyboard18.c}\srb\end{minipage}
\section{{\eng PIT - Programmable Interval Timer}}
\medskip
{\eng c/timer.c}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo1}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo2}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo3}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo4}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo5}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo6}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo7}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo8}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo9}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/deo10}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer1.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer2.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer3.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer4.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer5.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer6.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/07.pit/timer7.c}\srb\end{minipage}
%{\eng\url{https://wiki.osdev.org/PIT}}
\section{{\eng Heap}}
@@ -845,37 +863,35 @@ videti u pochetnom fajlu.
\cite{book:1412}\\
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo1}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo2}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo3}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo4}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo5}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo6}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo7}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo8}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo9}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo10}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo11}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo12}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo13}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo14}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo15}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo16}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo17}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo18}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo19}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo20}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo21}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo22}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo23}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo24}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo25}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo26}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo27}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo28}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo29}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo30}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/deo31}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap1.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap2.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap3.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap4.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap5.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap6.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap7.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap8.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap9.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap10.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap11.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap12.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap13.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap14.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap15.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap16.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap17.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap18.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap19.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap20.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap21.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap22.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap23.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap24.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap25.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap26.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap27.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap28.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/08.heap/heap29.c}\srb\end{minipage}
%{\eng\url{https://wiki.osdev.org/Heap}}
\section{{\eng Paging}}
@@ -883,38 +899,30 @@ videti u pochetnom fajlu.
{\eng c/paging.c}:
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo1}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo2}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo3}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo4}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo5}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo6}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo7}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo8}\srb\end{minipage}
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/deo9}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging1.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging2.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging3.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging4.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging5.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging6.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging7.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging8.c}\srb\end{minipage}
+\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/09.paging/paging9.c}\srb\end{minipage}
%{\eng\url{https://wiki.osdev.org/Paging}}
-\section{Moj {\eng LIBC}}
+\section{Minimalna \eng{C} biblioteka}
\medskip
%{\eng\url{https://wiki.osdev.org/Creating_a_C_Library}}
-
-{\eng include/asm.h}:
-
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/asm.h}\srb\end{minipage}
+%
+%{\eng include/asm.h}:
+%
+%\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/asm.h}\srb\end{minipage}
{\eng include/errno.h}:
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/errno.h}\srb\end{minipage}
-{\eng include/heap.h}:
-
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/heap.h}\srb\end{minipage}
-
-{\eng include/irq.h}:
-
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C,linerange={1-5,36-40}]{include/10.libc/irq.h}\srb\end{minipage}
-
{\eng include/stdio.h}:
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/stdio.h}\srb\end{minipage}
@@ -931,18 +939,10 @@ videti u pochetnom fajlu.
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/time.h}\srb\end{minipage}
-{\eng include/types.h}:
-
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/types.h}\srb\end{minipage}
-
{\eng include/unistd.h}:
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/unistd.h}\srb\end{minipage}
-{\eng include/vga.h}:
-
-\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/vga.h}\srb\end{minipage}
-
{\eng include/sys/types.h}:
\begin{minipage}{\textwidth}\eng\lstinputlisting[language=C]{include/10.libc/sys/types.h}\srb\end{minipage}