mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-16 01:41:17 +03:00
119 lines
2.3 KiB
NASM
119 lines
2.3 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
|
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
|
|
; A - File attribute
|
|
; OUTPUT: A - FM
|
|
////////////////////////////////////////////////////////////////////////
|
|
CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
|
|
PUSH HL
|
|
LD C,A
|
|
;
|
|
IF OLD_DSS_FOR_OLD_EXE
|
|
; [ ] 10/06/24
|
|
LD A,(EXE_VERSION)
|
|
OR A
|
|
JR Z,.old_EXE
|
|
ENDIF
|
|
;
|
|
PUSH BC
|
|
CALL DIR_PATH_CHECK
|
|
POP BC
|
|
POP HL
|
|
RET C
|
|
.old_EXE: 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: ;!TEST Current Dir ;[x] 15/10/23
|
|
PUSH HL
|
|
LD C,A
|
|
;
|
|
IF OLD_DSS_FOR_OLD_EXE
|
|
; [ ] 10/06/24
|
|
LD A,(EXE_VERSION)
|
|
OR A
|
|
JR Z,.old_EXE
|
|
ENDIF
|
|
;
|
|
PUSH BC
|
|
CALL DIR_PATH_CHECK
|
|
POP BC
|
|
POP HL
|
|
RET C
|
|
.old_EXE_: 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,MASKARE
|
|
LD DE,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
|
|
;
|
|
CALL WRT_HND
|
|
RET C
|
|
;CALL SAVEDIR
|
|
.PATH0+1: LD HL,0
|
|
XOR A
|
|
LD (OPEN_FN.TMP),A
|
|
JP OPEN_FN.FILE ;R008
|
|
;
|
|
.Prepare: ;AND #E7 ;R004 %76A00SHR = !FAT_ATTR ;!HARDCODE
|
|
AND FAT_ATTR.NoDIRnoVolID
|
|
LD (.TMP),A
|
|
LD (.PATH0),HL
|
|
CALL GETWORD
|
|
RET C
|
|
; LD HL,TMPNAME
|
|
; LD DE,MASKARE
|
|
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
|
|
; |