mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
83 lines
1.6 KiB
NASM
83 lines
1.6 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
; 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
|
||
PUSH HL
|
||
PUSH BC
|
||
CALL DIR_PATH_CHECK
|
||
POP BC
|
||
POP HL
|
||
RET C
|
||
LD A,C
|
||
;
|
||
;
|
||
INC B
|
||
DEC B
|
||
JP Z,.READ
|
||
DEC B
|
||
JP Z,.WRITE_FN
|
||
LD A,DSS_Error.sys.INVALID_FUNCTION
|
||
SCF
|
||
RET
|
||
.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 + _sFAT_DIRECTORY_RECORD.ATTRIBUT)
|
||
;LD B,(IY+_sFM.ATTRIBUT)
|
||
;PUSH BC
|
||
;CALL CLOSE
|
||
;POP BC
|
||
;RET C
|
||
;LD A,B
|
||
;
|
||
RET
|
||
;
|
||
.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 ;!HARDCODE attribute bit
|
||
LD (IY+_sFM.FS_REC.ATTRIBUT),B
|
||
PUSH BC
|
||
CALL CLOSE_FN
|
||
.error: POP BC
|
||
RET C
|
||
LD A,B
|
||
RET
|
||
;R002
|
||
.OPENATR:
|
||
;!TEST ;[x] 16/11/23 optimize get attribute
|
||
;LD (OPEN.TMP),A ; à ¡. ï祩ª (§¤¥áì âਡãâ § ¯¨á¨)
|
||
;
|
||
CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
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 ; ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à
|
||
;
|
||
;
|
||
;R002 |