FASM: fix whole system hung if source was "dd %t" (by Prohor Nikiforov)

KFM: buildin buttons.bmp
CMM: update libs

git-svn-id: svn://kolibrios.org@7863 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
2020-05-04 23:50:41 +00:00
parent 6aac7a3d5a
commit dad5229ccd
16 changed files with 191 additions and 106 deletions

View File

@@ -252,15 +252,15 @@ draw_window:
mcallb SF_DRAW_TEXT,ebx,ecx,s_debug
;MAGIC1 = 6*(text.line_size-1)+14 ;MAGIC???? MAGIC??????????? GO FYSLF.
;mpack ebx,MAGIC1+6,1+ 14/2-3+ 14*0
;mov esi,[PROCESS_INFO.client_box.width]
;sub esi,MAGIC1*2+6+3
;mov eax,esi
;mov cl,6
;div cl
;cmp al,MAX_PATH
;jbe @f
;mov al,MAX_PATH
;mpack ebx,MAGIC1+6,1+ 14/2-3+ 14*0
;mov esi,[PROCESS_INFO.client_box.width]
;sub esi,MAGIC1*2+6+3
;mov eax,esi
;mov cl,6
;div cl
;cmp al,MAX_PATH
;jbe @f
;mov al,MAX_PATH
;@@:
movzx esi,al
@@ -452,7 +452,7 @@ CUI_START:
call init_memory
call make_timestamp
call get_tickcount
mov [start_time],eax
call preprocessor
@@ -470,7 +470,7 @@ CUI_START:
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

View File

@@ -39,13 +39,131 @@ exit_program:
or eax,-1
mcall
make_timestamp:
get_tickcount:
push ebx
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
imul eax,10
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