Estex-DSS/DSS/API/Rename.asm
Tolik ef258143e7 SEARCH_RECORD_IN_DIR_CACHE
допилить переключение страницы кэша при достижении конца директории (напоролись на ноль)
2026-01-13 22:11:46 +10:00

88 lines
2.2 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #10. <20>¥à¥¨¬¥­®¢ ­¨¥ ä ©« .
; ƒ«®¡ «ì­ë¥ ᨬ¢®«ë * ¨ ? ¢ ¨¬¥­ å ä ©«®¢ ­¥ ¤®¯ã᪠îâáï.
;
; ¢å®¤: 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
; !FIXIT ¤ã¡«¨àã¥â ¤¥©á⢨¥ ¨ ¤¨à¥ªâ®à¨ï 㦥 § £à㦥­ ? ;!FIXIT check error
CALL LOADDIR ; [ ] big dir ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
;
LD A,FAT_ATTR.NoSYSnoVolID
CALL SEARCH.Custom ; ¯®¨áª § ¯¨á¨ "old_name.ext" ¢ ᯨ᪥ ¤¨áª 
; DE - record index
POP HL
RET C
;
LD (.recordAddr),IX
; ­  á«ãç © ¯¥à¥ª«î祭¨ï áâà ­¨æë ªíè  ¯®á«¥ SEARCH.Custom "new_name.ext"
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
LD (.DirBlock),A
LD (.recordIndex),DE
;
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
PUSH AF
; ­  á«ãç © ¯¥à¥ª«î祭¨ï áâà ­¨æë ªíè  ¯®á«¥ SEARCH.Custom "new_name.ext"
LD A,(CORE_BUFFERS.FS_Buffer.DirBlock)
.DirBlock+1: CP 0
.recordIndex+1: LD HL,0
SCF ; ­¥ ¯¥à¥áç¨â뢠âì à §¬¥à ¤¨à¥ªâ®à¨¨
CALL NZ,LOADDIR.next ;!FIXIT check error
;
LD HL,CORE_BUFFERS.MASKARE
.recordAddr+1: LD DE,0
LD BC,11
LDIR
;
;CALL DELETE_LFN_RECORDS ; [ ] 㤠«¥­¨¥ § ¯¨á¨ LFN
;
POP AF
OUT (SLOT3),A
LD HL,(.recordIndex)
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤  ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥­¨«®áì ¢ ªíè, ç⮡ ­¥ ¯¨á âì ­  ¤¨áª «¨è­¥£®
JP SAVEDIR
////////////////////////////////////////////////////////////////////////