mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
92 lines
1.8 KiB
NASM
92 lines
1.8 KiB
NASM
; [x] fat32 ;!TEST
|
|
////////////////////////////////////////////////////////////////////////
|
|
;‚å®¤ë¥ § 票ï:
|
|
; C - #12
|
|
; A - ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
|
;‚ëå®¤ë¥ § 票ï:
|
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
|
////////////////////////////////////////////////////////////////////////
|
|
;CLOSE:
|
|
CLOSE_FN: 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_L)
|
|
LD D,(IY+_sFM.DIR_CLUSTER_L+1)
|
|
PUSH DE
|
|
LD E,(IY+_sFM.DIR_CLUSTER_H)
|
|
LD D,(IY+_sFM.DIR_CLUSTER_H+1)
|
|
PUSH DE
|
|
;
|
|
; [x] 15/11/2023 -bug with bad clusters ;!TEST
|
|
LD A,(IY+_sFM.DRIVE)
|
|
CALL OPENDSK
|
|
JR C,.error
|
|
;
|
|
XOR A
|
|
CALL SET_FM
|
|
; [x] fat32
|
|
POP DE
|
|
LD (IY+_sFM.DIR_CLUSTER_H),E
|
|
LD (IY+_sFM.DIR_CLUSTER_H+1),D
|
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H),E
|
|
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1),D
|
|
;
|
|
POP DE
|
|
LD (IY+_sFM.DIR_CLUSTER_L),E
|
|
LD (IY+_sFM.DIR_CLUSTER_L+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
|
|
; [ ] big dir
|
|
;!TODO ®â¬®â âì ªíè ¤® 㦮£® record index?
|
|
;
|
|
.TMP+1: LD A,0
|
|
CALL SET_FM
|
|
;
|
|
SET_PAGE_X DIRPAGE
|
|
EX AF,AF'
|
|
; [ ] big dir
|
|
;!TEST 9/11/23 record index
|
|
LD HL,DIRPAGE.buffer
|
|
LD DE,FAT_DIRECTORY_RECORD
|
|
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,FAT_DIRECTORY_RECORD
|
|
LDIR
|
|
EX AF,AF'
|
|
OUT (SLOT3),A
|
|
CALL SAVEDIR
|
|
.NOTMODF: LD A,(.TMP)
|
|
JP RES_FM
|
|
;
|
|
.error: POP DE
|
|
POP DE
|
|
RET
|
|
; |