/kernel/branches/gfx_kernel/blkdev/rd.inc |
---|
1788,6 → 1788,7 |
sub ebx, edx |
mov [edi+28], ebx |
add esp, 20 |
mov [esp+16], ebx |
popad |
xor eax, eax |
ret |
1797,6 → 1798,7 |
sub ebx, edx |
mov [edi+28], ebx |
add esp, 20 |
mov [esp+16], ebx |
popad |
push ERROR_DISK_FULL |
pop eax |
1820,6 → 1822,230 |
loop .read_symbols |
ret |
;---------------------------------------------------------------- |
; |
; fs_RamdiskWrite - LFN variant for writing to sys floppy |
; |
; esi points to filename |
; ebx pointer to 64-bit number = first wanted byte, 0+ |
; may be ebx=0 - start from first byte |
; ecx number of bytes to write, 0+ |
; edx mem location to data |
; |
; ret ebx = bytes written (maybe 0) |
; eax = 0 ok write or other = errormsg |
; |
;-------------------------------------------------------------- |
@@: |
push ERROR_ACCESS_DENIED |
fs_RamdiskWrite.ret0: |
pop eax |
xor ebx, ebx |
ret |
fs_RamdiskWrite: |
cmp byte [esi], 0 |
jz @b |
pushad |
call rd_find_lfn |
jnc .found |
popad |
push ERROR_FILE_NOT_FOUND |
jmp .ret0 |
.found: |
; must not be directory |
test byte [edi+11], 10h |
jz @f |
popad |
push ERROR_ACCESS_DENIED |
jmp .ret0 |
@@: |
; FAT does not support files larger than 4GB |
test ebx, ebx |
jz .l1 |
cmp dword [ebx+4], 0 |
jz @f |
.eof: |
popad |
push ERROR_END_OF_FILE |
jmp .ret0 |
@@: |
mov ebx, [ebx] |
.l1: |
; now edi points to direntry, ebx=start byte to write, |
; ecx=number of bytes to write, edx=data pointer |
call get_time_for_file |
mov [edi+22], ax ; last write time |
call get_date_for_file |
mov [edi+24], ax ; last write date |
mov [edi+18], ax ; last access date |
; extend file if needed |
add ecx, ebx |
jc .eof ; FAT does not support files larger than 4GB |
push 0 ; return value=0 |
cmp ecx, [edi+28] |
jbe .length_ok |
cmp ecx, ebx |
jz .length_ok |
call ramdisk_extend_file |
jnc .length_ok |
; ramdisk_extend_file can return two error codes: FAT table error or disk full. |
; First case is fatal error, in second case we may write some data |
mov [esp], eax |
cmp al, ERROR_DISK_FULL |
jz .disk_full |
pop eax |
mov [esp+28], eax |
popad |
xor ebx, ebx |
ret |
.disk_full: |
; correct number of bytes to write |
mov ecx, [edi+28] |
cmp ecx, ebx |
ja .length_ok |
.ret: |
pop eax |
mov [esp+28], eax ; eax=return value |
sub edx, [esp+20] |
mov [esp+16], edx ; ebx=number of written bytes |
popad |
ret |
.length_ok: |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
movzx edi, word [edi+26] ; starting cluster |
.write_loop: |
sub ebx, 0x200 |
jae .next_cluster |
push ecx |
neg ebx |
cmp ecx, ebx |
jbe @f |
mov ecx, ebx |
@@: |
mov eax, edi |
shl eax, 9 |
add eax, 0x100000+31*512+0x200 |
sub eax, ebx |
mov ebx, eax |
mov eax, edx |
call memmove |
xor ebx, ebx |
add edx, ecx |
sub [esp], ecx |
pop ecx |
jz .ret |
.next_cluster: |
movzx edi, word [edi*2+0x280000] |
jmp .write_loop |
ramdisk_extend_file.zero_size: |
xor eax, eax |
jmp ramdisk_extend_file.start_extend |
; extends file on ramdisk to given size, new data area is filled by 0 |
; in: edi->direntry, ecx=new size |
; out: CF=0 => OK, eax destroyed |
; CF=1 => error, eax=code (ERROR_FAT_TABLE or ERROR_DISK_FULL) |
ramdisk_extend_file: |
push ecx |
; find the last cluster of file |
movzx eax, word [edi+26] ; first cluster |
mov ecx, [edi+28] |
jecxz .zero_size |
@@: |
sub ecx, 0x200 |
jbe @f |
mov eax, [eax*2+0x280000] |
and eax, 0xFFF |
jz .fat_err |
cmp eax, 0xFF8 |
jb @b |
.fat_err: |
pop ecx |
push ERROR_FAT_TABLE |
pop eax |
stc |
ret |
@@: |
push eax |
mov eax, [eax*2+0x280000] |
and eax, 0xFFF |
cmp eax, 0xFF8 |
pop eax |
jb .fat_err |
; set length to full number of sectors and make sure that last sector is zero-padded |
sub [edi+28], ecx |
push eax edi |
mov edi, eax |
shl edi, 9 |
lea edi, [edi+0x100000+31*512+0x200+ecx] |
neg ecx |
xor eax, eax |
rep stosb |
pop edi eax |
.start_extend: |
pop ecx |
; now do extend |
push edx esi |
mov esi, 0x280000+2*2 ; start scan from cluster 2 |
mov edx, 2847 ; number of clusters to scan |
.extend_loop: |
cmp [edi+28], ecx |
jae .extend_done |
; add new sector |
push ecx |
mov ecx, edx |
push edi |
mov edi, esi |
jecxz .disk_full |
push eax |
xor eax, eax |
repnz scasw |
pop eax |
jnz .disk_full |
mov word [edi-2], 0xFFF |
mov esi, edi |
mov edx, ecx |
sub edi, 0x280000 |
shr edi, 1 |
dec edi ; now edi=new cluster |
test eax, eax |
jz .first_cluster |
mov [0x280000+eax*2], di |
jmp @f |
.first_cluster: |
pop eax ; eax->direntry |
push eax |
mov [eax+26], di |
@@: |
push edi |
shl edi, 9 |
add edi, 0x100000+31*512 |
xor eax, eax |
mov ecx, 512/4 |
rep stosd |
pop eax ; eax=new cluster |
pop edi ; edi->direntry |
pop ecx ; ecx=required size |
add dword [edi+28], 0x200 |
jmp .extend_loop |
.extend_done: |
mov [edi+28], ecx |
pop esi edx |
clc |
ret |
.disk_full: |
pop edi ecx |
pop esi edx |
stc |
push ERROR_DISK_FULL |
pop eax |
ret |
fs_RamdiskGetFileInfo: |
cmp byte [esi], 0 |
jnz @f |
/kernel/branches/gfx_kernel/docs/sysfuncr.txt |
---|
29,7 → 29,7 |
(¨£®à¨àã¥âáï ¤«ï á⨫ï Y=2) |
* X = DCBA (¡¨âë) |
* A = 1 - ã ®ª ¥áâì § £®«®¢®ª; ¤«ï á⨫ï Y=3 ¤à¥á áâப¨ |
§ £®«®¢ª § ¤ ¸âáï ¢ edi, ¤«ï ¯à®ç¨å á⨫¥© |
§ £®«®¢ª § ¤ ñâáï ¢ edi, ¤«ï ¯à®ç¨å á⨫¥© |
¨á¯®«ì§ã¥âáï ¯®¤äãªæ¨ï 1 äãªæ¨¨ 71 |
* B = 1 - ª®®à¤¨ âë ¢á¥å £à ä¨ç¥áª¨å ¯à¨¬¨â¨¢®¢ § ¤ îâáï |
®â®á¨â¥«ì® ª«¨¥â᪮© ®¡« á⨠®ª |
89,11 → 89,11 |
* ¨¤ ®ª á⨫ï Y=1: |
* ¯®«®áâìî ®¯à¥¤¥«ï¥âáï ¯à¨«®¦¥¨¥¬ |
* ¨¤ ®ª ⨯ II: |
* à¨áã¥âáï ¢¥èïï à ¬ª è¨à¨®© 1 ¯¨ªá¥«ì "§ ⥸®£®" 梥â |
* à¨áã¥âáï ¢¥èïï à ¬ª è¨à¨®© 1 ¯¨ªá¥«ì "§ â¥ñ®£®" 梥â |
edi (¢á¥ á®áâ ¢«ïî騥 梥â 㬥ìè îâáï ¢ ¤¢ à § ) |
* à¨áã¥âáï ¯à®¬¥¦ãâ®ç ï à ¬ª è¨à¨®© 3 ¯¨ªá¥«ï 梥â edi |
* à¨áã¥âáï ¢ãâà¥ïï à ¬ª è¨à¨®© 1 ¯¨ªá¥«ì |
"§ ⥸®£®" 梥â edi |
"§ â¥ñ®£®" 梥â edi |
* à¨áã¥âáï § £®«®¢®ª - ¯àאַ㣮«ì¨ª á «¥¢ë¬ ¢¥à娬 㣫®¬ (4,4) |
¨ ¯à ¢ë¬ ¨¦¨¬ (xsize-4,min(20,ysize)) 梥â , 㪠§ ®£® ¢ esi |
(á ãç¥â®¬ £à ¤¨¥â ) |
151,7 → 151,7 |
¬¥ç ¨ï: |
* ãé¥áâ¢ã¥â ®¡é¥á¨áâ¥¬ë© ¡ãä¥à ¦ âëå ª« ¢¨è à §¬¥à®¬ 120 ¡ ©â, |
®à£ ¨§®¢ ë© ª ª ®ç¥à¥¤ì. |
* ãé¥áâ¢ã¥â ¥é¸ ®¤¨ ®¡é¥á¨áâ¥¬ë© ¡ãä¥à 120 "£®àïç¨å ª« ¢¨è". |
* ãé¥áâ¢ã¥â ¥éñ ®¤¨ ®¡é¥á¨áâ¥¬ë© ¡ãä¥à 120 "£®àïç¨å ª« ¢¨è". |
* ਠ¢ë§®¢¥ í⮩ äãªæ¨¨ ¯à¨«®¦¥¨¥¬ á ¥ ªâ¨¢ë¬ ®ª®¬ |
áç¨â ¥âáï, çâ® ¡ãä¥à ¦ âëå ª« ¢¨è ¯ãáâ. |
* ® 㬮«ç ¨î íâ äãªæ¨ï ¢®§¢à é ¥â ASCII-ª®¤ë; ¯¥à¥ª«îç¨âìáï |
200,7 → 200,7 |
¬¥ç ¨ï: |
* 뢮¤ïâáï «¨¡® ¯¥à¢ë¥ (esi and 0xFF) ᨬ¢®«®¢, |
«¨¡® ¢á¥ ᨬ¢®«ë ¤® (® ¥ ¢ª«îç ï) § ¢¥àè î饣® ã«ï |
(¤«ï ASCIIZ-áâப) ¢ § ¢¨á¨¬®á⨠®â ⮣®, çâ® ¯à®¨§®©¤¸â à ìè¥. |
(¤«ï ASCIIZ-áâப) ¢ § ¢¨á¨¬®á⨠®â ⮣®, çâ® ¯à®¨§®©¤ñâ à ìè¥. |
* ¥à¢ë© á¨áâ¥¬ë© èà¨äâ áç¨âë¢ ¥âáï ¯à¨ § £à㧪¥ ¨§ ä ©« char.mt, |
¢â®à®© - ¨§ char2.mt. |
* ¡ èà¨äâ ¨¬¥îâ ¢ëá®âã 9 ¯¨ªá¥«¥©, è¨à¨ ¬®®è¨à¨®£® èà¨äâ |
445,7 → 445,7 |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ãªæ¨ï ç « ¯¥à¥à¨á®¢ª¨ 㤠«ï¥â ¢á¥ ®¯à¥¤¥«¸ë¥ |
* ãªæ¨ï ç « ¯¥à¥à¨á®¢ª¨ 㤠«ï¥â ¢á¥ ®¯à¥¤¥«ñë¥ |
äãªæ¨¥© 8 ª®¯ª¨, ¨å á«¥¤ã¥â ®¯à¥¤¥«¨âì ¯®¢â®à®. |
====================================================================== |
489,7 → 489,7 |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ஢¥à®ª ª®à४â®áâì ¥ ¤¥« ¥âáï. áâ ®¢ª ᫨誮¬ ¡®«ìè¨å |
§ 票© ¯à¨¢¥¤¸â ª ⮬ã, çâ® ¢ ä® ¢®©¤ãâ ¤ ë¥ § £à ¨æ¥© |
§ 票© ¯à¨¢¥¤ñâ ª ⮬ã, çâ® ¢ ä® ¢®©¤ãâ ¤ ë¥ § £à ¨æ¥© |
¡ãä¥à ä®®¢®£® ¨§®¡à ¦¥¨ï. §¬¥à ¡ãä¥à = 0x160000-0x10, çâ® |
ᮮ⢥âáâ¢ã¥â ¬ ªá¨¬ «ìë¬ à §¬¥à ¬ 800*600. (800*600*3=0x15F900) |
* «ï ®¡®¢«¥¨ï íªà (¯®á«¥ § ¢¥à襨ï á¥à¨¨ ª®¬ ¤, à ¡®â îé¨å á |
636,7 → 636,7 |
* § âì, ª ª®¥ ®ª® ï¥âáï ªâ¨¢ë¬, ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 7. |
====================================================================== |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 4 - ¯®«ãç¨âì áç¸â稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã. |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 4 - ¯®«ãç¨âì áçñâ稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã. |
====================================================================== |
®¤ ¯ãáâ묨 ⠪⠬¨ ¯®¨¬ ¥âáï ¢à¥¬ï, ¢ ª®â®à®¥ ¯à®æ¥áá®à ¯à®áâ ¨¢ ¥â |
¢ ®¦¨¤ ¨¨ ¯à¥àë¢ ¨ï (¢ ¨áâàãªæ¨¨ hlt). |
645,7 → 645,7 |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 4 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = § 票¥ áç¸â稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã |
* eax = § 票¥ áçñâ稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã |
====================================================================== |
======== ãªæ¨ï 18, ¯®¤äãªæ¨ï 5 - ¯®«ãç¨âì ⠪⮢ãî ç áâ®âã. ======= |
657,7 → 657,7 |
* eax = ⠪⮢ ï ç áâ®â (¯® ¬®¤ã«î 2^32 ⠪⮢ = 4æ) |
====================================================================== |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 6 - á®åà ¨âì à ¬¤¨áª ¢ ä ©« ¦¸á⪮¬ ¤¨áª¥. |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 6 - á®åà ¨âì à ¬¤¨áª ¢ ä ©« ¦ñá⪮¬ ¤¨áª¥. |
====================================================================== |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
666,7 → 666,7 |
* 1 = ¢ ¯ ¯ª¥ "/KOLIBRI" |
* 2 = ¢ ª®à¥¢®¬ ª â «®£¥ |
* 3 = edx 㪠§ë¢ ¥â ¯ãâì (¨¬¥ ¯ ¯®ª ¢ ä®à¬ ⥠8+3, |
à §¤¥«¸ë¥ '/') |
à §¤¥«ñë¥ '/') |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* ¨ ç¥ eax = ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
673,9 → 673,9 |
¬¥ç ¨ï: |
* ¬ï ä ©« 䨪á¨à®¢ ®, "menuet.img" (£«®¡ «ì ï ¯¥à¥¬¥ ï ï¤à |
image_save ¨§ preboot.inc) |
* ª ª®¬ à §¤¥«¥ ª ª®£® ¤¨áª ä ©« ¡ã¤¥â á®åà ¸, ®¯à¥¤¥«ï¥âáï |
* ª ª®¬ à §¤¥«¥ ª ª®£® ¤¨áª ä ©« ¡ã¤¥â á®åà ñ, ®¯à¥¤¥«ï¥âáï |
¯®¤äãªæ¨¥© 7 ¨ ¯®¤äãªæ¨¥© 8 äãªæ¨¨ 21. |
* ᥠ¯ ¯ª¨ ¢ 㪠§ ®¬ ¯ã⨠¤®«¦ë áãé¥á⢮¢ âì, ¨ ç¥ ¢¥à¸âáï |
* ᥠ¯ ¯ª¨ ¢ 㪠§ ®¬ ¯ã⨠¤®«¦ë áãé¥á⢮¢ âì, ¨ ç¥ ¢¥àñâáï |
§ 票¥ 5, "ä ©« ¥ ©¤¥". |
====================================================================== |
689,14 → 689,14 |
ªâ¨¢®) |
¬¥ç ¨ï: |
* ªâ¨¢®¥ ®ª® 室¨âáï ¢¢¥àåã ®ª®®£® áâíª ¨ ¯®«ãç ¥â |
á®®¡é¥¨ï ®¡® ¢á¸¬ ¢¢®¤¥ á ª« ¢¨ âãàë. |
á®®¡é¥¨ï ®¡® ¢áñ¬ ¢¢®¤¥ á ª« ¢¨ âãàë. |
* ¤¥« âì ®ª® ªâ¨¢ë¬ ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 3. |
====================================================================== |
==== ãªæ¨ï 18, ¯®¤äãªæ¨ï 8 - ®âª«îç¨âì/à §à¥è¨âì §¢ãª ᯨª¥à . ==== |
====================================================================== |
ਠ®âª«î縮¬ §¢ãª¥ ¢ë§®¢ë ¯®¤äãªæ¨¨ 55 äãªæ¨¨ 55 ¨£®à¨àãîâáï. |
ਠ¢ª«î縮¬ - ¯à ¢«ïîâáï ¢áâà®¥ë© á¯¨ª¥à. |
ਠ®âª«îçñ®¬ §¢ãª¥ ¢ë§®¢ë ¯®¤äãªæ¨¨ 55 äãªæ¨¨ 55 ¨£®à¨àãîâáï. |
ਠ¢ª«îçñ®¬ - ¯à ¢«ïîâáï ¢áâà®¥ë© á¯¨ª¥à. |
--------------- ®¤¯®¤äãªæ¨ï 1 - ¯®«ãç¨âì á®áâ®ï¨¥. ---------------- |
à ¬¥âàë: |
704,7 → 704,7 |
* ebx = 8 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 1 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - §¢ãª ᯨª¥à à §à¥è¸; 1 - § ¯à¥é¸ |
* eax = 0 - §¢ãª ᯨª¥à à §à¥èñ; 1 - § ¯à¥éñ |
-------------- ®¤¯®¤äãªæ¨ï 2 - ¯¥à¥ª«îç¨âì á®áâ®ï¨¥. -------------- |
¥à¥ª«îç ¥â á®áâ®ï¨ï à §à¥è¥¨ï/§ ¯à¥é¥¨ï. |
756,10 → 756,10 |
¨ à §¬¥àë. |
* ®ááâ ®¢«¥¨¥ ®ª ¯à¨«®¦¥¨ï ¯à®¨á室¨â ¯à¨ ªâ¨¢¨§¨à®¢ ¨¨ |
¯®¤äãªæ¨¥© 3. |
* ¡ëç® ¥â ¥®¡å®¤¨¬®á⨠ ᢮à 稢 âì/à §¢®à 稢 âì ᢮¸ ®ª®: |
* ¡ëç® ¥â ¥®¡å®¤¨¬®á⨠ ᢮à 稢 âì/à §¢®à 稢 âì ᢮ñ ®ª®: |
᢮à 稢 ¨¥ ®ª ®áãé¥á⢫ï¥âáï á¨á⥬®© ¯à¨ ¦ ⨨ ª®¯ªã |
¬¨¨¬¨§ 樨 (ª®â®à ï ¤«ï ®ª® ᮠ᪨®¬ ®¯à¥¤¥«ï¥âáï ¢â®¬ â¨ç¥áª¨ |
äãªæ¨¥© 0, ¤«ï ®ª® ¡¥§ ᪨ ¥¸ ¬®¦® ®¯à¥¤¥«¨âì äãªæ¨¥© 8), |
äãªæ¨¥© 0, ¤«ï ®ª® ¡¥§ ᪨ ¥ñ ¬®¦® ®¯à¥¤¥«¨âì äãªæ¨¥© 8), |
¢®ááâ ®¢«¥¨¥ - ¯à¨«®¦¥¨¥¬ @panel. |
====================================================================== |
777,7 → 777,7 |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
®à¬ â â ¡«¨æë: ª®à®âª ï ¢¥àá¨ï: |
* +0: byte: ¨ä®à¬ æ¨ï ® (¤¨áª®¢®¤ å ¤«ï ¤¨áª¥â), AAAABBBB, |
£¤¥ AAAA § ¤ ¸â ⨯ ¯¥à¢®£® ¤¨áª®¢®¤ , BBBB - ¢â®à®£® ᮣ« á® |
£¤¥ AAAA § ¤ ñâ ⨯ ¯¥à¢®£® ¤¨áª®¢®¤ , BBBB - ¢â®à®£® ᮣ« á® |
á«¥¤ãî饬ã ᯨáªã: |
* 0 = ¥â ¤¨áª®¢®¤ |
* 1 = 360Kb, 5.25'' |
788,19 → 788,19 |
¯à¨¬¥à, ¤«ï áâ ¤ à⮩ ª®ä¨£ãà 樨 ¨§ ®¤®£® 1.44-¤¨áª®¢®¤ |
§¤¥áì ¡ã¤¥â 40h, ¤«ï á«ãç ï 1.2Mb A: ¨ 1.44Mb B: |
§ 票¥ ®ª §ë¢ ¥âáï 24h. |
* +1: byte: ¨ä®à¬ æ¨ï ® ¦¸áâª¨å ¤¨áª å ¨ CD-¯à¨¢®¤ å, AABBCCDD, |
* +1: byte: ¨ä®à¬ æ¨ï ® ¦ñáâª¨å ¤¨áª å ¨ CD-¯à¨¢®¤ å, AABBCCDD, |
£¤¥ AA ᮮ⢥âáâ¢ã¥â ª®â஫«¥àã IDE0, ..., DD - IDE3: |
* 0 = ãáâனá⢮ ®âáãâáâ¢ã¥â |
* 1 = ¦¸á⪨© ¤¨áª |
* 1 = ¦ñá⪨© ¤¨áª |
* 2 = CD-¯à¨¢®¤ |
¯à¨¬¥à, ¢ á«ãç ¥ HD IDE0 ¨ CD IDE2 §¤¥áì ¡ã¤¥â 48h. |
* +2: 4 db: ç¨á«® ©¤¥ëå à §¤¥«®¢ ¦¸áâª¨å ¤¨áª å á |
* +2: 4 db: ç¨á«® ©¤¥ëå à §¤¥«®¢ ¦ñáâª¨å ¤¨áª å á |
ᮮ⢥âá⢥® IDE0,...,IDE3. |
ਠ®âáãâá⢨¨ ¦¸á⪮£® ¤¨áª IDEx ᮮ⢥âáâ¢ãî騩 ¡ ©â |
ਠ®âáãâá⢨¨ ¦ñá⪮£® ¤¨áª IDEx ᮮ⢥âáâ¢ãî騩 ¡ ©â |
ã«¥¢®©, ¯à¨ «¨ç¨¨ ¯®ª §ë¢ ¥â ç¨á«® à ᯮ§ ëå à §¤¥«®¢, |
ª®â®àëå ¬®¦¥â ¨ ¥ ¡ëâì (¥á«¨ ®á¨â¥«ì ¥ ®âä®à¬ â¨à®¢ ¨«¨ |
¥á«¨ ä ©«®¢ ï á¨á⥬ ¥ ¯®¤¤¥à¦¨¢ ¥âáï). ⥪ã饩 ¢¥àᨨ ï¤à |
¤«ï ¦¸áâª¨å ¤¨áª®¢ ¯®¤¤¥à¦¨¢ îâáï ⮫쪮 FAT16 ¨ FAT32. |
¤«ï ¦ñáâª¨å ¤¨áª®¢ ¯®¤¤¥à¦¨¢ îâáï ⮫쪮 FAT16 ¨ FAT32. |
* +6: 4 db: § १¥à¢¨à®¢ ® |
®à¬ â â ¡«¨æë: ¯®« ï ¢¥àá¨ï: |
* +0: 10 db: â ª¨¥ ¦¥, ª ª ¨ ¢ ª®à®âª®© ¢¥àᨨ |
871,7 → 871,7 |
====================================================================== |
====================== ãªæ¨ï 18, ¯®¤äãªæ¨ï 14 ===================== |
======= ¦¨¤ âì ç « ®¡à ⮣® 室 «ãç à §¢¸à⪨ ¬®¨â®à . ======= |
======= ¦¨¤ âì ç « ®¡à ⮣® 室 «ãç à §¢ñà⪨ ¬®¨â®à . ======= |
====================================================================== |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
930,51 → 930,65 |
¯à®æ¥áá /¯®â®ª ¯® § ¤ ®¬ã á«®âã. |
====================================================================== |
====================== ãªæ¨ï 18, ¯®¤äãªæ¨ï 19 ===================== |
============= ®«ãç¨âì/ãáâ ®¢¨âì áâனª¨ ¬ëè¨. =================== |
=== ãªæ¨ï 18, ¯®¤äãªæ¨ï 19 - ¯®«ãç¨âì/ãáâ ®¢¨âì áâனª¨ ¬ëè¨. == |
====================================================================== |
------------- ®¤¯®¤äãªæ¨ï 0 - ¯®«ãç¨âì ᪮à®áâì ¬ëè¨. -------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = ®¬¥à ¯®äãªæ¨¨ 2-£® ã஢ï. |
ecx = 0 - ¯®«ãç¨âì ᪮à®áâì ¬ëè¨ |
* ecx = 0 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = ⥪ãé ï ᪮à®áâì ¬ëè¨ |
ecx = 1 - ãáâ ®¢¨âì ᪮à®áâì ¬ëè¨ |
edx = ãáâ ¢«¨¢ ¥¬®¥ § 票¥ ᪮à®á⨠|
------------ ®¤¯®¤äãªæ¨ï 1 - ãáâ ®¢¨âì ᪮à®áâì ¬ëè¨. ------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 1 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
* edx = ®¢®¥ § 票¥ ᪮à®á⨠|
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
ecx = 2 - ¯®«ãç¨âì § ¤¥à¦ªã ã᪮२ï |
------------- ®¤¯®¤äãªæ¨ï 2 - ¯®«ãç¨âì § ¤¥à¦ªã ¬ëè¨. -------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 2 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = ⥪ãé ï § ¤¥à¦ª ã᪮२ï |
* eax = ⥪ãé ï § ¤¥à¦ª ¬ëè¨ |
ecx = 3 - ãáâ ®¢¨âì § ¤¥à¦ªã ã᪮२ï |
edx = ãáâ ¢«¨¢ ¥¬ ï § ¤¥à¦ª ã᪮२ï |
------------ ®¤¯®¤äãªæ¨ï 3 - ãáâ ®¢¨âì § ¤¥à¦ªã ¬ëè¨. ------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 3 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
* edx = ®¢®¥ § 票¥ § ¤¥à¦ª¨ ¬ëè¨ |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
ecx = 4 - ãáâ ®¢¨âì ¯®§¨æ¨î ªãàá®à ¬ëè¨ íªà ¥ |
edx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
-------- ®¤¯®¤äãªæ¨ï 4 - ãáâ ®¢¨âì ¯®«®¦¥¨¥ ªãàá®à ¬ëè¨. -------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 4 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
* edx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ¥ª®¬¥¤ã¥¬ ï ᪮à®áâì ¬ëè¨ (¢ ¯®¤äãªæ¨¨ 1) ®â 1 ¤® 9. |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ª®â஫¨àã¥âáï ª®¤®¬ ï¤à , ¯® í⮬ã |
¨á¯®«ì§ã©â¥ ®áâ®à®¦®, ¯à¨ ¥ª®à४⮬ § 票¨ ªãàá®à ¬®¦¥â "§ ¬¥à§ãâì". |
ª®à®áâì ¬ëè¨ ¬®¦® ॣ㫨஢ âì ç¥à¥§ ¯à¨«®¦¥¨¥ SETUP. |
* ¥ª®¬¥¤ã¥¬ ï ¢¥«¨ç¨ § ¤¥à¦ª¨ (¢ ¯®¤äãªæ¨¨ 3) = 10. ®«¥¥ ¨§ª®¥ |
§ 票¥ ¥ ®¡à ¡ âë¢ ¥âáï COM ¬ëè ¬¨. ਠ®ç¥ì ¡®«ìè¨å § 票ïå |
¥¢®§¬®¦® ¯¥à¥¤¢¨¦¥¨¥ ¬ëè¨ 1 ¯¨ªá¥«ì ¨ ªãàá®à ¡ã¤¥â ¯àë£ âì |
¢¥«¨ç¨ã ãáâ ®¢«¥®© ᪮à®á⨠(¯®¤äãªæ¨ï 1). |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ª®â஫¨àã¥âáï ª®¤®¬ ï¤à . |
* ¯®¤äãªæ¨¨ 4 ãáâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ª®â஫¨àã¥âáï ª®¤®¬ ï¤à . |
¥à¥¤ ¨á¯®«ì§®¢ ¨¥¬ ¥®¡å®¤¨¬® 㧠âì ⥪ã饥 à §à¥è¥¨¥ íªà ¨ |
¯à¨ ãáâ ®¢ª¥ ¯®§¨æ¨¨ á«¥¤¨âì, çâ®¡ë ¢¥«¨ç¨ ¯®§¨æ¨¨ ¥ ¢ë室¨« § |
¯à¥¤¥«ë íªà . |
* ¥ª®¬¥¤ã¥¬ ï ᪮à®áâì ¬ëè¨ (¢ ¯®¤¯®¤äãªæ¨¨ 1) ®â 1 ¤® 9. |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ¯à®¢¥àï¥âáï ª®¤®¬ ï¤à , ¯®í⮬ã |
¨á¯®«ì§ã©â¥ ®áâ®à®¦®, ¯à¨ ¥ª®à४⮬ § 票¨ ªãàá®à ¬®¦¥â |
"§ ¬ñà§ãâì". ª®à®áâì ¬ëè¨ ¬®¦® ॣ㫨஢ âì ¢ ¯à¨«®¦¥¨¨ SETUP. |
* ¥ª®¬¥¤ã¥¬ ï ¢¥«¨ç¨ § ¤¥à¦ª¨ (¢ ¯®¤¯®¤äãªæ¨¨ 3) = 10. |
¥ì訥 § ç¥¨ï ¥ ®¡à ¡ âë¢ îâáï COM-¬ëè ¬¨. ਠ®ç¥ì ¡®«ìè¨å |
§ 票ïå ¥¢®§¬®¦® ¯¥à¥¤¢¨¦¥¨¥ ¬ëè¨ 1 ¯¨ªá¥«ì ¨ ªãàá®à ¡ã¤¥â |
¯àë£ âì ¢¥«¨ç¨ã ãáâ ®¢«¥®© ᪮à®á⨠(¯®¤¯®¤äãªæ¨ï 1). |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ¯à®¢¥àï¥âáï ª®¤®¬ ï¤à . |
* ®¤¯®¤äãªæ¨ï 4 ¥ ¯à®¢¥àï¥â ¯¥à¥¤ ®¥ § 票¥. ¥à¥¤ ¢ë§®¢®¬ |
¥®¡å®¤¨¬® 㧠âì ⥪ã饥 à §à¥è¥¨¥ íªà (¯®¤äãªæ¨¥© 14) |
¨ ¯à®¢¥à¨âì, çâ® ãáâ ¢«¨¢ ¥¬®¥ ¯®«®¦¥¨¥ ¥ ¢ë室¨â § ¯à¥¤¥«ë |
íªà . |
====================================================================== |
============ ãªæ¨ï 19 - § ¯ãáâ¨âì ¯à®£à ¬¬ã á à ¬¤¨áª . ============ |
1009,9 → 1023,9 |
* cl = ¡ ©â ¤«ï ¢ë¢®¤ |
®§¢à é ¥¬®¥ § 票¥ (®¤¨ ª®¢® ¤«ï ®¡¥¨å ¯®¤äãªæ¨©): |
* eax = 0 - ãá¯¥è® |
* eax = 1 - ¥ ®¯à¥¤¥«¸ ¡ §®¢ë© ¯®àâ |
* eax = 1 - ¥ ®¯à¥¤¥«ñ ¡ §®¢ë© ¯®àâ |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ®¯à¥¤¥«¸ ¡ §®¢ë© ¯®à⠢맮¢®¬ |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ®¯à¥¤¥«ñ ¡ §®¢ë© ¯®à⠢맮¢®¬ |
¯®¤äãªæ¨¨ 1 äãªæ¨¨ 21. |
====================================================================== |
1130,9 → 1144,9 |
====================================================================== |
=========== ãªæ¨ï 21, ¯®¤äãªæ¨ï 7 - ãáâ ®¢¨âì ¡ §ã HD. =========== |
====================================================================== |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦¸á⪨© ¤¨áª ¯¨á âì, ¯à¨ |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦ñá⪨© ¤¨áª ¯¨á âì, ¯à¨ |
¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© á¨á⥬®© ¨ äãªæ¨©, |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦¸á⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 ¨ ᮢ६¥®£® á¨â ªá¨á |
/HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ ãáâ ¢«¨¢ îâ ¡ §ã. |
à ¬¥âàë: |
1144,17 → 1158,17 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì ¡ §ã. |
* ¥ á«¥¤ã¥â ¨§¬¥ïâì ¡ §ã, ª®£¤ ª ª®¥-¨¡ã¤ì ¯à¨«®¦¥¨¥ à ¡®â ¥â |
á ¦¸á⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
á ¦ñá⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
* ®«ãç¨âì ãáâ ®¢«¥ãî ¡ §ã ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 7 äãªæ¨¨ 26. |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦¸á⪮£® ¤¨áª |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦ñá⪮£® ¤¨áª |
¯®¤äãªæ¨¥© 8. |
====================================================================== |
========== ãªæ¨ï 21, ¯®¤äãªæ¨ï 8 - ãáâ ®¢¨âì à §¤¥« HD. ========== |
====================================================================== |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦¸á⪮£® ¤¨áª |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦ñá⪮£® ¤¨áª |
¯¨á âì, ¯à¨ ¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦¸á⪨© ¤¨áª (⨯ |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ |
¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); ¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 |
¨ ᮢ६¥®£® á¨â ªá¨á /HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ |
ãáâ ¢«¨¢ îâ ¡ §ã ¨ à §¤¥«. |
1167,13 → 1181,13 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì à §¤¥«. |
* ¥ á«¥¤ã¥â ¨§¬¥ïâì à §¤¥«, ª®£¤ ª ª®¥-¨¡ã¤ì ¯à¨«®¦¥¨¥ à ¡®â ¥â |
á ¦¸á⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
á ¦ñá⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
* ®«ãç¨âì ãáâ ®¢«¥ë© à §¤¥« ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 8 |
äãªæ¨¨ 26. |
* ஢¥à®ª ª®à४â®áâì ¥ ¤¥« ¥âáï. |
* § âì ç¨á«® à §¤¥«®¢ ¦¸á⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
* § âì ç¨á«® à §¤¥«®¢ ¦ñá⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
¯®¤äãªæ¨¨ 11 äãªæ¨¨ 18. |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦¸á⪮£® ¤¨áª |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦ñá⪮£® ¤¨áª |
¯®¤äãªæ¨¥© 7. |
====================================================================== |
1238,7 → 1252,7 |
* ¥á«¨ ¤à ©¢¥à § £à㦥: |
* eax = 'MDAZ' (¢ á⨫¥ fasm' , â.¥. 'M' - ¬« ¤è¨© ¡ ©â, |
'Z' - áâ à訩) - ᨣ âãà |
* ebx = ⥪ãé ï ç áâ®â à §¢¸à⪨ (¢ æ) |
* ebx = ⥪ãé ï ç áâ®â à §¢ñà⪨ (¢ æ) |
* ecx à §àãè ¥âáï |
* ¡ãä¥à, ª®â®àë© ãª §ë¢ ¥â edx, § ¯®«¥ |
®à¬ â ¡ãä¥à : |
1249,15 → 1263,15 |
* +36 = +0x24: 7*dword: § १¥à¢¨à®¢ ® (0 ¢ ⥪ã饩 ॠ«¨§ 樨) |
* +64 = +0x40: 32*word: ᯨ᮪ ¯®¤¤¥à¦¨¢ ¥¬ëå ¢¨¤¥®à¥¦¨¬®¢ (ª ¦¤®¥ |
á«®¢® - ®¬¥à ¢¨¤¥®à¥¦¨¬ , ¯®á«¥ ᮡá⢥® ᯨ᪠¨¤ãâ 㫨) |
* +128 = +0x80: 32*(5*word): ᯨ᮪ ¯®¤¤¥à¦¨¢ ¥¬ëå ç áâ®â à §¢¸à⮪ |
* +128 = +0x80: 32*(5*word): ᯨ᮪ ¯®¤¤¥à¦¨¢ ¥¬ëå ç áâ®â à §¢ñà⮪ |
¤«ï ¢¨¤¥®à¥¦¨¬®¢: ¤«ï ª ¦¤®£® ¢¨¤¥®à¥¦¨¬ , 㪠§ ®£® ¢ ¯à¥¤ë¤ã饬 |
¯®«¥, 㪠§ ® ¤® 5 ¯®¤¤¥à¦¨¢ ¥¬ëå ç áâ®â |
(¢ ¥¨á¯®«ì§ã¥¬ëå ¯®§¨æ¨ïå § ¯¨á ë 㫨) |
¬¥ç ¨ï: |
* ãªæ¨ï ¨¨æ¨ «¨§¨àã¥â ¤à ©¢¥à (¥á«¨ ® ¥é¸ ¥ ¨¨æ¨ «¨§¨à®¢ ) |
* ãªæ¨ï ¨¨æ¨ «¨§¨àã¥â ¤à ©¢¥à (¥á«¨ ® ¥éñ ¥ ¨¨æ¨ «¨§¨à®¢ ) |
¨ ¤®«¦ ¢ë§ë¢ âìáï ¯¥à¢®©, ¯¥à¥¤ ®áâ «ì묨 (¨ ç¥ ®¨ ¡ã¤ãâ |
¢®§¢à é âì -1, ¨ç¥£® ¥ ¤¥« ï). |
* ⥪ã饩 ॠ«¨§ 樨 ¯®¤¤¥à¦¨¢ ¥âáï ⮫쪮 ®¤ ç áâ®â à §¢¸à⪨ |
* ⥪ã饩 ॠ«¨§ 樨 ¯®¤¤¥à¦¨¢ ¥âáï ⮫쪮 ®¤ ç áâ®â à §¢ñà⪨ |
¢¨¤¥®à¥¦¨¬. |
====================================================================== |
1272,13 → 1286,13 |
* eax = -1 - ¤à ©¢¥à ¥ § £à㦥 ¨«¨ ¥ ¨¨æ¨ «¨§¨à®¢ ; |
ebx,ecx à §àãè îâáï |
* eax = [è¨à¨ ]*65536 + [¢ëá®â ] |
* ebx = ç áâ®â ¢¥à⨪ «ì®© à §¢¸à⪨ (¢ æ) |
* ebx = ç áâ®â ¢¥à⨪ «ì®© à §¢ñà⪨ (¢ æ) |
* ecx = ®¬¥à ⥪ã饣® ¢¨¤¥®à¥¦¨¬ |
¬¥ç ¨ï: |
* à ©¢¥à ¯à¥¤¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ¨¨æ¨ «¨§¨à®¢ ¢ë§®¢®¬ |
äãªæ¨¨ ¤à ©¢¥à 1. |
* ᫨ ã¦ë ⮫쪮 à §¬¥àë íªà , 楫¥á®®¡à §¥© ¨á¯®«ì§®¢ âì |
äãªæ¨î 14 á ãç¸â®¬ ⮣®, çâ® ® ¢®§¢à é ¥â à §¬¥àë 1 ¬¥ìè¥. |
äãªæ¨î 14 á ãçñ⮬ ⮣®, çâ® ® ¢®§¢à é ¥â à §¬¥àë 1 ¬¥ìè¥. |
====================================================================== |
= ãªæ¨ï 21, ¯®¤äãªæ¨ï 13, ¯®¤¯®¤äãªæ¨ï 3 - ãáâ ®¢¨âì ¢¨¤¥®à¥¦¨¬. |
1287,7 → 1301,7 |
* eax = 21 - ®¬¥à äãªæ¨¨ |
* ebx = 13 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 3 - ®¬¥à äãªæ¨¨ ¤à ©¢¥à |
* edx = [ç áâ®â à §¢¸à⪨]*65536 + [®¬¥à ¢¨¤¥®à¥¦¨¬ ] |
* edx = [ç áâ®â à §¢ñà⪨]*65536 + [®¬¥à ¢¨¤¥®à¥¦¨¬ ] |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤à ©¢¥à ¥ § £à㦥, ¥ ¨¨æ¨ «¨§¨à®¢ ¨«¨ |
¯à®¨§®è« ®è¨¡ª |
1372,7 → 1386,7 |
* ®®¡é¥-â® CMOS ¯®¤¤¥à¦¨¢ ¥â ¤«ï ¡ã¤¨«ì¨ª ãáâ ®¢ªã § 票ï |
0xFF ¢ ª ç¥á⢥ ®¤®£® ¨§ ¯ à ¬¥â஢ ¨ ®§ ç ¥â íâ®, çâ® |
ᮮ⢥âáâ¢ãî騩 ¯ à ¬¥âà ¨£®à¨àã¥âáï. ® ¢ ⥪ã饩 ॠ«¨§ 樨 |
íâ® ¥ ¯à®©¤¸â (¢¥à¸âáï § 票¥ 1). |
íâ® ¥ ¯à®©¤ñâ (¢¥àñâáï § 票¥ 1). |
* 㤨«ì¨ª - £«®¡ «ìë© á¨áâ¥¬ë© à¥áãàá; ãáâ ®¢ª ¡ã¤¨«ì¨ª |
¢â®¬ â¨ç¥áª¨ ®â¬¥ï¥â ¯à¥¤ë¤ãéãî ãáâ ®¢ªã. ¯à®ç¥¬, ¤ ë© |
¬®¬¥â ¨ ®¤ ¯à®£à ¬¬ ¥£® ¥ ¨á¯®«ì§ã¥â. |
1380,7 → 1394,7 |
====================================================================== |
============== ãªæ¨ï 23 - ®¦¨¤ âì ᮡëâ¨ï á â ©¬ ã⮬. ============= |
====================================================================== |
᫨ ®ç¥à¥¤ì á®®¡é¥¨© ¯ãáâ , ¦¤¸â ¯®ï¢«¥¨ï á®®¡é¥¨ï ¢ ®ç¥à¥¤¨, |
᫨ ®ç¥à¥¤ì á®®¡é¥¨© ¯ãáâ , ¦¤ñâ ¯®ï¢«¥¨ï á®®¡é¥¨ï ¢ ®ç¥à¥¤¨, |
® ¥ ¡®«¥¥ 㪠§ ®£® ¢à¥¬¥¨. ⥬ áç¨âë¢ ¥â á®®¡é¥¨¥ ¨§ ®ç¥à¥¤¨. |
à ¬¥âàë: |
1396,8 → 1410,8 |
* «ï ¯à®¢¥àª¨, ¥áâì «¨ á®®¡é¥¨¥ ¢ ®ç¥à¥¤¨, ¨á¯®«ì§ã©â¥ äãªæ¨î 11. |
â®¡ë ¦¤ âì ᪮«ì 㣮¤® ¤®«£®, ¨á¯®«ì§ã©â¥ äãªæ¨î 10. |
* ¥à¥¤ ç ebx=0 ¯à¨¢®¤¨â ª ¬®¬¥â «ì®¬ã ¢®§¢à 饨î eax=0. |
* ਠ⥪ã饩 ॠ«¨§ 樨 ¯à®¨§®©¤¸â ¥¬¥¤«¥ë© ¢®§¢à â ¨§ äãªæ¨¨ |
á eax=0, ¥á«¨ á«®¦¥¨¥ ebx á ⥪ã騬 § 票¥¬ áç¸â稪 ¢à¥¬¥¨ |
* ਠ⥪ã饩 ॠ«¨§ 樨 ¯à®¨§®©¤ñâ ¥¬¥¤«¥ë© ¢®§¢à â ¨§ äãªæ¨¨ |
á eax=0, ¥á«¨ á«®¦¥¨¥ ebx á ⥪ã騬 § 票¥¬ áçñâ稪 ¢à¥¬¥¨ |
¢ë§®¢¥â 32-¡¨â®¥ ¯¥à¥¯®«¥¨¥. |
====================================================================== |
1576,9 → 1590,9 |
====================================================================== |
============ ãªæ¨ï 26, ¯®¤äãªæ¨ï 7 - ¯®«ãç¨âì ¡ §ã HD. ============ |
====================================================================== |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦¸á⪨© ¤¨áª ¯¨á âì, ¯à¨ |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦ñá⪨© ¤¨áª ¯¨á âì, ¯à¨ |
¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© á¨á⥬®© ¨ äãªæ¨©, |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦¸á⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 ¨ ᮢ६¥®£® á¨â ªá¨á |
/HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ ãáâ ¢«¨¢ îâ ¡ §ã. |
à ¬¥âàë: |
1589,14 → 1603,14 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì ¡ §ã. |
* áâ ®¢¨âì ¡ §ã ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 7 äãªæ¨¨ 21. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦¸á⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 8. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦ñá⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 8. |
====================================================================== |
=========== ãªæ¨ï 26, ¯®¤äãªæ¨ï 8 - ¯®«ãç¨âì à §¤¥« HD. =========== |
====================================================================== |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦¸á⪮£® ¤¨áª |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦ñá⪮£® ¤¨áª |
¯¨á âì, ¯à¨ ¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦¸á⪨© ¤¨áª (⨯ |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ |
¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); ¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 ¨ |
ᮢ६¥®£® á¨â ªá¨á /HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ |
ãáâ ¢«¨¢ îâ ¡ §ã ¨ à §¤¥«. |
1608,12 → 1622,12 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì à §¤¥«. |
* áâ ®¢¨âì à §¤¥« ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 8 äãªæ¨¨ 21. |
* § âì ç¨á«® à §¤¥«®¢ ¦¸á⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
* § âì ç¨á«® à §¤¥«®¢ ¦ñá⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
¯®¤äãªæ¨¨ 11 äãªæ¨¨ 18. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦¸á⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 7. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦ñá⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 7. |
====================================================================== |
=== ãªæ¨ï 26, ¯®¤äãªæ¨ï 9 - ¯®«ãç¨âì § 票¥ áç¸â稪 ¢à¥¬¥¨. === |
=== ãªæ¨ï 26, ¯®¤äãªæ¨ï 9 - ¯®«ãç¨âì § 票¥ áçñâ稪 ¢à¥¬¥¨. === |
====================================================================== |
à ¬¥âàë: |
* eax = 26 - ®¬¥à äãªæ¨¨ |
1622,7 → 1636,7 |
* eax = ç¨á«® á®âëå ¤®«¥© ᥪã¤ë, ¯à®è¥¤è¨å á ¬®¬¥â |
§ ¯ã᪠á¨á⥬ë |
¬¥ç ¨ï: |
* ç¸â稪 ¡¥à¸âáï ¯® ¬®¤ã«î 2^32, ç⮠ᮮ⢥âáâ¢ã¥â ¥¬®£¨¬ ¡®«¥¥ |
* çñâ稪 ¡¥àñâáï ¯® ¬®¤ã«î 2^32, ç⮠ᮮ⢥âáâ¢ã¥â ¥¬®£¨¬ ¡®«¥¥ |
497 áã⮪. |
* ¨á⥬®¥ ¢à¥¬ï ¬®¦® ¯®«ãç¨âì äãªæ¨¥© 3. |
1641,13 → 1655,13 |
====================================================================== |
====================== ãªæ¨ï 26, ¯®¤äãªæ¨ï 11 ===================== |
=========== § âì, à §à¥è¸ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª HD. ========== |
=========== § âì, à §à¥èñ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª HD. ========== |
====================================================================== |
à ¬¥âàë: |
* eax = 26 - ®¬¥à äãªæ¨¨ |
* ebx = 11 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0/1 - § ¯à¥é¸/à §à¥è¸ |
* eax = 0/1 - § ¯à¥éñ/à §à¥èñ |
¬¥ç ¨ï: |
* ᯮ«ì§ã¥âáï ¯à¨ LBA-ç⥨¨ (¯®¤äãªæ¨ï 8 äãªæ¨¨ 58). |
* áâ ®¢¨âì ⥪ã饥 á®áâ®ï¨¥ ¬®¦® ¢ë§®¢®¬ |
1655,13 → 1669,13 |
====================================================================== |
====================== ãªæ¨ï 26, ¯®¤äãªæ¨ï 12 ===================== |
========== § âì, à §à¥è¸ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI. ========== |
========== § âì, à §à¥èñ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI. ========== |
====================================================================== |
à ¬¥âàë: |
* eax = 26 - ®¬¥à äãªæ¨¨ |
* ebx = 12 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0/1 - § ¯à¥é¸/à §à¥è¸ |
* eax = 0/1 - § ¯à¥éñ/à §à¥èñ |
¬¥ç ¨ï: |
* ᯮ«ì§ã¥âáï ¯à¨ à ¡®â¥ á 訮© PCI (äãªæ¨ï 62). |
* ¥ªãé ï ॠ«¨§ æ¨ï ¨á¯®«ì§ã¥â ⮫쪮 ¬« ¤è¨© ¡¨â ecx. |
1761,7 → 1775,7 |
* â äãªæ¨ï ãáâ ५ ; äãªæ¨ï 70 ¯®§¢®«ï¥â ¢ë¯®«ïâì |
⥠¦¥ ¤¥©á⢨ï á à áè¨à¥ë¬¨ ¢®§¬®¦®áâﬨ. |
* ᫨ 㪠§ âì ¥ã«¥¢®¥ § 票¥ ¢ esi ¨ à ¬¤¨áª¥ 㦥 ¥áâì |
㪠§ ë© ä ©«, â® ¡ã¤¥â ᮧ¤ ¥é¸ ®¤¨ ä ©« á ⥬ ¦¥ ¨¬¥¥¬. |
㪠§ ë© ä ©«, â® ¡ã¤¥â ᮧ¤ ¥éñ ®¤¨ ä ©« á ⥬ ¦¥ ¨¬¥¥¬. |
* ¯à®â¨¢®¬ á«ãç ¥ ä ©« ¯¥à¥§ ¯¨áë¢ ¥âáï. |
* ¬ï ä ©« ¤®«¦® ¡ëâì «¨¡® ¢ ä®à¬ ⥠8+3 ᨬ¢®«®¢ |
(¯¥à¢ë¥ 8 ᨬ¢®«®¢ - ᮡá⢥® ¨¬ï, ¯®á«¥¤¨¥ 3 - à áè¨à¥¨¥, |
1813,7 → 1827,7 |
᫨ y>=ywnd, â® ¬« ¤è¥¥ á«®¢® ¥®âà¨æ â¥«ì® ¨ ᮤ¥à¦¨â |
®â®á¨â¥«ìãî y-ª®®à¤¨ âã, áâ à襥 - ®â®á¨â¥«ìãî x-ª®®à¤¨ âã |
(¯à ¢¨«ì®£® § ª ). ¯à®â¨¢®¬ á«ãç ¥ ¬« ¤è¥¥ á«®¢® ®âà¨æ â¥«ì® |
¨ ¢á¸ à ¢® ᮤ¥à¦¨â ®â®á¨â¥«ìãî y-ª®®à¤¨ âã, |
¨ ¢áñ à ¢® ᮤ¥à¦¨â ®â®á¨â¥«ìãî y-ª®®à¤¨ âã, |
ª áâ à襬ã á«®¢ã á«¥¤ã¥â ¯à¨¡ ¢¨âì 1. |
----------------- ®¤äãªæ¨ï 2 - ¦ âë¥ ª®¯ª¨ ¬ëè¨ ----------------- |
1890,7 → 1904,7 |
======== ãªæ¨ï 40 - ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩. ======== |
====================================================================== |
᪠¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ ¢«¨ï¥â äãªæ¨¨ à ¡®âë á ᮡëâ¨ï¬¨ 10, |
11, 23 - ®¨ á®®¡é îâ ⮫쪮 ® ᮡëâ¨ïå, à §à¥è¸ëå í⮩ ¬ ᪮©. |
11, 23 - ®¨ á®®¡é îâ ⮫쪮 ® ᮡëâ¨ïå, à §à¥èñëå í⮩ ¬ ᪮©. |
à ¬¥âàë: |
* eax = 40 - ®¬¥à äãªæ¨¨ |
* ebx = ¬ ᪠: ¡¨â i ᮮ⢥âáâ¢ã¥â ᮡëâ¨î i+1 (á¬. ᯨ᮪ ᮡë⨩) |
1901,7 → 1915,7 |
* ᪠¯® 㬮«ç ¨î (7=111b) à §à¥è ¥â ¨§¢¥é¥¨ï ® ¯¥à¥à¨á®¢ª¥ |
¨ ¦ â¨ïå ª« ¢¨è ¨ ª®¯®ª. |
⮣® ¤®áâ â®ç® ¤«ï ¡®«ìè¨á⢠¯à¨«®¦¥¨©. |
* ®¡ëâ¨ï, § ¯à¥é¸ë¥ ¢ ¬ ᪥, ¢á¸ à ¢® á®åà ïîâáï, ¥á«¨ |
* ®¡ëâ¨ï, § ¯à¥éñë¥ ¢ ¬ ᪥, ¢áñ à ¢® á®åà ïîâáï, ¥á«¨ |
¯à¨å®¤ïâ; ® ¨å ¯à®áâ® ¥ ¨§¢¥é îâ äãªæ¨¨ à ¡®âë á ᮡëâ¨ï¬¨. |
* ãªæ¨¨ à ¡®âë á ᮡëâ¨ï¬¨ ãç¨âë¢ îâ ¬ áªã ¬®¬¥â |
¢ë§®¢ äãªæ¨¨, ¥ ¬®¬¥â ¯®áâ㯫¥¨ï á®®¡é¥¨ï. |
1934,8 → 1948,8 |
* eax = 0 |
* ecx = 1 |
* ebx à §àãè ¥âáï |
* ¥á«¨ ¢á¸ ¢ ¯®à浪¥ ¨ ¤ ë¥ ¡ë«¨: |
* eax = à §¬¥à ¤ ëå, ¥é¸ ¥ ¯à®ç¨â ëå ¨§ ¡ãä¥à (¢ ¡ ©â å) |
* ¥á«¨ ¢áñ ¢ ¯®à浪¥ ¨ ¤ ë¥ ¡ë«¨: |
* eax = à §¬¥à ¤ ëå, ¥éñ ¥ ¯à®ç¨â ëå ¨§ ¡ãä¥à (¢ ¡ ©â å) |
* ecx = 0 |
* ebx = ®ç¥à¥¤®© ¡ ©â |
¬¥ç ¨ï: |
1963,7 → 1977,7 |
* ebx ¨£®à¨àã¥âáï |
* ecx = 0x8000nnnn, £¤¥ nnnn = ®¬¥à ¯®àâ (®â 0 ¤® 0xFFFF) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¯à¨ í⮬ ebx = ¢¢¥¤¸ë© ¡ ©â |
* eax = 0 - ãᯥè®, ¯à¨ í⮬ ebx = ¢¢¥¤ñë© ¡ ©â |
* eax = 1 - ¯®â®ª ¥ § १¥à¢¨à®¢ « ¤ ë© ¯®àâ |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¯®â®ª ¤®«¦¥ § १¥à¢¨à®¢ âì § ᮡ®© |
1971,7 → 1985,7 |
* «ï § १¥à¢¨à®¢ ëå ¯®à⮢ ¢¬¥áâ® ¢ë§®¢ íâ¨å äãªæ¨© |
«ãçè¥ ¨á¯®«ì§®¢ âì ª®¬ ¤ë ¯à®æ¥áá®à in/out - íâ® § ç¨â¥«ì® |
¡ëáâ॥ ¨ ¥áª®«ìª® ª®à®ç¥ ¨ ¯à®é¥. § ¥§ १¥à¢¨à®¢ ëå |
¯®à⮢ ç¨â âì ¢á¸ à ¢® ¥«ì§ï. |
¯®à⮢ ç¨â âì ¢áñ à ¢® ¥«ì§ï. |
====================================================================== |
======== ãªæ¨ï 44 - ®¯à¥¤¥«¨âì ¤¥©áâ¢¨ï ¯à¨ ¯®áâ㯫¥¨¨ IRQ. ======= |
2101,7 → 2115,7 |
* ebx = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = ⨯ ª®¯®ª: |
* 0 = ¯«®áª¨¥ |
* 1 = ®¡ê¸¬ë¥ |
* 1 = ®¡êñ¬ë¥ |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
2126,7 → 2140,7 |
¯®¤äãªæ¨¥© 0. |
* ¡«¨æ áâ ¤ àâëå 梥⮢ ¢«¨ï¥â ⮫쪮 ¯à¨«®¦¥¨ï, |
ª®â®àë¥ íâã â ¡«¨æã ï¢ë¬ ®¡à §®¬ ¯®«ãç îâ (¯®¤äãªæ¨¥© 3) ¨ |
¨á¯®«ì§ãîâ (㪠§ë¢ ï 梥⠨§ ¥¸ ¯à¨ ¢ë§®¢ å äãªæ¨© à¨á®¢ ¨ï). |
¨á¯®«ì§ãîâ (㪠§ë¢ ï 梥⠨§ ¥ñ ¯à¨ ¢ë§®¢ å äãªæ¨© à¨á®¢ ¨ï). |
* ¡«¨æ áâ ¤ àâëå 梥⮢ ¢å®¤¨â ¢ ᪨ ¨ ãáâ ¢«¨¢ ¥âáï § ®¢® |
¯à¨ ãáâ ®¢ª¥ ᪨ (¯®¤äãªæ¨¨ 8). |
* ¡«¨æã 梥⮢ ¬®¦® ¯à®á¬ âਢ âì/¨§¬¥ïâì ¨â¥à ªâ¨¢® á ¯®¬®éìî |
2272,7 → 2286,7 |
¯®«¥ ¯à®¬¥¦ãâ®ç®£® ¡ãä¥à ¨ 㪠§ ® ¨¬ï ä ©« |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* ¨ ç¥ eax = ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë; ¥á«¨ ä ©« ¥ § ¤ ¸â ᪨, |
* ¨ ç¥ eax = ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë; ¥á«¨ ä ©« ¥ § ¤ ñâ ᪨, |
â® ¢®§¢à é ¥âáï ®è¨¡ª 3 (¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ). |
¬¥ç ¨ï: |
* ਠãᯥ让 § £à㧪¥ ᪨ ¢á¥ ®ª ¨§¢¥é îâáï ® ¥®¡å®¤¨¬®á⨠|
2307,7 → 2321,7 |
================= ãªæ¨ï 50 - ãáâ ®¢ª ä®à¬ë ®ª . ================= |
====================================================================== |
¡ëçë¥ ®ª ¯à¥¤áâ ¢«ïîâ ᮡ®© ¯àאַ㣮«ì¨ª¨. ¯®¬®éìî í⮩ äãªæ¨¨ |
®ªã ¬®¦® ¯à¨¤ âì ¯à®¨§¢®«ìãî ä®à¬ã. ®à¬ § ¤ ¸âáï ¡®à®¬ â®ç¥ª |
®ªã ¬®¦® ¯à¨¤ âì ¯à®¨§¢®«ìãî ä®à¬ã. ®à¬ § ¤ ñâáï ¡®à®¬ â®ç¥ª |
¢ãâਠ®¡à ¬«ïî饣® ¯àאַ㣮«ì¨ª , ¯à¨ ¤«¥¦ é¨å ®ªã. ®«®¦¥¨¥ ¨ |
à §¬¥àë ®¡à ¬«ïî饣® ¯àאַ㣮«ì¨ª § ¤ îâáï äãªæ¨¥© 0 ¨ ¨§¬¥ïîâáï |
äãªæ¨¥© 67. |
2324,7 → 2338,7 |
à ¬¥âàë: |
* eax = 50 - ®¬¥à äãªæ¨¨ |
* ebx = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx § ¤ ¸â ¬ áèâ ¡: ª ¦¤ë© ¡ ©â ¤ ëå ®¯à¥¤¥«ï¥â |
* ecx § ¤ ñâ ¬ áèâ ¡: ª ¦¤ë© ¡ ©â ¤ ëå ®¯à¥¤¥«ï¥â |
(2^scale)*(2^scale) ¯¨ªá¥«¥© |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
2518,8 → 2532,8 |
* eax = 53 - ®¬¥à äãªæ¨¨ |
* ebx = 0 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = «®ª «ìë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* edx = 㤠«¸ë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«¸ë© IP |
* edx = 㤠«ñë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«ñë© IP |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 = 0xFFFFFFFF - ®è¨¡ª ; ebx à §àãè ¥âáï |
* eax = åí¤« ᮪¥â (¥ª®â®à®¥ ç¨á«®, ®¤®§ ç® ¨¤¥â¨ä¨æ¨àãî饥 |
2600,8 → 2614,8 |
* eax = 53 - ®¬¥à äãªæ¨¨ |
* ebx = 5 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = «®ª «ìë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* edx = 㤠«¸ë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«¸ë© IP |
* edx = 㤠«ñë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«ñë© IP |
* edi = ०¨¬ ®âªàëâ¨ï: SOCKET_PASSIVE=0 ¨«¨ SOCKET_ACTIVE=1 |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 = 0xFFFFFFFF - ®è¨¡ª ; ebx à §àãè ¥âáï |
2706,7 → 2720,7 |
* 201: à §¬¥à â ¡«¨æë ARP (¢ í«¥¬¥â å) (20 ¢ ⥪ã饩 ¢¥àᨨ) |
* 202: ¯à®ç¨â âì í«¥¬¥â edx â ¡«¨æë ARP ¢® ¢à¥¬¥ë© ¡ãä¥à, ®âªã¤ |
¡¥àãâ ¨ä®à¬ æ¨î 5 ¯®á«¥¤ãîé¨å ⨯®¢; |
¢ í⮬ á«ãç ¥ eax ¥®¯à¥¤¥«¸ |
¢ í⮬ á«ãç ¥ eax ¥®¯à¥¤¥«ñ |
* 203: IP- ¤à¥á, § ¯®¬¥ë© ⨯®¬ 202 |
* 204: áâ à襥 dword MAC- ¤à¥á , § ¯®¬¥®£® ⨯®¬ 202 |
* 205: ¬« ¤è¥¥ word MAC- ¤à¥á , § ¯®¬¥®£® ⨯®¬ 202 |
2742,9 → 2756,9 |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤ ë¥ ¤®«¦ë ¡ëâì § £àã¦¥ë ¯®¤äãªæ¨¥© 0 ¨ |
®¯à¥¤¥«¸ ¨å ä®à¬ â ¯®¤äãªæ¨¥© 2. |
®¯à¥¤¥«ñ ¨å ä®à¬ â ¯®¤äãªæ¨¥© 2. |
* ãªæ¨ï ¢®§¢à é ¥â ã¯à ¢«¥¨¥, ª®£¤ ç «®áì ¯à®¨£àë¢ ¨¥ ¤ ëå; |
¯®á«¥ í⮣® ¯à®¨£àë¢ ¨¥ ¨¤¸â ¥§ ¢¨á¨¬® ®â ¯à¨«®¦¥¨ï (¨ ¢®®¡é¥ |
¯®á«¥ í⮣® ¯à®¨£àë¢ ¨¥ ¨¤ñâ ¥§ ¢¨á¨¬® ®â ¯à¨«®¦¥¨ï (¨ ¢®®¡é¥ |
¥ âॡã¥â § £à㧪¨ ¯à®æ¥áá®à ). |
* ।¢ à¨â¥«ì® ¤®«¦ë ¡ëâì ®¯à¥¤¥«¥ë ¡ §®¢ë© ¯®àâ SB16 |
(¯®¤äãªæ¨¥© 4 äãªæ¨¨ 21) ¨ ª « DMA |
2782,11 → 2796,11 |
* esi = 㪠§ â¥«ì ¤ ë¥ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* eax = 55 - ®è¨¡ª (ᯨª¥à ®âª«îç¸ ¨«¨ § ïâ) |
* eax = 55 - ®è¨¡ª (ᯨª¥à ®âª«îçñ ¨«¨ § ïâ) |
ë¥ - íâ® ¬ áᨢ í«¥¬¥â®¢ ¯¥à¥¬¥®© ¤«¨ë. |
®à¬ â ª ¦¤®£® í«¥¬¥â ®¯à¥¤¥«ï¥âáï ¯¥à¢ë¬ ¡ ©â®¬: |
* 0 = ª®¥æ ¤ ëå |
* 1..0x80 = § ¤ ¸â ¤«¨â¥«ì®áâì §¢ãç ¨ï ¢ á®âëå ¤®«ïå ᥪã¤ë |
* 1..0x80 = § ¤ ñâ ¤«¨â¥«ì®áâì §¢ãç ¨ï ¢ á®âëå ¤®«ïå ᥪã¤ë |
®âë, ®¯à¥¤¥«ï¥¬®© ¥¯®á।áâ¢¥ë¬ § 票¥¬ ç áâ®âë |
* á«¥¤ãî饥 á«®¢® (2 ¡ ©â ) ᮤ¥à¦¨â ¤¥«¨â¥«ì ç áâ®âë; |
ç áâ®â ®¯à¥¤¥«ï¥âáï ª ª 1193180/divider |
2793,7 → 2807,7 |
* 0x81 = invalid |
* 0x82..0xFF = ®â , ®¯à¥¤¥«ï¥¬ ï ®ªâ ¢®© ¨ ®¬¥à®¬: |
* ¤«¨â¥«ì®áâì ¢ á®âëå ¤®«ïå ᥪã¤ë = (¯¥à¢ë© ¡ ©â)-0x81 |
* ¯à¨áãâáâ¢ã¥â ¥é¸ ®¤¨ ¡ ©â; |
* ¯à¨áãâáâ¢ã¥â ¥éñ ®¤¨ ¡ ©â; |
* (¢â®à®© ¡ ©â)=0xFF - ¯ 㧠|
* ¨ ç¥ ® ¨¬¥¥â ¢¨¤ a*0x10+b, £¤¥ b=®¬¥à ®âë ¢ ®ªâ ¢¥ ®â 1 |
¤® 12, a=®¬¥à ®ªâ ¢ë (áç¨â ï á 0) |
2801,12 → 2815,12 |
* ¨é ¨¥ ᯨª¥à®¬ ¬®¦¥â ¡ëâì § ¯à¥é¥®/à §à¥è¥® ¯®¤äãªæ¨¥© 8 |
äãªæ¨¨ 18. |
* ãªæ¨ï ¢®§¢à é ¥â ã¯à ¢«¥¨¥, á®®¡é¨¢ ªã¤ á«¥¤ã¥â ¨ä®à¬ æ¨î |
® § ¯à®á¥. ¬® ¯à®¨£àë¢ ¨¥ ¨¤¸â ¥§ ¢¨á¨¬® ®â ¯à®£à ¬¬ë. |
® § ¯à®á¥. ¬® ¯à®¨£àë¢ ¨¥ ¨¤ñâ ¥§ ¢¨á¨¬® ®â ¯à®£à ¬¬ë. |
* ë¥ ¤®«¦ë á®åà ïâìáï ¢ ¯ ¬ï⨠¯® ªà ©¥© ¬¥à¥ |
¤® ª®æ ¯à®¨£àë¢ ¨ï. |
====================================================================== |
============= ãªæ¨ï 56 - § ¯¨á âì ä ©« ¦¸á⪨© ¤¨áª. ============ |
============= ãªæ¨ï 56 - § ¯¨á âì ä ©« ¦ñá⪨© ¤¨áª. ============ |
====================================================================== |
à ¬¥âàë: |
* eax = 56 - ®¬¥à äãªæ¨¨ |
2819,11 → 2833,11 |
¬¥ç ¨ï: |
* â äãªæ¨ï ãáâ ५ ; äãªæ¨ï 70 ¯®§¢®«ï¥â ¢ë¯®«ïâì |
⥠¦¥ ¤¥©á⢨ï á à áè¨à¥ë¬¨ ¢®§¬®¦®áâﬨ. |
* ï äãªæ¨ï ¯à¥¤¯®« £ ¥â, çâ® ¢® ¢à¥¬ï ¥¸ ¢ë§®¢ ®¤¨¬ |
* ï äãªæ¨ï ¯à¥¤¯®« £ ¥â, çâ® ¢® ¢à¥¬ï ¥ñ ¢ë§®¢ ®¤¨¬ |
¯à¨«®¦¥¨¥¬ ¨ª ª®¥ ¤à㣮¥ ¯à¨«®¦¥¨¥ ¥ à ¡®â ¥â |
á ¦¸á⪨¬ ¤¨áª®¬. |
á ¦ñá⪨¬ ¤¨áª®¬. |
* ãâì ª ä ©«ã - ASCIIZ-áâப , ª®â®à ï ¬®¦¥â ¡ëâì ¯ãá⮩ |
(¥á«¨ ä ©« ᮧ¤ ¸âáï ¢ ª®à¥¢®¬ ª â «®£¥) ¨«¨ ¨¬¥âì ä®à¬ â |
(¥á«¨ ä ©« ᮧ¤ ñâáï ¢ ª®à¥¢®¬ ª â «®£¥) ¨«¨ ¨¬¥âì ä®à¬ â |
/d1/d2/.../dn, £¤¥ ¢á¥ ¨¬¥ ¯ ¯®ª ¤®«¦ë ¨¬¥âì ä®à¬ â 8+3, â.¥. |
8 ᨬ¢®«®¢ ¨¬¥¨ ¨ 3 ᨬ¢®« à áè¨à¥¨ï ¡¥§ à §¤¥«¨â¥«ï, |
¯à¨ ¥®¡å®¤¨¬®á⨠¤®¯®«¥ë¥ ¯à®¡¥« ¬¨; |
2858,7 → 2872,7 |
* /RD/1 = /RAMDISK/1 ¤«ï ¤®áâ㯠ª à ¬¤¨áªã |
* /FD/1 = /FLOPPYDISK/1 ¤«ï ¤®áâ㯠ª ¯¥à¢®¬ã ä«®¯¯¨-¤¨áª®¢®¤ã, |
/FD/2 = /FLOPPYDISK/2 ¤«ï ¢â®à®£® ä«®¯¯¨-¤¨áª®¢®¤ |
* /HD/x = /HARDDISK/x - ãáâ ॢ訩 ¢ ਠ⠤®áâ㯠ª ¦¸á⪮¬ã ¤¨áªã |
* /HD/x = /HARDDISK/x - ãáâ ॢ訩 ¢ ਠ⠤®áâ㯠ª ¦ñá⪮¬ã ¤¨áªã |
(¢ í⮬ á«ãç ¥ ¡ § ®¯à¥¤¥«ï¥âáï ¯®¤äãªæ¨¥© 7 äãªæ¨¨ 21), |
x - ®¬¥à à §¤¥« (áç¨â ï á 1) |
* /HD0/x, /HD1/x, /HD2/x, /HD3/x ¤«ï ¤®áâ㯠ᮮ⢥âá⢥® |
2907,7 → 2921,7 |
* +12 = +0xC: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë ¤ ë¥ |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
2922,7 → 2936,7 |
¤®ªã¬¥â 樨 ¯® FAT. |
* §¬¥à ¯ ¯ª¨ ®¯à¥¤¥«ï¥âáï ¯® à §¬¥àã 楯®çª¨ ª« áâ¥à®¢ ¢ FAT. |
* ᫨ ä ©« ª®ç¨«áï à ìè¥, 祬 ¡ë« ¯à®ç¨â ¯®á«¥¤¨© § ¯à®è¥ë© |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥à¸â |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥àñâ |
eax=6 (EOF). |
* ãªæ¨ï ¯®§¢®«ï¥â ç¨â âì ª®à¥¢ë¥ ¯ ¯ª¨ /rd/1,/fd/x,/hd[n]/x, ® |
¢ ¯¥à¢ëå ¤¢ãå á«ãç ïå ⥪ãé ï ॠ«¨§ æ¨ï ¥ á«¥¤ã¥â |
2936,7 → 2950,7 |
0x1C00=7168 ¡ ©â; ® ¢®§¢à é ¥âáï ebx=0 |
(§ ¨áª«î票¥¬ á«ãç ï ¯à¥¤ë¤ã饣® ¯ãªâ ); |
* ª ª ¨ áâà ®, ¬®¦® ¯à®ç¨â âì 14-© ¡«®ª (â ¬, ¢®®¡é¥ £®¢®àï, |
¬ãá®à - ¯®¬¨ î, áç¸â ¢¥¤¸âáï á 0); |
¬ãá®à - ¯®¬¨ î, áçñâ ¢¥¤ñâáï á 0); |
* ¥á«¨ ¡ë« § ¯à®è¥ å®âï ¡ë ®¤¨ ¡«®ª á ®¬¥à®¬, ¥ ¬¥ì訬 14, |
â® ¢®§¢à é ¥âáï eax=6(EOF); ¨ ç¥ eax=0. |
«ï /fd/x: |
2958,7 → 2972,7 |
====================================================================== |
============ ãªæ¨ï 58, ¯®¤äãªæ¨ï 1 - ¯¥à¥§ ¯¨á âì ä ©«. =========== |
====================================================================== |
᫨ ä ©« ¥ áãé¥áâ¢ã¥â, ® ᮧ¤ ¸âáï. |
᫨ ä ©« ¥ áãé¥áâ¢ã¥â, ® ᮧ¤ ñâáï. |
᫨ ä ©« áãé¥áâ¢ã¥â, ® ¯¥à¥§ ¯¨áë¢ ¥âáï. |
à ¬¥âàë: |
* eax = 58 - ®¬¥à äãªæ¨¨ |
2970,7 → 2984,7 |
* +12 = +0xC: dword: 㪠§ â¥«ì ¤ ë¥ ¤«ï § ¯¨á¨ |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
2991,7 → 3005,7 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
2998,7 → 3012,7 |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* à¨ à ¡®â¥ á ¤¨áª¥â®© ¥ á«¥¤ã¥â 㤠«ïâì ¥¯ãáâãî ¯ ¯ªã. |
®¤ à ¡®âë á ¦¸á⪨¬ ¤¨áª®¬ ¥¯ãáâë¥ ¯ ¯ª¨ 㤠«ï¥â ª®à४⮠|
®¤ à ¡®âë á ¦ñá⪨¬ ¤¨áª®¬ ¥¯ãáâë¥ ¯ ¯ª¨ 㤠«ï¥â ª®à४⮠|
(â.¥. ४ãàᨢ® á® ¢á¥¬¨ ä ©« ¬¨ ¨ ¢«®¦¥ë¬¨ ¯ ¯ª ¬¨). |
¬¤¨áª ¯ ¯®ª ¥ ¯®¤¤¥à¦¨¢ ¥â. |
3015,20 → 3029,21 |
* +12 = +0xC: dword: 㪠§ â¥«ì ¤ ë¥ ¤«ï § ¯¨á¨ |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* â äãªæ¨ï ãáâ ५ , ¨á¯®«ì§ã©â¥ ¯®¤äãªæ¨î 3 äãªæ¨¨ 70. |
* ¬¤¨áª ¨ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ îâ íâã äãªæ¨î, ® ⮫쪮 ¤«ï |
¦¸áâª¨å ¤¨áª®¢. |
¦ñáâª¨å ¤¨áª®¢. |
* ©« ¤®«¦¥ 㦥 áãé¥á⢮¢ âì (¨ ç¥ ¢®§¢à é ¥âáï 5, not found). |
«ï ᮧ¤ ¨ï ä ©«®¢ ¨á¯®«ì§ã©â¥ ¯®¤äãªæ¨î 1. |
* ᫨ ç «ì ï ¯®§¨æ¨ï ¡®«ìè¥ à §¬¥à ä ©« , ¢®§¢à é ¥âáï |
eax=6(EOF). ᫨ ª®¥ç ï ¯®§¨æ¨ï ¡®«ìè¥ à §¬¥à ä ©« , |
ä ©« à áè¨àï¥âáï. |
* ®¤ ®¡à ¡®âª¨ § ¯¨á¨ ¤ ëå ¤«ï ¦¸á⪮£® ¤¨áª ¨â¥à¯à¥â¨àã¥â |
* ®¤ ®¡à ¡®âª¨ § ¯¨á¨ ¤ ëå ¤«ï ¦ñá⪮£® ¤¨áª ¨â¥à¯à¥â¨àã¥â |
ã«¥¢®¥ § 票¥ ¯®«ï +8 ª ª 㪠§ ¨¥ ãá¥ç¥¨ï ä ©« ¤® à §¬¥à , |
㪠§ ®£® ¢ ¯®«¥ +4. ¤ ª® ª®¤ ®¡à ¡®âª¨ 58-© äãªæ¨¨ ¡«®ª¨àã¥â |
íâã ¢®§¬®¦®áâì ¤«ï ¯à¨«®¦¥¨©, áà §ã ¢®§¢à é ï ã¯à ¢«¥¨¥ |
3047,7 → 3062,7 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
3054,7 → 3069,7 |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* ¬¤¨áª ¨ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ îâ íâã äãªæ¨î, |
® ⮫쪮 ¤«ï ¦¸áâª¨å ¤¨áª®¢. |
® ⮫쪮 ¤«ï ¦ñáâª¨å ¤¨áª®¢. |
====================================================================== |
== ãªæ¨ï 58, ¯®¤äãªæ¨ï 5 - ¯¥à¥¨¬¥®¢ âì/¯¥à¥¬¥áâ¨âì ä ©«/¯ ¯ªã. == |
3069,11 → 3084,11 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
* +20+n: (áà §ã ¯®á«¥ § ¢¥àè î饣® ã«¥¢®£® ᨬ¢®« ) ®¢®¥ |
ASCIIZ-¨¬ï, ¤®«¦® ç¨ âìáï á /hd/1, çâ® ¨â¥à¯à¥â¨àã¥âáï ª ª |
¦¸á⪨© ¤¨áª, 㪠§ ë© ¢ ¯¥à¢®¬ ¨¬¥¨ |
¦ñá⪨© ¤¨áª, 㪠§ ë© ¢ ¯¥à¢®¬ ¨¬¥¨ |
(¯¥à¥¬¥é¥¨¥ á ®¤®£® ¤¨áª ¤à㣮© ¥ ¯®¤¤¥à¦¨¢ ¥âáï) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
3080,10 → 3095,10 |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* ¬¤¨áª ¨ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ îâ íâã äãªæ¨î, |
® ⮫쪮 ¤«ï ¦¸áâª¨å ¤¨áª®¢. |
® ⮫쪮 ¤«ï ¦ñáâª¨å ¤¨áª®¢. |
* ᫨ ®¢®¥ ASCIIZ-¨¬ï á¨«ì® ¥¯à ¢¨«ì®¥, â.¥. ¥ ç¨ ¥âáï á |
/hd/1, /hd/first, /harddisk/1, /harddisk/first ¨«¨ ¯®á«¥ í⮣® |
ç « ¨¤¸â ¯à®¡¥« ¨«¨ ᨬ¢®« á ª®¤®¬ 0, â® äãªæ¨ï ¢®§¢à é ¥â, |
ç « ¨¤ñ⠯஡¥« ¨«¨ ᨬ¢®« á ª®¤®¬ 0, â® äãªæ¨ï ¢®§¢à é ¥â, |
ª ª ¨ áâà ®, ª®¤ ®è¨¡ª¨ 4. â® ¥¤¨á⢥ ï äãªæ¨ï, ª®â®à ï |
¢®®¡é¥ ¢®§¢à é ¥â íâ®â ª®¤. |
3115,7 → 3130,7 |
(§ ¨áª«î票¥¬ ¯à¥¤ë¤ã饣® á«ãç ï): |
* eax = 5 |
* ebx ¥ ¬¥ï¥âáï |
* ¥á«¨ LBA-¤®áâ㯠§ ¯à¥é¸ ¯®¤äãªæ¨¥© 11 äãªæ¨¨ 21: |
* ¥á«¨ LBA-¤®áâ㯠§ ¯à¥éñ ¯®¤äãªæ¨¥© 11 äãªæ¨¨ 21: |
* eax = 2 |
* ebx à §àãè ¥âáï |
* ¤«ï à ¬¤¨áª : ¯®¯ë⪠çâ¥¨ï ¡«®ª § ¯à¥¤¥« ¬¨ à ¬¤¨áª |
3128,17 → 3143,17 |
* §¬¥à ¡«®ª - 512 ¡ ©â; ç¨â ¥âáï ®¤¨ ¡«®ª. |
* ¥ á«¥¤ã¥â ¯®« £ âìáï ¢®§¢à é ¥¬®¥ § 票¥, |
®® ¬®¦¥â ¨§¬¥¨âìáï ¢ á«¥¤ãîé¨å ¢¥àá¨ïå. |
* ॡã¥âáï, çâ®¡ë ¡ë« à §à¥è¸ LBA-¤®áâ㯠ª ãáâனá⢠¬ |
* ॡã¥âáï, çâ®¡ë ¡ë« à §à¥èñ LBA-¤®áâ㯠ª ãáâனá⢠¬ |
¯®¤äãªæ¨¥© 11 äãªæ¨¨ 21. § âì íâ® ¬®¦® ¢ë§®¢®¬ |
¯®¤äãªæ¨¥© 11 äãªæ¨¨ 26. |
* LBA-ç⥨¥ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ ¥âáï. |
* ãªæ¨ï áç¨âë¢ ¥â ¤ ë¥ ä¨§¨ç¥áª®£® ¦¸á⪮£® ¤¨áª ; |
* ãªæ¨ï áç¨âë¢ ¥â ¤ ë¥ ä¨§¨ç¥áª®£® ¦ñá⪮£® ¤¨áª ; |
¥á«¨ ¯® ª ª¨¬-â® ¯à¨ç¨ ¬ ã¦ë ¤ ë¥ ª®ªà¥â®£® à §¤¥« , |
¯à¨¤¸âáï ®¯à¥¤¥«ïâì ç «ìë© á¥ªâ®à í⮣® à §¤¥« |
¯à¨¤ñâáï ®¯à¥¤¥«ïâì ç «ìë© á¥ªâ®à í⮣® à §¤¥« |
(«¨¡® ¯àï¬ãî ç¥à¥§ MBR, «¨¡® ¨§ à áè¨à¥®© áâàãªâãàë, |
¢®§¢à é ¥¬®© ⮩ ¦¥ ¯®¤äãªæ¨¥© 11 äãªæ¨¨ 18). |
* ãªæ¨ï ¥ ¯à®¢¥àï¥â ª®¤ ®è¨¡ª¨ ¦¸á⪮£® ¤¨áª , â ª çâ® § ¯à®á |
¥áãé¥áâ¢ãî饣® ᥪâ®à ¢á¸ à ¢® çâ®-â® ¯à®ç¨â ¥â |
* ãªæ¨ï ¥ ¯à®¢¥àï¥â ª®¤ ®è¨¡ª¨ ¦ñá⪮£® ¤¨áª , â ª çâ® § ¯à®á |
¥áãé¥áâ¢ãî饣® ᥪâ®à ¢áñ à ¢® çâ®-â® ¯à®ç¨â ¥â |
(¢¥à®ï⥥ ¢á¥£®, 㫨, ® íâ® ®¯à¥¤¥«ï¥âáï ãáâனá⢮¬) ¨ |
íâ® ¡ã¤¥â áç¨â âìáï ãᯥ宬 (eax=0). |
3165,7 → 3180,7 |
* ebx = ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ = 2847 |
* ecx = ç¨á«® ᢮¡®¤ëå ª« áâ¥à®¢ |
* dword [fileinfo] = à §¬¥à ª« áâ¥à = 512 |
* ¤«ï ¦¸á⪮£® ¤¨áª : ¡ § ¨ à §¤¥« ®¯à¥¤¥«ïîâáï ¯®¤äãªæ¨ï¬¨ 7 ¨ 8 |
* ¤«ï ¦ñá⪮£® ¤¨áª : ¡ § ¨ à §¤¥« ®¯à¥¤¥«ïîâáï ¯®¤äãªæ¨ï¬¨ 7 ¨ 8 |
äãªæ¨¨ 21: |
* eax = 0 (ãᯥå) |
* ebx = ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ |
3178,10 → 3193,10 |
pushad-áâàãªâãàë, ¯¥à¥¤ î饩áï ª ª à£ã¬¥â á¨á⥬®© äãªæ¨¨). |
¥¯¥àì íâ® ¨á¯à ¢«¥®, â ª çâ®, ¢®§¬®¦®, ¨¬¥¥â á¬ëá« ¢®§¢à é âì |
à §¬¥à ª« áâ¥à ¢ edx, ¯®ª íâã äãªæ¨î ¥ ç «¨ ¨á¯®«ì§®¢ âì. |
* ®®¡é¥-â® ¥é¸ áãé¥áâ¢ã¥â ¯®¤äãªæ¨ï 11 äãªæ¨¨ 18, ¢®§¢à é îé ï |
* ®®¡é¥-â® ¥éñ áãé¥áâ¢ã¥â ¯®¤äãªæ¨ï 11 äãªæ¨¨ 18, ¢®§¢à é îé ï |
¨ä®à¬ æ¨î ® ä ©«®¢®© á¨á⥬¥. ® à áè¨à¥®© â ¡«¨æ¥ ¤¨áª®¢®© |
¯®¤á¨áâ¥¬ë ¬®¦® ®¯à¥¤¥«¨âì à §¬¥à ª« áâ¥à (â ¬ ® åà ¨âáï |
¢ ᥪâ®à å) ¨ ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ ¤«ï ¦¸áâª¨å ¤¨áª®¢. |
¢ ᥪâ®à å) ¨ ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ ¤«ï ¦ñáâª¨å ¤¨áª®¢. |
====================================================================== |
========== ãªæ¨ï 58, ¯®¤äãªæ¨ï 16 - § ¯ãáâ¨âì ¯à®£à ¬¬ã. ========== |
3198,7 → 3213,7 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax > 0 - ¯à®£à ¬¬ § £à㦥 , eax ᮤ¥à¦¨â PID |
3210,7 → 3225,7 |
(ASCIIZ-áâப ); ãç¨âë¢ îâáï «¨¡® ¢á¥ ᨬ¢®«ë ¤® § ¢¥àè î饣® ã«ï |
¢ª«îç¨â¥«ì®, «¨¡® ¯¥à¢ë¥ 256 ᨬ¢®«®¢, ¢ § ¢¨á¨¬®á⨠®â ⮣®, |
çâ® ¬¥ìè¥. |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ ¸âáï |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ ñâáï |
¢ § ¬®à®¦¥®¬ á®áâ®ï¨¨; ¤«ï § ¯ã᪠¨á¯®«ì§ã©â¥ |
¯®¤äãªæ¨î 5 äãªæ¨¨ 69. |
3248,7 → 3263,7 |
¨§ ï¤à ã¡à âì ᮢᥬ, ¢¬¥áâ¥ á ¯à¨«®¦¥¨¥¬ systrace. |
* ä®à¬ æ¨ï ® á¨á⥬ëå ¢ë§®¢ å á®åà ï¥âáï ¢ |
á¨á⥬®¬ ª®«ì楢®¬ ¡ãä¥à¥ 0x10 ¢å®¤®¢. |
â äãªæ¨ï ¯à®áâ® ª®¯¨àã¥â 㪠§ ë© ®¡ê¸¬ ¤ ëå |
â äãªæ¨ï ¯à®áâ® ª®¯¨àã¥â 㪠§ ë© ®¡êñ¬ ¤ ëå |
¨§ 㯮¬ïã⮣® ¡ãä¥à ¯® 㪠§ ®¬ã ¤à¥áã. |
* ª®© ¨§ ¢å®¤®¢ ¢ ¡ãä¥à¥ ᮮ⢥âáâ¢ã¥â ¯®á«¥¤¥¬ã ¢ë§®¢ã, |
¬®¦® ®¯à¥¤¥«¨âì ¯® § 票î eax, ¨¬¥®, |
3271,7 → 3286,7 |
¨â¥à¯à¥â¨à®¢ âì ª®ªà¥â®¥ á®®¡é¥¨¥. |
-------- ®¤äãªæ¨ï 1 - ãáâ ®¢¨âì ®¡« áâì ¤«ï ¯®«ã票ï IPC --------- |
ë§ë¢ ¥âáï ¯à®æ¥áᮬ-¯à¨¸¬¨ª®¬. |
ë§ë¢ ¥âáï ¯à®æ¥áᮬ-¯à¨ñ¬¨ª®¬. |
à ¬¥âàë: |
* eax = 60 - ®¬¥à äãªæ¨¨ |
* ebx = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
3298,21 → 3313,21 |
à ¬¥âàë: |
* eax = 60 - ®¬¥à äãªæ¨¨ |
* ebx = 2 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = PID ¯à¨¸¬¨ª |
* ecx = PID ¯à¨ñ¬¨ª |
* edx = 㪠§ â¥«ì ¤ ë¥ á®®¡é¥¨ï |
* esi = ¤«¨ á®®¡é¥¨ï (¢ ¡ ©â å) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* eax = 1 - ¯à¨¸¬¨ª ¥ ®¯à¥¤¥«¨« ¡ãä¥à ¤«ï IPC-á®®¡é¥¨© |
(¬®¦¥â ¡ëâì, ¥é¸ ¥ ãᯥ«, ¬®¦¥â ¡ëâì, íâ® ¥ â®â ¯®â®ª, |
* eax = 1 - ¯à¨ñ¬¨ª ¥ ®¯à¥¤¥«¨« ¡ãä¥à ¤«ï IPC-á®®¡é¥¨© |
(¬®¦¥â ¡ëâì, ¥éñ ¥ ãᯥ«, ¬®¦¥â ¡ëâì, íâ® ¥ â®â ¯®â®ª, |
ª®â®àë© ã¦¥) |
* eax = 2 - ¯à¨¸¬¨ª § ¡«®ª¨à®¢ « IPC-¡ãä¥à; |
* eax = 2 - ¯à¨ñ¬¨ª § ¡«®ª¨à®¢ « IPC-¡ãä¥à; |
¯®¯à®¡ã©â¥ ¥¬®£® ¯®¤®¦¤ âì |
* eax = 3 - ¯¥à¥¯®«¥¨¥ IPC-¡ãä¥à ¯à¨¸¬¨ª |
* eax = 3 - ¯¥à¥¯®«¥¨¥ IPC-¡ãä¥à ¯à¨ñ¬¨ª |
* eax = 4 - ¯à®æ¥áá /¯®â®ª á â ª¨¬ PID ¥ áãé¥áâ¢ã¥â |
¬¥ç ¨ï: |
* ¨á⥬ áà §ã ¯®á«¥ § ¯¨á¨ IPC-á®®¡é¥¨ï ¢ ¡ãä¥à ¯®áë« ¥â |
¯®â®ªã-¯à¨¸¬¨ªã ᮡë⨥ á ª®¤®¬ 7 (á¬. ª®¤ë ᮡë⨩). |
¯®â®ªã-¯à¨ñ¬¨ªã ᮡë⨥ á ª®¤®¬ 7 (á¬. ª®¤ë ᮡë⨩). |
====================================================================== |
=== ãªæ¨ï 61 - ¯®«ãç¨âì ¯ à ¬¥âàë ¤«ï ¯àאַ£® ¤®áâ㯠ª £à 䨪¥. === |
3341,7 → 3356,7 |
ᮡá⢥® LFB, â ª çâ® ç⥨¥/§ ¯¨áì ¯® gs ¯à¨¢®¤ïâ |
¥¯®á।á⢥® ª ¨§¬¥¥¨î ᮤ¥à¦¨¬®£® íªà . à¨ à ¡®â¥ ¢ |
¢¨¤¥®à¥¦¨¬ å ¡¥§ LFB gs 㪠§ë¢ ¥â ¥ª®â®àãî ®¡« áâì ¤ ëå |
ï¤à , ¯à¨ç¸¬ ¢á¥ äãªæ¨¨ ¢ë¢®¤ íªà ¤®¡à®á®¢¥áâ® ¢ë¯®«ïîâ |
ï¤à , ¯à¨çñ¬ ¢á¥ äãªæ¨¨ ¢ë¢®¤ íªà ¤®¡à®á®¢¥áâ® ¢ë¯®«ïîâ |
¤¢®©ãî à ¡®âã ¯® § ¯¨á¨ ¥¯®á।á⢥® íªà ¨ ¯® § ¯¨á¨ |
¢ íâ®â ¡ãä¥à. १ã«ìâ ⥠¯à¨ ç⥨¨ ᮤ¥à¦¨¬®£® í⮣® ¡ãä¥à |
१ã«ìâ âë ᮮ⢥âáâ¢ãîâ ᮤ¥à¦¨¬®¬ã íªà |
3358,7 → 3373,7 |
®§¢à é ¥¬®¥ § 票¥: |
* eax = [à §à¥è¥¨¥ ¯® ®á¨ x]*65536 + [à §à¥è¥¨¥ ¯® ®á¨ y] |
¬¥ç ¨ï: |
* ®¦® ¨á¯®«ì§®¢ âì äãªæ¨î 14 á ãç¸â®¬ ⮣®, çâ® ® ¢®§¢à é ¥â |
* ®¦® ¨á¯®«ì§®¢ âì äãªæ¨î 14 á ãçñ⮬ ⮣®, çâ® ® ¢®§¢à é ¥â |
à §¬¥àë 1 ¬¥ìè¥. â® ¯®«®áâìî íª¢¨¢ «¥âë© á¯®á®¡. |
------------------------ ¨á«® ¡¨â ¯¨ªá¥«ì ------------------------ |
3373,7 → 3388,7 |
* eax = 61 - ®¬¥à äãªæ¨¨ |
* ebx = 3 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = ç¨á«® ¡ ©â, ª®â®à®¥ § ¨¬ ¥â ®¤ áâப à §¢¸à⪨ |
* eax = ç¨á«® ¡ ©â, ª®â®à®¥ § ¨¬ ¥â ®¤ áâப à §¢ñà⪨ |
(£®à¨§®â «ì ï «¨¨ï íªà ¥) |
====================================================================== |
3383,11 → 3398,11 |
* eax = 62 - ®¬¥à äãªæ¨¨ |
* bl = 0 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥é¸; ¨ ç¥ |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥éñ; ¨ ç¥ |
* ah.al = ¢¥àá¨ï PCI-¨â¥à䥩á (ah=¢¥àá¨ï, al=¯®¤¢¥àá¨ï) |
* áâ à襥 á«®¢® eax ®¡ã«¥® |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è¸ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ᫨ PCI BIOS ¥ ¯®¤¤¥à¦¨¢ ¥âáï, â® § 票¥ ax ¥®¯à¥¤¥«¥®. |
3398,10 → 3413,10 |
* eax = 62 - ®¬¥à äãªæ¨¨ |
* bl = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥é¸; ¨ ç¥ |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥éñ; ¨ ç¥ |
* al = ®¬¥à ¯®á«¥¤¥© PCI-è¨ë; ®á⠢訥áï ¡ ©âë eax à §àãè îâáï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è¸ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ᫨ PCI BIOS ¥ ¯®¤¤¥à¦¨¢ ¥âáï, â® § 票¥ al ¥®¯à¥¤¥«¥®. |
3413,10 → 3428,10 |
* eax = 62 - ®¬¥à äãªæ¨¨ |
* bl = 2 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥é¸; ¨ ç¥ |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥éñ; ¨ ç¥ |
* al = ¬¥å ¨§¬ (1 ¨«¨ 2); ¯à®ç¨¥ ¡ ©âë eax à §àãè îâáï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è¸ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ¥å ¨§¬ ®¡à é¥¨ï ¢ë¡¨à ¥âáï ¢ ᮮ⢥âá⢨¨ |
á å à ªâ¥à¨á⨪ ¬¨ ®¡®à㤮¢ ¨ï. |
3434,15 → 3449,15 |
* bh = ®¬¥à PCI-è¨ë |
* ch = dddddfff, £¤¥ ddddd = ®¬¥à ãáâனá⢠訥, |
fff = ®¬¥à äãªæ¨¨ ãáâனá⢠|
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì ç¸âë¬ ¤«ï bl=5, |
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì çñâë¬ ¤«ï bl=5, |
¤¥«¨âìáï 4 ¤«ï bl=6) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ®è¨¡ª (§ ¯à¥é¸ ¤®áâ㯠ª PCI ¨«¨ |
* eax = -1 - ®è¨¡ª (§ ¯à¥éñ ¤®áâ㯠ª PCI ¨«¨ |
¥¯®¤¤¥à¦¨¢ ¥¬ë¥ ¯ à ¬¥âàë); ¨ ç¥ |
* al/ax/eax (¢ § ¢¨á¨¬®á⨠®â § ¯à®è¥®£® à §¬¥à ) ᮤ¥à¦¨â ¤ ë¥; |
®áâ ¢è ïáï ç áâì ॣ¨áâà eax à §àãè ¥âáï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è¸ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ¥å ¨§¬ ¤®áâ㯠2 ¯®¤¤¥à¦¨¢ ¥â ⮫쪮 16 ãáâனá⢠訥 ¨ |
¨£®à¨àã¥â ®¬¥à äãªæ¨¨. ®«ãç¨âì ¬¥å ¨§¬ ¤®áâ㯠¬®¦® ¢ë§®¢®¬ |
3465,16 → 3480,16 |
* bh = ®¬¥à PCI-è¨ë |
* ch = dddddfff, £¤¥ ddddd = ®¬¥à ãáâனá⢠訥, |
fff = ®¬¥à äãªæ¨¨ ãáâனá⢠|
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì ç¸âë¬ ¤«ï bl=9, |
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì çñâë¬ ¤«ï bl=9, |
¤¥«¨âìáï 4 ¤«ï bl=10) |
* dl/dx/edx (¢ § ¢¨á¨¬®á⨠®â § ¯à®è¥®£® à §¬¥à ) ᮤ¥à¦¨â |
¤ ë¥ ¤«ï § ¯¨á¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ®è¨¡ª (§ ¯à¥é¸ ¤®áâ㯠ª PCI ¨«¨ |
* eax = -1 - ®è¨¡ª (§ ¯à¥éñ ¤®áâ㯠ª PCI ¨«¨ |
¥¯®¤¤¥à¦¨¢ ¥¬ë¥ ¯ à ¬¥âàë) |
* eax = 0 - ãá¯¥è® |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è¸ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ¥å ¨§¬ ¤®áâ㯠2 ¯®¤¤¥à¦¨¢ ¥â ⮫쪮 16 ãáâனá⢠訥 ¨ |
¨£®à¨àã¥â ®¬¥à äãªæ¨¨. ®«ãç¨âì ¬¥å ¨§¬ ¤®áâ㯠¬®¦® ¢ë§®¢®¬ |
3492,16 → 3507,16 |
¤ ë¥ ¨ ¨§ ª®â®à®£® ¤àã£ ï ¯à®£à ¬¬ ¬®¦¥â í⨠¤ ë¥ ¯à®ç¨â âì. |
áâì ᮣ« 襨¥, ¢ ᮮ⢥âá⢨¨ á ª®â®àë¬ § ¯¨áë¢ ¥¬ë¥ ¤ ë¥ - |
⥪áâ®¢ë¥ áâப¨, ¨â¥à¯à¥â¨àã¥¬ë¥ ª ª ®â« ¤®çë¥ á®®¡é¥¨ï ® 室¥ |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë. ¤à® ¢ ®¯à¥¤¥«¸ëå á¨âã æ¨ïå â ª¦¥ § ¯¨áë¢ ¥â |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë. ¤à® ¢ ®¯à¥¤¥«ñëå á¨âã æ¨ïå â ª¦¥ § ¯¨áë¢ ¥â |
¤®áªã ®â« ¤ª¨ ᢥ¤¥¨ï ® ¢ë¯®«¥¨¨ ¥ª®â®àëå äãªæ¨©; |
¯® ᮣ« 襨î á®®¡é¥¨ï ï¤à ç¨ îâáï á ¯à¥ä¨ªá "K : ". |
«ï ¯à®á¬®âà ¤®áª¨ ®â« ¤ª¨ ᮧ¤ ® ¯à¨«®¦¥¨¥ board, |
ª®â®à®¥ áç¨âë¢ ¥â ¤ ë¥ ¨§ ¡ãä¥à ¨ ®â®¡à ¦ ¥â ¨å ¢ ᢮¸¬ ®ª¥. board |
ª®â®à®¥ áç¨âë¢ ¥â ¤ ë¥ ¨§ ¡ãä¥à ¨ ®â®¡à ¦ ¥â ¨å ¢ ᢮ñ¬ ®ª¥. board |
¯®¨¬ ¥â ¯®á«¥¤®¢ ⥫ì®áâì ª®¤®¢ 13,10 ª ª ¯¥à¥å®¤ ®¢ãî áâபã. |
¨¬¢®« á ã«¥¢ë¬ ª®¤®¬ ¢ ª®æ¥ áâப¨ ¥ ®¡ï§ ⥫¥, ® ¨ ¥ ¬¥è ¥â. |
á¢ï§¨ á ¯®ï¢«¥¨¥¬ ®â« ¤ç¨ª 楮áâì ¤®áª¨ ®â« ¤ª¨ ¥áª®«ìª® |
ᨧ¨« áì, ¯®áª®«ìªã ®â« ¤ç¨ª ¯®§¢®«ï¥â ¯®«®áâìî ª®â஫¨à®¢ âì 室 |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë, ¯à¨ç¸¬ ¤«ï í⮣® ¥ âॡã¥âáï ¨ª ª¨å ãᨫ¨© |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë, ¯à¨çñ¬ ¤«ï í⮣® ¥ âॡã¥âáï ¨ª ª¨å ãᨫ¨© |
á® áâ®à®ë á ¬®© ¯à®£à ¬¬ë. ¥¬ ¥ ¬¥¥¥ ¢® ¬®£¨å á«ãç ïå |
¤®áª ®â« ¤ª¨ ¯à®¤®«¦ ¥â ®áâ ¢ âìáï ¯®«¥§®©. |
3548,7 → 3563,7 |
================= ãªæ¨ï 66 - à ¡®â á ª« ¢¨ âãன. ================= |
====================================================================== |
¥¦¨¬ ¢¢®¤ ¢«¨ï¥â १ã«ìâ âë çâ¥¨ï ª« ¢¨è äãªæ¨¥© 2. |
ਠ§ £à㧪¥ ¯à®£à ¬¬ë ¤«ï ¥¸ ãáâ ¢«¨¢ ¥âáï ASCII-०¨¬ ¢¢®¤ . |
ਠ§ £à㧪¥ ¯à®£à ¬¬ë ¤«ï ¥ñ ãáâ ¢«¨¢ ¥âáï ASCII-०¨¬ ¢¢®¤ . |
-------- ®¤äãªæ¨ï 1 - ãáâ ®¢¨âì ०¨¬ ¢¢®¤ á ª« ¢¨ âãàë. --------- |
à ¬¥âàë: |
3579,14 → 3594,14 |
* ¡¨â 3 (¬ ᪠8): ¯à ¢ë© Ctrl ¦ â |
* ¡¨â 4 (¬ ᪠0x10): «¥¢ë© Alt ¦ â |
* ¡¨â 5 (¬ ᪠0x20): ¯à ¢ë© Alt ¦ â |
* ¡¨â 6 (¬ ᪠0x40): CapsLock ¢ª«îç¸ |
* ¡¨â 7 (¬ ᪠0x80): NumLock ¢ª«îç¸ |
* ¡¨â 8 (¬ ᪠0x100): ScrollLock ¢ª«îç¸ |
* ¡¨â 6 (¬ ᪠0x40): CapsLock ¢ª«îçñ |
* ¡¨â 7 (¬ ᪠0x80): NumLock ¢ª«îçñ |
* ¡¨â 8 (¬ ᪠0x100): ScrollLock ¢ª«îçñ |
* ¯à®ç¨¥ ¡¨âë á¡à®è¥ë |
----- ®¤äãªæ¨ï 4 - ãáâ ®¢¨âì ®¡é¥á¨á⥬ãî "£®àïçãî ª« ¢¨èã". ----- |
¦ ⨨ "£®àï祩 ª« ¢¨è¨" ¨§¢¥é îâáï ⮫쪮 ¯à¨«®¦¥¨ï, |
ãáâ ®¢¨¢è¨¥ ¥¸; ªâ¨¢®¥ ¯à¨«®¦¥¨¥ (ª ª®â®à®¬ã ¯®áâ㯠¥â |
ãáâ ®¢¨¢è¨¥ ¥ñ; ªâ¨¢®¥ ¯à¨«®¦¥¨¥ (ª ª®â®à®¬ã ¯®áâ㯠¥â |
¢¥áì ®à¬ «ìë© ¢¢®¤) â ª¨å ª« ¢¨è ¥ ¯®«ãç ¥â. |
§¢¥é¥¨¥ § ª«îç ¥âáï ¢ ¯®á뫪¥ ᮡëâ¨ï á ª®¤®¬ 2. |
à®ç¨â âì "£®àïçãî ª« ¢¨èã" ¬®¦® â ª ¦¥, ª ª ¨ ®¡ëçãî, - |
3594,10 → 3609,10 |
à ¬¥âàë: |
* eax = 66 - ®¬¥à äãªæ¨¨ |
* ebx = 4 - ®¬¥à ¯®¤äãªæ¨¨ |
* cl § ¤ ¸â ᪠ª®¤ ª« ¢¨è¨; |
* cl § ¤ ñâ ᪠ª®¤ ª« ¢¨è¨; |
¨á¯®«ì§ã©â¥ cl=0 ¤«ï § ¤ ¨ï ª®¬¡¨ 権 ⨯ Ctrl+Shift |
* edx = 0xXYZ § ¤ ¸â ¢®§¬®¦ë¥ á®áâ®ï¨ï ã¯à ¢«ïîé¨å ª« ¢¨è: |
* Z (¬« ¤è¨¥ 4 ¡¨â ) § ¤ ¸â á®áâ®ï¨¥ ª« ¢¨è LShift ¨ RShift: |
* edx = 0xXYZ § ¤ ñâ ¢®§¬®¦ë¥ á®áâ®ï¨ï ã¯à ¢«ïîé¨å ª« ¢¨è: |
* Z (¬« ¤è¨¥ 4 ¡¨â ) § ¤ ñâ á®áâ®ï¨¥ ª« ¢¨è LShift ¨ RShift: |
* 0 = ¨ ®¤ ¨§ ª« ¢¨è ¥ ¤®«¦ ¡ëâì ¦ â ; |
* 1 = ஢® ®¤ ¨§ ª« ¢¨è ¤®«¦ ¡ëâì ¦ â ; |
* 2 = ®¡¥ ª« ¢¨è¨ ¤®«¦ë ¡ëâì ¦ âë; |
3645,7 → 3660,7 |
* 票¥ -1 ¤«ï ¯ à ¬¥âà ®§ ç ¥â "¥ ¨§¬¥ïâì"; ¯à¨¬¥à, ¤«ï |
¯¥à¥¬¥é¥¨ï ®ª ¡¥§ ¨§¬¥¥¨ï à §¬¥à®¢ ¬®¦® 㪠§ âì edx=esi=-1. |
* ।¢ à¨â¥«ì® ®ª® ¤®«¦® ¡ëâì ®¯à¥¤¥«¥® äãªæ¨¥© 0. |
¦¥ § ¤ ¸â ç «ìë¥ ª®®à¤¨ âë ¨ à §¬¥àë ®ª . |
¦¥ § ¤ ñâ ç «ìë¥ ª®®à¤¨ âë ¨ à §¬¥àë ®ª . |
* §¬¥àë ®ª ¯®¨¬ îâáï ¢ á¬ëá«¥ äãªæ¨¨ 0, â.¥. |
®¤¨ ¯¨ªá¥«ì ¬¥ìè¥, 祬 ॠ«ìë¥ à §¬¥àë. |
* 맮¢ äãªæ¨¨ ¤«ï ¬ ªá¨¬¨§¨à®¢ ëå ®ª® ¯à®áâ® ¨£®à¨àã¥âáï. |
3655,7 → 3670,7 |
* ãªæ¨ï ¯®áë« ¥â ®ªã ᮡë⨥ ¯¥à¥à¨á®¢ª¨ (á ª®¤®¬ 1). |
====================================================================== |
=== ãªæ¨ï 68, ¯®¤äãªæ¨ï 0 - ¯®«ãç¨âì áç¸â稪 ¯¥à¥ª«î票© § ¤ ç. == |
=== ãªæ¨ï 68, ¯®¤äãªæ¨ï 0 - ¯®«ãç¨âì áçñâ稪 ¯¥à¥ª«î票© § ¤ ç. == |
====================================================================== |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
3671,7 → 3686,7 |
ãªæ¨ï § ¢¥àè ¥â ⥪ã騩 ª¢ ⠢६¥¨, ¢ë¤¥«¥ë© ¯®â®ªã, |
¨ ¯¥à¥ª«îç ¥âáï á«¥¤ãî騩. |
( ª®© ¯®â®ª ª ª®£® ¯à®æ¥áá ¡ã¤¥â á«¥¤ãî騬, ¯à¥¤áª § âì ¥«ì§ï). |
®§¤¥¥, ª®£¤ ¤® ⥪ã饣® ¯®â®ª ¤®©¤¸â ®ç¥à¥¤ì, |
®§¤¥¥, ª®£¤ ¤® ⥪ã饣® ¯®â®ª ¤®©¤ñâ ®ç¥à¥¤ì, |
¢ë¯®«¥¨¥ ¢®§®¡®¢¨âáï. |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
3688,7 → 3703,7 |
* ecx = âॡ㥬®¥ ¤¥©á⢨¥: |
* ecx = 0 - à §à¥è¨âì ¢ë¯®«¥¨¥ ¨áâàãªæ¨¨ rdpmc |
(ReaD Performance-Monitoring Counters) |
* ecx = 1 - 㧠âì, ¢ª«îç¸/¢ëª«îç¥ ªíè |
* ecx = 1 - 㧠âì, ¢ª«îçñ/¢ëª«îç¥ ªíè |
* ecx = 2 - ¢ª«îç¨âì ªíè |
* ecx = 3 - ¢ëª«îç¨âì ªíè |
®§¢à é ¥¬®¥ § 票¥: |
3696,7 → 3711,7 |
* eax = § 票¥ cr4 |
* ¤«ï ecx=1: |
* eax = (cr0 and 0x60000000): |
* eax = 0 - ªíè ¢ª«îç¸ |
* eax = 0 - ªíè ¢ª«îçñ |
* eax <> 0 - ªíè ¢ëª«îç¥ |
* ¤«ï ecx=2 ¨ ecx=3: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
3707,7 → 3722,7 |
MSR = Model Specific Register; ¯®«ë© ᯨ᮪ MSR-ॣ¨áâ஢ ¯à®æ¥áá®à |
ᮤ¥à¦¨âáï ¢ ¤®ªã¬¥â 樨 ¯® ¯à®æ¥áá®àã ( ¯à¨¬¥à, IA-32 Intel |
Architecture Software Developer's Manual, Volume 3, Appendix B); |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮¸ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮ñ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
* ebx = 3 - ®¬¥à ¯®¤äãªæ¨¨ |
3717,10 → 3732,10 |
* ebx:eax = áâ à訩:¬« ¤è¨© dword १ã«ìâ â |
¬¥ç ¨ï: |
* ª § ¨¥ ¢ ecx ¥áãé¥áâ¢ãî饣® ¨«¨ ¥à¥ «¨§®¢ ®£® ¤«ï ¤ ®£® |
¯à®æ¥áá®à MSR ¯®¢«¥ç¸â ¨áª«î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ì¸â ¯®â®ª. |
¯à®æ¥áá®à MSR ¯®¢«¥çñ⠨᪫î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ìñâ ¯®â®ª. |
* ।¢ à¨â¥«ì® á«¥¤ã¥â ®¯à¥¤¥«¨âì, ¯®¤¤¥à¦¨¢ îâáï «¨ MSR ¢ 楫®¬, |
ª®¬ ¤®© cpuid. ç¥ ¢®§¨ª¥â 㦥 ¤à㣮¥ ¨áª«î票¥ ¢ ï¤à¥, |
ª®â®à®¥ ¢á¸ à ¢® ¯à¨¡ì¸â ¯®â®ª. |
ª®â®à®¥ ¢áñ à ¢® ¯à¨¡ìñâ ¯®â®ª. |
====================================================================== |
========= ãªæ¨ï 68, ¯®¤äãªæ¨ï 4 - § ¯¨á âì ¢ MSR-ॣ¨áâà. ========= |
3728,7 → 3743,7 |
MSR = Model Specific Register; ¯®«ë© ᯨ᮪ MSR-ॣ¨áâ஢ ¯à®æ¥áá®à |
ᮤ¥à¦¨âáï ¢ ¤®ªã¬¥â 樨 ¯® ¯à®æ¥áá®àã ( ¯à¨¬¥à, IA-32 Intel |
Architecture Software Developer's Manual, Volume 3, Appendix B); |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮¸ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮ñ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
* ebx = 4 - ®¬¥à ¯®¤äãªæ¨¨ |
3739,10 → 3754,10 |
* ebx:eax = ª®¯¨ï esi:edi |
¬¥ç ¨ï: |
* ª § ¨¥ ¢ ecx ¥áãé¥áâ¢ãî饣® ¨«¨ ¥à¥ «¨§®¢ ®£® ¤«ï ¤ ®£® |
¯à®æ¥áá®à MSR ¯®¢«¥ç¸â ¨áª«î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ì¸â ¯®â®ª. |
¯à®æ¥áá®à MSR ¯®¢«¥çñ⠨᪫î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ìñâ ¯®â®ª. |
* ।¢ à¨â¥«ì® á«¥¤ã¥â ®¯à¥¤¥«¨âì, ¯®¤¤¥à¦¨¢ îâáï «¨ MSR ¢ 楫®¬, |
ª®¬ ¤®© cpuid. ç¥ ¢®§¨ª¥â 㦥 ¤à㣮¥ ¨áª«î票¥ ¢ ï¤à¥, |
ª®â®à®¥ ¢á¸ à ¢® ¯à¨¡ì¸â ¯®â®ª. |
ª®â®à®¥ ¢áñ à ¢® ¯à¨¡ìñâ ¯®â®ª. |
====================================================================== |
======= ãªæ¨ï 68, ¯®¤äãªæ¨ï 5 - ¢ë¤¥«¨âì 䨧¨ç¥áªãî ¯ ¬ïâì. ======= |
3759,7 → 3774,7 |
ãáâனá⢮¬ âॡã¥âáï à §¬¥áâ¨âì ¤ ë¥ ¯® ¨§¢¥á⮬ã 䨧¨ç¥áª®¬ã |
¤à¥áã. ( áãé®áâ¨, íâ äãªæ¨ï à §à ¡ âë¢ « áì ¤«ï AC97WAV.) |
* ¨á«® ¡«®ª®¢ 䨧¨ç¥áª®© ¯ ¬ï⨠®£à ¨ç¥® (ª®áâ ⮩ 24, |
¯à¨ç¸¬ íâ ª®áâ â ¢ª«îç ¥â ¨ ¥áª®«ìª® ¡«®ª®¢ ¯ ¬ï⨠|
¯à¨çñ¬ íâ ª®áâ â ¢ª«îç ¥â ¨ ¥áª®«ìª® ¡«®ª®¢ ¯ ¬ï⨠|
¤«ï ¤®¡®á⥩ ï¤à ). |
* ᢮¡®¤¨âì ¢ë¤¥«¥ãî â ª¨¬ ®¡à §®¬ ¯ ¬ïâì ¬®¦® |
¯®¤äãªæ¨¥© 6, ª®¯¨à®¢ ¨¥¬ ¤ ëå â㤠/®¡à â® |
3830,7 → 3845,7 |
¯à®æ¥áá ¬®¦¥â ¡ëâì ⮫쪮 ®¤¨ ®â« ¤ç¨ª; ®¤¨ ¯à®æ¥áá ¬®¦¥â |
®â« ¦¨¢ âì ¥áª®«ìª® à §ëå. ¨á⥬ 㢥¤®¬«ï¥â ®â« ¤ç¨ª ® ᮡëâ¨ïå, |
¯à®¨á室ïé¨å á ®â« ¦¨¢ ¥¬ë¬ ¯à®æ¥áᮬ. ®®¡é¥¨ï § ¯¨áë¢ îâáï ¢ ¡ãä¥à, |
®¯à¥¤¥«¸ë© ¯®¤äãªæ¨¥© 0. |
®¯à¥¤¥«ñë© ¯®¤äãªæ¨¥© 0. |
®à¬ â á®®¡é¥¨ï: |
* +0: dword: ª®¤ á®®¡é¥¨ï |
* +4: dword: PID ®â« ¦¨¢ ¥¬®£® ¯à®æ¥áá |
3838,7 → 3853,7 |
®¯à¥¤¥«ï¥¬ë¥ ª®¤®¬ á®®¡é¥¨ï |
®¤ë á®®¡é¥¨©: |
* 1 = ¨áª«î票¥ |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ ¸âáï dword-®¬¥à ¨áª«î票ï |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ ñâáï dword-®¬¥à ¨áª«î票ï |
* ¯à®æ¥áá ¯à¨®áâ ®¢«¥ |
* 2 = ¯à®æ¥áá § ¢¥à訫áï |
* ¯à¨å®¤¨â ¯à¨ «î¡®¬ § ¢¥à襨¨: ª ª ç¥à¥§ á¨á⥬ãî äãªæ¨î -1, |
3845,7 → 3860,7 |
â ª ¨ ¯à¨ "㡨©á⢥" «î¡ë¬ ¤à㣨¬ ¯à®æ¥áᮬ |
(¢ ⮬ ç¨á«¥ á ¬¨¬ ®â« ¤ç¨ª®¬) |
* 3 = ®â« ¤®ç®¥ ¨áª«î票¥ int 1 = #DB |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ ¸âáï dword-®¡à § ॣ¨áâà DR6: |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ ñâáï dword-®¡à § ॣ¨áâà DR6: |
* ¡¨âë 0-3: ¢ë¯®«¥® ãá«®¢¨¥ ᮮ⢥âáâ¢ãî饩 â®çª¨ ®áâ ®¢ |
(ãáâ ®¢«¥®© ¯®¤äãªæ¨¥© 9) |
* ¡¨â 14: ¨áª«î票¥ ¯à®¨§®è«® ¨§-§ ०¨¬ |
4054,7 → 4069,7 |
* 01 = á«®¢® |
* 11 = ¤¢®©®¥ á«®¢® |
* esi = ¤à¥á â®çª¨ ®áâ ®¢ ; ¤®«¦¥ ¡ëâì ¢ë஢¥ |
ᮮ⢥âá⢥® ¤«¨¥ (â.¥. ¤®«¦¥ ¡ëâì ç¸âë¬ ¤«ï |
ᮮ⢥âá⢥® ¤«¨¥ (â.¥. ¤®«¦¥ ¡ëâì çñâë¬ ¤«ï |
â®ç¥ª ®áâ ®¢ á«®¢®, ªà ⥠4 ¤«ï ¤¢®©®£® á«®¢ ) |
* ¥á«¨ áâ à訩 ¡¨â ãáâ ®¢«¥ - á¡à®á¨âì â®çªã ®áâ ®¢ |
®§¢à é ¥¬®¥ § 票¥: |
4074,10 → 4089,10 |
* à ¡ âë¢ ¨¥ â®çª¨ ®áâ ®¢ § ª«îç ¥âáï ¢ £¥¥à¨à®¢ ¨¨ |
®â« ¤®ç®£® ¨áª«î票ï #DB, ® ª®â®à®¬ á¨á⥬ á®®¡é ¥â ®â« ¤ç¨ªã. |
* ®çª ®áâ ®¢ § ¯¨áì ¨ ç⥨¥/§ ¯¨áì áà ¡ âë¢ ¥â ¯®á«¥ |
¢ë¯®«¥¨ï ¢ë§¢ ¢è¥© ¥¸ ¨áâàãªæ¨¨. |
¢ë¯®«¥¨ï ¢ë§¢ ¢è¥© ¥ñ ¨áâàãªæ¨¨. |
====================================================================== |
= ãªæ¨ï 70 - à ¡®â á ä ©«®¢®© á¨á⥬®© á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬¸. = |
= ãªæ¨ï 70 - à ¡®â á ä ©«®¢®© á¨á⥬®© á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. = |
====================================================================== |
à ¬¥âàë: |
* eax = 70 |
4107,7 → 4122,7 |
* /FD/1 = /FLOPPYDISK/1 ¤«ï ¤®áâ㯠ª ¯¥à¢®¬ã ä«®¯¯¨-¤¨áª®¢®¤ã, |
/FD/2 = /FLOPPYDISK/2 ¤«ï ¢â®à®£® ä«®¯¯¨-¤¨áª®¢®¤ |
* /HD0/x, /HD1/x, /HD2/x, /HD3/x ¤«ï ¤®áâ㯠ᮮ⢥âá⢥® |
ª ¦¸á⪨¬ ¤¨áª ¬ IDE0 (Primary Master), IDE1 (Primary Slave), |
ª ¦ñá⪨¬ ¤¨áª ¬ IDE0 (Primary Master), IDE1 (Primary Slave), |
IDE2 (Secondary Master), IDE3 (Secondary Slave); |
x - ®¬¥à à §¤¥« ¢ë¡à ®¬ ¢¨ç¥áâ¥à¥, ¨§¬¥ï¥âáï ®â 1 ¤® 255 |
( ª ¦¤®¬ ¨§ ¢¨ç¥áâ¥à®¢ 㬥à æ¨ï ç¨ ¥âáï á 1) |
4123,6 → 4138,7 |
* ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« |
* ¯®¤äãªæ¨ï 1 - ç⥨¥ ¯ ¯ª¨ |
* ¯®¤äãªæ¨ï 2 - ᮧ¤ ¨¥/¯¥à¥§ ¯¨áì ä ©« |
* ¯®¤äãªæ¨ï 3 - § ¯¨áì ¢ áãé¥áâ¢ãî騩 ä ©« |
* ¯®¤äãªæ¨ï 5 - ¯®«ã票¥ âਡã⮢ ä ©« /¯ ¯ª¨ |
* ¯®¤äãªæ¨ï 6 - ãáâ ®¢ª âਡã⮢ ä ©« /¯ ¯ª¨ |
* ¯®¤äãªæ¨ï 7 - § ¯ã᪠¯à®£à ¬¬ë |
4131,7 → 4147,7 |
®è¨¡ª®© á ª®¤®¬ 2. |
====================================================================== |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬¸. = |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. = |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
4142,7 → 4158,7 |
* +8: dword: 0 (§ १¥à¢¨à®¢ ® ¯®¤ áâ à訩 dword ¯®§¨æ¨¨) |
* +12 = +0xC: dword: ᪮«ìª® ¡ ©â ç¨â âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë ¤ ë¥ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4153,13 → 4169,13 |
-1=0xffffffff, ¥á«¨ ä ©« ¥ ©¤¥ |
¬¥ç ¨ï: |
* ᫨ ä ©« ª®ç¨«áï à ìè¥, 祬 ¡ë« ¯à®ç¨â ¯®á«¥¤¨© § ¯à®è¥ë© |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥à¸â |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥àñâ |
eax=6 (EOF). |
* ãªæ¨ï ¥ ¯®§¢®«ï¥â ç¨â âì ¯ ¯ª¨ |
(¢¥à¸âáï eax=10, access denied). |
(¢¥àñâáï eax=10, access denied). |
====================================================================== |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 1 - ç⥨¥ ¯ ¯ª¨ á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬¸. = |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 1 - ç⥨¥ ¯ ¯ª¨ á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. = |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
4175,7 → 4191,7 |
* +12 = +0xC: dword: ᪮«ìª® ¡«®ª®¢ ç¨â âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë |
¤ ë¥, à §¬¥à ¡ãä¥à ¤®«¦¥ ¡ëâì ¥ ¬¥ìè¥ 32 + [+12]*560 ¡ ©â |
* +20 = +0x14: ASCIIZ-¨¬ï ¯ ¯ª¨, ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ¯ ¯ª¨, ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4191,7 → 4207,7 |
* ... |
âàãªâãà § £®«®¢ª : |
* +0: dword: ¢¥àá¨ï áâàãªâãàë (⥪ãé ï ¢¥àá¨ï = 1) |
* +4: dword: ª®«¨ç¥á⢮ à §¬¥é¸ëå ¡«®ª®¢; ¥ ¡®«ìè¥, 祬 § ¯à®è¥® |
* +4: dword: ª®«¨ç¥á⢮ à §¬¥éñëå ¡«®ª®¢; ¥ ¡®«ìè¥, 祬 § ¯à®è¥® |
¢ ¯®«¥ +12 ¨ä®à¬ 樮®© áâàãªâãàë; ¬®¦¥â ¡ëâì ¬¥ìè¥, |
¥á«¨ ¢ ¯ ¯ª¥ ª®ç¨«¨áì ä ©«ë (â® ¦¥ á ¬®¥, çâ® ¨ ¢ ebx) |
* +8: dword: ®¡é¥¥ ç¨á«® ä ©«®¢ ¢ ¯ ¯ª¥ |
4248,7 → 4264,7 |
¤ ë¥ á®¤¥à¦ â ¬ãá®à. |
* ᫨ ä ©«ë ¢ ¯ ¯ª¥ ª®ç¨«¨áì à ìè¥, 祬 ¡ë«® ¯à®ç¨â ® |
§ ¯à®è¥®¥ ª®«¨ç¥á⢮, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, |
¯®á«¥ 祣® ¢¥à¸â eax=6 (EOF). |
¯®á«¥ 祣® ¢¥àñâ eax=6 (EOF). |
* î¡ ï ¯ ¯ª ¤¨áª¥, ªà®¬¥ ª®à¥¢®©, ᮤ¥à¦¨â ¤¢ á¯¥æ¨ «ìëå |
¢å®¤ "." ¨ "..", ¨¤¥â¨ä¨æ¨àãîé¨å ᮮ⢥âá⢥® á ¬ã ¯ ¯ªã ¨ |
த¨â¥«ìáªãî ¯ ¯ªã. |
4259,7 → 4275,7 |
====================================================================== |
====================== ãªæ¨ï 70, ¯®¤äãªæ¨ï 2 ====================== |
======== ®§¤ ¨¥/¯¥à¥§ ¯¨áì ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬¸. ======== |
======== ®§¤ ¨¥/¯¥à¥§ ¯¨áì ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. ======== |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
4270,7 → 4286,7 |
* +8: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +12 = +0xC: dword: ᪮«ìª® ¡ ©â ¯¨á âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¤ ë¥ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4279,13 → 4295,42 |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
* ebx = ç¨á«® § ¯¨á ëå ¡ ©â (¢®§¬®¦®, 0) |
¬¥ç ¨ï: |
* ᫨ ä ©« á â ª¨¬ ¨¬¥¥¬ ¥ áãé¥á⢮¢ «, ® ᮧ¤ ¸âáï; ¥á«¨ |
* ᫨ ä ©« á â ª¨¬ ¨¬¥¥¬ ¥ áãé¥á⢮¢ «, ® ᮧ¤ ñâáï; ¥á«¨ |
áãé¥á⢮¢ «, â® ¯¥à¥§ ¯¨áë¢ ¥âáï. |
* ᫨ ᢮¡®¤®£® ¬¥áâ ¤¨áª¥ ¥¤®áâ â®ç®, â® äãªæ¨ï § ¯¨è¥â, |
᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥à¸â ª®¤ ®è¨¡ª¨ 8. |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥à¸âáï ª®¤ ®è¨¡ª¨ 2). |
᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥àñâ ª®¤ ®è¨¡ª¨ 8. |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥àñâáï ª®¤ ®è¨¡ª¨ 2). |
====================================================================== |
====================== ãªæ¨ï 70, ¯®¤äãªæ¨ï 3 ====================== |
======== ¯¨áì ¢ áãé¥áâ¢ãî騩 ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. ======= |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
* ebx = 㪠§ â¥«ì ¨ä®à¬ 樮ãî áâàãªâãàã |
®à¬ â ¨ä®à¬ 樮®© áâàãªâãàë: |
* +0: dword: 3 = ®¬¥à ¯®¤äãªæ¨¨ |
* +4: dword: ¯®§¨æ¨ï ¢ ä ©«¥ (¢ ¡ ©â å) |
* +8: dword: áâ à訩 dword ¯®§¨æ¨¨ (¤®«¦¥ ¡ëâì 0 ¤«ï FAT) |
* +12 = +0xC: dword: ᪮«ìª® ¡ ©â ¯¨á âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¤ ë¥ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
* +21 = +0x15: dd 㪠§ ⥫ì ASCIIZ-áâபã á ¨¬¥¥¬ ä ©« |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
* ebx = ç¨á«® § ¯¨á ëå ¡ ©â (¢®§¬®¦®, 0) |
¬¥ç ¨ï: |
* ©« ¤®«¦¥ 㦥 áãé¥á⢮¢ âì, ¨ ç¥ ¢¥àñâáï eax=5. |
* ¤¨áâ¢¥ë¬ à¥§ã«ìâ ⮬ § ¯¨á¨ 0 ¡ ©â ï¥âáï ãáâ ®¢ª ¢ |
âਡãâ å ä ©« ¤ âë/¢à¥¬¥¨ ¬®¤¨ä¨ª 樨 ¨ ¤®áâ㯠¢ ⥪ãéãî. |
* ᫨ ç «ì ï ¨/¨«¨ ª®¥ç ï ¯®§¨æ¨ï ¢ë室¨â § ¯à¥¤¥«ë ä ©« |
(§ ¨áª«î票¥¬ ¯à¥¤ë¤ã饣® á«ãç ï), ä ©« à áè¨àï¥âáï ¤® |
¥®¡å®¤¨¬®£® à §¬¥à ã«¥¢ë¬¨ ᨬ¢®« ¬¨. |
====================================================================== |
=== ãªæ¨ï 70, ¯®¤äãªæ¨ï 5 - ¯®«ã票¥ ¨ä®à¬ 樨 ® ä ©«¥/¯ ¯ª¥. === |
====================================================================== |
à ¬¥âàë: |
4298,7 → 4343,7 |
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë ¤ ë¥ |
(40 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4326,7 → 4371,7 |
* +8: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à á âਡãâ ¬¨ (32 ¡ ©â ) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4342,7 → 4387,7 |
¬¥ç ¨ï: |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥â ¢¨àâã «ìë¥ ¯ ¯ª¨ ⨯ /, /rd ¨ |
ª®à¥¢ë¥ ¯ ¯ª¨ ⨯ /rd/1. |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥à¸âáï ª®¤ ®è¨¡ª¨ 2). |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥àñâáï ª®¤ ®è¨¡ª¨ 2). |
====================================================================== |
============ ãªæ¨ï 70, ¯®¤äãªæ¨ï 7 - § ¯ã᪠¯à®£à ¬¬ë. ============ |
4358,7 → 4403,7 |
* +8: dword: 0 ¨«¨ 㪠§ ⥫ì ASCIIZ-áâபã á ¯ à ¬¥âà ¬¨ |
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +16 = +0x10: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬¸ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4373,7 → 4418,7 |
(ASCIIZ-áâப ); ãç¨âë¢ îâáï «¨¡® ¢á¥ ᨬ¢®«ë ¤® § ¢¥àè î饣® ã«ï |
¢ª«îç¨â¥«ì®, «¨¡® ¯¥à¢ë¥ 256 ᨬ¢®«®¢, ¢ § ¢¨á¨¬®á⨠®â ⮣®, |
çâ® ¬¥ìè¥. |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ ¸âáï |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ ñâáï |
¢ § ¬®à®¦¥®¬ á®áâ®ï¨¨; ¤«ï § ¯ã᪠¨á¯®«ì§ã©â¥ |
¯®¤äãªæ¨î 5 äãªæ¨¨ 69. |
4421,7 → 4466,7 |
* 2 = ¦ â ª« ¢¨è ª« ¢¨ âãॠ(¯®áâ㯠¥â, ⮫쪮 ª®£¤ ®ª® |
ªâ¨¢®) ¨«¨ ¦ â "£®àïç ï ª« ¢¨è "; |
á¡à áë¢ ¥âáï, ª®£¤ ¢á¥ ª« ¢¨è¨ ¨§ ¡ãä¥à áç¨â ë äãªæ¨¥© 2 |
* 3 = ¦ â ª®¯ª , ®¯à¥¤¥«¸ ï à ¥¥ äãªæ¨¥© 8 (¨«¨ ª®¯ª |
* 3 = ¦ â ª®¯ª , ®¯à¥¤¥«ñ ï à ¥¥ äãªæ¨¥© 8 (¨«¨ ª®¯ª |
§ ªàëâ¨ï, ᮧ¤ ï ¥ï¢® äãªæ¨¥© 0; ª®¯ª ¬¨¨¬¨§ 樨 |
®¡à ¡ âë¢ ¥âáï á¨á⥬®© ¨ ® ¥© á®®¡é¥¨ï ¥ ¯à¨å®¤¨â; |
¯®áâ㯠¥â, ⮫쪮 ª®£¤ ®ª® ªâ¨¢®; á¡à áë¢ ¥âáï, ª®£¤ ¢á¥ |
4430,7 → 4475,7 |
¯à¨ à §¬ ᪨஢ª¥ äãªæ¨¥© 40) |
* 5 = ¯¥à¥à¨á®¢ë¢ ¥âáï ä® à ¡®ç¥£® á⮫ (á¡à áë¢ ¥âáï |
¢â®¬ â¨ç¥áª¨ ¯®á«¥ ¯¥à¥à¨á®¢ª¨, â ª çâ® ¥á«¨ ¢® ¢à¥¬ï ¯¥à¥à¨á®¢ª¨ |
ä® ¯à®£à ¬¬ ¥ ¦¤¸â ¨ ¥ ¯à®¢¥àï¥â ᮡëâ¨ï, â® í⮣® ᮡëâ¨ï |
ä® ¯à®£à ¬¬ ¥ ¦¤ñâ ¨ ¥ ¯à®¢¥àï¥â ᮡëâ¨ï, â® í⮣® ᮡëâ¨ï |
® ¥ § ¬¥â¨â) |
* 6 = ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ¦ ⨥ ª®¯ªã ¬ëè¨ |
¨«¨ ¯¥à¥¬¥é¥¨¥; á¡à áë¢ ¥âáï ¯à¨ ¯à®ç⥨¨) |
4447,7 → 4492,7 |
==================== ®¤ë ®è¨¡®ª ä ©«®¢®© á¨á⥬ë ==================== |
====================================================================== |
* 0 = ãá¯¥è® |
* 1 = ¥ ®¯à¥¤¥«¥ ¡ § ¨/¨«¨ à §¤¥« ¦¸á⪮£® ¤¨áª (¯®¤äãªæ¨ï¬¨ |
* 1 = ¥ ®¯à¥¤¥«¥ ¡ § ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª (¯®¤äãªæ¨ï¬¨ |
7, 8 äãªæ¨¨ 21) |
* 2 = äãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ®© ä ©«®¢®© á¨á⥬ë |
* 3 = ¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ |
4459,7 → 4504,7 |
* 7 = 㪠§ â¥«ì ¢¥ ¯ ¬ï⨠¯à¨«®¦¥¨ï |
* 8 = ¤¨áª § ¯®«¥ |
* 9 = â ¡«¨æ FAT à §àãè¥ |
* 10 = ¤®áâ㯠§ ¯à¥é¸ |
* 10 = ¤®áâ㯠§ ¯à¥éñ |
* 11 = ®è¨¡ª ãáâனá⢠|
ਠ§ ¯ã᪥ ¯à®£à ¬¬ë ¢®§¬®¦ë â ª¦¥ á«¥¤ãî騥 ª®¤ë ®è¨¡®ª: |
* 30 = 0x1E = ¥¤®áâ â®ç® ¯ ¬ï⨠|
/kernel/branches/gfx_kernel/docs/sysfuncs.txt |
---|
10,7 → 10,7 |
============== Function 0 - define and draw the window. ============== |
====================================================================== |
Defines an application window. Draws a frame of the window, header and |
working area. For windows with skin defines standard buttons for close |
working area. For skinned windows defines standard buttons for close |
and minimize. |
Parameters: |
* eax = 0 - function number |
18,10 → 18,10 |
* ecx = [coordinate on axis y]*65536 + [size on axis y] |
* edx = 0xXYRRGGBB, where: |
* Y = style of the window: |
* Y=0 - type I - window of the fixed size |
* Y=0 - type I - fixed-size window |
* Y=1 - only define window area, draw nothing |
* Y=2 - type II - window of the variable size |
* Y=3 - window with skin |
* Y=2 - type II - variable-size window |
* Y=3 - skinned window |
* other possible values (from 4 up to 15) are reserved, |
function call with such Y is ignored |
* RR, GG, BB = accordingly red, green, blue components of a color |
61,11 → 61,11 |
* The window must fit on the screen. If the transferred |
coordinates and sizes do not satisfy to this condition, |
appropriate coordinate (or, probably, both) is considered as zero, |
and if also it does not help, the appropriate size |
and if it does not help too, the appropriate size |
(or, probably, both) is installed in a size of the screen. |
Further we shall designate xpos,ypos,xsize,ysize - values |
transmitted in ebx,ecx. The coordinates are resulted concerning |
Further let us designate xpos,ypos,xsize,ysize - values passed |
in ebx,ecx. The coordinates are resulted concerning |
the left upper corner of the window, which, thus, is set as (0,0), |
coordinates of the right lower corner essence (xsize,ysize). |
* The sizes of the window are understood in sence of coordinates |
289,7 → 289,7 |
* function does not return value |
Remarks: |
* Sizes of the button must be more than 0 and less than 0x8000. |
* For windows with skin definition of the window |
* For skinned windows definition of the window |
(call of 0th function) creates two standard buttons - |
for close of the window with identifier 1 and |
for minimize of the window with identifier 0xffff. |
926,52 → 926,66 |
process/thread by given slot. |
====================================================================== |
====================== Function 18, subfunction 19 ===================== |
======================= Get/set mouse features. ====================== |
======== Function 18, subfunction 19 - get/set mouse features. ======= |
====================================================================== |
---------------- Subsubfunction 0 - get mouse speed. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = subsubfunction number |
ecx = 0 - get mouse speed |
* ecx = 0 - subsubfunction number |
Returned value: |
* eax = current mouse speed |
ecx = 1 - set mouse speed |
edx = selected value of speed |
---------------- Subsubfunction 1 - set mouse speed. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 1 - subsubfunction number |
* edx = new value for speed |
Returned value: |
* function does not return value |
ecx = 2 - get mouse delay |
---------------- Subsubfunction 2 - get mouse delay. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 2 - subsubfunction number |
Returned value: |
* eax = current mouse delay |
ecx = 3 - set mouse delay |
edx = selected value of delay |
---------------- Subsubfunction 3 - set mouse delay. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 3 - subsubfunction number |
* edx = new value for mouse delay |
Returned value: |
* function does not return value |
ecx = 4 - set mouse pointer position |
edx = [coordinate on axis x]*65536 + [coordinate on axis y] |
----------- Subsubfunction 4 - set mouse pointer position. ----------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 4 - subsubfunction number |
* edx = [coordinate on axis x]*65536 + [coordinate on axis y] |
Returned value: |
* function does not return value |
Remarks: |
* Recommended speed of the mouse (in subfunction 1) from 1 up to 9. |
The installed value is not inspected by the code of a kernel, on this use |
cautiously, at incorrect value the cursor can "freeze". |
Speed of mouse can be regulated through the application SETUP. |
* Recommended delay of the mouse (in subfunction 3) = 10. Lower value |
is not handled COM by mice. At the very large values the movement of |
the mouse on 1 pixel is impossible and the cursor will jump |
on the value of the installed speed (subfunction 1). |
The installed value is not inspected by the code of a kernel. |
* In subfunction 4 the installed value is not inspected by |
the code of a kernel. Before usage it is necessary to find out current |
screen resolution and at installation of a position to watch, |
that the value of a position should do not fall outside |
the limits the screen. |
* It is recommended to set speed of the mouse (in subsubfunction 1) |
from 1 up to 9. The installed value is not inspected by the kernel |
code, so set it carefully, at incorrect value the cursor |
can "freeze". Speed of the mouse can be regulated through the |
application SETUP. |
* Recommended delay of the mouse (in subsubfunction 3) = 10. Lower |
value is not handled by COM mice. At the very large values the |
movement of the mouse on 1 pixel is impossible and the cursor will |
jump on the value of installed speed (subsubfunction 1). The |
installed value is not inspected by the kernel code. |
* The subsubfunction 4 does not check the passed value. Before |
its call find out current screen resolution (with function 14) |
and check that the value of position is inside the limits of the |
screen. |
====================================================================== |
============ Function 19 - start application from ramdisk. =========== |
2994,6 → 3008,7 |
* eax = 0 - success, otherwise file system error code |
* ebx destroyed |
Remarks: |
* This function is obsolete, use subfunction 3 of function 70. |
* Ramdisk and floppies do not support this function, it is only |
for hard disks. |
* File must already exist (otherwise function returns 5, not found). |
4084,6 → 4099,7 |
* subfunction 0 - read file |
* subfunction 1 - read folder |
* subfunction 2 - create/rewrite file |
* subfunction 3 - write to existing file |
* subfunction 5 - get attributes of file/folder |
* subfunction 6 - set attributes of file/folder |
* subfunction 7 - start application |
4244,6 → 4260,35 |
* The function is not supported for CD (returns error code 2). |
====================================================================== |
===================== Function 70, subfunction 3 ===================== |
=========== Write to existing file with long names support. ========== |
====================================================================== |
Parameters: |
* eax = 70 - function number |
* ebx = pointer to the information structure |
Format of the information structure: |
* +0: dword: 3 = subfunction number |
* +4: dword: file offset (in bytes) |
* +8: dword: high dword of offset (must be 0 for FAT) |
* +12 = +0xC: dword: number of bytes to write |
* +16 = +0x10: dword: pointer to data |
* +20 = +0x14: ASCIIZ-name of file, the rules of names forming are |
given in the general description |
or |
* +20 = +0x14: db 0 |
* +21 = +0x15: dd pointer to ASCIIZ-string with file name |
Returned value: |
* eax = 0 - success, otherwise file system error code |
* ebx = number of written bytes (possibly 0) |
Remarks: |
* The file must already exist, otherwise function returns eax=5. |
* The only result of write 0 bytes is update in the file attributes |
date/time of modification and access to the current date/time. |
* If beginning and/or ending position is greater than file size |
(except for the previous case), the file is expanded to needed |
size with zero characters. |
====================================================================== |
==== Function 70, subfunction 5 - get information on file/folder. ==== |
====================================================================== |
Parameters: |
4420,4 → 4465,3 |
* 30 = 0x1E = not enough memory |
* 31 = 0x1F = file is not executable |
* 32 = 0x20 = too many processes |
/kernel/branches/gfx_kernel/fs/fat12.inc |
---|
1265,6 → 1265,11 |
ret |
.found: |
mov eax, [esp+8] |
add eax, 31 |
cmp dword [esp], flp_root_next |
jnz @f |
add eax, -31+19 |
@@: |
add esp, 16 ; CF=0 |
pop esi |
ret |
1915,6 → 1920,304 |
pop edi ecx |
jmp .ret |
;---------------------------------------------------------------- |
; |
; fs_FloppyWrite - LFN variant for writing to floppy |
; |
; esi points to filename |
; ebx pointer to 64-bit number = first wanted byte, 0+ |
; may be ebx=0 - start from first byte |
; ecx number of bytes to write, 0+ |
; edx mem location to data |
; |
; ret ebx = bytes written (maybe 0) |
; eax = 0 ok write or other = errormsg |
; |
;-------------------------------------------------------------- |
@@: |
push ERROR_ACCESS_DENIED |
fs_FloppyWrite.ret0: |
pop eax |
xor ebx, ebx |
ret |
fs_FloppyWrite.ret11: |
push 11 |
jmp fs_FloppyWrite.ret0 |
fs_FloppyWrite: |
cmp byte [esi], 0 |
jz @b |
call read_flp_fat |
cmp [FDC_Status], 0 |
jnz .ret11 |
pushad |
call fd_find_lfn |
jnc .found |
popad |
push ERROR_FILE_NOT_FOUND |
jmp .ret0 |
.found: |
; FAT does not support files larger than 4GB |
test ebx, ebx |
jz .l1 |
cmp dword [ebx+4], 0 |
jz @f |
.eof: |
popad |
push ERROR_END_OF_FILE |
jmp .ret0 |
@@: |
mov ebx, [ebx] |
.l1: |
; now edi points to direntry, ebx=start byte to write, |
; ecx=number of bytes to write, edx=data pointer |
; extend file if needed |
add ecx, ebx |
jc .eof ; FAT does not support files larger than 4GB |
push eax ; save directory cluster |
push 0 ; return value=0 |
call get_time_for_file |
mov [edi+22], ax ; last write time |
call get_date_for_file |
mov [edi+24], ax ; last write date |
mov [edi+18], ax ; last access date |
push dword [edi+28] ; save current file size |
cmp ecx, [edi+28] |
jbe .length_ok |
cmp ecx, ebx |
jz .length_ok |
call floppy_extend_file |
jnc .length_ok |
mov [esp+4], eax |
; floppy_extend_file can return two error codes: FAT table error or disk full. |
; First case is fatal error, in second case we may write some data |
cmp al, ERROR_DISK_FULL |
jz .disk_full |
pop eax |
pop eax |
mov [esp+4+28], eax |
pop eax |
popad |
xor ebx, ebx |
ret |
.disk_full: |
; correct number of bytes to write |
mov ecx, [edi+28] |
cmp ecx, ebx |
ja .length_ok |
.ret: |
pop eax |
pop eax |
mov [esp+4+28], eax ; eax=return value |
pop eax |
sub edx, [esp+20] |
mov [esp+16], edx ; ebx=number of written bytes |
popad |
ret |
.length_ok: |
; save FAT & directory |
; note that directory must be saved first because save_flp_fat uses buffer at 0xD000 |
mov esi, [edi+28] |
movzx edi, word [edi+26] ; starting cluster |
mov eax, [esp+8] |
pusha |
call save_chs_sector |
popa |
cmp [FDC_Status], 0 |
jnz .device_err |
call save_flp_fat |
cmp [FDC_Status], 0 |
jz @f |
.device_err: |
mov byte [esp+4], 11 |
jmp .ret |
@@: |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
call SetUserInterrupts |
.write_loop: |
lea eax, [edi+31] ; current sector |
; get length of data in current sector |
push ecx |
sub ebx, 0x200 |
jb .hasdata |
neg ebx |
xor ecx, ecx |
jmp @f |
.hasdata: |
neg ebx |
cmp ecx, ebx |
jbe @f |
mov ecx, ebx |
@@: |
; load sector if needed |
cmp dword [esp+4], 0 ; we don't need to read uninitialized data |
jz .noread |
cmp ecx, 0x200 ; we don't need to read sector if it is fully rewritten |
jz .noread |
cmp ecx, esi ; (same for the last sector) |
jz .noread |
pusha |
call read_chs_sector |
popa |
cmp [FDC_Status], 0 |
jz @f |
.device_err2: |
pop ecx |
jmp .device_err |
@@: |
.noread: |
; zero uninitialized data if file was extended (because floppy_extend_file does not this) |
push eax ecx edi |
xor eax, eax |
mov ecx, 0x200 |
sub ecx, [esp+4+12] |
jbe @f |
mov edi, 0xD000 |
add edi, [esp+4+12] |
rep stosb |
@@: |
; zero uninitialized data in the last sector |
mov ecx, 0x200 |
sub ecx, esi |
jbe @f |
mov edi, 0xD000 |
add edi, esi |
rep stosb |
@@: |
pop edi ecx eax |
; copy new data |
push eax |
mov eax, edx |
neg ebx |
jecxz @f |
add ebx, 0xD000+0x200 |
call memmove |
xor ebx, ebx |
@@: |
pop eax |
; save sector |
pusha |
call save_chs_sector |
popa |
cmp [FDC_Status], 0 |
jnz .device_err2 |
add edx, ecx |
sub [esp], ecx |
pop ecx |
jz .done |
.next_cluster: |
movzx edi, word [edi*2+0x282000] |
sub esi, 0x200 |
jae @f |
xor esi, esi |
@@: |
sub dword [esp], 0x200 |
jae .write_loop |
and dword [esp], 0 |
jmp .write_loop |
.done: |
mov [fdc_irq_func], fdc_null |
jmp .ret |
floppy_extend_file.zero_size: |
xor eax, eax |
jmp floppy_extend_file.start_extend |
; extends file on floppy to given size (new data area is undefined) |
; in: edi->direntry, ecx=new size |
; out: CF=0 => OK, eax destroyed |
; CF=1 => error, eax=code (ERROR_FAT_TABLE or ERROR_DISK_FULL) |
floppy_extend_file: |
push ecx |
; find the last cluster of file |
movzx eax, word [edi+26] ; first cluster |
mov ecx, [edi+28] |
jecxz .zero_size |
@@: |
sub ecx, 0x200 |
jbe @f |
mov eax, [eax*2+0x282000] |
and eax, 0xFFF |
jz .fat_err |
cmp eax, 0xFF8 |
jb @b |
.fat_err: |
pop ecx |
push ERROR_FAT_TABLE |
pop eax |
stc |
ret |
@@: |
push eax |
mov eax, [eax*2+0x282000] |
and eax, 0xFFF |
cmp eax, 0xFF8 |
pop eax |
jb .fat_err |
; set length to full number of sectors |
sub [edi+28], ecx |
.start_extend: |
pop ecx |
; now do extend |
push edx esi |
mov esi, 0x282000+2*2 ; start scan from cluster 2 |
mov edx, 2847 ; number of clusters to scan |
.extend_loop: |
cmp [edi+28], ecx |
jae .extend_done |
; add new sector |
push ecx |
push edi |
.scan: |
mov ecx, edx |
mov edi, esi |
jecxz .disk_full |
push eax |
xor eax, eax |
repnz scasw |
pop eax |
jnz .disk_full |
mov word [edi-2], 0xFFF |
mov esi, edi |
mov edx, ecx |
sub edi, 0x282000 |
shr edi, 1 |
dec edi ; now edi=new cluster |
test eax, eax |
jz .first_cluster |
mov [0x282000+eax*2], di |
jmp @f |
.first_cluster: |
pop eax ; eax->direntry |
push eax |
mov [eax+26], di |
@@: |
mov eax, edi ; eax=new cluster |
pop edi ; edi->direntry |
pop ecx ; ecx=required size |
add dword [edi+28], 0x200 |
jmp .extend_loop |
.extend_done: |
mov [edi+28], ecx |
pop esi edx |
clc |
ret |
.disk_full: |
pop edi ecx |
pop esi edx |
stc |
push ERROR_DISK_FULL |
pop eax |
ret |
fs_FloppyGetFileInfo: |
call read_flp_fat |
cmp [FDC_Status], 0 |
1951,16 → 2254,9 |
push eax |
call bdfe_to_fat_entry |
pop eax |
test eax, eax |
jz .root |
add eax, 31 |
pusha |
call save_chs_sector |
popa |
jmp .cmn |
.root: |
call save_flp_root |
.cmn: |
pop edi |
xor eax, eax |
cmp [FDC_Status], 0 |
/kernel/branches/gfx_kernel/fs/fat32.inc |
---|
2,11 → 2,12 |
;; ;; |
;; FAT32.INC ;; |
;; ;; |
;; FAT16/32 functions for MenuetOS ;; |
;; FAT16/32 functions for KolibriOS ;; |
;; ;; |
;; Copyright 2002 Paolo Minazzi, paolo.minazzi@inwind.it ;; |
;; ;; |
;; See file COPYING for details ;; |
;; 17.08.2006 LFN write/append to file - diamond ;; |
;; 23.06.2006 LFN start application - diamond ;; |
;; 15.06.2006 LFN get/set file/folder info - diamond ;; |
;; 27.05.2006 LFN create/rewrite file - diamond ;; |
104,7 → 105,6 |
startpath: times 255 db 0 |
fat16_root db 0 ; flag for fat16 rootdir |
f_del db 0 ; 1=overwrite fat entry |
fat_change db 0 ; 1=fat has changed |
endg |
225,14 → 225,6 |
cmp [fat_type],16 |
jne sfc_test32 |
cmp [f_del],1 ; overwrite previous value? |
je sfc_set16 ; yes |
cmp word [ebx+esi],0 ; is cluster free? |
je sfc_set16 ; yes |
mov dword [8*0x100000],0xffffff |
mov edx,[ebx+esi] ; get old value |
jmp sfc_nonzero |
sfc_set16: |
xchg [ebx+esi],dx ; save new value and get old value |
jmp sfc_write |
239,13 → 231,6 |
sfc_test32: |
mov eax,[fatMASK] |
cmp [f_del],1 ; overwrite previous value? |
je sfc_set32 ; yes |
test eax,[ebx+esi] ; is cluster free? |
je sfc_set32 ; yes |
mov dword [8*0x100000],0xffffff |
mov edx,[ebx+esi] ; get old value |
jmp sfc_nonzero |
sfc_set32: |
and edx,eax |
554,13 → 539,10 |
push eax ; save new cluster |
mov edx,eax |
mov eax,[cluster_tmp] ; change last cluster to point new cluster |
mov [f_del],1 |
call set_FAT |
cmp [hd_error],0 |
jne adw_not_found_1 |
mov [f_del],0 |
mov ecx,-1 ; remove 1 cluster from free disk space |
call add_disk_free_space |
cmp [hd_error],0 |
883,13 → 865,10 |
jne make_dir_error_1 |
mov eax,[cluster] ; directory cluster |
xor edx,edx ; free |
mov [f_del],1 |
call set_FAT |
cmp [hd_error],0 |
jne make_dir_error_1 |
mov [f_del],0 |
popad |
call update_disk ; write all of cache and fat to hd |
make_dir_error_2: |
1238,12 → 1217,10 |
mov edx,eax |
mov eax,[cluster] |
mov [f_del],1 |
call set_FAT ; update previous cluster |
cmp [hd_error],0 |
jne append_access_1 |
mov [f_del],0 |
pop eax |
jmp append_remove_free |
1362,12 → 1339,10 |
truncate_pos_found: |
mov edx,[fatEND] ; new end for cluster chain |
mov [f_del],1 |
call set_FAT |
cmp [hd_error],0 |
jne append_access |
mov [f_del],0 |
mov eax,edx ; clear rest of chain |
truncate_clear_chain: |
1875,7 → 1850,6 |
;----------------------------------------------------- |
push eax ecx edx |
xor ecx,ecx ; cluster count |
mov [f_del],1 ; delete on |
clean_new_chain: |
cmp eax,[LAST_CLUSTER] ; end of file |
1897,7 → 1871,6 |
delete_OK: |
call add_disk_free_space ; add clusters to free disk space |
access_denied_01: |
mov [f_del],0 |
pop edx ecx eax |
ret |
3288,7 → 3261,6 |
mov eax, [esp+4] |
mov eax, [eax] |
push edx |
mov [f_del], 1 |
call set_FAT |
pop edx |
cmp [hd_error], 0 |
3450,7 → 3422,6 |
mov word [edi+26], cx |
test eax, eax |
jz .done1 |
mov [f_del], 1 |
@@: |
cmp eax, [fatRESERVED] |
jae .done1 |
3736,7 → 3707,6 |
mov ecx, eax |
call get_free_FAT |
jc .diskfull |
mov [f_del], 1 |
push edx |
mov edx, [fatEND] |
call set_FAT |
3783,6 → 3753,348 |
popad |
ret |
;---------------------------------------------------------------- |
; |
; fs_HdWrite - LFN variant for writing to floppy |
; |
; esi points to filename |
; ebx pointer to 64-bit number = first wanted byte, 0+ |
; may be ebx=0 - start from first byte |
; ecx number of bytes to write, 0+ |
; edx mem location to data |
; |
; ret ebx = bytes written (maybe 0) |
; eax = 0 ok write or other = errormsg |
; |
;-------------------------------------------------------------- |
fs_HdWrite.access_denied: |
push ERROR_ACCESS_DENIED |
fs_HdWrite.ret0: |
pop eax |
xor ebx, ebx |
ret |
fs_HdWrite.ret11: |
push 11 |
jmp fs_HdWrite.ret0 |
fs_HdWrite: |
cmp [fat_type], 0 |
jnz @f |
push ERROR_UNKNOWN_FS |
jmp .ret0 |
@@: |
cmp byte [esi], 0 |
jz .access_denied |
pushad |
call hd_find_lfn |
pushfd |
cmp [hd_error], 0 |
jz @f |
popfd |
popad |
push 11 |
jmp .ret0 |
@@: |
popfd |
jnc .found |
popad |
push ERROR_FILE_NOT_FOUND |
jmp .ret0 |
.found: |
; FAT does not support files larger than 4GB |
test ebx, ebx |
jz .l1 |
cmp dword [ebx+4], 0 |
jz @f |
.eof: |
popad |
push ERROR_END_OF_FILE |
jmp .ret0 |
@@: |
mov ebx, [ebx] |
.l1: |
; now edi points to direntry, ebx=start byte to write, |
; ecx=number of bytes to write, edx=data pointer |
; extend file if needed |
add ecx, ebx |
jc .eof ; FAT does not support files larger than 4GB |
push eax ; save directory sector |
push 0 ; return value=0 |
call get_time_for_file |
mov [edi+22], ax ; last write time |
call get_date_for_file |
mov [edi+24], ax ; last write date |
mov [edi+18], ax ; last access date |
push dword [edi+28] ; save current file size |
cmp ecx, [edi+28] |
jbe .length_ok |
cmp ecx, ebx |
jz .length_ok |
call hd_extend_file |
jnc .length_ok |
mov [esp+4], eax |
; hd_extend_file can return three error codes: FAT table error, device error or disk full. |
; First two cases are fatal errors, in third case we may write some data |
cmp al, ERROR_DISK_FULL |
jz .disk_full |
pop eax |
pop eax |
mov [esp+4+28], eax |
pop eax |
popad |
xor ebx, ebx |
ret |
.disk_full: |
; correct number of bytes to write |
mov ecx, [edi+28] |
cmp ecx, ebx |
ja .length_ok |
.ret: |
call update_disk |
cmp [hd_error], 0 |
jz @f |
mov byte [esp+4], 11 |
@@: |
pop eax |
pop eax |
mov [esp+4+28], eax ; eax=return value |
pop eax |
sub edx, [esp+20] |
mov [esp+16], edx ; ebx=number of written bytes |
popad |
ret |
.length_ok: |
mov esi, [edi+28] |
mov eax, [edi+20-2] |
mov ax, [edi+26] |
mov edi, eax ; edi=current cluster |
xor ebp, ebp ; ebp=current sector in cluster |
; save directory |
mov eax, [esp+8] |
push ebx |
mov ebx, buffer |
call hd_write |
pop ebx |
cmp [hd_error], 0 |
jz @f |
.device_err: |
mov byte [esp+4], 11 |
jmp .ret |
@@: |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
.write_loop: |
; get length of data in current sector |
push ecx |
sub ebx, 0x200 |
jb .hasdata |
neg ebx |
xor ecx, ecx |
jmp @f |
.hasdata: |
neg ebx |
cmp ecx, ebx |
jbe @f |
mov ecx, ebx |
@@: |
; get current sector number |
mov eax, edi |
dec eax |
dec eax |
imul eax, [SECTORS_PER_CLUSTER] |
add eax, [DATA_START] |
add eax, ebp |
; load sector if needed |
cmp dword [esp+4], 0 ; we don't need to read uninitialized data |
jz .noread |
cmp ecx, 0x200 ; we don't need to read sector if it is fully rewritten |
jz .noread |
cmp ecx, esi ; (same for the last sector) |
jz .noread |
push ebx |
mov ebx, buffer |
call hd_read |
pop ebx |
cmp [hd_error], 0 |
jz @f |
.device_err2: |
pop ecx |
jmp .device_err |
@@: |
.noread: |
; zero uninitialized data if file was extended (because hd_extend_file does not this) |
push eax ecx edi |
xor eax, eax |
mov ecx, 0x200 |
sub ecx, [esp+4+12] |
jbe @f |
mov edi, buffer |
add edi, [esp+4+12] |
rep stosb |
@@: |
; zero uninitialized data in the last sector |
mov ecx, 0x200 |
sub ecx, esi |
jbe @f |
mov edi, buffer |
add edi, esi |
rep stosb |
@@: |
pop edi ecx eax |
; copy new data |
push eax |
mov eax, edx |
neg ebx |
jecxz @f |
add ebx, buffer+0x200 |
call memmove |
xor ebx, ebx |
@@: |
pop eax |
; save sector |
push ebx |
mov ebx, buffer |
call hd_write |
pop ebx |
cmp [hd_error], 0 |
jnz .device_err2 |
add edx, ecx |
sub [esp], ecx |
pop ecx |
jz .ret |
; next sector |
inc ebp |
cmp ebp, [SECTORS_PER_CLUSTER] |
jb @f |
xor ebp, ebp |
mov eax, edi |
call get_FAT |
mov edi, eax |
cmp [hd_error], 0 |
jnz .device_err |
@@: |
sub esi, 0x200 |
jae @f |
xor esi, esi |
@@: |
sub dword [esp], 0x200 |
jae @f |
and dword [esp], 0 |
@@: jmp .write_loop |
hd_extend_file.zero_size: |
xor eax, eax |
jmp hd_extend_file.start_extend |
; extends file on hd to given size (new data area is undefined) |
; in: edi->direntry, ecx=new size |
; out: CF=0 => OK, eax destroyed |
; CF=1 => error, eax=code (ERROR_FAT_TABLE or ERROR_DISK_FULL or 11) |
hd_extend_file: |
push ebp |
mov ebp, [SECTORS_PER_CLUSTER] |
imul ebp, [BYTES_PER_SECTOR] |
push ecx |
; find the last cluster of file |
mov eax, [edi+20-2] |
mov ax, [edi+26] |
mov ecx, [edi+28] |
jecxz .zero_size |
.last_loop: |
sub ecx, ebp |
jbe .last_found |
call get_FAT |
cmp [hd_error], 0 |
jz @f |
.device_err: |
pop ecx |
.device_err2: |
pop ebp |
push 11 |
.ret_err: |
pop eax |
stc |
ret |
@@: |
cmp eax, 2 |
jb .fat_err |
cmp eax, [fatRESERVED] |
jb .last_loop |
.fat_err: |
pop ecx ebp |
push ERROR_FAT_TABLE |
jmp .ret_err |
.last_found: |
push eax |
call get_FAT |
cmp [hd_error], 0 |
jz @f |
pop eax |
jmp .device_err |
@@: |
cmp eax, [fatRESERVED] |
pop eax |
jb .fat_err |
; set length to full number of clusters |
sub [edi+28], ecx |
.start_extend: |
pop ecx |
; now do extend |
push edx |
mov edx, 2 ; start scan from cluster 2 |
.extend_loop: |
cmp [edi+28], ecx |
jae .extend_done |
; add new cluster |
push eax |
mov eax, edx |
call get_free_FAT |
jc .disk_full |
mov edx, [fatEND] |
call set_FAT |
mov edx, eax |
pop eax |
test eax, eax |
jz .first_cluster |
push edx |
call set_FAT |
pop edx |
jmp @f |
.first_cluster: |
ror edx, 16 |
mov [edi+20], dx |
ror edx, 16 |
mov [edi+26], dx |
@@: |
mov eax, edx |
cmp [hd_error], 0 |
jnz .device_err3 |
add [edi+28], ebp |
jmp .extend_loop |
.extend_done: |
mov [edi+28], ecx |
pop edx ebp |
clc |
ret |
.device_err3: |
pop edx |
jmp .device_err2 |
.disk_full: |
pop eax edx ebp |
push ERROR_DISK_FULL |
pop eax |
cmp [hd_error], 0 |
jz @f |
mov al, 11 |
@@: stc |
ret |
fs_HdGetFileInfo: |
cmp [fat_type], 0 |
jnz @f |
/kernel/branches/gfx_kernel/fs/fs_lfn.inc |
---|
347,8 → 347,8 |
dd fs_RamdiskRead |
dd fs_RamdiskReadFolder |
dd fs_RamdiskRewrite |
dd fs_RamdiskWrite |
dd fs_NotImplemented |
dd fs_NotImplemented |
dd fs_RamdiskGetFileInfo |
dd fs_RamdiskSetFileInfo |
dd fs_RamdiskExecute |
376,8 → 376,8 |
dd fs_FloppyRead |
dd fs_FloppyReadFolder |
dd fs_FloppyRewrite |
dd fs_FloppyWrite |
dd fs_NotImplemented |
dd fs_NotImplemented |
dd fs_FloppyGetFileInfo |
dd fs_FloppySetFileInfo |
dd fs_FloppyExecute |
447,8 → 447,8 |
dd fs_HdRead |
dd fs_HdReadFolder |
dd fs_HdRewrite |
dd fs_HdWrite |
dd fs_NotImplemented |
dd fs_NotImplemented |
dd fs_HdGetFileInfo |
dd fs_HdSetFileInfo |
dd fs_HdExecute |
/kernel/trunk/blkdev/rd.inc |
---|
1788,6 → 1788,7 |
sub ebx, edx |
mov [edi+28], ebx |
add esp, 20 |
mov [esp+16], ebx |
popad |
xor eax, eax |
ret |
1797,6 → 1798,7 |
sub ebx, edx |
mov [edi+28], ebx |
add esp, 20 |
mov [esp+16], ebx |
popad |
push ERROR_DISK_FULL |
pop eax |
1820,6 → 1822,230 |
loop .read_symbols |
ret |
;---------------------------------------------------------------- |
; |
; fs_RamdiskWrite - LFN variant for writing to sys floppy |
; |
; esi points to filename |
; ebx pointer to 64-bit number = first wanted byte, 0+ |
; may be ebx=0 - start from first byte |
; ecx number of bytes to write, 0+ |
; edx mem location to data |
; |
; ret ebx = bytes written (maybe 0) |
; eax = 0 ok write or other = errormsg |
; |
;-------------------------------------------------------------- |
@@: |
push ERROR_ACCESS_DENIED |
fs_RamdiskWrite.ret0: |
pop eax |
xor ebx, ebx |
ret |
fs_RamdiskWrite: |
cmp byte [esi], 0 |
jz @b |
pushad |
call rd_find_lfn |
jnc .found |
popad |
push ERROR_FILE_NOT_FOUND |
jmp .ret0 |
.found: |
; must not be directory |
test byte [edi+11], 10h |
jz @f |
popad |
push ERROR_ACCESS_DENIED |
jmp .ret0 |
@@: |
; FAT does not support files larger than 4GB |
test ebx, ebx |
jz .l1 |
cmp dword [ebx+4], 0 |
jz @f |
.eof: |
popad |
push ERROR_END_OF_FILE |
jmp .ret0 |
@@: |
mov ebx, [ebx] |
.l1: |
; now edi points to direntry, ebx=start byte to write, |
; ecx=number of bytes to write, edx=data pointer |
call get_time_for_file |
mov [edi+22], ax ; last write time |
call get_date_for_file |
mov [edi+24], ax ; last write date |
mov [edi+18], ax ; last access date |
; extend file if needed |
add ecx, ebx |
jc .eof ; FAT does not support files larger than 4GB |
push 0 ; return value=0 |
cmp ecx, [edi+28] |
jbe .length_ok |
cmp ecx, ebx |
jz .length_ok |
call ramdisk_extend_file |
jnc .length_ok |
; ramdisk_extend_file can return two error codes: FAT table error or disk full. |
; First case is fatal error, in second case we may write some data |
mov [esp], eax |
cmp al, ERROR_DISK_FULL |
jz .disk_full |
pop eax |
mov [esp+28], eax |
popad |
xor ebx, ebx |
ret |
.disk_full: |
; correct number of bytes to write |
mov ecx, [edi+28] |
cmp ecx, ebx |
ja .length_ok |
.ret: |
pop eax |
mov [esp+28], eax ; eax=return value |
sub edx, [esp+20] |
mov [esp+16], edx ; ebx=number of written bytes |
popad |
ret |
.length_ok: |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
movzx edi, word [edi+26] ; starting cluster |
.write_loop: |
sub ebx, 0x200 |
jae .next_cluster |
push ecx |
neg ebx |
cmp ecx, ebx |
jbe @f |
mov ecx, ebx |
@@: |
mov eax, edi |
shl eax, 9 |
add eax, 0x100000+31*512+0x200 |
sub eax, ebx |
mov ebx, eax |
mov eax, edx |
call memmove |
xor ebx, ebx |
add edx, ecx |
sub [esp], ecx |
pop ecx |
jz .ret |
.next_cluster: |
movzx edi, word [edi*2+0x280000] |
jmp .write_loop |
ramdisk_extend_file.zero_size: |
xor eax, eax |
jmp ramdisk_extend_file.start_extend |
; extends file on ramdisk to given size, new data area is filled by 0 |
; in: edi->direntry, ecx=new size |
; out: CF=0 => OK, eax destroyed |
; CF=1 => error, eax=code (ERROR_FAT_TABLE or ERROR_DISK_FULL) |
ramdisk_extend_file: |
push ecx |
; find the last cluster of file |
movzx eax, word [edi+26] ; first cluster |
mov ecx, [edi+28] |
jecxz .zero_size |
@@: |
sub ecx, 0x200 |
jbe @f |
mov eax, [eax*2+0x280000] |
and eax, 0xFFF |
jz .fat_err |
cmp eax, 0xFF8 |
jb @b |
.fat_err: |
pop ecx |
push ERROR_FAT_TABLE |
pop eax |
stc |
ret |
@@: |
push eax |
mov eax, [eax*2+0x280000] |
and eax, 0xFFF |
cmp eax, 0xFF8 |
pop eax |
jb .fat_err |
; set length to full number of sectors and make sure that last sector is zero-padded |
sub [edi+28], ecx |
push eax edi |
mov edi, eax |
shl edi, 9 |
lea edi, [edi+0x100000+31*512+0x200+ecx] |
neg ecx |
xor eax, eax |
rep stosb |
pop edi eax |
.start_extend: |
pop ecx |
; now do extend |
push edx esi |
mov esi, 0x280000+2*2 ; start scan from cluster 2 |
mov edx, 2847 ; number of clusters to scan |
.extend_loop: |
cmp [edi+28], ecx |
jae .extend_done |
; add new sector |
push ecx |
mov ecx, edx |
push edi |
mov edi, esi |
jecxz .disk_full |
push eax |
xor eax, eax |
repnz scasw |
pop eax |
jnz .disk_full |
mov word [edi-2], 0xFFF |
mov esi, edi |
mov edx, ecx |
sub edi, 0x280000 |
shr edi, 1 |
dec edi ; now edi=new cluster |
test eax, eax |
jz .first_cluster |
mov [0x280000+eax*2], di |
jmp @f |
.first_cluster: |
pop eax ; eax->direntry |
push eax |
mov [eax+26], di |
@@: |
push edi |
shl edi, 9 |
add edi, 0x100000+31*512 |
xor eax, eax |
mov ecx, 512/4 |
rep stosd |
pop eax ; eax=new cluster |
pop edi ; edi->direntry |
pop ecx ; ecx=required size |
add dword [edi+28], 0x200 |
jmp .extend_loop |
.extend_done: |
mov [edi+28], ecx |
pop esi edx |
clc |
ret |
.disk_full: |
pop edi ecx |
pop esi edx |
stc |
push ERROR_DISK_FULL |
pop eax |
ret |
fs_RamdiskGetFileInfo: |
cmp byte [esi], 0 |
jnz @f |
/kernel/trunk/docs/sysfuncr.txt |
---|
29,7 → 29,7 |
(¨£®à¨àã¥âáï ¤«ï á⨫ï Y=2) |
* X = DCBA (¡¨âë) |
* A = 1 - ã ®ª ¥áâì § £®«®¢®ª; ¤«ï á⨫ï Y=3 ¤à¥á áâப¨ |
§ £®«®¢ª § ¤ +âáï ¢ edi, ¤«ï ¯à®ç¨å á⨫¥© |
§ £®«®¢ª § ¤ ñâáï ¢ edi, ¤«ï ¯à®ç¨å á⨫¥© |
¨á¯®«ì§ã¥âáï ¯®¤äãªæ¨ï 1 äãªæ¨¨ 71 |
* B = 1 - ª®®à¤¨ âë ¢á¥å £à ä¨ç¥áª¨å ¯à¨¬¨â¨¢®¢ § ¤ îâáï |
®â®á¨â¥«ì® ª«¨¥â᪮© ®¡« á⨠®ª |
89,11 → 89,11 |
* ¨¤ ®ª á⨫ï Y=1: |
* ¯®«®áâìî ®¯à¥¤¥«ï¥âáï ¯à¨«®¦¥¨¥¬ |
* ¨¤ ®ª ⨯ II: |
* à¨áã¥âáï ¢¥èïï à ¬ª è¨à¨®© 1 ¯¨ªá¥«ì "§ â¥+®£®" 梥â |
* à¨áã¥âáï ¢¥èïï à ¬ª è¨à¨®© 1 ¯¨ªá¥«ì "§ â¥ñ®£®" 梥â |
edi (¢á¥ á®áâ ¢«ïî騥 梥â 㬥ìè îâáï ¢ ¤¢ à § ) |
* à¨áã¥âáï ¯à®¬¥¦ãâ®ç ï à ¬ª è¨à¨®© 3 ¯¨ªá¥«ï 梥â edi |
* à¨áã¥âáï ¢ãâà¥ïï à ¬ª è¨à¨®© 1 ¯¨ªá¥«ì |
"§ â¥+®£®" 梥â edi |
"§ â¥ñ®£®" 梥â edi |
* à¨áã¥âáï § £®«®¢®ª - ¯àאַ㣮«ì¨ª á «¥¢ë¬ ¢¥à娬 㣫®¬ (4,4) |
¨ ¯à ¢ë¬ ¨¦¨¬ (xsize-4,min(20,ysize)) 梥â , 㪠§ ®£® ¢ esi |
(á ãç¥â®¬ £à ¤¨¥â ) |
151,7 → 151,7 |
¬¥ç ¨ï: |
* ãé¥áâ¢ã¥â ®¡é¥á¨áâ¥¬ë© ¡ãä¥à ¦ âëå ª« ¢¨è à §¬¥à®¬ 120 ¡ ©â, |
®à£ ¨§®¢ ë© ª ª ®ç¥à¥¤ì. |
* ãé¥áâ¢ã¥â ¥é+ ®¤¨ ®¡é¥á¨áâ¥¬ë© ¡ãä¥à 120 "£®àïç¨å ª« ¢¨è". |
* ãé¥áâ¢ã¥â ¥éñ ®¤¨ ®¡é¥á¨áâ¥¬ë© ¡ãä¥à 120 "£®àïç¨å ª« ¢¨è". |
* ਠ¢ë§®¢¥ í⮩ äãªæ¨¨ ¯à¨«®¦¥¨¥¬ á ¥ ªâ¨¢ë¬ ®ª®¬ |
áç¨â ¥âáï, çâ® ¡ãä¥à ¦ âëå ª« ¢¨è ¯ãáâ. |
* ® 㬮«ç ¨î íâ äãªæ¨ï ¢®§¢à é ¥â ASCII-ª®¤ë; ¯¥à¥ª«îç¨âìáï |
200,7 → 200,7 |
¬¥ç ¨ï: |
* 뢮¤ïâáï «¨¡® ¯¥à¢ë¥ (esi and 0xFF) ᨬ¢®«®¢, |
«¨¡® ¢á¥ ᨬ¢®«ë ¤® (® ¥ ¢ª«îç ï) § ¢¥àè î饣® ã«ï |
(¤«ï ASCIIZ-áâப) ¢ § ¢¨á¨¬®á⨠®â ⮣®, çâ® ¯à®¨§®©¤+â à ìè¥. |
(¤«ï ASCIIZ-áâப) ¢ § ¢¨á¨¬®á⨠®â ⮣®, çâ® ¯à®¨§®©¤ñâ à ìè¥. |
* ¥à¢ë© á¨áâ¥¬ë© èà¨äâ áç¨âë¢ ¥âáï ¯à¨ § £à㧪¥ ¨§ ä ©« char.mt, |
¢â®à®© - ¨§ char2.mt. |
* ¡ èà¨äâ ¨¬¥îâ ¢ëá®âã 9 ¯¨ªá¥«¥©, è¨à¨ ¬®®è¨à¨®£® èà¨äâ |
445,7 → 445,7 |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ãªæ¨ï ç « ¯¥à¥à¨á®¢ª¨ 㤠«ï¥â ¢á¥ ®¯à¥¤¥«+ë¥ |
* ãªæ¨ï ç « ¯¥à¥à¨á®¢ª¨ 㤠«ï¥â ¢á¥ ®¯à¥¤¥«ñë¥ |
äãªæ¨¥© 8 ª®¯ª¨, ¨å á«¥¤ã¥â ®¯à¥¤¥«¨âì ¯®¢â®à®. |
====================================================================== |
489,7 → 489,7 |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ஢¥à®ª ª®à४â®áâì ¥ ¤¥« ¥âáï. áâ ®¢ª ᫨誮¬ ¡®«ìè¨å |
§ 票© ¯à¨¢¥¤+â ª ⮬ã, çâ® ¢ ä® ¢®©¤ãâ ¤ ë¥ § £à ¨æ¥© |
§ 票© ¯à¨¢¥¤ñâ ª ⮬ã, çâ® ¢ ä® ¢®©¤ãâ ¤ ë¥ § £à ¨æ¥© |
¡ãä¥à ä®®¢®£® ¨§®¡à ¦¥¨ï. §¬¥à ¡ãä¥à = 0x160000-0x10, çâ® |
ᮮ⢥âáâ¢ã¥â ¬ ªá¨¬ «ìë¬ à §¬¥à ¬ 800*600. (800*600*3=0x15F900) |
* «ï ®¡®¢«¥¨ï íªà (¯®á«¥ § ¢¥à襨ï á¥à¨¨ ª®¬ ¤, à ¡®â îé¨å á |
636,7 → 636,7 |
* § âì, ª ª®¥ ®ª® ï¥âáï ªâ¨¢ë¬, ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 7. |
====================================================================== |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 4 - ¯®«ãç¨âì áç+â稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã. |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 4 - ¯®«ãç¨âì áçñâ稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã. |
====================================================================== |
®¤ ¯ãáâ묨 ⠪⠬¨ ¯®¨¬ ¥âáï ¢à¥¬ï, ¢ ª®â®à®¥ ¯à®æ¥áá®à ¯à®áâ ¨¢ ¥â |
¢ ®¦¨¤ ¨¨ ¯à¥àë¢ ¨ï (¢ ¨áâàãªæ¨¨ hlt). |
645,7 → 645,7 |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 4 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = § 票¥ áç+â稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã |
* eax = § 票¥ áçñâ稪 ¯ãáâëå ⠪⮢ ¢ ᥪã¤ã |
====================================================================== |
======== ãªæ¨ï 18, ¯®¤äãªæ¨ï 5 - ¯®«ãç¨âì ⠪⮢ãî ç áâ®âã. ======= |
657,7 → 657,7 |
* eax = ⠪⮢ ï ç áâ®â (¯® ¬®¤ã«î 2^32 ⠪⮢ = 4æ) |
====================================================================== |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 6 - á®åà ¨âì à ¬¤¨áª ¢ ä ©« ¦+á⪮¬ ¤¨áª¥. |
ãªæ¨ï 18, ¯®¤äãªæ¨ï 6 - á®åà ¨âì à ¬¤¨áª ¢ ä ©« ¦ñá⪮¬ ¤¨áª¥. |
====================================================================== |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
666,7 → 666,7 |
* 1 = ¢ ¯ ¯ª¥ "/KOLIBRI" |
* 2 = ¢ ª®à¥¢®¬ ª â «®£¥ |
* 3 = edx 㪠§ë¢ ¥â ¯ãâì (¨¬¥ ¯ ¯®ª ¢ ä®à¬ ⥠8+3, |
à §¤¥«+ë¥ '/') |
à §¤¥«ñë¥ '/') |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* ¨ ç¥ eax = ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
673,9 → 673,9 |
¬¥ç ¨ï: |
* ¬ï ä ©« 䨪á¨à®¢ ®, "menuet.img" (£«®¡ «ì ï ¯¥à¥¬¥ ï ï¤à |
image_save ¨§ preboot.inc) |
* ª ª®¬ à §¤¥«¥ ª ª®£® ¤¨áª ä ©« ¡ã¤¥â á®åà +, ®¯à¥¤¥«ï¥âáï |
* ª ª®¬ à §¤¥«¥ ª ª®£® ¤¨áª ä ©« ¡ã¤¥â á®åà ñ, ®¯à¥¤¥«ï¥âáï |
¯®¤äãªæ¨¥© 7 ¨ ¯®¤äãªæ¨¥© 8 äãªæ¨¨ 21. |
* ᥠ¯ ¯ª¨ ¢ 㪠§ ®¬ ¯ã⨠¤®«¦ë áãé¥á⢮¢ âì, ¨ ç¥ ¢¥à+âáï |
* ᥠ¯ ¯ª¨ ¢ 㪠§ ®¬ ¯ã⨠¤®«¦ë áãé¥á⢮¢ âì, ¨ ç¥ ¢¥àñâáï |
§ 票¥ 5, "ä ©« ¥ ©¤¥". |
====================================================================== |
689,14 → 689,14 |
ªâ¨¢®) |
¬¥ç ¨ï: |
* ªâ¨¢®¥ ®ª® 室¨âáï ¢¢¥àåã ®ª®®£® áâíª ¨ ¯®«ãç ¥â |
á®®¡é¥¨ï ®¡® ¢á+¬ ¢¢®¤¥ á ª« ¢¨ âãàë. |
á®®¡é¥¨ï ®¡® ¢áñ¬ ¢¢®¤¥ á ª« ¢¨ âãàë. |
* ¤¥« âì ®ª® ªâ¨¢ë¬ ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 3. |
====================================================================== |
==== ãªæ¨ï 18, ¯®¤äãªæ¨ï 8 - ®âª«îç¨âì/à §à¥è¨âì §¢ãª ᯨª¥à . ==== |
====================================================================== |
ਠ®âª«îç+®¬ §¢ãª¥ ¢ë§®¢ë ¯®¤äãªæ¨¨ 55 äãªæ¨¨ 55 ¨£®à¨àãîâáï. |
ਠ¢ª«îç+®¬ - ¯à ¢«ïîâáï ¢áâà®¥ë© á¯¨ª¥à. |
ਠ®âª«îçñ®¬ §¢ãª¥ ¢ë§®¢ë ¯®¤äãªæ¨¨ 55 äãªæ¨¨ 55 ¨£®à¨àãîâáï. |
ਠ¢ª«îçñ®¬ - ¯à ¢«ïîâáï ¢áâà®¥ë© á¯¨ª¥à. |
--------------- ®¤¯®¤äãªæ¨ï 1 - ¯®«ãç¨âì á®áâ®ï¨¥. ---------------- |
à ¬¥âàë: |
704,7 → 704,7 |
* ebx = 8 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 1 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - §¢ãª ᯨª¥à à §à¥è+; 1 - § ¯à¥é+ |
* eax = 0 - §¢ãª ᯨª¥à à §à¥èñ; 1 - § ¯à¥éñ |
-------------- ®¤¯®¤äãªæ¨ï 2 - ¯¥à¥ª«îç¨âì á®áâ®ï¨¥. -------------- |
¥à¥ª«îç ¥â á®áâ®ï¨ï à §à¥è¥¨ï/§ ¯à¥é¥¨ï. |
756,10 → 756,10 |
¨ à §¬¥àë. |
* ®ááâ ®¢«¥¨¥ ®ª ¯à¨«®¦¥¨ï ¯à®¨á室¨â ¯à¨ ªâ¨¢¨§¨à®¢ ¨¨ |
¯®¤äãªæ¨¥© 3. |
* ¡ëç® ¥â ¥®¡å®¤¨¬®á⨠ ᢮à 稢 âì/à §¢®à 稢 âì ᢮+ ®ª®: |
* ¡ëç® ¥â ¥®¡å®¤¨¬®á⨠ ᢮à 稢 âì/à §¢®à 稢 âì ᢮ñ ®ª®: |
᢮à 稢 ¨¥ ®ª ®áãé¥á⢫ï¥âáï á¨á⥬®© ¯à¨ ¦ ⨨ ª®¯ªã |
¬¨¨¬¨§ 樨 (ª®â®à ï ¤«ï ®ª® ᮠ᪨®¬ ®¯à¥¤¥«ï¥âáï ¢â®¬ â¨ç¥áª¨ |
äãªæ¨¥© 0, ¤«ï ®ª® ¡¥§ ᪨ ¥+ ¬®¦® ®¯à¥¤¥«¨âì äãªæ¨¥© 8), |
äãªæ¨¥© 0, ¤«ï ®ª® ¡¥§ ᪨ ¥ñ ¬®¦® ®¯à¥¤¥«¨âì äãªæ¨¥© 8), |
¢®ááâ ®¢«¥¨¥ - ¯à¨«®¦¥¨¥¬ @panel. |
====================================================================== |
777,7 → 777,7 |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
®à¬ â â ¡«¨æë: ª®à®âª ï ¢¥àá¨ï: |
* +0: byte: ¨ä®à¬ æ¨ï ® (¤¨áª®¢®¤ å ¤«ï ¤¨áª¥â), AAAABBBB, |
£¤¥ AAAA § ¤ +â ⨯ ¯¥à¢®£® ¤¨áª®¢®¤ , BBBB - ¢â®à®£® ᮣ« á® |
£¤¥ AAAA § ¤ ñâ ⨯ ¯¥à¢®£® ¤¨áª®¢®¤ , BBBB - ¢â®à®£® ᮣ« á® |
á«¥¤ãî饬ã ᯨáªã: |
* 0 = ¥â ¤¨áª®¢®¤ |
* 1 = 360Kb, 5.25'' |
788,19 → 788,19 |
¯à¨¬¥à, ¤«ï áâ ¤ à⮩ ª®ä¨£ãà 樨 ¨§ ®¤®£® 1.44-¤¨áª®¢®¤ |
§¤¥áì ¡ã¤¥â 40h, ¤«ï á«ãç ï 1.2Mb A: ¨ 1.44Mb B: |
§ 票¥ ®ª §ë¢ ¥âáï 24h. |
* +1: byte: ¨ä®à¬ æ¨ï ® ¦+áâª¨å ¤¨áª å ¨ CD-¯à¨¢®¤ å, AABBCCDD, |
* +1: byte: ¨ä®à¬ æ¨ï ® ¦ñáâª¨å ¤¨áª å ¨ CD-¯à¨¢®¤ å, AABBCCDD, |
£¤¥ AA ᮮ⢥âáâ¢ã¥â ª®â஫«¥àã IDE0, ..., DD - IDE3: |
* 0 = ãáâனá⢮ ®âáãâáâ¢ã¥â |
* 1 = ¦+á⪨© ¤¨áª |
* 1 = ¦ñá⪨© ¤¨áª |
* 2 = CD-¯à¨¢®¤ |
¯à¨¬¥à, ¢ á«ãç ¥ HD IDE0 ¨ CD IDE2 §¤¥áì ¡ã¤¥â 48h. |
* +2: 4 db: ç¨á«® ©¤¥ëå à §¤¥«®¢ ¦+áâª¨å ¤¨áª å á |
* +2: 4 db: ç¨á«® ©¤¥ëå à §¤¥«®¢ ¦ñáâª¨å ¤¨áª å á |
ᮮ⢥âá⢥® IDE0,...,IDE3. |
ਠ®âáãâá⢨¨ ¦+á⪮£® ¤¨áª IDEx ᮮ⢥âáâ¢ãî騩 ¡ ©â |
ਠ®âáãâá⢨¨ ¦ñá⪮£® ¤¨áª IDEx ᮮ⢥âáâ¢ãî騩 ¡ ©â |
ã«¥¢®©, ¯à¨ «¨ç¨¨ ¯®ª §ë¢ ¥â ç¨á«® à ᯮ§ ëå à §¤¥«®¢, |
ª®â®àëå ¬®¦¥â ¨ ¥ ¡ëâì (¥á«¨ ®á¨â¥«ì ¥ ®âä®à¬ â¨à®¢ ¨«¨ |
¥á«¨ ä ©«®¢ ï á¨á⥬ ¥ ¯®¤¤¥à¦¨¢ ¥âáï). ⥪ã饩 ¢¥àᨨ ï¤à |
¤«ï ¦+áâª¨å ¤¨áª®¢ ¯®¤¤¥à¦¨¢ îâáï ⮫쪮 FAT16 ¨ FAT32. |
¤«ï ¦ñáâª¨å ¤¨áª®¢ ¯®¤¤¥à¦¨¢ îâáï ⮫쪮 FAT16 ¨ FAT32. |
* +6: 4 db: § १¥à¢¨à®¢ ® |
®à¬ â â ¡«¨æë: ¯®« ï ¢¥àá¨ï: |
* +0: 10 db: â ª¨¥ ¦¥, ª ª ¨ ¢ ª®à®âª®© ¢¥àᨨ |
871,7 → 871,7 |
====================================================================== |
====================== ãªæ¨ï 18, ¯®¤äãªæ¨ï 14 ===================== |
======= ¦¨¤ âì ç « ®¡à ⮣® 室 «ãç à §¢+à⪨ ¬®¨â®à . ======= |
======= ¦¨¤ âì ç « ®¡à ⮣® 室 «ãç à §¢ñà⪨ ¬®¨â®à . ======= |
====================================================================== |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
930,52 → 930,65 |
¯à®æ¥áá /¯®â®ª ¯® § ¤ ®¬ã á«®âã. |
====================================================================== |
====================== ãªæ¨ï 18, ¯®¤äãªæ¨ï 19 ===================== |
============= ®«ãç¨âì/ãáâ ®¢¨âì áâனª¨ ¬ëè¨. =================== |
=== ãªæ¨ï 18, ¯®¤äãªæ¨ï 19 - ¯®«ãç¨âì/ãáâ ®¢¨âì áâனª¨ ¬ëè¨. == |
====================================================================== |
------------- ®¤¯®¤äãªæ¨ï 0 - ¯®«ãç¨âì ᪮à®áâì ¬ëè¨. -------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = ®¬¥à ¯®äãªæ¨¨ 2-£® ã஢ï. |
ecx = 0 - ¯®«ãç¨âì ᪮à®áâì ¬ëè¨ |
* ecx = 0 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = ⥪ãé ï ᪮à®áâì ¬ëè¨ |
ecx = 1 - ãáâ ®¢¨âì ᪮à®áâì ¬ëè¨ |
edx = ãáâ ¢«¨¢ ¥¬®¥ § 票¥ ᪮à®á⨠|
------------ ®¤¯®¤äãªæ¨ï 1 - ãáâ ®¢¨âì ᪮à®áâì ¬ëè¨. ------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 1 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
* edx = ®¢®¥ § 票¥ ᪮à®á⨠|
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
ecx = 2 - ¯®«ãç¨âì § ¤¥à¦ªã ã᪮२ï |
------------- ®¤¯®¤äãªæ¨ï 2 - ¯®«ãç¨âì § ¤¥à¦ªã ¬ëè¨. -------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 2 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = ⥪ãé ï § ¤¥à¦ª ã᪮२ï |
* eax = ⥪ãé ï § ¤¥à¦ª ¬ëè¨ |
ecx = 3 - ãáâ ®¢¨âì § ¤¥à¦ªã ã᪮२ï |
edx = ãáâ ¢«¨¢ ¥¬ ï § ¤¥à¦ª ã᪮२ï |
------------ ®¤¯®¤äãªæ¨ï 3 - ãáâ ®¢¨âì § ¤¥à¦ªã ¬ëè¨. ------------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 3 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
* edx = ®¢®¥ § 票¥ § ¤¥à¦ª¨ ¬ëè¨ |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
ecx = 4 - ãáâ ®¢¨âì ¯®§¨æ¨î ªãàá®à ¬ëè¨ íªà ¥ |
edx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
-------- ®¤¯®¤äãªæ¨ï 4 - ãáâ ®¢¨âì ¯®«®¦¥¨¥ ªãàá®à ¬ëè¨. -------- |
à ¬¥âàë: |
* eax = 18 - ®¬¥à äãªæ¨¨ |
* ebx = 19 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 4 - ®¬¥à ¯®¤¯®¤äãªæ¨¨ |
* edx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ¥ª®¬¥¤ã¥¬ ï ᪮à®áâì ¬ëè¨ (¢ ¯®¤äãªæ¨¨ 1) ®â 1 ¤® 9. |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ª®â஫¨àã¥âáï ª®¤®¬ ï¤à , ¯® í⮬ã |
¨á¯®«ì§ã©â¥ ®áâ®à®¦®, ¯à¨ ¥ª®à४⮬ § 票¨ ªãàá®à ¬®¦¥â "§ ¬¥à§ãâì". |
ª®à®áâì ¬ëè¨ ¬®¦® ॣ㫨஢ âì ç¥à¥§ ¯à¨«®¦¥¨¥ SETUP. |
* ¥ª®¬¥¤ã¥¬ ï ¢¥«¨ç¨ § ¤¥à¦ª¨ (¢ ¯®¤äãªæ¨¨ 3) = 10. ®«¥¥ ¨§ª®¥ |
§ 票¥ ¥ ®¡à ¡ âë¢ ¥âáï COM ¬ëè ¬¨. ਠ®ç¥ì ¡®«ìè¨å § 票ïå |
¥¢®§¬®¦® ¯¥à¥¤¢¨¦¥¨¥ ¬ëè¨ 1 ¯¨ªá¥«ì ¨ ªãàá®à ¡ã¤¥â ¯àë£ âì |
¢¥«¨ç¨ã ãáâ ®¢«¥®© ᪮à®á⨠(¯®¤äãªæ¨ï 1). |
¥«¨ç¨ã § ¤¥à¦ª¨ ¬®¦® ॣ㫨஢ âì ç¥à¥§ ¯à¨«®¦¥¨¥ SETUP. |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ª®â஫¨àã¥âáï ª®¤®¬ ï¤à . |
* ¯®¤äãªæ¨¨ 4 ãáâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ª®â஫¨àã¥âáï ª®¤®¬ ï¤à . |
¥à¥¤ ¨á¯®«ì§®¢ ¨¥¬ ¥®¡å®¤¨¬® 㧠âì ⥪ã饥 à §à¥è¥¨¥ íªà ¨ |
¯à¨ ãáâ ®¢ª¥ ¯®§¨æ¨¨ á«¥¤¨âì, çâ®¡ë ¢¥«¨ç¨ ¯®§¨æ¨¨ ¥ ¢ë室¨« § |
¯à¥¤¥«ë íªà . |
* ¥ª®¬¥¤ã¥¬ ï ᪮à®áâì ¬ëè¨ (¢ ¯®¤¯®¤äãªæ¨¨ 1) ®â 1 ¤® 9. |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ¯à®¢¥àï¥âáï ª®¤®¬ ï¤à , ¯®í⮬ã |
¨á¯®«ì§ã©â¥ ®áâ®à®¦®, ¯à¨ ¥ª®à४⮬ § 票¨ ªãàá®à ¬®¦¥â |
"§ ¬ñà§ãâì". ª®à®áâì ¬ëè¨ ¬®¦® ॣ㫨஢ âì ¢ ¯à¨«®¦¥¨¨ SETUP. |
* ¥ª®¬¥¤ã¥¬ ï ¢¥«¨ç¨ § ¤¥à¦ª¨ (¢ ¯®¤¯®¤äãªæ¨¨ 3) = 10. |
¥ì訥 § ç¥¨ï ¥ ®¡à ¡ âë¢ îâáï COM-¬ëè ¬¨. ਠ®ç¥ì ¡®«ìè¨å |
§ 票ïå ¥¢®§¬®¦® ¯¥à¥¤¢¨¦¥¨¥ ¬ëè¨ 1 ¯¨ªá¥«ì ¨ ªãàá®à ¡ã¤¥â |
¯àë£ âì ¢¥«¨ç¨ã ãáâ ®¢«¥®© ᪮à®á⨠(¯®¤¯®¤äãªæ¨ï 1). |
áâ ¢«¨¢ ¥¬ ï ¢¥«¨ç¨ ¥ ¯à®¢¥àï¥âáï ª®¤®¬ ï¤à . |
* ®¤¯®¤äãªæ¨ï 4 ¥ ¯à®¢¥àï¥â ¯¥à¥¤ ®¥ § 票¥. ¥à¥¤ ¢ë§®¢®¬ |
¥®¡å®¤¨¬® 㧠âì ⥪ã饥 à §à¥è¥¨¥ íªà (¯®¤äãªæ¨¥© 14) |
¨ ¯à®¢¥à¨âì, çâ® ãáâ ¢«¨¢ ¥¬®¥ ¯®«®¦¥¨¥ ¥ ¢ë室¨â § ¯à¥¤¥«ë |
íªà . |
====================================================================== |
============ ãªæ¨ï 19 - § ¯ãáâ¨âì ¯à®£à ¬¬ã á à ¬¤¨áª . ============ |
1010,9 → 1023,9 |
* cl = ¡ ©â ¤«ï ¢ë¢®¤ |
®§¢à é ¥¬®¥ § 票¥ (®¤¨ ª®¢® ¤«ï ®¡¥¨å ¯®¤äãªæ¨©): |
* eax = 0 - ãá¯¥è® |
* eax = 1 - ¥ ®¯à¥¤¥«+ ¡ §®¢ë© ¯®àâ |
* eax = 1 - ¥ ®¯à¥¤¥«ñ ¡ §®¢ë© ¯®àâ |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ®¯à¥¤¥«+ ¡ §®¢ë© ¯®à⠢맮¢®¬ |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ®¯à¥¤¥«ñ ¡ §®¢ë© ¯®à⠢맮¢®¬ |
¯®¤äãªæ¨¨ 1 äãªæ¨¨ 21. |
====================================================================== |
1131,9 → 1144,9 |
====================================================================== |
=========== ãªæ¨ï 21, ¯®¤äãªæ¨ï 7 - ãáâ ®¢¨âì ¡ §ã HD. =========== |
====================================================================== |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦+á⪨© ¤¨áª ¯¨á âì, ¯à¨ |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦ñá⪨© ¤¨áª ¯¨á âì, ¯à¨ |
¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© á¨á⥬®© ¨ äãªæ¨©, |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦+á⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 ¨ ᮢ६¥®£® á¨â ªá¨á |
/HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ ãáâ ¢«¨¢ îâ ¡ §ã. |
à ¬¥âàë: |
1145,17 → 1158,17 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì ¡ §ã. |
* ¥ á«¥¤ã¥â ¨§¬¥ïâì ¡ §ã, ª®£¤ ª ª®¥-¨¡ã¤ì ¯à¨«®¦¥¨¥ à ¡®â ¥â |
á ¦+á⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
á ¦ñá⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
* ®«ãç¨âì ãáâ ®¢«¥ãî ¡ §ã ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 7 äãªæ¨¨ 26. |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦+á⪮£® ¤¨áª |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦ñá⪮£® ¤¨áª |
¯®¤äãªæ¨¥© 8. |
====================================================================== |
========== ãªæ¨ï 21, ¯®¤äãªæ¨ï 8 - ãáâ ®¢¨âì à §¤¥« HD. ========== |
====================================================================== |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦+á⪮£® ¤¨áª |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦ñá⪮£® ¤¨áª |
¯¨á âì, ¯à¨ ¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦+á⪨© ¤¨áª (⨯ |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ |
¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); ¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 |
¨ ᮢ६¥®£® á¨â ªá¨á /HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ |
ãáâ ¢«¨¢ îâ ¡ §ã ¨ à §¤¥«. |
1168,13 → 1181,13 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì à §¤¥«. |
* ¥ á«¥¤ã¥â ¨§¬¥ïâì à §¤¥«, ª®£¤ ª ª®¥-¨¡ã¤ì ¯à¨«®¦¥¨¥ à ¡®â ¥â |
á ¦+á⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
á ¦ñá⪨¬ ¤¨áª®¬. ᫨ ¥ å®â¨â¥ £«îª®¢ á¨á⥬ë. |
* ®«ãç¨âì ãáâ ®¢«¥ë© à §¤¥« ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 8 |
äãªæ¨¨ 26. |
* ஢¥à®ª ª®à४â®áâì ¥ ¤¥« ¥âáï. |
* § âì ç¨á«® à §¤¥«®¢ ¦+á⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
* § âì ç¨á«® à §¤¥«®¢ ¦ñá⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
¯®¤äãªæ¨¨ 11 äãªæ¨¨ 18. |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦+á⪮£® ¤¨áª |
* «¥¤ã¥â â ª¦¥ ®¯à¥¤¥«¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦ñá⪮£® ¤¨áª |
¯®¤äãªæ¨¥© 7. |
====================================================================== |
1239,7 → 1252,7 |
* ¥á«¨ ¤à ©¢¥à § £à㦥: |
* eax = 'MDAZ' (¢ á⨫¥ fasm' , â.¥. 'M' - ¬« ¤è¨© ¡ ©â, |
'Z' - áâ à訩) - ᨣ âãà |
* ebx = ⥪ãé ï ç áâ®â à §¢+à⪨ (¢ æ) |
* ebx = ⥪ãé ï ç áâ®â à §¢ñà⪨ (¢ æ) |
* ecx à §àãè ¥âáï |
* ¡ãä¥à, ª®â®àë© ãª §ë¢ ¥â edx, § ¯®«¥ |
®à¬ â ¡ãä¥à : |
1250,15 → 1263,15 |
* +36 = +0x24: 7*dword: § १¥à¢¨à®¢ ® (0 ¢ ⥪ã饩 ॠ«¨§ 樨) |
* +64 = +0x40: 32*word: ᯨ᮪ ¯®¤¤¥à¦¨¢ ¥¬ëå ¢¨¤¥®à¥¦¨¬®¢ (ª ¦¤®¥ |
á«®¢® - ®¬¥à ¢¨¤¥®à¥¦¨¬ , ¯®á«¥ ᮡá⢥® ᯨ᪠¨¤ãâ 㫨) |
* +128 = +0x80: 32*(5*word): ᯨ᮪ ¯®¤¤¥à¦¨¢ ¥¬ëå ç áâ®â à §¢+à⮪ |
* +128 = +0x80: 32*(5*word): ᯨ᮪ ¯®¤¤¥à¦¨¢ ¥¬ëå ç áâ®â à §¢ñà⮪ |
¤«ï ¢¨¤¥®à¥¦¨¬®¢: ¤«ï ª ¦¤®£® ¢¨¤¥®à¥¦¨¬ , 㪠§ ®£® ¢ ¯à¥¤ë¤ã饬 |
¯®«¥, 㪠§ ® ¤® 5 ¯®¤¤¥à¦¨¢ ¥¬ëå ç áâ®â |
(¢ ¥¨á¯®«ì§ã¥¬ëå ¯®§¨æ¨ïå § ¯¨á ë 㫨) |
¬¥ç ¨ï: |
* ãªæ¨ï ¨¨æ¨ «¨§¨àã¥â ¤à ©¢¥à (¥á«¨ ® ¥é+ ¥ ¨¨æ¨ «¨§¨à®¢ ) |
* ãªæ¨ï ¨¨æ¨ «¨§¨àã¥â ¤à ©¢¥à (¥á«¨ ® ¥éñ ¥ ¨¨æ¨ «¨§¨à®¢ ) |
¨ ¤®«¦ ¢ë§ë¢ âìáï ¯¥à¢®©, ¯¥à¥¤ ®áâ «ì묨 (¨ ç¥ ®¨ ¡ã¤ãâ |
¢®§¢à é âì -1, ¨ç¥£® ¥ ¤¥« ï). |
* ⥪ã饩 ॠ«¨§ 樨 ¯®¤¤¥à¦¨¢ ¥âáï ⮫쪮 ®¤ ç áâ®â à §¢+à⪨ |
* ⥪ã饩 ॠ«¨§ 樨 ¯®¤¤¥à¦¨¢ ¥âáï ⮫쪮 ®¤ ç áâ®â à §¢ñà⪨ |
¢¨¤¥®à¥¦¨¬. |
====================================================================== |
1273,13 → 1286,13 |
* eax = -1 - ¤à ©¢¥à ¥ § £à㦥 ¨«¨ ¥ ¨¨æ¨ «¨§¨à®¢ ; |
ebx,ecx à §àãè îâáï |
* eax = [è¨à¨ ]*65536 + [¢ëá®â ] |
* ebx = ç áâ®â ¢¥à⨪ «ì®© à §¢+à⪨ (¢ æ) |
* ebx = ç áâ®â ¢¥à⨪ «ì®© à §¢ñà⪨ (¢ æ) |
* ecx = ®¬¥à ⥪ã饣® ¢¨¤¥®à¥¦¨¬ |
¬¥ç ¨ï: |
* à ©¢¥à ¯à¥¤¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ¨¨æ¨ «¨§¨à®¢ ¢ë§®¢®¬ |
äãªæ¨¨ ¤à ©¢¥à 1. |
* ᫨ ã¦ë ⮫쪮 à §¬¥àë íªà , 楫¥á®®¡à §¥© ¨á¯®«ì§®¢ âì |
äãªæ¨î 14 á ãç+⮬ ⮣®, çâ® ® ¢®§¢à é ¥â à §¬¥àë 1 ¬¥ìè¥. |
äãªæ¨î 14 á ãçñ⮬ ⮣®, çâ® ® ¢®§¢à é ¥â à §¬¥àë 1 ¬¥ìè¥. |
====================================================================== |
= ãªæ¨ï 21, ¯®¤äãªæ¨ï 13, ¯®¤¯®¤äãªæ¨ï 3 - ãáâ ®¢¨âì ¢¨¤¥®à¥¦¨¬. |
1288,7 → 1301,7 |
* eax = 21 - ®¬¥à äãªæ¨¨ |
* ebx = 13 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = 3 - ®¬¥à äãªæ¨¨ ¤à ©¢¥à |
* edx = [ç áâ®â à §¢+à⪨]*65536 + [®¬¥à ¢¨¤¥®à¥¦¨¬ ] |
* edx = [ç áâ®â à §¢ñà⪨]*65536 + [®¬¥à ¢¨¤¥®à¥¦¨¬ ] |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤à ©¢¥à ¥ § £à㦥, ¥ ¨¨æ¨ «¨§¨à®¢ ¨«¨ |
¯à®¨§®è« ®è¨¡ª |
1373,7 → 1386,7 |
* ®®¡é¥-â® CMOS ¯®¤¤¥à¦¨¢ ¥â ¤«ï ¡ã¤¨«ì¨ª ãáâ ®¢ªã § 票ï |
0xFF ¢ ª ç¥á⢥ ®¤®£® ¨§ ¯ à ¬¥â஢ ¨ ®§ ç ¥â íâ®, çâ® |
ᮮ⢥âáâ¢ãî騩 ¯ à ¬¥âà ¨£®à¨àã¥âáï. ® ¢ ⥪ã饩 ॠ«¨§ 樨 |
íâ® ¥ ¯à®©¤+â (¢¥à+âáï § 票¥ 1). |
íâ® ¥ ¯à®©¤ñâ (¢¥àñâáï § 票¥ 1). |
* 㤨«ì¨ª - £«®¡ «ìë© á¨áâ¥¬ë© à¥áãàá; ãáâ ®¢ª ¡ã¤¨«ì¨ª |
¢â®¬ â¨ç¥áª¨ ®â¬¥ï¥â ¯à¥¤ë¤ãéãî ãáâ ®¢ªã. ¯à®ç¥¬, ¤ ë© |
¬®¬¥â ¨ ®¤ ¯à®£à ¬¬ ¥£® ¥ ¨á¯®«ì§ã¥â. |
1381,7 → 1394,7 |
====================================================================== |
============== ãªæ¨ï 23 - ®¦¨¤ âì ᮡëâ¨ï á â ©¬ ã⮬. ============= |
====================================================================== |
᫨ ®ç¥à¥¤ì á®®¡é¥¨© ¯ãáâ , ¦¤+â ¯®ï¢«¥¨ï á®®¡é¥¨ï ¢ ®ç¥à¥¤¨, |
᫨ ®ç¥à¥¤ì á®®¡é¥¨© ¯ãáâ , ¦¤ñâ ¯®ï¢«¥¨ï á®®¡é¥¨ï ¢ ®ç¥à¥¤¨, |
® ¥ ¡®«¥¥ 㪠§ ®£® ¢à¥¬¥¨. ⥬ áç¨âë¢ ¥â á®®¡é¥¨¥ ¨§ ®ç¥à¥¤¨. |
à ¬¥âàë: |
1397,8 → 1410,8 |
* «ï ¯à®¢¥àª¨, ¥áâì «¨ á®®¡é¥¨¥ ¢ ®ç¥à¥¤¨, ¨á¯®«ì§ã©â¥ äãªæ¨î 11. |
â®¡ë ¦¤ âì ᪮«ì 㣮¤® ¤®«£®, ¨á¯®«ì§ã©â¥ äãªæ¨î 10. |
* ¥à¥¤ ç ebx=0 ¯à¨¢®¤¨â ª ¬®¬¥â «ì®¬ã ¢®§¢à 饨î eax=0. |
* ਠ⥪ã饩 ॠ«¨§ 樨 ¯à®¨§®©¤+â ¥¬¥¤«¥ë© ¢®§¢à â ¨§ äãªæ¨¨ |
á eax=0, ¥á«¨ á«®¦¥¨¥ ebx á ⥪ã騬 § 票¥¬ áç+â稪 ¢à¥¬¥¨ |
* ਠ⥪ã饩 ॠ«¨§ 樨 ¯à®¨§®©¤ñâ ¥¬¥¤«¥ë© ¢®§¢à â ¨§ äãªæ¨¨ |
á eax=0, ¥á«¨ á«®¦¥¨¥ ebx á ⥪ã騬 § 票¥¬ áçñâ稪 ¢à¥¬¥¨ |
¢ë§®¢¥â 32-¡¨â®¥ ¯¥à¥¯®«¥¨¥. |
====================================================================== |
1577,9 → 1590,9 |
====================================================================== |
============ ãªæ¨ï 26, ¯®¤äãªæ¨ï 7 - ¯®«ãç¨âì ¡ §ã HD. ============ |
====================================================================== |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦+á⪨© ¤¨áª ¯¨á âì, ¯à¨ |
§ HD 㦠¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© ¦ñá⪨© ¤¨áª ¯¨á âì, ¯à¨ |
¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© á¨á⥬®© ¨ äãªæ¨©, |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦+á⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ ¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); |
¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 ¨ ᮢ६¥®£® á¨â ªá¨á |
/HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ ãáâ ¢«¨¢ îâ ¡ §ã. |
à ¬¥âàë: |
1590,14 → 1603,14 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì ¡ §ã. |
* áâ ®¢¨âì ¡ §ã ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 7 äãªæ¨¨ 21. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦+á⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 8. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ë© à §¤¥« ¦ñá⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 8. |
====================================================================== |
=========== ãªæ¨ï 26, ¯®¤äãªæ¨ï 8 - ¯®«ãç¨âì à §¤¥« HD. =========== |
====================================================================== |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦+á⪮£® ¤¨áª |
§¤¥« HD 㦥 ¤«ï ®¯à¥¤¥«¥¨ï, ª ª®© à §¤¥« ¦ñá⪮£® ¤¨áª |
¯¨á âì, ¯à¨ ¨á¯®«ì§®¢ ¨¨ ãáâ ॢè¨å äãªæ¨© à ¡®âë á ä ©«®¢®© |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦+á⪨© ¤¨áª (⨯ |
á¨á⥬®© ¨ äãªæ¨©, ¥ï¢® ¨á¯®«ì§ãîé¨å ¦ñá⪨© ¤¨áª (⨯ |
¯®¤äãªæ¨¨ 6 äãªæ¨¨ 18); ¯à¨ ¨á¯®«ì§®¢ ¨¨ äãªæ¨© 58 ¨ 70 ¨ |
ᮢ६¥®£® á¨â ªá¨á /HD0,/HD1,/HD2,/HD3 í⨠äãªæ¨¨ á ¬¨ |
ãáâ ¢«¨¢ îâ ¡ §ã ¨ à §¤¥«. |
1609,12 → 1622,12 |
¬¥ç ¨ï: |
* î¡®¥ ¯à¨«®¦¥¨¥ ¢ «î¡®© ¬®¬¥â ¢à¥¬¥¨ ¬®¦¥â ¨§¬¥¨âì à §¤¥«. |
* áâ ®¢¨âì à §¤¥« ¬®¦® ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 8 äãªæ¨¨ 21. |
* § âì ç¨á«® à §¤¥«®¢ ¦+á⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
* § âì ç¨á«® à §¤¥«®¢ ¦ñá⪮¬ ¤¨áª¥ ¬®¦® ¢ë§®¢®¬ |
¯®¤äãªæ¨¨ 11 äãªæ¨¨ 18. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦+á⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 7. |
* ®«ãç¨âì ¨á¯®«ì§ã¥¬ãî ¡ §ã ¦ñá⪮£® ¤¨áª ¬®¦® ¯®¤äãªæ¨¥© 7. |
====================================================================== |
=== ãªæ¨ï 26, ¯®¤äãªæ¨ï 9 - ¯®«ãç¨âì § 票¥ áç+â稪 ¢à¥¬¥¨. === |
=== ãªæ¨ï 26, ¯®¤äãªæ¨ï 9 - ¯®«ãç¨âì § 票¥ áçñâ稪 ¢à¥¬¥¨. === |
====================================================================== |
à ¬¥âàë: |
* eax = 26 - ®¬¥à äãªæ¨¨ |
1623,7 → 1636,7 |
* eax = ç¨á«® á®âëå ¤®«¥© ᥪã¤ë, ¯à®è¥¤è¨å á ¬®¬¥â |
§ ¯ã᪠á¨á⥬ë |
¬¥ç ¨ï: |
* ç+â稪 ¡¥à+âáï ¯® ¬®¤ã«î 2^32, ç⮠ᮮ⢥âáâ¢ã¥â ¥¬®£¨¬ ¡®«¥¥ |
* çñâ稪 ¡¥àñâáï ¯® ¬®¤ã«î 2^32, ç⮠ᮮ⢥âáâ¢ã¥â ¥¬®£¨¬ ¡®«¥¥ |
497 áã⮪. |
* ¨á⥬®¥ ¢à¥¬ï ¬®¦® ¯®«ãç¨âì äãªæ¨¥© 3. |
1642,13 → 1655,13 |
====================================================================== |
====================== ãªæ¨ï 26, ¯®¤äãªæ¨ï 11 ===================== |
=========== § âì, à §à¥è+ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª HD. ========== |
=========== § âì, à §à¥èñ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª HD. ========== |
====================================================================== |
à ¬¥âàë: |
* eax = 26 - ®¬¥à äãªæ¨¨ |
* ebx = 11 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0/1 - § ¯à¥é+/à §à¥è+ |
* eax = 0/1 - § ¯à¥éñ/à §à¥èñ |
¬¥ç ¨ï: |
* ᯮ«ì§ã¥âáï ¯à¨ LBA-ç⥨¨ (¯®¤äãªæ¨ï 8 äãªæ¨¨ 58). |
* áâ ®¢¨âì ⥪ã饥 á®áâ®ï¨¥ ¬®¦® ¢ë§®¢®¬ |
1656,13 → 1669,13 |
====================================================================== |
====================== ãªæ¨ï 26, ¯®¤äãªæ¨ï 12 ===================== |
========== § âì, à §à¥è+ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI. ========== |
========== § âì, à §à¥èñ «¨ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI. ========== |
====================================================================== |
à ¬¥âàë: |
* eax = 26 - ®¬¥à äãªæ¨¨ |
* ebx = 12 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0/1 - § ¯à¥é+/à §à¥è+ |
* eax = 0/1 - § ¯à¥éñ/à §à¥èñ |
¬¥ç ¨ï: |
* ᯮ«ì§ã¥âáï ¯à¨ à ¡®â¥ á 訮© PCI (äãªæ¨ï 62). |
* ¥ªãé ï ॠ«¨§ æ¨ï ¨á¯®«ì§ã¥â ⮫쪮 ¬« ¤è¨© ¡¨â ecx. |
1762,7 → 1775,7 |
* â äãªæ¨ï ãáâ ५ ; äãªæ¨ï 70 ¯®§¢®«ï¥â ¢ë¯®«ïâì |
⥠¦¥ ¤¥©á⢨ï á à áè¨à¥ë¬¨ ¢®§¬®¦®áâﬨ. |
* ᫨ 㪠§ âì ¥ã«¥¢®¥ § 票¥ ¢ esi ¨ à ¬¤¨áª¥ 㦥 ¥áâì |
㪠§ ë© ä ©«, â® ¡ã¤¥â ᮧ¤ ¥é+ ®¤¨ ä ©« á ⥬ ¦¥ ¨¬¥¥¬. |
㪠§ ë© ä ©«, â® ¡ã¤¥â ᮧ¤ ¥éñ ®¤¨ ä ©« á ⥬ ¦¥ ¨¬¥¥¬. |
* ¯à®â¨¢®¬ á«ãç ¥ ä ©« ¯¥à¥§ ¯¨áë¢ ¥âáï. |
* ¬ï ä ©« ¤®«¦® ¡ëâì «¨¡® ¢ ä®à¬ ⥠8+3 ᨬ¢®«®¢ |
(¯¥à¢ë¥ 8 ᨬ¢®«®¢ - ᮡá⢥® ¨¬ï, ¯®á«¥¤¨¥ 3 - à áè¨à¥¨¥, |
1814,7 → 1827,7 |
᫨ y>=ywnd, â® ¬« ¤è¥¥ á«®¢® ¥®âà¨æ â¥«ì® ¨ ᮤ¥à¦¨â |
®â®á¨â¥«ìãî y-ª®®à¤¨ âã, áâ à襥 - ®â®á¨â¥«ìãî x-ª®®à¤¨ âã |
(¯à ¢¨«ì®£® § ª ). ¯à®â¨¢®¬ á«ãç ¥ ¬« ¤è¥¥ á«®¢® ®âà¨æ â¥«ì® |
¨ ¢á+ à ¢® ᮤ¥à¦¨â ®â®á¨â¥«ìãî y-ª®®à¤¨ âã, |
¨ ¢áñ à ¢® ᮤ¥à¦¨â ®â®á¨â¥«ìãî y-ª®®à¤¨ âã, |
ª áâ à襬ã á«®¢ã á«¥¤ã¥â ¯à¨¡ ¢¨âì 1. |
----------------- ®¤äãªæ¨ï 2 - ¦ âë¥ ª®¯ª¨ ¬ëè¨ ----------------- |
1891,7 → 1904,7 |
======== ãªæ¨ï 40 - ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩. ======== |
====================================================================== |
᪠¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ ¢«¨ï¥â äãªæ¨¨ à ¡®âë á ᮡëâ¨ï¬¨ 10, |
11, 23 - ®¨ á®®¡é îâ ⮫쪮 ® ᮡëâ¨ïå, à §à¥è+ëå í⮩ ¬ ᪮©. |
11, 23 - ®¨ á®®¡é îâ ⮫쪮 ® ᮡëâ¨ïå, à §à¥èñëå í⮩ ¬ ᪮©. |
à ¬¥âàë: |
* eax = 40 - ®¬¥à äãªæ¨¨ |
* ebx = ¬ ᪠: ¡¨â i ᮮ⢥âáâ¢ã¥â ᮡëâ¨î i+1 (á¬. ᯨ᮪ ᮡë⨩) |
1902,7 → 1915,7 |
* ᪠¯® 㬮«ç ¨î (7=111b) à §à¥è ¥â ¨§¢¥é¥¨ï ® ¯¥à¥à¨á®¢ª¥ |
¨ ¦ â¨ïå ª« ¢¨è ¨ ª®¯®ª. |
⮣® ¤®áâ â®ç® ¤«ï ¡®«ìè¨á⢠¯à¨«®¦¥¨©. |
* ®¡ëâ¨ï, § ¯à¥é+ë¥ ¢ ¬ ᪥, ¢á+ à ¢® á®åà ïîâáï, ¥á«¨ |
* ®¡ëâ¨ï, § ¯à¥éñë¥ ¢ ¬ ᪥, ¢áñ à ¢® á®åà ïîâáï, ¥á«¨ |
¯à¨å®¤ïâ; ® ¨å ¯à®áâ® ¥ ¨§¢¥é îâ äãªæ¨¨ à ¡®âë á ᮡëâ¨ï¬¨. |
* ãªæ¨¨ à ¡®âë á ᮡëâ¨ï¬¨ ãç¨âë¢ îâ ¬ áªã ¬®¬¥â |
¢ë§®¢ äãªæ¨¨, ¥ ¬®¬¥â ¯®áâ㯫¥¨ï á®®¡é¥¨ï. |
1935,8 → 1948,8 |
* eax = 0 |
* ecx = 1 |
* ebx à §àãè ¥âáï |
* ¥á«¨ ¢á+ ¢ ¯®à浪¥ ¨ ¤ ë¥ ¡ë«¨: |
* eax = à §¬¥à ¤ ëå, ¥é+ ¥ ¯à®ç¨â ëå ¨§ ¡ãä¥à (¢ ¡ ©â å) |
* ¥á«¨ ¢áñ ¢ ¯®à浪¥ ¨ ¤ ë¥ ¡ë«¨: |
* eax = à §¬¥à ¤ ëå, ¥éñ ¥ ¯à®ç¨â ëå ¨§ ¡ãä¥à (¢ ¡ ©â å) |
* ecx = 0 |
* ebx = ®ç¥à¥¤®© ¡ ©â |
¬¥ç ¨ï: |
1964,7 → 1977,7 |
* ebx ¨£®à¨àã¥âáï |
* ecx = 0x8000nnnn, £¤¥ nnnn = ®¬¥à ¯®àâ (®â 0 ¤® 0xFFFF) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¯à¨ í⮬ ebx = ¢¢¥¤+ë© ¡ ©â |
* eax = 0 - ãᯥè®, ¯à¨ í⮬ ebx = ¢¢¥¤ñë© ¡ ©â |
* eax = 1 - ¯®â®ª ¥ § १¥à¢¨à®¢ « ¤ ë© ¯®àâ |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¯®â®ª ¤®«¦¥ § १¥à¢¨à®¢ âì § ᮡ®© |
1972,7 → 1985,7 |
* «ï § १¥à¢¨à®¢ ëå ¯®à⮢ ¢¬¥áâ® ¢ë§®¢ íâ¨å äãªæ¨© |
«ãçè¥ ¨á¯®«ì§®¢ âì ª®¬ ¤ë ¯à®æ¥áá®à in/out - íâ® § ç¨â¥«ì® |
¡ëáâ॥ ¨ ¥áª®«ìª® ª®à®ç¥ ¨ ¯à®é¥. § ¥§ १¥à¢¨à®¢ ëå |
¯®à⮢ ç¨â âì ¢á+ à ¢® ¥«ì§ï. |
¯®à⮢ ç¨â âì ¢áñ à ¢® ¥«ì§ï. |
====================================================================== |
======== ãªæ¨ï 44 - ®¯à¥¤¥«¨âì ¤¥©áâ¢¨ï ¯à¨ ¯®áâ㯫¥¨¨ IRQ. ======= |
2102,7 → 2115,7 |
* ebx = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = ⨯ ª®¯®ª: |
* 0 = ¯«®áª¨¥ |
* 1 = ®¡ê+¬ë¥ |
* 1 = ®¡êñ¬ë¥ |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
2127,7 → 2140,7 |
¯®¤äãªæ¨¥© 0. |
* ¡«¨æ áâ ¤ àâëå 梥⮢ ¢«¨ï¥â ⮫쪮 ¯à¨«®¦¥¨ï, |
ª®â®àë¥ íâã â ¡«¨æã ï¢ë¬ ®¡à §®¬ ¯®«ãç îâ (¯®¤äãªæ¨¥© 3) ¨ |
¨á¯®«ì§ãîâ (㪠§ë¢ ï 梥⠨§ ¥+ ¯à¨ ¢ë§®¢ å äãªæ¨© à¨á®¢ ¨ï). |
¨á¯®«ì§ãîâ (㪠§ë¢ ï 梥⠨§ ¥ñ ¯à¨ ¢ë§®¢ å äãªæ¨© à¨á®¢ ¨ï). |
* ¡«¨æ áâ ¤ àâëå 梥⮢ ¢å®¤¨â ¢ ᪨ ¨ ãáâ ¢«¨¢ ¥âáï § ®¢® |
¯à¨ ãáâ ®¢ª¥ ᪨ (¯®¤äãªæ¨¨ 8). |
* ¡«¨æã 梥⮢ ¬®¦® ¯à®á¬ âਢ âì/¨§¬¥ïâì ¨â¥à ªâ¨¢® á ¯®¬®éìî |
2273,7 → 2286,7 |
¯®«¥ ¯à®¬¥¦ãâ®ç®£® ¡ãä¥à ¨ 㪠§ ® ¨¬ï ä ©« |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* ¨ ç¥ eax = ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë; ¥á«¨ ä ©« ¥ § ¤ +â ᪨, |
* ¨ ç¥ eax = ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë; ¥á«¨ ä ©« ¥ § ¤ ñâ ᪨, |
â® ¢®§¢à é ¥âáï ®è¨¡ª 3 (¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ). |
¬¥ç ¨ï: |
* ਠãᯥ让 § £à㧪¥ ᪨ ¢á¥ ®ª ¨§¢¥é îâáï ® ¥®¡å®¤¨¬®á⨠|
2308,7 → 2321,7 |
================= ãªæ¨ï 50 - ãáâ ®¢ª ä®à¬ë ®ª . ================= |
====================================================================== |
¡ëçë¥ ®ª ¯à¥¤áâ ¢«ïîâ ᮡ®© ¯àאַ㣮«ì¨ª¨. ¯®¬®éìî í⮩ äãªæ¨¨ |
®ªã ¬®¦® ¯à¨¤ âì ¯à®¨§¢®«ìãî ä®à¬ã. ®à¬ § ¤ +âáï ¡®à®¬ â®ç¥ª |
®ªã ¬®¦® ¯à¨¤ âì ¯à®¨§¢®«ìãî ä®à¬ã. ®à¬ § ¤ ñâáï ¡®à®¬ â®ç¥ª |
¢ãâਠ®¡à ¬«ïî饣® ¯àאַ㣮«ì¨ª , ¯à¨ ¤«¥¦ é¨å ®ªã. ®«®¦¥¨¥ ¨ |
à §¬¥àë ®¡à ¬«ïî饣® ¯àאַ㣮«ì¨ª § ¤ îâáï äãªæ¨¥© 0 ¨ ¨§¬¥ïîâáï |
äãªæ¨¥© 67. |
2325,7 → 2338,7 |
à ¬¥âàë: |
* eax = 50 - ®¬¥à äãªæ¨¨ |
* ebx = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx § ¤ +â ¬ áèâ ¡: ª ¦¤ë© ¡ ©â ¤ ëå ®¯à¥¤¥«ï¥â |
* ecx § ¤ ñâ ¬ áèâ ¡: ª ¦¤ë© ¡ ©â ¤ ëå ®¯à¥¤¥«ï¥â |
(2^scale)*(2^scale) ¯¨ªá¥«¥© |
®§¢à é ¥¬®¥ § 票¥: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
2519,8 → 2532,8 |
* eax = 53 - ®¬¥à äãªæ¨¨ |
* ebx = 0 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = «®ª «ìë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* edx = 㤠«+ë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«+ë© IP |
* edx = 㤠«ñë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«ñë© IP |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 = 0xFFFFFFFF - ®è¨¡ª ; ebx à §àãè ¥âáï |
* eax = åí¤« ᮪¥â (¥ª®â®à®¥ ç¨á«®, ®¤®§ ç® ¨¤¥â¨ä¨æ¨àãî饥 |
2601,8 → 2614,8 |
* eax = 53 - ®¬¥à äãªæ¨¨ |
* ebx = 5 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = «®ª «ìë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* edx = 㤠«+ë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«+ë© IP |
* edx = 㤠«ñë© ¯®àâ (ãç¨âë¢ ¥âáï ⮫쪮 ¬« ¤è¥¥ á«®¢®) |
* esi = 㤠«ñë© IP |
* edi = ०¨¬ ®âªàëâ¨ï: SOCKET_PASSIVE=0 ¨«¨ SOCKET_ACTIVE=1 |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 = 0xFFFFFFFF - ®è¨¡ª ; ebx à §àãè ¥âáï |
2707,7 → 2720,7 |
* 201: à §¬¥à â ¡«¨æë ARP (¢ í«¥¬¥â å) (20 ¢ ⥪ã饩 ¢¥àᨨ) |
* 202: ¯à®ç¨â âì í«¥¬¥â edx â ¡«¨æë ARP ¢® ¢à¥¬¥ë© ¡ãä¥à, ®âªã¤ |
¡¥àãâ ¨ä®à¬ æ¨î 5 ¯®á«¥¤ãîé¨å ⨯®¢; |
¢ í⮬ á«ãç ¥ eax ¥®¯à¥¤¥«+ |
¢ í⮬ á«ãç ¥ eax ¥®¯à¥¤¥«ñ |
* 203: IP- ¤à¥á, § ¯®¬¥ë© ⨯®¬ 202 |
* 204: áâ à襥 dword MAC- ¤à¥á , § ¯®¬¥®£® ⨯®¬ 202 |
* 205: ¬« ¤è¥¥ word MAC- ¤à¥á , § ¯®¬¥®£® ⨯®¬ 202 |
2743,9 → 2756,9 |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤ ë¥ ¤®«¦ë ¡ëâì § £àã¦¥ë ¯®¤äãªæ¨¥© 0 ¨ |
®¯à¥¤¥«+ ¨å ä®à¬ â ¯®¤äãªæ¨¥© 2. |
®¯à¥¤¥«ñ ¨å ä®à¬ â ¯®¤äãªæ¨¥© 2. |
* ãªæ¨ï ¢®§¢à é ¥â ã¯à ¢«¥¨¥, ª®£¤ ç «®áì ¯à®¨£àë¢ ¨¥ ¤ ëå; |
¯®á«¥ í⮣® ¯à®¨£àë¢ ¨¥ ¨¤+â ¥§ ¢¨á¨¬® ®â ¯à¨«®¦¥¨ï (¨ ¢®®¡é¥ |
¯®á«¥ í⮣® ¯à®¨£àë¢ ¨¥ ¨¤ñâ ¥§ ¢¨á¨¬® ®â ¯à¨«®¦¥¨ï (¨ ¢®®¡é¥ |
¥ âॡã¥â § £à㧪¨ ¯à®æ¥áá®à ). |
* ।¢ à¨â¥«ì® ¤®«¦ë ¡ëâì ®¯à¥¤¥«¥ë ¡ §®¢ë© ¯®àâ SB16 |
(¯®¤äãªæ¨¥© 4 äãªæ¨¨ 21) ¨ ª « DMA |
2783,11 → 2796,11 |
* esi = 㪠§ â¥«ì ¤ ë¥ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* eax = 55 - ®è¨¡ª (ᯨª¥à ®âª«îç+ ¨«¨ § ïâ) |
* eax = 55 - ®è¨¡ª (ᯨª¥à ®âª«îçñ ¨«¨ § ïâ) |
ë¥ - íâ® ¬ áᨢ í«¥¬¥â®¢ ¯¥à¥¬¥®© ¤«¨ë. |
®à¬ â ª ¦¤®£® í«¥¬¥â ®¯à¥¤¥«ï¥âáï ¯¥à¢ë¬ ¡ ©â®¬: |
* 0 = ª®¥æ ¤ ëå |
* 1..0x80 = § ¤ +â ¤«¨â¥«ì®áâì §¢ãç ¨ï ¢ á®âëå ¤®«ïå ᥪã¤ë |
* 1..0x80 = § ¤ ñâ ¤«¨â¥«ì®áâì §¢ãç ¨ï ¢ á®âëå ¤®«ïå ᥪã¤ë |
®âë, ®¯à¥¤¥«ï¥¬®© ¥¯®á।áâ¢¥ë¬ § 票¥¬ ç áâ®âë |
* á«¥¤ãî饥 á«®¢® (2 ¡ ©â ) ᮤ¥à¦¨â ¤¥«¨â¥«ì ç áâ®âë; |
ç áâ®â ®¯à¥¤¥«ï¥âáï ª ª 1193180/divider |
2794,7 → 2807,7 |
* 0x81 = invalid |
* 0x82..0xFF = ®â , ®¯à¥¤¥«ï¥¬ ï ®ªâ ¢®© ¨ ®¬¥à®¬: |
* ¤«¨â¥«ì®áâì ¢ á®âëå ¤®«ïå ᥪã¤ë = (¯¥à¢ë© ¡ ©â)-0x81 |
* ¯à¨áãâáâ¢ã¥â ¥é+ ®¤¨ ¡ ©â; |
* ¯à¨áãâáâ¢ã¥â ¥éñ ®¤¨ ¡ ©â; |
* (¢â®à®© ¡ ©â)=0xFF - ¯ 㧠|
* ¨ ç¥ ® ¨¬¥¥â ¢¨¤ a*0x10+b, £¤¥ b=®¬¥à ®âë ¢ ®ªâ ¢¥ ®â 1 |
¤® 12, a=®¬¥à ®ªâ ¢ë (áç¨â ï á 0) |
2802,12 → 2815,12 |
* ¨é ¨¥ ᯨª¥à®¬ ¬®¦¥â ¡ëâì § ¯à¥é¥®/à §à¥è¥® ¯®¤äãªæ¨¥© 8 |
äãªæ¨¨ 18. |
* ãªæ¨ï ¢®§¢à é ¥â ã¯à ¢«¥¨¥, á®®¡é¨¢ ªã¤ á«¥¤ã¥â ¨ä®à¬ æ¨î |
® § ¯à®á¥. ¬® ¯à®¨£àë¢ ¨¥ ¨¤+â ¥§ ¢¨á¨¬® ®â ¯à®£à ¬¬ë. |
® § ¯à®á¥. ¬® ¯à®¨£àë¢ ¨¥ ¨¤ñâ ¥§ ¢¨á¨¬® ®â ¯à®£à ¬¬ë. |
* ë¥ ¤®«¦ë á®åà ïâìáï ¢ ¯ ¬ï⨠¯® ªà ©¥© ¬¥à¥ |
¤® ª®æ ¯à®¨£àë¢ ¨ï. |
====================================================================== |
============= ãªæ¨ï 56 - § ¯¨á âì ä ©« ¦+á⪨© ¤¨áª. ============ |
============= ãªæ¨ï 56 - § ¯¨á âì ä ©« ¦ñá⪨© ¤¨áª. ============ |
====================================================================== |
à ¬¥âàë: |
* eax = 56 - ®¬¥à äãªæ¨¨ |
2820,11 → 2833,11 |
¬¥ç ¨ï: |
* â äãªæ¨ï ãáâ ५ ; äãªæ¨ï 70 ¯®§¢®«ï¥â ¢ë¯®«ïâì |
⥠¦¥ ¤¥©á⢨ï á à áè¨à¥ë¬¨ ¢®§¬®¦®áâﬨ. |
* ï äãªæ¨ï ¯à¥¤¯®« £ ¥â, çâ® ¢® ¢à¥¬ï ¥+ ¢ë§®¢ ®¤¨¬ |
* ï äãªæ¨ï ¯à¥¤¯®« £ ¥â, çâ® ¢® ¢à¥¬ï ¥ñ ¢ë§®¢ ®¤¨¬ |
¯à¨«®¦¥¨¥¬ ¨ª ª®¥ ¤à㣮¥ ¯à¨«®¦¥¨¥ ¥ à ¡®â ¥â |
á ¦+á⪨¬ ¤¨áª®¬. |
á ¦ñá⪨¬ ¤¨áª®¬. |
* ãâì ª ä ©«ã - ASCIIZ-áâப , ª®â®à ï ¬®¦¥â ¡ëâì ¯ãá⮩ |
(¥á«¨ ä ©« ᮧ¤ +âáï ¢ ª®à¥¢®¬ ª â «®£¥) ¨«¨ ¨¬¥âì ä®à¬ â |
(¥á«¨ ä ©« ᮧ¤ ñâáï ¢ ª®à¥¢®¬ ª â «®£¥) ¨«¨ ¨¬¥âì ä®à¬ â |
/d1/d2/.../dn, £¤¥ ¢á¥ ¨¬¥ ¯ ¯®ª ¤®«¦ë ¨¬¥âì ä®à¬ â 8+3, â.¥. |
8 ᨬ¢®«®¢ ¨¬¥¨ ¨ 3 ᨬ¢®« à áè¨à¥¨ï ¡¥§ à §¤¥«¨â¥«ï, |
¯à¨ ¥®¡å®¤¨¬®á⨠¤®¯®«¥ë¥ ¯à®¡¥« ¬¨; |
2859,7 → 2872,7 |
* /RD/1 = /RAMDISK/1 ¤«ï ¤®áâ㯠ª à ¬¤¨áªã |
* /FD/1 = /FLOPPYDISK/1 ¤«ï ¤®áâ㯠ª ¯¥à¢®¬ã ä«®¯¯¨-¤¨áª®¢®¤ã, |
/FD/2 = /FLOPPYDISK/2 ¤«ï ¢â®à®£® ä«®¯¯¨-¤¨áª®¢®¤ |
* /HD/x = /HARDDISK/x - ãáâ ॢ訩 ¢ ਠ⠤®áâ㯠ª ¦+á⪮¬ã ¤¨áªã |
* /HD/x = /HARDDISK/x - ãáâ ॢ訩 ¢ ਠ⠤®áâ㯠ª ¦ñá⪮¬ã ¤¨áªã |
(¢ í⮬ á«ãç ¥ ¡ § ®¯à¥¤¥«ï¥âáï ¯®¤äãªæ¨¥© 7 äãªæ¨¨ 21), |
x - ®¬¥à à §¤¥« (áç¨â ï á 1) |
* /HD0/x, /HD1/x, /HD2/x, /HD3/x ¤«ï ¤®áâ㯠ᮮ⢥âá⢥® |
2908,7 → 2921,7 |
* +12 = +0xC: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë ¤ ë¥ |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
2923,7 → 2936,7 |
¤®ªã¬¥â 樨 ¯® FAT. |
* §¬¥à ¯ ¯ª¨ ®¯à¥¤¥«ï¥âáï ¯® à §¬¥àã 楯®çª¨ ª« áâ¥à®¢ ¢ FAT. |
* ᫨ ä ©« ª®ç¨«áï à ìè¥, 祬 ¡ë« ¯à®ç¨â ¯®á«¥¤¨© § ¯à®è¥ë© |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥à+â |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥àñâ |
eax=6 (EOF). |
* ãªæ¨ï ¯®§¢®«ï¥â ç¨â âì ª®à¥¢ë¥ ¯ ¯ª¨ /rd/1,/fd/x,/hd[n]/x, ® |
¢ ¯¥à¢ëå ¤¢ãå á«ãç ïå ⥪ãé ï ॠ«¨§ æ¨ï ¥ á«¥¤ã¥â |
2937,7 → 2950,7 |
0x1C00=7168 ¡ ©â; ® ¢®§¢à é ¥âáï ebx=0 |
(§ ¨áª«î票¥¬ á«ãç ï ¯à¥¤ë¤ã饣® ¯ãªâ ); |
* ª ª ¨ áâà ®, ¬®¦® ¯à®ç¨â âì 14-© ¡«®ª (â ¬, ¢®®¡é¥ £®¢®àï, |
¬ãá®à - ¯®¬¨ î, áç+â ¢¥¤+âáï á 0); |
¬ãá®à - ¯®¬¨ î, áçñâ ¢¥¤ñâáï á 0); |
* ¥á«¨ ¡ë« § ¯à®è¥ å®âï ¡ë ®¤¨ ¡«®ª á ®¬¥à®¬, ¥ ¬¥ì訬 14, |
â® ¢®§¢à é ¥âáï eax=6(EOF); ¨ ç¥ eax=0. |
«ï /fd/x: |
2959,7 → 2972,7 |
====================================================================== |
============ ãªæ¨ï 58, ¯®¤äãªæ¨ï 1 - ¯¥à¥§ ¯¨á âì ä ©«. =========== |
====================================================================== |
᫨ ä ©« ¥ áãé¥áâ¢ã¥â, ® ᮧ¤ +âáï. |
᫨ ä ©« ¥ áãé¥áâ¢ã¥â, ® ᮧ¤ ñâáï. |
᫨ ä ©« áãé¥áâ¢ã¥â, ® ¯¥à¥§ ¯¨áë¢ ¥âáï. |
à ¬¥âàë: |
* eax = 58 - ®¬¥à äãªæ¨¨ |
2971,7 → 2984,7 |
* +12 = +0xC: dword: 㪠§ â¥«ì ¤ ë¥ ¤«ï § ¯¨á¨ |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
2992,7 → 3005,7 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
2999,7 → 3012,7 |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* à¨ à ¡®â¥ á ¤¨áª¥â®© ¥ á«¥¤ã¥â 㤠«ïâì ¥¯ãáâãî ¯ ¯ªã. |
®¤ à ¡®âë á ¦+á⪨¬ ¤¨áª®¬ ¥¯ãáâë¥ ¯ ¯ª¨ 㤠«ï¥â ª®à४⮠|
®¤ à ¡®âë á ¦ñá⪨¬ ¤¨áª®¬ ¥¯ãáâë¥ ¯ ¯ª¨ 㤠«ï¥â ª®à४⮠|
(â.¥. ४ãàᨢ® á® ¢á¥¬¨ ä ©« ¬¨ ¨ ¢«®¦¥ë¬¨ ¯ ¯ª ¬¨). |
¬¤¨áª ¯ ¯®ª ¥ ¯®¤¤¥à¦¨¢ ¥â. |
3016,20 → 3029,21 |
* +12 = +0xC: dword: 㪠§ â¥«ì ¤ ë¥ ¤«ï § ¯¨á¨ |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* â äãªæ¨ï ãáâ ५ , ¨á¯®«ì§ã©â¥ ¯®¤äãªæ¨î 3 äãªæ¨¨ 70. |
* ¬¤¨áª ¨ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ îâ íâã äãªæ¨î, ® ⮫쪮 ¤«ï |
¦+áâª¨å ¤¨áª®¢. |
¦ñáâª¨å ¤¨áª®¢. |
* ©« ¤®«¦¥ 㦥 áãé¥á⢮¢ âì (¨ ç¥ ¢®§¢à é ¥âáï 5, not found). |
«ï ᮧ¤ ¨ï ä ©«®¢ ¨á¯®«ì§ã©â¥ ¯®¤äãªæ¨î 1. |
* ᫨ ç «ì ï ¯®§¨æ¨ï ¡®«ìè¥ à §¬¥à ä ©« , ¢®§¢à é ¥âáï |
eax=6(EOF). ᫨ ª®¥ç ï ¯®§¨æ¨ï ¡®«ìè¥ à §¬¥à ä ©« , |
ä ©« à áè¨àï¥âáï. |
* ®¤ ®¡à ¡®âª¨ § ¯¨á¨ ¤ ëå ¤«ï ¦+á⪮£® ¤¨áª ¨â¥à¯à¥â¨àã¥â |
* ®¤ ®¡à ¡®âª¨ § ¯¨á¨ ¤ ëå ¤«ï ¦ñá⪮£® ¤¨áª ¨â¥à¯à¥â¨àã¥â |
ã«¥¢®¥ § 票¥ ¯®«ï +8 ª ª 㪠§ ¨¥ ãá¥ç¥¨ï ä ©« ¤® à §¬¥à , |
㪠§ ®£® ¢ ¯®«¥ +4. ¤ ª® ª®¤ ®¡à ¡®âª¨ 58-© äãªæ¨¨ ¡«®ª¨àã¥â |
íâã ¢®§¬®¦®áâì ¤«ï ¯à¨«®¦¥¨©, áà §ã ¢®§¢à é ï ã¯à ¢«¥¨¥ |
3048,7 → 3062,7 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
3055,7 → 3069,7 |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* ¬¤¨áª ¨ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ îâ íâã äãªæ¨î, |
® ⮫쪮 ¤«ï ¦+áâª¨å ¤¨áª®¢. |
® ⮫쪮 ¤«ï ¦ñáâª¨å ¤¨áª®¢. |
====================================================================== |
== ãªæ¨ï 58, ¯®¤äãªæ¨ï 5 - ¯¥à¥¨¬¥®¢ âì/¯¥à¥¬¥áâ¨âì ä ©«/¯ ¯ªã. == |
3070,11 → 3084,11 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
* +20+n: (áà §ã ¯®á«¥ § ¢¥àè î饣® ã«¥¢®£® ᨬ¢®« ) ®¢®¥ |
ASCIIZ-¨¬ï, ¤®«¦® ç¨ âìáï á /hd/1, çâ® ¨â¥à¯à¥â¨àã¥âáï ª ª |
¦+á⪨© ¤¨áª, 㪠§ ë© ¢ ¯¥à¢®¬ ¨¬¥¨ |
¦ñá⪨© ¤¨áª, 㪠§ ë© ¢ ¯¥à¢®¬ ¨¬¥¨ |
(¯¥à¥¬¥é¥¨¥ á ®¤®£® ¤¨áª ¤à㣮© ¥ ¯®¤¤¥à¦¨¢ ¥âáï) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
3081,10 → 3095,10 |
* ebx à §àãè ¥âáï |
¬¥ç ¨ï: |
* ¬¤¨áª ¨ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ îâ íâã äãªæ¨î, |
® ⮫쪮 ¤«ï ¦+áâª¨å ¤¨áª®¢. |
® ⮫쪮 ¤«ï ¦ñáâª¨å ¤¨áª®¢. |
* ᫨ ®¢®¥ ASCIIZ-¨¬ï á¨«ì® ¥¯à ¢¨«ì®¥, â.¥. ¥ ç¨ ¥âáï á |
/hd/1, /hd/first, /harddisk/1, /harddisk/first ¨«¨ ¯®á«¥ í⮣® |
ç « ¨¤+⠯஡¥« ¨«¨ ᨬ¢®« á ª®¤®¬ 0, â® äãªæ¨ï ¢®§¢à é ¥â, |
ç « ¨¤ñ⠯஡¥« ¨«¨ ᨬ¢®« á ª®¤®¬ 0, â® äãªæ¨ï ¢®§¢à é ¥â, |
ª ª ¨ áâà ®, ª®¤ ®è¨¡ª¨ 4. â® ¥¤¨á⢥ ï äãªæ¨ï, ª®â®à ï |
¢®®¡é¥ ¢®§¢à é ¥â íâ®â ª®¤. |
3116,7 → 3130,7 |
(§ ¨áª«î票¥¬ ¯à¥¤ë¤ã饣® á«ãç ï): |
* eax = 5 |
* ebx ¥ ¬¥ï¥âáï |
* ¥á«¨ LBA-¤®áâ㯠§ ¯à¥é+ ¯®¤äãªæ¨¥© 11 äãªæ¨¨ 21: |
* ¥á«¨ LBA-¤®áâ㯠§ ¯à¥éñ ¯®¤äãªæ¨¥© 11 äãªæ¨¨ 21: |
* eax = 2 |
* ebx à §àãè ¥âáï |
* ¤«ï à ¬¤¨áª : ¯®¯ë⪠çâ¥¨ï ¡«®ª § ¯à¥¤¥« ¬¨ à ¬¤¨áª |
3129,17 → 3143,17 |
* §¬¥à ¡«®ª - 512 ¡ ©â; ç¨â ¥âáï ®¤¨ ¡«®ª. |
* ¥ á«¥¤ã¥â ¯®« £ âìáï ¢®§¢à é ¥¬®¥ § 票¥, |
®® ¬®¦¥â ¨§¬¥¨âìáï ¢ á«¥¤ãîé¨å ¢¥àá¨ïå. |
* ॡã¥âáï, çâ®¡ë ¡ë« à §à¥è+ LBA-¤®áâ㯠ª ãáâனá⢠¬ |
* ॡã¥âáï, çâ®¡ë ¡ë« à §à¥èñ LBA-¤®áâ㯠ª ãáâனá⢠¬ |
¯®¤äãªæ¨¥© 11 äãªæ¨¨ 21. § âì íâ® ¬®¦® ¢ë§®¢®¬ |
¯®¤äãªæ¨¥© 11 äãªæ¨¨ 26. |
* LBA-ç⥨¥ ¤¨áª¥âë ¥ ¯®¤¤¥à¦¨¢ ¥âáï. |
* ãªæ¨ï áç¨âë¢ ¥â ¤ ë¥ ä¨§¨ç¥áª®£® ¦+á⪮£® ¤¨áª ; |
* ãªæ¨ï áç¨âë¢ ¥â ¤ ë¥ ä¨§¨ç¥áª®£® ¦ñá⪮£® ¤¨áª ; |
¥á«¨ ¯® ª ª¨¬-â® ¯à¨ç¨ ¬ ã¦ë ¤ ë¥ ª®ªà¥â®£® à §¤¥« , |
¯à¨¤+âáï ®¯à¥¤¥«ïâì ç «ìë© á¥ªâ®à í⮣® à §¤¥« |
¯à¨¤ñâáï ®¯à¥¤¥«ïâì ç «ìë© á¥ªâ®à í⮣® à §¤¥« |
(«¨¡® ¯àï¬ãî ç¥à¥§ MBR, «¨¡® ¨§ à áè¨à¥®© áâàãªâãàë, |
¢®§¢à é ¥¬®© ⮩ ¦¥ ¯®¤äãªæ¨¥© 11 äãªæ¨¨ 18). |
* ãªæ¨ï ¥ ¯à®¢¥àï¥â ª®¤ ®è¨¡ª¨ ¦+á⪮£® ¤¨áª , â ª çâ® § ¯à®á |
¥áãé¥áâ¢ãî饣® ᥪâ®à ¢á+ à ¢® çâ®-â® ¯à®ç¨â ¥â |
* ãªæ¨ï ¥ ¯à®¢¥àï¥â ª®¤ ®è¨¡ª¨ ¦ñá⪮£® ¤¨áª , â ª çâ® § ¯à®á |
¥áãé¥áâ¢ãî饣® ᥪâ®à ¢áñ à ¢® çâ®-â® ¯à®ç¨â ¥â |
(¢¥à®ï⥥ ¢á¥£®, 㫨, ® íâ® ®¯à¥¤¥«ï¥âáï ãáâனá⢮¬) ¨ |
íâ® ¡ã¤¥â áç¨â âìáï ãᯥ宬 (eax=0). |
3166,7 → 3180,7 |
* ebx = ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ = 2847 |
* ecx = ç¨á«® ᢮¡®¤ëå ª« áâ¥à®¢ |
* dword [fileinfo] = à §¬¥à ª« áâ¥à = 512 |
* ¤«ï ¦+á⪮£® ¤¨áª : ¡ § ¨ à §¤¥« ®¯à¥¤¥«ïîâáï ¯®¤äãªæ¨ï¬¨ 7 ¨ 8 |
* ¤«ï ¦ñá⪮£® ¤¨áª : ¡ § ¨ à §¤¥« ®¯à¥¤¥«ïîâáï ¯®¤äãªæ¨ï¬¨ 7 ¨ 8 |
äãªæ¨¨ 21: |
* eax = 0 (ãᯥå) |
* ebx = ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ |
3179,10 → 3193,10 |
pushad-áâàãªâãàë, ¯¥à¥¤ î饩áï ª ª à£ã¬¥â á¨á⥬®© äãªæ¨¨). |
¥¯¥àì íâ® ¨á¯à ¢«¥®, â ª çâ®, ¢®§¬®¦®, ¨¬¥¥â á¬ëá« ¢®§¢à é âì |
à §¬¥à ª« áâ¥à ¢ edx, ¯®ª íâã äãªæ¨î ¥ ç «¨ ¨á¯®«ì§®¢ âì. |
* ®®¡é¥-â® ¥é+ áãé¥áâ¢ã¥â ¯®¤äãªæ¨ï 11 äãªæ¨¨ 18, ¢®§¢à é îé ï |
* ®®¡é¥-â® ¥éñ áãé¥áâ¢ã¥â ¯®¤äãªæ¨ï 11 äãªæ¨¨ 18, ¢®§¢à é îé ï |
¨ä®à¬ æ¨î ® ä ©«®¢®© á¨á⥬¥. ® à áè¨à¥®© â ¡«¨æ¥ ¤¨áª®¢®© |
¯®¤á¨áâ¥¬ë ¬®¦® ®¯à¥¤¥«¨âì à §¬¥à ª« áâ¥à (â ¬ ® åà ¨âáï |
¢ ᥪâ®à å) ¨ ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ ¤«ï ¦+áâª¨å ¤¨áª®¢. |
¢ ᥪâ®à å) ¨ ®¡é¥¥ ç¨á«® ª« áâ¥à®¢ ¤«ï ¦ñáâª¨å ¤¨áª®¢. |
====================================================================== |
========== ãªæ¨ï 58, ¯®¤äãªæ¨ï 16 - § ¯ãáâ¨âì ¯à®£à ¬¬ã. ========== |
3199,7 → 3213,7 |
* +12 = +0xC: dword: ¨£®à¨àã¥âáï |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë |
(4096 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax > 0 - ¯à®£à ¬¬ § £à㦥 , eax ᮤ¥à¦¨â PID |
3211,7 → 3225,7 |
(ASCIIZ-áâப ); ãç¨âë¢ îâáï «¨¡® ¢á¥ ᨬ¢®«ë ¤® § ¢¥àè î饣® ã«ï |
¢ª«îç¨â¥«ì®, «¨¡® ¯¥à¢ë¥ 256 ᨬ¢®«®¢, ¢ § ¢¨á¨¬®á⨠®â ⮣®, |
çâ® ¬¥ìè¥. |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ +âáï |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ ñâáï |
¢ § ¬®à®¦¥®¬ á®áâ®ï¨¨; ¤«ï § ¯ã᪠¨á¯®«ì§ã©â¥ |
¯®¤äãªæ¨î 5 äãªæ¨¨ 69. |
3249,7 → 3263,7 |
¨§ ï¤à ã¡à âì ᮢᥬ, ¢¬¥áâ¥ á ¯à¨«®¦¥¨¥¬ systrace. |
* ä®à¬ æ¨ï ® á¨á⥬ëå ¢ë§®¢ å á®åà ï¥âáï ¢ |
á¨á⥬®¬ ª®«ì楢®¬ ¡ãä¥à¥ 0x10 ¢å®¤®¢. |
â äãªæ¨ï ¯à®áâ® ª®¯¨àã¥â 㪠§ ë© ®¡ê+¬ ¤ ëå |
â äãªæ¨ï ¯à®áâ® ª®¯¨àã¥â 㪠§ ë© ®¡êñ¬ ¤ ëå |
¨§ 㯮¬ïã⮣® ¡ãä¥à ¯® 㪠§ ®¬ã ¤à¥áã. |
* ª®© ¨§ ¢å®¤®¢ ¢ ¡ãä¥à¥ ᮮ⢥âáâ¢ã¥â ¯®á«¥¤¥¬ã ¢ë§®¢ã, |
¬®¦® ®¯à¥¤¥«¨âì ¯® § 票î eax, ¨¬¥®, |
3272,7 → 3286,7 |
¨â¥à¯à¥â¨à®¢ âì ª®ªà¥â®¥ á®®¡é¥¨¥. |
-------- ®¤äãªæ¨ï 1 - ãáâ ®¢¨âì ®¡« áâì ¤«ï ¯®«ã票ï IPC --------- |
ë§ë¢ ¥âáï ¯à®æ¥áᮬ-¯à¨+¬¨ª®¬. |
ë§ë¢ ¥âáï ¯à®æ¥áᮬ-¯à¨ñ¬¨ª®¬. |
à ¬¥âàë: |
* eax = 60 - ®¬¥à äãªæ¨¨ |
* ebx = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
3299,21 → 3313,21 |
à ¬¥âàë: |
* eax = 60 - ®¬¥à äãªæ¨¨ |
* ebx = 2 - ®¬¥à ¯®¤äãªæ¨¨ |
* ecx = PID ¯à¨+¬¨ª |
* ecx = PID ¯à¨ñ¬¨ª |
* edx = 㪠§ â¥«ì ¤ ë¥ á®®¡é¥¨ï |
* esi = ¤«¨ á®®¡é¥¨ï (¢ ¡ ©â å) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãá¯¥è® |
* eax = 1 - ¯à¨+¬¨ª ¥ ®¯à¥¤¥«¨« ¡ãä¥à ¤«ï IPC-á®®¡é¥¨© |
(¬®¦¥â ¡ëâì, ¥é+ ¥ ãᯥ«, ¬®¦¥â ¡ëâì, íâ® ¥ â®â ¯®â®ª, |
* eax = 1 - ¯à¨ñ¬¨ª ¥ ®¯à¥¤¥«¨« ¡ãä¥à ¤«ï IPC-á®®¡é¥¨© |
(¬®¦¥â ¡ëâì, ¥éñ ¥ ãᯥ«, ¬®¦¥â ¡ëâì, íâ® ¥ â®â ¯®â®ª, |
ª®â®àë© ã¦¥) |
* eax = 2 - ¯à¨+¬¨ª § ¡«®ª¨à®¢ « IPC-¡ãä¥à; |
* eax = 2 - ¯à¨ñ¬¨ª § ¡«®ª¨à®¢ « IPC-¡ãä¥à; |
¯®¯à®¡ã©â¥ ¥¬®£® ¯®¤®¦¤ âì |
* eax = 3 - ¯¥à¥¯®«¥¨¥ IPC-¡ãä¥à ¯à¨+¬¨ª |
* eax = 3 - ¯¥à¥¯®«¥¨¥ IPC-¡ãä¥à ¯à¨ñ¬¨ª |
* eax = 4 - ¯à®æ¥áá /¯®â®ª á â ª¨¬ PID ¥ áãé¥áâ¢ã¥â |
¬¥ç ¨ï: |
* ¨á⥬ áà §ã ¯®á«¥ § ¯¨á¨ IPC-á®®¡é¥¨ï ¢ ¡ãä¥à ¯®áë« ¥â |
¯®â®ªã-¯à¨+¬¨ªã ᮡë⨥ á ª®¤®¬ 7 (á¬. ª®¤ë ᮡë⨩). |
¯®â®ªã-¯à¨ñ¬¨ªã ᮡë⨥ á ª®¤®¬ 7 (á¬. ª®¤ë ᮡë⨩). |
====================================================================== |
=== ãªæ¨ï 61 - ¯®«ãç¨âì ¯ à ¬¥âàë ¤«ï ¯àאַ£® ¤®áâ㯠ª £à 䨪¥. === |
3342,7 → 3356,7 |
ᮡá⢥® LFB, â ª çâ® ç⥨¥/§ ¯¨áì ¯® gs ¯à¨¢®¤ïâ |
¥¯®á।á⢥® ª ¨§¬¥¥¨î ᮤ¥à¦¨¬®£® íªà . à¨ à ¡®â¥ ¢ |
¢¨¤¥®à¥¦¨¬ å ¡¥§ LFB gs 㪠§ë¢ ¥â ¥ª®â®àãî ®¡« áâì ¤ ëå |
ï¤à , ¯à¨ç+¬ ¢á¥ äãªæ¨¨ ¢ë¢®¤ íªà ¤®¡à®á®¢¥áâ® ¢ë¯®«ïîâ |
ï¤à , ¯à¨çñ¬ ¢á¥ äãªæ¨¨ ¢ë¢®¤ íªà ¤®¡à®á®¢¥áâ® ¢ë¯®«ïîâ |
¤¢®©ãî à ¡®âã ¯® § ¯¨á¨ ¥¯®á।á⢥® íªà ¨ ¯® § ¯¨á¨ |
¢ íâ®â ¡ãä¥à. १ã«ìâ ⥠¯à¨ ç⥨¨ ᮤ¥à¦¨¬®£® í⮣® ¡ãä¥à |
१ã«ìâ âë ᮮ⢥âáâ¢ãîâ ᮤ¥à¦¨¬®¬ã íªà |
3359,7 → 3373,7 |
®§¢à é ¥¬®¥ § 票¥: |
* eax = [à §à¥è¥¨¥ ¯® ®á¨ x]*65536 + [à §à¥è¥¨¥ ¯® ®á¨ y] |
¬¥ç ¨ï: |
* ®¦® ¨á¯®«ì§®¢ âì äãªæ¨î 14 á ãç+⮬ ⮣®, çâ® ® ¢®§¢à é ¥â |
* ®¦® ¨á¯®«ì§®¢ âì äãªæ¨î 14 á ãçñ⮬ ⮣®, çâ® ® ¢®§¢à é ¥â |
à §¬¥àë 1 ¬¥ìè¥. â® ¯®«®áâìî íª¢¨¢ «¥âë© á¯®á®¡. |
------------------------ ¨á«® ¡¨â ¯¨ªá¥«ì ------------------------ |
3374,7 → 3388,7 |
* eax = 61 - ®¬¥à äãªæ¨¨ |
* ebx = 3 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = ç¨á«® ¡ ©â, ª®â®à®¥ § ¨¬ ¥â ®¤ áâப à §¢+à⪨ |
* eax = ç¨á«® ¡ ©â, ª®â®à®¥ § ¨¬ ¥â ®¤ áâப à §¢ñà⪨ |
(£®à¨§®â «ì ï «¨¨ï íªà ¥) |
====================================================================== |
3384,11 → 3398,11 |
* eax = 62 - ®¬¥à äãªæ¨¨ |
* bl = 0 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥é+; ¨ ç¥ |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥éñ; ¨ ç¥ |
* ah.al = ¢¥àá¨ï PCI-¨â¥à䥩á (ah=¢¥àá¨ï, al=¯®¤¢¥àá¨ï) |
* áâ à襥 á«®¢® eax ®¡ã«¥® |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è+ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ᫨ PCI BIOS ¥ ¯®¤¤¥à¦¨¢ ¥âáï, â® § 票¥ ax ¥®¯à¥¤¥«¥®. |
3399,10 → 3413,10 |
* eax = 62 - ®¬¥à äãªæ¨¨ |
* bl = 1 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥é+; ¨ ç¥ |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥éñ; ¨ ç¥ |
* al = ®¬¥à ¯®á«¥¤¥© PCI-è¨ë; ®á⠢訥áï ¡ ©âë eax à §àãè îâáï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è+ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ᫨ PCI BIOS ¥ ¯®¤¤¥à¦¨¢ ¥âáï, â® § 票¥ al ¥®¯à¥¤¥«¥®. |
3414,10 → 3428,10 |
* eax = 62 - ®¬¥à äãªæ¨¨ |
* bl = 2 - ®¬¥à ¯®¤äãªæ¨¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥é+; ¨ ç¥ |
* eax = -1 - ¤®áâ㯠ª PCI § ¯à¥éñ; ¨ ç¥ |
* al = ¬¥å ¨§¬ (1 ¨«¨ 2); ¯à®ç¨¥ ¡ ©âë eax à §àãè îâáï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è+ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ¥å ¨§¬ ®¡à é¥¨ï ¢ë¡¨à ¥âáï ¢ ᮮ⢥âá⢨¨ |
á å à ªâ¥à¨á⨪ ¬¨ ®¡®à㤮¢ ¨ï. |
3435,15 → 3449,15 |
* bh = ®¬¥à PCI-è¨ë |
* ch = dddddfff, £¤¥ ddddd = ®¬¥à ãáâனá⢠訥, |
fff = ®¬¥à äãªæ¨¨ ãáâனá⢠|
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì ç+âë¬ ¤«ï bl=5, |
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì çñâë¬ ¤«ï bl=5, |
¤¥«¨âìáï 4 ¤«ï bl=6) |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ®è¨¡ª (§ ¯à¥é+ ¤®áâ㯠ª PCI ¨«¨ |
* eax = -1 - ®è¨¡ª (§ ¯à¥éñ ¤®áâ㯠ª PCI ¨«¨ |
¥¯®¤¤¥à¦¨¢ ¥¬ë¥ ¯ à ¬¥âàë); ¨ ç¥ |
* al/ax/eax (¢ § ¢¨á¨¬®á⨠®â § ¯à®è¥®£® à §¬¥à ) ᮤ¥à¦¨â ¤ ë¥; |
®áâ ¢è ïáï ç áâì ॣ¨áâà eax à §àãè ¥âáï |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è+ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ¥å ¨§¬ ¤®áâ㯠2 ¯®¤¤¥à¦¨¢ ¥â ⮫쪮 16 ãáâனá⢠訥 ¨ |
¨£®à¨àã¥â ®¬¥à äãªæ¨¨. ®«ãç¨âì ¬¥å ¨§¬ ¤®áâ㯠¬®¦® ¢ë§®¢®¬ |
3466,16 → 3480,16 |
* bh = ®¬¥à PCI-è¨ë |
* ch = dddddfff, £¤¥ ddddd = ®¬¥à ãáâனá⢠訥, |
fff = ®¬¥à äãªæ¨¨ ãáâனá⢠|
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì ç+âë¬ ¤«ï bl=9, |
* cl = ®¬¥à ॣ¨áâà (¤®«¦¥ ¡ëâì çñâë¬ ¤«ï bl=9, |
¤¥«¨âìáï 4 ¤«ï bl=10) |
* dl/dx/edx (¢ § ¢¨á¨¬®á⨠®â § ¯à®è¥®£® à §¬¥à ) ᮤ¥à¦¨â |
¤ ë¥ ¤«ï § ¯¨á¨ |
®§¢à é ¥¬®¥ § 票¥: |
* eax = -1 - ®è¨¡ª (§ ¯à¥é+ ¤®áâ㯠ª PCI ¨«¨ |
* eax = -1 - ®è¨¡ª (§ ¯à¥éñ ¤®áâ㯠ª PCI ¨«¨ |
¥¯®¤¤¥à¦¨¢ ¥¬ë¥ ¯ à ¬¥âàë) |
* eax = 0 - ãá¯¥è® |
¬¥ç ¨ï: |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥è+ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
* ।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì à §à¥èñ ¨§ª®ã஢¥¢ë© ¤®áâ㯠ª PCI |
¤«ï ¯à¨«®¦¥¨© ¯®¤äãªæ¨¥© 12 äãªæ¨¨ 21. |
* ¥å ¨§¬ ¤®áâ㯠2 ¯®¤¤¥à¦¨¢ ¥â ⮫쪮 16 ãáâனá⢠訥 ¨ |
¨£®à¨àã¥â ®¬¥à äãªæ¨¨. ®«ãç¨âì ¬¥å ¨§¬ ¤®áâ㯠¬®¦® ¢ë§®¢®¬ |
3493,16 → 3507,16 |
¤ ë¥ ¨ ¨§ ª®â®à®£® ¤àã£ ï ¯à®£à ¬¬ ¬®¦¥â í⨠¤ ë¥ ¯à®ç¨â âì. |
áâì ᮣ« 襨¥, ¢ ᮮ⢥âá⢨¨ á ª®â®àë¬ § ¯¨áë¢ ¥¬ë¥ ¤ ë¥ - |
⥪áâ®¢ë¥ áâப¨, ¨â¥à¯à¥â¨àã¥¬ë¥ ª ª ®â« ¤®çë¥ á®®¡é¥¨ï ® 室¥ |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë. ¤à® ¢ ®¯à¥¤¥«+ëå á¨âã æ¨ïå â ª¦¥ § ¯¨áë¢ ¥â |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë. ¤à® ¢ ®¯à¥¤¥«ñëå á¨âã æ¨ïå â ª¦¥ § ¯¨áë¢ ¥â |
¤®áªã ®â« ¤ª¨ ᢥ¤¥¨ï ® ¢ë¯®«¥¨¨ ¥ª®â®àëå äãªæ¨©; |
¯® ᮣ« 襨î á®®¡é¥¨ï ï¤à ç¨ îâáï á ¯à¥ä¨ªá "K : ". |
«ï ¯à®á¬®âà ¤®áª¨ ®â« ¤ª¨ ᮧ¤ ® ¯à¨«®¦¥¨¥ board, |
ª®â®à®¥ áç¨âë¢ ¥â ¤ ë¥ ¨§ ¡ãä¥à ¨ ®â®¡à ¦ ¥â ¨å ¢ ᢮+¬ ®ª¥. board |
ª®â®à®¥ áç¨âë¢ ¥â ¤ ë¥ ¨§ ¡ãä¥à ¨ ®â®¡à ¦ ¥â ¨å ¢ ᢮ñ¬ ®ª¥. board |
¯®¨¬ ¥â ¯®á«¥¤®¢ ⥫ì®áâì ª®¤®¢ 13,10 ª ª ¯¥à¥å®¤ ®¢ãî áâபã. |
¨¬¢®« á ã«¥¢ë¬ ª®¤®¬ ¢ ª®æ¥ áâப¨ ¥ ®¡ï§ ⥫¥, ® ¨ ¥ ¬¥è ¥â. |
á¢ï§¨ á ¯®ï¢«¥¨¥¬ ®â« ¤ç¨ª 楮áâì ¤®áª¨ ®â« ¤ª¨ ¥áª®«ìª® |
ᨧ¨« áì, ¯®áª®«ìªã ®â« ¤ç¨ª ¯®§¢®«ï¥â ¯®«®áâìî ª®â஫¨à®¢ âì 室 |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë, ¯à¨ç+¬ ¤«ï í⮣® ¥ âॡã¥âáï ¨ª ª¨å ãᨫ¨© |
¢ë¯®«¥¨ï ¯à®£à ¬¬ë, ¯à¨çñ¬ ¤«ï í⮣® ¥ âॡã¥âáï ¨ª ª¨å ãᨫ¨© |
á® áâ®à®ë á ¬®© ¯à®£à ¬¬ë. ¥¬ ¥ ¬¥¥¥ ¢® ¬®£¨å á«ãç ïå |
¤®áª ®â« ¤ª¨ ¯à®¤®«¦ ¥â ®áâ ¢ âìáï ¯®«¥§®©. |
3549,7 → 3563,7 |
================= ãªæ¨ï 66 - à ¡®â á ª« ¢¨ âãன. ================= |
====================================================================== |
¥¦¨¬ ¢¢®¤ ¢«¨ï¥â १ã«ìâ âë çâ¥¨ï ª« ¢¨è äãªæ¨¥© 2. |
ਠ§ £à㧪¥ ¯à®£à ¬¬ë ¤«ï ¥+ ãáâ ¢«¨¢ ¥âáï ASCII-०¨¬ ¢¢®¤ . |
ਠ§ £à㧪¥ ¯à®£à ¬¬ë ¤«ï ¥ñ ãáâ ¢«¨¢ ¥âáï ASCII-०¨¬ ¢¢®¤ . |
-------- ®¤äãªæ¨ï 1 - ãáâ ®¢¨âì ०¨¬ ¢¢®¤ á ª« ¢¨ âãàë. --------- |
à ¬¥âàë: |
3580,14 → 3594,14 |
* ¡¨â 3 (¬ ᪠8): ¯à ¢ë© Ctrl ¦ â |
* ¡¨â 4 (¬ ᪠0x10): «¥¢ë© Alt ¦ â |
* ¡¨â 5 (¬ ᪠0x20): ¯à ¢ë© Alt ¦ â |
* ¡¨â 6 (¬ ᪠0x40): CapsLock ¢ª«îç+ |
* ¡¨â 7 (¬ ᪠0x80): NumLock ¢ª«îç+ |
* ¡¨â 8 (¬ ᪠0x100): ScrollLock ¢ª«îç+ |
* ¡¨â 6 (¬ ᪠0x40): CapsLock ¢ª«îçñ |
* ¡¨â 7 (¬ ᪠0x80): NumLock ¢ª«îçñ |
* ¡¨â 8 (¬ ᪠0x100): ScrollLock ¢ª«îçñ |
* ¯à®ç¨¥ ¡¨âë á¡à®è¥ë |
----- ®¤äãªæ¨ï 4 - ãáâ ®¢¨âì ®¡é¥á¨á⥬ãî "£®àïçãî ª« ¢¨èã". ----- |
¦ ⨨ "£®àï祩 ª« ¢¨è¨" ¨§¢¥é îâáï ⮫쪮 ¯à¨«®¦¥¨ï, |
ãáâ ®¢¨¢è¨¥ ¥+; ªâ¨¢®¥ ¯à¨«®¦¥¨¥ (ª ª®â®à®¬ã ¯®áâ㯠¥â |
ãáâ ®¢¨¢è¨¥ ¥ñ; ªâ¨¢®¥ ¯à¨«®¦¥¨¥ (ª ª®â®à®¬ã ¯®áâ㯠¥â |
¢¥áì ®à¬ «ìë© ¢¢®¤) â ª¨å ª« ¢¨è ¥ ¯®«ãç ¥â. |
§¢¥é¥¨¥ § ª«îç ¥âáï ¢ ¯®á뫪¥ ᮡëâ¨ï á ª®¤®¬ 2. |
à®ç¨â âì "£®àïçãî ª« ¢¨èã" ¬®¦® â ª ¦¥, ª ª ¨ ®¡ëçãî, - |
3595,10 → 3609,10 |
à ¬¥âàë: |
* eax = 66 - ®¬¥à äãªæ¨¨ |
* ebx = 4 - ®¬¥à ¯®¤äãªæ¨¨ |
* cl § ¤ +â ᪠ª®¤ ª« ¢¨è¨; |
* cl § ¤ ñâ ᪠ª®¤ ª« ¢¨è¨; |
¨á¯®«ì§ã©â¥ cl=0 ¤«ï § ¤ ¨ï ª®¬¡¨ 権 ⨯ Ctrl+Shift |
* edx = 0xXYZ § ¤ +â ¢®§¬®¦ë¥ á®áâ®ï¨ï ã¯à ¢«ïîé¨å ª« ¢¨è: |
* Z (¬« ¤è¨¥ 4 ¡¨â ) § ¤ +â á®áâ®ï¨¥ ª« ¢¨è LShift ¨ RShift: |
* edx = 0xXYZ § ¤ ñâ ¢®§¬®¦ë¥ á®áâ®ï¨ï ã¯à ¢«ïîé¨å ª« ¢¨è: |
* Z (¬« ¤è¨¥ 4 ¡¨â ) § ¤ ñâ á®áâ®ï¨¥ ª« ¢¨è LShift ¨ RShift: |
* 0 = ¨ ®¤ ¨§ ª« ¢¨è ¥ ¤®«¦ ¡ëâì ¦ â ; |
* 1 = ஢® ®¤ ¨§ ª« ¢¨è ¤®«¦ ¡ëâì ¦ â ; |
* 2 = ®¡¥ ª« ¢¨è¨ ¤®«¦ë ¡ëâì ¦ âë; |
3646,7 → 3660,7 |
* 票¥ -1 ¤«ï ¯ à ¬¥âà ®§ ç ¥â "¥ ¨§¬¥ïâì"; ¯à¨¬¥à, ¤«ï |
¯¥à¥¬¥é¥¨ï ®ª ¡¥§ ¨§¬¥¥¨ï à §¬¥à®¢ ¬®¦® 㪠§ âì edx=esi=-1. |
* ।¢ à¨â¥«ì® ®ª® ¤®«¦® ¡ëâì ®¯à¥¤¥«¥® äãªæ¨¥© 0. |
¦¥ § ¤ +â ç «ìë¥ ª®®à¤¨ âë ¨ à §¬¥àë ®ª . |
¦¥ § ¤ ñâ ç «ìë¥ ª®®à¤¨ âë ¨ à §¬¥àë ®ª . |
* §¬¥àë ®ª ¯®¨¬ îâáï ¢ á¬ëá«¥ äãªæ¨¨ 0, â.¥. |
®¤¨ ¯¨ªá¥«ì ¬¥ìè¥, 祬 ॠ«ìë¥ à §¬¥àë. |
* 맮¢ äãªæ¨¨ ¤«ï ¬ ªá¨¬¨§¨à®¢ ëå ®ª® ¯à®áâ® ¨£®à¨àã¥âáï. |
3656,7 → 3670,7 |
* ãªæ¨ï ¯®áë« ¥â ®ªã ᮡë⨥ ¯¥à¥à¨á®¢ª¨ (á ª®¤®¬ 1). |
====================================================================== |
=== ãªæ¨ï 68, ¯®¤äãªæ¨ï 0 - ¯®«ãç¨âì áç+â稪 ¯¥à¥ª«î票© § ¤ ç. == |
=== ãªæ¨ï 68, ¯®¤äãªæ¨ï 0 - ¯®«ãç¨âì áçñâ稪 ¯¥à¥ª«î票© § ¤ ç. == |
====================================================================== |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
3672,7 → 3686,7 |
ãªæ¨ï § ¢¥àè ¥â ⥪ã騩 ª¢ ⠢६¥¨, ¢ë¤¥«¥ë© ¯®â®ªã, |
¨ ¯¥à¥ª«îç ¥âáï á«¥¤ãî騩. |
( ª®© ¯®â®ª ª ª®£® ¯à®æ¥áá ¡ã¤¥â á«¥¤ãî騬, ¯à¥¤áª § âì ¥«ì§ï). |
®§¤¥¥, ª®£¤ ¤® ⥪ã饣® ¯®â®ª ¤®©¤+â ®ç¥à¥¤ì, |
®§¤¥¥, ª®£¤ ¤® ⥪ã饣® ¯®â®ª ¤®©¤ñâ ®ç¥à¥¤ì, |
¢ë¯®«¥¨¥ ¢®§®¡®¢¨âáï. |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
3689,7 → 3703,7 |
* ecx = âॡ㥬®¥ ¤¥©á⢨¥: |
* ecx = 0 - à §à¥è¨âì ¢ë¯®«¥¨¥ ¨áâàãªæ¨¨ rdpmc |
(ReaD Performance-Monitoring Counters) |
* ecx = 1 - 㧠âì, ¢ª«îç+/¢ëª«îç¥ ªíè |
* ecx = 1 - 㧠âì, ¢ª«îçñ/¢ëª«îç¥ ªíè |
* ecx = 2 - ¢ª«îç¨âì ªíè |
* ecx = 3 - ¢ëª«îç¨âì ªíè |
®§¢à é ¥¬®¥ § 票¥: |
3697,7 → 3711,7 |
* eax = § 票¥ cr4 |
* ¤«ï ecx=1: |
* eax = (cr0 and 0x60000000): |
* eax = 0 - ªíè ¢ª«îç+ |
* eax = 0 - ªíè ¢ª«îçñ |
* eax <> 0 - ªíè ¢ëª«îç¥ |
* ¤«ï ecx=2 ¨ ecx=3: |
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï |
3708,7 → 3722,7 |
MSR = Model Specific Register; ¯®«ë© ᯨ᮪ MSR-ॣ¨áâ஢ ¯à®æ¥áá®à |
ᮤ¥à¦¨âáï ¢ ¤®ªã¬¥â 樨 ¯® ¯à®æ¥áá®àã ( ¯à¨¬¥à, IA-32 Intel |
Architecture Software Developer's Manual, Volume 3, Appendix B); |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮+ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮ñ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
* ebx = 3 - ®¬¥à ¯®¤äãªæ¨¨ |
3718,10 → 3732,10 |
* ebx:eax = áâ à訩:¬« ¤è¨© dword १ã«ìâ â |
¬¥ç ¨ï: |
* ª § ¨¥ ¢ ecx ¥áãé¥áâ¢ãî饣® ¨«¨ ¥à¥ «¨§®¢ ®£® ¤«ï ¤ ®£® |
¯à®æ¥áá®à MSR ¯®¢«¥ç+⠨᪫î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ì+â ¯®â®ª. |
¯à®æ¥áá®à MSR ¯®¢«¥çñ⠨᪫î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ìñâ ¯®â®ª. |
* ।¢ à¨â¥«ì® á«¥¤ã¥â ®¯à¥¤¥«¨âì, ¯®¤¤¥à¦¨¢ îâáï «¨ MSR ¢ 楫®¬, |
ª®¬ ¤®© cpuid. ç¥ ¢®§¨ª¥â 㦥 ¤à㣮¥ ¨áª«î票¥ ¢ ï¤à¥, |
ª®â®à®¥ ¢á+ à ¢® ¯à¨¡ì+â ¯®â®ª. |
ª®â®à®¥ ¢áñ à ¢® ¯à¨¡ìñâ ¯®â®ª. |
====================================================================== |
========= ãªæ¨ï 68, ¯®¤äãªæ¨ï 4 - § ¯¨á âì ¢ MSR-ॣ¨áâà. ========= |
3729,7 → 3743,7 |
MSR = Model Specific Register; ¯®«ë© ᯨ᮪ MSR-ॣ¨áâ஢ ¯à®æ¥áá®à |
ᮤ¥à¦¨âáï ¢ ¤®ªã¬¥â 樨 ¯® ¯à®æ¥áá®àã ( ¯à¨¬¥à, IA-32 Intel |
Architecture Software Developer's Manual, Volume 3, Appendix B); |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮+ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
ª ¦¤®¥ ᥬ¥©á⢮ ¯à®æ¥áá®à®¢ ¨¬¥¥â ᢮ñ ¯®¤¬®¦¥á⢮ MSR-ॣ¨áâ஢. |
à ¬¥âàë: |
* eax = 68 - ®¬¥à äãªæ¨¨ |
* ebx = 4 - ®¬¥à ¯®¤äãªæ¨¨ |
3740,10 → 3754,10 |
* ebx:eax = ª®¯¨ï esi:edi |
¬¥ç ¨ï: |
* ª § ¨¥ ¢ ecx ¥áãé¥áâ¢ãî饣® ¨«¨ ¥à¥ «¨§®¢ ®£® ¤«ï ¤ ®£® |
¯à®æ¥áá®à MSR ¯®¢«¥ç+⠨᪫î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ì+â ¯®â®ª. |
¯à®æ¥áá®à MSR ¯®¢«¥çñ⠨᪫î票¥ ¢ ï¤à¥, ª®â®à®¥ ¯à¨¡ìñâ ¯®â®ª. |
* ।¢ à¨â¥«ì® á«¥¤ã¥â ®¯à¥¤¥«¨âì, ¯®¤¤¥à¦¨¢ îâáï «¨ MSR ¢ 楫®¬, |
ª®¬ ¤®© cpuid. ç¥ ¢®§¨ª¥â 㦥 ¤à㣮¥ ¨áª«î票¥ ¢ ï¤à¥, |
ª®â®à®¥ ¢á+ à ¢® ¯à¨¡ì+â ¯®â®ª. |
ª®â®à®¥ ¢áñ à ¢® ¯à¨¡ìñâ ¯®â®ª. |
====================================================================== |
======= ãªæ¨ï 68, ¯®¤äãªæ¨ï 5 - ¢ë¤¥«¨âì 䨧¨ç¥áªãî ¯ ¬ïâì. ======= |
3760,7 → 3774,7 |
ãáâனá⢮¬ âॡã¥âáï à §¬¥áâ¨âì ¤ ë¥ ¯® ¨§¢¥á⮬ã 䨧¨ç¥áª®¬ã |
¤à¥áã. ( áãé®áâ¨, íâ äãªæ¨ï à §à ¡ âë¢ « áì ¤«ï AC97WAV.) |
* ¨á«® ¡«®ª®¢ 䨧¨ç¥áª®© ¯ ¬ï⨠®£à ¨ç¥® (ª®áâ ⮩ 24, |
¯à¨ç+¬ íâ ª®áâ â ¢ª«îç ¥â ¨ ¥áª®«ìª® ¡«®ª®¢ ¯ ¬ï⨠|
¯à¨çñ¬ íâ ª®áâ â ¢ª«îç ¥â ¨ ¥áª®«ìª® ¡«®ª®¢ ¯ ¬ï⨠|
¤«ï ¤®¡®á⥩ ï¤à ). |
* ᢮¡®¤¨âì ¢ë¤¥«¥ãî â ª¨¬ ®¡à §®¬ ¯ ¬ïâì ¬®¦® |
¯®¤äãªæ¨¥© 6, ª®¯¨à®¢ ¨¥¬ ¤ ëå â㤠/®¡à â® |
3831,7 → 3845,7 |
¯à®æ¥áá ¬®¦¥â ¡ëâì ⮫쪮 ®¤¨ ®â« ¤ç¨ª; ®¤¨ ¯à®æ¥áá ¬®¦¥â |
®â« ¦¨¢ âì ¥áª®«ìª® à §ëå. ¨á⥬ 㢥¤®¬«ï¥â ®â« ¤ç¨ª ® ᮡëâ¨ïå, |
¯à®¨á室ïé¨å á ®â« ¦¨¢ ¥¬ë¬ ¯à®æ¥áᮬ. ®®¡é¥¨ï § ¯¨áë¢ îâáï ¢ ¡ãä¥à, |
®¯à¥¤¥«+ë© ¯®¤äãªæ¨¥© 0. |
®¯à¥¤¥«ñë© ¯®¤äãªæ¨¥© 0. |
®à¬ â á®®¡é¥¨ï: |
* +0: dword: ª®¤ á®®¡é¥¨ï |
* +4: dword: PID ®â« ¦¨¢ ¥¬®£® ¯à®æ¥áá |
3839,7 → 3853,7 |
®¯à¥¤¥«ï¥¬ë¥ ª®¤®¬ á®®¡é¥¨ï |
®¤ë á®®¡é¥¨©: |
* 1 = ¨áª«î票¥ |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ +âáï dword-®¬¥à ¨áª«î票ï |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ ñâáï dword-®¬¥à ¨áª«î票ï |
* ¯à®æ¥áá ¯à¨®áâ ®¢«¥ |
* 2 = ¯à®æ¥áá § ¢¥à訫áï |
* ¯à¨å®¤¨â ¯à¨ «î¡®¬ § ¢¥à襨¨: ª ª ç¥à¥§ á¨á⥬ãî äãªæ¨î -1, |
3846,7 → 3860,7 |
â ª ¨ ¯à¨ "㡨©á⢥" «î¡ë¬ ¤à㣨¬ ¯à®æ¥áᮬ |
(¢ ⮬ ç¨á«¥ á ¬¨¬ ®â« ¤ç¨ª®¬) |
* 3 = ®â« ¤®ç®¥ ¨áª«î票¥ int 1 = #DB |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ +âáï dword-®¡à § ॣ¨áâà DR6: |
* ¤®¯®«¨â¥«ì® ¯¥à¥¤ ñâáï dword-®¡à § ॣ¨áâà DR6: |
* ¡¨âë 0-3: ¢ë¯®«¥® ãá«®¢¨¥ ᮮ⢥âáâ¢ãî饩 â®çª¨ ®áâ ®¢ |
(ãáâ ®¢«¥®© ¯®¤äãªæ¨¥© 9) |
* ¡¨â 14: ¨áª«î票¥ ¯à®¨§®è«® ¨§-§ ०¨¬ |
4055,7 → 4069,7 |
* 01 = á«®¢® |
* 11 = ¤¢®©®¥ á«®¢® |
* esi = ¤à¥á â®çª¨ ®áâ ®¢ ; ¤®«¦¥ ¡ëâì ¢ë஢¥ |
ᮮ⢥âá⢥® ¤«¨¥ (â.¥. ¤®«¦¥ ¡ëâì ç+âë¬ ¤«ï |
ᮮ⢥âá⢥® ¤«¨¥ (â.¥. ¤®«¦¥ ¡ëâì çñâë¬ ¤«ï |
â®ç¥ª ®áâ ®¢ á«®¢®, ªà ⥠4 ¤«ï ¤¢®©®£® á«®¢ ) |
* ¥á«¨ áâ à訩 ¡¨â ãáâ ®¢«¥ - á¡à®á¨âì â®çªã ®áâ ®¢ |
®§¢à é ¥¬®¥ § 票¥: |
4075,10 → 4089,10 |
* à ¡ âë¢ ¨¥ â®çª¨ ®áâ ®¢ § ª«îç ¥âáï ¢ £¥¥à¨à®¢ ¨¨ |
®â« ¤®ç®£® ¨áª«î票ï #DB, ® ª®â®à®¬ á¨á⥬ á®®¡é ¥â ®â« ¤ç¨ªã. |
* ®çª ®áâ ®¢ § ¯¨áì ¨ ç⥨¥/§ ¯¨áì áà ¡ âë¢ ¥â ¯®á«¥ |
¢ë¯®«¥¨ï ¢ë§¢ ¢è¥© ¥+ ¨áâàãªæ¨¨. |
¢ë¯®«¥¨ï ¢ë§¢ ¢è¥© ¥ñ ¨áâàãªæ¨¨. |
====================================================================== |
= ãªæ¨ï 70 - à ¡®â á ä ©«®¢®© á¨á⥬®© á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬+. = |
= ãªæ¨ï 70 - à ¡®â á ä ©«®¢®© á¨á⥬®© á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. = |
====================================================================== |
à ¬¥âàë: |
* eax = 70 |
4108,7 → 4122,7 |
* /FD/1 = /FLOPPYDISK/1 ¤«ï ¤®áâ㯠ª ¯¥à¢®¬ã ä«®¯¯¨-¤¨áª®¢®¤ã, |
/FD/2 = /FLOPPYDISK/2 ¤«ï ¢â®à®£® ä«®¯¯¨-¤¨áª®¢®¤ |
* /HD0/x, /HD1/x, /HD2/x, /HD3/x ¤«ï ¤®áâ㯠ᮮ⢥âá⢥® |
ª ¦+á⪨¬ ¤¨áª ¬ IDE0 (Primary Master), IDE1 (Primary Slave), |
ª ¦ñá⪨¬ ¤¨áª ¬ IDE0 (Primary Master), IDE1 (Primary Slave), |
IDE2 (Secondary Master), IDE3 (Secondary Slave); |
x - ®¬¥à à §¤¥« ¢ë¡à ®¬ ¢¨ç¥áâ¥à¥, ¨§¬¥ï¥âáï ®â 1 ¤® 255 |
( ª ¦¤®¬ ¨§ ¢¨ç¥áâ¥à®¢ 㬥à æ¨ï ç¨ ¥âáï á 1) |
4124,6 → 4138,7 |
* ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« |
* ¯®¤äãªæ¨ï 1 - ç⥨¥ ¯ ¯ª¨ |
* ¯®¤äãªæ¨ï 2 - ᮧ¤ ¨¥/¯¥à¥§ ¯¨áì ä ©« |
* ¯®¤äãªæ¨ï 3 - § ¯¨áì ¢ áãé¥áâ¢ãî騩 ä ©« |
* ¯®¤äãªæ¨ï 5 - ¯®«ã票¥ âਡã⮢ ä ©« /¯ ¯ª¨ |
* ¯®¤äãªæ¨ï 6 - ãáâ ®¢ª âਡã⮢ ä ©« /¯ ¯ª¨ |
* ¯®¤äãªæ¨ï 7 - § ¯ã᪠¯à®£à ¬¬ë |
4132,7 → 4147,7 |
®è¨¡ª®© á ª®¤®¬ 2. |
====================================================================== |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬+. = |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. = |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
4143,7 → 4158,7 |
* +8: dword: 0 (§ १¥à¢¨à®¢ ® ¯®¤ áâ à訩 dword ¯®§¨æ¨¨) |
* +12 = +0xC: dword: ᪮«ìª® ¡ ©â ç¨â âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë ¤ ë¥ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4154,13 → 4169,13 |
-1=0xffffffff, ¥á«¨ ä ©« ¥ ©¤¥ |
¬¥ç ¨ï: |
* ᫨ ä ©« ª®ç¨«áï à ìè¥, 祬 ¡ë« ¯à®ç¨â ¯®á«¥¤¨© § ¯à®è¥ë© |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥à+â |
¡«®ª, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥àñâ |
eax=6 (EOF). |
* ãªæ¨ï ¥ ¯®§¢®«ï¥â ç¨â âì ¯ ¯ª¨ |
(¢¥à+âáï eax=10, access denied). |
(¢¥àñâáï eax=10, access denied). |
====================================================================== |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 1 - ç⥨¥ ¯ ¯ª¨ á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬+. = |
= ãªæ¨ï 70, ¯®¤äãªæ¨ï 1 - ç⥨¥ ¯ ¯ª¨ á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. = |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
4176,7 → 4191,7 |
* +12 = +0xC: dword: ᪮«ìª® ¡«®ª®¢ ç¨â âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë |
¤ ë¥, à §¬¥à ¡ãä¥à ¤®«¦¥ ¡ëâì ¥ ¬¥ìè¥ 32 + [+12]*560 ¡ ©â |
* +20 = +0x14: ASCIIZ-¨¬ï ¯ ¯ª¨, ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ¯ ¯ª¨, ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4192,7 → 4207,7 |
* ... |
âàãªâãà § £®«®¢ª : |
* +0: dword: ¢¥àá¨ï áâàãªâãàë (⥪ãé ï ¢¥àá¨ï = 1) |
* +4: dword: ª®«¨ç¥á⢮ à §¬¥é+ëå ¡«®ª®¢; ¥ ¡®«ìè¥, 祬 § ¯à®è¥® |
* +4: dword: ª®«¨ç¥á⢮ à §¬¥éñëå ¡«®ª®¢; ¥ ¡®«ìè¥, 祬 § ¯à®è¥® |
¢ ¯®«¥ +12 ¨ä®à¬ 樮®© áâàãªâãàë; ¬®¦¥â ¡ëâì ¬¥ìè¥, |
¥á«¨ ¢ ¯ ¯ª¥ ª®ç¨«¨áì ä ©«ë (â® ¦¥ á ¬®¥, çâ® ¨ ¢ ebx) |
* +8: dword: ®¡é¥¥ ç¨á«® ä ©«®¢ ¢ ¯ ¯ª¥ |
4249,7 → 4264,7 |
¤ ë¥ á®¤¥à¦ â ¬ãá®à. |
* ᫨ ä ©«ë ¢ ¯ ¯ª¥ ª®ç¨«¨áì à ìè¥, 祬 ¡ë«® ¯à®ç¨â ® |
§ ¯à®è¥®¥ ª®«¨ç¥á⢮, â® äãªæ¨ï ¯à®ç¨â ¥â, ᪮«ìª® ᬮ¦¥â, |
¯®á«¥ 祣® ¢¥à+â eax=6 (EOF). |
¯®á«¥ 祣® ¢¥àñâ eax=6 (EOF). |
* î¡ ï ¯ ¯ª ¤¨áª¥, ªà®¬¥ ª®à¥¢®©, ᮤ¥à¦¨â ¤¢ á¯¥æ¨ «ìëå |
¢å®¤ "." ¨ "..", ¨¤¥â¨ä¨æ¨àãîé¨å ᮮ⢥âá⢥® á ¬ã ¯ ¯ªã ¨ |
த¨â¥«ìáªãî ¯ ¯ªã. |
4260,7 → 4275,7 |
====================================================================== |
====================== ãªæ¨ï 70, ¯®¤äãªæ¨ï 2 ====================== |
======== ®§¤ ¨¥/¯¥à¥§ ¯¨áì ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬+. ======== |
======== ®§¤ ¨¥/¯¥à¥§ ¯¨áì ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. ======== |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
4271,7 → 4286,7 |
* +8: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +12 = +0xC: dword: ᪮«ìª® ¡ ©â ¯¨á âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¤ ë¥ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4280,13 → 4295,42 |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
* ebx = ç¨á«® § ¯¨á ëå ¡ ©â (¢®§¬®¦®, 0) |
¬¥ç ¨ï: |
* ᫨ ä ©« á â ª¨¬ ¨¬¥¥¬ ¥ áãé¥á⢮¢ «, ® ᮧ¤ +âáï; ¥á«¨ |
* ᫨ ä ©« á â ª¨¬ ¨¬¥¥¬ ¥ áãé¥á⢮¢ «, ® ᮧ¤ ñâáï; ¥á«¨ |
áãé¥á⢮¢ «, â® ¯¥à¥§ ¯¨áë¢ ¥âáï. |
* ᫨ ᢮¡®¤®£® ¬¥áâ ¤¨áª¥ ¥¤®áâ â®ç®, â® äãªæ¨ï § ¯¨è¥â, |
᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥à+â ª®¤ ®è¨¡ª¨ 8. |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥à+âáï ª®¤ ®è¨¡ª¨ 2). |
᪮«ìª® ᬮ¦¥â, ¯®á«¥ 祣® ¢¥àñâ ª®¤ ®è¨¡ª¨ 8. |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥àñâáï ª®¤ ®è¨¡ª¨ 2). |
====================================================================== |
====================== ãªæ¨ï 70, ¯®¤äãªæ¨ï 3 ====================== |
======== ¯¨áì ¢ áãé¥áâ¢ãî騩 ä ©« á ¯®¤¤¥à¦ª®© ¤«¨ëå ¨¬ñ. ======= |
====================================================================== |
à ¬¥âàë: |
* eax = 70 - ®¬¥à äãªæ¨¨ |
* ebx = 㪠§ â¥«ì ¨ä®à¬ 樮ãî áâàãªâãàã |
®à¬ â ¨ä®à¬ 樮®© áâàãªâãàë: |
* +0: dword: 3 = ®¬¥à ¯®¤äãªæ¨¨ |
* +4: dword: ¯®§¨æ¨ï ¢ ä ©«¥ (¢ ¡ ©â å) |
* +8: dword: áâ à訩 dword ¯®§¨æ¨¨ (¤®«¦¥ ¡ëâì 0 ¤«ï FAT) |
* +12 = +0xC: dword: ᪮«ìª® ¡ ©â ¯¨á âì |
* +16 = +0x10: dword: 㪠§ â¥«ì ¤ ë¥ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
* +21 = +0x15: dd 㪠§ ⥫ì ASCIIZ-áâபã á ¨¬¥¥¬ ä ©« |
®§¢à é ¥¬®¥ § 票¥: |
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë |
* ebx = ç¨á«® § ¯¨á ëå ¡ ©â (¢®§¬®¦®, 0) |
¬¥ç ¨ï: |
* ©« ¤®«¦¥ 㦥 áãé¥á⢮¢ âì, ¨ ç¥ ¢¥àñâáï eax=5. |
* ¤¨áâ¢¥ë¬ à¥§ã«ìâ ⮬ § ¯¨á¨ 0 ¡ ©â ï¥âáï ãáâ ®¢ª ¢ |
âਡãâ å ä ©« ¤ âë/¢à¥¬¥¨ ¬®¤¨ä¨ª 樨 ¨ ¤®áâ㯠¢ ⥪ãéãî. |
* ᫨ ç «ì ï ¨/¨«¨ ª®¥ç ï ¯®§¨æ¨ï ¢ë室¨â § ¯à¥¤¥«ë ä ©« |
(§ ¨áª«î票¥¬ ¯à¥¤ë¤ã饣® á«ãç ï), ä ©« à áè¨àï¥âáï ¤® |
¥®¡å®¤¨¬®£® à §¬¥à ã«¥¢ë¬¨ ᨬ¢®« ¬¨. |
====================================================================== |
=== ãªæ¨ï 70, ¯®¤äãªæ¨ï 5 - ¯®«ã票¥ ¨ä®à¬ 樨 ® ä ©«¥/¯ ¯ª¥. === |
====================================================================== |
à ¬¥âàë: |
4299,7 → 4343,7 |
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à, ªã¤ ¡ã¤ãâ § ¯¨á ë ¤ ë¥ |
(40 ¡ ©â) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4327,7 → 4371,7 |
* +8: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à á âਡãâ ¬¨ (32 ¡ ©â ) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4343,7 → 4387,7 |
¬¥ç ¨ï: |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥â ¢¨àâã «ìë¥ ¯ ¯ª¨ ⨯ /, /rd ¨ |
ª®à¥¢ë¥ ¯ ¯ª¨ ⨯ /rd/1. |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥à+âáï ª®¤ ®è¨¡ª¨ 2). |
* ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥àñâáï ª®¤ ®è¨¡ª¨ 2). |
====================================================================== |
============ ãªæ¨ï 70, ¯®¤äãªæ¨ï 7 - § ¯ã᪠¯à®£à ¬¬ë. ============ |
4359,7 → 4403,7 |
* +8: dword: 0 ¨«¨ 㪠§ ⥫ì ASCIIZ-áâபã á ¯ à ¬¥âà ¬¨ |
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +16 = +0x10: dword: 0 (§ १¥à¢¨à®¢ ®) |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬+ 㪠§ ë ¢ |
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢ |
®¡é¥¬ ®¯¨á ¨¨ |
¨«¨ |
* +20 = +0x14: db 0 |
4374,7 → 4418,7 |
(ASCIIZ-áâப ); ãç¨âë¢ îâáï «¨¡® ¢á¥ ᨬ¢®«ë ¤® § ¢¥àè î饣® ã«ï |
¢ª«îç¨â¥«ì®, «¨¡® ¯¥à¢ë¥ 256 ᨬ¢®«®¢, ¢ § ¢¨á¨¬®á⨠®â ⮣®, |
çâ® ¬¥ìè¥. |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ +âáï |
* ᫨ ¯à®æ¥áá § ¯ã᪠¥âáï ª ª ®â« ¦¨¢ ¥¬ë©, ® ᮧ¤ ñâáï |
¢ § ¬®à®¦¥®¬ á®áâ®ï¨¨; ¤«ï § ¯ã᪠¨á¯®«ì§ã©â¥ |
¯®¤äãªæ¨î 5 äãªæ¨¨ 69. |
4422,7 → 4466,7 |
* 2 = ¦ â ª« ¢¨è ª« ¢¨ âãॠ(¯®áâ㯠¥â, ⮫쪮 ª®£¤ ®ª® |
ªâ¨¢®) ¨«¨ ¦ â "£®àïç ï ª« ¢¨è "; |
á¡à áë¢ ¥âáï, ª®£¤ ¢á¥ ª« ¢¨è¨ ¨§ ¡ãä¥à áç¨â ë äãªæ¨¥© 2 |
* 3 = ¦ â ª®¯ª , ®¯à¥¤¥«+ ï à ¥¥ äãªæ¨¥© 8 (¨«¨ ª®¯ª |
* 3 = ¦ â ª®¯ª , ®¯à¥¤¥«ñ ï à ¥¥ äãªæ¨¥© 8 (¨«¨ ª®¯ª |
§ ªàëâ¨ï, ᮧ¤ ï ¥ï¢® äãªæ¨¥© 0; ª®¯ª ¬¨¨¬¨§ 樨 |
®¡à ¡ âë¢ ¥âáï á¨á⥬®© ¨ ® ¥© á®®¡é¥¨ï ¥ ¯à¨å®¤¨â; |
¯®áâ㯠¥â, ⮫쪮 ª®£¤ ®ª® ªâ¨¢®; á¡à áë¢ ¥âáï, ª®£¤ ¢á¥ |
4431,7 → 4475,7 |
¯à¨ à §¬ ᪨஢ª¥ äãªæ¨¥© 40) |
* 5 = ¯¥à¥à¨á®¢ë¢ ¥âáï ä® à ¡®ç¥£® á⮫ (á¡à áë¢ ¥âáï |
¢â®¬ â¨ç¥áª¨ ¯®á«¥ ¯¥à¥à¨á®¢ª¨, â ª çâ® ¥á«¨ ¢® ¢à¥¬ï ¯¥à¥à¨á®¢ª¨ |
ä® ¯à®£à ¬¬ ¥ ¦¤+â ¨ ¥ ¯à®¢¥àï¥â ᮡëâ¨ï, â® í⮣® ᮡëâ¨ï |
ä® ¯à®£à ¬¬ ¥ ¦¤ñâ ¨ ¥ ¯à®¢¥àï¥â ᮡëâ¨ï, â® í⮣® ᮡëâ¨ï |
® ¥ § ¬¥â¨â) |
* 6 = ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ¦ ⨥ ª®¯ªã ¬ëè¨ |
¨«¨ ¯¥à¥¬¥é¥¨¥; á¡à áë¢ ¥âáï ¯à¨ ¯à®ç⥨¨) |
4448,7 → 4492,7 |
==================== ®¤ë ®è¨¡®ª ä ©«®¢®© á¨á⥬ë ==================== |
====================================================================== |
* 0 = ãá¯¥è® |
* 1 = ¥ ®¯à¥¤¥«¥ ¡ § ¨/¨«¨ à §¤¥« ¦+á⪮£® ¤¨áª (¯®¤äãªæ¨ï¬¨ |
* 1 = ¥ ®¯à¥¤¥«¥ ¡ § ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª (¯®¤äãªæ¨ï¬¨ |
7, 8 äãªæ¨¨ 21) |
* 2 = äãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ®© ä ©«®¢®© á¨á⥬ë |
* 3 = ¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ |
4460,7 → 4504,7 |
* 7 = 㪠§ â¥«ì ¢¥ ¯ ¬ï⨠¯à¨«®¦¥¨ï |
* 8 = ¤¨áª § ¯®«¥ |
* 9 = â ¡«¨æ FAT à §àãè¥ |
* 10 = ¤®áâ㯠§ ¯à¥é+ |
* 10 = ¤®áâ㯠§ ¯à¥éñ |
* 11 = ®è¨¡ª ãáâனá⢠|
ਠ§ ¯ã᪥ ¯à®£à ¬¬ë ¢®§¬®¦ë â ª¦¥ á«¥¤ãî騥 ª®¤ë ®è¨¡®ª: |
* 30 = 0x1E = ¥¤®áâ â®ç® ¯ ¬ï⨠|
/kernel/trunk/docs/sysfuncs.txt |
---|
10,7 → 10,7 |
============== Function 0 - define and draw the window. ============== |
====================================================================== |
Defines an application window. Draws a frame of the window, header and |
working area. For windows with skin defines standard buttons for close |
working area. For skinned windows defines standard buttons for close |
and minimize. |
Parameters: |
* eax = 0 - function number |
18,10 → 18,10 |
* ecx = [coordinate on axis y]*65536 + [size on axis y] |
* edx = 0xXYRRGGBB, where: |
* Y = style of the window: |
* Y=0 - type I - window of the fixed size |
* Y=0 - type I - fixed-size window |
* Y=1 - only define window area, draw nothing |
* Y=2 - type II - window of the variable size |
* Y=3 - window with skin |
* Y=2 - type II - variable-size window |
* Y=3 - skinned window |
* other possible values (from 4 up to 15) are reserved, |
function call with such Y is ignored |
* RR, GG, BB = accordingly red, green, blue components of a color |
61,11 → 61,11 |
* The window must fit on the screen. If the transferred |
coordinates and sizes do not satisfy to this condition, |
appropriate coordinate (or, probably, both) is considered as zero, |
and if also it does not help, the appropriate size |
and if it does not help too, the appropriate size |
(or, probably, both) is installed in a size of the screen. |
Further we shall designate xpos,ypos,xsize,ysize - values |
transmitted in ebx,ecx. The coordinates are resulted concerning |
Further let us designate xpos,ypos,xsize,ysize - values passed |
in ebx,ecx. The coordinates are resulted concerning |
the left upper corner of the window, which, thus, is set as (0,0), |
coordinates of the right lower corner essence (xsize,ysize). |
* The sizes of the window are understood in sence of coordinates |
289,7 → 289,7 |
* function does not return value |
Remarks: |
* Sizes of the button must be more than 0 and less than 0x8000. |
* For windows with skin definition of the window |
* For skinned windows definition of the window |
(call of 0th function) creates two standard buttons - |
for close of the window with identifier 1 and |
for minimize of the window with identifier 0xffff. |
926,53 → 926,66 |
process/thread by given slot. |
====================================================================== |
====================== Function 18, subfunction 19 ===================== |
======================= Get/set mouse features. ====================== |
======== Function 18, subfunction 19 - get/set mouse features. ======= |
====================================================================== |
---------------- Subsubfunction 0 - get mouse speed. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = subsubfunction number |
ecx = 0 - get mouse speed |
* ecx = 0 - subsubfunction number |
Returned value: |
* eax = current mouse speed |
ecx = 1 - set mouse speed |
edx = selected value of speed |
---------------- Subsubfunction 1 - set mouse speed. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 1 - subsubfunction number |
* edx = new value for speed |
Returned value: |
* function does not return value |
ecx = 2 - get mouse delay |
---------------- Subsubfunction 2 - get mouse delay. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 2 - subsubfunction number |
Returned value: |
* eax = current mouse delay |
ecx = 3 - set mouse delay |
edx = selected value of delay |
---------------- Subsubfunction 3 - set mouse delay. ----------------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 3 - subsubfunction number |
* edx = new value for mouse delay |
Returned value: |
* function does not return value |
ecx = 4 - set mouse pointer position |
edx = [coordinate on axis x]*65536 + [coordinate on axis y] |
----------- Subsubfunction 4 - set mouse pointer position. ----------- |
Parameters: |
* eax = 18 - function number |
* ebx = 19 - subfunction number |
* ecx = 4 - subsubfunction number |
* edx = [coordinate on axis x]*65536 + [coordinate on axis y] |
Returned value: |
* function does not return value |
Remarks: |
* Recommended speed of the mouse (in subfunction 1) from 1 up to 9. |
The installed value is not inspected by the code of a kernel, on this use |
cautiously, at incorrect value the cursor can "freeze". |
Speed of mouse can be regulated through the application SETUP. |
* Recommended delay of the mouse (in subfunction 3) = 10. Lower value |
is not handled COM by mice. At the very large values the movement of |
the mouse on 1 pixel is impossible and the cursor will jump |
on the value of the installed speed (subfunction 1). |
Delay of mouse can be regulated through the application SETUP. |
The installed value is not inspected by the code of a kernel. |
* In subfunction 4 the installed value is not inspected by |
the code of a kernel. Before usage it is necessary to find out current |
screen resolution and at installation of a position to watch, |
that the value of a position should do not fall outside |
the limits the screen. |
* It is recommended to set speed of the mouse (in subsubfunction 1) |
from 1 up to 9. The installed value is not inspected by the kernel |
code, so set it carefully, at incorrect value the cursor |
can "freeze". Speed of the mouse can be regulated through the |
application SETUP. |
* Recommended delay of the mouse (in subsubfunction 3) = 10. Lower |
value is not handled by COM mice. At the very large values the |
movement of the mouse on 1 pixel is impossible and the cursor will |
jump on the value of installed speed (subsubfunction 1). The |
installed value is not inspected by the kernel code. |
* The subsubfunction 4 does not check the passed value. Before |
its call find out current screen resolution (with function 14) |
and check that the value of position is inside the limits of the |
screen. |
====================================================================== |
============ Function 19 - start application from ramdisk. =========== |
2995,6 → 3008,7 |
* eax = 0 - success, otherwise file system error code |
* ebx destroyed |
Remarks: |
* This function is obsolete, use subfunction 3 of function 70. |
* Ramdisk and floppies do not support this function, it is only |
for hard disks. |
* File must already exist (otherwise function returns 5, not found). |
4085,6 → 4099,7 |
* subfunction 0 - read file |
* subfunction 1 - read folder |
* subfunction 2 - create/rewrite file |
* subfunction 3 - write to existing file |
* subfunction 5 - get attributes of file/folder |
* subfunction 6 - set attributes of file/folder |
* subfunction 7 - start application |
4245,6 → 4260,35 |
* The function is not supported for CD (returns error code 2). |
====================================================================== |
===================== Function 70, subfunction 3 ===================== |
=========== Write to existing file with long names support. ========== |
====================================================================== |
Parameters: |
* eax = 70 - function number |
* ebx = pointer to the information structure |
Format of the information structure: |
* +0: dword: 3 = subfunction number |
* +4: dword: file offset (in bytes) |
* +8: dword: high dword of offset (must be 0 for FAT) |
* +12 = +0xC: dword: number of bytes to write |
* +16 = +0x10: dword: pointer to data |
* +20 = +0x14: ASCIIZ-name of file, the rules of names forming are |
given in the general description |
or |
* +20 = +0x14: db 0 |
* +21 = +0x15: dd pointer to ASCIIZ-string with file name |
Returned value: |
* eax = 0 - success, otherwise file system error code |
* ebx = number of written bytes (possibly 0) |
Remarks: |
* The file must already exist, otherwise function returns eax=5. |
* The only result of write 0 bytes is update in the file attributes |
date/time of modification and access to the current date/time. |
* If beginning and/or ending position is greater than file size |
(except for the previous case), the file is expanded to needed |
size with zero characters. |
====================================================================== |
==== Function 70, subfunction 5 - get information on file/folder. ==== |
====================================================================== |
Parameters: |
4421,4 → 4465,3 |
* 30 = 0x1E = not enough memory |
* 31 = 0x1F = file is not executable |
* 32 = 0x20 = too many processes |
/kernel/trunk/fs/fat12.inc |
---|
1265,6 → 1265,11 |
ret |
.found: |
mov eax, [esp+8] |
add eax, 31 |
cmp dword [esp], flp_root_next |
jnz @f |
add eax, -31+19 |
@@: |
add esp, 16 ; CF=0 |
pop esi |
ret |
1915,6 → 1920,304 |
pop edi ecx |
jmp .ret |
;---------------------------------------------------------------- |
; |
; fs_FloppyWrite - LFN variant for writing to floppy |
; |
; esi points to filename |
; ebx pointer to 64-bit number = first wanted byte, 0+ |
; may be ebx=0 - start from first byte |
; ecx number of bytes to write, 0+ |
; edx mem location to data |
; |
; ret ebx = bytes written (maybe 0) |
; eax = 0 ok write or other = errormsg |
; |
;-------------------------------------------------------------- |
@@: |
push ERROR_ACCESS_DENIED |
fs_FloppyWrite.ret0: |
pop eax |
xor ebx, ebx |
ret |
fs_FloppyWrite.ret11: |
push 11 |
jmp fs_FloppyWrite.ret0 |
fs_FloppyWrite: |
cmp byte [esi], 0 |
jz @b |
call read_flp_fat |
cmp [FDC_Status], 0 |
jnz .ret11 |
pushad |
call fd_find_lfn |
jnc .found |
popad |
push ERROR_FILE_NOT_FOUND |
jmp .ret0 |
.found: |
; FAT does not support files larger than 4GB |
test ebx, ebx |
jz .l1 |
cmp dword [ebx+4], 0 |
jz @f |
.eof: |
popad |
push ERROR_END_OF_FILE |
jmp .ret0 |
@@: |
mov ebx, [ebx] |
.l1: |
; now edi points to direntry, ebx=start byte to write, |
; ecx=number of bytes to write, edx=data pointer |
; extend file if needed |
add ecx, ebx |
jc .eof ; FAT does not support files larger than 4GB |
push eax ; save directory cluster |
push 0 ; return value=0 |
call get_time_for_file |
mov [edi+22], ax ; last write time |
call get_date_for_file |
mov [edi+24], ax ; last write date |
mov [edi+18], ax ; last access date |
push dword [edi+28] ; save current file size |
cmp ecx, [edi+28] |
jbe .length_ok |
cmp ecx, ebx |
jz .length_ok |
call floppy_extend_file |
jnc .length_ok |
mov [esp+4], eax |
; floppy_extend_file can return two error codes: FAT table error or disk full. |
; First case is fatal error, in second case we may write some data |
cmp al, ERROR_DISK_FULL |
jz .disk_full |
pop eax |
pop eax |
mov [esp+4+28], eax |
pop eax |
popad |
xor ebx, ebx |
ret |
.disk_full: |
; correct number of bytes to write |
mov ecx, [edi+28] |
cmp ecx, ebx |
ja .length_ok |
.ret: |
pop eax |
pop eax |
mov [esp+4+28], eax ; eax=return value |
pop eax |
sub edx, [esp+20] |
mov [esp+16], edx ; ebx=number of written bytes |
popad |
ret |
.length_ok: |
; save FAT & directory |
; note that directory must be saved first because save_flp_fat uses buffer at 0xD000 |
mov esi, [edi+28] |
movzx edi, word [edi+26] ; starting cluster |
mov eax, [esp+8] |
pusha |
call save_chs_sector |
popa |
cmp [FDC_Status], 0 |
jnz .device_err |
call save_flp_fat |
cmp [FDC_Status], 0 |
jz @f |
.device_err: |
mov byte [esp+4], 11 |
jmp .ret |
@@: |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
call SetUserInterrupts |
.write_loop: |
lea eax, [edi+31] ; current sector |
; get length of data in current sector |
push ecx |
sub ebx, 0x200 |
jb .hasdata |
neg ebx |
xor ecx, ecx |
jmp @f |
.hasdata: |
neg ebx |
cmp ecx, ebx |
jbe @f |
mov ecx, ebx |
@@: |
; load sector if needed |
cmp dword [esp+4], 0 ; we don't need to read uninitialized data |
jz .noread |
cmp ecx, 0x200 ; we don't need to read sector if it is fully rewritten |
jz .noread |
cmp ecx, esi ; (same for the last sector) |
jz .noread |
pusha |
call read_chs_sector |
popa |
cmp [FDC_Status], 0 |
jz @f |
.device_err2: |
pop ecx |
jmp .device_err |
@@: |
.noread: |
; zero uninitialized data if file was extended (because floppy_extend_file does not this) |
push eax ecx edi |
xor eax, eax |
mov ecx, 0x200 |
sub ecx, [esp+4+12] |
jbe @f |
mov edi, 0xD000 |
add edi, [esp+4+12] |
rep stosb |
@@: |
; zero uninitialized data in the last sector |
mov ecx, 0x200 |
sub ecx, esi |
jbe @f |
mov edi, 0xD000 |
add edi, esi |
rep stosb |
@@: |
pop edi ecx eax |
; copy new data |
push eax |
mov eax, edx |
neg ebx |
jecxz @f |
add ebx, 0xD000+0x200 |
call memmove |
xor ebx, ebx |
@@: |
pop eax |
; save sector |
pusha |
call save_chs_sector |
popa |
cmp [FDC_Status], 0 |
jnz .device_err2 |
add edx, ecx |
sub [esp], ecx |
pop ecx |
jz .done |
.next_cluster: |
movzx edi, word [edi*2+0x282000] |
sub esi, 0x200 |
jae @f |
xor esi, esi |
@@: |
sub dword [esp], 0x200 |
jae .write_loop |
and dword [esp], 0 |
jmp .write_loop |
.done: |
mov [fdc_irq_func], fdc_null |
jmp .ret |
floppy_extend_file.zero_size: |
xor eax, eax |
jmp floppy_extend_file.start_extend |
; extends file on floppy to given size (new data area is undefined) |
; in: edi->direntry, ecx=new size |
; out: CF=0 => OK, eax destroyed |
; CF=1 => error, eax=code (ERROR_FAT_TABLE or ERROR_DISK_FULL) |
floppy_extend_file: |
push ecx |
; find the last cluster of file |
movzx eax, word [edi+26] ; first cluster |
mov ecx, [edi+28] |
jecxz .zero_size |
@@: |
sub ecx, 0x200 |
jbe @f |
mov eax, [eax*2+0x282000] |
and eax, 0xFFF |
jz .fat_err |
cmp eax, 0xFF8 |
jb @b |
.fat_err: |
pop ecx |
push ERROR_FAT_TABLE |
pop eax |
stc |
ret |
@@: |
push eax |
mov eax, [eax*2+0x282000] |
and eax, 0xFFF |
cmp eax, 0xFF8 |
pop eax |
jb .fat_err |
; set length to full number of sectors |
sub [edi+28], ecx |
.start_extend: |
pop ecx |
; now do extend |
push edx esi |
mov esi, 0x282000+2*2 ; start scan from cluster 2 |
mov edx, 2847 ; number of clusters to scan |
.extend_loop: |
cmp [edi+28], ecx |
jae .extend_done |
; add new sector |
push ecx |
push edi |
.scan: |
mov ecx, edx |
mov edi, esi |
jecxz .disk_full |
push eax |
xor eax, eax |
repnz scasw |
pop eax |
jnz .disk_full |
mov word [edi-2], 0xFFF |
mov esi, edi |
mov edx, ecx |
sub edi, 0x282000 |
shr edi, 1 |
dec edi ; now edi=new cluster |
test eax, eax |
jz .first_cluster |
mov [0x282000+eax*2], di |
jmp @f |
.first_cluster: |
pop eax ; eax->direntry |
push eax |
mov [eax+26], di |
@@: |
mov eax, edi ; eax=new cluster |
pop edi ; edi->direntry |
pop ecx ; ecx=required size |
add dword [edi+28], 0x200 |
jmp .extend_loop |
.extend_done: |
mov [edi+28], ecx |
pop esi edx |
clc |
ret |
.disk_full: |
pop edi ecx |
pop esi edx |
stc |
push ERROR_DISK_FULL |
pop eax |
ret |
fs_FloppyGetFileInfo: |
call read_flp_fat |
cmp [FDC_Status], 0 |
1951,16 → 2254,9 |
push eax |
call bdfe_to_fat_entry |
pop eax |
test eax, eax |
jz .root |
add eax, 31 |
pusha |
call save_chs_sector |
popa |
jmp .cmn |
.root: |
call save_flp_root |
.cmn: |
pop edi |
xor eax, eax |
cmp [FDC_Status], 0 |
/kernel/trunk/fs/fat32.inc |
---|
2,11 → 2,12 |
;; ;; |
;; FAT32.INC ;; |
;; ;; |
;; FAT16/32 functions for MenuetOS ;; |
;; FAT16/32 functions for KolibriOS ;; |
;; ;; |
;; Copyright 2002 Paolo Minazzi, paolo.minazzi@inwind.it ;; |
;; ;; |
;; See file COPYING for details ;; |
;; 17.08.2006 LFN write/append to file - diamond ;; |
;; 23.06.2006 LFN start application - diamond ;; |
;; 15.06.2006 LFN get/set file/folder info - diamond ;; |
;; 27.05.2006 LFN create/rewrite file - diamond ;; |
104,7 → 105,6 |
startpath: times 255 db 0 |
fat16_root db 0 ; flag for fat16 rootdir |
f_del db 0 ; 1=overwrite fat entry |
fat_change db 0 ; 1=fat has changed |
endg |
225,14 → 225,6 |
cmp [fat_type],16 |
jne sfc_test32 |
cmp [f_del],1 ; overwrite previous value? |
je sfc_set16 ; yes |
cmp word [ebx+esi],0 ; is cluster free? |
je sfc_set16 ; yes |
mov dword [8*0x100000],0xffffff |
mov edx,[ebx+esi] ; get old value |
jmp sfc_nonzero |
sfc_set16: |
xchg [ebx+esi],dx ; save new value and get old value |
jmp sfc_write |
239,13 → 231,6 |
sfc_test32: |
mov eax,[fatMASK] |
cmp [f_del],1 ; overwrite previous value? |
je sfc_set32 ; yes |
test eax,[ebx+esi] ; is cluster free? |
je sfc_set32 ; yes |
mov dword [8*0x100000],0xffffff |
mov edx,[ebx+esi] ; get old value |
jmp sfc_nonzero |
sfc_set32: |
and edx,eax |
554,13 → 539,10 |
push eax ; save new cluster |
mov edx,eax |
mov eax,[cluster_tmp] ; change last cluster to point new cluster |
mov [f_del],1 |
call set_FAT |
cmp [hd_error],0 |
jne adw_not_found_1 |
mov [f_del],0 |
mov ecx,-1 ; remove 1 cluster from free disk space |
call add_disk_free_space |
cmp [hd_error],0 |
883,13 → 865,10 |
jne make_dir_error_1 |
mov eax,[cluster] ; directory cluster |
xor edx,edx ; free |
mov [f_del],1 |
call set_FAT |
cmp [hd_error],0 |
jne make_dir_error_1 |
mov [f_del],0 |
popad |
call update_disk ; write all of cache and fat to hd |
make_dir_error_2: |
1238,12 → 1217,10 |
mov edx,eax |
mov eax,[cluster] |
mov [f_del],1 |
call set_FAT ; update previous cluster |
cmp [hd_error],0 |
jne append_access_1 |
mov [f_del],0 |
pop eax |
jmp append_remove_free |
1362,12 → 1339,10 |
truncate_pos_found: |
mov edx,[fatEND] ; new end for cluster chain |
mov [f_del],1 |
call set_FAT |
cmp [hd_error],0 |
jne append_access |
mov [f_del],0 |
mov eax,edx ; clear rest of chain |
truncate_clear_chain: |
1875,7 → 1850,6 |
;----------------------------------------------------- |
push eax ecx edx |
xor ecx,ecx ; cluster count |
mov [f_del],1 ; delete on |
clean_new_chain: |
cmp eax,[LAST_CLUSTER] ; end of file |
1897,7 → 1871,6 |
delete_OK: |
call add_disk_free_space ; add clusters to free disk space |
access_denied_01: |
mov [f_del],0 |
pop edx ecx eax |
ret |
3288,7 → 3261,6 |
mov eax, [esp+4] |
mov eax, [eax] |
push edx |
mov [f_del], 1 |
call set_FAT |
pop edx |
cmp [hd_error], 0 |
3450,7 → 3422,6 |
mov word [edi+26], cx |
test eax, eax |
jz .done1 |
mov [f_del], 1 |
@@: |
cmp eax, [fatRESERVED] |
jae .done1 |
3736,7 → 3707,6 |
mov ecx, eax |
call get_free_FAT |
jc .diskfull |
mov [f_del], 1 |
push edx |
mov edx, [fatEND] |
call set_FAT |
3783,6 → 3753,348 |
popad |
ret |
;---------------------------------------------------------------- |
; |
; fs_HdWrite - LFN variant for writing to floppy |
; |
; esi points to filename |
; ebx pointer to 64-bit number = first wanted byte, 0+ |
; may be ebx=0 - start from first byte |
; ecx number of bytes to write, 0+ |
; edx mem location to data |
; |
; ret ebx = bytes written (maybe 0) |
; eax = 0 ok write or other = errormsg |
; |
;-------------------------------------------------------------- |
fs_HdWrite.access_denied: |
push ERROR_ACCESS_DENIED |
fs_HdWrite.ret0: |
pop eax |
xor ebx, ebx |
ret |
fs_HdWrite.ret11: |
push 11 |
jmp fs_HdWrite.ret0 |
fs_HdWrite: |
cmp [fat_type], 0 |
jnz @f |
push ERROR_UNKNOWN_FS |
jmp .ret0 |
@@: |
cmp byte [esi], 0 |
jz .access_denied |
pushad |
call hd_find_lfn |
pushfd |
cmp [hd_error], 0 |
jz @f |
popfd |
popad |
push 11 |
jmp .ret0 |
@@: |
popfd |
jnc .found |
popad |
push ERROR_FILE_NOT_FOUND |
jmp .ret0 |
.found: |
; FAT does not support files larger than 4GB |
test ebx, ebx |
jz .l1 |
cmp dword [ebx+4], 0 |
jz @f |
.eof: |
popad |
push ERROR_END_OF_FILE |
jmp .ret0 |
@@: |
mov ebx, [ebx] |
.l1: |
; now edi points to direntry, ebx=start byte to write, |
; ecx=number of bytes to write, edx=data pointer |
; extend file if needed |
add ecx, ebx |
jc .eof ; FAT does not support files larger than 4GB |
push eax ; save directory sector |
push 0 ; return value=0 |
call get_time_for_file |
mov [edi+22], ax ; last write time |
call get_date_for_file |
mov [edi+24], ax ; last write date |
mov [edi+18], ax ; last access date |
push dword [edi+28] ; save current file size |
cmp ecx, [edi+28] |
jbe .length_ok |
cmp ecx, ebx |
jz .length_ok |
call hd_extend_file |
jnc .length_ok |
mov [esp+4], eax |
; hd_extend_file can return three error codes: FAT table error, device error or disk full. |
; First two cases are fatal errors, in third case we may write some data |
cmp al, ERROR_DISK_FULL |
jz .disk_full |
pop eax |
pop eax |
mov [esp+4+28], eax |
pop eax |
popad |
xor ebx, ebx |
ret |
.disk_full: |
; correct number of bytes to write |
mov ecx, [edi+28] |
cmp ecx, ebx |
ja .length_ok |
.ret: |
call update_disk |
cmp [hd_error], 0 |
jz @f |
mov byte [esp+4], 11 |
@@: |
pop eax |
pop eax |
mov [esp+4+28], eax ; eax=return value |
pop eax |
sub edx, [esp+20] |
mov [esp+16], edx ; ebx=number of written bytes |
popad |
ret |
.length_ok: |
mov esi, [edi+28] |
mov eax, [edi+20-2] |
mov ax, [edi+26] |
mov edi, eax ; edi=current cluster |
xor ebp, ebp ; ebp=current sector in cluster |
; save directory |
mov eax, [esp+8] |
push ebx |
mov ebx, buffer |
call hd_write |
pop ebx |
cmp [hd_error], 0 |
jz @f |
.device_err: |
mov byte [esp+4], 11 |
jmp .ret |
@@: |
; now ebx=start pos, ecx=end pos, both lie inside file |
sub ecx, ebx |
jz .ret |
.write_loop: |
; get length of data in current sector |
push ecx |
sub ebx, 0x200 |
jb .hasdata |
neg ebx |
xor ecx, ecx |
jmp @f |
.hasdata: |
neg ebx |
cmp ecx, ebx |
jbe @f |
mov ecx, ebx |
@@: |
; get current sector number |
mov eax, edi |
dec eax |
dec eax |
imul eax, [SECTORS_PER_CLUSTER] |
add eax, [DATA_START] |
add eax, ebp |
; load sector if needed |
cmp dword [esp+4], 0 ; we don't need to read uninitialized data |
jz .noread |
cmp ecx, 0x200 ; we don't need to read sector if it is fully rewritten |
jz .noread |
cmp ecx, esi ; (same for the last sector) |
jz .noread |
push ebx |
mov ebx, buffer |
call hd_read |
pop ebx |
cmp [hd_error], 0 |
jz @f |
.device_err2: |
pop ecx |
jmp .device_err |
@@: |
.noread: |
; zero uninitialized data if file was extended (because hd_extend_file does not this) |
push eax ecx edi |
xor eax, eax |
mov ecx, 0x200 |
sub ecx, [esp+4+12] |
jbe @f |
mov edi, buffer |
add edi, [esp+4+12] |
rep stosb |
@@: |
; zero uninitialized data in the last sector |
mov ecx, 0x200 |
sub ecx, esi |
jbe @f |
mov edi, buffer |
add edi, esi |
rep stosb |
@@: |
pop edi ecx eax |
; copy new data |
push eax |
mov eax, edx |
neg ebx |
jecxz @f |
add ebx, buffer+0x200 |
call memmove |
xor ebx, ebx |
@@: |
pop eax |
; save sector |
push ebx |
mov ebx, buffer |
call hd_write |
pop ebx |
cmp [hd_error], 0 |
jnz .device_err2 |
add edx, ecx |
sub [esp], ecx |
pop ecx |
jz .ret |
; next sector |
inc ebp |
cmp ebp, [SECTORS_PER_CLUSTER] |
jb @f |
xor ebp, ebp |
mov eax, edi |
call get_FAT |
mov edi, eax |
cmp [hd_error], 0 |
jnz .device_err |
@@: |
sub esi, 0x200 |
jae @f |
xor esi, esi |
@@: |
sub dword [esp], 0x200 |
jae @f |
and dword [esp], 0 |
@@: jmp .write_loop |
hd_extend_file.zero_size: |
xor eax, eax |
jmp hd_extend_file.start_extend |
; extends file on hd to given size (new data area is undefined) |
; in: edi->direntry, ecx=new size |
; out: CF=0 => OK, eax destroyed |
; CF=1 => error, eax=code (ERROR_FAT_TABLE or ERROR_DISK_FULL or 11) |
hd_extend_file: |
push ebp |
mov ebp, [SECTORS_PER_CLUSTER] |
imul ebp, [BYTES_PER_SECTOR] |
push ecx |
; find the last cluster of file |
mov eax, [edi+20-2] |
mov ax, [edi+26] |
mov ecx, [edi+28] |
jecxz .zero_size |
.last_loop: |
sub ecx, ebp |
jbe .last_found |
call get_FAT |
cmp [hd_error], 0 |
jz @f |
.device_err: |
pop ecx |
.device_err2: |
pop ebp |
push 11 |
.ret_err: |
pop eax |
stc |
ret |
@@: |
cmp eax, 2 |
jb .fat_err |
cmp eax, [fatRESERVED] |
jb .last_loop |
.fat_err: |
pop ecx ebp |
push ERROR_FAT_TABLE |
jmp .ret_err |
.last_found: |
push eax |
call get_FAT |
cmp [hd_error], 0 |
jz @f |
pop eax |
jmp .device_err |
@@: |
cmp eax, [fatRESERVED] |
pop eax |
jb .fat_err |
; set length to full number of clusters |
sub [edi+28], ecx |
.start_extend: |
pop ecx |
; now do extend |
push edx |
mov edx, 2 ; start scan from cluster 2 |
.extend_loop: |
cmp [edi+28], ecx |
jae .extend_done |
; add new cluster |
push eax |
mov eax, edx |
call get_free_FAT |
jc .disk_full |
mov edx, [fatEND] |
call set_FAT |
mov edx, eax |
pop eax |
test eax, eax |
jz .first_cluster |
push edx |
call set_FAT |
pop edx |
jmp @f |
.first_cluster: |
ror edx, 16 |
mov [edi+20], dx |
ror edx, 16 |
mov [edi+26], dx |
@@: |
mov eax, edx |
cmp [hd_error], 0 |
jnz .device_err3 |
add [edi+28], ebp |
jmp .extend_loop |
.extend_done: |
mov [edi+28], ecx |
pop edx ebp |
clc |
ret |
.device_err3: |
pop edx |
jmp .device_err2 |
.disk_full: |
pop eax edx ebp |
push ERROR_DISK_FULL |
pop eax |
cmp [hd_error], 0 |
jz @f |
mov al, 11 |
@@: stc |
ret |
fs_HdGetFileInfo: |
cmp [fat_type], 0 |
jnz @f |
/kernel/trunk/fs/fs_lfn.inc |
---|
347,8 → 347,8 |
dd fs_RamdiskRead |
dd fs_RamdiskReadFolder |
dd fs_RamdiskRewrite |
dd fs_RamdiskWrite |
dd fs_NotImplemented |
dd fs_NotImplemented |
dd fs_RamdiskGetFileInfo |
dd fs_RamdiskSetFileInfo |
dd fs_RamdiskExecute |
376,8 → 376,8 |
dd fs_FloppyRead |
dd fs_FloppyReadFolder |
dd fs_FloppyRewrite |
dd fs_FloppyWrite |
dd fs_NotImplemented |
dd fs_NotImplemented |
dd fs_FloppyGetFileInfo |
dd fs_FloppySetFileInfo |
dd fs_FloppyExecute |
447,8 → 447,8 |
dd fs_HdRead |
dd fs_HdReadFolder |
dd fs_HdRewrite |
dd fs_HdWrite |
dd fs_NotImplemented |
dd fs_NotImplemented |
dd fs_HdGetFileInfo |
dd fs_HdSetFileInfo |
dd fs_HdExecute |
/programs/demos/numcalc/trunk/@numcalc.asm |
---|
File deleted |
Property changes: |
Deleted: svn:executable |
-* |
\ No newline at end of property |
/programs/demos/numcalc/trunk/build.bat |
---|
File deleted |
\ No newline at end of file |
/programs/demos/bgitest/trunk/bgifont.inc |
---|
570,6 → 570,12 |
jg .nobold |
end if |
mov edx,[.color] |
; \begin{diamond}[18.08.2006] |
; starting from K0530 kernel interprets flag 0x1000000 as |
; negate existing pixels colors, disregarding passed color |
; we do not want this |
and edx, 0xFFFFFF |
; \end{diamond}[18.08.2006] |
mov eax,38 |
int 0x40 |
test ebp,BGI_BOLD |
/programs/demos/bgitest/trunk/bgitest.asm |
---|
72,7 → 72,6 |
include 'macros.inc' |
;include 'debug.inc' |
include 'bgifont.inc' |
lang equ en;ru;en |
START: |
mov [help],0 |
/programs/develop/examples/numcalc/trunk/@numcalc.asm |
---|
0,0 → 1,49 |
use32 |
db 'MENUET01' |
dd 1 |
dd start |
dd i_end |
dd mem |
dd mem |
dd 0 |
dd 0 |
start: |
push 66 |
pop eax |
push 4 |
pop ebx |
mov cl, 45h ; NumLock scancode |
xor edx, edx |
int 40h |
mov al, 40 ; ñòàðøèå áèòû óæå îáíóëåíû |
mov bl, 2 ; ñòàðøèå áèòû óæå îáíóëåíû |
int 40h |
event: |
push 10 |
pop eax |
int 40h |
; ó íàñ ìîæåò áûòü òîëüêî îäíî ñîáûòèå - íàæàòà êëàâèøà |
mov al, 2 |
int 40h |
cmp al, 2 |
jnz event |
; ó íàñ åñòü òîëüêî îäíà ãîðÿ÷àÿ êëàâèøà |
push 70 |
pop eax |
mov ebx, fileinfo |
int 40h |
jmp event |
fileinfo: |
dd 7 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
db '/rd/1/calc',0 |
i_end: |
align 16 |
rb 16 |
mem: |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/programs/develop/examples/numcalc/trunk/build.bat |
---|
0,0 → 1,2 |
@fasm @numcalc.asm @numcalc |
@pause |
/programs/develop/heed/trunk/heed.asm |
---|
1159,7 → 1159,7 |
add edx,14 ;help_text addr. |
add esi,37 ; = 51 - length 1 line |
mov ecx,0x00ffffff |
mov edi,15 |
mov edi,(help_end-help_text)/51 |
@@: |
add ebx,0x10 |
int 0x40 |
1329,6 → 1329,7 |
;text for help_window |
help_label: db 'Help for HeEd.' |
help_text: |
if lang eq ru |
db '1.HeEd ¢ á®áâ®ï¨¨ ®âªàëâì ä ©« ⮫쪮 ®¤¨ à § ¨ ' |
db ' 㦮¥ ç¨á«® à § á®åà ¨âì ¥£®. ' |
db '2.ਠ®âªàë⨨ ä ©« ¡¥§ à áè¨à¥¨ï ¤® íâ® à áè¨-' |
1344,12 → 1345,27 |
db ' ¤¨âáï ¯ ¬ïâì á ¤à¥á 0å80000, ® à §¬¥à ä ©« ' |
db ' à ¢¥ 0xFFFFFFFF. ' |
db ' (á¬. ¨ä® "About") ' |
else |
db '1.HeEd can once open file and many times save it. ' |
db '2.To open file without extension it is required to ' |
db ' specify anyway as three spaces after a dot. ' |
db '3.File is opened when the button "Go" is pressed. ' |
db '4.Creation of new files in the menu is not provided' |
db ' but you can edit... ' |
db '5.Only number of bytes which was file size when ' |
db ' opening is written to file. ' |
db '6.If you press "Go" with empty filename field, ' |
db ' memory starting from address 0x80000 is output, ' |
db ' but file size equals to 0xFFFFFFFF. ' |
db ' (see info "About") ' |
end if |
help_end: |
;text for about_window |
about_label: db 'About this funny.' |
about_text: |
if lang eq ru |
db '¥ª®â®à ï ¨ä®à¬ æ¨ï ¤«ï â¥å, ªâ® § å®ç¥â ¤®¯¨á âì ' |
db 'áî¤ çâ®-⮠᢮¥: ª®¤ ¯à ªâ¨çªáª¨ ¥ ®¯â¨¬¨§¨à®¢ ,' |
db 'áî¤ çâ®-⮠᢮¥: ª®¤ ¯à ªâ¨ç¥áª¨ ¥ ®¯â¨¬¨§¨à®¢ ,' |
db 'â ª çâ® à §®¡à âìáï ¡ã¤¥â ¥ â ª 㦠᫮¦®. âப¨ ' |
db '¤«ï ª®¯®ª ¬¥î ¤®«¦ë ¨¤â¨ ¯àאַ ¤à㣠§ ¤à㣮¬, ' |
db 'â. ª. ï ¯à¨ ¢ë¢®¤¥ ¨á¯®«ì§ãî ¥ mov esi,à §¬¥à ¨ ' |
1363,6 → 1379,23 |
db 'ப á GUI MeOS ¨ ¯®í⮬㠥 ¯à¥â¥¤ã¥â çâ®-â® ' |
db '¡®«ì襥, 祬 ¯à¨¬¥à. à®áâ® ¤®¥« íâ ⥬ , ¢ë-' |
db 'ª¨ãâì ¦ «ª®. mailto:babalbes@yandex.ru ' |
else |
db 'Some information for those who want add to this ' |
db 'something their own: the code is practically not ' |
db 'optimized, so investigation is not complicated. ' |
db 'Strings for menu buttons must rank after each other' |
db 'as I use not mov esi,size and mov edx,address when ' |
db 'output but simply add offsets. For encodins and ' |
db 'file sizes for save, it remains only add buttons ' |
db 'with text in menu (at addition one should take into' |
db 'account that buttons ID are recognized as dec ah ' |
db 'rather than cmp ah,ID). Nevertheless if study is ' |
db 'unpleasant, you can write and ask. This program has' |
db 'been written in course of study GUI MeOS and does ' |
db 'not therefore pretend on some more than example. ' |
db 'Just this theme bothers, but I regret to delete. ' |
db ' mailto:babalbes@yandex.ru ' |
end if |
about_end: |
I_END: |
/programs/fs/sysxtree/trunk/SYSTR12.GIF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/ascgl.inc |
---|
20,8 → 20,8 |
;0.07 convbmp ~13.05.2004 |
;0.08 fps ~14.05.2004 |
;0.09 drawfbox ~03.06.2004 |
;0.10 all macros optimized by halyavin, add at ~07.06.2004 |
;0.11 many macros optimized by halyavin, add at ~30.08.2004 |
;0.10 all macros optimized by Halyavin A., add at ~07.06.2004 |
;0.11 many macros optimized by Halyavin A., add at ~30.08.2004 |
;0.12 bmptoimg ~07.09.2004 |
;0.13 imgtoimg ~08.09.2004 |
;0.14 imgtoimg modify not brake bmp pict! ~09.09.2004 |
369,8 → 369,8 |
;DrawBox |
macro drawfbox x,y,xs,ys,color |
{ |
wordstoreg ebx,x,xs ;x*65536+xs |
wordstoreg ecx,y,ys ;y*65536+ys |
words2reg ebx,x,xs ;x*65536+xs |
words2reg ecx,y,ys ;y*65536+ys |
mov edx,color |
mov eax,13 |
int 0x40 |
405,7 → 405,7 |
mov [fps_cntr],0 |
out_fps: |
if ~(delcolor eq ) |
mov ebx,x*65536+30 |
mov ebx,x*65536+36 |
mov ecx,y*65536+7 |
mov edx,delcolor |
mov eax,13 |
413,7 → 413,7 |
end if |
mov dword [ttt],fps_show_frequency |
mov eax,47 |
mov ebx,5*65536 |
mov ebx,6*65536 |
; mov bl,0 |
mov edx,x*65536+y |
mov esi,color |
495,7 → 495,7 |
shl ecx,16 |
add cx,[arg3+4] |
; wordstoreg ecx,[arg3],[arg3+4] |
wordstoreg edx, x , y ;arg1*65536+arg2 |
words2reg edx, x , y ;arg1*65536+arg2 |
int 0x40 |
} |
504,7 → 504,7 |
mov eax,7 |
mov ebx,arg3 |
add ebx,8 |
wordstoreg edx, x , y ;arg1*65536+arg2 |
words2reg edx, x , y ;arg1*65536+arg2 |
add edx,dword [arg3] |
mov ecx,dword [arg3+4] |
int 0x40 |
806,7 → 806,7 |
local Gif_get_sym, shift, nextbl, noblock, loop1, exx |
local Gif_output, next, loop2 |
_null equ 0x1000 ; 0x1000 |
_null = 0x1000 ; 0x1000 |
; jmp sss |
; if defined gif_hash_offset |
1101,7 → 1101,7 |
local Gif_get_sym, shift, nextbl, noblock, loop1, exx |
local Gif_output, next, loop2 |
_null fix 0x1000 ; 0x1000 |
_null = 0x1000 ; 0x1000 |
mov esi,gifsrc ;ª § ⥫ì ä ¨« ¢ ¯ ¬ï⨠|
mov edi,imgsrc ;ª § ⥫ì ᯨ᮪ ª à⨮ª |
1291,7 → 1291,6 |
Gif_skipmap: |
; in: ecx - image descriptor, esi - pointer to colormap |
; out: edi - pointer to area after colormap |
and ecx,111b |
inc ecx ; color map size |
mov ebx,1 |
/programs/fs/sysxtree/trunk/ascgml.inc |
---|
0,0 → 1,49 |
lang equ ru |
; |
; Assembler |
; SMALL |
; CODE |
; GaMe |
; Libary |
; |
; Ver 0.03 By Pavlushin Evgeni (RUSSIA) |
; www.waptap@mail.ru |
;InfoList |
;0.01 correct |
;0.02 control ~14.05.2004 |
;0.03 all macros optimized by halyavin, add at ~07.06.2004 |
; corectiryemoe,corectnoe,step |
macro correct arg1,arg2,arg3 |
{ |
local plus,minus,equal |
mov eax,arg2 |
cmp arg1,eax |
je equal |
mov eax,arg3 |
ja minus |
plus: |
add arg1,eax |
jmp equal |
minus: |
sub arg1,eax |
equal: |
} |
macro control min,max,arg |
{ |
local gr,low,norm |
mov eax,max |
cmp arg,eax |
jg gr |
mov eax,min |
cmp arg,eax |
jnl norm |
gr: |
low: |
mov arg,eax |
norm: |
} |
/programs/fs/sysxtree/trunk/ascl.inc |
---|
27,11 → 27,13 |
;0.12 open/save dialog ~13.09.2004 |
;0.13 dialogs bugs deleted |
;0.14 drawlbut ~03.10.2004 |
;0.15 extendet label! |
; LOADFILE |
; (SYNTAX) LOADFILE 'full_path_to_file',file_load_area,file_temp_area |
; (SAMPLE) LOADFILE '/rd/1/clock.bmp',load_area,temp_area |
macro loadfile file_name,file_load_area,file_temp_area |
{ |
local open,fileinfo,string |
59,25 → 61,75 |
} |
macro wordstoreg reg,hiword,loword |
;macro wordstoreg reg,hiword,loword |
;{ |
;if hiword eqtype 0 & loword eqtype 0 |
; mov reg,dword hiword*65536+loword |
;else if hiword eqtype 12 & loword eqtype eax |
; mov reg,dword hiword*65536 |
; add reg,dword loword |
;else if hiword eqtype 12 & loword eqtype [123] |
; mov reg,dword hiword*65536 |
; add reg,dword loword |
;else |
; mov reg,dword hiword |
; shl reg,16 |
; add reg,dword loword |
;end if |
;} |
macro dword2reg reg,doubleword |
{ |
if hiword eqtype 0 & loword eqtype 0 |
mov reg,(hiword)*65536+(loword) |
else if hiword eqtype 12 & loword eqtype eax |
mov reg,(hiword)*65536 |
add reg,loword |
else if hiword eqtype 0 & loword eqtype [123] |
mov reg,(hiword)*65536 |
add reg,loword |
else if (hiword eq ) & (loword eq ) |
if doubleword eq |
; not changes |
else |
mov reg,hiword |
mov reg,dword doubleword |
end if |
} |
macro words2reg reg,hiword,lowword |
{ |
if hiword eq |
if lowword eq |
; not changes |
else |
if lowword eqtype 12 |
and reg,dword 0xffff0000 |
add reg,dword lowword |
else |
and reg,dword 0xffff0000 |
add reg,dword lowword |
end if |
end if |
else |
if lowword eq |
if hiword eqtype 12 |
and reg,dword 0x0000ffff |
add reg,dword hiword*65536 |
else |
shl reg,16 |
add reg,loword |
add reg,dword hiword |
ror reg,16 |
end if |
else |
if lowword eqtype 12 & hiword eqtype 12 |
if lowword eq 0 & hiword eq 0 |
xor reg,reg |
else |
mov reg,dword hiword*65536+lowword |
end if |
else |
mov reg,dword hiword |
shl reg,16 |
add reg,dword lowword |
end if |
end if |
end if |
} |
; DRAW BUTTON with label |
macro drawlbut x,y,xs,ys,text,id,bcolor,tcolor |
86,8 → 138,8 |
jmp asd |
lab db text ;arg label |
asd: |
wordstoreg ebx,x,xs |
wordstoreg ecx,y,ys |
words2reg ebx,x,xs |
words2reg ecx,y,ys |
mov edx,id |
mov esi,bcolor |
mov eax,8 |
328,7 → 380,7 |
db '/RD/1/SYSXTREE',0 |
procinfo: |
times 256 db 0 |
times 1024 db 0 |
} |
390,7 → 442,7 |
mov eax,60 |
mov ebx,1 ; define IPC |
mov ecx,path ; offset of area |
mov edx,120 ; size 150 bytes |
mov edx,150 ; size 150 bytes |
int 0x40 |
; change wanted events list 7-bit IPC event |
458,6 → 510,7 |
call redproc |
jmp getmesloop |
mkey: |
mov eax,2 |
int 0x40 ; read (eax=2) |
jmp getmesloop |
mbutton: |
526,8 → 579,8 |
DLGPID dd 0 |
param: |
rb 4 ; My dec PID |
rb 6 ; Type of dialog |
dd 0 ; My dec PID |
dd 0,0 ; Type of dialog |
run_fileinfo: |
dd 16 |
535,11 → 588,11 |
dd param |
dd 0 |
dd procinfo |
run_filepath: |
;run_filepath: |
db '/RD/1/SYSXTREE',0 |
procinfo: |
times 256 db 0 |
times 1024 db 0 |
} |
635,10 → 688,15 |
; mov ebx,x |
; shl ebx,16 |
; add ebx,y |
wordstoreg ebx,x,y |
mov ecx,color |
mov edx,offs |
mov esi,size |
words2reg ebx,x,y |
dword2reg ecx,color |
dword2reg edx,offs |
dword2reg esi,size |
; mov ecx,color |
; mov edx,offs |
; mov esi,size |
mov eax,4 |
int 0x40 |
} |
649,7 → 707,7 |
mov ebx,numtype |
mov bl,0 |
; mov edx,x*65536+y |
wordstoreg edx,x,y |
words2reg edx,x,y |
mov esi,color |
mov eax,47 |
int 0x40 |
728,8 → 786,8 |
{ |
; mov ebx,arg1*65536+arg3 |
; mov ecx,arg2*65536+arg4 |
wordstoreg ebx,arg1,arg3 |
wordstoreg ecx,arg2,arg4 |
words2reg ebx,arg1,arg3 |
words2reg ecx,arg2,arg4 |
mov edx,arg5 |
mov eax,0 |
int 0x40 |
769,7 → 827,7 |
; (SYNTAX) LABEL Xstart,Ystart,'Text',Color |
; (SAMPLE) LABEL 10,12,'Hello World!',cl_Green+font_Big |
macro label arg1,arg2,arg3,arg4 |
macro glabel arg1,arg2,arg3,arg4 |
{ |
local asd,lab |
jmp asd |
778,10 → 836,11 |
; mov ebx,arg1 ;arg1=y arg2=x |
; shl ebx,16 |
; add ebx,arg2 |
wordstoreg ebx,arg1,arg2 |
if ~(arg4 eq ) |
mov ecx,arg4 ;arg4 color |
end if |
words2reg ebx,arg1,arg2 |
dword2reg ecx,arg4 |
mov edx,lab |
mov esi,asd-lab ;calc size |
mov eax,4 |
/programs/fs/sysxtree/trunk/ascml.inc |
---|
0,0 → 1,93 |
lang equ ru |
; |
; Assembler |
; SMALL |
; CODE |
; Massive operation |
; Libary |
; |
; Ver 0.1 By Pavlushin Evgeni (RUSSIA) |
; www.waptap@mail.ru |
;InfoList |
;0.01 readmas,compmas,findmas |
macro readmas masoff,obroff |
{ |
local loo |
mov edi,masoff |
add edi,8 |
mov ebp,[masoff] ;elements |
mov edx,[masoff+4] ;elemsize |
mov eax,0 ;count |
loo: |
pushad |
call obroff |
popad |
add edi,edx |
inc eax |
cmp eax,ebp |
jne loo |
} |
macro compmas masoff1,masoff2,obroff |
{ |
local loo,loo2 |
mov esi,masoff2 |
add esi,8 |
mov ecx,[masoff2] |
mov ebx,[masoff2+4] |
mov eax,0 |
loo2: |
push eax |
mov edi,masoff1 |
add edi,8 |
mov ebp,[masoff1] ;elements1 |
mov edx,[masoff1+4] ;elemsize1 |
mov eax,0 ;count |
loo: |
pushad |
call obroff |
popad |
add edi,edx |
inc eax |
cmp eax,ebp |
jne loo |
add esi,ebx |
pop eax |
inc eax |
cmp eax,ecx |
jne loo2 |
} |
macro findmas masoff,obroff |
{ |
local loo,looend,lend |
mov edi,masoff |
add edi,8 |
mov ebp,[masoff] ;elements |
mov edx,[masoff+4] ;elemsize |
mov eax,0 ;count |
loo: |
pushad |
mov eax,0 |
call obroff |
cmp eax,1 |
je looend |
popad |
add edi,edx |
inc eax |
cmp eax,ebp |
jne loo |
stc |
jmp lend |
looend: |
popad |
clc |
lend: |
} |
/programs/fs/sysxtree/trunk/macros.inc |
---|
1,3 → 1,15 |
; language for programs |
lang fix en ; ru en fr ge fi |
@^ fix macro comment { |
^@ fix } |
macro m2m dest,src { |
push src |
pop dest |
} |
; new application structure |
macro meos_app_start |
{ |
77,35 → 89,72 |
macro sz name,[data] { ; from MFAR [mike.dld] |
common |
if used name |
name db data |
.size = $-name |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
end if |
forward |
if used name |
if lang eq lng |
db data |
end if |
common |
.size = $-name |
end if |
} |
macro szc name,elsz,[data] { ; from MFAR [mike.dld] |
common |
local s,m |
m = 0 |
if used name |
label name |
virtual at 0 |
db data |
s = $ |
end virtual |
d#elsz s |
if m < s |
m = s |
end if |
db data |
.size = $-name |
.maxl = m |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld] |
common |
local s,m,c |
m = 0 |
c = 0 |
if used name |
label name |
end if |
forward |
if (used name)&(lang eq lng) |
if lang eq lng |
virtual at 0 |
db data |
s = $ |
end virtual |
d#elsz s |
if m < s |
m = s |
end if |
db data |
c = c+1 |
end if |
common |
if used name |
.size = $-name |
.maxl = m |
.count = c |
end if |
} |
; easy system call macro |
macro mpack dest, hsrc, lsrc |
{ |
123,8 → 172,16 |
end if |
} |
macro __mov reg,a { ; mike.dld |
if ~a eq |
;macro __mov reg,a { ; mike.dld |
; if ~a eq |
; mov reg,a |
; end if |
;} |
macro __mov reg,a,b { ; mike.dld |
if (~a eq)&(~b eq) |
mpack reg,a,b |
else if (~a eq)&(b eq) |
mov reg,a |
end if |
} |
140,12 → 197,72 |
} |
; ------------------------- |
macro header a,[b] { |
common |
use32 |
org 0 |
db 'MENUET',a |
forward |
if b eq |
dd 0 |
else |
dd b |
end if } |
macro section name { align 16 |
label name } |
macro func name { |
if ~used name |
display 'FUNC NOT USED: ',`name,13,10 |
else |
align 4 |
name: |
;pushad |
;pushfd |
;dps `name |
;newline |
;mcall 5,1 |
;popfd |
;popad |
} |
macro endf { end if } |
; language for programs |
lang fix ru ; ru en fr ge fi |
macro diff16 title,l1,l2 |
{ |
local s,d |
s = l2-l1 |
display title,': 0x' |
repeat 8 |
d = '0' + s shr ((8-%) shl 2) and $0F |
if d > '9' |
d = d + 'A'-'9'-1 |
end if |
display d |
end repeat |
display 13,10 |
} |
macro diff10 title,l1,l2 |
{ |
local s,d,z,m |
s = l2-l1 |
z = 0 |
m = 1000000000 |
display title,': ' |
repeat 10 |
d = '0' + s / m |
s = s - (s/m)*m |
m = m / 10 |
if d <> '0' |
z = 1 |
end if |
if z <> 0 |
display d |
end if |
end repeat |
display 13,10 |
} |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
197,48 → 314,230 |
} |
macro RGB [a] { |
common |
match (r=,g=,b),a \{ |
\dd ((r) shl 16) or ((g) shl 8) or (b) |
\} |
} |
struc POINT _t,_dx,_dy { |
.x _t _dx |
.y _t _dy |
} |
; Macroinstructions for defining data structures |
macro struct name |
{ |
{ fields@struct equ name |
match child parent, name \{ fields@struct equ child,fields@\#parent \} |
sub@struct equ |
struc db [val] \{ \common fields@struct equ fields@struct,.,db,<val> \} |
struc dw [val] \{ \common fields@struct equ fields@struct,.,dw,<val> \} |
struc du [val] \{ \common fields@struct equ fields@struct,.,du,<val> \} |
struc dd [val] \{ \common fields@struct equ fields@struct,.,dd,<val> \} |
struc dp [val] \{ \common fields@struct equ fields@struct,.,dp,<val> \} |
struc dq [val] \{ \common fields@struct equ fields@struct,.,dq,<val> \} |
struc dt [val] \{ \common fields@struct equ fields@struct,.,dt,<val> \} |
struc rb count \{ fields@struct equ fields@struct,.,db,count dup (?) \} |
struc rw count \{ fields@struct equ fields@struct,.,dw,count dup (?) \} |
struc rd count \{ fields@struct equ fields@struct,.,dd,count dup (?) \} |
struc rp count \{ fields@struct equ fields@struct,.,dp,count dup (?) \} |
struc rq count \{ fields@struct equ fields@struct,.,dq,count dup (?) \} |
struc rt count \{ fields@struct equ fields@struct,.,dt,count dup (?) \} |
macro db [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,db,<val> \} |
macro dw [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dw,<val> \} |
macro du [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,du,<val> \} |
macro dd [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dd,<val> \} |
macro dp [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dp,<val> \} |
macro dq [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dq,<val> \} |
macro dt [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dt,<val> \} |
macro rb count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,db,count dup (?) \} |
macro rw count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dw,count dup (?) \} |
macro rd count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dd,count dup (?) \} |
macro rp count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dp,count dup (?) \} |
macro rq count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dq,count dup (?) \} |
macro rt count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dt,count dup (?) \} |
macro union \{ fields@struct equ fields@struct,,union,< |
sub@struct equ union \} |
macro struct \{ fields@struct equ fields@struct,,substruct,< |
sub@struct equ substruct \} |
virtual at 0 } |
macro ends |
{ match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt |
restruc rb,rw,rd,rp,rq,rt |
purge db,dw,du,dd,dp,dq,dt |
purge rb,rw,rd,rp,rq,rt |
purge union,struct |
match name=,fields,fields@struct \\{ fields@struct equ |
make@struct name,fields |
fields@\\#name equ fields \\} |
end virtual \} |
match any, sub@struct \{ fields@struct equ fields@struct> \} |
restore sub@struct } |
macro make@struct name,[field,type,def] |
{ common |
if $ |
display 'Error: definition of ',`name,' contains illegal instructions.',0Dh,0Ah |
err |
end if |
local define |
define equ name |
forward |
local sub |
match , field \{ make@substruct type,name,sub def |
define equ define,.,sub, \} |
match any, field \{ define equ define,.#field,type,<def> \} |
common |
match fields, define \{ define@struct fields \} } |
macro define@struct name,[field,type,def] |
{ common |
local list |
list equ |
forward |
if ~ field eq . |
name#field type def |
sizeof.#name#field = $ - name#field |
else |
rb sizeof.#type |
end if |
local value |
match any, list \{ list equ list, \} |
list equ list <value> |
common |
sizeof.#name = $ |
restruc name |
match values, list \{ |
struc name value \\{ |
match any, fields@struct \\\{ fields@struct equ fields@struct,.,name,<values> \\\} |
match , fields@struct \\\{ label . |
forward |
match , value \\\\{ field type def \\\\} |
match any, value \\\\{ field type value |
if ~ field eq . |
rb sizeof.#name#field - ($-field) |
end if \\\\} |
common \\\} \\} \} } |
macro enable@substruct |
{ macro make@substruct substruct,parent,name,[field,type,def] |
\{ \common |
\local define |
define equ parent,name |
\forward |
\local sub |
match , field \\{ match any, type \\\{ enable@substruct |
make@substruct type,name,sub def |
purge make@substruct |
define equ define,.,sub, \\\} \\} |
match any, field \\{ define equ define,.\#field,type,<def> \\} |
\common |
match fields, define \\{ define@\#substruct fields \\} \} } |
enable@substruct |
macro define@union parent,name,[field,type,def] |
{ common |
virtual at 0 |
name name |
sizeof.#name = $ - name |
forward |
if ~ field eq . |
virtual at 0 |
parent#field type def |
sizeof.#parent#field = $ - parent#field |
end virtual |
} |
if sizeof.#parent#field > $ |
rb sizeof.#parent#field - $ |
end if |
else if sizeof.#type > $ |
rb sizeof.#type - $ |
end if |
common |
sizeof.#name = $ |
end virtual |
struc name [value] \{ \common |
label .\#name |
last@union equ |
forward |
match any, last@union \\{ virtual at .\#name |
field type def |
end virtual \\} |
match , last@union \\{ match , value \\\{ field type def \\\} |
match any, value \\\{ field type value \\\} \\} |
last@union equ field |
common rb sizeof.#name - ($ - .\#name) \} } |
macro define@substruct parent,name,[field,type,def] |
{ common |
virtual at 0 |
forward |
if ~ field eq . |
parent#field type def |
sizeof.#parent#field = $ - parent#field |
else |
rb sizeof.#type |
end if |
local value |
common |
sizeof.#name = $ |
end virtual |
struc name value \{ |
label .\#name |
forward |
match , value \\{ field type def \\} |
match any, value \\{ field type value |
if ~ field eq . |
rb sizeof.#parent#field - ($-field) |
end if \\} |
common \} } |
; structures used in MeOS |
struc process_information |
{ |
.cpu_usage dd ? ; +0 |
.window_stack_position dw ? ; +4 |
.window_stack_value dw ? ; +6 |
.not_used1 dw ? ; +8 |
.process_name rb 12 ; +10 |
.memory_start dd ? ; +22 |
.used_memory dd ? ; +26 |
.PID dd ? ; +30 |
.x_start dd ? ; +34 |
.y_start dd ? ; +38 |
.x_size dd ? ; +42 |
.y_size dd ? ; +46 |
.slot_state dw ? ; +50 |
struct process_information |
cpu_usage dd ? ; +0 |
window_stack_position dw ? ; +4 |
window_stack_value dw ? ; +6 |
not_used1 dw ? ; +8 |
process_name rb 12 ; +10 |
memory_start dd ? ; +22 |
used_memory dd ? ; +26 |
PID dd ? ; +30 |
x_start dd ? ; +34 |
y_start dd ? ; +38 |
x_size dd ? ; +42 |
y_size dd ? ; +46 |
slot_state dw ? ; +50 |
rb (1024-52) |
} |
struct process_information |
ends |
struc system_colors |
{ |
.frame dd ? |
.grab dd ? |
.grab_button dd ? |
.grab_button_text dd ? |
.grab_text dd ? |
.work dd ? |
.work_button dd ? |
.work_button_text dd ? |
.work_text dd ? |
.work_graph dd ? |
} |
struct system_colors |
frame dd ? |
grab dd ? |
grab_button dd ? |
grab_button_text dd ? |
grab_text dd ? |
work dd ? |
work_button dd ? |
work_button_text dd ? |
work_text dd ? |
work_graph dd ? |
ends |
; constants |
/programs/fs/sysxtree/trunk/systr12.GIF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/sysxtree.asm |
---|
42,18 → 42,44 |
; dd 0,0 |
;****************************************************************************** |
include 'lang.inc' |
include 'macros.inc' |
include 'ascl.inc' |
include 'ascgl.inc' |
gif_hash_offset = gif_hash |
START: ; start of execution |
; //// Willow |
mov eax,58 |
mov ebx,MRUfile |
int 0x40 |
; mov eax,58 |
; mov ebx,MRUfile |
; int 0x40 |
; //// Willow |
mcall 18,11,1,table_area |
mov edi,hdimg+62*2 |
cmp [table_area+2],byte 0 |
je no_hdpartition_on_hd0 |
mov esi,hdimg1 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd0: |
cmp [table_area+3],byte 0 |
je no_hdpartition_on_hd1 |
mov esi,hdimg2 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd1: |
cmp [table_area+4],byte 0 |
je no_hdpartition_on_hd2 |
mov esi,hdimg3 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd2: |
cmp [table_area+5],byte 0 |
je no_hdpartition_on_hd3 |
mov esi,hdimg4 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd3: |
mov eax,40 |
mov ebx,0100111b |
664,6 → 690,11 |
mov ebx,ac97wav |
jmp run |
nojv12: |
cmp eax,'.MID' |
jne nojv13 |
mov ebx,midamp |
jmp run |
nojv13: |
cmp eax,'.BMP' |
jne nobv |
mov ebx,bmpview |
676,6 → 707,11 |
jmp run |
nopngv: |
; //// Willow |
cmp eax,'.RTF' |
jne nortf |
mov ebx,rtfread |
jmp run |
nortf: |
cmp eax,'.ASM' |
je edit |
cmp eax,'.TXT' |
682,8 → 718,6 |
je edit |
cmp eax,'.INC' |
je edit |
cmp eax,'.DAT' |
je edit |
jmp still |
edit: |
mov ebx,editor |
1173,11 → 1207,11 |
exit: |
; //// Willow |
mov eax,58 |
mov ebx,MRUfile |
mov dword[ebx+8],255 |
inc dword[ebx] |
int 0x40 |
; mov eax,58 |
; mov ebx,MRUfile |
; mov dword[ebx+8],255 |
; inc dword[ebx] |
; int 0x40 |
; //// Willow |
mov eax,-1 |
int 0x40 |
1365,7 → 1399,7 |
mov eax,[sc.grab_text] ; color of text RRGGBB |
or eax,0x10000000 |
label 8,8,'SYSTEM X-TREE FILE BROWSER',eax |
glabel 8,8,'SYSTEM X-TREE FILE BROWSER',eax |
;Draw buttons headers |
mov eax,8 |
1400,10 → 1434,10 |
jnz nextpbut |
;DRAW PARTITON TEXT |
label 341,25,'1234',cl_White;Black |
glabel 341,25,'1234',cl_White;Black |
;File STRING |
label 8,25,' FILE VIEW INFO ', ;cl_White ;Black |
glabel 8,25,' FILE VIEW INFO ', ;cl_White ;Black |
;BlackLine |
mov eax,[procinfo.x_size] |
1422,20 → 1456,20 |
;Set logo img |
setimg 34,88,logoinfimg |
label 20,165,'SYSTEM X-TREE',cl_Black |
glabel 20,165,'SYSTEM X-TREE',cl_Black |
add ebx,10 |
label ,,'FOR MENUETOS', |
glabel ,,'FOR MENUETOS', |
add ebx,9*65536+20 |
label ,,'welcome to',cl_Green |
glabel ,,'welcome to',cl_Green |
add ebx,-15*65536+10 |
label ,,'www.menuetos.org',cl_Green |
glabel ,,'www.menuetos.org',cl_Green |
; label ,,'Create by',cl_Green |
; glabel ,,'Create by',cl_Green |
; add ebx,10 |
; label ,,' Pavlushin', |
; glabel ,,' Pavlushin', |
; add ebx,10 |
; label ,,' Evgeni', |
; glabel ,,' Evgeni', |
;Draw head->file buttons |
1522,7 → 1556,7 |
mov [urlxsize],eax |
mov [urlysize],12 |
label 20,57,"URL:",cl_Black |
glabel 20,57,"URL:",cl_Black |
;Out view mode info |
mov eax,[viewmode] |
1873,6 → 1907,8 |
je itx |
cmp eax,dword '.ASM' |
je itx |
cmp eax,dword '.RTF' |
je itx |
jmp nt |
itx: |
mov ecx,0x00446666 |
1892,6 → 1928,8 |
; //// Willow |
cmp eax,dword '.WAV' |
je ipic |
cmp eax,dword '.MID' |
je ipic |
jmp np |
ipic: |
mov ecx,0x00226688 |
1929,6 → 1967,11 |
push rdico+8 |
jmp out_ico |
no_rdico: |
cmp [edx+9],dword 'FLOP' |
jne no_fdico |
push rdico+8 |
jmp out_ico |
no_fdico: |
push folico+8 |
jmp out_ico |
no_folico: |
1946,6 → 1989,8 |
; //// Willow |
cmp [edx+8],dword '.WAV' |
je is_imgico |
cmp [edx+8],dword '.MID' |
je is_imgico |
jmp no_imgico |
is_imgico: |
push imgico+8 |
1960,8 → 2005,11 |
push asmincico+8 |
jmp out_ico |
no_asmincico: |
cmp [edx+8],dword '.RTF' |
je @f |
cmp [edx+8],dword '.TXT' |
jne no_txtico |
@@: |
push txtico+8 |
jmp out_ico |
no_txtico: |
2205,7 → 2253,7 |
;STEP 2 TEST ON HD OR PARTITION |
cmp [path],byte '/' |
je nstep |
mov ecx,61+62 |
mov ecx,61+62*5 |
loxhd: |
mov al,[hdimg+ecx] |
mov [convinfo+ecx],al |
2216,7 → 2264,53 |
nstep: |
cmp [path+3],byte '/' |
je nstep2 |
cmp [path+4],byte '/' |
je nstep2 |
cmp [path+1],word 'RD' |
jne nostep_RD |
mov ecx,61 |
jmp loxpt |
nostep_RD: |
cmp [path+1],word 'FD' |
jne nostep_FD |
mov ecx,61+62 |
jmp loxpt |
nostep_FD: |
cmp [path+1],dword 'HD0' |
jne nostep_HD0 |
mov cl,[table_area+2] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD0: |
cmp [path+1],dword 'HD1' |
jne nostep_HD1 |
mov cl,[table_area+3] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD1: |
cmp [path+1],dword 'HD2' |
jne nostep_HD2 |
mov cl,[table_area+4] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD2: |
cmp [path+1],dword 'HD3' |
jne nostep_HD3 |
mov cl,[table_area+5] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD3: |
mov ecx,61+62 ;+496 |
loxpt: |
mov al,[ptimg+ecx] |
mov [convinfo+ecx],al |
2262,12 → 2356,12 |
cmp eax,1 |
jne no_inv_part |
label 10,10,'Invalid partition or hd base',cl_Red+font_Big |
glabel 10,10,'Invalid partition or hd base',cl_Red+font_Big |
jmp end_of_dir |
no_inv_part: |
cmp eax,3 |
jne no_unk_fs |
label 10,10,'Unknow file system',cl_Red+font_Big |
glabel 10,10,'Unknow file system',cl_Red+font_Big |
jmp end_of_dir |
no_unk_fs: |
2625,12 → 2719,39 |
readblock dd 1 |
dlg_type db 0 ;S-save O-open |
hdimg1 db 'HD0 HARDDISK FOL ' |
hdimg2 db 'HD1 HARDDISK FOL ' |
hdimg3 db 'HD2 HARDDISK FOL ' |
hdimg4 db 'HD3 HARDDISK FOL ' |
;01234567890123456789012345678901234567890123456789012345678912 |
hdimg db 'HD HARDDISK FOL ' |
db 'RD RAMDISK FOL ' |
hdimg db 'RD RAMDISK FOL ' |
db 'FD FLOPPYDISK FOL ' |
db ' ' |
db ' ' |
db ' ' |
db ' ' |
ptimg db '1 FIRST PARTITION FOL ' |
db '2 SECOND PARTITION FOL ' |
db '3 NEXT PARTITION FOL ' |
db '4 NEXT PARTITION FOL ' |
db '5 NEXT PARTITION FOL ' |
db '6 NEXT PARTITION FOL ' |
db '7 NEXT PARTITION FOL ' |
db '8 NEXT PARTITION FOL ' |
db '9 NEXT PARTITION FOL ' |
db '10 NEXT PARTITION FOL ' |
db '11 NEXT PARTITION FOL ' |
db '12 NEXT PARTITION FOL ' |
db '13 NEXT PARTITION FOL ' |
db '14 NEXT PARTITION FOL ' |
db '15 NEXT PARTITION FOL ' |
db '16 NEXT PARTITION FOL ' |
db '17 NEXT PARTITION FOL ' |
db '18 NEXT PARTITION FOL ' |
db '19 NEXT PARTITION FOL ' |
db '20 NEXT PARTITION FOL ' |
modetext: |
;0123456789012345 |
2647,13 → 2768,13 |
b_color dd 0x6677cc |
; //// Willow |
MRUfile: |
dd 0x0 |
dd 0x0 |
dd 0x1 |
dd path |
dd tempzone |
db '/RD/1/MRU.LST',0 |
;MRUfile: |
; dd 0x0 |
; dd 0x0 |
; dd 0x1 |
; dd path |
; dd tempzone |
; db '/RD/1/MRU.LST',0 |
; //// Willow |
;Name of programs |
2663,9 → 2784,11 |
gifview db 'GIFVIEW ' |
ac97wav db 'AC97WAV ' |
copyrfile db 'COPYR ' |
rtfread db 'RTFREAD ' |
; //// Willow |
pngview db '@RCHER ' |
; //// Willow |
midamp db 'MIDAMP ' |
fileinfo_start: |
dd 16 |
2685,6 → 2808,10 |
dd tempzone ; work size of sytemram |
path: |
times 256 db 0 ;path |
table_area: |
rb 10 |
;rb 256 |
but_file: |
file 'systr12.GIF' |
/programs/fs/sysxtree/trunk/xtree.bmp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/xtree.ico |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/xtreeinf.txt |
---|
0,0 → 1,87 |
SYSTEM X-TREE |
The new file browser with support sorting file by name, extension, size, date |
Develop by Pavlushin Evgeni for Menuet OS e-mail: waptap@mail.ru |
site (slow update) : www.deck4.narod.ru |
~~~Manuals~~~ |
Copy program COPYR to ramdisk !!! for work feuters - copy and paste file's |
~~~Keys~~~ |
PageUp\PageDown , Up Arrow/Down Arrow -Navigation |
Blackspace - goto to previous folder |
Enter - enter to folder or run/view/edit file |
F2 - change sort mode (name,extension,size,date,sohw/fade del files) |
F3 - view file in notepad |
F5 - copy file to clipboard |
F6 - paste file from clipboard |
F12 - update source |
SYSTEM X-TREE |
Íîâûé ôàéëîâûé áðàóçåð ïîäåððæèâàþùèé ñîðòèðîâêó ôîèëîâ ïî èìåíè, |
ðàñøèðåíèþ, ðàçìåðó è äàòå. |
Ðàçðàáîòàë Ïàâëþøèí Åâãåíèé äëÿ Menuet OS e-mail: waptap@mail.ru |
ñàéò (ìåäëåííî îáíîâëÿåòñÿ) : www.deck4.narod.ru |
~~~Èíñòðóêöèÿ~~~ |
Ñêîïèðóéòå ïðîãó COPYR íà ramdisk !!! äëÿ âîçìîæíîñòè êîïèðîâàòü è âñòàâëÿòü ôàèëû |
~~~Êëàâèøè~~~ |
PageUp\PageDown , Up Arrow/Down Arrow - Íàâèãàöèÿ |
Blackspace - Ïåðåéòè ê ïðåäèäóùåé ïàïêå |
Enter - Çàéòè â ïàïêó èëè çàïóñòèòü/ïðîñìîòðåòü/ðåäàêòèðîâàòü ôàèë |
F2 - Ñìåíèòü ðåæèì ñîðòèðîâêè (Ïî èìåíè,ðàñøèðåíèþ,ðàçìåðó,äàòå,ïîêàçûâàòü óäàë. ôàèëû) |
F3 - Ïðîñìîòðåòü ôàèë â òåêñòîâîì áëîêíîòå |
F5 - êîïèðîâàòü ôàèë â clipboard |
F6 - âñòàâèòü ôàèë èç clipboard'à |
F12 - Îáíîâèòü ñîäåðæèìîå îêíà |
Translate of russian documentation for xtree |
Sorry i'm write in English very poor. |
The new concept of dialogues, now dialogues |
is made do not use file system for an exchange |
with the client, and use IPC - Inter process comunication |
(Support since 52 Versions). |
52 Version support IPC of dialogues |
53 Version is added protection dialogs from |
external processes. |
Test with TESTOPDG 54 Version IPC protection it is |
improved Test with TESTOPD2 That testing dialogues |
copy SYSTRE54 on ramdisk under name SYSXTREE and start TESTOPD2 |
In window TESTOPD2 the following information is displayed: |
In heading at the left??? |
Below parameters transferred SYSTEM XTREE, |
namely PID TESTOPD2, the blank and |
type of dialogue of one byte (O-Open, S-Save) |
is even lower PID SYSTEM XTREE and current num of the |
started processes After file will be open in dialogue, |
it will be displayed in window TESTOPD2 below heading, |
and dialogue will be closed. |
Protection TESTOPD2: |
1) If at start SYSTEM XTREE from XTREE don't it is |
received it PID during 2 sec, 54 version XTREE or |
not XTREE at all means on ramdisk not, TESTOPD2 |
comes to the end. |
2) If worked SYSTEM XTREE it was closed not |
having sent path to file (itself or from CPU programs) |
TESTOPD2 comes to the end since parameters from XTREE |
have not been received and since XTREE is closed |
that already and don't are received. |
;78Ver input in dir whith extension (for example TEST.DIR\XT\) bug deleted |
;64Ver Run file from HD bug deleted. |
;65Ver The bad scroll realization |
;66Ver The good scroll realization, url line anti-flick |
;67Ver Url line monolith procedure |
;68Ver Mini icon on left of file name |
;69Ver Getimg proc size minus 900 bytes |
;70Ver Del data area ramsize minus 140000 bytes |
;72Ver Quick sort, ramsize minus 200000 bytes |
;73Ver Url flick and out bugs delete |
;sort type in headmenu bug del |
/programs/fs/sysxtree/trunk/xtreinfo.txt |
---|
0,0 → 1,80 |
Ñäåëàíà íîâàÿ êîíöåïöèÿ äèàëîãîâ, òåïåðü äèàëîãè íå èñïîëüçóþò |
ôàéëîâóþ ñèñòåìó äëÿ îáìåíà ñ êëèåíòîì, à èñïîëüçóþò IPC - |
Inter process comunication (Ïîääåðæêà íà÷èíàÿ ñ 52 Âåðñèè). |
52 Âåðñèÿ ïîääåðæêà IPC äèàëîãîâ |
53 Âåðñèÿ äîáàâëåíà çàùèòû äèîëîãîâ îò âíåøíèõ ïðîöåññîâ. |
Òåñòèðóéòå ñ TESTOPDG |
54 Âåðñèÿ IPC çàùèòà óëó÷øåíà |
Òåñòèðóéòå ñ TESTOPD2 |
×òî-áû ïðîòåñòèòü äèàëîãè ñêîïèðóéòå SYSTRE54 íà ðàìäèñê ïîä |
èìåíåì SYSXTREE è çàïóñòèòå TESTOPD2 |
 îêíå TESTOPD2 îòîáðàæàåòñÿ ñëåäóþùàÿ èíôîðìàöèÿ: |
 çàãîëîâêå ñëåâà ??? |
Íèæå ïàðàìåòðû ïåðåäàííûå SYSTEM XTREE , à èìåííî PID TESTOPD2, |
ïðîáåë è òèï äèàëîãà îäèí áàéò (O-Open,S-Save) |
Åùå íèæå PID SYSTEM XTREE è òåêóùåå êîë-âî çàïóùåííûõ ïðîöåññîâ |
Ïîñëå òîãî êàê ôàèë áóäåò îòêðûò â äèàëîãå, îí îòîáðàçèòñÿ â |
îêíå TESTOPD2 íèæå çàãîëîâêà, à äèàëîã çàêðîåòñÿ. |
Çàùèòà TESTOPD2: |
1) Åñëè ïðè çàïóñêå SYSTEM XTREE îò XTREE íåáûë ïîëó÷åí åãî PID |
â òå÷åíèè 2 ñåê, çíà÷èò íà ðàìäèñêå íå 54 âåðñèÿ XTREE èëè íå XTREE |
âîâñå, TESTOPD2 çàâåðøàåòñÿ. |
2) Åñëè çàïóùåíûé SYSTEM XTREE çàêðûëñÿ íå îòîñëàâ ïóòüôàèëà(ñàì èëè |
îò CPU ïðîãè),òî TESTOPD2 çàâåðøàåòñÿ ò.ê. ïàðàìåòðû îò XTREE íå |
áûëè ïîëó÷åíû à ò.ê. XTREE çàêðûò òî óæå è íåáóäóò ïîëó÷åíû. |
68 Âåðñèÿ |
Çà äâà äíÿ ÿ äîáèëñÿ ïðèëè÷íûõ óñïåõîâ ïî ìîäåðíèçàöèè X-TREE |
È òàê øî íîâîãî... |
60Ver Òåïåðü FileList è â äèàëîãå è â áðàóçåðå âûâîäèòñÿ îäíîé |
ïðîöåäóðîé íóæíî òîëüêî óêàçàòü êîîðäèíàòû è ðàçìåð ëèñòà îòñëåæèâàíèå |
è ïðîðèñîâêà ñêðîëëáàðà âûïîëíÿåòñÿ ïðîöåäóðîé. |
61Ver Íàñòðîèë êîîðäèíàòû ÔàèëËèñòà |
62Ver Äàáàâèë ïàíåëüêó ñëåâà â îêíå (êàê â Âèíäàõ) äëÿ êðàñîòû |
63Ver Èçìåíèë ñêèí è äîáàâèë êàðòèíêè íà êíîïî÷êè ñêðîëëáàðà |
64Ver Óäàëèë ñòàðûé äîáðûé áàã - îøèáêà çàïóñêà ïðîã ñ HD êîòîðàÿ |
âûíîñèò Ìåîñ íàôèã íå èñêëþ÷àþ, ÷òî ýòîò áàã óäàëåí íå äî êîíöà |
65Ver Èçìåíèë îáðàáîòêó è ïðîðèñîâêó ñêðîëëà |
66Ver Äîâåë äî êîíöà ïðîðèñîâêó ñêðîëëà, äîáàâèë ïðîòèâîìèãàþùèé |
êîä äëÿ URL ñòðîêè |
67Ver Òåïåðü URL ñòðîêà è â äèàëîãå è â áðàóçåðå âûâîäèòñÿ îäíîé |
ïðîöåäóðîé íóæíî òîëüêî óêàçàòü êîîðäèíàòû è ðàçìåð ñòðîêè. |
68Ver Äîáàâèë ìèíè èêîíêè ñëåâà îò ôàèë íåéìà (î÷åíü ïðèêîëüíî ñìîòðèòñÿ). |
73 Âåðñèÿ |
69Ver Getimg âûïîëíèë â âèäå ïðîöåññà, à íå ìàêðîñà êîä óìåíüøèëñÿ |
íà 900 áàéò |
70Ver data_area òåïåðü íå èñïîäëüçóåòñÿ, à çíà÷èò ïàìÿòè òðåáóåòñÿ |
òåïåðü íà 140000 áàéò ìåíüøå! |
72Ver Áîëåå áûñòðàÿ ñîðòèðîâêà , fileinfo òðåáóò òîëüêî 200 áàéò, |
à çíà÷èò ïàìÿòè òåïðü òðåáóåòñÿ íà 200000 áàéò ìåíüøå! |
73Ver Ìèãàíèå Url ñòðîêè áàã èñïðàâëåí. |
Èòîãî êîä óìåíüøåí ãäå-òî íà 900 áàéò. Åñëè ðàíüøå òðåáîâàëîñü ïàìÿòè |
1 ÌÁ, òî òåïåðü âñåãî 600Êá, à ýòî ïî÷òè â äâà ðàçà ìåíüøå. |
80Ver Äèàëîãè îïÿòü ðàáîòàþò, óäàëåí áàã ðåäàêòèðîâàíåèÿ ñòðîêè URL |
81Ver Save äèàëîã ðàáîòàåò áîëåå êîððåêòíî |
/programs/games/c4/trunk/c4.asm |
---|
69,7 → 69,7 |
LABEL_STATUS_X equ 14 |
LABEL_STATUS_Y equ 279 |
LABEL_STATUS_WIDTH equ 220 |
LABEL_STATUS_HEIGHT equ 8 |
LABEL_STATUS_HEIGHT equ 12 |
/programs/games/tetris/trunk/random.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/key.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/table.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/mouse.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/window.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/score.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/menu.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/block.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/blocks.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/tetris.asm |
---|
16,25 → 16,36 |
; |
; |
; Changelog: |
; |
; 09.11.2005 - fix for work under MeosDebug & better random - Andrey Halyavin |
; 23.09.2005 - fixed bug, when 011111111111111-like sequence interpreted |
; as _11111111111111 in check_full_line - Sergey Kuzmin aka Wildwest |
; 18.09.2005 - added 'Pause' button and made appropriate code and interface redesign |
; BTW, you can MOVE and ROTATE block during Pause ;) - Sergey Kuzmin aka Wildwest |
; 03.11.2003 - added new blocks & random - Ivan Poddubny |
; 31.10.2001 - rdtsc replaced - quickcode <quickcode@mail.ru> |
; 28.06.2001 - fasm port & framed blocks - Ville Turjanmaa |
; 31.10.2001 - rdtsc replaced - quickcode <quickcode@mail.ru> |
; 03.11.2003 - added new blocks & random - Ivan Poddubny |
; |
; |
LEN_X equ 14 |
LEN_Y equ 24 |
BORDER_LEFT equ 2 |
BORDER_RIGHT equ 2 |
LEN_X equ 19 ;width of table |
LEN_Y equ 29 ; height of table |
BORDER_LEFT equ 1 |
BORDER_RIGHT equ 1 |
BORDER_TOP equ 1 |
BORDER_BOTTOM equ 1 |
ADOBE_SIZE equ 12 |
X_LOCATION equ 6 |
Y_LOCATION equ 21 |
X_LOCATION equ 30 ; distance to table from left side |
Y_LOCATION equ 50 ; distance to table from header |
UP_KEY equ 130+48 |
DOWN_KEY equ 129+48 |
LEFT_KEY equ 128+48 |
RIGHT_KEY equ 131+48 |
BACKGROUND equ 03000080h |
_MAXBLOCKS_ = 7*4 |
SCORE_TO_NEW_LEVEL equ 100000 |
use32 |
org 0x0 |
43,43 → 54,38 |
dd 0x01 ; header version |
dd START ; program start |
dd I_END ; program image size |
dd IM_END ; reguired amount of memory |
dd IM_END ; esp |
dd I_END+1024 ; reguired amount of memory |
dd I_END+1024 ; esp |
dd 0x0,0x0 ; I_PARAM, I_ICON |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
mov eax,3 ; |
int 0x40 ; |
mov cl,16 ; |
; -- quickcode - start |
mov eax,3 |
int 0x40 |
mov cl,16 |
ror eax,cl ; to make seconds more significant |
mov [generator],eax ; |
call random ; |
mov [generator],eax |
call random |
mov byte[status],'0' |
mov byte[menu],'0' |
; -- quickcode - end |
call clear_table_tetris |
call new_block |
call draw_window ; at first, draw the window |
still: |
cmp byte[status],'2' |
je attesa |
cmp byte[status],'1' |
jne attesa |
xor edx,edx |
call draw_block |
attesa: |
call mouse |
;disabled because of bug |
;EDIT: the bug is somewhere else.. |
;NOTE: dont release this without fixing the bug you lazy bastard! |
mov eax,11 ; get event |
int 0x40 |
91,35 → 97,34 |
check_button: |
cmp eax,3 ; button in buffer ? |
jnz scendi |
mov eax,-1 ; close this program |
int 0x40 |
jmp button |
red: ; redraw |
call draw_window |
jmp still |
parallel dd 1 |
scendi: cmp byte[status],'1' |
jne still |
cmp byte[blabla],10 |
je blabla_0 |
inc byte[blabla] |
jmp blabla_1 |
blabla_0: |
mov byte[blabla],0 |
scendi: |
;///////////////////////////////////////////////// Wildwest |
cmp dword [pauses], 0 |
je ok |
jne not_ok |
not_ok: |
inc dword [current_block_y] |
dec dword [current_block_y] |
call check_crash |
jne block_crash |
blabla_1: |
jmp draw |
ok: |
;///////////////////////////////////////////////// |
inc dword [current_block_y] |
call check_crash |
jne block_crash |
draw: movzx edx,byte [current_block_color] |
call draw_block |
mov eax,5 |
mov ebx,5 |
sub ebx,[speed] |
movzx ebx,byte [delay] |
int 0x40 |
jmp still |
130,6 → 135,7 |
call check_full_line |
call draw_table |
call new_block |
inc dword [score] |
call write_score |
call check_crash |
jz adr400 |
140,96 → 146,729 |
call draw_window |
adr10000: cmp eax,3 |
jne aspetta |
new_game: mov dword [score],0 |
mov dword [lines],0 |
mov dword [level],0 |
mov dword [speed],0 |
mov byte [status],'1' |
new_game: mov eax,17 |
int 0x40 |
cmp ah,1 |
jnz adr401 |
jmp end_program |
adr401: |
;///////////////////////////////////////////////////// Wildwest |
mov dword [pauses], 0 |
;//////////////////////////////////////////////////// |
mov dword [score],0 |
call clear_table_tetris |
call first_block |
call new_block |
call draw_window |
adr400: movzx edx,byte [current_block_color] |
call draw_block |
mov eax,5 |
movzx ebx,byte [delay] |
int 0x40 |
jmp still |
include 'key.inc' |
include 'mouse.inc' |
include 'menu.inc' |
include 'window.inc' |
include 'block.inc' |
include 'table.inc' |
include 'random.inc' |
include 'score.inc' |
key: mov eax,2 |
int 0x40 |
adr32: cmp ah,LEFT_KEY |
jne adr_30 |
dec dword [current_block_x] |
call check_crash |
jz adr4000 |
inc dword [current_block_x] |
adr4000: jmp scendi |
adr_30: cmp ah,RIGHT_KEY |
jne adr_31 |
inc dword [current_block_x] |
call check_crash |
jz adr3000 |
dec dword [current_block_x] |
adr3000: jmp scendi |
adr_31: cmp ah,UP_KEY |
jne adr51 |
mov edx,[current_block_pointer] |
mov edx,[edx+16] |
mov esi,[current_block_pointer] |
mov [current_block_pointer],edx |
call check_crash |
jz adr50 |
mov [current_block_pointer],esi |
adr50: jmp scendi |
adr51: cmp ah,DOWN_KEY |
jne adr61 |
mov byte [delay],5 ;!!! 2 |
adr52: jmp scendi |
adr61: cmp ah,' ' |
jne adr62 |
mov byte [delay],5 ;!!! 2 |
adr62: jmp scendi |
button: ; button |
mov eax,17 |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jz end_program |
cmp ah,2 |
jz go_new_game |
cmp ah,3 ; button id=3 ? ///Wildwest's 'Pause' button |
jz pause_program |
jmp still |
end_program: |
mov eax,0xffffffff ; close this program |
int 0x40 |
go_new_game: |
jmp new_game |
;//////////////////////////////////////////////////// Wildwest |
pause_program: |
cmp dword [pauses], 0 |
je incr |
mov dword [pauses], 0 |
jmp still |
incr: |
mov dword [pauses], 1 |
jmp still |
;//////////////////////////////////////////////////// |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
draw_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,320*65536+(LEN_X-BORDER_LEFT-BORDER_RIGHT)*ADOBE_SIZE+X_LOCATION*2 |
mov ecx,25*65536+ (LEN_Y-BORDER_TOP-BORDER_BOTTOM)*ADOBE_SIZE+Y_LOCATION+30 |
mov edx,BACKGROUND ; color of work area RRGGBB |
mov esi,0x006688ee;99bbff ; color of grab bar RRGGBB,8->col |
mov edi,0x007799ff;99bbee ; color of frames RRGGBB |
int 0x40 |
; WINDOW LABEL |
mov eax,4 ; function 4 : write text to window |
mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
mov ecx,0x10ffffff ; color of text RRGGBB |
mov edx,labelt ; pointer to text beginning |
mov esi,labellen-labelt ; text length |
int 0x40 |
; CLOSE BUTTON |
; mov eax,8 ; function 8 : define and draw button |
; mov ebx,243*65536+12 ; [x start] *65536 + [x size] |
; mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
; mov edx,1 ; button id |
; mov esi,0x5580cc;22aacc ; button color RRGGBB |
; int 0x40 |
mov eax,8 |
mov ebx,30*65536+102 |
mov ecx,378*65536+18 |
mov edx,2 |
mov esi,0xA24466;5580cc;22aacc |
int 0x40 |
;/////////////////////////////////////////////// Wildwest's 'Pause' button |
mov eax,8 |
mov ebx,132*65536+102 |
mov ecx,378*65536+18 |
mov edx,3 |
mov esi,0x0FA0F0; |
int 0x40 |
mov eax,4 ; function 4 : write text to window |
mov ebx,164*65536+384 ; [x start] *65536 + [y start] |
mov ecx,0x10ffffff ; color of text RRGGBB |
mov edx,labe ; pointer to text beginning |
mov esi,labelen-labe ; text length |
int 0x40 |
;/////////////////////////////////////////////// |
mov eax,4 |
mov ebx,49*65536+384 |
xor ecx,ecx |
mov ecx,0x10ffffff |
mov edx,game_finished |
mov esi,size_of_game_finished-game_finished |
int 0x40 |
call draw_table |
movzx edx,byte [current_block_color] |
call draw_block |
cld |
mov ebx,38*65536+35 ; draw info text with function 4 |
mov ecx,0x10ffffff ; color |
mov edx,text |
mov esi,7 |
mov eax,4 |
int 0x40 |
call write_score |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
ret |
;------------------------------------------------------------- |
; CHECK CRASH |
; output Z flag => OK |
; NZ flag => NO |
;------------------------------------------------------------- |
check_crash: mov ebx,[current_block_pointer] |
mov edx,[current_block_y] |
imul edx,LEN_X |
add edx,[current_block_x] ;find the offset in tetris_t |
add edx,table_tetris |
mov ecx,4 |
xor ax,ax |
adr_1: cmp byte [ebx],1 |
jne adr_2 |
add al,[edx] |
adc ah,0 |
adr_2: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_3 |
add al,[edx] |
adc ah,0 |
adr_3: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_4 |
add al,[edx] |
adc ah,0 |
adr_4: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_5 |
add al,[edx] |
adc ah,0 |
adr_5: inc ebx |
add edx,LEN_X-3 |
loop adr_1 |
or ax,ax |
ret |
;------------------------------------------------------------- |
;NEW BLOCK |
;------------------------------------------------------------- |
new_block: mov dword [current_block_y],1 |
mov dword [current_block_x],7 |
call random |
and al,7 |
setz ah |
add al,ah |
mov [current_block_color],al |
call random |
;and eax,15 |
; ---- Ivan ---- |
and eax,0xff |
@@: |
cmp eax,_MAXBLOCKS_ |
jl @f |
add eax,-(_MAXBLOCKS_) |
jmp @b |
@@: |
; ---- Ivan ---- |
mov edx,[block_table+eax*4] |
mov [current_block_pointer],edx |
mov byte [delay],22 ;19 ;!!! 15 |
ret |
;------------------------------------------------------------- |
; FIX BLOCK |
;------------------------------------------------------------- |
fix_block: mov ebx,[current_block_pointer] |
mov edx,[current_block_y] |
imul edx,LEN_X |
add edx,[current_block_x] ;find the offset in tetris_t |
add edx,table_tetris |
mov ecx,4 |
mov al,[current_block_color] |
adr_21: cmp byte [ebx],1 |
jne adr_22 |
mov [edx],al |
adr_22: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_23 |
mov [edx],al |
adr_23: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_24 |
mov [edx],al |
adr_24: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_25 |
mov [edx],al |
adr_25: inc ebx |
add edx,LEN_X-3 |
loop adr_21 |
ret |
;-------------------------------------------------------------- |
; DRAW_TABLE |
;-------------------------------------------------------------- |
draw_table: mov esi,table_tetris+LEN_X*BORDER_TOP+BORDER_LEFT |
mov ebx,X_LOCATION*65536+ADOBE_SIZE |
mov ecx,Y_LOCATION*65536+ADOBE_SIZE |
mov edi,LEN_Y-BORDER_TOP-BORDER_BOTTOM |
y_draw: push edi |
mov edi,LEN_X-BORDER_LEFT-BORDER_RIGHT |
x_draw: push edi |
; pusha |
; mov eax,5 |
; mov ebx,10 |
; int 0x40 |
; popa |
mov ax,13 |
movzx edx,byte [esi] |
mov edx,[color_table+edx*4] |
int 0x40 |
call draw_frames |
inc esi |
add ebx,65536*ADOBE_SIZE |
pop edi |
dec edi |
jnz x_draw |
add esi,BORDER_LEFT+BORDER_RIGHT |
mov ebx,X_LOCATION*65536+ADOBE_SIZE |
add ecx,65536*ADOBE_SIZE |
pop edi |
dec edi |
jnz y_draw |
ret |
;-------------------------------------------------------------- |
;DRAW BLOCK |
; |
; ebx=x [0..LEN_X-1] |
; ecx=y [0..LEN_Y-1] |
; edi=pointer block |
;-------------------------------------------------------------- |
draw_block: |
mov eax,13 |
mov edx,[color_table+edx*4] |
mov ebx,[current_block_x] |
mov ecx,[current_block_y] |
mov edi,[current_block_pointer] |
sub ebx,BORDER_LEFT |
imul ebx,ADOBE_SIZE |
add ebx,X_LOCATION |
shl ebx,16 |
mov bx,ADOBE_SIZE |
sub ecx,BORDER_TOP |
imul ecx,ADOBE_SIZE |
add ecx,Y_LOCATION |
shl ecx,16 |
mov cx,ADOBE_SIZE |
mov dword [TMP_1],4 |
adr_122: mov dword [TMP_0],4 |
adr_121: cmp byte [edi],0 |
je adr_120 |
int 040h |
call draw_frames |
adr_120: inc edi |
add ebx,ADOBE_SIZE*65536 |
dec dword [TMP_0] |
jnz adr_121 |
sub ebx,4*ADOBE_SIZE*65536 |
add ecx,ADOBE_SIZE*65536 |
dec dword [TMP_1] |
jnz adr_122 |
ret |
draw_frames: |
cmp edx,0 |
jne df1 |
ret |
df1: |
pusha |
mov bx,1 |
add edx,0x282828 |
mov eax,13 |
int 0x40 |
popa |
pusha |
mov cx,1 |
add edx,0x282828 |
mov eax,13 |
int 0x40 |
popa |
pusha |
push ebx |
sub bx,1 |
add [esp+2],bx |
pop ebx |
mov bx,1 |
shr edx,1 |
and edx,0x7f7f7f |
mov eax,13 |
int 0x40 |
popa |
pusha |
push ecx |
sub cx,1 |
add [esp+2],cx |
pop ecx |
mov cx,1 |
shr edx,1 |
and edx,0x7f7f7f |
mov eax,13 |
int 0x40 |
popa |
ret |
;-------------------------------------------------------------- |
clear_table_tetris: |
cld |
mov al,1 |
mov edi,table_tetris |
mov ecx,LEN_X*BORDER_TOP |
rep stosb |
mov edx,LEN_Y-BORDER_TOP-BORDER_BOTTOM |
adr300: mov cl,BORDER_LEFT |
rep stosb |
dec ax ;AL=0 |
mov cl,LEN_X-BORDER_LEFT-BORDER_RIGHT |
rep stosb |
inc ax ;AL=1 |
mov cl,BORDER_RIGHT |
rep stosb |
dec dx |
jne adr300 |
mov ecx,LEN_X*BORDER_BOTTOM |
rep stosb |
ret |
;-------------------------------------------------------------- |
;edx = pointer |
;ebx = contatore |
check_full_line: |
std |
mov al,0 |
mov edx,table_tetris+LEN_X*(LEN_Y-BORDER_BOTTOM)-1 |
mov ebx,(LEN_Y-BORDER_TOP-BORDER_BOTTOM-1)*LEN_X |
adr_5000: mov edi,edx |
mov ecx,LEN_X-BORDER_LEFT-BORDER_RIGHT+1;Wildwest's fix for bug |
;(was LEN_X-BORDER_LEFT-BORDER_RIGHT) |
repne scasb |
jz no_full_line |
lea esi,[edx-LEN_X] |
mov edi,edx |
mov ecx,ebx |
rep movsb |
sub edi,BORDER_RIGHT |
mov ecx,LEN_X-BORDER_LEFT-BORDER_RIGHT |
rep stosb |
add dword [score],50 |
jmp adr_5000 |
no_full_line: sub edx,LEN_X |
sub ebx,LEN_X |
jnz adr_5000 |
ret |
;-------------------------------------------------------------- |
random: mov eax,[generator] |
add eax,-43ab45b5h |
ror eax,1 |
xor eax,32c4324fh |
ror eax,1 |
mov [generator],eax |
; --- IVAN --- |
push ebx |
mov eax,26 |
mov ebx,9 |
int 0x40 |
pop ebx |
xor eax,0xdeadbeef |
add eax,[generator] |
; --- IVAN --- |
mov [generator],eax ; Halyavin |
ret |
;-------------------------------------------------------------- |
number_to_str: mov edi,end_number_str-1 |
mov ecx,9;size_of_number_str |
mov ebx,10 |
cld |
new_digit: xor edx,edx |
div ebx |
add dl,'0' |
mov [edi],dl |
dec edi |
loop new_digit |
ret |
;-------------------------------------------------------------- |
write_score: |
mov eax,[score] |
call number_to_str |
mov ebx,100*65536+100 ;clear box to write new score |
mov ecx,35*65536+15 |
mov edx,BACKGROUND |
mov eax,13 |
int 40h |
mov ebx,100*65536+35 ; draw info text with function 4 |
mov ecx,0xffff00 ; color |
mov edx,number_str |
mov esi,[size_of_number_str] |
mov eax,4 |
int 0x40 |
ret |
; DATA AREA |
include 'blocks.inc' |
;-------------------------------------------------------------- |
;DEFINITION BLOCKS |
;-------------------------------------------------------------- |
t_block_0: db 0,0,0,0 |
db 1,1,1,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd t_block_3 |
labelt: db 'TETRIS II' |
scoretext: db 'Score:' |
linestext: db 'Lines:' |
speedtext: db 'Speed:' |
leveltext: db 'Level:' |
startgame: db 'START' |
instr: db 'INSTRUCTIONS' |
hist: db 'HISTORY' |
quit: db 'EXIT' |
paused: db 'PAUSED' |
txt_end: |
t_block_1: db 0,1,0,0 |
db 1,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd t_block_0 |
history: |
db 'TETRIS for MENUET v2.0 ' |
db ' ' |
db ' ' |
db 'Originally made ' |
db ' by Paolo Minazzi ' |
db ' ' |
db 'Port & framed blocks ' |
db ' by Ville Turjanmaa ' |
db ' ' |
db 'RDTSC replaced ' |
db ' by quickcode ' |
db ' ' |
db 'New blocks & better random ' |
db ' by Ivan Poddubny ' |
db ' ' |
db 'Better control, logo, menu, pause ' |
db ' by Jeffrey Amelynck' |
t_block_2: db 0,1,0,0 |
db 1,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd t_block_1 |
db 'x <- END MARKER, DONT DELETE ' |
t_block_3 db 0,1,0,0 |
db 0,1,1,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd t_block_2 |
;-------------------------------------------------------------- |
i_block_0: db 0,1,0,0 |
db 0,1,0,0 |
db 0,1,0,0 |
db 0,1,0,0 |
dd i_block_1 |
instructions: |
db 'TETRIS for MENUET v2.0 ' |
db ' ' |
db 'Controls: ' |
db ' ' |
db 'Use left & right key to navigate ' |
db 'Use up key to turn the block ' |
db 'Use down key to make block fall ' |
db 'Use P to pause game ' |
db 'Use N to start a new game ' |
db 'Use ESC to go back to menu or exit' |
db 'You can also use the mouse to move' |
db 'the blocks, left button to let the' |
db 'blocks fall and right button to ' |
db 'rotate them ' |
db 'you can pause the game by pressing' |
db 'both mouse buttons ' |
db ' ' |
db 'DONT FORGET: move mouse out of the' |
db 'window if you want to use keyboard' |
i_block_1: db 0,0,0,0 |
db 1,1,1,1 |
db 0,0,0,0 |
db 0,0,0,0 |
dd i_block_0 |
;-------------------------------------------------------------- |
q_block_0: db 0,1,1,0 |
db 0,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd q_block_0 |
;-------------------------------------------------------------- |
s_block_0: |
db 0,0,0,0 |
db 0,1,1,0 |
db 1,1,0,0 |
db 0,0,0,0 |
dd s_block_1 |
db 'x <- END MARKER, DONT DELETE ' |
s_block_1: db 1,0,0,0 |
db 1,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd s_block_0 |
;-------------------------------------------------------------- |
l_block_0: db 0,0,0,0 |
db 1,1,1,0 |
db 1,0,0,0 |
db 0,0,0,0 |
dd l_block_3 |
I_END: |
l_block_1: db 1,1,0,0 |
db 0,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd l_block_0 |
l_block_2: db 0,0,1,0 |
db 1,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd l_block_1 |
l_block_3: db 0,1,0,0 |
db 0,1,0,0 |
db 0,1,1,0 |
db 0,0,0,0 |
dd l_block_2 |
;----------------------------------------------- |
g_block_0: |
db 0,1,0,0 |
db 0,1,0,0 |
db 1,1,0,0 |
db 0,0,0,0 |
dd g_block_1 |
g_block_1: |
db 0,0,0,0 |
db 1,1,1,0 |
db 0,0,1,0 |
db 0,0,0,0 |
dd g_block_2 |
g_block_2: |
db 0,1,1,0 |
db 0,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd g_block_3 |
g_block_3: |
db 1,0,0,0 |
db 1,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd g_block_0 |
;----------------------------------- |
k_block_0: |
db 0,0,0,0 |
db 1,1,0,0 |
db 0,1,1,0 |
db 0,0,0,0 |
dd k_block_1 |
k_block_1: |
db 0,1,0,0 |
db 1,1,0,0 |
db 1,0,0,0 |
db 0,0,0,0 |
dd k_block_0 |
;----------------------------------- |
color_table: dd 00000000h ;black 0 |
dd 00cccccch ;white 1 |
dd 00cc0000h ;red 2 |
dd 0000cc00h ;green 3 |
dd 000000cch ;blue 4 |
dd 00cccc00h ;yellow 5 |
dd 0000cccch ;cyan 6 |
dd 00cc00cch ;pink 7 |
block_table: |
dd t_block_0 ; t |
dd t_block_1 |
dd t_block_2 |
dd t_block_3 |
dd i_block_0 ; i |
dd i_block_1 |
dd i_block_0 |
dd i_block_1 |
dd q_block_0 ; q |
dd q_block_0 |
dd q_block_0 |
dd q_block_0 |
dd s_block_0 ; s |
dd s_block_1 |
dd s_block_0 |
dd s_block_1 |
dd l_block_0 ; l |
dd l_block_1 |
dd l_block_2 |
dd l_block_3 |
dd g_block_0 ; g |
dd g_block_1 |
dd g_block_2 |
dd g_block_3 |
dd k_block_0 ; k |
dd k_block_1 |
dd k_block_0 |
dd k_block_1 |
if lang eq ru |
labelt: |
db ' 1.6 - ' |
labellen: |
labe: |
db '' |
labelen: |
text: db '窨: ' |
game_finished: db ' ' |
size_of_game_finished: |
else |
labelt: |
db 'TETRIS 1.6 - ARROWS & SPACE' |
labellen: |
labe: |
db 'PAUSE' |
labelen: |
text: db 'Score: ' |
game_finished: db 'NEW GAME' |
size_of_game_finished: |
end if |
pauses dd 0 ;/// Wildwest |
parallel dd 1 |
score: dd 0 |
level: dd 0 |
speed: dd 0 |
lines: dd 0 |
TMP_0: dd 0 |
TMP_1: dd 0 |
generator: dd 0 |
237,17 → 876,10 |
current_block_y: dd 0 |
current_block_pointer: dd 0 |
current_block_color: db 0 |
next_block_pointer: dd 0 |
next_block_color: db 0 |
blabla dd 0 |
lastmousebutton dd 0 |
number_str: db 0,0,0,0,0,0,0,0,0 |
end_number_str: |
size_of_number_str dd 7 |
delay: dd 5 |
status: dd 0 ; 0=menu, 1=playing, 2=paused, 3=history , 4=instructions |
menu: dd 0 ; 0=start, 1=instructions, 2=history, 3=exit |
size_of_number_str dd 9 |
delay: db 40 |
table_tetris: |
table_tetris: rb 2048+55 |
IM_END: |
I_END: |
/programs/network/netsendc/trunk/netsendc.asm |
---|
16,12 → 16,13 |
org 0x0 |
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
db 'MENUET01' ; 8 byte id |
dd 1 ; header version |
dd START ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
dd 0x00000000 ; reserved=no extended header |
dd mem ; required amount of memory |
dd mem ; stack pointer |
dd 0, 0 ; param, icon |
include 'lang.inc' |
include 'macros.inc' |
37,37 → 38,29 |
mov [socketNum], eax |
red: |
call draw_window ; at first, draw the window |
still: |
mov eax,23 ; wait here for event |
mov ebx,1 |
mov eax,10 ; wait here for event |
int 0x40 |
cmp eax,1 ; redraw request ? |
dec eax |
jz red |
cmp eax,2 ; key in buffer ? |
jz key |
cmp eax,3 ; button in buffer ? |
jz button |
dec eax |
jnz button |
jmp still |
red: |
call draw_window |
jmp still |
key: |
mov eax,2 |
mov al,2 |
int 0x40 |
jmp still |
button: |
mov eax,17 |
mov al,17 |
int 0x40 |
cmp ah,1 ; button id=1 ? |
dec ah ; button id=1 ? |
jnz noclose |
mov eax, 53 |
mov ebx, 1 |
76,14 → 69,8 |
mov eax,-1 |
int 0x40 |
noclose: |
; it was not close button, so it must be send code button |
cmp ah,2 ; SEND CODE ? |
je send_xcode |
jmp still |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; SEND CODE TO REMOTE ;; |
92,17 → 79,11 |
send_xcode: |
mov esi,send_data ; header |
mov edi,I_END |
mov ecx,end_message-send_data |
cld |
rep movsb |
mov eax,53 ; SEND CODE TO REMOTE |
mov ebx,4 |
mov ecx,[socketNum] |
mov edx,end_message-send_data |
mov esi,I_END |
mov esi,send_data |
int 0x40 |
jmp still |
124,8 → 105,6 |
mov ebx,100*65536+250 ; [x start] *65536 + [x size] |
mov ecx,60*65536+150 ; [y start] *65536 + [y size] |
mov edx,0x03ffffff ; color of work area RRGGBB |
mov esi,0x80aabbcc ; color of grab bar RRGGBB,8->color gl |
mov edi,0x00aabbcc ; color of frames RRGGBB |
int 0x40 |
; WINDOW LABEL |
143,7 → 122,6 |
mov esi,0x667788 |
int 0x40 |
cld |
mov ebx,25*65536+50 ; draw info text with function 4 |
mov ecx,0x000000 |
mov edx,text |
152,7 → 130,7 |
mov eax,4 |
int 0x40 |
add ebx,16 |
add edx,40 |
add edx,esi |
cmp [edx],byte 'x' |
jnz newline |
165,7 → 143,7 |
; DATA AREA |
if lang eq ru |
text: |
db ' ®á« âì á®®¡é¥¨¥ ' |
db ' ' |
172,27 → 150,31 |
db ' ®ª «ìë© ¤à¥á : 192.168.0.1 ' |
db ' ¤ «ñë© ¤à¥á : 192.168.0.2 ' |
db '¥ªáâ ¨ ¤à¥á ¢ ª®æ¥ ¨á室¨ª ' |
db 'x <- END MARKER, DONT DELETE ' |
db 'x' ; <- END MARKER, DONT DELETE |
else |
text: |
db ' Send message ' |
db ' ' |
db ' Local address : 192.168.0.1 ' |
db ' Remote address : 192.168.0.2 ' |
db 'Text and address in end of source ' |
db 'x' ; <- END MARKER, DONT DELETE |
end if |
labeltext: db 'NetSend(Client)' ; |
lte: |
socketNum dd 0x0 |
remote_ip db 192,168,1,2 |
picture_position dd 0x0 |
send_data db 'ਢ¥â,íâ® â¥áâ!Hello,this is a test!' |
end_message: |
I_END: |
align 4 |
socketNum dd ? |
rb 32 ; this is for stack |
mem: |
/programs/network/netsends/trunk/netsends.asm |
---|
183,14 → 183,20 |
; DATA AREA |
if lang eq ru |
text: |
db ' ë© ¤à¥á : 192.168.0.2 ' |
db 'à®á«ã訢 ¥¬ë© ¯®àâ : 0x5000 ' |
db 'à¨á« ë¥ á®®¡é¥¨ï: ' |
db 'x <- END MARKER, DONT DELETE ' |
db 'x' ; <- END MARKER, DONT DELETE |
else |
text: |
db 'This address : 192.168.0.2 ' |
db 'Used port : 0x5000 ' |
db 'Received messages: ' |
db 'x' ; <- END MARKER, DONT DELETE |
end if |
labeltext: db 'NetSend(Server)' |
lte: |
198,10 → 204,3 |
I_END: |
/programs/other/archer/trunk/@RCHER.ASM |
---|
1,4 → 1,4 |
; @RCHER - DEflate unpacker v1.0 |
; @RCHER - Deflate unpacker v2.0 beta |
; |
; Written in pure assembler by Ivushkin Andrey aka Willow |
; |
8,15 → 8,17 |
; |
; Compile with FASM |
SYS equ meos |
PARAM_PTR equ png_image |
OUTBUF equ 4*1024*1024 |
png_imag = output+OUTBUF |
PARAM_PTR = os_work;png_image |
MEMINIT=next_code;output |
DUMPFILE equ '/hd/1/out.txt' |
SHOW_RBLOCK equ 0;1 |
SHOW_PNG_SEC equ 0;1 |
SHOW_METH equ 0;1 |
FILE_NUM equ 0 |
FILE_NUM equ 15;8 |
MEMORY equ 0x800000 |
BITS equ 16 |
28,7 → 30,6 |
SHOW_CHARS equ 0 |
BSIZE equ 512 |
INBUF equ BUFSIZE*BSIZE*2 |
OUTBUF equ 4*1024*1024 |
IGNORE_DIRS equ 0 |
MOVE_SLINE_LEV equ 8 |
40,6 → 41,9 |
IPC_MODE equ 100000b |
RAW_MODE equ 1000000b |
THREAD_YES equ 10000000b |
LIST_MODE equ 100000000b |
MEM_MODE equ 1000000000b |
FIND_MODE equ 10000000000b |
if SYS eq win |
format PE console |
57,8 → 61,8 |
dd 0x01 |
dd start |
dd I_END |
dd MEMORY |
dd MEMORY-2048 |
dd MEMINIT |
dd main_stack;MEMORY-2048 |
if PARAM_PTR eq param |
dd 0 |
else |
65,12 → 69,11 |
dd PARAM_PTR |
end if |
dd 0x0 |
include "lang.inc" |
if PARAM_PTR eq param |
param db 'RQ' |
db '000037' |
db '/hd/1/zip/png.zip',0 |
param db 'N' |
db '000015' |
db '/hd/1/zip/gz/fasm-1~1.tgz',0 |
end if |
;match =meos,SYS |
;{ |
77,14 → 80,17 |
include "macros.inc" |
; purge mov |
include "debug.inc" |
include 'dump.inc' |
;} |
end if |
language equ en |
include 'lang.inc' |
language equ lang |
if SYS eq win |
section '.text' code readable executable writeable |
end if |
include "arcmacro.inc" |
include "parser.inc" |
include "deflate.inc" |
107,6 → 113,12 |
mcall 40,10000101b |
; jmp again |
CmdLine |
cmdl: |
test [Flags],LIST_MODE |
jz red |
; Dump [lpath],[lpath_len],os_work |
; ud2 |
red: |
call draw_window |
mcall 12,2 |
134,12 → 146,15 |
mcall -1 |
.noquit: |
mcall 17 |
mcall 64,1,MEMINIT |
QueryFile |
and [FileNum],0 |
mov [FileNum],FILE_NUM |
test eax,eax |
jnz still |
end if |
again: |
; Dump Flags,4,os_work |
mov [fat_],fat |
Newline |
xor eax,eax |
; and [Flags],STAY_MODE |
153,6 → 168,11 |
Msg 14 |
jmp quit |
.sizeok2: |
call KillViewer |
xor eax,eax |
mov ecx,(child_stack-fat)/4 |
mov edi,fat |
rep stosd |
mov [filesize],ebx |
test [Flags],RAW_MODE |
jz .norawm |
213,13 → 233,37 |
jmp exit |
.sizeok1: |
if ~ SYS eq win |
call KillViewer |
end if |
Msg 39 |
Msg 39 ; unpacking PNG |
mov ecx,[unp_size] |
add ecx,output |
mov [png_],ecx |
mov eax,[PNG_info.Width] |
imul eax,[PNG_info.Height] |
lea eax,[eax+eax*2] |
add ecx,eax |
; dps 'Mem=' |
; dpd ecx |
mcall 64,1 |
test eax,eax |
jz .ok |
Msg 41 |
jmp exit |
.ok: |
mov edi,[outp] |
call Deflate.blkbegin |
jmp .defl_end |
.sizeok: |
mov ecx,[unp_size] |
dpd ecx |
add ecx,output |
; mov [png_],ecx |
mcall 64,1 |
test eax,eax |
jz .ok2 |
Msg 41 |
jmp exit |
.ok2: |
call Deflate ; <=========== |
.defl_end: |
test [bits],7 |
252,6 → 296,8 |
pop ecx esi |
jmp .skipAdler |
.skipCRC: |
; dps 'Out=' |
; dpd ecx |
call UAdler |
Msg 10 |
mov eax,[Adler32] |
283,6 → 329,9 |
else |
test [Flags],PNG_MODE |
jnz .nosave |
test [Flags],LIST_MODE |
jnz quit |
test [Flags],TAR_MODE |
jnz .nomsg |
Msg 37 |
289,9 → 338,11 |
.nomsg: |
mov [outfile.out],ebx |
mcall 58,outfile |
; dps 'Before Quit1' |
; ud2 |
test [Flags],TAR_MODE |
jnz .nosave |
call StartPad |
jz exit.pad |
; call StartPad |
.nosave: |
end if |
test [Flags],PNG_MODE |
300,7 → 351,7 |
mov edi,filters |
mov ecx,6 |
rep stosd |
mov edi,png_image |
mov edi,[png_] |
mov esi,output |
;// |
mov [outp],edi |
320,7 → 371,7 |
call RunViewer |
and [arc_base],0 |
and [Flags],STAY_MODE |
; dps 'Before Quit2' |
quit: |
QueryFile |
test eax,eax |
332,7 → 383,10 |
test [Flags],TAR_MODE |
jz .notar |
Msg 37 |
test [Flags],LIST_MODE |
jne quit |
mcall 58,outfile |
.pad: |
call StartPad |
.notar: |
Msg 12 |
352,16 → 406,19 |
else |
jz still |
end if |
mov ecx,dumpf_len |
mov esi,dumpfile |
mov edi,filename |
rep movsb |
call OpenFile |
test ebx,ebx |
jz again.sizebadq |
; Dump output,255,os_work |
; ud2 |
; mov ecx,dumpf_len |
; mov esi,dumpfile |
; mov edi,filename |
; rep movsb |
; call OpenFile |
; test ebx,ebx |
; jz again.sizebadq |
call TarParse |
mov ecx,[FileNum] |
call TarFindN |
; dpd [outfile.size] |
cmp [outfile.size],0 |
jz again.sizebadq |
mov ebx,esi |
/programs/other/archer/trunk/arcmacro.inc |
---|
177,6 → 177,7 |
' ',\ ;38 |
<'®¤£®â®¢ª ¨§®¡à ¦¥¨ï...',13,10>,\ ;39 |
<'ª ¦¨â¥ "R" ¤«ï ®¡à ¡®âª¨ áëàëå ¤ ëå. ⬥ .',13,10>,\ ;40 |
<'¥ å¢ â ¥â ¯ ¬ïâ¨! ⬥ .',13,10>,\ ; 41 |
' ',\ ; |
' ',\ ; |
' ',\ ; |
185,7 → 186,6 |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' <- ¥¨§¢¥áâë© ¬¥â®¤ ᦠâ¨ï',\ ;50 |
' <- § è¨ä஢ ',\ ;51 |
<'¥ ZIP à娢',13,10> ; 52 |
232,6 → 232,7 |
' ',\ ;38 |
<'Preparing bitmap...',13,10>,\ ;39 |
<'Specify "R" to force raw data. Abort.',13,10>,\ ;40 |
<'Not enough memory! Abort.',13,10>,\ ; |
' ',\ ; |
' ',\ ; |
' ',\ ; |
240,7 → 241,6 |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' <- unknown compression method',\ ;50 |
' <- encrypted',\ ;51 |
<'Not a ZIP archive',13,10> ; 52 |
/programs/other/archer/trunk/data.inc |
---|
84,6 → 84,11 |
Dheader rb 12 |
Dpassword rb PASSW_LEN |
png_ dd ? |
fat_ dd ? |
fat_fnum dd ? |
lpath dd ? |
lpath_len dd ? |
png_bpp dd ? |
sline_len dd ? |
IDATcount dd ? |
120,6 → 125,15 |
hclen db ? |
max_len dw ? |
fat: |
rb 4096;512 |
child_stack: |
rb 1024 |
main_stack: |
area: |
rb INBUF |
os_work rb 4*1024 |
bl_count rb BITS |
next_code rw BITS |
143,16 → 157,10 |
Distance rw 32 |
Dist_c rw 32 |
area: |
rb INBUF |
os_work rb 4*1024 |
output: |
rb OUTBUF |
;rb OUTBUF |
png_image: |
;png_image: |
if SYS eq win |
rb OUTBUF |
end if |
/programs/other/archer/trunk/debug.inc |
---|
73,10 → 73,16 |
@@: |
ret |
_debug_crlf db 13, 10, 0 |
macro newline |
{ |
dps <13,10> |
pushf |
pushad |
mov edx, _debug_crlf |
call debug_outstr |
popad |
popf |
} |
macro print message |
/programs/other/archer/trunk/deflate.inc |
---|
128,7 → 128,7 |
end if |
pusha |
xor eax,eax |
mov ecx,(area-bl_count) / 4 |
mov ecx,(output-bl_count) / 4 |
mov edi,bl_count |
rep stosd |
popa |
/programs/other/archer/trunk/dump.inc |
---|
0,0 → 1,55 |
; Include file for dumping user apps' memory through new debug BOARD |
; Max amount of bytes to be dumped |
IPC_BUF equ 160 |
; Dump macro parameters: |
; ptr - pointer to memory dumped |
; len - dump length |
; workarea - any work area for sysfunc 9 |
; run_new - if not empty, run BOARD unless it is running already |
macro Dump ptr, len, workarea,run_new |
{ |
local .exist,.lt |
pusha |
mov ebx,workarea |
call Board_seek |
if ~ run_new eq |
test edx,edx |
jne .exist |
mcall 19,Board_seek.board_fn,0 |
mov edx,eax |
mcall 5,20 |
end if |
.exist: |
mov esi,len |
cmp esi,IPC_BUF |
jbe .lt |
mov esi,IPC_BUF |
.lt: |
mcall 60,2,edx,ptr |
popa |
} |
if used Board_seek |
Board_seek: |
; ebx - prcinfo |
xor edx,edx |
mcall 9,,-1 |
mov ecx,eax |
mov esi,dword[.board_fn] |
.lp: |
mcall 9 |
cmp dword[ebx+10],esi |
; jne .no |
; cmp dword[ebx+42],399 |
je .ok |
.no: |
loop .lp |
ret |
.ok: |
mov edx,[ebx+30] |
ret |
.board_fn db 'BOARD ' |
end if |
/programs/other/archer/trunk/macros.inc |
---|
143,9 → 143,6 |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
177,7 → 174,7 |
macro mov arg1,arg2 |
{ |
if (arg1 in __regs) & (arg2 eqtype 0) |
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) |
if (arg2) = 0 |
xor arg1,arg1 |
else if (arg2) = 1 |
/programs/other/archer/trunk/parser.inc |
---|
22,12 → 22,86 |
rep movsb |
mov dword[edi],0x00a0d |
call DebugPrint |
; mcall 10 |
; mcall 2 |
popa |
call Add2Fat |
ret |
Add2Fat: |
; edx - ptr, ecx - len |
pusha |
test [Flags],LIST_MODE |
jz .ex |
mov ebp,8 |
mov edi,edx |
lea ebx,[edx+ecx] |
mov ecx,[lpath_len] |
cmp ecx,1 |
je .lbl |
mov esi,[lpath] |
repe cmpsb |
jne .full |
mov eax,[lpath_len] |
sub dword[esp+24],eax;path_len-path |
cmp edi,ebx |
je .full |
mov edx,edi |
.lbl: |
mov ecx,[esp+24] |
mov al,'/' |
repne scasb |
mov eax,[fat_] |
mov ecx,[esp+24] |
jne .nofol |
cmp edi,ebx |
jne .full |
lea ecx,[edi-1] |
sub ecx,edx |
or byte[eax+11],0x10 |
; sub edx,ecx |
.nofol: |
push [fat_fnum] |
pop dword[eax+12] |
mov edi,eax |
mov esi,edx |
.lp1: |
mov bl,[esi] |
lea edx,[eax+ebp] |
inc esi |
cmp bl,'.' |
jne .nodot |
lea edi,[eax+ebp] |
mov ebp,11 |
jmp .ll |
.nodot: |
cmp edi,edx |
jae .ll |
mov [edi],bl |
inc edi |
.ll: |
loop .lp1 |
mov ecx,11 |
dec eax |
.lp2: |
cmp byte[eax+ecx],0 |
jne .no0 |
mov byte[eax+ecx],' ' |
.no0: |
loop .lp2 |
cmp eax,child_stack-1 |
jae .full |
add [fat_],32 |
.full: |
inc [fat_fnum] |
.ex: |
popa |
ret |
;path db '/';'fasm/examples/elfexe/' |
;path_len: |
; Parse routines: |
; out: edx= 0 if all ok, 1 - central dir, 2-EOD |
; 50 - encrypted |
78,16 → 152,19 |
popa |
end if |
Newline |
; Dump fat,160,os_work |
ret |
ZipFindN: |
; ecx - file # |
Msg 33 |
or [Flags],FIND_MODE |
cmp ecx,[file_count] |
jae .err |
push ecx |
call ResetFile |
.nxt: |
call ZipCrawl |
cmp edx,51 |
je .ok2 |
111,6 → 188,7 |
add esi,eax |
mov edx,5 |
.ex: |
and [Flags],-1-FIND_MODE |
push edx |
Msg edx |
pop edx |
159,6 → 237,8 |
cmp byte[edx+ecx-1],'/' |
je .skipdp |
end if |
test [Flags],FIND_MODE |
jnz .skipdp |
call PrintFilename |
.skipdp: |
movzx ecx,word[esi+28] |
252,7 → 332,19 |
mov [PNG_info.Width],eax |
mov eax,[PNG_info.Height] |
bswap eax |
mov ebx,eax |
mov [PNG_info.Height],eax |
call scanline_calc |
; dps 'All=' |
cmp [PNG_info.Color_type],3 |
jne .nopal |
shl eax,3 |
inc eax |
.nopal: |
inc eax |
imul eax,ebx |
mov [unp_size],eax |
; dpd eax |
add esi,25 |
cmp byte[esi-5],0 |
rep_err e,52,29 |
423,7 → 515,8 |
ret |
TarParse: |
call ResetFile |
mov esi,output |
; call ResetFile |
.nxt: |
call TarCrawl |
; wait |
436,8 → 529,9 |
inc [file_count] |
.skipinc: |
add eax,ecx |
mov ebx,1 |
call FileSeek |
; mov ebx,1 |
add esi,eax |
; call FileSeek |
jmp .nxt |
TarFindN: |
447,7 → 541,8 |
cmp ecx,[file_count] |
jae .err |
push ecx |
call ResetFile |
mov esi,output |
; call ResetFile |
.nxt: |
call TarCrawl |
if IGNORE_DIRS eq 1 |
461,8 → 556,9 |
dec dword[esp] |
.seek: |
add eax,ecx |
mov ebx,1 |
call FileSeek |
; mov ebx,1 |
add esi,eax |
; call FileSeek |
jmp .nxt |
.err: |
mov edx,4 |
559,13 → 655,8 |
.err: |
ret |
; Created: May 31, 2005 |
FiltCall: |
dd PngFilter.nofilt,Filt_sub,Filt_up,Filt_av,Filt_paeth,PngFilter.nofilt |
PngFilter: |
; esi - filtered uncompressed image data |
; edi - destination |
mov cl,[PNG_info.Color_type] |
scanline_calc: |
movzx ecx,byte[PNG_info.Color_type] |
mov eax,1 |
cmp cl,3 |
je .palette |
594,6 → 685,15 |
jnz .noz2 |
inc eax |
.noz2: |
ret |
; Created: May 31, 2005 |
FiltCall: |
dd PngFilter.nofilt,Filt_sub,Filt_up,Filt_av,Filt_paeth,PngFilter.nofilt |
PngFilter: |
; esi - filtered uncompressed image data |
; edi - destination |
call scanline_calc |
mov [sline_len],eax ; scanline length |
push edi |
and [Flags],not 1 |
/programs/other/archer/trunk/sys.inc |
---|
105,7 → 105,7 |
else |
test [Flags],THREAD_YES |
jnz .ex |
mcall 51,1,thread,MEMORY |
mcall 51,1,thread,child_stack;MEMORY |
mov [child],eax |
end if |
.ex: |
191,7 → 191,7 |
mov ecx,[PNG_info.Width] |
shl ecx,16 |
add ecx,[PNG_info.Height] |
mcall 7,png_image,,10 shl 16+25 |
mcall 7,[png_],,10 shl 16+25 |
mcall 12,2 |
.still: |
mcall 10 |
208,6 → 208,7 |
jne .still |
.close: |
and [child],0 |
mcall 64,1,MEMINIT |
mcall -1 |
KillViewer: |
256,7 → 257,68 |
mov ecx,255 |
mov edi,filename |
rep movsb |
jmp again |
; test [Flags],LIST_MODE |
; jz again |
xor eax,eax |
mov edi,filename |
mov ecx,255 |
repne scasb |
cmp byte[edi-2],'/' |
je .slash |
mov byte[edi-1],'/' |
inc edi |
.slash: |
; Dump filename,255,os_work |
; ud2 |
mov ecx,edi |
; dec ecx |
mov edx,ecx |
mov dword[Finfo],13 |
; mov dword[Finfo.count],1 |
mov edi,filename+5 |
sub ecx,edi |
.lp: |
mov al,'/' |
repne scasb |
; jne .ex |
; dpd ecx |
and byte[edi-1],0 |
mcall 58,Finfo |
mov byte[edi-1],'/' |
test ebx,32 |
jz .lp |
test [Flags],LIST_MODE |
jne .listm |
and byte[edi-1],0 |
; Dump filename,255,os_work |
jmp .agg |
; ud2 |
.listm: |
lea esi,[edi-1+ecx] |
lea edi,[esi+1] |
std |
rep movsb |
and byte[edi],0 |
cld |
; dpd filename |
inc edi |
dpd edi |
cmp edx,edi |
jne .slash2 |
; cmp byte[edi],'/' |
; je .slash2 |
mov byte[edi],'/' |
inc edx |
.slash2: |
sub edx,edi |
mov [lpath],edi |
mov [lpath_len],edx |
dpd edx |
.agg: |
mov dword[Finfo],0 |
; ud2 |
jmp again;cmdl |
.yespar: |
cmp al,'N' |
jne .nonum |
300,6 → 362,10 |
call get_6ASCII_num |
jmp .fofs |
.noofs2: |
cmp al,'L' |
jne .nolist |
or [Flags],LIST_MODE |
.nolist: |
jmp .parse |
get_6ASCII_num: |
319,8 → 385,20 |
} |
StartPad: |
mcall 19,editorcmd,dumpfile |
; mcall 19,editorcmd,dumpfile |
pusha |
mov esi,[outfile.size] |
; dpd esi |
mov [par_fsize],esi |
mcall 19,editorcmd,editor_par |
mov ecx,eax |
mcall 5,20 |
mcall 60,2,,[outfile.out];output |
mcall 64,1,MEMINIT |
popa |
ret |
editorcmd db 'TINYPAD ' |
editor_par db '*' |
par_fsize dd ? |
end if |
/programs/system/board/trunk/board.asm |
---|
5,9 → 5,16 |
; |
; Compile with FASM for Menuet |
; |
LMARGIN equ (15+5) |
TMARGIN equ (35+5) |
HSPACE equ 16 |
VSPACE equ 12 |
IPC_BUF equ 160 |
DR_GRID equ 0;1 |
FL_KRNL equ 1 |
include 'lang.inc' |
include 'macros.inc' |
use32 |
org 0x0 |
15,18 → 22,20 |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd 0x2000 ; memory for app (4 Kb) |
dd 0x2000 ; esp |
dd i_end+0x2000 ; memory for app (4 Kb) |
dd i_end+0x2000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Icon |
include 'MACROS.INC' |
include 'debug.inc' |
purge newline |
MAXSTRINGS = 16 |
TMP = 80*(MAXSTRINGS+1) |
xpos dd 0x0 |
ypos dd 0 |
START: ; start of execution |
mcall 60,1,ipcbuff,IPC_BUF+20 |
mcall 40,1000111b |
mov [ipcbuff+4],8 |
mov ecx,1024 |
flush: |
mov eax,63 |
34,20 → 43,21 |
int 0x40 |
loop flush |
mov ecx, 80*(MAXSTRINGS+1) |
mov ecx, TMP |
xor eax, eax |
mov edi, text |
mov edi, [targ] |
rep stosb |
mov [tmp],'x' |
mov [tmp1],'x' |
mov [tmp2],'x' |
mov eax,14 |
int 0x40 |
and eax,0xffff0000 |
sub eax,400 shl 16 |
add eax,400 |
sub eax,399 shl 16 |
add eax,399 |
mov [xstart],eax |
red: |
call draw_window |
still: |
62,7 → 72,8 |
je key |
cmp eax,3 ; button in buffer ? |
je button |
cmp eax,7 |
je ipc |
mov eax,63 |
mov ebx,2 |
int 0x40 |
71,45 → 82,61 |
jne still |
new_data: |
mov ebp,[targ] |
.no4: |
cmp al,13 |
jne no13 |
mov [xpos],0 |
and dword[ebp-8],0 |
jmp new_check |
no13: |
cmp al,10 |
jne no10 |
inc [ypos] |
cmp [ypos],MAXSTRINGS |
jbe noypos |
mov [ypos],MAXSTRINGS |
mov esi,text+80 |
mov edi,text |
inc dword[ebp-4] |
cmp dword[ebp-4],MAXSTRINGS |
jbe .noypos |
mov dword[ebp-4],MAXSTRINGS |
lea esi,[ebp+80] |
mov edi,ebp |
mov ecx,80*(MAXSTRINGS) |
cld |
rep movsb |
mov esi,[ypos] |
mov esi,[ebp-4] |
imul esi,80 |
add esi,[xpos] |
add esi,text |
add esi,[ebp-8] |
add esi,ebp |
mov ecx,80 |
xor al,al |
rep stosb |
noypos: |
.noypos: |
mov [targ],text2 |
and [krnl_cnt],0 |
jmp new_check |
no10: |
cmp ebp,text1 |
je add2 |
mov ecx,[krnl_cnt] |
cmp al,[krnl_msg+ecx] |
jne .noknl |
inc [krnl_cnt] |
cmp [krnl_cnt],4 |
jne new_check |
mov [targ],text1 |
.noknl: |
mov ebp,[targ] |
jecxz .add |
push eax |
mov esi,krnl_msg |
.l1: |
lodsb |
call add_char |
loop .l1 |
pop eax |
.add: |
and [krnl_cnt],0 |
add2: |
call add_char |
mov esi,[ypos] |
imul esi,80 |
add esi,[xpos] |
mov [text+esi],al |
inc [xpos] |
cmp [xpos],80 |
jb xposok |
mov [xpos],79 |
xposok: |
new_check: |
mov eax,63 |
119,36 → 146,127 |
cmp ebx,1 |
je new_data |
cmp [vmode],2 |
je still |
call draw_window |
jmp still |
red: ; redraw |
call draw_window |
jmp still |
ipc: |
mov [vmode],2 |
mov eax,ipcbuff |
mov esi,[eax+8] |
mov byte[eax],1 |
push dword[eax+12] |
pop [dump_len] |
mcall 9,work,-1 |
mov ecx,eax |
.lp: |
mcall 9 |
cmp [ebx+30],esi |
je .ok |
loop .lp |
and [dump_len],0 |
jmp red |
.ok: |
mov [pid],esi |
lea esi,[ebx+10] |
mov edi,dump_title+10 |
mov ecx,12 |
rep movsb |
jmp red |
key: ; key |
mov eax,2 ; just read it and ignore |
int 0x40 |
cmp ah,' ' |
je button.no_krnl_flt |
cmp [vmode],2 |
jne still |
cmp ah,176 ;left |
jb still |
cmp ah,179 ;right |
ja still |
mov ecx,[offs] |
shr eax,8 |
sub eax,176 |
add ecx,[arrows+eax*4] |
shl ecx,12 |
shr cx,12 |
jmp button.check_sel |
.nol: |
jmp still |
arrows dd -1,16,-16,1 |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jne noclose |
jne .noclose |
mov eax,-1 ; close this program |
int 0x40 |
noclose: |
.noclose: |
shr eax,8 |
cmp eax,10 |
jb .nodump |
lea edi,[eax-10] |
mcall 37,1 |
sub eax,[edi*4+dump_cell_marg] |
sub eax,TMARGIN+VSPACE |
push eax |
and eax,0xffff |
xor edx,edx |
div word[edi*4+dump_cell_size+2] |
mov ecx,eax |
shl ecx,16 |
xor edx,edx |
pop eax |
shr eax,16 |
div word[edi*4+dump_cell_size] |
mov cx,ax |
.check_sel: |
mov eax,ecx |
shl ax,12 |
shr eax,12 |
inc eax |
cmp eax,[dump_len] |
ja still;.nosel |
mov dword[sel_byte],ecx |
dec eax |
mov [offs],eax |
jmp red |
.nodump: |
cmp eax,2 |
jne .no_krnl_flt |
xor [flag],FL_KRNL |
jmp still |
.no_krnl_flt: |
mov [ipcbuff+4],8 |
and byte[ipcbuff],0 |
inc [vmode] |
cmp [vmode],3 |
jb .vmok |
and [vmode],0 |
.vmok: |
jmp red |
add_char: |
push esi |
mov esi,[ebp-4] |
imul esi,80 |
add esi,[ebp-8] |
mov [ebp+esi],al |
inc dword[ebp-8] |
cmp dword[ebp-8],80 |
jb .ok |
mov dword[ebp-8],79 |
.ok: |
pop esi |
ret |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
170,7 → 288,7 |
mov eax,0 ; function 0 : define and draw window |
; mov ebx,50*65536+400 ; [x start] *65536 + [x size] |
mov ebx,[xstart] |
mov ecx,MAXSTRINGS*10+40 ; [y start] *65536 + [y size] |
mov ecx,MAXSTRINGS*10+45 ; [y start] *65536 + [y size] |
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl |
or edx,0x03000000 |
int 0x40 |
184,9 → 302,24 |
mov esi,header.len ; text length |
int 0x40 |
mov ecx,4 |
mov esi,[sc.work] |
mov ebx,316 shl 16+5*6 |
mov edx,3;+1 shl 30 |
mcall 8,,<5,12> |
mov edx,[vmode] |
lea edx,[edx*4+duk] |
mcall 4,<320,8>,,,4 |
cmp [vmode],2 |
je no_mdbg |
mov ebx,15*65536+33 ; draw info text with function 4 |
mov ecx,[sc.work_text] |
mov edx,text |
mov edx,text1 |
cmp [vmode],0 |
je .kern |
mov edx,text2 |
.kern: |
mov esi,80 |
newline: |
mov eax,4 |
195,7 → 328,18 |
add edx,80 |
cmp [edx],byte 'x' |
jne newline |
jmp enddraw |
no_mdbg: |
if DUMP_TEST eq 1 |
mov esi,0 |
mov [dump_len],100;IPC_BUF |
else |
mov esi,ipcbuff+16 |
end if |
mov ecx,[dump_len] |
call dump_btn |
call draw_dump |
enddraw: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
202,9 → 346,181 |
ret |
if DR_GRID eq 1 |
draw_grid: |
mov ecx,11 |
mov edi,(TMARGIN+VSPACE)shl 16+TMARGIN+VSPACE |
.l1: |
push ecx |
mov ebx,LMARGIN shl 16+LMARGIN+16*HSPACE |
mcall 38,,edi,0 |
add edi,VSPACE shl 16+VSPACE |
pop ecx |
loop .l1 |
mov ecx,17 |
mov edi,(TMARGIN+VSPACE)shl 16+TMARGIN+VSPACE*10 |
mov ebx,LMARGIN shl 16+LMARGIN |
.l2: |
push ecx |
mcall 38,,edi,0 |
add ebx,HSPACE shl 16+HSPACE |
pop ecx |
loop .l2 |
ret |
end if |
draw_numbers: |
mcall 4,(LMARGIN+2) shl 16+180,0,numb,numb_len-numb |
mov eax,dword[sel_byte] |
shl ax,12 |
shr eax,12 |
mov edi,eax |
if ~ DUMP_TEST eq 1 |
add edi,ipcbuff+16 |
end if |
mov edx,(LMARGIN+2+6*6)shl 16+180 |
mov ebx,0x30000 |
movzx ecx,byte[edi] |
mcall 47,,,,0x4e00e7 |
add ebx,0x20000 |
add edx,(6*10)shl 16 |
movzx ecx,word[edi] |
mcall |
add ebx,0x50000 |
add edx,(6*13)shl 16 |
mov ecx,[edi] |
mcall |
mov ebx,0x80100 |
add edx,(6*19)shl 16 |
mcall |
.ex: |
ret |
draw_dump: |
; esi - data ptr, ecx - length |
jecxz draw_numbers.ex |
pusha |
call draw_numbers |
mcall 4,(LMARGIN+2) shl 16+27,0,dump_title,dump_t_len-dump_title |
mcall 47,0x30101,ipcbuff+8,(LMARGIN+2+6*29)shl 16+27 |
add edx,(6*27) shl 16 |
mov ecx,offs |
mcall |
sub edx,(5*6)shl 16 |
mcall ,0x30001 |
mov ecx,16 |
mov edi,HSPACE shl 16 |
mov ebx,(LMARGIN+5)shl 16+42 |
call draw_marks |
mov ecx,[esp+24] |
dec ecx |
shr ecx,4 |
inc ecx |
mov ebx,(LMARGIN-10)shl 16+TMARGIN+2+VSPACE |
mov edi,VSPACE |
call draw_marks |
popa |
mov edx,TMARGIN+2 |
mov edi,ecx |
.lp: |
add edx,(LMARGIN+2) shl 16+VSPACE |
mov ecx,16 |
cmp edi,ecx |
jae .less |
mov ecx,edi |
.less: |
sub edi,ecx |
push esi ecx |
mov ebx,0x20100 |
.lp1: |
push ecx esi |
movzx ecx,byte[esi] |
mcall 47,,,,0 |
add edx,HSPACE shl 16 |
pop esi ecx |
inc esi |
loop .lp1 |
pusha |
mov ebx,edx |
and ebx,0xffff |
add ebx,(LMARGIN+16*HSPACE+15)shl 16 |
mov edx,[esp+36] |
mov esi,[esp+32] |
mcall 4,,0 |
popa |
add esp,8 |
and edx,0xffff |
test edi,edi |
jnz .lp |
.ex: |
ret |
draw_marks: |
; ebx -xy, edi-addition, ecx -cycles |
pusha |
mov edx,__hexdigits |
mov eax,4 |
mov esi,1 |
.tt: |
push ecx |
mcall ,,0xffffff |
add ebx,edi |
inc edx |
pop ecx |
loop .tt |
popa |
ret |
dump_btn: ; ecx-length |
jecxz draw_dump.ex |
pusha |
test ecx,0xffff |
je .even |
add ecx,16 |
.even: |
shr ecx,4 |
imul ecx,VSPACE |
add ecx,(TMARGIN+VSPACE)shl 16-5 |
mcall 8,LMARGIN shl 16+16*HSPACE-5,,10+3 shl 29,[sc.work] |
inc edx |
mcall ,(LMARGIN+16*HSPACE+15)shl 16+6*16 |
mov edx,0xff0000 |
mov esi,dump_cell_size |
xor eax,eax |
movzx ebx,[sel_byte] |
lodsw |
imul bx,ax |
shl ebx,16 |
lea ebx,[ebx+eax+LMARGIN shl 16] |
movzx ecx,[sel_byte+2] |
lodsw |
imul cx,ax |
shl ecx,16 |
lea ecx,[ecx+eax+(TMARGIN+VSPACE) shl 16] |
mcall 13 |
movzx ebx,[sel_byte] |
lodsw |
imul bx,ax |
shl ebx,16 |
lea ebx,[ebx+eax+(LMARGIN+16*HSPACE+15)shl 16] |
mcall 13 |
popa |
.ex: |
ret |
krnl_msg db 'K : ' |
duk db 'KernUserDump' |
numb db 'Byte: Word: Dword: Hex:' |
numb_len: |
dump_title db 'Dump from (pid= h) Offset: ( h)' |
dump_t_len: |
; DATA AREA |
dump_cell_marg dd LMARGIN shl 16,(LMARGIN+16*HSPACE+15)shl 16 |
dump_cell_size dw HSPACE,VSPACE,6,VSPACE |
; 11,11 > 0,-1 |
; 5,11 > 0,-1 |
if lang eq ru |
header: |
db ' ' |
214,8 → 530,27 |
db 'GENERAL DEBUG & MESSAGE BOARD' |
.len = $ - header |
end if |
krnl_cnt dd 0 |
vmode dd 0 |
targ dd text2 |
I_END: |
text rb 80*(MAXSTRINGS+1) |
tmp db ? |
offs dd ? |
flag rb 1 |
ipcbuff rb IPC_BUF+20 |
rd 2 |
; x1pos dd ? |
; y1pos dd ? |
text1 rb 80*(MAXSTRINGS+1) |
tmp1 db ? |
rd 2 |
; x2pos dd ? |
; y2pos dd ? |
text2 rb 80*(MAXSTRINGS+1) |
tmp2 db ? |
work rb 4096 |
sel_byte dw ?,? |
pid dd ? |
xstart dd ? |
sc system_colors |
dump_len dd ? |
sc system_colors |
i_end: |
/programs/system/panel/trunk/@PANEL.ASM |
---|
1982,7 → 1982,7 |
end_name db '/RD/1/END',0 |
menu_name db '/RD/1/MENU',0 |
calendar_name db '/RD/1/CALENDAR',0 |
sysmeter_name db '/RD/1/SYSMETER',0 |
sysmeter_name db '/RD/1/GMON',0 |
dat_fileinfo: |
dd 0 |
/programs/system/pic4/trunk/pic4.asm |
---|
107,29 → 107,6 |
jmp bg2 |
set_default_colours: |
pusha |
mov eax,6 ; load default color map |
mov ebx,defcol |
mov ecx,0 |
mov edx,-1 |
mov esi,0x8000 |
int 0x40 |
mov eax,48 ; set default color map |
mov ebx,2 |
mov ecx,0x8000 |
mov edx,10*4 |
int 0x40 |
popa |
ret |
defcol db 'DEFAULT.DTP' |
check_parameters: |
cmp [I_Param],dword 'BOOT' |
137,7 → 114,6 |
ret |
@@: |
call set_default_colours |
call load_texture |
mov eax,15 |
148,7 → 124,8 |
mov eax,15 |
mov ebx,5 |
mov ecx,0x40000+1 |
mov ecx,0x40000 ; <<< 0x40000 for blue, 0x40000+1 for red, |
; <<< 0x40000+2 for green background at boot |
mov edx,0 |
mov esi,256*3*256 |
int 0x40 |
308,7 → 285,7 |
ylup: |
mov ebx,0 |
call precalcbar |
; call precalcbar |
xlup: |
push edi |
342,10 → 319,10 |
mov eax,esi ; now evaluate color... |
cmp eax,255*24 |
jbe ok2 |
; cmp eax,255*24 |
; jbe ok2 |
; imul eax,12 |
ok2: |
; ok2: |
mov edi,24 ; 50 = max shaded distance |
idiv edi |
376,21 → 353,21 |
nowrap: |
ret |
precalcbar: |
pusha |
mov eax,1 |
mov ebx,ecx |
add ebx,18 |
mov ecx,44 |
mov edx,0x00000060 |
bar: |
add ecx,2 |
add edx,0x00020100 |
;precalcbar: |
; pusha |
; mov eax,1 |
; mov ebx,ecx |
; add ebx,18 |
; mov ecx,44 |
; mov edx,0x00000060 |
; bar: |
; add ecx,2 |
; add edx,0x00020100 |
; int 0x40 |
cmp ecx,298 |
jb bar |
popa |
ret |
; cmp ecx,298 |
; jb bar |
; popa |
; ret |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ********* |
517,12 → 494,7 |
mov ecx,(y_add2+40)*65536+14 ; button start y & size |
newcb: |
push edx |
sub edx,14 |
shl edx,2 |
add edx,colors |
mov esi,[edx] |
pop edx |
mov esi,[(edx-14)*4+colors] |
mov eax,8 |
int 0x40 |
/programs/system/vrr/trunk/vrr.asm |
---|
19,7 → 19,6 |
dd 0x4ff0 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Icon |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
204,7 → 203,7 |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+400 ; [x start] *65536 + [x size] |
mov ecx,100*65536+200 ; [y start] *65536 + [y size] |
mov edx,0x030020C0;0x00000040 ; color of work area RRGGBB,8->color glide |
mov edx,0x020020C0;0x00000040 ; color of work area RRGGBB,8->color glide |
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color glide |
mov edi,0x00ffffff ; color of frames RRGGBB |
int 0x40 |
212,6 → 211,13 |
; WINDOW LABEL |
call print_my_title |
; CLOSE BUTTON |
mov eax,8 ; function 8 : define and draw button |
mov ebx,(400-19)*65536+12 ; [x start] *65536 + [x size] |
mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
mov edx,1 ; button id |
mov esi,0x5599cc ; button color RRGGBB |
int 0x40 |
; BUTTONS |
xor eax,eax |
1016,7 → 1022,7 |
warning_loop: |
mov eax,5 |
mov ebx,10 |
mov ebx,13 |
int 0x40 |
mov eax,11 |
int 40h |