Estex-DSS/DSS/API/Create.asm
2025-10-30 23:25:12 +10:00

114 lines
2.4 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.

////////////////////////////////////////////////////////////////////////
; 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
;
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: ;!TEST Current Dir ;[x] 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
;
CALL WRT_HND
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
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
;