Rev 7859 | Rev 8213 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7859 | Rev 7863 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | jmp still |
37 | jmp still |
38 | @@: |
38 | @@: |
39 | or eax,-1 |
39 | or eax,-1 |
40 | mcall |
40 | mcall |
Line 41... | Line 41... | ||
41 | 41 | ||
42 | make_timestamp: |
42 | get_tickcount: |
43 | push ebx |
43 | push ebx |
44 | mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
44 | mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
45 | imul eax,10 |
45 | imul eax,10 |
46 | pop ebx |
46 | pop ebx |
Line -... | Line 47... | ||
- | 47 | retn |
|
- | 48 | ||
- | 49 | macro BCDtoHEX al { |
|
- | 50 | aam 16 |
|
- | 51 | aad 10 } |
|
- | 52 | ||
- | 53 | make_timestamp: |
|
- | 54 | mcall SF_GET_SYS_DATE ; $00SSMMHH (BCD) |
|
- | 55 | mov edx,eax |
|
- | 56 | shr eax,16 |
|
- | 57 | BCDtoHEX al |
|
- | 58 | push eax ; SECONDS |
|
- | 59 | mov al,dh |
|
- | 60 | BCDtoHEX al |
|
- | 61 | push eax ; MINUTES |
|
- | 62 | mov al,dl |
|
- | 63 | BCDtoHEX al |
|
- | 64 | push eax ; HOURS |
|
- | 65 | mcall SF_GET_SYS_DATE ; $00DDMMYY (BCD) |
|
- | 66 | mov edx,eax |
|
- | 67 | shr eax,16 |
|
- | 68 | BCDtoHEX al |
|
- | 69 | push eax ; DAY |
|
- | 70 | mov al,dl |
|
- | 71 | BCDtoHEX al |
|
- | 72 | add eax,2000 |
|
- | 73 | push eax ; YEAR |
|
- | 74 | mov ecx,eax |
|
- | 75 | mov al,dh |
|
- | 76 | BCDtoHEX al |
|
- | 77 | push eax ; MONTH |
|
- | 78 | ; ecx: YEAR |
|
- | 79 | ; stack: MONTH, YEAR, DAY, HOURS, MINUTES, SECONDS, retaddr |
|
- | 80 | mov eax,ecx |
|
- | 81 | sub eax,1970 |
|
- | 82 | mov ebx,365 |
|
- | 83 | mul ebx |
|
- | 84 | mov ebp,eax |
|
- | 85 | mov eax,ecx |
|
- | 86 | sub eax,1969 |
|
- | 87 | shr eax,2 |
|
- | 88 | add ebp,eax |
|
- | 89 | mov eax,ecx |
|
- | 90 | xor edx,edx |
|
- | 91 | sub eax,1901 |
|
- | 92 | mov ebx,100 |
|
- | 93 | div ebx |
|
- | 94 | sub ebp,eax |
|
- | 95 | mov eax,ecx |
|
- | 96 | xor edx,edx |
|
- | 97 | sub eax,1601 |
|
- | 98 | mov ebx,400 |
|
- | 99 | div ebx |
|
- | 100 | add ebp,eax |
|
- | 101 | pop ecx |
|
- | 102 | ; ecx: MONTH |
|
- | 103 | ; stack: YEAR, DAY, HOURS, MINUTES, SECONDS, retaddr |
|
- | 104 | mov eax,ecx |
|
- | 105 | dec eax |
|
- | 106 | mov ebx,30 |
|
- | 107 | mul ebx |
|
- | 108 | add ebp,eax |
|
- | 109 | cmp ecx,8 |
|
- | 110 | jbe months_correction |
|
- | 111 | mov eax,ecx |
|
- | 112 | sub eax,7 |
|
- | 113 | shr eax,1 |
|
- | 114 | add ebp,eax |
|
- | 115 | mov ecx,8 |
|
- | 116 | months_correction: |
|
- | 117 | mov eax,ecx |
|
- | 118 | shr eax,1 |
|
- | 119 | add ebp,eax |
|
- | 120 | cmp ecx,2 |
|
- | 121 | pop ecx |
|
- | 122 | ; ecx: YEAR |
|
- | 123 | ; stack: DAY, HOURS, MINUTES, SECONDS, retaddr |
|
- | 124 | jbe day_correction_ok |
|
- | 125 | sub ebp,2 |
|
- | 126 | test ecx,11b |
|
- | 127 | jnz day_correction_ok |
|
- | 128 | xor edx,edx |
|
- | 129 | mov eax,ecx |
|
- | 130 | mov ebx,100 |
|
- | 131 | div ebx |
|
- | 132 | or edx,edx |
|
- | 133 | jnz day_correction |
|
- | 134 | mov eax,ecx |
|
- | 135 | mov ebx,400 |
|
- | 136 | div ebx |
|
- | 137 | or edx,edx |
|
- | 138 | jnz day_correction_ok |
|
- | 139 | day_correction: |
|
- | 140 | inc ebp |
|
- | 141 | day_correction_ok: |
|
- | 142 | pop eax |
|
- | 143 | ; eax: DAY |
|
- | 144 | ; stack: HOURS, MINUTES, SECONDS, retaddr |
|
- | 145 | dec eax |
|
- | 146 | add eax,ebp |
|
- | 147 | mov ebx,24 |
|
- | 148 | mul ebx |
|
- | 149 | pop ecx |
|
- | 150 | ; ecx: HOURS |
|
- | 151 | ; stack: MINUTES, SECONDS, retaddr |
|
- | 152 | add eax,ecx |
|
- | 153 | mov ebx,60 |
|
- | 154 | mul ebx |
|
- | 155 | pop ecx |
|
- | 156 | ; ecx: MINUTES |
|
- | 157 | ; stack: SECONDS, retaddr |
|
- | 158 | add eax,ecx |
|
- | 159 | mov ebx,60 |
|
- | 160 | mul ebx |
|
- | 161 | pop ecx |
|
- | 162 | ; ecx: SECONDS |
|
- | 163 | ; stack: retaddr |
|
- | 164 | add eax,ecx |
|
47 | retn |
165 | retn |
Line 48... | Line 166... | ||
48 | 166 | ||
49 | symbol_dump: |
167 | symbol_dump: |
50 | 168 |