mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
158 lines
4.0 KiB
NASM
Executable File
158 lines
4.0 KiB
NASM
Executable File
;-----------------------------------------------------------
|
||
; ‡ ¯®«¨âì ¡ ªã ª â «®£ + à §¬¥à ä ©«®¢ ᯨáª
|
||
; ¢ë室: CF - ®è¨¡ª çâ¥¨ï ¤¨áª
|
||
;-----------------------------------------------------------
|
||
read_new_folder:
|
||
call read_new_list ; § ¯®«¨âì ¡ ªã ®¢ë¬ ᯨ᪮¬ + à §¬¥à ä ©«®¢
|
||
ret c
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
and form_trd
|
||
;jp z,msdos_scan_folder ; ᪠¨à. ¯ ¯ªã -> scan_folder ?
|
||
ret z
|
||
;-------------------------------------------------------------
|
||
; ‚ëç¨á«¨âì ®¡ê¥¬ ä ©«®¢ ᯥª-¨¬¨¤¦ (¨ä ¨§ 9-£® ᥪâ®à )
|
||
;-------------------------------------------------------------
|
||
ld a,(cash_left_dir) ; ®¬¥à ¡ ª¨ ª â «®£ ªâ. ¯ ¥«¨
|
||
out (SLOT3),a ; ¯®¤ª«. áâà ¨æã ª â «®£
|
||
; ¢¥áì ®¡ê¥¬ ¤¨áª
|
||
ld hl,0Ah ; 655,360 (000A:0000)
|
||
ld (total_space_disk+2),hl ; áâ. à §àï¤
|
||
ld hl,0
|
||
ld (total_space_disk),hl ; ¬«. à §àï¤
|
||
; à áç¨â âì ®¡é. à §¬¥à ä ©«®¢
|
||
exx
|
||
ld bc,16 ; à §¬¥à trd-§ ¯¨á¨
|
||
ld hl,0 ; áâ. à §àï¤
|
||
exx
|
||
ld hl,0 ; ¬«. à §àï¤
|
||
ld ix,0C000h+11 ; ï祩ª à §¬¥à ä ©«
|
||
ld bc,(all_files) ; ç¨á«® ä ©«®¢ ¤¨áª
|
||
spec_scan_loop:
|
||
ld e,(ix+0)
|
||
ld d,(ix+1)
|
||
add hl,de ; ¬«.à §àï¤
|
||
exx
|
||
ld de,0
|
||
adc hl,de ; áâ.à §àï¤
|
||
add ix,bc ; á«¥¤. § ¯¨áì
|
||
exx
|
||
dec bc ; --ç¨á«® ä ©«®¢
|
||
ld a,c
|
||
or b
|
||
jr nz,spec_scan_loop
|
||
exx
|
||
ld (files_size+2),hl ; áâ.à §àï¤
|
||
exx
|
||
ld (files_size),hl ; ¬«. à §àï¤
|
||
; à áç¨â âì ᢮¡. ¬¥áâ® ¤¨áª¥
|
||
ld de,(total_space_disk) ; ¬«.à §àï¤
|
||
ex de,hl
|
||
sbc hl,de
|
||
ld (free_space_disk),hl
|
||
exx
|
||
ld de,(total_space_disk+2) ; áâ.à §àï¤
|
||
ex de,hl
|
||
sbc hl,de
|
||
ld (free_space_disk+2),hl
|
||
exx
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‘ª ¨à®¢ ¨¥ ¯ ¯ª¨ ¨ ¯®¤áç¥â ¥¥ à §¬¥à
|
||
;-------------------------------------------------
|
||
;msdos_scan_folder: ; <- § ¬¥¨âì scan_folder ?
|
||
;call get_record
|
||
;jp scan_folder
|
||
;ret
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‡ ¯®«¨âì ¡ ªã ᯨ᪮¬ ®¢®£® ª â «®£
|
||
; ¢ë室: CF - ®è¨¡ª ãáâ. ¤¨áª /¯ãâ¨
|
||
;-------------------------------------------------
|
||
read_new_list:
|
||
call set_path_from_activ_panel ; ãáâ. ¤¨áª ¨ ¯ãâì ®â ªâ. ¯ ¥«¨
|
||
jr nc,read_nlist
|
||
inc a
|
||
scf
|
||
ret z ; ¥â ¤¨áª
|
||
; ¥â ¤ ®£® ¯ãâ¨
|
||
ld hl,(__buff) ; ¤à¥á ¯ã⨠ªâ. ¯ ¥«¨
|
||
ld (hl),'\' ; ª®à¥ì ¢ ¯ãâì ªâ. ¯ ¥«¨
|
||
inc hl
|
||
ld (hl),0
|
||
dec hl
|
||
ld c,1Dh ; ᬥ ⥪. ª â «®£
|
||
rst 10h
|
||
ret c ; ®è¨¡ª
|
||
read_nlist:
|
||
xor a
|
||
ld l,a
|
||
ld h,a
|
||
; á¡à. ï祩ª¨
|
||
ld (files_size),hl ; ®¡é. à §¬¥à ä ©«®¢ ¢ ᯨ᪥
|
||
ld (files_size+2),hl
|
||
ld (all_folders),hl ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
|
||
ld (all_files),hl ; ç¨á«® § ¯¨á¥© ¢ ᯨ᪥ ªâ. ¯ ¥«¨
|
||
ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ ⥫ï
|
||
ld (offset_list),hl ; ᬥé. ᯨáª
|
||
ld (mark_files),hl ; ç¨á«® ¢ë¤¥«. ä ©«®¢
|
||
ld (low_size),hl ; ¬«. à §àï¤ à §¬¥à ¢ë¤¥«. ä ©«®¢
|
||
ld (high_size),hl ; áâ. à §àï¤
|
||
ld h,0C0h ; hl=0C000h
|
||
ld (copy_rec_addr),hl
|
||
;
|
||
ld hl,(__mask) ; "*.*" ¬ ᪠¨¬ñ ä ©«®¢
|
||
ld bc,0019h ; ©¤¥®¥ ¨¬ï ¢ 11 ᨬ¢. ä®à¬ â¥
|
||
read_nlist_loop:
|
||
ld de,work_buffer ; ªã¤
|
||
ld a,37h ; ¢á¥, ªà®¬¥ ¬¥âª¨ ⮬
|
||
rst 10h
|
||
ccf
|
||
ret nc ; ¡®«ìè¥ ¥â § ¯¨á¥©
|
||
call copy_record ; ᪮¯¨à. § ¯¨áì ¢ ¡ ªã ª â «®£
|
||
ld c,1Ah ; ¯®¨áª á«¥¤.
|
||
jr read_nlist_loop
|
||
|
||
|
||
; ‘ª®¯¨à. § ¯¨áì ¢ ¡ ªã ª â «®£
|
||
copy_record:
|
||
ld a,(cash_left_dir) ; ®¬¥à ¡ ª¨ ª â «®£ ªâ. ¯ ¥«¨
|
||
out (SLOT3),a ; ¯®¤ª«. áâà. ª â «®£
|
||
ld hl,work_buffer+33 ; ®âªã¤
|
||
ld a,"."
|
||
cp (hl)
|
||
jr nz,copy_record1
|
||
inc hl
|
||
cp (hl)
|
||
ret nz ; "." ⥪. § ¯¨áì
|
||
dec hl
|
||
copy_record1:
|
||
db 11h ; ld de,..
|
||
copy_rec_addr:
|
||
dw 0C000h ; ªã¤ (⥪. ¤à¥á)
|
||
ld bc,11
|
||
ldir ; ¨¬ï ä ©«
|
||
ld hl,work_buffer+32 ; ®âªã¤
|
||
ldi ; âਡãâ § ¯¨á¨
|
||
ld hl,work_buffer+12 ; ®âªã¤
|
||
ld bc,20
|
||
ldir
|
||
ld (copy_rec_addr),de
|
||
ld hl,(all_files)
|
||
inc hl ; ++ç¨á«® § ¯¨á¥© ¢ ᯨ᪥
|
||
ld (all_files),hl
|
||
; ®¢ë© ®¡é¨© à §¬¥à ä ©«®¢ (total_file_size + found file_size)
|
||
ld hl,(work_buffer+28) ; ¬«. à §àï¤
|
||
ld de,(files_size)
|
||
add hl,de
|
||
ld (files_size),hl
|
||
ld hl,(work_buffer+30) ; áâ. à §àï¤
|
||
ld de,(files_size+2)
|
||
adc hl,de
|
||
ld (files_size+2),hl
|
||
ret
|