;----------------------------------------------------------;\r
-; BOS kernel Christoffer Bubach, 2003-2005. ;\r
+; BOS kernel Christoffer Bubach, 2003-2005. ;\r
;----------------------------------------------------------;\r
-; ;\r
-; set/modify IDT entries ;\r
-; ;\r
+; ;\r
+; set/modify IDT entries ;\r
+; ;\r
;----------------------------------------------------------;\r
\r
\r
\r
;--------------------------------------------------;\r
-; set up IDT ;\r
+; set up IDT ;\r
; in: edi = pointer to "unhandled int"-function. ;\r
;--------------------------------------------------;\r
init_idt:\r
\r
\r
;--------------------------------------;\r
-; modify IDT, set any int ;\r
-; in: cl = int number ;\r
-; edi = int function pointer ;\r
+; modify IDT, set any int ;\r
+; in: cl = int number ;\r
+; edi = int function pointer ;\r
;--------------------------------------;\r
set_int:\r
push eax\r
mov al, 8 ; 8 bytes for each int\r
mul cl ; cl * al = ax\r
movzx ecx, ax ; ecx = offset in IDT (1/2 for dword list)\r
- mov [(idt_list+ecx/2)], edi ; add new int to idt entry list\r
+ ;;mov [(idt_list+ecx/2)], edi ; add new int to idt entry list\r
+ mov dword [(idt_list+ecx)], edi ; add new int to idt entry list\r
\r
mov eax, edi\r
mov [(0x6c00+ecx)], ax\r
\r
\r
;------------------------------------------------;\r
-; get int address ;\r
-; in: cl = int number ;\r
-; out: esi = address or 0 if none present ;\r
+; get int address ;\r
+; in: cl = int number ;\r
+; out: esi = address or 0 if none present ;\r
;------------------------------------------------;\r
get_int:\r
push eax\r
\r
\r
;----------------------------------------;\r
-; sets ints from list ;\r
-; in: esi = pointer to int list ;\r
+; sets ints from list ;\r
+; in: esi = pointer to int list ;\r
;----------------------------------------;\r
set_idt_list:\r
push eax\r
\r
;------------------------------;\r
; list of idt entries. ;\r
-; 0 = not handled ;\r
+; 0 = not handled ;\r
;------------------------------;\r
idt_list: dd isr00\r
dd isr01\r