//////////////////////////////////////////////////////////////////////// ; Функция #10. Переименование файла. ; Глобальные символы * и ? в именах файлов не допускаются. ; ; вход: HL - указатель на старое имя файла ; DE - указатель на новое имя файла ; выход: A - код ошибки, если CF=1 ; ; INPUT: HL - "old_name.ext",#00 without simbols * ? ; DE - "new_name.ext",#00 without simbols * ? //////////////////////////////////////////////////////////////////////// RENAME: ; Current Dir 15/10/23 PUSH HL PUSH DE CALL DIR_PATH_CHECK.forceCheck POP DE POP HL RET C ; ; !TODO воткнуть тут SetPath_GetName, чтоб можно было удалять по относительным путям? ; ; [x] 26/06/2024 {64 kb cluster} PUSH HL CALL CHECK_64kb_CLUSTER POP HL RET C ; PUSH DE CALL MASK.name POP DE RET C ; CALL CHECK_NAME RET Z ; PUSH DE CALL LOADDIR ; [ ] big dir ; прочитать список каталога LD A,FAT_ATTR.NoSYSnoVolID CALL SEARCH.Custom ; поиск записи "old_name.ext" в списке диска POP HL RET C ;LD DE,MASKARE CALL MASK.name RET C ; CALL CHECK_NAME RET Z ; PUSH IX LD A,FAT_ATTR.NoSYSnoVolID CALL SEARCH.Custom ; поиск записи "new_name.ext" в списке диска POP IX LD A,DSS_Error.sys.FILE_EXISTS CCF RET C ; SET_PAGE_X DIRPAGE EX AF,AF' ; LD HL,CORE_BUFFERS.MASKARE LD D,XH LD E,XL LD BC,11 LDIR ; CALL DELETE_LFN_RECORDS ; [ ] удаление записи LFN ; EX AF,AF' OUT (SLOT3),A ; [ ] big dir передавать откуда и сколько байтов изменилось в кэш, чтоб не писать на диск лишнего JP SAVEDIR ; ; ;