Rev 379 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 379 | Rev 380 | ||
---|---|---|---|
Line 102... | Line 102... | ||
102 | cmp [FDC_Status],0 |
102 | cmp [FDC_Status],0 |
103 | jne fdc_status_error_1 |
103 | jne fdc_status_error_1 |
104 | mov edi,edx |
104 | mov edi,edx |
105 | dec ebx |
105 | dec ebx |
106 | shl ebx,9 |
106 | shl ebx,9 |
107 | mov esi,0x8000 |
107 | mov esi,FLOPPY_BUFF |
108 | add esi,ebx |
108 | add esi,ebx |
109 | shl ecx,9 |
109 | shl ecx,9 |
110 | cld |
110 | cld |
111 | rep movsb |
111 | rep movsb |
112 | mov eax,0 ; ok read |
112 | mov eax,0 ; ok read |
Line 145... | Line 145... | ||
145 | l.20_1: |
145 | l.20_1: |
146 | call ReadSectWithRetr |
146 | call ReadSectWithRetr |
147 | cmp [FDC_Status],0 |
147 | cmp [FDC_Status],0 |
148 | jne fdc_status_error_3_1 |
148 | jne fdc_status_error_3_1 |
149 | mov dl,16 |
149 | mov dl,16 |
150 | mov edi,0xD000 |
150 | mov edi,FDD_BUFF |
151 | inc [FDD_Sector] |
151 | inc [FDD_Sector] |
152 | l.21_1: |
152 | l.21_1: |
153 | mov esi,eax ;Name of file we want |
153 | mov esi,eax ;Name of file we want |
154 | mov ecx,11 |
154 | mov ecx,11 |
155 | cld |
155 | cld |
Line 272... | Line 272... | ||
272 | cmp [root_read],1 |
272 | cmp [root_read],1 |
273 | je unnecessary_root_read |
273 | je unnecessary_root_read |
274 | mov [FDD_Track],0 ; Öèëèíäð |
274 | mov [FDD_Track],0 ; Öèëèíäð |
275 | mov [FDD_Head],1 ; Ñòîðîíà |
275 | mov [FDD_Head],1 ; Ñòîðîíà |
276 | mov [FDD_Sector],2 ; Ñåêòîð |
276 | mov [FDD_Sector],2 ; Ñåêòîð |
277 | mov edi,0x8000 |
277 | mov edi,FLOPPY_BUFF |
278 | call SeekTrack |
278 | call SeekTrack |
279 | read_flp_root_1: |
279 | read_flp_root_1: |
280 | call ReadSectWithRetr |
280 | call ReadSectWithRetr |
281 | cmp [FDC_Status],0 |
281 | cmp [FDC_Status],0 |
282 | jne unnecessary_root_read |
282 | jne unnecessary_root_read |
Line 301... | Line 301... | ||
301 | cmp [flp_fat],1 |
301 | cmp [flp_fat],1 |
302 | je unnecessary_flp_fat |
302 | je unnecessary_flp_fat |
303 | mov [FDD_Track],0 ; Öèëèíäð |
303 | mov [FDD_Track],0 ; Öèëèíäð |
304 | mov [FDD_Head],0 ; Ñòîðîíà |
304 | mov [FDD_Head],0 ; Ñòîðîíà |
305 | mov [FDD_Sector],2 ; Ñåêòîð |
305 | mov [FDD_Sector],2 ; Ñåêòîð |
306 | mov edi,0x8000 |
306 | mov edi,FLOPPY_BUFF |
307 | call SeekTrack |
307 | call SeekTrack |
308 | read_flp_fat_1: |
308 | read_flp_fat_1: |
309 | call ReadSectWithRetr |
309 | call ReadSectWithRetr |
310 | cmp [FDC_Status],0 |
310 | cmp [FDC_Status],0 |
311 | jne unnecessary_flp_fat |
311 | jne unnecessary_flp_fat |
Line 330... | Line 330... | ||
330 | ret |
330 | ret |
Line 331... | Line 331... | ||
331 | 331 | ||
332 | calculatefatchain_flp: |
332 | calculatefatchain_flp: |
Line 333... | Line 333... | ||
333 | pushad |
333 | pushad |
334 | 334 | ||
Line 335... | Line 335... | ||
335 | mov esi,0x8000 |
335 | mov esi,FLOPPY_BUFF |
336 | mov edi,0x282000 |
336 | mov edi,0x282000 |
337 | 337 | ||
Line 382... | Line 382... | ||
382 | jne fdc_status_error |
382 | jne fdc_status_error |
383 | call ReadSectWithRetr |
383 | call ReadSectWithRetr |
384 | cmp [FDC_Status],0 |
384 | cmp [FDC_Status],0 |
385 | jne fdc_status_error |
385 | jne fdc_status_error |
386 | mov esi,flp_label |
386 | mov esi,flp_label |
387 | mov edi,0xD000+39 |
387 | mov edi,FDD_BUFF+39 |
388 | mov ecx,15 |
388 | mov ecx,15 |
389 | cld |
389 | cld |
390 | rep cmpsb |
390 | rep cmpsb |
391 | je same_label |
391 | je same_label |
392 | mov [root_read],0 |
392 | mov [root_read],0 |
393 | mov [flp_fat],0 |
393 | mov [flp_fat],0 |
394 | same_label: |
394 | same_label: |
395 | mov esi,0xD000+39 |
395 | mov esi,FDD_BUFF+39 |
396 | mov edi,flp_label |
396 | mov edi,flp_label |
397 | mov ecx,15 |
397 | mov ecx,15 |
398 | cld |
398 | cld |
399 | rep movsb |
399 | rep movsb |
400 | popad |
400 | popad |
Line 411... | Line 411... | ||
411 | cmp [root_read],0 |
411 | cmp [root_read],0 |
412 | je unnecessary_root_save |
412 | je unnecessary_root_save |
413 | mov [FDD_Track],0 ; Öèëèíäð |
413 | mov [FDD_Track],0 ; Öèëèíäð |
414 | mov [FDD_Head],1 ; Ñòîðîíà |
414 | mov [FDD_Head],1 ; Ñòîðîíà |
415 | mov [FDD_Sector],2 ; Ñåêòîð |
415 | mov [FDD_Sector],2 ; Ñåêòîð |
416 | mov esi,0x8000 |
416 | mov esi,FLOPPY_BUFF |
417 | call SeekTrack |
417 | call SeekTrack |
418 | save_flp_root_1: |
418 | save_flp_root_1: |
419 | push esi |
419 | push esi |
420 | call take_data_from_application_1 |
420 | call take_data_from_application_1 |
421 | pop esi |
421 | pop esi |
Line 440... | Line 440... | ||
440 | je unnecessary_flp_fat_save |
440 | je unnecessary_flp_fat_save |
441 | call restorefatchain_flp |
441 | call restorefatchain_flp |
442 | mov [FDD_Track],0 ; Öèëèíäð |
442 | mov [FDD_Track],0 ; Öèëèíäð |
443 | mov [FDD_Head],0 ; Ñòîðîíà |
443 | mov [FDD_Head],0 ; Ñòîðîíà |
444 | mov [FDD_Sector],2 ; Ñåêòîð |
444 | mov [FDD_Sector],2 ; Ñåêòîð |
445 | mov esi,0x8000 |
445 | mov esi,FLOPPY_BUFF |
446 | call SeekTrack |
446 | call SeekTrack |
447 | save_flp_fat_1: |
447 | save_flp_fat_1: |
448 | push esi |
448 | push esi |
449 | call take_data_from_application_1 |
449 | call take_data_from_application_1 |
450 | pop esi |
450 | pop esi |
Line 470... | Line 470... | ||
470 | 470 | ||
471 | restorefatchain_flp: ; restore fat chain |
471 | restorefatchain_flp: ; restore fat chain |
Line 472... | Line 472... | ||
472 | pushad |
472 | pushad |
473 | 473 | ||
Line 474... | Line 474... | ||
474 | mov esi,0x282000 |
474 | mov esi,0x282000 |
475 | mov edi,0x8000 |
475 | mov edi,FLOPPY_BUFF |
476 | 476 | ||
477 | fcnew2_1: |
477 | fcnew2_1: |
Line 487... | Line 487... | ||
487 | add edi,4 |
487 | add edi,4 |
488 | mov word [edi],bx |
488 | mov word [edi],bx |
489 | add edi,2 |
489 | add edi,2 |
490 | add esi,8 |
490 | add esi,8 |
Line 491... | Line 491... | ||
491 | 491 | ||
492 | cmp edi,0x8000+0x1200 ;4274 bytes - all used FAT |
492 | cmp edi,FLOPPY_BUFF+0x1200 ;4274 bytes - all used FAT |
Line 493... | Line 493... | ||
493 | jb fcnew2_1 |
493 | jb fcnew2_1 |
494 | 494 | ||
495 | mov esi,0x8000 ; duplicate fat chain |
495 | mov esi,FLOPPY_BUFF ; duplicate fat chain |
496 | mov edi,0x8000+0x1200 |
496 | mov edi,FLOPPY_BUFF+0x1200 |
497 | mov ecx,0x1200/4 |
497 | mov ecx,0x1200/4 |
Line 498... | Line 498... | ||
498 | cld |
498 | cld |
Line 532... | Line 532... | ||
532 | l.20_2: |
532 | l.20_2: |
533 | call ReadSectWithRetr |
533 | call ReadSectWithRetr |
534 | cmp [FDC_Status],0 |
534 | cmp [FDC_Status],0 |
535 | jne fdc_status_error_4 |
535 | jne fdc_status_error_4 |
536 | mov dl,16 |
536 | mov dl,16 |
537 | mov edi,0xD000 |
537 | mov edi,FDD_BUFF |
538 | inc [FDD_Sector] |
538 | inc [FDD_Sector] |
539 | l.21_2: |
539 | l.21_2: |
540 | mov esi,eax ;Name of file we want |
540 | mov esi,eax ;Name of file we want |
541 | mov ecx,11 |
541 | mov ecx,11 |
542 | cld |
542 | cld |
Line 660... | Line 660... | ||
660 | pop eax |
660 | pop eax |
661 | mov [save_root_flag],1 |
661 | mov [save_root_flag],1 |
662 | call read_flp_root |
662 | call read_flp_root |
663 | cmp [FDC_Status],0 |
663 | cmp [FDC_Status],0 |
664 | jne fdc_status_error_7 |
664 | jne fdc_status_error_7 |
665 | mov edi,0x8000 ;Point at directory |
665 | mov edi,FLOPPY_BUFF ;Point at directory |
666 | mov edx,224 +1 |
666 | mov edx,224 +1 |
667 | ; find an empty spot for filename in the root dir |
667 | ; find an empty spot for filename in the root dir |
668 | l20ds_1: |
668 | l20ds_1: |
669 | sub edx,1 |
669 | sub edx,1 |
670 | jz frnoreadds_1 |
670 | jz frnoreadds_1 |
Line 687... | Line 687... | ||
687 | l.20_3: |
687 | l.20_3: |
688 | call ReadSectWithRetr |
688 | call ReadSectWithRetr |
689 | cmp [FDC_Status],0 |
689 | cmp [FDC_Status],0 |
690 | jne fdc_status_error_7 |
690 | jne fdc_status_error_7 |
691 | mov dl,16 |
691 | mov dl,16 |
692 | mov edi,0xD000 |
692 | mov edi,FDD_BUFF |
693 | inc [FDD_Sector] |
693 | inc [FDD_Sector] |
694 | l.21_3: |
694 | l.21_3: |
695 | mov esi,eax ;Name of file we want |
695 | mov esi,eax ;Name of file we want |
696 | mov ecx,11 |
696 | mov ecx,11 |
697 | cld |
697 | cld |
Line 918... | Line 918... | ||
918 | popa |
918 | popa |
919 | cmp [FDC_Status],0 |
919 | cmp [FDC_Status],0 |
920 | jne not_found_file_analyze_flp |
920 | jne not_found_file_analyze_flp |
Line 921... | Line 921... | ||
921 | 921 | ||
922 | mov ecx,512/32 |
922 | mov ecx,512/32 |
Line 923... | Line 923... | ||
923 | mov ebx,0xD000 |
923 | mov ebx,FDD_BUFF |
924 | 924 | ||
925 | adr1_analyze_flp: |
925 | adr1_analyze_flp: |
926 | mov esi,edx ;[esp+16] |
926 | mov esi,edx ;[esp+16] |
Line 983... | Line 983... | ||
983 | popa |
983 | popa |
984 | cmp [FDC_Status],0 |
984 | cmp [FDC_Status],0 |
985 | jne error_found_file_analyze1 |
985 | jne error_found_file_analyze1 |
Line 986... | Line 986... | ||
986 | 986 | ||
987 | mov ecx,512/32 |
987 | mov ecx,512/32 |
Line 988... | Line 988... | ||
988 | mov ebx,0xD000 |
988 | mov ebx,FDD_BUFF |
989 | 989 | ||
990 | adr1_analyze1: |
990 | adr1_analyze1: |
991 | cmp byte [ebx],0x00 |
991 | cmp byte [ebx],0x00 |
Line 1018... | Line 1018... | ||
1018 | mov [eax],di |
1018 | mov [eax],di |
Line 1019... | Line 1019... | ||
1019 | 1019 | ||
1020 | pusha |
1020 | pusha |
1021 | mov ecx,512/4 |
1021 | mov ecx,512/4 |
1022 | xor eax,eax |
1022 | xor eax,eax |
1023 | mov edi,0xD000 |
1023 | mov edi,FDD_BUFF |
1024 | cld |
1024 | cld |
1025 | rep stosd |
1025 | rep stosd |
Line 1026... | Line 1026... | ||
1026 | popa |
1026 | popa |
Line 1030... | Line 1030... | ||
1030 | pusha |
1030 | pusha |
1031 | call save_chs_sector |
1031 | call save_chs_sector |
1032 | popa |
1032 | popa |
1033 | cmp [FDC_Status],0 |
1033 | cmp [FDC_Status],0 |
1034 | jne error_found_file_analyze1 |
1034 | jne error_found_file_analyze1 |
1035 | mov ebx,0xD000 |
1035 | mov ebx,FDD_BUFF |
Line 1036... | Line 1036... | ||
1036 | 1036 | ||
Line 1037... | Line 1037... | ||
1037 | found_file_analyze1: |
1037 | found_file_analyze1: |
1038 | 1038 | ||
Line 1143... | Line 1143... | ||
1143 | add eax, 19 |
1143 | add eax, 19 |
1144 | call read_chs_sector |
1144 | call read_chs_sector |
1145 | popa |
1145 | popa |
1146 | cmp [FDC_Status], 0 |
1146 | cmp [FDC_Status], 0 |
1147 | jnz .readerr |
1147 | jnz .readerr |
1148 | mov edi, 0xD000 |
1148 | mov edi, FDD_BUFF |
1149 | ret ; CF=0 |
1149 | ret ; CF=0 |
1150 | .readerr: |
1150 | .readerr: |
1151 | stc |
1151 | stc |
1152 | ret |
1152 | ret |
Line 1153... | Line 1153... | ||
1153 | 1153 | ||
1154 | flp_rootmem_first: |
1154 | flp_rootmem_first: |
1155 | mov edi, 0x8000 |
1155 | mov edi, FLOPPY_BUFF |
1156 | clc |
1156 | clc |
1157 | ret |
1157 | ret |
1158 | flp_rootmem_next: |
1158 | flp_rootmem_next: |
1159 | add edi, 0x20 |
1159 | add edi, 0x20 |
1160 | cmp edi, 0x8000+14*0x200 |
1160 | cmp edi, FLOPPY_BUFF+14*0x200 |
1161 | cmc |
1161 | cmc |
1162 | flp_rootmem_next_write: |
1162 | flp_rootmem_next_write: |
1163 | flp_rootmem_begin_write: |
1163 | flp_rootmem_begin_write: |
1164 | flp_rootmem_end_write: |
1164 | flp_rootmem_end_write: |
Line 1193... | Line 1193... | ||
1193 | jae .err |
1193 | jae .err |
1194 | pusha |
1194 | pusha |
1195 | add eax, 31 |
1195 | add eax, 31 |
1196 | call read_chs_sector |
1196 | call read_chs_sector |
1197 | popa |
1197 | popa |
1198 | mov edi, 0xD000 |
1198 | mov edi, FDD_BUFF |
1199 | cmp [FDC_Status], 0 |
1199 | cmp [FDC_Status], 0 |
1200 | jnz .err |
1200 | jnz .err |
1201 | ret ; CF=0 |
1201 | ret ; CF=0 |
1202 | .err2: |
1202 | .err2: |
1203 | pop ecx |
1203 | pop ecx |
Line 1240... | Line 1240... | ||
1240 | mov eax, [esp+28] |
1240 | mov eax, [esp+28] |
1241 | mov ecx, [eax] |
1241 | mov ecx, [eax] |
1242 | mov [0x282000+ecx*2], di |
1242 | mov [0x282000+ecx*2], di |
1243 | mov [eax], edi |
1243 | mov [eax], edi |
1244 | xor eax, eax |
1244 | xor eax, eax |
1245 | mov edi, 0xD000 |
1245 | mov edi, FDD_BUFF |
1246 | mov ecx, 128 |
1246 | mov ecx, 128 |
1247 | rep stosd |
1247 | rep stosd |
1248 | popa |
1248 | popa |
1249 | call flp_notroot_end_write |
1249 | call flp_notroot_end_write |
1250 | mov edi, 0xD000 |
1250 | mov edi, FDD_BUFF |
1251 | clc |
1251 | clc |
1252 | ret |
1252 | ret |
1253 | .notfound: |
1253 | .notfound: |
1254 | popa |
1254 | popa |
1255 | stc |
1255 | stc |
Line 1356... | Line 1356... | ||
1356 | pusha |
1356 | pusha |
1357 | call read_chs_sector |
1357 | call read_chs_sector |
1358 | popa |
1358 | popa |
1359 | cmp [FDC_Status], 0 |
1359 | cmp [FDC_Status], 0 |
1360 | jnz .err |
1360 | jnz .err |
1361 | lea eax, [0xD000+ebx+512] |
1361 | lea eax, [FDD_BUFF+ebx+512] |
1362 | neg ebx |
1362 | neg ebx |
1363 | push ecx |
1363 | push ecx |
1364 | cmp ecx, ebx |
1364 | cmp ecx, ebx |
1365 | jbe @f |
1365 | jbe @f |
1366 | mov ecx, ebx |
1366 | mov ecx, ebx |
Line 1450... | Line 1450... | ||
1450 | pusha |
1450 | pusha |
1451 | call read_chs_sector |
1451 | call read_chs_sector |
1452 | popa |
1452 | popa |
1453 | cmp [FDC_Status], 0 |
1453 | cmp [FDC_Status], 0 |
1454 | jnz .error |
1454 | jnz .error |
1455 | mov edi, 0xD000 |
1455 | mov edi, FDD_BUFF |
1456 | push eax |
1456 | push eax |
1457 | .l1: |
1457 | .l1: |
1458 | call fat_get_name |
1458 | call fat_get_name |
1459 | jc .l2 |
1459 | jc .l2 |
1460 | cmp byte [edi+11], 0xF |
1460 | cmp byte [edi+11], 0xF |
Line 1478... | Line 1478... | ||
1478 | pusha |
1478 | pusha |
1479 | call read_chs_sector |
1479 | call read_chs_sector |
1480 | popa |
1480 | popa |
1481 | cmp [FDC_Status], 0 |
1481 | cmp [FDC_Status], 0 |
1482 | jnz .error |
1482 | jnz .error |
1483 | mov edi, 0xD000 |
1483 | mov edi, FDD_BUFF |
1484 | push eax |
1484 | push eax |
1485 | .do_bdfe: |
1485 | .do_bdfe: |
1486 | inc dword [edx+8] ; new file found |
1486 | inc dword [edx+8] ; new file found |
1487 | dec ebx |
1487 | dec ebx |
1488 | jns .l2 |
1488 | jns .l2 |
Line 1909... | Line 1909... | ||
1909 | mov ecx, 512 |
1909 | mov ecx, 512 |
1910 | cmp dword [esp+20], ecx |
1910 | cmp dword [esp+20], ecx |
1911 | jae @f |
1911 | jae @f |
1912 | mov ecx, [esp+20] |
1912 | mov ecx, [esp+20] |
1913 | @@: |
1913 | @@: |
1914 | mov edi, 0xD000 |
1914 | mov edi, FDD_BUFF |
1915 | cmp byte [esp+24+28+28], 0 |
1915 | cmp byte [esp+24+28+28], 0 |
1916 | jnz .writedir |
1916 | jnz .writedir |
1917 | push ecx |
1917 | push ecx |
1918 | rep movsb |
1918 | rep movsb |
1919 | pop ecx |
1919 | pop ecx |
Line 2158... | Line 2158... | ||
2158 | push eax ecx edi |
2158 | push eax ecx edi |
2159 | xor eax, eax |
2159 | xor eax, eax |
2160 | mov ecx, 0x200 |
2160 | mov ecx, 0x200 |
2161 | sub ecx, [esp+4+12] |
2161 | sub ecx, [esp+4+12] |
2162 | jbe @f |
2162 | jbe @f |
2163 | mov edi, 0xD000 |
2163 | mov edi, FDD_BUFF |
2164 | add edi, [esp+4+12] |
2164 | add edi, [esp+4+12] |
2165 | rep stosb |
2165 | rep stosb |
2166 | @@: |
2166 | @@: |
2167 | ; zero uninitialized data in the last sector |
2167 | ; zero uninitialized data in the last sector |
2168 | mov ecx, 0x200 |
2168 | mov ecx, 0x200 |
2169 | sub ecx, esi |
2169 | sub ecx, esi |
2170 | jbe @f |
2170 | jbe @f |
2171 | mov edi, 0xD000 |
2171 | mov edi, FDD_BUFF |
2172 | add edi, esi |
2172 | add edi, esi |
2173 | rep stosb |
2173 | rep stosb |
2174 | @@: |
2174 | @@: |
2175 | pop edi ecx eax |
2175 | pop edi ecx eax |
2176 | ; copy new data |
2176 | ; copy new data |
2177 | push eax |
2177 | push eax |
2178 | mov eax, edx |
2178 | mov eax, edx |
2179 | neg ebx |
2179 | neg ebx |
2180 | jecxz @f |
2180 | jecxz @f |
2181 | add ebx, 0xD000+0x200 |
2181 | add ebx, FDD_BUFF+0x200 |
2182 | call memmove |
2182 | call memmove |
2183 | xor ebx, ebx |
2183 | xor ebx, ebx |
2184 | @@: |
2184 | @@: |
2185 | pop eax |
2185 | pop eax |
2186 | ; save sector |
2186 | ; save sector |
Line 2410... | Line 2410... | ||
2410 | jnz .err_next |
2410 | jnz .err_next |
2411 | .noread: |
2411 | .noread: |
2412 | mov ecx, [esp+4] |
2412 | mov ecx, [esp+4] |
2413 | neg ecx |
2413 | neg ecx |
2414 | push edi |
2414 | push edi |
2415 | mov edi, 0xD000+0x200 |
2415 | mov edi, FDD_BUFF+0x200 |
2416 | add edi, [esp+8] |
2416 | add edi, [esp+8] |
2417 | xor eax, eax |
2417 | xor eax, eax |
2418 | mov [esp+8], eax |
2418 | mov [esp+8], eax |
2419 | rep stosb |
2419 | rep stosb |
2420 | pop edi |
2420 | pop edi |
Line 2489... | Line 2489... | ||
2489 | jz .truncate_done |
2489 | jz .truncate_done |
2490 | call SetUserInterrupts |
2490 | call SetUserInterrupts |
2491 | pusha |
2491 | pusha |
2492 | call read_chs_sector |
2492 | call read_chs_sector |
2493 | popa |
2493 | popa |
2494 | add edi, 0xD000 |
2494 | add edi, FDD_BUFF |
2495 | mov ecx, 0xD000+0x200 |
2495 | mov ecx, FDD_BUFF+0x200 |
2496 | sub ecx, edi |
2496 | sub ecx, edi |
2497 | push eax |
2497 | push eax |
2498 | xor eax, eax |
2498 | xor eax, eax |
2499 | rep stosb |
2499 | rep stosb |
2500 | pop eax |
2500 | pop eax |
Line 2623... | Line 2623... | ||
2623 | add eax, 31 |
2623 | add eax, 31 |
2624 | call read_chs_sector |
2624 | call read_chs_sector |
2625 | cmp [FDC_Status], 0 |
2625 | cmp [FDC_Status], 0 |
2626 | jnz .err |
2626 | jnz .err |
2627 | pop edi |
2627 | pop edi |
2628 | mov esi, 0xD000 |
2628 | mov esi, FDD_BUFF |
2629 | push edi |
2629 | push edi |
2630 | mov ecx, 512/4 |
2630 | mov ecx, 512/4 |
2631 | rep movsd |
2631 | rep movsd |
2632 | mov eax, [esp+28] |
2632 | mov eax, [esp+28] |
2633 | mov ecx, [eax] |
2633 | mov ecx, [eax] |
Line 2703... | Line 2703... | ||
2703 | push ebx |
2703 | push ebx |
2704 | pusha |
2704 | pusha |
2705 | add eax, 31 |
2705 | add eax, 31 |
2706 | call read_chs_sector |
2706 | call read_chs_sector |
2707 | popa |
2707 | popa |
2708 | mov ebx, FDD_DATA + 2*0x20 |
2708 | mov ebx, FDD_BUFF + 2*0x20 |
2709 | .checkempty: |
2709 | .checkempty: |
2710 | cmp byte [ebx], 0 |
2710 | cmp byte [ebx], 0 |
2711 | jz .empty |
2711 | jz .empty |
2712 | cmp byte [ebx], 0xE5 |
2712 | cmp byte [ebx], 0xE5 |
2713 | jnz .notempty |
2713 | jnz .notempty |
2714 | add ebx, 0x20 |
2714 | add ebx, 0x20 |
2715 | cmp ebx, FDD_DATA + 0x200 |
2715 | cmp ebx, FDD_BUFF + 0x200 |
2716 | jb .checkempty |
2716 | jb .checkempty |
2717 | movzx eax, word [FLOPPY_FAT + eax*2] |
2717 | movzx eax, word [FLOPPY_FAT + eax*2] |
2718 | pusha |
2718 | pusha |
2719 | add eax, 31 |
2719 | add eax, 31 |
2720 | call read_chs_sector |
2720 | call read_chs_sector |
2721 | popa |
2721 | popa |
2722 | mov ebx, FDD_DATA |
2722 | mov ebx, FDD_BUFF |
2723 | jmp .checkempty |
2723 | jmp .checkempty |
2724 | .notempty: |
2724 | .notempty: |
2725 | pop ebx |
2725 | pop ebx |
2726 | pop eax |
2726 | pop eax |
2727 | .access_denied2: |
2727 | .access_denied2: |
Line 2739... | Line 2739... | ||
2739 | xchg eax, [esp] |
2739 | xchg eax, [esp] |
2740 | ; delete folder entry |
2740 | ; delete folder entry |
2741 | mov byte [edi], 0xE5 |
2741 | mov byte [edi], 0xE5 |
2742 | ; delete LFN (if present) |
2742 | ; delete LFN (if present) |
2743 | .lfndel: |
2743 | .lfndel: |
2744 | cmp edi, FDD_DATA |
2744 | cmp edi, FDD_BUFF |
2745 | ja @f |
2745 | ja @f |
2746 | cmp [fd_prev_sector], 0 |
2746 | cmp [fd_prev_sector], 0 |
2747 | jz .lfndone |
2747 | jz .lfndone |
2748 | push [fd_prev_sector] |
2748 | push [fd_prev_sector] |
2749 | push [fd_prev_prev_sector] |
2749 | push [fd_prev_prev_sector] |
Line 2754... | Line 2754... | ||
2754 | popa |
2754 | popa |
2755 | pop eax |
2755 | pop eax |
2756 | pusha |
2756 | pusha |
2757 | call read_chs_sector |
2757 | call read_chs_sector |
2758 | popa |
2758 | popa |
2759 | mov edi, FDD_DATA+0x200 |
2759 | mov edi, FDD_BUFF+0x200 |
2760 | @@: |
2760 | @@: |
2761 | sub edi, 0x20 |
2761 | sub edi, 0x20 |
2762 | cmp byte [edi], 0xE5 |
2762 | cmp byte [edi], 0xE5 |
2763 | jz .lfndone |
2763 | jz .lfndone |
2764 | cmp byte [edi+11], 0xF |
2764 | cmp byte [edi+11], 0xF |