/kernel/trunk/docs/sysfuncr.txt |
---|
2198,12 → 2198,13 |
* eax = 47 - ®¬¥à äãªæ¨¨ |
* ebx = ¯ à ¬¥âàë ¯à¥®¡à §®¢ ¨ï ç¨á« ¢ ⥪áâ: |
* bl = 0 - ecx ᮤ¥à¦¨â ç¨á«® |
* bl = 1 - ecx ᮤ¥à¦¨â 㪠§ ⥫ì dword-ç¨á«® |
* bl = 1 - ecx ᮤ¥à¦¨â 㪠§ ⥫ì dword-ç¨á«®, «¨¡® qword-ç¨á«® |
* bh = 0 - ®â®¡à ¦ âì ¢ ¤¥áïâ¨ç®© á¨á⥬¥ áç¨á«¥¨ï |
* bh = 1 - ®â®¡à ¦ âì ¢ è¥áâ ¤æ â¥à¨ç®© á¨á⥬¥ |
* bh = 2 - ®â®¡à ¦ âì ¢ ¤¢®¨ç®© á¨á⥬¥ |
* ¡¨âë 16-21 = ᪮«ìª® æ¨äà ®â®¡à ¦ âì |
* ¡¨âë 22-30 § १¥à¢¨à®¢ ë ¨ ¤®«¦ë ¡ëâì ãáâ ®¢«¥ë ¢ 0 |
* ¡¨âë 22-29 § १¥à¢¨à®¢ ë ¨ ¤®«¦ë ¡ëâì ãáâ ®¢«¥ë ¢ 0 |
* ¡¨â 30 - ãáâ ®¢«¥ ¢ 1, ¥á«¨ âॡã¥âáï ¢ë¢®¤ qword (64-¡¨â®£®) ç¨á« |
* ¡¨â 31 - ãáâ ®¢«¥ ¢ 1, ¥á«¨ âॡã¥âáï ¢ë¢®¤ ç¨á« ¡¥§ ¯ãáâëå ã«¥© ¢ áâ àè¨å à §àï¤ å |
* ecx = ç¨á«® (¯à¨ bl=0) ¨«¨ 㪠§ ⥫ì (¯à¨ bl=1) |
* edx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
/kernel/trunk/docs/sysfuncs.txt |
---|
2169,12 → 2169,13 |
* eax = 47 - function number |
* ebx = parameters of conversion number to text: |
* bl = 0 - ecx contains number |
* bl = 1 - ecx contains pointer to dword-number |
* bl = 1 - ecx contains pointer to dword-number, or qword-number |
* bh = 0 - display in decimal number system |
* bh = 1 - display in hexadecimal system |
* bh = 2 - display in binary system |
* bits 16-21 = how many digits to display |
* bits 22-30 reserved and must be set to 0 |
* bits 22-29 reserved and must be set to 0 |
* bit 30 - set in 1, if the output of qword (64-bites) number |
* bit 31 - set in 1, if the output of number without empty zero in high bits is required |
* ecx = number (if bl=0) or pointer (if bl=1) |
* edx = [coordinate on axis x]*65536 + [coordinate on axis y] |
/kernel/trunk/kernel.asm |
---|
1329,7 → 1329,7 |
xor edi, edi |
display_number_force: |
push eax |
and eax,0x7fffffff |
and eax,0x3fffffff |
cmp eax,0xffff ; length > 0 ? |
pop eax |
jge cont_displ |
1336,7 → 1336,7 |
ret |
cont_displ: |
push eax |
and eax,0x7fffffff |
and eax,0x3fffffff |
cmp eax,61*0x10000 ; length <= 60 ? |
pop eax |
jb cont_displ2 |
1347,6 → 1347,9 |
cmp al,1 ; ecx is a pointer ? |
jne displnl1 |
mov ebp,ebx |
add ebp,4 |
mov ebp,[ebp+std_application_base_address] |
mov ebx,[ebx+std_application_base_address] |
displnl1: |
sub esp,64 |
1354,7 → 1357,7 |
cmp ah,0 ; DECIMAL |
jne no_display_desnum |
shr eax,16 |
and eax,0x803f |
and eax,0xC03f |
; and eax,0x3f |
push eax |
and eax,0x3f |
1365,6 → 1368,7 |
mov ebx,10 |
d_desnum: |
xor edx,edx |
call division_64_bits |
div ebx |
add dl,48 |
mov [edi],dl |
1381,7 → 1385,7 |
cmp ah,0x01 ; HEXADECIMAL |
jne no_display_hexnum |
shr eax,16 |
and eax,0x803f |
and eax,0xC03f |
; and eax,0x3f |
push eax |
and eax,0x3f |
1392,6 → 1396,7 |
mov ebx,16 |
d_hexnum: |
xor edx,edx |
call division_64_bits |
div ebx |
add edx,hexletters |
mov dl,[edx] |
1409,7 → 1414,7 |
cmp ah,0x02 ; BINARY |
jne no_display_binnum |
shr eax,16 |
and eax,0x803f |
and eax,0xC03f |
; and eax,0x3f |
push eax |
and eax,0x3f |
1420,6 → 1425,7 |
mov ebx,2 |
d_binnum: |
xor edx,edx |
call division_64_bits |
div ebx |
add dl,48 |
mov [edi],dl |
1453,8 → 1459,17 |
and eax,0x3f |
ret |
division_64_bits: |
test [esp+1+4],byte 0x40 |
jz .continue |
push eax |
mov eax,ebp |
div ebx |
mov ebp,eax |
pop eax |
.continue: |
ret |
draw_num_text: |
; dtext |