mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
93 lines
1.9 KiB
NASM
93 lines
1.9 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
;‚å®¤ë¥ § 票ï:
|
||
; 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
|
||
;
|
||
; 15/11/2023 -bug with bad clusters
|
||
LD A,(IY+_sFM.DRIVE)
|
||
CALL OPENDSK
|
||
JR C,.error
|
||
;
|
||
XOR A
|
||
CALL SET_FM
|
||
; 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
|
||
; 15/11/2023 -bug with bad clusters
|
||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L),E
|
||
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_L+1),D
|
||
;
|
||
LD L,(IY+_sFM.HANDLE)
|
||
LD H,(IY+_sFM.HANDLE+1)
|
||
CALL LOADDIR.Custom ; [ ] big dir
|
||
; [ ] 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
|
||
LD BC,FAT_DIRECTORY_RECORD
|
||
LDIR
|
||
EX AF,AF'
|
||
OUT (SLOT3),A
|
||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||
CALL SAVEDIR
|
||
.NOTMODF: LD A,(.TMP)
|
||
JP RES_FM
|
||
;
|
||
.error: POP DE
|
||
POP DE
|
||
RET
|
||
; |