Estex-DSS/DSS/API/Close.asm
2023-12-01 02:05:37 +10:00

74 lines
1.3 KiB
NASM

////////////////////////////////////////////////////////////////////////
;‚室­ë¥ §­ ç¥­¨ï:
; 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.ST_CLUSTER),E
LD (IY+_sFM.ST_CLUSTER+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
;