//////////////////////////////////////////////////////////////////////// ; INPUT: HL - "c:\dir\filename.ext",#00 without simbols * ? //////////////////////////////////////////////////////////////////////// DEL_FN: ;!TEST ;!TEST Current Dir ;[x] 15/10/23 PUSH HL CALL DIR_PATH_CHECK POP HL RET C ; CALL GETWORD ; тест на допуст. имя и настр. на диск RET C CALL MASK RET C ; ;!TEST optimization ;LD HL,MASKARE ;LD BC,11 ;LD A,"?" ;CPIR ;LD A,DSS_Error.sys.INVALID_NAME ;SCF CALL CHECK_NAME ; RET Z CALL LOADDIR CALL SEARCH.File RET C ; пометить запись как "удаленная" .DELETE: SET_PAGE_X DIRPAGE LD (IX + _sFAT_DIRECTORY_RECORD.NAME),#E5 ; признак удаления файла ; [ ] fat32 LD E,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L) ; № первого кластера LD D,(IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1) ; OUT (SLOT3),A LD A,E OR D JP Z,SAVEDIR ; сбросить кеш каталога на диск .loop: EX DE,HL ; hl=номер кластера CALL READ_FROM_FAT ; прочитать из кеша FAT-а номер след. кластера PUSH DE ; номер след. кластера PUSH AF LD DE,#0000 ; номер кластера CALL WRITE_TO_FAT ; записать в кеш FAT-а номер кластера POP AF POP DE JP NC,.loop CALL WRITE_FAT_TABLE ;!FIXIT может не нужна тут? Там дальше будет JP SAVEDIR ; сбросить кеш каталога на диск ;