Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7862 → Rev 7863

/programs/develop/fasm/1.73/fasm.asm
452,7 → 452,7
call init_memory
call make_timestamp
call get_tickcount
mov [start_time],eax
call preprocessor
470,7 → 470,7
call display_number
mov esi,_passes_suffix
call display_string
call make_timestamp
call get_tickcount
sub eax,[start_time]
xor edx,edx
mov ebx,100
/programs/develop/fasm/1.73/system.inc
39,7 → 39,7
or eax,-1
mcall
 
make_timestamp:
get_tickcount:
push ebx
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
imul eax,10
46,6 → 46,124
pop ebx
retn
 
macro BCDtoHEX al {
aam 16
aad 10 }
 
make_timestamp:
mcall SF_GET_SYS_DATE ; $00SSMMHH (BCD)
mov edx,eax
shr eax,16
BCDtoHEX al
push eax ; SECONDS
mov al,dh
BCDtoHEX al
push eax ; MINUTES
mov al,dl
BCDtoHEX al
push eax ; HOURS
mcall SF_GET_SYS_DATE ; $00DDMMYY (BCD)
mov edx,eax
shr eax,16
BCDtoHEX al
push eax ; DAY
mov al,dl
BCDtoHEX al
add eax,2000
push eax ; YEAR
mov ecx,eax
mov al,dh
BCDtoHEX al
push eax ; MONTH
; ecx: YEAR
; stack: MONTH, YEAR, DAY, HOURS, MINUTES, SECONDS, retaddr
mov eax,ecx
sub eax,1970
mov ebx,365
mul ebx
mov ebp,eax
mov eax,ecx
sub eax,1969
shr eax,2
add ebp,eax
mov eax,ecx
xor edx,edx
sub eax,1901
mov ebx,100
div ebx
sub ebp,eax
mov eax,ecx
xor edx,edx
sub eax,1601
mov ebx,400
div ebx
add ebp,eax
pop ecx
; ecx: MONTH
; stack: YEAR, DAY, HOURS, MINUTES, SECONDS, retaddr
mov eax,ecx
dec eax
mov ebx,30
mul ebx
add ebp,eax
cmp ecx,8
jbe months_correction
mov eax,ecx
sub eax,7
shr eax,1
add ebp,eax
mov ecx,8
months_correction:
mov eax,ecx
shr eax,1
add ebp,eax
cmp ecx,2
pop ecx
; ecx: YEAR
; stack: DAY, HOURS, MINUTES, SECONDS, retaddr
jbe day_correction_ok
sub ebp,2
test ecx,11b
jnz day_correction_ok
xor edx,edx
mov eax,ecx
mov ebx,100
div ebx
or edx,edx
jnz day_correction
mov eax,ecx
mov ebx,400
div ebx
or edx,edx
jnz day_correction_ok
day_correction:
inc ebp
day_correction_ok:
pop eax
; eax: DAY
; stack: HOURS, MINUTES, SECONDS, retaddr
dec eax
add eax,ebp
mov ebx,24
mul ebx
pop ecx
; ecx: HOURS
; stack: MINUTES, SECONDS, retaddr
add eax,ecx
mov ebx,60
mul ebx
pop ecx
; ecx: MINUTES
; stack: SECONDS, retaddr
add eax,ecx
mov ebx,60
mul ebx
pop ecx
; ecx: SECONDS
; stack: retaddr
add eax,ecx
retn
 
symbol_dump:
 
push edi