]> wirehaze git hosting - BOS.git/blobdiff - kernel/init/timer.asm

wirehaze git hosting

partial fat12 structs recovered from forum
[BOS.git] / kernel / init / timer.asm
index 29088eb4e685f4f9975d813ce147243d7f3cb230..aa2a335a87ed8ba13198c594c26afaf463b88bc9 100755 (executable)
@@ -9,47 +9,47 @@
 ;-----------------;\r
 ;   variables     ;\r
 ;-----------------;\r
-         timer_wait      dd   0                      ; time to wait\r
-         timer_counter   dd   0, 0                   ; time since BOS started\r
-         call_list       dd   0, 0, 0, 0, 0          ; functions to call\r
+    timer_wait      dd   0                            ; time to wait\r
+    timer_counter   dd   0, 0                         ; time since BOS started\r
+    call_list       dd   0, 0, 0, 0, 0                ; functions to call\r
 \r
 \r
 ;---------------------------;\r
 ;      Timer IRQ(0)         ;\r
 ;---------------------------;\r
 timer:\r
-         add     dword [timer_counter], 1            ; it's just a 64-bit\r
-         adc     dword [timer_counter+4], 0          ; counter since boot.\r
-\r
-         cmp     [timer_wait], 0                     ; "delay" countdown.\r
-         je      .test1\r
-         dec     [timer_wait]\r
-\r
-     .test1:                                         ; checks for calls to\r
-         cmp     [call_list], dword 0                ; do before we quit.\r
-         je      .test2\r
-         call    dword [call_list]\r
-     .test2:\r
-         cmp     [call_list+4], dword 0\r
-         je      .test3\r
-         call    dword [call_list+4]\r
-     .test3:\r
-         cmp     [call_list+8], dword 0\r
-         je      .test4\r
-         call    dword [call_list+8]\r
-     .test4:\r
-         cmp     [call_list+12], dword 0\r
-         je      .test5\r
-         call    dword [call_list+12]\r
-     .test5:\r
-         cmp     [call_list+16], dword 0\r
-         je      .end\r
-         call    dword [call_list+16]\r
-\r
-     .end:\r
-         mov     al, 0x20\r
-         out     0x20, al\r
-         ret\r
+        add    dword [timer_counter], 1               ; it's just a 64-bit\r
+        adc    dword [timer_counter+4], 0             ; counter since boot.\r
+\r
+        cmp    [timer_wait], 0                        ; "delay" countdown.\r
+        je     .test1\r
+        dec    [timer_wait]\r
+\r
+    .test1:                                           ; checks for calls to\r
+        cmp    [call_list], dword 0                   ; do before we quit.\r
+        je     .test2\r
+        call   dword [call_list]\r
+    .test2:\r
+        cmp    [call_list+4], dword 0\r
+        je     .test3\r
+        call   dword [call_list+4]\r
+    .test3:\r
+        cmp    [call_list+8], dword 0\r
+        je     .test4\r
+        call   dword [call_list+8]\r
+    .test4:\r
+        cmp    [call_list+12], dword 0\r
+        je     .test5\r
+        call   dword [call_list+12]\r
+    .test5:\r
+        cmp    [call_list+16], dword 0\r
+        je     .end\r
+        call   dword [call_list+16]\r
+\r
+    .end:\r
+        mov    al, 0x20\r
+        out    0x20, al\r
+        ret\r
 \r
 \r
 \r
@@ -59,35 +59,35 @@ timer:
 ;                  out: eax = 0 if OK            ;\r
 ;------------------------------------------------;\r
 add_timercall:\r
-         cmp     [call_list], 0\r
-         jne     .test2\r
-         mov     [call_list], ebx\r
-         jmp     .end\r
-     .error:\r
-         mov     eax, 1\r
-         ret\r
-     .test2:\r
-         cmp     [call_list+4], 0                    ; since i am so lazy\r
-         jne     .test3                              ; and a loop can be\r
-         mov     [call_list+4], ebx                  ; rather complicated\r
-         jmp     .end                                ; for this stuff, i\r
-     .test3:                                         ; check for each one..\r
-         cmp     [call_list+8], 0                    ; after all, it's only 5.\r
-         jne     .test4\r
-         mov     [call_list+8], ebx\r
-         jmp     .end\r
-     .test4:\r
-         cmp     [call_list+12], 0\r
-         jne     .test5\r
-         mov     [call_list+12], ebx\r
-         jmp     .end\r
-     .test5:\r
-         cmp     [call_list+16], 0\r
-         jne     .error\r
-         mov     [call_list+16], ebx\r
-     .end:\r
-         xor     eax, eax\r
-         ret\r
+        cmp    [call_list], 0\r
+        jne    .test2\r
+        mov    [call_list], ebx\r
+        jmp    .end\r
+    .error:\r
+        mov    eax, 1\r
+        ret\r
+    .test2:\r
+        cmp    [call_list+4], 0                       ; since i am so lazy\r
+        jne    .test3                                 ; and a loop can be\r
+        mov    [call_list+4], ebx                     ; rather complicated\r
+        jmp    .end                                   ; for this stuff, i\r
+    .test3:                                           ; check for each one..\r
+        cmp    [call_list+8], 0                       ; after all, it's only 5.\r
+        jne    .test4\r
+        mov    [call_list+8], ebx\r
+        jmp    .end\r
+    .test4:\r
+        cmp    [call_list+12], 0\r
+        jne    .test5\r
+        mov    [call_list+12], ebx\r
+        jmp    .end\r
+    .test5:\r
+        cmp    [call_list+16], 0\r
+        jne    .error\r
+        mov    [call_list+16], ebx\r
+    .end:\r
+        xor    eax, eax\r
+        ret\r
 \r
 \r
 \r
@@ -97,35 +97,35 @@ add_timercall:
 ;                  out: eax = 0 if OK             ;\r
 ;-------------------------------------------------;\r
 remove_timercall:\r
-         cmp     [call_list], ebx\r
-         jne     .test2\r
-         mov     [call_list], dword 0\r
-         jmp     .end\r
-     .error:\r
-         mov     eax, 1\r
-         ret\r
-     .test2:\r
-         cmp     [call_list+4], ebx\r
-         jne     .test3\r
-         mov     [call_list+4], dword 0\r
-         jmp     .end\r
-     .test3:\r
-         cmp     [call_list+8], ebx\r
-         jne     .test4\r
-         mov     [call_list+8], dword 0\r
-         jmp     .end\r
-     .test4:\r
-         cmp     [call_list+12], ebx\r
-         jne     .test5\r
-         mov     [call_list+12], dword 0\r
-         jmp     .end\r
-     .test5:\r
-         cmp     [call_list+16], ebx\r
-         jne     .error\r
-         mov     [call_list+16], dword 0\r
-     .end:\r
-         xor     eax, eax\r
-         ret\r
+        cmp    [call_list], ebx\r
+        jne    .test2\r
+        mov    [call_list], dword 0\r
+        jmp    .end\r
+    .error:\r
+        mov    eax, 1\r
+        ret\r
+    .test2:\r
+        cmp    [call_list+4], ebx\r
+        jne    .test3\r
+        mov    [call_list+4], dword 0\r
+        jmp    .end\r
+    .test3:\r
+        cmp    [call_list+8], ebx\r
+        jne    .test4\r
+        mov    [call_list+8], dword 0\r
+        jmp    .end\r
+    .test4:\r
+        cmp    [call_list+12], ebx\r
+        jne    .test5\r
+        mov    [call_list+12], dword 0\r
+        jmp    .end\r
+    .test5:\r
+        cmp    [call_list+16], ebx\r
+        jne    .error\r
+        mov    [call_list+16], dword 0\r
+    .end:\r
+        xor    eax, eax\r
+        ret\r
 \r
 \r
 \r
@@ -135,11 +135,11 @@ remove_timercall:
 ;           out: nothing                     ;\r
 ;--------------------------------------------;\r
 delay:\r
-         mov     [timer_wait], ecx                   ; mov value to "timer"\r
-     .loop:\r
-         cmp     [timer_wait], 0\r
-         jne     .loop\r
-         ret\r
+        mov    [timer_wait], ecx                      ; mov value to "timer"\r
+    .loop:\r
+        cmp    [timer_wait], 0\r
+        jne    .loop\r
+        ret\r
 \r
 \r
 \r
@@ -153,9 +153,9 @@ delay:
 ;           out: ecx = pointer to counter    ;\r
 ;--------------------------------------------;\r
 active_delay:\r
-         mov     [timer_wait], ecx                   ; mov value to "timer"\r
-         mov     ecx, timer_wait                     ; let caller check value\r
-         ret\r
+        mov    [timer_wait], ecx                      ; mov value to "timer"\r
+        mov    ecx, timer_wait                        ; let caller check value\r
+        ret\r
 \r
 \r
 \r
@@ -163,12 +163,12 @@ active_delay:
 ;     set PIT to 100Hz         ;\r
 ;------------------------------;\r
 set_pit_freq:\r
-         push    eax\r
-         mov     al, 0x34                            ; set to 100Hz, 0x34 = 00110100b\r
-         out     0x43, al\r
-         mov     al, 0x9B                            ; lsb    1193180 / 1193\r
-         out     0x40, al\r
-         mov     al, 0x2E                            ; msb\r
-         out     0x40, al\r
-         pop     eax\r
-         ret
\ No newline at end of file
+        push   eax\r
+        mov    al, 0x34                               ; set to 100Hz, 0x34 = 00110100b\r
+        out    0x43, al\r
+        mov    al, 0x9B                               ; lsb    1193180 / 1193\r
+        out    0x40, al\r
+        mov    al, 0x2E                               ; msb\r
+        out    0x40, al\r
+        pop    eax\r
+        ret
\ No newline at end of file