; 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]