//////////////////////////////////////////////////////////////////////// ; Функция #11. Открытие файла. ; ; вход: HL - указатель на имя файла ; A - режим доступа: ; A=0 чтение/запись ; A=1 чтение ; A=2 запись ; выход: CF=0, A - дескриптор файла. ; CF=1, A - код ошибки. //////////////////////////////////////////////////////////////////////// OPEN_FN:;!TEST Current Dir ;[x] 15/10/23 LD (.TMP),A PUSH HL CALL DIR_PATH_CHECK.forceCheck POP HL RET C JR .start ;!FIXIT сделать как в mkdir или rmdir? ;R008 ; ;OPEN: ; LD (.TMP),A ; enter point from CREATE .start: CALL GETWORD RET C CALL MASK ; enter point from OPEN_FN RET C .FILE: CALL SEARCH.File ; enter point from EXEC RET C ;R002 ; .FM: CALL GET_FM ; enter point from ATTRIB RET C LD A,C EX AF,AF' EXX LD (IY+_sFM.HANDLE),E LD (IY+_sFM.HANDLE+1),D EXX LD D,YH LD E,YL LD HL,HANDBUF LD BC,HANDBUF.SIZE LDIR .TMP+1: LD A,0 LD (IY+_sFM.ACCESS_MODE),A LD A,(TASK) LD (IY+_sFM.TASK_NUM),A XOR A ; LD (IY+_sFM.KnownCluster_L),A LD (IY+_sFM.KnownCluster_H),A LD (IY+_sFM.KnownOffset_L),A LD (IY+_sFM.KnownOffset_H),A ; LD (IY+_sFM.F_POSITION),A LD (IY+_sFM.F_POSITION+1),A LD (IY+_sFM.F_POSITION+2),A LD (IY+_sFM.F_POSITION+3),A LD A,(FatBuffer.DRIVE) LD (IY+_sFM.DRIVE),A LD HL,CORE_BUFFERS.FM_BUF+_sFM.ST_CLUSTER LD E,(HL) INC HL LD D,(HL) LD (IY+_sFM.DIR_CLUSTER),E LD (IY+_sFM.DIR_CLUSTER+1),D EX AF,AF' AND A RET ;