Subversion Repositories Kolibri OS

Rev

Rev 4868 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4868 Rev 4869
Line 1... Line 1...
1
; KolSPForth v12
1
; KolSPForth v12
Line 2... Line -...
2
 
-
 
3
SYSTEM equ EMUL
-
 
4
 
2
 
5
;Memory Map
3
;Memory Map
6
;
4
;
7
;0
5
;0
8
;0x02C7D	;I_END
6
;0x02C7D	;I_END
Line 97... Line 95...
97
 	dd     0x01
95
 	dd     0x01
98
 	dd     ORIG         ; start of code
96
 	dd     ORIG         ; start of code
99
 	dd     I_END        ; size of image
97
 	dd     I_END        ; size of image
100
MEMS: 	dd     EM       ; memory for app
98
MEMS: 	dd     EM       ; memory for app
101
 	dd     SPP          ; esp
99
 	dd     SPP          ; esp
102
if SYSTEM eq MEOS
-
 
103
 	dd     FINFO.path
-
 
104
else
-
 
105
	dd     0
100
	dd     params
106
end if
-
 
107
 	dd     0x0	; I_Param , I_Icon
101
	dd     cur_dir_path
Line 108... Line 102...
108
 
102
 
109
 lang fix ru
103
 lang fix ru
110
 include 'MACROS.INC'
104
 include 'MACROS.INC'
Line 111... Line 105...
111
 include '..\..\proc32.inc'
105
 include '..\..\proc32.inc'
112
 
106
 
Line 113... Line 107...
113
align 4
107
align 4
114
proc strncmp stdcall, s1:dword, s2:dword, n:dword
108
proc strncmp stdcall, s1:dword, s2:dword, n:dword
115
 
109
 
116
           push esi
110
	   push esi
117
           push edi
111
	   push edi
118
           mov ecx, [n]
112
	   mov ecx, [n]
119
           test ecx, ecx         ; Max length is zero?
113
	   test ecx, ecx         ; Max length is zero?
120
           je .done
114
	   je .done
121
 
115
 
122
           mov esi, [s1]         ; esi = string s1
116
	   mov esi, [s1]         ; esi = string s1
123
           mov edi, [s2]         ; edi = string s2
117
	   mov edi, [s2]         ; edi = string s2
124
           cld
118
	   cld
125
.compare:
119
.compare:
126
           cmpsb                 ; Compare two bytes
120
	   cmpsb                 ; Compare two bytes
127
           jne .done
121
	   jne .done
128
           cmp byte [esi-1], 0   ; End of string?
122
	   cmp byte [esi-1], 0   ; End of string?
129
           je .done
123
	   je .done
130
           dec ecx               ; Length limit reached?
124
	   dec ecx               ; Length limit reached?
131
           jne .compare
125
	   jne .compare
132
.done:
126
.done:
133
           seta al               ; al = (s1 > s2)
127
	   seta al               ; al = (s1 > s2)
134
           setb ah               ; ah = (s1 < s2)
128
	   setb ah               ; ah = (s1 < s2)
135
           sub al, ah
129
	   sub al, ah
136
           movsx eax, al         ; eax = (s1 > s2) - (s1 < s2), i.e. -1, 0, 1
130
	   movsx eax, al         ; eax = (s1 > s2) - (s1 < s2), i.e. -1, 0, 1
137
           pop edi
131
	   pop edi
Line 138... Line 132...
138
           pop esi
132
	   pop esi
139
           ret
133
	   ret
140
endp
134
endp
Line 470... Line 464...
470
 last_ebp dd 0
464
 last_ebp dd 0
Line 471... Line 465...
471
 
465
 
Line 472... Line 466...
472
 include 'amain.asm'
466
 include 'amain.asm'
-
 
467
 
-
 
468
 header db   'Kolibri Forth v12.1',0
-
 
469
 params: rb 256
Line 473... Line 470...
473
 
470
 cur_dir_path: rb 4096
474
 header db   'Kolibri Forth v12.1',0
471
 
475
 
472
 
476
 FINFO:
473
 FINFO:
477
 	.mode dd 0
474
 	.mode dd 0
478
 			  dd 0
475
		  dd 0
479
 	.blk  dd 1
-
 
480
 	.buf  dd 0
-
 
481
 	.work dd os_work
-
 
482
 	.path:
-
 
483
 	 db '/RD/1/AUTOLOAD.F'
-
 
484
; 	 db '/RD/1/EXAMPLE.F'
-
 
485
;	 db '/RD/1/PICTURE.F'
-
 
486
 	db 0
-
 
487
 	.end_path:
-
 
Line 488... Line 476...
488
 
476
 	.blk  dd 1
Line 489... Line 477...
489
 
477
 	.buf  dd 0