mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
102 lines
2.4 KiB
NASM
102 lines
2.4 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #11. Žâªàë⨥ ä ©« .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ä ©«
|
||
; A - ०¨¬ ¤®áâ㯠:
|
||
; A=0 ç⥨¥/§ ¯¨áì
|
||
; A=1 ç⥨¥
|
||
; A=2 § ¯¨áì
|
||
; ;!TODO A=3 § ¯¨áì ¡¥§ «¨è¨å á®åà ¥¨© ªíè FAT
|
||
; ;!TODO A=4 § ¯¨á âì ªíè FAT
|
||
; ¢ë室: CF=0, A - ¤¥áªà¨¯â®à ä ©« .
|
||
; CF=1, A - ª®¤ ®è¨¡ª¨.
|
||
////////////////////////////////////////////////////////////////////////
|
||
OPEN_FN: ; Current Dir 15/10/23
|
||
;AND #7F ; ACCESS_MODE bit7 - ¤«ï ¢ãâ॥£® ¨á¯®«ì§®¢ ¨ï))) ;!TODO
|
||
LD (.TMP),A
|
||
PUSH HL
|
||
CALL DIR_PATH_CHECK.forceCheck
|
||
POP HL
|
||
RET C
|
||
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
|
||
;R008 ;
|
||
;.start: ;
|
||
CALL SetPath_GetName
|
||
RET C
|
||
CALL MASK
|
||
RET C
|
||
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
|
||
RET C
|
||
;
|
||
; IX - ᬥ饨¥ § ¯¨áì ¢ SLOT3 DIRPAGE.buffer
|
||
.FM: ; enter point from ATTRIB
|
||
PUSH DE ; á®åà 塞 㪠§ â¥«ì § ¯¨áì ¢ ª â «®£¥ FS (¯®«ãç¥ ¨§ SEARCH)
|
||
CALL GET_FM
|
||
POP DE
|
||
RET C
|
||
;
|
||
LD A,C ; ¤¥áªà¨¯â®à ä ©«
|
||
EX AF,AF'
|
||
LD (IY+_sFM.HANDLE),E
|
||
LD (IY+_sFM.HANDLE+1),D
|
||
LD D,XH
|
||
LD E,XL
|
||
LD (IY+_sFM.OffsetInDirCache),E
|
||
LD (IY+_sFM.OffsetInDirCache+1),D
|
||
LD D,YH
|
||
LD E,YL
|
||
LD HL,CORE_BUFFERS.HANDBUF
|
||
LD BC,CORE_BUFFERS.HANDBUF.SIZE
|
||
LDIR
|
||
.TMP+1: LD A,0
|
||
LD (IY+_sFM.ACCESS_MODE),A
|
||
PUSH IY
|
||
POP HL
|
||
LD DE,_sFM.F_POSITION
|
||
ADD HL,DE
|
||
; ‡ ã«ï¥¬
|
||
; _sFM.F_POSITION
|
||
; _sFM.F_POSITION + 1
|
||
; _sFM.F_POSITION + 2
|
||
; _sFM.F_POSITION + 3
|
||
LD BC,#0400 ; B - áç¥â稪
|
||
.loopZ0: LD (HL),C
|
||
INC HL
|
||
DJNZ .loopZ0
|
||
;
|
||
EX DE,HL
|
||
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_L
|
||
LDI ; _sFM.DIR_CLUSTER_L
|
||
LDI ; _sFM.DIR_CLUSTER_L + 1
|
||
LD HL,CORE_BUFFERS.FM_BUF + _sFM.FS_REC.FIRST_CLUSTER_H
|
||
LDI ; _sFM.DIR_CLUSTER_H
|
||
LDI ; _sFM.DIR_CLUSTER_H + 1
|
||
EX DE,HL
|
||
;
|
||
INC HL
|
||
INC HL
|
||
LD A,(CORE_BUFFERS.FS_Buffer.DRIVE)
|
||
LD (HL),A ; _sFM.DRIVE
|
||
INC HL
|
||
INC HL
|
||
LD A,(TASK)
|
||
LD (HL),A ; _sFM.TASK_NUM
|
||
INC HL
|
||
; ‡ ã«ï¥¬
|
||
; _sFM.OptimizedClusters
|
||
; _sFM.KnownCluster_L
|
||
; _sFM.KnownCluster_L + 1
|
||
; _sFM.KnownCluster_H
|
||
; _sFM.KnownCluster_H + 1
|
||
; _sFM.KnownOffset_L
|
||
; _sFM.KnownOffset_L + 1
|
||
; _sFM.KnownOffset_H
|
||
; _sFM.KnownOffset_H + 1
|
||
LD BC,#0900 ; B - áç¥â稪
|
||
.loopZ1: LD (HL),C
|
||
INC HL
|
||
DJNZ .loopZ1
|
||
;
|
||
EX AF,AF'
|
||
AND A
|
||
RET |