mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
114 lines
2.5 KiB
NASM
114 lines
2.5 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||
; A - File attribute
|
||
; OUTPUT: A - FM
|
||
////////////////////////////////////////////////////////////////////////
|
||
CREATE: ; Current Dir 15/10/23 ;CREATE_FN:
|
||
PUSH HL
|
||
LD C,A
|
||
;
|
||
PUSH BC
|
||
CALL DIR_PATH_CHECK
|
||
POP BC
|
||
POP HL
|
||
RET C
|
||
LD A,C
|
||
;
|
||
CALL .Prepare
|
||
RET C
|
||
CALL SEARCH.File
|
||
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
|
||
;CALL NC,DEL_FN.DELETE ;FILE EXIST RECREAT
|
||
CALL NC,.FILE_EXISTS_DEL ;FILE EXIST RECREAT
|
||
CP DSS_Error.sys.FILE_NOT_FOUND
|
||
JR Z,.DO
|
||
SCF
|
||
RET
|
||
.FILE_EXISTS_DEL:
|
||
CALL DELETE_REC_FAT
|
||
LD A,DSS_Error.sys.FILE_NOT_FOUND
|
||
RET
|
||
;
|
||
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
||
; OUTPUT: A - FM
|
||
.NEW: ; Current Dir 15/10/23
|
||
PUSH HL
|
||
LD C,A
|
||
;
|
||
PUSH BC
|
||
CALL DIR_PATH_CHECK
|
||
POP BC
|
||
POP HL
|
||
RET C
|
||
LD A,C
|
||
;
|
||
CALL .Prepare
|
||
RET C
|
||
CALL SEARCH.File
|
||
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
|
||
; LD A,DSS_Error.sys.FILE_EXISTS
|
||
; CCF
|
||
; RET C
|
||
JR NC,.FILE_EXISTS
|
||
CP DSS_Error.sys.FILE_NOT_FOUND
|
||
SCF
|
||
RET NZ
|
||
;
|
||
;
|
||
;no_file_found
|
||
.DO: ; FAT_DIRECTORY_RECORD.NAME + .EXT
|
||
LD HL,CORE_BUFFERS.MASKARE
|
||
LD DE,CORE_BUFFERS.HANDBUF
|
||
LD BC,11
|
||
LDIR
|
||
EX DE,HL
|
||
.TMP+1: LD A,0
|
||
; FAT_DIRECTORY_RECORD.ATTRIBUT
|
||
LD (HL),A
|
||
INC HL
|
||
LD BC,#0A00 ;!HARDCODE
|
||
; .RESERVED_NT .. .FIRST_CLUSTER_H
|
||
.loop1: LD (HL),C
|
||
INC HL
|
||
DJNZ .loop1
|
||
; .TIME .. .DATE
|
||
CALL WRITE_DATE_TIME_TO_DIRECTORY_RECORD
|
||
;
|
||
LD BC,#0600
|
||
;
|
||
.loop2: LD (HL),C
|
||
INC HL
|
||
DJNZ .loop2
|
||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||
CALL WRITE_DIR_HANDLE
|
||
RET C
|
||
;CALL SAVEDIR
|
||
.PATH0+1: LD HL,0
|
||
XOR A
|
||
LD (OPEN_FN.TMP),A
|
||
; DE - record index ¨§ WRT_HND
|
||
; !FIXIT ¬®¦® ®¯â¨¬¨§ãâì ¯¥à¥å®¤®¬ áà §ã
|
||
; ¢ë¤¥«¥¨¥ FM (GET_FM)
|
||
JP OPEN_FN.FILE
|
||
;
|
||
.Prepare: ;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
||
AND FAT_ATTR.NoDIRnoVolID
|
||
LD (.TMP),A
|
||
LD (.PATH0),HL
|
||
CALL SetPath_GetName
|
||
RET C
|
||
; 26/06/2024 {64 kb cluster}
|
||
CALL CHECK_64kb_CLUSTER
|
||
RET C
|
||
;
|
||
; [ ] 25/02/2025 - ä ©« ¥ á®§¤ áâáï, ¥á«¨ ¥â ᢮¡®¤®£® ¬ ¨¯ã«ïâ®à
|
||
CALL GET_FM
|
||
RET C
|
||
;
|
||
JP MASK
|
||
;
|
||
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
|
||
.FILE_EXISTS: LD A,DSS_Error.sys.FILE_EXISTS
|
||
CCF
|
||
RET
|
||
; |