//////////////////////////////////////////////////////////////////////// ;Входные значения: ; C - #12 ; A - файловый манипулятор ;Выходные значения: ; A - код ошибки, если CF=1 //////////////////////////////////////////////////////////////////////// CLOSE_FN: ;R008 ; ;CLOSE: ; LD (.TMP),A CALL SET_FM RET C LD A,(TASK) CP (IY+_sFM.TASK_NUM) LD A,DSS_Error.sys.ACCESS_DENIED SCF RET NZ BIT 7,(IY+_sFM.ACCESS_MODE) JR Z,.NOTMODF LD E,(IY+_sFM.DIR_CLUSTER) LD D,(IY+_sFM.DIR_CLUSTER+1) PUSH DE ; [x] 15/11/2023 -bug with bad clusters ;!TEST LD A,(IY+_sFM.DRIVE) CALL OPENDSK ; XOR A CALL SET_FM POP DE LD (IY+_sFM.DIR_CLUSTER),E LD (IY+_sFM.DIR_CLUSTER+1),D ; [x] 15/11/2023 -bug with bad clusters ;!TEST LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),E LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D ; CALL LOADDIR .TMP+1: LD A,0 CALL SET_FM ; SET_PAGE_X DIRPAGE ; ;TEST 9/11/23 ; LD HL,DIR ; LD DE,#0020 ; LD C,(IY+_sFM.HANDLE) ; LD B,(IY+_sFM.HANDLE+1) ; JR .CLOSE2 ; .CLOSE1: ; ADD HL,DE ; DEC BC ; .CLOSE2: ; LD A,B ; OR C ; JR NZ,.CLOSE1 LD L,(IY+_sFM.HANDLE) LD H,(IY+_sFM.HANDLE+1) ; LD D,YH LD E,YL EX DE,HL ;PUSH HL ;SET_PAGE_X DIRPAGE ;POP HL LD BC,#0020 ;!HARDCODE LDIR OUT (SLOT3),A CALL SAVEDIR .NOTMODF: LD A,(.TMP) ;CALL RES_FM JP RES_FM ;RET ;