Crazy-Blaster/Crazy Estex DSS/DSS/API/Attribute.asm
Anatoliy Belyanskiy ace6b0904b First init
2024-07-29 01:59:31 +10:00

102 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.

////////////////////////////////////////////////////////////////////////
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; A - ATTRIB
; B - MODE
; B = #00 GET ATTRIB
; B = #01 SET ATTRIB
; OUTPUT: A - ATTRIB
////////////////////////////////////////////////////////////////////////
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
LD C,A
;
IF OLD_DSS_FOR_OLD_EXE
; [ ] 10/06/24
LD A,(EXE_VERSION)
OR A
JR Z,.old_EXE
;
ENDIF
;
PUSH HL
PUSH BC
CALL DIR_PATH_CHECK
POP BC
POP HL
RET C
.old_EXE: LD A,C
;
;
INC B
DJNZ .B_1
; B = 0
.READ: ;!TEST ;[x] 16/11/23 optimize get attribute
;XOR A
;
CALL .OPENATR ;R002
RET C
;!TEST ;[x] 16/11/23 optimize get attribute
LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
;LD B,(IY+_sFM.ATTRIBUT)
;PUSH BC
;CALL CLOSE
;POP BC
;RET C
;LD A,B
;
RET
;
.B_1: DJNZ .B_2
;
.WRITE_FN: AND FAT_ATTR.NoVolID ; [x] 2/12/23 ä¨ªá ¤«ï volume ID
.WRITE: PUSH AF
XOR A
;!TEST ;[x] 16/11/23 optimize get attribute
LD (OPEN_FN.TMP),A
;
CALL .OPENATR ;R002
;!TEST ;[x] 16/11/23 optimize get attribute
CALL NC,OPEN_FN.FM
;
POP BC
RET C
SET 7,(IY+_sFM.ACCESS_MODE)
;RES 3,B ;CLEAR LABEL ATTR ;R003
LD (IY+_sFM.FS_REC.ATTRIBUT),B
PUSH BC
CALL CLOSE_FN
.error: POP BC
RET C
LD A,B
RET
;R002
; ¢ë室: ¥á«¨ CF = 0, â® DE = record index
;!TEST 9/11/23 record index
.OPENATR: ;!TEST ;[x] 16/11/23 optimize get attribute
;LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
RET C
;
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID
;!TEST ;[x] 16/11/23 optimize get attribute
JP SEARCH.Custom
;CALL SEARCH.Custom
;RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
;JP OPEN.FM ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
;
;
; [ ] ; !TODO ¤«ï ª®¬ ­¤ë LABEL ¢ Shell
; 1. ¯à®¢¥à¨âì çâ® ¢ HL 㪠§ ­  ⮫쪮 ¬¥âª  ¢ ª ¢ë窠å
; 2. ¥á«¨ ¬¥âª  ¡¥§ ­¥¤®¯ãá⨬ëå ᨬ¢®«®¢, â® ¤¥« ¥¬ ¥ñ ­¥
; ⮫쪮 ¢ BPB, ­® ¨ ­  ª®à­¥¢®¬ à §¤¥«¥, ¨­ ç¥ 㤠«ï¥¬ ­  ª®à­¥¢®¬
; 3. ®âªà뢠¥¬ âà¥¡ã¥¬ë© ¤¨áª ç¥à¥§ .force, ç⮡ á¡à®á¨âì ªíè¨
.B_2: DJNZ .error_fn
;
.error_fn: LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET