//////////////////////////////////////////////////////////////////////// ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; A - ATTRIB ; B - MODE ; B = 0 GET ATTRIB ; B = 1 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 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+_sFM.ATTRIBUT) ;LD B,(IY+_sFM.ATTRIBUT) ;PUSH BC ;CALL CLOSE ;POP BC ;RET C ;LD A,B ; RET ; .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.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