mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
LOAD_NEXT_DIR_PART_TO_DIR_CACHE WRITE_DIR_HANDLE ;-bug: GenIOCTL.GetParams - выдавала неправильное количество секторов для FDD
117 lines
2.4 KiB
NASM
117 lines
2.4 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
;‚å®¤ë¥ § 票ï:
|
||
; C - #12
|
||
; A - ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||
;‚ëå®¤ë¥ § 票ï:
|
||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
////////////////////////////////////////////////////////////////////////
|
||
; [ ] big dir ¯¥à¥¤ ¢ âì ®âªã¤ ¨ ᪮«ìª® ¡ ©â®¢ ¨§¬¥¨«®áì ¢ ªíè, ç⮡ ¥ ¯¨á âì ¤¨áª «¨è¥£®
|
||
;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)
|
||
; CF=0
|
||
CALL LOADDIR.Custom ; [x] big dir ;!FIXIT check error
|
||
.TMP+1: LD A,0
|
||
CALL SET_FM
|
||
////////////////////////////////////////////////////////////////////////
|
||
; ;
|
||
; SET_PAGE_X DIRPAGE
|
||
; EX AF,AF'
|
||
; LD HL,DIRPAGE.buffer
|
||
; LD DE,FAT_DIRECTORY_RECORD
|
||
; LD C,(IY+_sFM.HANDLE)
|
||
; LD B,(IY+_sFM.HANDLE+1)
|
||
; PUSH BC ; record index
|
||
; LD A,1 ; [x] big dir
|
||
; AND B
|
||
; LD B,A
|
||
; JR .next_add
|
||
; ;
|
||
; .loop_add: ADD HL,DE
|
||
; DEC BC
|
||
; LD A,B
|
||
; .next_add: OR C
|
||
; JR NZ,.loop_add
|
||
; ;
|
||
; LD D,YH
|
||
; LD E,YL
|
||
; EX DE,HL
|
||
; LD BC,FAT_DIRECTORY_RECORD
|
||
; LDIR
|
||
; EX AF,AF'
|
||
; OUT (SLOT3),A
|
||
; POP HL
|
||
; CALL SAVEDIR
|
||
; .NOTMODF: LD A,(.TMP)
|
||
; JP RES_FM
|
||
; ;
|
||
; .error: POP DE
|
||
; POP DE
|
||
; RET
|
||
////////////////////////////////////////////////////////////////////////
|
||
;
|
||
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
;
|
||
SET_PAGE_X DIRPAGE
|
||
EX AF,AF'
|
||
LD L,(IY+_sFM.OffsetInDirCache)
|
||
LD H,(IY+_sFM.OffsetInDirCache+1)
|
||
PUSH HL
|
||
LD E,YL
|
||
LD D,YH
|
||
EX DE,HL
|
||
LD BC,FAT_DIRECTORY_RECORD
|
||
LDIR
|
||
EX AF,AF'
|
||
OUT (SLOT3),A
|
||
POP HL
|
||
CALL SAVEDIR
|
||
.NOTMODF: LD A,(.TMP)
|
||
JP RES_FM
|
||
;
|
||
.error: POP DE
|
||
POP DE
|
||
RET |