Rev 387 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 387 | Rev 388 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | tmp_page_tab equ HEAP_BASE |
- | |
2 | - | ||
3 | align 4 |
- | |
4 | proc mem_test |
- | |
5 | - | ||
6 | mov eax, cr0 |
- | |
7 | and eax, not (CR0_CD+CR0_NW) |
- | |
8 | or eax, CR0_CD ;disable caching |
- | |
9 | mov cr0, eax |
- | |
10 | wbinvd ;invalidate cache |
- | |
11 | - | ||
12 | xor edi, edi |
- | |
13 | mov ebx, 'TEST' |
- | |
14 | @@: |
- | |
15 | add edi, 0x400000 |
- | |
16 | xchg ebx, dword [edi] |
- | |
17 | cmp dword [edi], 'TEST' |
- | |
18 | xchg ebx, dword [edi] |
- | |
19 | je @b |
- | |
20 | mov [MEM_AMOUNT], edi |
- | |
21 | - | ||
22 | and eax, not (CR0_CD+CR0_NW) ;enable caching |
- | |
23 | mov cr0, eax |
- | |
24 | mov eax, edi |
- | |
25 | mov [LFBSize], 0x00800000 |
- | |
26 | ret |
- | |
27 | endp |
- | |
28 | - | ||
29 | align 4 |
- | |
30 | proc init_mem |
- | |
31 | - | ||
32 | mov eax, [MEM_AMOUNT] |
- | |
33 | - | ||
34 | mov [pg_data.mem_amount], eax |
- | |
35 | mov [pg_data.kernel_max], eax |
- | |
36 | - | ||
37 | shr eax, 12 |
- | |
38 | mov edx, eax |
- | |
39 | mov [pg_data.pages_count], eax |
- | |
40 | mov [pg_data.kernel_pages], eax |
- | |
41 | - | ||
42 | shr eax, 3 |
- | |
43 | mov [pg_data.pagemap_size], eax |
- | |
44 | - | ||
45 | shr edx, 10 |
- | |
46 | cmp edx, 3 |
- | |
47 | ja @f |
- | |
48 | inc edx ;at least 4Mb for kernel heap |
- | |
49 | @@: |
- | |
50 | mov [pg_data.kernel_tables], edx |
- | |
51 | - | ||
52 | xor eax, eax |
- | |
53 | mov edi, sys_pgdir |
- | |
54 | mov ecx, 2048 |
- | |
55 | cld |
- | |
56 | rep stosd |
- | |
57 | - | ||
58 | mov edx, sys_pgdir |
- | |
59 | bt [cpu_caps], CAPS_PSE |
- | |
60 | jnc .no_PSE |
- | |
61 | - | ||
62 | mov ebx, cr4 |
- | |
63 | or ebx, CR4_PSE |
- | |
64 | mov eax, PG_LARGE+PG_SW |
- | |
65 | bt [cpu_caps], CAPS_PGE |
- | |
66 | jnc @F |
- | |
67 | or eax, PG_GLOBAL |
- | |
68 | or ebx, CR4_PGE |
- | |
69 | @@: |
- | |
70 | mov cr4, ebx |
- | |
71 | sub [pg_data.kernel_tables], 2 |
- | |
72 | - | ||
73 | mov [edx], eax |
- | |
74 | add eax, 0x00400000 |
- | |
75 | mov [edx+4], eax |
- | |
76 | add edx, 8 |
- | |
77 | - | ||
78 | mov eax, 0x800000+PG_SW |
- | |
79 | mov ecx, (HEAP_BASE-0x800000)/4096 |
- | |
80 | jmp .map_low |
- | |
81 | .no_PSE: |
- | |
82 | mov eax, PG_SW |
- | |
83 | mov ecx, HEAP_BASE/4096 |
- | |
84 | .map_low: |
- | |
85 | mov edi, tmp_page_tab |
- | |
86 | @@: ; |
- | |
87 | stosd |
- | |
88 | add eax, 0x1000 |
- | |
89 | dec ecx |
- | |
90 | jnz @B |
- | |
91 | - | ||
92 | mov ecx, [pg_data.kernel_tables] |
- | |
93 | shl ecx, 10 |
- | |
94 | xor eax, eax |
- | |
95 | rep stosd |
- | |
96 | - | ||
97 | mov ecx, [pg_data.kernel_tables] |
- | |
98 | mov eax, tmp_page_tab+PG_SW |
- | |
99 | mov edi, edx |
- | |
100 | - | ||
101 | .map_kernel_tabs: |
- | |
102 | - | ||
103 | stosd |
- | |
104 | add eax, 0x1000 |
- | |
105 | dec ecx |
- | |
106 | jnz .map_kernel_tabs |
- | |
107 | - | ||
108 | mov dword [sys_pgdir+(page_tabs shr 20)], sys_pgdir+PG_SW |
- | |
109 | ret |
- | |
110 | endp |
- | |
111 | - | ||
112 | align 4 |
- | |
113 | proc init_page_map |
- | |
114 | - | ||
115 | mov edi, sys_pgmap |
- | |
116 | mov ecx, (HEAP_BASE/4096)/32 ;384/4 |
- | |
117 | mov ebx, ecx |
- | |
118 | xor eax,eax |
- | |
119 | cld |
- | |
120 | rep stosd |
- | |
121 | - | ||
122 | not eax |
- | |
123 | mov ecx, [pg_data.pagemap_size] |
- | |
124 | sub ecx, ebx |
- | |
125 | shr ecx, 2 |
- | |
126 | rep stosd |
- | |
127 | - | ||
128 | lea edi, [sys_pgmap+ebx*4] ;+384 |
- | |
129 | mov edx, [pg_data.pages_count] |
- | |
130 | mov ecx, [pg_data.kernel_tables] |
- | |
131 | add ecx, (HEAP_BASE/4096) and 31 |
- | |
132 | sub edx, HEAP_BASE/4096 |
- | |
133 | sub edx, ecx |
- | |
134 | mov [pg_data.pages_free], edx |
- | |
135 | - | ||
136 | xor eax, eax |
- | |
137 | mov ebx, ecx |
- | |
138 | shr ecx, 5 |
- | |
139 | rep stosd |
- | |
140 | - | ||
141 | not eax |
- | |
142 | mov ecx, ebx |
- | |
143 | and ecx, 31 |
- | |
144 | shl eax, cl |
- | |
145 | mov [page_start], edi; sys_pgmap+384 |
- | |
146 | stosd |
- | |
147 | - | ||
148 | mov ebx, sys_pgmap |
- | |
149 | add ebx, [pg_data.pagemap_size] |
- | |
150 | mov [page_end], ebx |
- | |
151 | - | ||
152 | mov [pg_data.pg_mutex], 0 |
- | |
153 | - | ||
154 | ret |
- | |
155 | endp |
- | |
156 | - | ||
157 | align 4 |
1 | align 4 |
158 | proc alloc_page |
2 | proc alloc_page |
Line 159... | Line 3... | ||
159 | 3 | ||
160 | pushfd |
4 | pushfd |
Line 380... | Line 224... | ||
380 | endl |
224 | endl |
381 | 225 | ||
Line 382... | Line 226... | ||
382 | cmp dword [LFBAddress], -1 |
226 | cmp dword [LFBAddress], -1 |
383 | jne @f |
227 | jne @f |
384 | mov [0x2f0000+0x901c],byte 2 |
228 | mov [BOOT_VAR+0x901c],byte 2 |
385 | stdcall kernel_alloc, 0x280000 |
229 | stdcall kernel_alloc, 0x280000 |
386 | mov [LFBAddress], eax |
230 | mov [LFBAddress], eax |
387 | ret |
231 | ret |
388 | @@: |
232 | @@: |
389 | test [SCR_MODE],word 0100000000000000b |
233 | test [SCR_MODE],word 0100000000000000b |
390 | jnz @f |
234 | jnz @f |
391 | mov [0x2f0000+0x901c],byte 2 |
235 | mov [BOOT_VAR+0x901c],byte 2 |
392 | ret |
236 | ret |
393 | @@: |
237 | @@: |
394 | mov edx, LFB_BASE |
238 | mov edx, LFB_BASE |
395 | mov esi, [LFBAddress] |
239 | mov esi, [LFBAddress] |
396 | mov edi, [LFBSize] |
240 | mov edi, 0x00800000 |
397 | mov dword [exp_lfb+4], edx |
241 | mov dword [exp_lfb+4], edx |
Line -... | Line 242... | ||
- | 242 | ||
- | 243 | push eax |
|
- | 244 | push edx |
|
- | 245 | mov edx, 0x400 ;bocsh |
|
- | 246 | mov al,0xff ;bocsh |
|
- | 247 | out dx, al ;bocsh |
|
- | 248 | pop edx |
|
- | 249 | pop eax |
|
398 | 250 | ||
399 | shr edi, 12 |
251 | shr edi, 12 |
400 | mov [pg_count], edi |
252 | mov [pg_count], edi |
Line 401... | Line 253... | ||
401 | shr edi, 10 |
253 | shr edi, 10 |
Line 425... | Line 277... | ||
425 | 277 | ||
Line 426... | Line 278... | ||
426 | @@: |
278 | @@: |
427 | call alloc_page |
279 | call alloc_page |
428 | stdcall map_page_table, edx, eax |
280 | stdcall map_page_table, edx, eax |
429 | add esi, 0x00400000 |
281 | add edx, 0x00400000 |
430 | dec edi |
282 | dec edi |
431 | jnz @B |
283 | jnz @B |
Line 432... | Line 284... | ||
432 | 284 | ||
433 | mov eax, [LFBAddress] |
285 | mov eax, [LFBAddress] |
434 | mov edi, page_tabs + (LFB_BASE shr 10) |
286 | mov edi, page_tabs + (LFB_BASE shr 10) |
435 | or eax, PG_UW |
287 | or eax, PG_UW |
436 | mov ecx, [pg_count] |
288 | mov ecx, [pg_count] |
- | 289 | cld |
|
437 | cld |
290 | @@: |
- | 291 | stosd |
|
- | 292 | add eax, 0x1000 |
|
- | 293 | dec ecx |
|
Line 438... | Line 294... | ||
438 | rep stosd |
294 | jnz @B |
439 | 295 | ||
440 | mov dword [LFBAddress], LFB_BASE |
296 | mov dword [LFBAddress], LFB_BASE |
Line 603... | Line 459... | ||
603 | align 4 |
459 | align 4 |
604 | proc page_fault_handler |
460 | proc page_fault_handler |
605 | pushad |
461 | pushad |
Line -... | Line 462... | ||
- | 462 | ||
- | 463 | push eax |
|
- | 464 | push edx |
|
- | 465 | mov edx, 0x400 ;bocsh |
|
- | 466 | mov al,0xff ;bocsh |
|
- | 467 | out dx, al ;bocsh |
|
- | 468 | pop edx |
|
- | 469 | pop eax |
|
606 | 470 | ||
607 | mov ebp, esp |
471 | mov ebp, esp |
608 | mov eax, cr2 |
472 | mov eax, cr2 |
609 | push eax |
473 | push eax |
610 | push ds |
474 | push ds |
Line 668... | Line 532... | ||
668 | pop ds |
532 | pop ds |
669 | mov esp, ebp |
533 | mov esp, ebp |
670 | popad |
534 | popad |
671 | add esp, 4 |
535 | add esp, 4 |
672 | 536 | iretd |
|
- | 537 | ||
Line 673... | Line 538... | ||
673 | save_ring3_context ;debugger support |
538 | save_ring3_context ;debugger support |
Line 674... | Line 539... | ||
674 | 539 | ||
675 | mov bl, 14 |
540 | mov bl, 14 |
Line 1084... | Line 949... | ||
1084 | mov [esp+36], eax |
949 | mov [esp+36], eax |
1085 | ret |
950 | ret |
1086 | 951 | ||
Line 1087... | Line 952... | ||
1087 | align 4 |
952 | align 4 |
1088 | proc strncmp stdcall, str1:dword, str2:dword, count:dword |
- | |
1089 | - | ||
1090 | mov ecx,[count] |
- | |
1091 | jecxz .end |
- | |
1092 | - | ||
1093 | mov ebx,ecx |
- | |
1094 | - | ||
1095 | mov edi,[str1] |
- | |
1096 | mov esi,edi |
- | |
1097 | xor eax,eax |
- | |
1098 | repne scasb |
- | |
1099 | neg ecx ; cx = count - strlen |
- | |
1100 | add ecx,ebx ; strlen + count - strlen |
- | |
1101 | - | ||
1102 | .okay: |
- | |
1103 | mov edi,esi |
- | |
1104 | mov esi,[str2] |
- | |
1105 | repe cmpsb |
- | |
1106 | mov al,[esi-1] |
- | |
1107 | xor ecx,ecx |
- | |
1108 | - | ||
1109 | cmp al,[edi-1] |
- | |
1110 | ja .str2_big |
- | |
1111 | je .end |
- | |
1112 | - | ||
1113 | .str1_big: |
- | |
1114 | sub ecx,2 |
- | |
1115 | - | ||
1116 | .str2_big: |
- | |
1117 | not ecx |
- | |
1118 | .end: |
- | |
1119 | mov eax,ecx |
- | |
1120 | ret |
- | |
1121 | endp |
- | |
1122 | - | ||
1123 | align 4 |
- | |
1124 | proc test_cpu |
- | |
1125 | locals |
- | |
1126 | cpu_type dd ? |
- | |
1127 | cpu_id dd ? |
- | |
1128 | cpu_Intel dd ? |
- | |
1129 | cpu_AMD dd ? |
- | |
1130 | endl |
- | |
1131 | - | ||
1132 | mov [cpu_type], 0 |
- | |
1133 | xor eax, eax |
- | |
1134 | mov [cpu_caps], eax |
- | |
1135 | mov [cpu_caps+4], eax |
- | |
1136 | - | ||
1137 | pushfd |
- | |
1138 | pop eax |
- | |
1139 | mov ecx, eax |
- | |
1140 | xor eax, 0x40000 |
- | |
1141 | push eax |
- | |
1142 | popfd |
- | |
1143 | pushfd |
- | |
1144 | pop eax |
- | |
1145 | xor eax, ecx |
- | |
1146 | mov [cpu_type], CPU_386 |
- | |
1147 | jz .end_cpuid |
- | |
1148 | push ecx |
- | |
1149 | popfd |
- | |
1150 | - | ||
1151 | mov [cpu_type], CPU_486 |
- | |
1152 | mov eax, ecx |
- | |
1153 | xor eax, 0x200000 |
- | |
1154 | push eax |
- | |
1155 | popfd |
- | |
1156 | pushfd |
- | |
1157 | pop eax |
- | |
1158 | xor eax, ecx |
- | |
1159 | je .end_cpuid |
- | |
1160 | mov [cpu_id], 1 |
- | |
1161 | - | ||
1162 | xor eax, eax |
- | |
1163 | cpuid |
- | |
1164 | mov [cpu_vendor], ebx |
- | |
1165 | mov [cpu_vendor+4], edx |
- | |
1166 | mov [cpu_vendor+8], ecx |
- | |
1167 | cmp ebx, dword [intel_str] |
- | |
1168 | jne .check_AMD |
- | |
1169 | cmp edx, dword [intel_str+4] |
- | |
1170 | jne .check_AMD |
- | |
1171 | cmp ecx, dword [intel_str+8] |
- | |
1172 | jne .check_AMD |
- | |
1173 | mov [cpu_Intel], 1 |
- | |
1174 | cmp eax, 1 |
- | |
1175 | jl .end_cpuid |
- | |
1176 | mov eax, 1 |
- | |
1177 | cpuid |
- | |
1178 | mov [cpu_sign], eax |
- | |
1179 | mov [cpu_info], ebx |
- | |
1180 | mov [cpu_caps], edx |
- | |
1181 | mov [cpu_caps+4],ecx |
- | |
1182 | - | ||
1183 | shr eax, 8 |
- | |
1184 | and eax, 0x0f |
- | |
1185 | ret |
- | |
1186 | .end_cpuid: |
- | |
1187 | mov eax, [cpu_type] |
- | |
1188 | ret |
- | |
1189 | - | ||
1190 | .check_AMD: |
- | |
1191 | cmp ebx, dword [AMD_str] |
- | |
1192 | jne .unknown |
- | |
1193 | cmp edx, dword [AMD_str+4] |
- | |
1194 | jne .unknown |
- | |
1195 | cmp ecx, dword [AMD_str+8] |
- | |
1196 | jne .unknown |
- | |
1197 | mov [cpu_AMD], 1 |
- | |
1198 | cmp eax, 1 |
- | |
1199 | jl .unknown |
- | |
1200 | mov eax, 1 |
- | |
1201 | cpuid |
- | |
1202 | mov [cpu_sign], eax |
- | |
1203 | mov [cpu_info], ebx |
- | |
1204 | mov [cpu_caps], edx |
- | |
1205 | mov [cpu_caps+4],ecx |
- | |
1206 | shr eax, 8 |
- | |
1207 | and eax, 0x0f |
- | |
1208 | ret |
- | |
1209 | .unknown: |
- | |
1210 | mov eax, 1 |
- | |
1211 | cpuid |
- | |
1212 | mov [cpu_sign], eax |
- | |
1213 | mov [cpu_info], ebx |
- | |
1214 | mov [cpu_caps], edx |
- | |
1215 | mov [cpu_caps+4],ecx |
- | |
1216 | shr eax, 8 |
- | |
1217 | and eax, 0x0f |
- | |
1218 | ret |
- | |
1219 | endp |
- | |
1220 | - | ||
1221 | MEM_WB equ 6 ;write-back memory |
- | |
1222 | MEM_WC equ 1 ;write combined memory |
- | |
1223 | MEM_UC equ 0 ;uncached memory |
- | |
1224 | - | ||
1225 | align 4 |
- | |
1226 | proc init_mtrr |
953 | proc init_mtrr |
Line 1227... | Line 954... | ||
1227 | 954 | ||
1228 | cmp [0x2f0000+0x901c],byte 2 |
955 | cmp [BOOT_VAR+0x901c],byte 2 |
Line 1229... | Line 956... | ||
1229 | je .exit |
956 | je .exit |
1230 | 957 | ||
Line 1295... | Line 1022... | ||
1295 | wrmsr |
1022 | wrmsr |
1296 | ret |
1023 | ret |
1297 | endp |
1024 | endp |
1298 | 1025 | ||
Line -... | Line 1026... | ||
- | 1026 | ||
- | 1027 | align 4 |
|
- | 1028 | proc strncmp stdcall, str1:dword, str2:dword, count:dword |
|
- | 1029 | ||
- | 1030 | mov ecx,[count] |
|
- | 1031 | jecxz .end |
|
- | 1032 | ||
- | 1033 | mov ebx,ecx |
|
- | 1034 | ||
- | 1035 | mov edi,[str1] |
|
- | 1036 | mov esi,edi |
|
- | 1037 | xor eax,eax |
|
- | 1038 | repne scasb |
|
- | 1039 | neg ecx ; cx = count - strlen |
|
- | 1040 | add ecx,ebx ; strlen + count - strlen |
|
- | 1041 | ||
- | 1042 | .okay: |
|
- | 1043 | mov edi,esi |
|
- | 1044 | mov esi,[str2] |
|
- | 1045 | repe cmpsb |
|
- | 1046 | mov al,[esi-1] |
|
- | 1047 | xor ecx,ecx |
|
- | 1048 | ||
- | 1049 | cmp al,[edi-1] |
|
- | 1050 | ja .str2_big |
|
- | 1051 | je .end |
|
- | 1052 | ||
- | 1053 | .str1_big: |
|
- | 1054 | sub ecx,2 |
|
- | 1055 | ||
- | 1056 | .str2_big: |
|
- | 1057 | not ecx |
|
- | 1058 | .end: |
|
- | 1059 | mov eax,ecx |
|
- | 1060 | ret |
|
- | 1061 | endp |
|
- | 1062 | ||
1299 | align 4 |
1063 | align 4 |
1300 | proc stall stdcall, delay:dword |
1064 | proc stall stdcall, delay:dword |
1301 | push ecx |
1065 | push ecx |
1302 | push edx |
1066 | push edx |
1303 | push ebx |
1067 | push ebx |
Line 1322... | Line 1086... | ||
1322 | pop ecx |
1086 | pop ecx |
1323 | ret |
1087 | ret |
1324 | endp |
1088 | endp |
1325 | 1089 | ||
Line 1326... | Line -... | ||
1326 | iglobal |
- | |
1327 | align 4 |
- | |
1328 | intel_str db "GenuineIntel",0 |
- | |
1329 | AMD_str db "AuthenticAMD",0 |
- | |
1330 | endg |
- | |
1331 | - | ||
1332 | uglobal |
- | |
1333 | align 16 |
- | |
1334 | irq_tab rd 16 |
- | |
1335 | - | ||
1336 | MEM_FreeSpace rd 1 |
- | |
1337 | - | ||
1338 | ipc_tmp rd 1 |
- | |
1339 | ipc_pdir rd 1 |
- | |
1340 | ipc_ptab rd 1 |
- | |
1341 | - | ||
1342 | proc_mem_map rd 1 |
- | |
1343 | proc_mem_pdir rd 1 |
- | |
1344 | proc_mem_tab rd 1 |
- | |
1345 | - | ||
1346 | tmp_task_pdir rd 1 |
- | |
1347 | tmp_task_ptab rd 1 |
- | |
1348 | - | ||
1349 | fdd_buff rd 1 |
- | |
1350 | LFBSize rd 1 |
- | |
1351 | - | ||
1352 | stall_mcs rd 1 |
- | |
1353 | ;;CPUID information |
- | |
1354 | - | ||
1355 | cpu_vendor rd 3 |
- | |
1356 | cpu_sign rd 1 |
- | |
1357 | cpu_info rd 1 |
- | |
1358 | - | ||
1359 | ;;;;; cursors data |
- | |
1360 | - | ||
1361 | align 16 |
- | |
1362 | cur_saved_data rb 4096 |
- | |
1363 | - | ||
1364 | def_cursor rd 1 |
- | |
1365 | hw_cursor rd 1 |
- | |
1366 | - | ||
1367 | scr_width rd 1 |
- | |
1368 | scr_height rd 1 |
- | |
1369 | - | ||
1370 | cur_def_interl rd 1 |
- | |
1371 | cur_saved_base rd 1 |
- | |
1372 | cur_saved_interl rd 1 |
- | |
1373 | cur_saved_w rd 1 |
- | |
1374 | cur_saved_h rd 1 |
- | |
1375 | - | ||
1376 | endg |
- | |
1377 | - | ||
1378 | uglobal |
- | |
1379 | align 16 |
- | |
1380 | fpu_data: |
- | |
1381 | rb 512 |
- | |
1382 | - | ||
1383 | mst MEM_STATE |
- | |
1384 | - | ||
1385 | mem_block_map rb 512 |
- | |
1386 | event_map rb 64 |
- | |
1387 | mem_block_list rd 64 |
- | |
1388 | mem_block_mask rd 2 |
- | |
1389 | - | ||
1390 | srv.fd rd 1 |
- | |
1391 | srv.bk rd 1 |
- | |
1392 | - | ||
1393 | mem_used.fd rd 1 |
- | |
1394 | mem_used.bk rd 1 |
- | |
1395 | - | ||
1396 | mem_block_arr rd 1 |
- | |
1397 | mem_block_start rd 1 |
- | |
1398 | mem_block_end rd 1 |
- | |
1399 | - | ||
1400 | heap_mutex rd 1 |
- | |
1401 | heap_size rd 1 |
- | |
1402 | heap_free rd 1 |
- | |
1403 | heap_blocks rd 1 |
- | |
1404 | free_blocks rd 1 |
- | |
1405 | - | ||
1406 | page_start rd 1 |
- | |
1407 | page_end rd 1 |
- | |
1408 | events rd 1 |
- | |
1409 | event_start rd 1 |
- | |
1410 | event_end rd 1 |
- | |
1411 | event_uid rd 1 |
- | |
1412 | sys_page_map rd 1 |
- | |
1413 | os_stack rd 1 |
- | |
1414 | endg |
- | |
1415 | - | ||
1416 | if 0 |
- | |
1417 | push eax |
- | |
1418 | push edx |
- | |
1419 | mov edx, 0x400 ;bocsh |
- | |
1420 | mov al,0xff ;bocsh |
- | |
1421 | out dx, al ;bocsh |
- | |
1422 | pop edx |
- | |
1423 | pop eax |
- | |
1424 | end if |
- | |
1425 | - | ||
1426 | align 4 |
1090 | align 4 |
1427 | k_strrchr: |
1091 | k_strrchr: |
1428 | push eax |
1092 | push eax |
1429 | xor eax,eax |
1093 | xor eax,eax |
1430 | or ecx,-1 |
1094 | or ecx,-1 |
Line 1641... | Line 1305... | ||
1641 | sub eax, [esp+4] |
1305 | sub eax, [esp+4] |
1642 | ret |
1306 | ret |
1643 | 1307 | ||
Line 1644... | Line 1308... | ||
1644 | end if0>> |
1308 | end if |
- | 1309 | ||
- | 1310 | if 0 |
|
- | 1311 | push eax |
|
- | 1312 | push edx |
|
- | 1313 | mov edx, 0x400 ;bocsh |
|
- | 1314 | mov al,0xff ;bocsh |
|
- | 1315 | out dx, al ;bocsh |
|
- | 1316 | pop edx |
|
- | 1317 | pop eax |
|
- | 1318 | end if0>> |
|
- | 1319 | ||
- | 1320 |