\r
bos_init:\r
\r
- ;----------------------;\r
- ; we are in pmode.. ;\r
- ;----------------------;\r
- mov bx, 0x0193\r
- call setcursor\r
- mov esi, pmode_load\r
- mov bl, 0x07\r
- call print\r
-\r
- mov bx, 0x01C5\r
- call setcursor\r
- mov esi, pmode_load_ok\r
- mov bl, 0x02\r
- call print\r
-\r
- ;----------------------;\r
- ; kernel loaded.. ;\r
- ;----------------------;\r
- mov bx, 0x01E3\r
- call setcursor\r
- mov esi, kernel_load\r
- mov bl, 0x07\r
- call print\r
-\r
- mov bx, 0x0215\r
- call setcursor\r
- mov esi, kernel_load_ok\r
- mov bl, 0x02\r
- call print\r
-\r
- ;----------------;\r
- ; remap PICs ;\r
- ;----------------;\r
- mov cl, 0x20 ; PIC 1, irq0-irq7 -> int 0x20-27.\r
- mov ch, 0x28 ; PIC 2, irq8-irq15 -> int 0x28-30.\r
- call remap_pics\r
- call disable_irqs\r
-\r
- mov bx, 0x0233\r
- call setcursor\r
- mov esi, pic_irq\r
- mov bl, 0x07\r
- call print\r
-\r
- mov bx, 0x0265\r
- call setcursor\r
- mov esi, pic_irq_ok\r
- mov bl, 0x02\r
- call print\r
-\r
- ;--------------;\r
- ; setup IDT ;\r
- ;--------------;\r
- mov edi, u_isr ; isr.inc\r
- call init_idt ; idt.inc\r
- mov esi, idt_list ; idt.inc\r
- call set_idt_list ; idt.inc\r
-\r
- sti ; Interrupts back..\r
-\r
- mov bx, 0x0283\r
- call setcursor\r
- mov esi, idt_mess\r
- mov bl, 0x07\r
- call print\r
-\r
- mov bx, 0x02B5\r
- call setcursor\r
- mov esi, idt_ok\r
- mov bl, 0x02\r
- call print\r
-\r
-\r
- ;---------------------------------------------;\r
- ; enable IRQs (one after one as i code it) ;\r
- ;---------------------------------------------;\r
- mov cl, 1\r
- call enable_irq ; Enable IRQ 1.\r
-\r
- mov bx, 0x02D3\r
- call setcursor\r
- mov esi, kbd_load\r
- mov bl, 0x07\r
- call print\r
-\r
- mov bx, 0x0305\r
- call setcursor\r
- mov esi, kbd_ok\r
- mov bl, 0x02\r
- call print\r
-\r
- ;------------------------------------;\r
- ; get CMOS data, set PIT to 100Hz ;\r
- ; and start timer. ;\r
- ;------------------------------------;\r
- call get_cmos_data ; cmos.inc\r
- call set_pit_freq ; timer.inc\r
- mov cl, 0\r
- call enable_irq ; Enable IRQ 0.\r
-\r
- ;-------------------;\r
- ; init simple MM ;\r
- ;-------------------;\r
- mov ebx, 0x100000 ; address of first free\r
- mov ecx, [ram_amount] ; RAM. everything before\r
- call init_mem ; that is reserved.\r
-\r
- ;--------------------;\r
- ; init fdc driver ;\r
- ;--------------------;\r
- call fdc_init ; fdc.inc\r
-\r
-\r
- ;-------------------------;\r
- ; return to kernel.asm ;\r
- ;-------------------------;\r
- ret
\ No newline at end of file
+ ;----------------------;\r
+ ; we are in pmode.. ;\r
+ ;----------------------;\r
+ mov bx, 0x0193\r
+ call setcursor\r
+ mov esi, pmode_load\r
+ mov bl, 0x07\r
+ call print\r
+\r
+ mov bx, 0x01C5\r
+ call setcursor\r
+ mov esi, pmode_load_ok\r
+ mov bl, 0x02\r
+ call print\r
+\r
+ ;----------------------;\r
+ ; kernel loaded.. ;\r
+ ;----------------------;\r
+ mov bx, 0x01E3\r
+ call setcursor\r
+ mov esi, kernel_load\r
+ mov bl, 0x07\r
+ call print\r
+\r
+ mov bx, 0x0215\r
+ call setcursor\r
+ mov esi, kernel_load_ok\r
+ mov bl, 0x02\r
+ call print\r
+\r
+ ;----------------;\r
+ ; remap PICs ;\r
+ ;----------------;\r
+ mov cl, 0x20 ; PIC 1, irq0-irq7 -> int 0x20-27.\r
+ mov ch, 0x28 ; PIC 2, irq8-irq15 -> int 0x28-30.\r
+ call remap_pics\r
+ call disable_irqs\r
+\r
+ mov bx, 0x0233\r
+ call setcursor\r
+ mov esi, pic_irq\r
+ mov bl, 0x07\r
+ call print\r
+\r
+ mov bx, 0x0265\r
+ call setcursor\r
+ mov esi, pic_irq_ok\r
+ mov bl, 0x02\r
+ call print\r
+\r
+ ;--------------;\r
+ ; setup IDT ;\r
+ ;--------------;\r
+ mov esi, u_isr ; isr.inc\r
+ call init_idt ; idt.inc\r
+ mov esi, idt_list ; idt.inc\r
+ call set_idt_list ; idt.inc\r
+\r
+ sti ; Interrupts back.\r
+\r
+ mov bx, 0x0283\r
+ call setcursor\r
+ mov esi, idt_mess\r
+ mov bl, 0x07\r
+ call print\r
+\r
+ mov bx, 0x02B5\r
+ call setcursor\r
+ mov esi, idt_ok\r
+ mov bl, 0x02\r
+ call print\r
+\r
+\r
+ ;---------------------------------------------;\r
+ ; enable IRQs (one after one as i code it) ;\r
+ ;---------------------------------------------;\r
+ mov cl, 1\r
+ call enable_irq ; Enable IRQ 1.\r
+\r
+ mov bx, 0x02D3\r
+ call setcursor\r
+ mov esi, kbd_load\r
+ mov bl, 0x07\r
+ call print\r
+\r
+ mov bx, 0x0305\r
+ call setcursor\r
+ mov esi, kbd_ok\r
+ mov bl, 0x02\r
+ call print\r
+\r
+ ;------------------------------------;\r
+ ; get CMOS data, set PIT to 100Hz ;\r
+ ; and start timer. ;\r
+ ;------------------------------------;\r
+ call get_cmos_data ; cmos.inc\r
+ call set_pit_freq ; timer.inc\r
+ mov cl, 0\r
+ call enable_irq ; Enable IRQ 0.\r
+\r
+ ;-------------------;\r
+ ; init simple MM ;\r
+ ;-------------------;\r
+ mov ebx, 0x100000 ; address of first free\r
+ mov ecx, [ram_amount] ; RAM. everything before\r
+ call init_mem ; that is reserved.\r
+\r
+ ;--------------------;\r
+ ; init fdc driver ;\r
+ ;--------------------;\r
+ call fdc_init ; fdc.inc\r
+\r
+\r
+ ;-------------------------;\r
+ ; return to kernel.asm ;\r
+ ;-------------------------;\r
+ ret
\ No newline at end of file