* Modified sysfunction 65 (see documentation), use new KFAR
* Deleted useless sysfunction 59 (syscalls trace) * Load vmode.mdr via new file subsystem * KFar 0.2 git-svn-id: svn://kolibrios.org@314 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -138,8 +138,6 @@ TASK_BASE equ OS_BASE+0x0003010
|
||||
TASK_DATA equ OS_BASE+0x0003020
|
||||
TASK_EVENT equ OS_BASE+0x0003020
|
||||
|
||||
save_syscall_data equ OS_BASE+0x0005000
|
||||
|
||||
;mouseunder equ OS_BASE+0x0006900
|
||||
FLOPPY_BUFF equ OS_BASE+0x0008000
|
||||
ACTIVE_PROC_STACK equ OS_BASE+0x000A400
|
||||
|
@@ -14,16 +14,13 @@ i40:
|
||||
mov ds,ax
|
||||
mov es,ax
|
||||
|
||||
; for syscall trace function
|
||||
call save_registers
|
||||
|
||||
; load all registers in crossed order
|
||||
mov edi,[esp+28] ; eax
|
||||
mov eax,[esp+16] ; ebx
|
||||
mov ebx,[esp+24] ; ecx
|
||||
mov ecx,[esp+20] ; edx
|
||||
mov edx,[esp+4] ; esi
|
||||
mov esi,[esp+0] ; edi
|
||||
mov eax, ebx
|
||||
mov ebx, ecx
|
||||
mov ecx, edx
|
||||
mov edx, esi
|
||||
mov esi, edi
|
||||
mov edi, [esp+28]
|
||||
|
||||
; enable interupts - a task switch or an IRQ _CAN_ interrupt i40 handler
|
||||
sti
|
||||
@@ -31,34 +28,12 @@ i40:
|
||||
and edi,0xff
|
||||
call dword [servetable+edi*4]
|
||||
pop eax
|
||||
cli
|
||||
; cli
|
||||
|
||||
popad
|
||||
pop es ds
|
||||
iretd
|
||||
|
||||
align 4
|
||||
save_registers:
|
||||
mov esi, [0x3010]
|
||||
mov eax, [esi+TASKDATA.pid] ; load PID
|
||||
lea esi, [esp+4]
|
||||
inc [save_syscall_count]
|
||||
mov edi,[save_syscall_count]
|
||||
and edi,0xF
|
||||
shl edi,6
|
||||
add edi,save_syscall_data+32
|
||||
mov [edi-32],eax
|
||||
mov ecx,32 / 4
|
||||
cld
|
||||
rep movsd
|
||||
ret
|
||||
|
||||
uglobal
|
||||
save_syscall_count dd 0x0
|
||||
endg
|
||||
|
||||
;label save_syscall_data dword at 0x5000
|
||||
|
||||
|
||||
iglobal
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -127,7 +102,7 @@ iglobal
|
||||
dd undefined_syscall ; 56-reserved
|
||||
dd undefined_syscall ; 57-reserved
|
||||
dd file_system ; 58-Common file system interface
|
||||
dd sys_trace ; 59-System call trace
|
||||
dd undefined_syscall ; 59-reserved
|
||||
dd sys_IPC ; 60-Inter Process Communication
|
||||
dd sys_gs ; 61-Direct graphics access
|
||||
dd sys_pci ; 62-PCI functions
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Kolibri 0.6.3.0
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Kolibri 0.6.4.0
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD>頥<EFBFBD><E9A0A5><EFBFBD> <20> ॣ<><E0A5A3><EFBFBD><EFBFBD> eax.
|
||||
<EFBFBD>맮<EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>㭪樨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢫<EFBFBD><E2A2AB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "int 0x40".
|
||||
@@ -851,8 +851,8 @@
|
||||
db a,b,c,d <20><><EFBFBD> <20><><EFBFBD>ᨨ a.b.c.d
|
||||
db UID_xxx: <20><><EFBFBD><EFBFBD> <20><> UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||
db 'name',0 - ASCIIZ-<2D><>ப<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Kolibri 0.6.3.0:
|
||||
db 0,6,3,0
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Kolibri 0.6.4.0:
|
||||
db 0,6,4,0
|
||||
db 2
|
||||
db 'Kolibri',0
|
||||
|
||||
@@ -2716,6 +2716,21 @@ dword-
|
||||
* eax = 1 - <20><><EFBFBD><EFBFBD> <><E1A2AE><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ebx ࠧ<><E0A0A7>蠥<EFBFBD><E8A0A5><EFBFBD>
|
||||
|
||||
======================================================================
|
||||
==== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 53, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 10 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ethernet. ====
|
||||
======================================================================
|
||||
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* eax = 53 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||
* ebx = 10 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||
* al = -1 - <20>ࠩ<EFBFBD><E0A0A9><EFBFBD> <20><>⥢<EFBFBD><E2A5A2> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>㦥<EFBFBD> <20><><EFBFBD>
|
||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD> <20><><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD>
|
||||
* al = 0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* al = 1 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><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> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD> <20><><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD>
|
||||
⮫쪮 <20><><EFBFBD> <20><>⥢<EFBFBD><E2A5A2> <20><><EFBFBD><EFBFBD> RTL8139.
|
||||
|
||||
======================================================================
|
||||
<20>㭪<EFBFBD><E3ADAA><EFBFBD> 53, <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 255 - <20>⫠<EFBFBD><E2ABA0>筠<EFBFBD> <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20><>⥢<EFBFBD><E2A5A2><EFBFBD> <20>ࠩ<EFBFBD><E0A0A9><EFBFBD><EFBFBD>.
|
||||
======================================================================
|
||||
@@ -3128,55 +3143,6 @@ dword-
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (⠬ <20><> <20>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD>
|
||||
<20> ᥪ<><E1A5AA><EFBFBD><EFBFBD><EFBFBD>) <20> <20><>饥 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>⪨<EFBFBD> <20><><EFBFBD>.
|
||||
|
||||
======================================================================
|
||||
=== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 59 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>맮<EFBFBD><EBA7AE><EFBFBD>. ==
|
||||
======================================================================
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>맮<EFBFBD><EBA7AE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ.
|
||||
<EFBFBD><EFBFBD>ࠬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* eax = 59 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
|
||||
* ebx = 0 - <20><><EFBFBD><EFBFBD><EFBFBD>⢥<EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD>
|
||||
* ecx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* edx = ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||
* eax = <20><>饥 <20><> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>맮<EFBFBD><EBA7AE><EFBFBD>,
|
||||
ᤥ<><E1A4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> <20><><EFBFBD>⥬<EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2^32)
|
||||
* ebx = 0
|
||||
<EFBFBD><EFBFBD>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ଠ樨 <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20>맮<EFBFBD><EBA7AE>: (ࠧ<><E0A0A7><EFBFBD> = 0x40 = 64 <20><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* +0: dword: PID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>⮪<EFBFBD>
|
||||
* +4: 7*dword: <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* +32 = +0x20: dword: <20><><EFBFBD>祭<EFBFBD><E7A5AD> edi <20><><EFBFBD> <20>맮<EFBFBD><EBA7AE>
|
||||
* +36 = +0x24: dword: esi
|
||||
* +40 = +0x28: dword: ebp
|
||||
* +44 = +0x2C: dword: 㪠<><E3AAA0>⥫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>稪<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* +48 = +0x30: dword: ebx
|
||||
* +52 = +0x34: dword: edx
|
||||
* +56 = +0x38: dword: ecx
|
||||
* +60 = +0x3C: dword: eax (=<3D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>㭪樨)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||
* <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systrace.
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>쭮 <20><>㤭<EFBFBD> <20>।<EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD>ன <20><><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD> <20><><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD>⢨⥫쭮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>맮<EFBFBD><EBA7AE>
|
||||
<20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>প<EFBFBD> <20>⮩ <20>㭪樨 <20><><EFBFBD>쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<28><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)...
|
||||
* <20> <20><>裡 <20> <20>⨬ <20><><EFBFBD><EFBFBD> <20>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>প<EFBFBD> <20>⮩ <20>㭪樨
|
||||
<20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮢᥬ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> systrace.
|
||||
* <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>맮<EFBFBD><EBA7AE><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD>楢<EFBFBD><E6A5A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 0x10 <20>室<EFBFBD><E5AEA4>.
|
||||
<20><><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><> 㯮<><E3AFAE><EFBFBD><EFBFBD>⮣<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 㪠<><E3AAA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20>室<EFBFBD><E5AEA4> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD><EFBFBD> <20>맮<EFBFBD><EBA7AE>,
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>祭<EFBFBD><E7A5AD> eax, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<20>室 (eax and 0xF) (<28><> ᬥ饭<E1ACA5><E9A5AD> (eax and 0xF)*0x40).
|
||||
* <20> ⥪<>饩 ॠ<><E0A5A0><EFBFBD><EFBFBD>樨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ।<><E0A5A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥<EFBFBD><E9A8A5>
|
||||
<20><EFBFBD><E0AEA1><EFBFBD><EFBFBD> <20><><EFBFBD>ᨭ<EFBFBD><EFBFBD><E0AEAD><EFBFBD>樨, <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>맮<EFBFBD><EBA7AE><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20><><EFBFBD><EFBFBD>ॢ<EFBFBD><E0A5A2><EFBFBD>.
|
||||
* <20><><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><>࠭<EFBFBD><E0A0AD><EFBFBD>, 4<><34>.
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>室<EFBFBD> = 64 <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<20><>祬<EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 16 <20>室<EFBFBD><E5AEA4> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭮.
|
||||
* <20><><EFBFBD>祭<EFBFBD><E7A5AD> esp <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD><EFBFBD> <20>맮<EFBFBD><EBA7AE>
|
||||
<20>⮩ <20>㭪樥<E3ADAA> 㧭<><E3A7AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
* <20><EFBFBD>ન <20><><EFBFBD>४⭮<E0A5AA><E2ADAE><EFBFBD> edx <20> ⥪<>饩 ॠ<><E0A5A0><EFBFBD><EFBFBD>樨 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
======================================================================
|
||||
=========== <20>㭪<EFBFBD><E3ADAA><EFBFBD> 60 - Inter Process Communication (IPC). ==========
|
||||
======================================================================
|
||||
@@ -3469,8 +3435,11 @@ IPC
|
||||
* ebx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||
* ecx = [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> y]
|
||||
* edx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> y]
|
||||
* esi = <20><> <20><><EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 8 <20> ⥪<>饩 ॠ<><E0A5A0><EFBFBD><EFBFBD>樨
|
||||
* edi = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (256 梥⮢ 0x00RRGGBB)
|
||||
* esi = <20><> <20><><EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 8, 24 <20><><EFBFBD> 32
|
||||
* edi = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (256 梥⮢ 0x00RRGGBB);
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> esi = 24 <20> 32
|
||||
* ebp = ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>饩 <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||
<20>⭮<EFBFBD><E2ADAE>⥫쭮 <20>।<EFBFBD><E0A5A4><EFBFBD>饩
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>:
|
||||
* <20>㭪<EFBFBD><E3ADAA><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頥<EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砭<EFBFBD><EFBFBD>:
|
||||
@@ -3480,6 +3449,8 @@ IPC
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
* <20> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> 256 梥⮢, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 256.
|
||||
* <20>맮<EFBFBD> <20>㭪樨 7 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥭ <20>맮<EFBFBD><EBA7AE> <20>⮩ <20>㭪樨 <20> <20><>ࠬ<EFBFBD><E0A0AC>ࠬ<EFBFBD>
|
||||
esi=24, ebp=0.
|
||||
|
||||
======================================================================
|
||||
================= <20>㭪<EFBFBD><E3ADAA><EFBFBD> 66 - ࠡ<><E0A0A1><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ன. =================
|
||||
|
@@ -1,4 +1,4 @@
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.6.3.0
|
||||
SYSTEM FUNCTIONS of OS Kolibri 0.6.4.0
|
||||
|
||||
Number of the function is located in the register eax.
|
||||
The call of the system function is executed by "int 0x40" command.
|
||||
@@ -850,8 +850,8 @@ Structure of the buffer:
|
||||
db a,b,c,d for version a.b.c.d
|
||||
db UID_xxx: one of UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||
db 'name',0 - ASCIIZ-string with the name
|
||||
For Kolibri 0.6.3.0 kernel:
|
||||
db 0,6,3,0
|
||||
For Kolibri 0.6.4.0 kernel:
|
||||
db 0,6,4,0
|
||||
db 2
|
||||
db 'Kolibri',0
|
||||
|
||||
@@ -2692,6 +2692,21 @@ Returned value:
|
||||
* eax = 1 - port is free
|
||||
* ebx destroyed
|
||||
|
||||
======================================================================
|
||||
===== Function 53, subfunction 10 - query Ethernet cable status. =====
|
||||
======================================================================
|
||||
Parameters:
|
||||
* eax = 53 - function number
|
||||
* ebx = 10 - subfunction number
|
||||
Returned value:
|
||||
* al = -1 - a network driver is not loaded or
|
||||
does not support this function
|
||||
* al = 0 - Ethernet cable is unplugged
|
||||
* al = 1 - Ethernet cable is plugged
|
||||
Remarks:
|
||||
* The current kernel implementation supports this function
|
||||
only for RTL8139 network cards.
|
||||
|
||||
======================================================================
|
||||
= Function 53, subfunction 255 - debug information of network driver.
|
||||
======================================================================
|
||||
@@ -3100,55 +3115,6 @@ Remarks:
|
||||
it is stored in sectors) and total number of clusters
|
||||
for hard disks.
|
||||
|
||||
======================================================================
|
||||
=============== Function 59 - trace last system calls. ===============
|
||||
======================================================================
|
||||
Gets data on all system calls of all processes.
|
||||
Parameters:
|
||||
* eax = 59 - function number
|
||||
* ebx = 0 - unique subfunction
|
||||
* ecx = pointer to the buffer
|
||||
* edx = size of the buffer
|
||||
Returned value:
|
||||
* eax = total number of system calls made from system boot
|
||||
(modulo 2^32)
|
||||
* ebx = 0
|
||||
Format of information on one call: (size = 0x40 = 64 bytes)
|
||||
* +0: dword: PID of process/thread
|
||||
* +4: 7*dword: garbage
|
||||
* +32 = +0x20: dword: value of edi at the call
|
||||
* +36 = +0x24: dword: esi
|
||||
* +40 = +0x28: dword: ebp
|
||||
* +44 = +0x2C: dword: stack pointer of the kernel handler
|
||||
* +48 = +0x30: dword: ebx
|
||||
* +52 = +0x34: dword: edx
|
||||
* +56 = +0x38: dword: ecx
|
||||
* +60 = +0x3C: dword: eax (=number of system function)
|
||||
Remarks:
|
||||
* The function is used only in the application 'systrace'.
|
||||
It is rather difficult to imagine a situation, in which
|
||||
this application or this function are really useful;
|
||||
and all system calls for support of this function are a little
|
||||
decelerated (though not strongly)...
|
||||
* So there is a proposition to delete from the kernel
|
||||
support of this function, together with application 'systrace'.
|
||||
* The information on system calls saves in the system
|
||||
ring buffer with 0x10 entries.
|
||||
This function simply copies the given size of data
|
||||
from this buffer to the given address.
|
||||
* One can determine, which entry in the buffer corresponds to
|
||||
last system call, by value of eax, namely, it is the entry
|
||||
(eax and 0xF) (at offset (eax and 0xF)*0x40).
|
||||
* In the current implementation there can be the seldom
|
||||
meeting problems of unsynchronization, when the information
|
||||
on some calls becomes outdated.
|
||||
* Under the system buffer one page, 4Kb, is allocated.
|
||||
Size of an entry = 64 bytes. Why only 16 entries are used,
|
||||
is not clearly.
|
||||
* The value of esp at the moment of system call cannot
|
||||
be determined by this function.
|
||||
* The current implementation does not check edx for correctness.
|
||||
|
||||
======================================================================
|
||||
========== Function 60 - Inter Process Communication (IPC). ==========
|
||||
======================================================================
|
||||
@@ -3436,8 +3402,10 @@ Parameters:
|
||||
* ebx = pointer to the image
|
||||
* ecx = [size on axis x]*65536 + [size on axis y]
|
||||
* edx = [coordinate on axis x]*65536 + [coordinate on axis y]
|
||||
* esi = number of bits per pixel, must be 8
|
||||
* edi = pointer to palette (256 colors 0x00RRGGBB)
|
||||
* esi = number of bits per pixel, must be 8, 24 or 32
|
||||
* edi = pointer to palette (256 colors 0x00RRGGBB);
|
||||
ignored when esi = 24 and 32
|
||||
* ebp = offset of next row data relative to previous row data
|
||||
Returned value:
|
||||
* function does not return value
|
||||
Remarks:
|
||||
@@ -3447,6 +3415,8 @@ Remarks:
|
||||
* Each byte of image is index in the palette.
|
||||
* If the image uses less than 256 colors, palette size may be
|
||||
less than 256 too.
|
||||
* The call to function 7 is equivalent to call to this function
|
||||
with esi=24, ebp=0.
|
||||
|
||||
======================================================================
|
||||
================== Function 66 - work with keyboard. =================
|
||||
|
@@ -231,7 +231,7 @@ iglobal
|
||||
char2 db 'FONTS/CHAR2.MT',0
|
||||
bootpath db '/KOLIBRI '
|
||||
bootpath2 db 0
|
||||
vmode db 'VMODE MDR'
|
||||
vmode db 'VMODE.MDR',0
|
||||
vrr_m db '/rd/1/VRR_M',0
|
||||
endg
|
||||
|
||||
@@ -3977,7 +3977,7 @@ sys_putimage:
|
||||
add dx,word[edi+0x80000+APPDATA.wnd_clientbox.left]
|
||||
rol edx,16
|
||||
.forced:
|
||||
push esi ebp
|
||||
push ebp esi 0
|
||||
mov ebp, putimage_get24bpp
|
||||
mov esi, putimage_init24bpp
|
||||
sys_putimage_bpp:
|
||||
@@ -3996,7 +3996,7 @@ sys_putimage_bpp:
|
||||
inc [mouse_pause]
|
||||
call eax
|
||||
dec [mouse_pause]
|
||||
pop ebp esi
|
||||
pop ebp esi ebp
|
||||
jmp [draw_pointer]
|
||||
|
||||
syscall_putimage_palette:
|
||||
@@ -4009,8 +4009,9 @@ sys_putimage_palette:
|
||||
; ebx = pointer to image
|
||||
; ecx = [xsize]*65536 + [ysize]
|
||||
; edx = [xstart]*65536 + [ystart]
|
||||
; esi = number of bits per pixel, must be 8
|
||||
; esi = number of bits per pixel, must be 8, 24 or 32
|
||||
; edi = pointer to palette
|
||||
; ebp = row delta
|
||||
mov eax, [0x3000]
|
||||
shl eax, 8
|
||||
add dx, word [eax+0x80000+APPDATA.wnd_clientbox.top]
|
||||
@@ -4018,10 +4019,27 @@ sys_putimage_palette:
|
||||
add dx, word [eax+0x80000+APPDATA.wnd_clientbox.left]
|
||||
rol edx, 16
|
||||
.forced:
|
||||
push esi ebp
|
||||
push ebp esi ebp
|
||||
cmp esi, 8
|
||||
jnz @f
|
||||
mov ebp, putimage_get8bpp
|
||||
mov esi, putimage_init8bpp
|
||||
jmp sys_putimage_bpp
|
||||
@@:
|
||||
cmp esi, 24
|
||||
jnz @f
|
||||
mov ebp, putimage_get24bpp
|
||||
mov esi, putimage_init24bpp
|
||||
jmp sys_putimage_bpp
|
||||
@@:
|
||||
cmp esi, 32
|
||||
jnz @f
|
||||
mov ebp, putimage_get32bpp
|
||||
mov esi, putimage_init32bpp
|
||||
jmp sys_putimage_bpp
|
||||
@@:
|
||||
pop ebp esi
|
||||
ret
|
||||
|
||||
putimage_init24bpp:
|
||||
lea eax, [eax*3]
|
||||
@@ -4041,6 +4059,13 @@ putimage_get8bpp:
|
||||
inc esi
|
||||
ret 4
|
||||
|
||||
putimage_init32bpp:
|
||||
shl eax, 2
|
||||
ret
|
||||
putimage_get32bpp:
|
||||
lodsd
|
||||
ret 4
|
||||
|
||||
; eax x beginning
|
||||
; ebx y beginning
|
||||
; ecx x end
|
||||
@@ -4417,28 +4442,6 @@ sys_msg_board:
|
||||
|
||||
|
||||
|
||||
sys_trace:
|
||||
|
||||
test eax, eax ; get event data
|
||||
jnz no_get_sys_events
|
||||
|
||||
mov esi,save_syscall_data ; data
|
||||
mov edi,[0x3010]
|
||||
mov edi,[edi+TASKDATA.mem_start]
|
||||
add edi,ebx
|
||||
cld
|
||||
rep movsb
|
||||
|
||||
mov [esp+24],dword 0
|
||||
mov eax,[save_syscall_count] ; count
|
||||
mov [esp+36],eax
|
||||
ret
|
||||
|
||||
no_get_sys_events:
|
||||
|
||||
ret
|
||||
|
||||
|
||||
sys_process_def:
|
||||
mov edi, [0x3000]
|
||||
|
||||
|
@@ -54,8 +54,7 @@
|
||||
; 3c dword cpu usage in cpu timer tics
|
||||
;
|
||||
;
|
||||
; 5000 -> 5FFF save_syscall_data - syscall trace
|
||||
; 6000 -> 68FF free
|
||||
; 5000 -> 68FF free
|
||||
; 6900 -> 6EFF saved picture under mouse pointer
|
||||
;
|
||||
; 6F00 -> 6FFF free
|
||||
|
@@ -844,6 +844,7 @@ vesa12_putimage:
|
||||
pop edi
|
||||
|
||||
add edi,[0xfe08]
|
||||
add esi,[esp+32]
|
||||
dec ebx
|
||||
jnz newpi12
|
||||
|
||||
|
@@ -82,6 +82,13 @@ virtual at esp
|
||||
.edi dd ?
|
||||
.esi dd ?
|
||||
.ebp dd ?
|
||||
.esp dd ?
|
||||
.ebx dd ?
|
||||
.edx dd ?
|
||||
.ecx dd ?
|
||||
.eax dd ?
|
||||
.ret_addr dd ?
|
||||
.arg_0 dd ?
|
||||
end virtual
|
||||
|
||||
align 16
|
||||
@@ -164,6 +171,7 @@ vesa20_putimage:
|
||||
;; imul eax, [putimg.source_bpp]
|
||||
; lea eax, [eax + eax * 2]
|
||||
call esi
|
||||
add eax, [putimg.arg_0]
|
||||
mov [putimg.line_increment], eax
|
||||
|
||||
; winmap new line increment
|
||||
|
@@ -10,18 +10,14 @@
|
||||
;
|
||||
|
||||
|
||||
;vmode db 'VMODE MDR' ; MDR - Menuet Driver
|
||||
; must be located after fonts filenames in kernel.asm
|
||||
|
||||
; LOAD VIDEOMODE DRIVER
|
||||
; If vmode.mdr file not found
|
||||
or eax,-1 ; Driver ID = -1 (not present in system)
|
||||
mov [0x760000],eax ;
|
||||
mov [0x760100],byte 0xC3 ; Instruction RETN - driver loop
|
||||
|
||||
mov eax,vmode ; File name of driver
|
||||
mov esi,12
|
||||
mov ebx,0
|
||||
mov ecx,26000
|
||||
mov esi, vmode
|
||||
xor ebx, ebx
|
||||
mov ecx, 0x8000 ; size of memory area for driver
|
||||
mov edx, 0x760000 ; Memory position of driver
|
||||
call fileread
|
||||
call fs_RamdiskRead
|
@@ -3,6 +3,11 @@
|
||||
|
||||
virtual at 0
|
||||
dlgtemplate:
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
; <EFBFBD><EFBFBD><EFBFBD> 0: <EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <EFBFBD><EFBFBD><EFBFBD> 1: <EFBFBD>ᯮ<EFBFBD>짮<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 梥<EFBFBD><EFBFBD> <EFBFBD>।<EFBFBD><EFBFBD>०<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD>訡<EFBFBD><EFBFBD>
|
||||
; (<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>⮢ <EFBFBD><EFBFBD>⠭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> main_color,border_color,header_color
|
||||
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
.flags dd ?
|
||||
.x dd ?
|
||||
.y dd ?
|
||||
@@ -58,7 +63,28 @@ GenericBox:
|
||||
or eax, -1
|
||||
ret 8
|
||||
.sizeok:
|
||||
; set color if required
|
||||
test byte [ebx+dlgtemplate.flags], 1
|
||||
jz @f
|
||||
mov edi, dialog_colors
|
||||
jmp .setcolor
|
||||
@@:
|
||||
test byte [ebx+dlgtemplate.flags], 2
|
||||
jz @f
|
||||
mov edi, warning_colors
|
||||
.setcolor:
|
||||
mov al, [dialog_main_color-dialog_colors+edi]
|
||||
mov [ebx+dlgtemplate.main_color], al
|
||||
mov al, [dialog_border_color-dialog_colors+edi]
|
||||
mov [ebx+dlgtemplate.border_color], al
|
||||
mov al, [dialog_header_color-dialog_colors+edi]
|
||||
mov [ebx+dlgtemplate.header_color], al
|
||||
@@:
|
||||
; allocate memory for data under dialog
|
||||
; for 'No memory' dialog use static data area
|
||||
mov ebp, nomem_dlgsavearea
|
||||
cmp ebx, nomem_dlgdata
|
||||
jz .allocated
|
||||
mov eax, [ebx+dlgtemplate.width]
|
||||
add eax, [ebx+dlgtemplate.border_size_x]
|
||||
add eax, [ebx+dlgtemplate.border_size_x]
|
||||
@@ -73,12 +99,12 @@ GenericBox:
|
||||
call mf_alloc
|
||||
test eax, eax
|
||||
jnz @f
|
||||
; TODO: add error message
|
||||
popad
|
||||
or eax, -1
|
||||
ret 8
|
||||
@@:
|
||||
mov ebp, eax
|
||||
.allocated:
|
||||
; save data
|
||||
mov eax, [ebx+dlgtemplate.y]
|
||||
add eax, [ebx+dlgtemplate.height]
|
||||
@@ -402,8 +428,11 @@ GenericBox:
|
||||
push eax
|
||||
call restore_console_data
|
||||
call draw_keybar
|
||||
cmp ebx, nomem_dlgdata
|
||||
jz @f
|
||||
mov eax, ebp
|
||||
call mf_free
|
||||
@@:
|
||||
or [cursor_x], -1
|
||||
or [cursor_y], -1
|
||||
call draw_image
|
||||
@@ -526,7 +555,7 @@ menu_centered_in:
|
||||
; +44: dd begin_variant
|
||||
; +48: dd end_variant
|
||||
; +52: dd cur_variant_idx
|
||||
call mf_alloc
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jnz @f
|
||||
.ret_bad:
|
||||
@@ -995,9 +1024,10 @@ DialogBox:
|
||||
push ManagerDlgProc
|
||||
push dword [esp+8]
|
||||
call GenericBox
|
||||
ret 8
|
||||
ret 4
|
||||
|
||||
ManagerDlgProc:
|
||||
mov ebp, ebx
|
||||
mov eax, [esp+8]
|
||||
dec eax
|
||||
jz .draw
|
||||
@@ -1052,8 +1082,7 @@ ManagerDlgProc:
|
||||
mov eax, ebx
|
||||
ret 16
|
||||
@@:
|
||||
mov ebx, [esp+4]
|
||||
add ebx, dlgtemplate.size+12
|
||||
lea ebx, [ebp+dlgtemplate.size+12]
|
||||
.enter_find:
|
||||
cmp [ebx+dlgitemtemplate.type], 2
|
||||
jnz @f
|
||||
@@ -1077,8 +1106,7 @@ ManagerDlgProc:
|
||||
jnz .btn_found
|
||||
loop @b
|
||||
.find_first_btn:
|
||||
mov ebx, [esp+4]
|
||||
add ebx, dlgtemplate.size+12
|
||||
lea ebx, [ebp+dlgtemplate.size+12]
|
||||
@@:
|
||||
test [ebx+dlgitemtemplate.flags], 8
|
||||
jnz .btn_found
|
||||
@@ -1087,7 +1115,7 @@ ManagerDlgProc:
|
||||
.btn_found:
|
||||
or byte [ebx+dlgitemtemplate.flags], 4
|
||||
.ret_draw:
|
||||
mov ebx, [esp+4]
|
||||
mov ebx, ebp
|
||||
call .dodraw
|
||||
call draw_image
|
||||
xor eax, eax
|
||||
@@ -1097,8 +1125,7 @@ ManagerDlgProc:
|
||||
.up:
|
||||
jecxz .ret0
|
||||
and byte [ebx+dlgitemtemplate.flags], not 4
|
||||
mov eax, [esp+4]
|
||||
sub ecx, [eax+dlgtemplate.size+8]
|
||||
sub ecx, [ebp+dlgtemplate.size+8]
|
||||
neg ecx
|
||||
jz .find_last_btn
|
||||
@@:
|
||||
@@ -1107,9 +1134,9 @@ ManagerDlgProc:
|
||||
loopz @b
|
||||
jnz .btn_found
|
||||
.find_last_btn:
|
||||
mov ebx, [eax+dlgtemplate.size+8]
|
||||
mov ebx, [ebp+dlgtemplate.size+8]
|
||||
imul ebx, dlgitemtemplate.size
|
||||
lea ebx, [ebx+eax+dlgtemplate.size+12]
|
||||
lea ebx, [ebx+ebp+dlgtemplate.size+12]
|
||||
@@:
|
||||
sub ebx, dlgitemtemplate.size
|
||||
test [ebx+dlgitemtemplate.flags], 8
|
||||
@@ -1262,6 +1289,9 @@ ManagerDlgProc:
|
||||
draw_static_text:
|
||||
; <EFBFBD><EFBFBD><EFBFBD>㥬 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨<EFBFBD> ⥪<EFBFBD><EFBFBD>
|
||||
mov ah, [dialog_main_color]
|
||||
test byte [ebp+dlgtemplate.flags], 2
|
||||
jz draw_text
|
||||
mov ah, [warning_main_color]
|
||||
draw_text:
|
||||
; <EFBFBD><EFBFBD>।<EFBFBD><EFBFBD>塞 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ப<EFBFBD>
|
||||
mov esi, [ebx+dlgitemtemplate.data]
|
||||
@@ -1299,13 +1329,12 @@ draw_text_esi:
|
||||
xor eax, eax
|
||||
.text_draw:
|
||||
push ecx
|
||||
mov ecx, [esp+24]
|
||||
push eax
|
||||
mov eax, [ebx+dlgitemtemplate.x1]
|
||||
add eax, [ecx+dlgtemplate.x]
|
||||
add eax, [ebp+dlgtemplate.x]
|
||||
push edx
|
||||
mov edx, [ebx+dlgitemtemplate.y1]
|
||||
add edx, [ecx+dlgtemplate.y]
|
||||
add edx, [ebp+dlgtemplate.y]
|
||||
call get_console_ptr
|
||||
pop edx
|
||||
pop ecx
|
||||
@@ -1337,9 +1366,8 @@ draw_text_esi:
|
||||
stosw
|
||||
loop @b
|
||||
.ret:
|
||||
mov ecx, [esp+20]
|
||||
mov eax, [ecx+dlgtemplate.x]
|
||||
mov edx, [ecx+dlgtemplate.y]
|
||||
mov eax, [ebp+dlgtemplate.x]
|
||||
mov edx, [ebp+dlgtemplate.y]
|
||||
add eax, [ebx+dlgitemtemplate.x2]
|
||||
inc eax
|
||||
add edx, [ebx+dlgitemtemplate.y1]
|
||||
@@ -1354,10 +1382,15 @@ draw_text_esi:
|
||||
ret
|
||||
|
||||
draw_button:
|
||||
mov ah, [dialog_normal_btn_color]
|
||||
mov ecx, dialog_colors
|
||||
test byte [ebp+dlgtemplate.flags], 2
|
||||
jz @f
|
||||
mov ecx, warning_colors
|
||||
@@:
|
||||
mov ah, [dialog_normal_btn_color-dialog_colors+ecx]
|
||||
test [ebx+dlgitemtemplate.flags], 4
|
||||
jz @f
|
||||
mov ah, [dialog_selected_btn_color]
|
||||
mov ah, [dialog_selected_btn_color-dialog_colors+ecx]
|
||||
@@:
|
||||
jmp draw_text
|
||||
|
||||
@@ -1368,19 +1401,198 @@ draw_editbox:
|
||||
mov eax, [ebx+dlgitemtemplate.x1]
|
||||
add eax, [edx+4]
|
||||
sub eax, [edx+8]
|
||||
mov ecx, [esp+16]
|
||||
add eax, [ecx+dlgtemplate.x]
|
||||
add eax, [ebp+dlgtemplate.x]
|
||||
mov [cursor_x], eax
|
||||
mov eax, [ebx+dlgitemtemplate.y1]
|
||||
add eax, [ecx+dlgtemplate.y]
|
||||
add eax, [ebp+dlgtemplate.y]
|
||||
mov [cursor_y], eax
|
||||
@@:
|
||||
mov ah, [dialog_edit_color]
|
||||
mov ecx, dialog_colors
|
||||
test byte [ebp+dlgtemplate.flags], 2
|
||||
jz @f
|
||||
mov ecx, warning_colors
|
||||
@@:
|
||||
mov ah, [dialog_edit_color-dialog_colors+ecx]
|
||||
test [ebx+dlgitemtemplate.flags], 10h
|
||||
jnz @f
|
||||
mov ah, [dialog_unmodified_edit_color]
|
||||
mov ah, [dialog_unmodified_edit_color-dialog_colors+ecx]
|
||||
@@:
|
||||
mov esi, [ebx+dlgitemtemplate.data]
|
||||
add esi, [edx+8]
|
||||
add esi, 12
|
||||
jmp draw_text_esi
|
||||
|
||||
; void __stdcall SayNoMem(void);
|
||||
SayNoMem:
|
||||
or dword [nomem_dlgdata+4], -1
|
||||
or dword [nomem_dlgdata+8], -1
|
||||
push nomem_dlgdata
|
||||
call DialogBox
|
||||
ret
|
||||
|
||||
; int __stdcall SayErr(const char* title, int x, int y,
|
||||
; int num_strings, const char* strings[],
|
||||
; int num_buttons, const char* buttons[]);
|
||||
; may be x=-1 and/or y=-1
|
||||
; [esp+4] = title
|
||||
; [esp+8] = x
|
||||
; [esp+12] = y
|
||||
; [esp+16] = num_strings
|
||||
; [esp+20] = strings
|
||||
; [esp+24] = num_buttons
|
||||
; [esp+28] = buttons
|
||||
SayErr:
|
||||
mov eax, [esp+16]
|
||||
add eax, [esp+24]
|
||||
imul eax, dlgitemtemplate.size
|
||||
add eax, dlgtemplate.size+12
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jnz @f
|
||||
or eax, -1
|
||||
ret 28
|
||||
@@:
|
||||
pushad
|
||||
mov ebx, eax
|
||||
mov edi, eax
|
||||
mov eax, 2
|
||||
stosd ; dlgtemplate.flags
|
||||
mov eax, [esp+32+8]
|
||||
stosd ; dlgtemplate.x
|
||||
mov eax, [esp+32+12]
|
||||
stosd ; dlgtemplate.y
|
||||
; calculate width
|
||||
mov ecx, [esp+32+16]
|
||||
mov esi, [esp+32+20]
|
||||
xor edx, edx
|
||||
.calcwidth:
|
||||
lodsd
|
||||
@@:
|
||||
inc eax
|
||||
cmp byte [eax-1], 0
|
||||
jnz @b
|
||||
sub eax, [esi-4]
|
||||
inc eax
|
||||
cmp edx, eax
|
||||
ja @f
|
||||
mov edx, eax
|
||||
@@:
|
||||
loop .calcwidth
|
||||
mov ecx, [esp+32+24]
|
||||
mov esi, [esp+32+28]
|
||||
xor ebp, ebp
|
||||
.calcwidth2:
|
||||
lodsd
|
||||
@@:
|
||||
inc eax
|
||||
cmp byte [eax-1], 0
|
||||
jnz @b
|
||||
sub eax, [esi-4]
|
||||
inc eax
|
||||
add ebp, eax
|
||||
loop .calcwidth2
|
||||
inc ebp
|
||||
inc ebp
|
||||
cmp edx, ebp
|
||||
ja @f
|
||||
mov edx, ebp
|
||||
@@:
|
||||
mov eax, [cur_width]
|
||||
sub eax, 8
|
||||
cmp edx, eax
|
||||
jb @f
|
||||
mov edx, eax
|
||||
@@:
|
||||
mov eax, edx
|
||||
stosd ; dlgtemplate.width
|
||||
mov eax, [esp+32+16]
|
||||
inc eax
|
||||
stosd ; dlgtemplate.height
|
||||
mov eax, 3
|
||||
stosd ; dlgtemplate.border_size_x
|
||||
mov al, 2
|
||||
stosd ; dlgtemplate.border_size_y
|
||||
mov eax, [esp+32+4]
|
||||
stosd ; dlgtemplate.title
|
||||
xor eax, eax
|
||||
stosd ; (ignored)
|
||||
stosd ; DlgProc
|
||||
stosd ; userdata
|
||||
mov eax, [esp+32+16]
|
||||
add eax, [esp+32+24]
|
||||
stosd ; num_items
|
||||
; fill strings
|
||||
xor ecx, ecx
|
||||
mov esi, [esp+32+20]
|
||||
@@:
|
||||
mov eax, 1
|
||||
stosd ; dlgitemtemplate.type
|
||||
dec eax
|
||||
stosd ; dlgitemtemplate.x1
|
||||
mov eax, ecx
|
||||
stosd ; dlgitemtemplate.y1
|
||||
lea eax, [edx-1]
|
||||
stosd ; dlgitemtemplate.x2
|
||||
mov eax, ecx
|
||||
stosd ; dlgitemtemplate.y2
|
||||
movsd ; dlgitemtemplate.data
|
||||
mov eax, 1
|
||||
stosd ; dlgitemtemplate.flags
|
||||
inc ecx
|
||||
cmp ecx, [esp+32+16]
|
||||
jb @b
|
||||
; fill buttons
|
||||
mov ecx, [esp+32+24]
|
||||
mov esi, [esp+32+28]
|
||||
sub edx, ebp
|
||||
jc .big
|
||||
shr edx, 1
|
||||
inc edx
|
||||
jmp .fillbtns
|
||||
.big:
|
||||
xor edx, edx
|
||||
.fillbtns:
|
||||
mov eax, 2
|
||||
stosd ; dlgitemtemplate.type
|
||||
mov eax, edx
|
||||
stosd ; dlgitemtemplate.x1
|
||||
mov eax, [ebx+dlgtemplate.height]
|
||||
dec eax
|
||||
stosd ; dlgitemtemplate.y1
|
||||
push eax
|
||||
lodsd
|
||||
sub eax, edx
|
||||
@@:
|
||||
inc edx
|
||||
cmp byte [eax+edx-1], 0
|
||||
jnz @b
|
||||
mov eax, edx
|
||||
inc edx
|
||||
stosd ; dlgitemtemplate.x2
|
||||
pop eax
|
||||
stosd ; dlgitemtemplate.y2
|
||||
mov eax, [esi-4]
|
||||
stosd ; dlgitemtemplate.data
|
||||
mov eax, 9
|
||||
cmp ecx, [esp+32+24]
|
||||
jnz @f
|
||||
or al, 4
|
||||
@@:
|
||||
stosd ; dlgitemtemplate.flags
|
||||
loop .fillbtns
|
||||
push ebx
|
||||
call DialogBox
|
||||
cmp eax, -1
|
||||
jz @f
|
||||
sub eax, ebx
|
||||
sub eax, dlgtemplate.size+12
|
||||
xor edx, edx
|
||||
mov ecx, dlgitemtemplate.size
|
||||
div ecx
|
||||
sub eax, [esp+32+16]
|
||||
@@:
|
||||
mov [esp+28], eax
|
||||
mov eax, ebx
|
||||
call mf_free
|
||||
popad
|
||||
ret 28
|
||||
|
@@ -14,6 +14,7 @@ include 'kglobals.inc'
|
||||
include 'memalloc.inc'
|
||||
include 'dialogs.inc'
|
||||
include 'viewer.inc'
|
||||
include 'tools.inc'
|
||||
|
||||
start:
|
||||
mov eax, mem
|
||||
@@ -61,14 +62,18 @@ start:
|
||||
mov eax, 8
|
||||
call mf_alloc
|
||||
mov [screens], eax
|
||||
test eax, eax
|
||||
jz exit
|
||||
mov ecx, panels_vtable
|
||||
mov [eax], ecx
|
||||
mov [active_screen_vtable], ecx
|
||||
call draw_keybar
|
||||
call draw_cmdbar
|
||||
mov [prev_dir], 0
|
||||
mov ebp, panel1_data
|
||||
call read_folder
|
||||
call draw_panel
|
||||
mov [bSilentFolderMode], 1
|
||||
mov ebp, panel2_data
|
||||
call read_folder
|
||||
call draw_panel
|
||||
@@ -112,7 +117,7 @@ redraw:
|
||||
int 0x40
|
||||
xor eax, eax
|
||||
; ebx, ecx, edi are ignored by function 0 after first redraw
|
||||
mov edx, 0x13000000
|
||||
mov edx, 0x53000000
|
||||
int 0x40
|
||||
mov al, 12
|
||||
inc ebx
|
||||
@@ -121,6 +126,7 @@ redraw:
|
||||
@@:
|
||||
xor ecx, ecx
|
||||
mov eax, [ebx+42]
|
||||
mov [wnd_width], eax
|
||||
sub eax, 5*2-1
|
||||
jae @f
|
||||
xor eax, eax
|
||||
@@ -143,8 +149,10 @@ redraw:
|
||||
setnz cl
|
||||
or cl, ch
|
||||
test edx, edx
|
||||
mov [fill_width], edx
|
||||
setnz ch
|
||||
mov eax, [ebx+46]
|
||||
mov [wnd_height], eax
|
||||
sub eax, [skinh]
|
||||
sub eax, 5-1
|
||||
jns @f
|
||||
@@ -163,6 +171,7 @@ redraw:
|
||||
mov eax, 255
|
||||
mov cl, 1
|
||||
@@:
|
||||
mov [fill_height], edx
|
||||
cmp eax, [cur_height]
|
||||
mov [cur_height], eax
|
||||
jnz .resize
|
||||
@@ -405,9 +414,8 @@ ctrlkey_test4:
|
||||
setz al
|
||||
ret
|
||||
|
||||
; TODO: add "no memory" error handling
|
||||
new_screen:
|
||||
call mf_alloc
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jnz @f
|
||||
ret
|
||||
@@ -417,7 +425,7 @@ new_screen:
|
||||
inc ebx
|
||||
shl ebx, 3
|
||||
mov eax, [screens]
|
||||
call mf_realloc
|
||||
call xrealloc
|
||||
test eax, eax
|
||||
jnz @f
|
||||
mov eax, ebp
|
||||
@@ -461,7 +469,7 @@ delete_active_screen:
|
||||
mov ebx, [num_screens]
|
||||
shl ebx, 3
|
||||
mov eax, [screens]
|
||||
call mf_realloc
|
||||
call mf_realloc ; must succeed, because we decrease size
|
||||
pop eax
|
||||
call mf_free
|
||||
and [active_screen], 0
|
||||
@@ -484,7 +492,7 @@ F12:
|
||||
add eax, 8
|
||||
mov esi, eax
|
||||
mul [num_screens]
|
||||
call mf_alloc
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jnz @f
|
||||
ret
|
||||
@@ -737,11 +745,16 @@ panels_OnKey:
|
||||
cmp byte [esi+2], 0
|
||||
jz .dotdot
|
||||
@@:
|
||||
lea edi, [ebp + panel1_dir - panel1_data]
|
||||
mov al, 0
|
||||
or ecx, -1
|
||||
repnz scasb
|
||||
dec edi
|
||||
push esi
|
||||
lea esi, [ebp + panel1_dir - panel1_data]
|
||||
mov edi, prev_dir
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test al, al
|
||||
jnz @b
|
||||
lea edi, [esi-1]
|
||||
pop esi
|
||||
mov al, '/'
|
||||
cmp [edi-1], al
|
||||
jz @f
|
||||
@@ -879,7 +892,7 @@ panels_OnKey:
|
||||
test eax, eax
|
||||
jnz .drive_loop_i_done
|
||||
mov eax, 32+8
|
||||
call mf_alloc
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jz .drive_loop_i_done
|
||||
jecxz @f
|
||||
@@ -951,6 +964,12 @@ panels_OnKey:
|
||||
jz .ret2
|
||||
lea esi, [eax+8]
|
||||
lea edi, [ebp + panel1_dir - panel1_data]
|
||||
push ecx esi edi
|
||||
mov esi, edi
|
||||
mov edi, prev_dir
|
||||
mov ecx, 1024/4
|
||||
rep movsd
|
||||
pop edi esi ecx
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
@@ -1068,12 +1087,6 @@ panels_OnKey:
|
||||
mov [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
|
||||
add eax, aCancelBLength - 1
|
||||
mov [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
|
||||
mov al, [dialog_border_color]
|
||||
mov [ebx + dlgtemplate.border_color], al
|
||||
mov al, [dialog_header_color]
|
||||
mov [ebx + dlgtemplate.header_color], al
|
||||
mov al, [dialog_main_color]
|
||||
mov [ebx + dlgtemplate.main_color], al
|
||||
mov byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
|
||||
and byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
|
||||
and byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
|
||||
@@ -1292,12 +1305,6 @@ panels_OnKey:
|
||||
mov [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x1], eax
|
||||
add eax, aCancelLength - 1
|
||||
mov [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x2], eax
|
||||
mov al, [dialog_border_color]
|
||||
mov [ebx + dlgtemplate.border_color], al
|
||||
mov al, [dialog_header_color]
|
||||
mov [ebx + dlgtemplate.header_color], al
|
||||
mov al, [dialog_main_color]
|
||||
mov [ebx + dlgtemplate.main_color], al
|
||||
or byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags1], 4
|
||||
and byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags2], not 4
|
||||
push ebx
|
||||
@@ -1428,7 +1435,7 @@ panels_OnKey:
|
||||
mov eax, ecx
|
||||
@@:
|
||||
add eax, 12
|
||||
call mf_alloc
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jz .menucreated
|
||||
add eax, 4
|
||||
@@ -1661,28 +1668,38 @@ draw_window:
|
||||
imul ecx, font_height
|
||||
lea ecx, [eax+ecx+5-1+100*65536]
|
||||
xor eax, eax
|
||||
mov edx, 0x13000000
|
||||
mov edx, 0x53000000
|
||||
mov edi, header
|
||||
int 40h
|
||||
mov al, 48
|
||||
push 3
|
||||
pop ebx
|
||||
mov ecx, std_colors
|
||||
push 40
|
||||
pop edx
|
||||
int 40h
|
||||
; mov bl, 7
|
||||
; int 40h
|
||||
; xor ax, ax
|
||||
; shr ebx, 16
|
||||
; or ebx, eax
|
||||
; mov ecx, [std_colors+16]
|
||||
; mov edx, header
|
||||
; push header.length
|
||||
; pop esi
|
||||
; push 4
|
||||
; pop eax
|
||||
; int 40h
|
||||
mov al, 13
|
||||
xor edx, edx
|
||||
cmp [fill_width], 0
|
||||
jz @f
|
||||
mov ebx, [wnd_width]
|
||||
sub ebx, [fill_width]
|
||||
sub ebx, 5-1
|
||||
shl ebx, 16
|
||||
mov bx, word [fill_width]
|
||||
mov ecx, [skinh-2]
|
||||
mov cx, word [wnd_height]
|
||||
sub cx, word [skinh]
|
||||
sub cx, 5-1
|
||||
int 0x40
|
||||
@@:
|
||||
cmp [fill_height], 0
|
||||
jz @f
|
||||
mov al, 13
|
||||
xor edx, edx
|
||||
mov ebx, 50000h
|
||||
mov bx, word [wnd_width]
|
||||
sub ebx, 9
|
||||
mov ecx, [wnd_height]
|
||||
sub ecx, [fill_height]
|
||||
sub ecx, 5-1
|
||||
shl ecx, 16
|
||||
mov cx, word [fill_height]
|
||||
int 0x40
|
||||
@@:
|
||||
; xor ecx, ecx
|
||||
; call draw_image
|
||||
and [min_x], 0
|
||||
@@ -1935,6 +1952,7 @@ end if
|
||||
push 8
|
||||
pop esi
|
||||
mov edi, console_colors
|
||||
xor ebp, ebp
|
||||
int 0x40
|
||||
push 64
|
||||
pop eax
|
||||
@@ -2611,6 +2629,7 @@ read_folder:
|
||||
mov [dirinfo.dirdata], eax
|
||||
lea eax, [ebp + panel1_dir - panel1_data]
|
||||
mov [dirinfo.name], eax
|
||||
.retry:
|
||||
push 70
|
||||
pop eax
|
||||
mov ebx, dirinfo
|
||||
@@ -2619,23 +2638,77 @@ read_folder:
|
||||
jz .ok
|
||||
cmp eax, 6
|
||||
jz .ok
|
||||
; TODO: add error handling
|
||||
mov [ebp + panel1_numfiles - panel1_data], 2
|
||||
mov eax, [ebp + panel1_nfa - panel1_data]
|
||||
shl eax, 2
|
||||
add eax, [ebp + panel1_files - panel1_data]
|
||||
add eax, 32+40
|
||||
mov word [eax], '..'
|
||||
mov byte [eax+2], 0
|
||||
add eax, 304
|
||||
mov dword [eax], 'Read'
|
||||
mov dword [eax+4], ' err'
|
||||
mov dword [eax+8], 'or'
|
||||
mov eax, [ebp + panel1_files - panel1_data]
|
||||
mov dword [eax], 0
|
||||
mov dword [eax+4], 304
|
||||
; Failed to read folder, notify user
|
||||
cmp [bSilentFolderMode], 0
|
||||
jnz .dont_notify
|
||||
push aContinue
|
||||
push aRetry
|
||||
mov edx, esp
|
||||
call get_error_msg
|
||||
push [dirinfo.name]
|
||||
push aCannotReadFolder
|
||||
push eax
|
||||
mov eax, esp
|
||||
push edx
|
||||
push 2
|
||||
push eax
|
||||
push 3
|
||||
push -1
|
||||
push -1
|
||||
push aError
|
||||
call SayErr
|
||||
add esp, 5*4
|
||||
test eax, eax
|
||||
jz .retry
|
||||
.dont_notify:
|
||||
mov esi, prev_dir
|
||||
cmp byte [esi], 0
|
||||
jz @f
|
||||
lea edi, [ebp + panel1_dir - panel1_data]
|
||||
mov ecx, 1024/4
|
||||
rep movsd
|
||||
mov byte [prev_dir], 0
|
||||
ret
|
||||
@@:
|
||||
mov [bSilentFolderMode], 1 ; enter silent mode
|
||||
mov esi, [dirinfo.name]
|
||||
xor edx, edx
|
||||
.up1:
|
||||
lodsb
|
||||
test al, al
|
||||
jz .up1done
|
||||
cmp al, '/'
|
||||
jnz .up1
|
||||
inc edx
|
||||
lea edi, [esi-1]
|
||||
jmp .up1
|
||||
.up1done:
|
||||
cmp edx, 2
|
||||
jbe .noup
|
||||
stosb
|
||||
jmp read_folder
|
||||
.noup:
|
||||
mov esi, [dirinfo.name]
|
||||
mov edi, esi
|
||||
lodsd
|
||||
or eax, 0x00202000
|
||||
cmp eax, '/rd/'
|
||||
jnz @f
|
||||
lodsw
|
||||
cmp ax, '1'
|
||||
jz .nosetrd
|
||||
@@:
|
||||
mov eax, '/rd/'
|
||||
stosd
|
||||
mov ax, '1'
|
||||
stosw
|
||||
jmp read_folder
|
||||
.nosetrd:
|
||||
; <20><><EFBFBD><EFBFBD> ࠬ<><E0A0AC><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>⠫<EFBFBD><E2A0AB>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD>졠...
|
||||
and dword [ebp + panel1_numfiles - panel1_data], 0
|
||||
and dword [ebp + panel1_index - panel1_data], 0
|
||||
and dword [ebp + panel1_start - panel1_data], 0
|
||||
mov [bSilentFolderMode], 0 ; leave silent mode
|
||||
ret
|
||||
.ok:
|
||||
mov eax, [dirinfo.dirdata]
|
||||
@@ -2651,11 +2724,10 @@ read_folder:
|
||||
push eax
|
||||
imul eax, 4+304
|
||||
add eax, 32
|
||||
call mf_alloc
|
||||
call xmalloc
|
||||
test eax, eax
|
||||
jnz .succ1
|
||||
pop eax
|
||||
; TODO: add error handling
|
||||
jmp .readdone
|
||||
.succ1:
|
||||
mov [ebp + panel1_files - panel1_data], eax
|
||||
@@ -2746,6 +2818,7 @@ sort_files:
|
||||
mov edx, [ebp + panel1_files - panel1_data]
|
||||
mov ecx, [ebp + panel1_numfiles - panel1_data]
|
||||
call sort
|
||||
mov [bSilentFolderMode], 0 ; leave silent mode
|
||||
ret
|
||||
|
||||
compare_name:
|
||||
@@ -3934,7 +4007,7 @@ find_extension:
|
||||
pop esi
|
||||
ret
|
||||
|
||||
header db 'Kolibri Far 0.19',0
|
||||
header db 'Kolibri Far 0.2',0
|
||||
|
||||
nomem_draw db 'No memory for redraw.',0
|
||||
.size = $ - nomem_draw
|
||||
@@ -3942,6 +4015,8 @@ nomem_draw db 'No memory for redraw.',0
|
||||
def_left_dir db '/rd/1',0
|
||||
def_right_dir db '/hd0/1',0
|
||||
|
||||
bSilentFolderMode db 1
|
||||
|
||||
if lang eq ru
|
||||
aFolder db '<27><><EFBFBD><EFBFBD><EFBFBD>'
|
||||
.size = $-aFolder
|
||||
@@ -4310,6 +4385,8 @@ cur_width dd 80
|
||||
cur_height dd 25
|
||||
saved_width dd -1
|
||||
saved_height dd -1
|
||||
fill_width dd 0
|
||||
fill_height dd 0
|
||||
max_width = 256
|
||||
max_height = 256
|
||||
console_data_ptr dd 0
|
||||
@@ -4368,6 +4445,25 @@ viewer_vtable:
|
||||
dd keybar_viewer
|
||||
dd viewer_getname
|
||||
|
||||
; additions to this table require changes in tools.inc::get_error_msg
|
||||
errors1:
|
||||
dd error0msg
|
||||
dd error1msg
|
||||
dd error2msg
|
||||
dd error3msg
|
||||
dd error4msg
|
||||
dd error5msg
|
||||
dd error6msg
|
||||
dd error7msg
|
||||
dd error8msg
|
||||
dd error9msg
|
||||
dd error10msg
|
||||
dd error11msg
|
||||
errors2:
|
||||
dd error30msg
|
||||
dd error31msg
|
||||
dd error32msg
|
||||
|
||||
encodings:
|
||||
.cp866 = 0
|
||||
.cp1251 = 1
|
||||
@@ -4565,13 +4661,24 @@ panel_active_header_color db 30h
|
||||
column_header_color db 1Eh
|
||||
panel_nscreens_color db 0Bh
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dialog_colors:
|
||||
dialog_main_color db 70h
|
||||
dialog_border_color db 70h
|
||||
dialog_header_color db 70h
|
||||
dialog_normal_btn_color db 70h
|
||||
dialog_selected_btn_color db 30h
|
||||
dialog_edit_color db 30h
|
||||
dialog_unmodified_edit_color db 38h
|
||||
dialog_normal_btn_color db 70h
|
||||
dialog_selected_btn_color db 30h
|
||||
; <20>।<EFBFBD><E0A5A4>०<EFBFBD><E0A5A6><EFBFBD><EFBFBD><EFBFBD> <20> <20>訡<EFBFBD><E8A8A1>
|
||||
warning_colors:
|
||||
; !!! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20> <20> ⮬ <20><> <20><><EFBFBD>浪<EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !!!
|
||||
warning_main_color db 4Fh
|
||||
warning_border_color db 4Fh
|
||||
warning_header_color db 4Fh
|
||||
warning_edit_color db 30h
|
||||
warning_unmodified_edit_color db 38h
|
||||
warning_normal_btn_color db 4Fh
|
||||
warning_selected_btn_color db 70h
|
||||
; <20><><EFBFBD><EFBFBD>
|
||||
menu_normal_color db 3Fh
|
||||
menu_selected_color db 0Fh
|
||||
@@ -4754,8 +4861,33 @@ bWasE0 db 0
|
||||
ctrlstate db 0
|
||||
|
||||
align 4
|
||||
f8_confirm_dlgdata:
|
||||
; <20><><EFBFBD><EFBFBD>饭<EFBFBD><E9A5AD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
nomem_dlgdata:
|
||||
dd 2
|
||||
dd -1
|
||||
dd -1
|
||||
dd 12
|
||||
dd 2
|
||||
dd 1
|
||||
dd 1
|
||||
dd aError
|
||||
rb 4
|
||||
dd 0
|
||||
dd 0
|
||||
dd 2
|
||||
; <20><>ப<EFBFBD> "No memory"
|
||||
dd 1
|
||||
dd 1,0,10,0
|
||||
dd aNoMemory
|
||||
dd 1
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "Ok"
|
||||
dd 2
|
||||
dd 4,1,7,1
|
||||
dd aOk
|
||||
dd 0xD
|
||||
|
||||
f8_confirm_dlgdata:
|
||||
dd 1
|
||||
.x dd -1
|
||||
.y dd -1
|
||||
.width dd ?
|
||||
@@ -4804,7 +4936,7 @@ f8_confirm_dlgdata:
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD>
|
||||
copy_dlgdata:
|
||||
dd 0
|
||||
dd 1
|
||||
.x dd -1
|
||||
.y dd -1
|
||||
.width dd ?
|
||||
@@ -4869,6 +5001,26 @@ aCopy db '[
|
||||
aCopyLength = $ - aCopy - 1
|
||||
aCopy1 db '<27><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> "',0
|
||||
aCopy2 db '" <20>:',0
|
||||
aError db '<27>訡<EFBFBD><E8A8A1>',0
|
||||
aContinue db '<27>த<EFBFBD><E0AEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
aRetry db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
error0msg db '<27><>࠭<EFBFBD><E0A0AD>... <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1>',0
|
||||
error1msg db '<27><>࠭<EFBFBD><E0A0AD>... <20><> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>/<2F><><EFBFBD> ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD>⪮<EFBFBD><E2AAAE> <20><>᪠',0
|
||||
error2msg db '<27>㭪<EFBFBD><E3ADAA><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ন<EFBFBD><E0A6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD>',0
|
||||
error3msg db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⭠<EFBFBD> 䠩<><E4A0A9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD>',0
|
||||
error4msg db '<27><>࠭<EFBFBD><E0A0AD>... <20>訡<EFBFBD><E8A8A1> 4',0
|
||||
error5msg db '<27><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
error6msg db '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>稫<EFBFBD><E7A8AB>',0
|
||||
error7msg db '<27><>࠭<EFBFBD><E0A0AD>... <20><><EFBFBD><EFBFBD><EFBFBD>⥫<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
error8msg db '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
error9msg db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧ<><E0A0A7>襭<EFBFBD>',0
|
||||
error10msg db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
error11msg db '<27>訡<EFBFBD><E8A8A1> <20><><EFBFBD>ன<EFBFBD>⢠',0
|
||||
error30msg db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>筮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
error31msg db '<27><><EFBFBD><EFBFBD> <20><> <><EFA2AB><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE>塞<EFBFBD><EFA5AC>',0
|
||||
error32msg db '<27><><EFBFBD>誮<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ',0
|
||||
aUnknownError db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1>: ',0
|
||||
aCannotReadFolder db '<27><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>',0
|
||||
else
|
||||
aDeleteCaption db 'Delete',0
|
||||
aConfirmDeleteText db 'Do you wish to delete ',0
|
||||
@@ -4886,7 +5038,29 @@ aCopy db '[ Copy ]',0
|
||||
aCopyLength = $ - aCopy - 1
|
||||
aCopy1 db 'Copy "',0
|
||||
aCopy2 db '" to:',0
|
||||
aError db 'Error',0
|
||||
aContinue db 'Continue',0
|
||||
aRetry db 'Retry',0
|
||||
error0msg db 'Strange... No error',0
|
||||
error1msg db 'Strange... Hard disk base and/or partition not defined',0
|
||||
error2msg db 'The file system does not support this function',0
|
||||
error3msg db 'Unknown file system',0
|
||||
error4msg db 'Strange... Error 4',0
|
||||
error5msg db 'File not found',0
|
||||
error6msg db 'End of file',0
|
||||
error7msg db 'Strange... Pointer lies outside of application memory',0
|
||||
error8msg db 'Disk is full',0
|
||||
error9msg db 'File structure is destroyed',0
|
||||
error10msg db 'Access denied',0
|
||||
error11msg db 'Device error',0
|
||||
error30msg db 'Not enough memory',0
|
||||
error31msg db 'File is not executable',0
|
||||
error32msg db 'Too many processes',0
|
||||
aUnknownError db 'Unknown error code: ',0
|
||||
aCannotReadFolder db 'Cannot read folder',0
|
||||
end if
|
||||
aOk db 'OK',0
|
||||
aNoMemory db 'No memory!',0
|
||||
|
||||
execinfo:
|
||||
dd 7
|
||||
@@ -4941,6 +5115,8 @@ panel2_dir rb 1024
|
||||
|
||||
;console_data rb max_width*max_height*2
|
||||
|
||||
nomem_dlgsavearea rb (12+4)*(3+3)*2
|
||||
|
||||
cur_header rb max_width
|
||||
tmp dd ?
|
||||
|
||||
@@ -4954,6 +5130,9 @@ max_x dd ?
|
||||
used_width dd ?
|
||||
used_height dd ?
|
||||
|
||||
wnd_width dd ?
|
||||
wnd_height dd ?
|
||||
|
||||
column_left dd ?
|
||||
column_top dd ?
|
||||
column_width dd ?
|
||||
@@ -4967,6 +5146,10 @@ saved_file_name:
|
||||
procinfo rb 1024
|
||||
lower_file_name = procinfo + 512
|
||||
|
||||
error_msg rb 128
|
||||
|
||||
prev_dir rb 1024
|
||||
|
||||
driveinfo rb 32+304
|
||||
tmpname rb 32
|
||||
|
||||
|
69
programs/fs/kfar/trunk/tools.inc
Normal file
69
programs/fs/kfar/trunk/tools.inc
Normal file
@@ -0,0 +1,69 @@
|
||||
xmalloc:
|
||||
; in: eax=size
|
||||
; out: eax=pointer or NULL
|
||||
call mf_alloc
|
||||
.common:
|
||||
test eax, eax
|
||||
jnz @f
|
||||
call SayNoMem
|
||||
xor eax, eax
|
||||
@@:
|
||||
ret
|
||||
|
||||
xrealloc:
|
||||
; in: eax=pointer, ebx=new size
|
||||
; out: eax=pointer or NULL
|
||||
call mf_realloc
|
||||
jmp xmalloc.common
|
||||
|
||||
get_error_msg:
|
||||
; in: eax=error code
|
||||
; out: eax=pointer to message (in static buffer)
|
||||
push esi edi
|
||||
mov edi, error_msg
|
||||
cmp eax, 11
|
||||
ja .no1
|
||||
mov esi, [errors1+eax*4]
|
||||
jmp .copy
|
||||
.no1:
|
||||
cmp eax, 30
|
||||
jb .no2
|
||||
cmp eax, 32
|
||||
ja .no2
|
||||
mov esi, [errors2+(eax-30)*4]
|
||||
.copy:
|
||||
lodsb
|
||||
stosb
|
||||
test al, al
|
||||
jnz .copy
|
||||
.ret:
|
||||
mov eax, error_msg
|
||||
pop edi esi
|
||||
ret
|
||||
.no2:
|
||||
mov esi, aUnknownError
|
||||
push eax
|
||||
@@:
|
||||
lodsb
|
||||
stosb
|
||||
test al, al
|
||||
jnz @b
|
||||
pop eax
|
||||
push edx ecx
|
||||
test eax, eax
|
||||
jns @f
|
||||
mov byte [edi], '-'
|
||||
inc edi
|
||||
neg eax
|
||||
@@:
|
||||
xor edx, edx
|
||||
mov ecx, 10
|
||||
div ecx
|
||||
add edx, '0'
|
||||
mov byte [edi], dl
|
||||
inc edi
|
||||
test eax, eax
|
||||
jnz @b
|
||||
pop ecx edx
|
||||
stosb
|
||||
jmp .ret
|
Reference in New Issue
Block a user