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 |