Function 70.1 now supports ANSI+UNICODE. Flag CF in function 49 corrected.
git-svn-id: svn://kolibrios.org@78 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -31,13 +31,10 @@ calculatefatchain:
|
|||||||
and eax,0x0fffffff ;2 ok
|
and eax,0x0fffffff ;2 ok
|
||||||
shr ax,4 ;1 ok
|
shr ax,4 ;1 ok
|
||||||
mov dword [edi],eax
|
mov dword [edi],eax
|
||||||
add edi,4
|
mov dword [edi+4],ebx
|
||||||
mov dword [edi],ebx
|
mov dword [edi+8],ecx
|
||||||
add edi,4
|
mov dword [edi+12],edx
|
||||||
mov dword [edi],ecx
|
add edi,16
|
||||||
add edi,4
|
|
||||||
mov dword [edi],edx
|
|
||||||
add edi,4
|
|
||||||
add esi,12
|
add esi,12
|
||||||
|
|
||||||
cmp edi,0x280000+2856*2 ;2849 clusters
|
cmp edi,0x280000+2856*2 ;2849 clusters
|
||||||
@@ -64,9 +61,8 @@ restorefatchain: ; restore fat chain
|
|||||||
shrd eax,ebx,8
|
shrd eax,ebx,8
|
||||||
shr ebx,8
|
shr ebx,8
|
||||||
mov dword [edi],eax
|
mov dword [edi],eax
|
||||||
add edi,4
|
mov word [edi+4],bx
|
||||||
mov word [edi],bx
|
add edi,6
|
||||||
add edi,2
|
|
||||||
add esi,8
|
add esi,8
|
||||||
|
|
||||||
cmp edi,0x100000+512+4278 ;4274 bytes - all used FAT
|
cmp edi,0x100000+512+4278 ;4274 bytes - all used FAT
|
||||||
@@ -100,8 +96,8 @@ ramdisk_free_space:
|
|||||||
repne scasw
|
repne scasw
|
||||||
jnz rdfs2 ;if last cluster not 0
|
jnz rdfs2 ;if last cluster not 0
|
||||||
inc ebx
|
inc ebx
|
||||||
jcxz rdfs2 ;if last cluster=0
|
test ecx, ecx
|
||||||
jmp rdfs1 ;if not last
|
jnz rdfs1
|
||||||
rdfs2:
|
rdfs2:
|
||||||
shl ebx,9 ;free clusters*512
|
shl ebx,9 ;free clusters*512
|
||||||
mov edi,ebx
|
mov edi,ebx
|
||||||
@@ -438,15 +434,11 @@ mov [edi+22],ax ; time
|
|||||||
jbe flnsa
|
jbe flnsa
|
||||||
sub eax,512
|
sub eax,512
|
||||||
mov [esp+12],eax
|
mov [esp+12],eax
|
||||||
mov eax,[esp+16]
|
add dword [esp+16], 512
|
||||||
add eax,512
|
|
||||||
mov [esp+16],eax
|
|
||||||
jmp frnewds
|
jmp frnewds
|
||||||
|
|
||||||
flnsa:
|
flnsa:
|
||||||
dec edi
|
mov [edi-2],word 4095 ; mark end of file - last cluster
|
||||||
dec edi
|
|
||||||
mov [edi],word 4095 ; mark end of file - last cluster
|
|
||||||
|
|
||||||
frnoreadds:
|
frnoreadds:
|
||||||
|
|
||||||
@@ -644,7 +636,7 @@ fat_get_name:
|
|||||||
push ecx
|
push ecx
|
||||||
mov ecx, 8
|
mov ecx, 8
|
||||||
push edi ebp ecx
|
push edi ebp ecx
|
||||||
cmp byte [ebp-4], 0
|
test byte [ebp-4], 1
|
||||||
jnz .unicode_short
|
jnz .unicode_short
|
||||||
@@:
|
@@:
|
||||||
mov al, [edi]
|
mov al, [edi]
|
||||||
@@ -763,7 +755,7 @@ fat_get_name:
|
|||||||
ret
|
ret
|
||||||
@@:
|
@@:
|
||||||
; if this is first entry:
|
; if this is first entry:
|
||||||
cmp byte [ebp-4], 0
|
test byte [ebp-4], 1
|
||||||
jnz .ret
|
jnz .ret
|
||||||
; buffer at ebp contains UNICODE name, convert it to ANSI
|
; buffer at ebp contains UNICODE name, convert it to ANSI
|
||||||
push esi edi
|
push esi edi
|
||||||
@@ -872,13 +864,20 @@ fat_entry_to_bdfe:
|
|||||||
push ecx edi
|
push ecx edi
|
||||||
lea edi, [esi+40]
|
lea edi, [esi+40]
|
||||||
mov esi, ebp
|
mov esi, ebp
|
||||||
mov ecx, 259/2
|
test byte [esi-4], 1
|
||||||
|
jz .ansi
|
||||||
|
mov ecx, 260/2
|
||||||
rep movsd
|
rep movsd
|
||||||
movsw
|
mov [edi-2], ax
|
||||||
stosw
|
@@:
|
||||||
mov esi, edi
|
mov esi, edi
|
||||||
pop edi ecx
|
pop edi ecx
|
||||||
ret
|
ret
|
||||||
|
.ansi:
|
||||||
|
mov ecx, 264/4
|
||||||
|
rep movsd
|
||||||
|
mov [edi-1], al
|
||||||
|
jmp @b
|
||||||
|
|
||||||
rd_find_lfn:
|
rd_find_lfn:
|
||||||
; in: esi->name
|
; in: esi->name
|
||||||
@@ -1013,7 +1012,9 @@ fs_RamdiskRead:
|
|||||||
; fs_RamdiskReadFolder - LFN variant for reading sys floppy folder
|
; fs_RamdiskReadFolder - LFN variant for reading sys floppy folder
|
||||||
;
|
;
|
||||||
; esi points to filename; only root is folder on ramdisk
|
; esi points to filename; only root is folder on ramdisk
|
||||||
; ebx pointer to 32-bit number = first wanted block
|
; ebx pointer to structure 32-bit number = first wanted block
|
||||||
|
; & flags (bitfields)
|
||||||
|
; flags: bit 0: 0=ANSI names, 1=UNICODE names
|
||||||
; ecx number of blocks to read, 0+
|
; ecx number of blocks to read, 0+
|
||||||
; edx mem location to return data
|
; edx mem location to return data
|
||||||
;
|
;
|
||||||
@@ -1022,7 +1023,6 @@ fs_RamdiskRead:
|
|||||||
;
|
;
|
||||||
;--------------------------------------------------------------
|
;--------------------------------------------------------------
|
||||||
fs_RamdiskReadFolder:
|
fs_RamdiskReadFolder:
|
||||||
mov ebx, [ebx]
|
|
||||||
cmp byte [esi], 0
|
cmp byte [esi], 0
|
||||||
jz @f
|
jz @f
|
||||||
; ramdisk doesn't support folders
|
; ramdisk doesn't support folders
|
||||||
@@ -1042,7 +1042,8 @@ fs_RamdiskReadFolder:
|
|||||||
push ebp
|
push ebp
|
||||||
sub esp, 262*2 ; allocate space for LFN
|
sub esp, 262*2 ; allocate space for LFN
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
push 1 ; for fat_get_name: read UNICODE name
|
push dword [ebx+4] ; for fat_get_name: read ANSI/UNICODE name
|
||||||
|
mov ebx, [ebx]
|
||||||
; read root
|
; read root
|
||||||
mov esi, edi ; esi points to block of data of folder entry (BDFE)
|
mov esi, edi ; esi points to block of data of folder entry (BDFE)
|
||||||
mov edi, 0x100000+512*19
|
mov edi, 0x100000+512*19
|
||||||
|
@@ -2235,6 +2235,27 @@ dword-
|
|||||||
* <20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᪨<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨, ᮧ<><E1AEA7><EFBFBD> <>
|
* <20><><EFBFBD>짮<EFBFBD><ECA7AE>⥫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᪨<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨, ᮧ<><E1AEA7><EFBFBD> <>
|
||||||
default.skn, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨ <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> desktop.
|
default.skn, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨ <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> desktop.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
============ <20>㭪<EFBFBD><E3ADAA><EFBFBD> 49 - Advanced Power Management (APM). ===========
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
* eax = 49 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||||
|
* dx = <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 APM (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ax <20> ᯥ<><E1AFA5>䨪<EFBFBD>樨)
|
||||||
|
* bx, cx = <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> <20>㭪樨 APM
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||||
|
* 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> ax, bx, cx, dx, si, di <20> 䫠<> CF
|
||||||
|
<20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ᮮ⢥<E1AEAE><E2A2A5>⢨<EFBFBD> <20><> ᯥ<><E1AFA5>䨪<EFBFBD>樥<EFBFBD> APM
|
||||||
|
* <20><><EFBFBD><EFBFBD>訥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD> eax, ebx, ecx,
|
||||||
|
edx, esi, edi ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> APM 1.2 <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20> <20><><EFBFBD>㬥<EFBFBD><E3ACA5><EFBFBD>
|
||||||
|
"Advanced Power Management (APM) BIOS Specification"
|
||||||
|
(Revision 1.2), <20><><EFBFBD><EFBFBD>㯭<EFBFBD><E3AFAD> <20><>
|
||||||
|
http://www.microsoft.com/whdc/archive/amp_12.mspx;
|
||||||
|
<20><EFBFBD> ⮣<>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD>祭<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Interrupt List by Ralf Brown
|
||||||
|
(http://www.pobox.com/~ralf/files.html,
|
||||||
|
ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/).
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
================= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 50 - <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. =================
|
================= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 50 - <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. =================
|
||||||
======================================================================
|
======================================================================
|
||||||
@@ -4077,7 +4098,11 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
<EFBFBD><EFBFBD>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ଠ樮<E0ACA0><E6A8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
<EFBFBD><EFBFBD>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ଠ樮<E0ACA0><E6A8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
* +0: dword: 1 = <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
* +0: dword: 1 = <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||||
* +4: dword: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB><ECADAE> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0)
|
* +4: dword: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB><ECADAE> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0)
|
||||||
* +8: dword: 0 (<28><>१<EFBFBD>ࢨ<EFBFBD><EFBFBD><EFBFBD>)
|
* +8: dword: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䫠<EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
* <20><><EFBFBD> 0 (<28><>᪠ 1): <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ଠ<EFBFBD><E0ACA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>,
|
||||||
|
0=ANSI, 1=UNICODE
|
||||||
|
* <20><><EFBFBD>稥 <20><><EFBFBD><EFBFBD> <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0
|
||||||
|
<20><><EFBFBD> <20><><EFBFBD><EFBFBD>饩 ᮢ<><E1AEA2><EFBFBD>⨬<EFBFBD><E2A8AC><EFBFBD><EFBFBD>
|
||||||
* +12 = +0xC: dword: <>쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
* +12 = +0xC: dword: <>쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
* +16 = +0x10: dword: 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20>㤠 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᠭ<EFBFBD>
|
* +16 = +0x10: dword: 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20>㤠 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᠭ<EFBFBD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32 + [+12]*560 <20><><EFBFBD><EFBFBD>
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32 + [+12]*560 <20><><EFBFBD><EFBFBD>
|
||||||
@@ -4114,7 +4139,8 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>⮬<EFBFBD><E2AEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AAAE> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD>
|
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>⮬<EFBFBD><E2AEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1AAAE> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD>
|
||||||
backup-<2D><>娢<EFBFBD><E5A8A2>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>筮 <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
backup-<2D><>娢<EFBFBD><E5A8A2>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>筮 <20><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
(<28><> <20> Kolibri, <20>ࠢ<EFBFBD><E0A0A2>)
|
(<28><> <20> Kolibri, <20>ࠢ<EFBFBD><E0A0A2>)
|
||||||
* +4: byte: ⨯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>: (<28><><EFBFBD> ⥪<>饩 ॠ<><E0A5A0><EFBFBD><EFBFBD>樨 <20>ᥣ<EFBFBD><E1A5A3> 1)
|
* +4: byte: ⨯ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
(ᮢ<><E1AEA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>⮬ 0 䫠<><E4ABA0><EFBFBD> <20><><EFBFBD><EFBFBD>ଠ樮<E0ACA0><E6A8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
* 0 = ASCII = 1-<2D><><EFBFBD>⭮<EFBFBD> <20>।<EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
* 0 = ASCII = 1-<2D><><EFBFBD>⭮<EFBFBD> <20>।<EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
||||||
* 1 = UNICODE = 2-<2D><><EFBFBD>⭮<EFBFBD> <20>।<EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
* 1 = UNICODE = 2-<2D><><EFBFBD>⭮<EFBFBD> <20>।<EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
||||||
* +5: 3*byte: <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD> (<28>㫨)
|
* +5: 3*byte: <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD> (<28>㫨)
|
||||||
@@ -4142,11 +4168,12 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
* +2: word: <20><><EFBFBD>
|
* +2: word: <20><><EFBFBD>
|
||||||
* <20><><EFBFBD>ਬ<EFBFBD><E0A8AC>, 25.11.1979 <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD> (<28> hex) 19 0B BB 07
|
* <20><><EFBFBD>ਬ<EFBFBD><E0A8AC>, 25.11.1979 <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD> (<28> hex) 19 0B BB 07
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॠ<><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20> <20><>ଠ<EFBFBD><E0ACA0> UNICODE.
|
|
||||||
* <20> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> ASCII, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD>
|
* <20> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> ASCII, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD>
|
||||||
304 <20><><EFBFBD><EFBFBD><EFBFBD>, <20> <20> UNICODE - 560 <20><><EFBFBD><EFBFBD>. <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD>
|
304 <20><><EFBFBD><EFBFBD><EFBFBD>, <20> <20> UNICODE - 560 <20><><EFBFBD><EFBFBD>. <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD>
|
||||||
<20><> 楫<><E6A5AB> <20><><EFBFBD>⭮<EFBFBD> 16 <20><><EFBFBD><EFBFBD>
|
<20><> 楫<><E6A5AB> <20><><EFBFBD>⭮<EFBFBD> 16 <20><><EFBFBD><EFBFBD>
|
||||||
(<28><><EFBFBD> <20>७<E1AAAE><E0A5AD> <20><>ࠡ<EFBFBD>⪨ <20> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CPU).
|
(<28><><EFBFBD> <20>७<E1AAAE><E0A5AD> <20><>ࠡ<EFBFBD>⪨ <20> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CPU).
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20>㫥<EFBFBD><E3ABA5><EFBFBD> (ASCIIZ-<2D><>ப<EFBFBD>). <20><><EFBFBD>쭥<EFBFBD>訥
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮤ<>ঠ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
* <20> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>稫<EFBFBD><E7A8AB><EFBFBD> ࠭<><E0A0AD><EFBFBD>, 祬 <20>뫮 <20><><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD>
|
* <20> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>稫<EFBFBD><E7A8AB><EFBFBD> ࠭<><E0A0AD><EFBFBD>, 祬 <20>뫮 <20><><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD>
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮, <20><> <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>⠥<EFBFBD>, <>쪮 ᬮ<><E1ACAE><EFBFBD>,
|
<20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮, <20><> <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>⠥<EFBFBD>, <>쪮 ᬮ<><E1ACAE><EFBFBD>,
|
||||||
<20><> 祣<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eax=6 (EOF).
|
<20><> 祣<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eax=6 (EOF).
|
||||||
|
@@ -55,7 +55,6 @@ floppy_free_space:
|
|||||||
rdfs1_1:
|
rdfs1_1:
|
||||||
mov ebx,[eax]
|
mov ebx,[eax]
|
||||||
and ebx,4095
|
and ebx,4095
|
||||||
cmp ebx,0
|
|
||||||
jne rdfs2_1
|
jne rdfs2_1
|
||||||
add edi,512
|
add edi,512
|
||||||
rdfs2_1:
|
rdfs2_1:
|
||||||
@@ -1268,7 +1267,9 @@ fs_FloppyRead:
|
|||||||
; fs_FloppyReadFolder - LFN variant for reading floppy folders
|
; fs_FloppyReadFolder - LFN variant for reading floppy folders
|
||||||
;
|
;
|
||||||
; esi points to filename
|
; esi points to filename
|
||||||
; ebx pointer to 32-bit number = first wanted block, 0+
|
; ebx pointer to structure: 32-bit number = first wanted block, 0+
|
||||||
|
; & flags (bitfields)
|
||||||
|
; flags: bit 0: 0=ANSI names, 1=UNICODE names
|
||||||
; ecx number of blocks to read, 0+
|
; ecx number of blocks to read, 0+
|
||||||
; edx mem location to return data
|
; edx mem location to return data
|
||||||
;
|
;
|
||||||
@@ -1278,7 +1279,6 @@ fs_FloppyRead:
|
|||||||
;--------------------------------------------------------------
|
;--------------------------------------------------------------
|
||||||
fs_FloppyReadFolder:
|
fs_FloppyReadFolder:
|
||||||
call read_flp_fat
|
call read_flp_fat
|
||||||
mov ebx, [ebx]
|
|
||||||
push edi
|
push edi
|
||||||
cmp byte [esi], 0
|
cmp byte [esi], 0
|
||||||
jz .root
|
jz .root
|
||||||
@@ -1307,7 +1307,8 @@ fs_FloppyReadFolder:
|
|||||||
push ecx ebp
|
push ecx ebp
|
||||||
sub esp, 262*2 ; reserve space for LFN
|
sub esp, 262*2 ; reserve space for LFN
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
push 1 ; for fat_get_name: read UNICODE names
|
push dword [ebx+4] ; for fat_get_name: read ANSI/UNICODE names
|
||||||
|
mov ebx, [ebx]
|
||||||
; init header
|
; init header
|
||||||
push eax ecx
|
push eax ecx
|
||||||
mov edi, edx
|
mov edi, edx
|
||||||
|
@@ -3202,7 +3202,9 @@ fs_HdRead:
|
|||||||
; fs_HdReadFolder - LFN variant for reading hard disk folder
|
; fs_HdReadFolder - LFN variant for reading hard disk folder
|
||||||
;
|
;
|
||||||
; esi points to filename
|
; esi points to filename
|
||||||
; ebx pointer to 32-bit number = first wanted block, 0+
|
; ebx pointer to structure 32-bit number = first wanted block, 0+
|
||||||
|
; & flags (bitfields)
|
||||||
|
; flags: bit 0: 0=ANSI names, 1=UNICODE names
|
||||||
; ecx number of blocks to read, 0+
|
; ecx number of blocks to read, 0+
|
||||||
; edx mem location to return data
|
; edx mem location to return data
|
||||||
;
|
;
|
||||||
@@ -3211,7 +3213,6 @@ fs_HdRead:
|
|||||||
;
|
;
|
||||||
;--------------------------------------------------------------
|
;--------------------------------------------------------------
|
||||||
fs_HdReadFolder:
|
fs_HdReadFolder:
|
||||||
mov ebx, [ebx]
|
|
||||||
mov eax, [ROOT_CLUSTER]
|
mov eax, [ROOT_CLUSTER]
|
||||||
push edi
|
push edi
|
||||||
cmp byte [esi], 0
|
cmp byte [esi], 0
|
||||||
@@ -3237,7 +3238,8 @@ fs_HdReadFolder:
|
|||||||
push ebp
|
push ebp
|
||||||
sub esp, 262*2 ; reserve space for LFN
|
sub esp, 262*2 ; reserve space for LFN
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
push 1 ; for fat_get_name: read UNICODE name
|
push dword [ebx+4] ; for fat_get_name: read ANSI/UNICODE name
|
||||||
|
mov ebx, [ebx]
|
||||||
; init header
|
; init header
|
||||||
push eax ecx
|
push eax ecx
|
||||||
mov edi, edx
|
mov edi, edx
|
||||||
|
@@ -32,17 +32,17 @@ rootdirs:
|
|||||||
|
|
||||||
virtual_root_query:
|
virtual_root_query:
|
||||||
dd fs_HasRamdisk
|
dd fs_HasRamdisk
|
||||||
du 'rd',0
|
db 'rd',0
|
||||||
dd fs_HasFloppy
|
dd fs_HasFloppy
|
||||||
du 'fd',0
|
db 'fd',0
|
||||||
dd fs_HasHd0
|
dd fs_HasHd0
|
||||||
du 'hd0',0
|
db 'hd0',0
|
||||||
dd fs_HasHd1
|
dd fs_HasHd1
|
||||||
du 'hd1',0
|
db 'hd1',0
|
||||||
dd fs_HasHd2
|
dd fs_HasHd2
|
||||||
du 'hd2',0
|
db 'hd2',0
|
||||||
dd fs_HasHd3
|
dd fs_HasHd3
|
||||||
du 'hd3',0
|
db 'hd3',0
|
||||||
dd 0
|
dd 0
|
||||||
endg
|
endg
|
||||||
|
|
||||||
@@ -104,9 +104,10 @@ file_system_lfn:
|
|||||||
mov ebp, [ebx+12]
|
mov ebp, [ebx+12]
|
||||||
mov edx, [ebx+16]
|
mov edx, [ebx+16]
|
||||||
add edx, std_application_base_address
|
add edx, std_application_base_address
|
||||||
mov ebx, [ebx+4]
|
push dword [ebx+4] ; first block
|
||||||
|
mov ebx, [ebx+8] ; flags
|
||||||
mov esi, [edi+4]
|
mov esi, [edi+4]
|
||||||
; ebx=first block, ebp=number of blocks, edx=return area, esi='Next' handler
|
; ebx=flags, [esp]=first block, ebp=number of blocks, edx=return area, esi='Next' handler
|
||||||
mov edi, edx
|
mov edi, edx
|
||||||
mov ecx, 32/4
|
mov ecx, 32/4
|
||||||
rep stosd
|
rep stosd
|
||||||
@@ -115,7 +116,7 @@ file_system_lfn:
|
|||||||
call esi
|
call esi
|
||||||
jc .maindir_done
|
jc .maindir_done
|
||||||
inc dword [edx+8]
|
inc dword [edx+8]
|
||||||
dec ebx
|
dec dword [esp]
|
||||||
jns .maindir_loop
|
jns .maindir_loop
|
||||||
dec ebp
|
dec ebp
|
||||||
js .maindir_loop
|
js .maindir_loop
|
||||||
@@ -142,15 +143,27 @@ file_system_lfn:
|
|||||||
@@:
|
@@:
|
||||||
pop eax
|
pop eax
|
||||||
add al, '0'
|
add al, '0'
|
||||||
stosw
|
stosb
|
||||||
|
test bl, 1 ; UNICODE name?
|
||||||
|
jz .ansi2
|
||||||
|
mov byte [edi], 0
|
||||||
|
inc edi
|
||||||
|
.ansi2:
|
||||||
|
test al, al
|
||||||
jnz @b
|
jnz @b
|
||||||
mov byte [edi-1], 0
|
mov byte [edi-1], 0
|
||||||
pop edi
|
pop edi
|
||||||
|
; UNICODE name length is 520 bytes, ANSI - 264
|
||||||
add edi, 520
|
add edi, 520
|
||||||
|
test bl, 1
|
||||||
|
jnz @f
|
||||||
|
sub edi, 520-264
|
||||||
|
@@:
|
||||||
pop edx eax
|
pop edx eax
|
||||||
jmp .maindir_loop
|
jmp .maindir_loop
|
||||||
.maindir_done:
|
.maindir_done:
|
||||||
mov ebx, [edx+8]
|
pop eax
|
||||||
|
mov ebx, [edx+4]
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
dec ebp
|
dec ebp
|
||||||
js @f
|
js @f
|
||||||
@@ -173,9 +186,10 @@ file_system_lfn:
|
|||||||
mov ebp, [ebx+12]
|
mov ebp, [ebx+12]
|
||||||
mov edx, [ebx+16]
|
mov edx, [ebx+16]
|
||||||
add edx, std_application_base_address
|
add edx, std_application_base_address
|
||||||
mov ebx, [ebx+4]
|
push dword [ebx+4] ; first block
|
||||||
|
mov ebx, [ebx+8] ; flags
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
; eax=0, ebx=first block, ebp=number of blocks, edx=return area
|
; eax=0, [esp]=first block, ebx=flags, ebp=number of blocks, edx=return area
|
||||||
mov edi, edx
|
mov edi, edx
|
||||||
mov ecx, 32/4
|
mov ecx, 32/4
|
||||||
rep stosd
|
rep stosd
|
||||||
@@ -190,13 +204,13 @@ file_system_lfn:
|
|||||||
.readroot_next:
|
.readroot_next:
|
||||||
or ecx, -1
|
or ecx, -1
|
||||||
xchg esi, edi
|
xchg esi, edi
|
||||||
repnz scasw
|
repnz scasb
|
||||||
xchg esi, edi
|
xchg esi, edi
|
||||||
jmp .readroot_loop
|
jmp .readroot_loop
|
||||||
@@:
|
@@:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
inc dword [edx+8]
|
inc dword [edx+8]
|
||||||
dec ebx
|
dec dword [esp]
|
||||||
jns .readroot_next
|
jns .readroot_next
|
||||||
dec ebp
|
dec ebp
|
||||||
js .readroot_next
|
js .readroot_next
|
||||||
@@ -208,15 +222,24 @@ file_system_lfn:
|
|||||||
rep stosd
|
rep stosd
|
||||||
push edi
|
push edi
|
||||||
@@:
|
@@:
|
||||||
lodsw
|
lodsb
|
||||||
stosw
|
stosb
|
||||||
|
test bl, 1
|
||||||
|
jz .ansi
|
||||||
|
mov byte [edi], 0
|
||||||
|
inc edi
|
||||||
|
.ansi:
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz @b
|
jnz @b
|
||||||
pop edi
|
pop edi
|
||||||
add edi, 520
|
add edi, 520
|
||||||
|
test bl, 1
|
||||||
|
jnz .readroot_loop
|
||||||
|
sub edi, 520-264
|
||||||
jmp .readroot_loop
|
jmp .readroot_loop
|
||||||
.readroot_done:
|
.readroot_done:
|
||||||
mov ebx, [edx+8]
|
pop eax
|
||||||
|
mov ebx, [edx+4]
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
dec ebp
|
dec ebp
|
||||||
js @f
|
js @f
|
||||||
|
@@ -4888,7 +4888,7 @@ align 4
|
|||||||
sys_apm:
|
sys_apm:
|
||||||
cmp word [apm_vf], 0 ; Check APM BIOS enable
|
cmp word [apm_vf], 0 ; Check APM BIOS enable
|
||||||
jne @f
|
jne @f
|
||||||
or [esp + 40], byte 1 ; error
|
or [esp + 56], byte 1 ; error
|
||||||
mov [esp + 36], dword 8 ; 32-bit protected-mode interface not supported
|
mov [esp + 36], dword 8 ; 32-bit protected-mode interface not supported
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -4897,7 +4897,7 @@ sys_apm:
|
|||||||
|
|
||||||
cmp al, 3
|
cmp al, 3
|
||||||
ja @f
|
ja @f
|
||||||
and [esp + 40], byte 0xfe ; emulate func 0..3 as func 0
|
and [esp + 56], byte 0xfe ; emulate func 0..3 as func 0
|
||||||
mov eax, [apm_vf]
|
mov eax, [apm_vf]
|
||||||
mov [esp + 36], eax
|
mov [esp + 36], eax
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
@@ -4912,8 +4912,8 @@ sys_apm:
|
|||||||
mov [esp + 32], ecx
|
mov [esp + 32], ecx
|
||||||
mov [esp + 36], eax
|
mov [esp + 36], eax
|
||||||
setc al
|
setc al
|
||||||
and [esp + 40], byte 0xfe
|
and [esp + 56], byte 0xfe
|
||||||
or [esp + 40], al
|
or [esp + 56], al
|
||||||
ret
|
ret
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user