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 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
////////////////////////////////////////////////////////////////////////