;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; SYSROUT47 - Delete File ; IN: AL = 2FH ; EDI = POINTER TO FILENAME (0-TERM) ; OUT:AL > 0 IF ERROR ; AL = 0 IF SUCCESSFULL ; EDI = PRESERVED (FILENAME) ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄderived from sr10.inc [ML]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ SYSROUT47_DL DB 0 ;DISK SYSROUT47_AH DB 0 SYSROUT47_ESI DD 0 SYSROUT47_PARTBUFFER DB 'ABCD',0 SYSROUT47_PARTSTART DD 0 SYSROUT47_FOUNDMATCHINGFILE DB 0 SYSROUT47_FILENAMEBUFFER TIMES 128 db 0 SYSROUT47: POP EAX XOR AL, AL MOV [SYSROUT47_FOUNDMATCHINGFILE], AL MOV ESI, SYSROUT47_FILENAMEBUFFER SYSROUT47_COPYFILENAME: MOV AL, [FS:EDI] MOV [ESI], AL INC ESI INC EDI TEST AL, AL JNE SYSROUT47_COPYFILENAME MOV EDI, SYSROUT47_FILENAMEBUFFER MOV AL, 0CH ; INT 20H MOV [MATCHFILEOFFSET], ESI ; JUST THE THE FILE-NAME- ; EDI POINTS TO A (0-TERM) ; PARTITION ('fd0:' etc.) ;ESI - FILENAME MOV AL, 09H ; GET PARTINFO INT 20H ;DL-DISK, EBX-1ST (SECT),ECX-LENGTH (SECT) MOV [SYSROUT47_PARTSTART], EBX TEST AL, AL JE SYSROUT47_FILEINFO_PART_OK MOV AL, 10H ; PARTITION NOT FOUND JMP ENDOFSYSROUT47 SYSROUT47_FILEINFO_PART_OK: ; MOV [REAL_EDX], EDX MOV [SYSROUT47_DL], DL XOR ECX, ECX MOV AL, 06H INC ECX INT 20H TEST EAX, EAX JNE NEAR ENDOFSYSROUT47 SYSROUT47_READOK: XOR ESI, ESI MOV SI, [GS:600H+82] ; DISKBUFFER SEGMENT SHL ESI, 4 ; DISKBUFFER AREA MOV EAX, [GS:ESI+8] CMP EAX, 5F32562BH ; +V2FS? JE SYSROUT47_V2_FSSIGNOK2 MOV AL, 11H JMP ENDOFSYSROUT47 SYSROUT47_V2_FSSIGNOK2: ADD EBX, [GS:ESI+42] ; FIRSTDATASECTOR MOV [FILES_CURRENTOBJECT], ECX MOV ECX, [GS:ESI+28] ; CUROBJECTS MOV DH, 10 SYSROUT47_MATCHFILESLOOP: TEST ECX, ECX JE near SYSROUT47_ENDOFFILEMATCH PUSH ECX PUSH ESI CMP DH, 4 JB SYSROUT47_MATCH_FILESECTOROK mov dl,[SYSROUT47_DL] XOR ECX, ECX MOV AL, 6 INC ECX INT 20H ; READ SECTOR INC EBX XOR DH, DH SYSROUT47_MATCH_FILESECTOROK: XOR EAX, EAX MOV AL, DH ; SECTOR QUARTER SHL EAX, 7 ; MULTIPLY BY 128 ADD ESI, EAX ; ESI POINTS TO THE FILE ENTRY ! MOV EDI, [MATCHFILEOFFSET] MOV [SYSROUT47_ESI], ESI MOV ECX, 64 SYSROUT47_COPYMATCHFILENAME: MOV AL, [GS:ESI+21] ; CATALOG ?17 MOV AH, [DS:EDI] ; MATCH CMP AL, AH JNE SYSROUT47_NOMATCHFILE INC ESI INC EDI TEST AH, AH JNE SYSROUT47_COPYMATCHFILENAME ;******** CHECK IF NOT DELETED HERE ******** MOV ESI, [SYSROUT47_ESI] ;FILE ENTRY MOV AL, [GS:ESI+16] ;?12 CMP AL, 1 JE SYSROUT47_NOMATCHFILE MOV AL, 1 MOV [SYSROUT47_FOUNDMATCHINGFILE], AL SYSROUT47_NOMATCHFILE: ; NOT THIS FILE.... POP ESI MOV ECX, [FILES_CURRENTOBJECT] INC ECX MOV [FILES_CURRENTOBJECT], ECX POP ECX DEC ECX INC DH ; INCREASE SECTOR QUARTER MOV AL, [SYSROUT47_FOUNDMATCHINGFILE] CMP AL, 1 JNZ NEAR SYSROUT47_MATCHFILESLOOP SYSROUT47_FOUNDMATCHINGFILE_LABEL: ;HERE COMES DELETING MOV ESI, [SYSROUT47_ESI] ;FILE ENTRY MOV byte [GS:ESI+16], 1 ;?12 XOR CX, CX INC CX DEC EBX MOV AL, 7 INT 20H XOR AL, AL ; NO ERROR JMP SHORT ENDOFSYSROUT47 SYSROUT47_ENDOFFILEMATCH: MOV AL, 12H ENDOFSYSROUT47: POP DS POP FS IRETD ;Optimized by EKS on April 30th, 2000