mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
180 lines
3.4 KiB
NASM
180 lines
3.4 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #1B. ‘®§¤ ¨¥ ª â «®£ .
|
||
;
|
||
; ¢å®¤: HL - 㪠§ â¥«ì ¨¬ï ª â «®£
|
||
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||
;
|
||
; INPUT: HL - "C:\DIR\DIR\DIR_NAME",0
|
||
////////////////////////////////////////////////////////////////////////
|
||
;error
|
||
MKDIR.DIR_EXISTS:
|
||
LD A,DSS_Error.sys.DIR_EXISTS
|
||
CCF
|
||
RET
|
||
|
||
|
||
MKDIR: ;!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
|
||
POP AF
|
||
RET
|
||
;
|
||
.START: CALL GETWORD ; â¥áâ ¤®¯ãáâ. ¨¬ï ¨ áâà. ¤¨áª
|
||
RET C
|
||
;LD HL,TMPNAME ; 8.3 ¨¬ï
|
||
;LD DE,MASKARE ; ¡ãä¥à ¨¬¥¨ 11 ᨬ¢. ä®à¬ â
|
||
CALL MASK ; ¯à¥®¡à. ¨¬ï 8.3 -> 11 ä®à¬ â
|
||
RET C
|
||
;!TEST optimization à ¥¥ GETWORD 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
|
||
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£
|
||
;
|
||
CALL SEARCH.Dir ; ¯®¨áª § ¯¨á¨ ª â «®£ ¢ ᯨ᪥ ¤¨áª
|
||
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
|
||
; LD A,DSS_Error.sys.DIR_EXISTS
|
||
; CCF
|
||
; RET C ; ª â «®£ ©¤¥
|
||
JR NC,.DIR_EXISTS
|
||
CP DSS_Error.sys.FILE_NOT_FOUND
|
||
SCF
|
||
RET NZ
|
||
;
|
||
CALL G_CLUST
|
||
RET C
|
||
PUSH HL
|
||
; [ ] fat32
|
||
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT- ®¬¥à ª« áâ¥à
|
||
CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||
LD HL,MASKARE
|
||
LD DE,HANDBUF
|
||
LD BC,11
|
||
LDIR
|
||
EX DE,HL
|
||
LD A,#10 ; âਡãâ § ¯¨á¨ ª â «®£
|
||
LD (HL),A
|
||
INC HL
|
||
LD BC,#0A00 ; b=áç¥â稪
|
||
;
|
||
.loop1: LD (HL),C
|
||
INC HL
|
||
DJNZ .loop1
|
||
;
|
||
PUSH HL
|
||
CALL SYSTIME ; ã§ âì ⥪. ¤ âã ¨ ¢à¥¬ï
|
||
CALL MK_TIME ; § ª®¤¨à®¢ âì ¢à¥¬ï/¤ âã
|
||
POP HL
|
||
LD (HL),E ; de=¢à¥¬ï
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD (HL),C ; ¤¥ì
|
||
INC HL
|
||
LD (HL),B ; ¬¥áïæ
|
||
INC HL
|
||
POP DE
|
||
PUSH DE
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
LD BC,#0400 ; b=áç¥â稪
|
||
;
|
||
.loop2: LD (HL),C
|
||
INC HL
|
||
DJNZ .loop2
|
||
;
|
||
CALL WRT_HND ; ᪮¯¨à. ®¢ãî § ¯¨áì ¢ ᯨ᮪ ¤¨áª (ª â «®£ )
|
||
;CALL SAVEDIR ; ¨ á¡à®á¨âì ª¥è ª â «®£ ¤¨áª
|
||
LD HL,CORE_BUFFERS.SECBUF ; ¡ãä¥à
|
||
LD (HL),"." ; § ¯¨áì ⥪. ª â «®£
|
||
LD BC,10*256 + ' ' ; !HARDCODE b=áç¥â稪, c=¯à®¡¥«
|
||
;
|
||
.loop3: INC HL
|
||
LD (HL),C
|
||
DJNZ .loop3
|
||
;
|
||
INC HL
|
||
LD DE,HANDBUF+11 ; ï祩ª âਡã⮢ ä ©«
|
||
EX DE,HL
|
||
LD BC,21
|
||
LDIR
|
||
EX DE,HL
|
||
LD (HL),"." ; § ¯¨áì த¨â. ª â «®£
|
||
INC HL
|
||
LD (HL),"."
|
||
LD BC,9*256 + ' ' ; b=áç¥â稪, c=¯à®¡¥«
|
||
.MKD03: INC HL
|
||
LD (HL),C
|
||
DJNZ .MKD03
|
||
;
|
||
INC HL
|
||
SET_PAGE_X DIRPAGE
|
||
PUSH AF
|
||
;
|
||
LD A,(DIRPAGE.buffer)
|
||
CP "."
|
||
LD DE,DIRPAGE.buffer+11 ; âਡãâë § ¯¨á¨ ;!HARDCODE
|
||
JP Z,.MKD04
|
||
LD IX,HANDBUF
|
||
XOR A
|
||
; [ ] fat32
|
||
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
|
||
LD (IX+_sFAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
|
||
LD DE,HANDBUF + _sFAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª âਡã⮢ ä ©«
|
||
.MKD04: EX DE,HL
|
||
LD BC,HANDBUF.SIZE - _sFAT_DIRECTORY_RECORD.ATTRIBUT
|
||
LDIR
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
;
|
||
EX DE,HL
|
||
LD D,H
|
||
LD E,L
|
||
INC DE
|
||
LD (HL),0
|
||
LD BC,512-65 ;!HARDCODE
|
||
LDIR
|
||
;
|
||
POP HL
|
||
CALL CLUSTER_TO_SECTOR
|
||
LD A,(CORE_BUFFERS.BootSector.SectorsPerCluster) ; ᥪâ®à®¢ ª« áâ¥à
|
||
.MKD12: PUSH AF
|
||
PUSH HL ; áâ. à §àï¤
|
||
PUSH IX ; ®¬¥à «®£. ᥪâ®à
|
||
IN A,(SLOT3)
|
||
PUSH AF
|
||
IN A,(SLOT0)
|
||
OUT (SLOT3),A
|
||
;
|
||
LD A,(FatBuffer.DRIVE)
|
||
LD DE,CORE_BUFFERS.SECBUF+#C000
|
||
LD BC,1*256 + Dss.DRV.Write
|
||
RST ToDSS.DRV
|
||
;
|
||
POP AF
|
||
OUT (SLOT3),A
|
||
;
|
||
LD HL,CORE_BUFFERS.SECBUF
|
||
LD DE,CORE_BUFFERS.SECBUF+1
|
||
LD BC,511
|
||
LD (HL),0
|
||
LDIR
|
||
;
|
||
POP IX
|
||
POP HL
|
||
INC IX
|
||
LD A,XH
|
||
OR XL
|
||
JR NZ,.MKD11
|
||
INC HL
|
||
.MKD11 POP AF
|
||
DEC A
|
||
JR NZ,.MKD12
|
||
AND A
|
||
RET
|
||
; |