mirror of
https://gitlab.os-k.eu/os-k-team/kvisc.git
synced 2023-08-25 14:05:46 +02:00
84 lines
1.3 KiB
Plaintext
84 lines
1.3 KiB
Plaintext
; The OS/K Team licenses this file to you under the MIT license.
|
|
; See the LICENSE file in the project root for more information.
|
|
|
|
;
|
|
; struct TIME
|
|
; {
|
|
; byte sec; +0 (0-59)
|
|
; byte min; +1 (0-59)
|
|
; byte hour; +2 (0-23)
|
|
; byte mday; +3 (0-31)
|
|
; byte month; +4 (0-11)
|
|
; byte; +5 (pad)
|
|
; word year; +6 (0-65536)
|
|
; word yday; +8 (0-365)
|
|
; word; +10 (pad)
|
|
; dword; +12 (pad)
|
|
; } 16 bytes
|
|
;
|
|
|
|
;
|
|
; int DaysInYear(int year)
|
|
;
|
|
DaysInYear:
|
|
mov rax, 365
|
|
|
|
; divisible by 4?
|
|
rem rcx, ax0, 4
|
|
jmp.cxnz .end
|
|
|
|
; divisible by 100?
|
|
rem rcx, ax0, 100
|
|
jmp.cxnz .leap
|
|
|
|
; divisible by 400?
|
|
rem rcx, ax0, 400
|
|
jmp.cxnz .end
|
|
|
|
.leap:
|
|
inc rax, 1
|
|
|
|
.end:
|
|
ret
|
|
|
|
;
|
|
; TIME *GetTimeUTC(void)
|
|
;
|
|
GetTimeUTC:
|
|
ytime ax0, ax1, ax2
|
|
mov rdx, .buf
|
|
|
|
; seconds
|
|
rem rcx, ax0, 60
|
|
mov b[rdx], rcx
|
|
|
|
; minutes
|
|
div rcx, ax0, 60
|
|
rem rcx, rcx, 60
|
|
mov b[rdx+1], rcx
|
|
|
|
; hours
|
|
div rcx, ax0, 3600
|
|
rem rcx, rcx, 24
|
|
mov b[rdx+2], rcx
|
|
|
|
; month days
|
|
div rcx, ax0, 3600*24
|
|
mov b[rdx+3], rcx
|
|
|
|
; month
|
|
mov b[rdx+4], ax1
|
|
|
|
; years
|
|
mov w[rdx+6], ax2
|
|
|
|
;
|
|
; ydays (TODO)
|
|
;
|
|
|
|
mov rax, .buf
|
|
ret
|
|
|
|
.buf = [24]
|
|
|