Estex-DSS/DSS/API/Open.asm
Tolik 90433ea1ec добить:
LOAD_NEXT_DIR_PART_TO_DIR_CACHE
WRITE_DIR_HANDLE
2026-01-16 22:51:22 +10:00

102 lines
2.4 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #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