File-Manager/MOD2/READDSK.ASM
2025-04-04 00:37:36 +10:00

158 lines
4.0 KiB
NASM
Executable File
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.

;-----------------------------------------------------------
; ‡ ¯®«­¨âì ¡ ­ªã ª â «®£  + à §¬¥à ä ©«®¢ ᯨ᪠
; ¢ë室: 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