Estex-DSS/DSS/API/RmDir.asm
2023-12-01 02:05:37 +10:00

110 lines
1.9 KiB
NASM
Raw 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.

////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #1C. “¤ «¥­¨¥ ª â «®£ .
; Œ®¦­® 㤠«¨âì ⮫쪮 ¯ãá⮩ ª â «®£.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  ¨¬ï ª â «®£ 
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
////////////////////////////////////////////////////////////////////////
RMDIR: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL
CALL DIR_PATH_CHECK
POP HL
RET C
CALL .START
PUSH AF
LD HL,CurrentDirectory
CALL CHDIR
CALL DIR_PATH_CHANGE.Current
POP AF
RET
;
.START: CALL GETWORD
RET C
CALL MASK
RET C
;!TEST optimization
;LD HL,MASKARE
;LD BC,11
;LD A,"?"
;CPIR
;LD A,DSS_Error.sys.INVALID_NAME
;SCF
CALL CHECK_NAME
;
RET Z
CALL LOADDIR
CALL SEARCH.Dir
RET C
LD HL,(HANDBUF+_sFM.ST_CLUSTER)
PUSH IX
.RMD17: PUSH HL
CALL NSECTOR
LD A,(CORE_BUFFERS.BootSector.S_P_C)
.RMD12: PUSH AF
PUSH HL
PUSH IX
IN A,(SLOT3)
PUSH AF
IN A,(SLOT0)
OUT (SLOT3),A
LD DE,CORE_BUFFERS.SECBUF+#C000
LD BC,1*256 + Dss.DRV.Read
LD A,(FatBuffer.DRIVE)
RST ToDSS.DRV
POP AF
OUT (SLOT3),A
LD B,16 ;!HARDCODE 16 * 32 = 512; 32 - à §¬¥à § ¯¨á¨, 512 - à §¬¥à áç¨â ­­®£® ᥪâ®à 
LD HL,CORE_BUFFERS.SECBUF
.RMD10: LD A,(HL)
OR A
JP Z,.RMD15 ;DIR EMPTY
CP "."
JR Z,.RMD14
CP #E5 ;!HARDCODE ¡ ©â 㤠«¥­¨ï ä ©« 
JR Z,.RMD14
LD DE,11 ;!HARDCODE ᬥé. ¤® ¡ ©â   âਡã⮢
ADD HL,DE
LD A,(HL)
SBC HL,DE
;BIT 3,A
AND %0000'1000
JP Z,.error ;DIR NOT EMPTY
.RMD14: LD DE,#0020
ADD HL,DE
DJNZ .RMD10
POP IX
POP HL
INC IX
LD A,XH
OR XL
JR NZ,.RMD11
INC HL
.RMD11: POP AF
DEC A
JR NZ,.RMD12
POP HL ; ­®¬¥à ª« áâ¥à 
CALL R_F_FAT ; ¯à®ç¨â âì ¨§ ª¥è  FAT-  ­®¬¥à á«¥¤. ª« áâ¥à 
EX DE,HL ; hl=­®¬¥à á«¥¤. ª« áâ¥à 
JR NC,.RMD17 ; ­¥ ª®­¥æ 楯®çª¨
.RMD18: POP IX
JP DEL_FN.DELETE ; ¯®¬¥â¨âì § ¯¨áì ª ª "㤠«¥­­ ï"
.RMD15: POP IX
POP HL
POP AF
POP HL
JR .RMD18
.error: POP IX
POP HL
POP AF
POP HL
POP IX
LD A,DSS_Error.sys.DIR_NOT_EMPTY
SCF
RET
;