mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
229 lines
5.2 KiB
NASM
Executable File
229 lines
5.2 KiB
NASM
Executable File
;===========================================================
|
||
; ‚믮«¥¨¥ ª®¬ ¤ë <Enter> ⥪. § ¯¨á¨
|
||
;===========================================================
|
||
Press_Enter:
|
||
ld hl,(all_files)
|
||
ld a,l
|
||
or h
|
||
ret z ; ¯ãáâ ï ¯ ¥«ì
|
||
call get_record ; hl= ç «® § ¯¨á¨, a= âਡãâ ä ©«
|
||
; ᪮¯¨à. ¨¬ï ä ©« /¯ ¯ª¨ ¢ ¡ãä¥à
|
||
push af
|
||
ld de,work_buffer ; ªã¤
|
||
ld bc,0044h ; 11 -> 8.3
|
||
rst 10h
|
||
pop af
|
||
and 10h
|
||
jp z,Launch_File ; ¢ë¯®«¨âì ä ©« (launch.asm)
|
||
;-----------------------------------------
|
||
; <20> ¢¨£ æ¨ï ¯® ¯ ¯ª ¬
|
||
;-----------------------------------------
|
||
ld a,true
|
||
ld (enter_to_folder),a ; ãáâ. ä« £ " ¢¨£ æ¨ï ¯® ¯ ¯ª ¬"
|
||
ld de,work_buffer ; ¨¬ï ¯ ¯ª¨ "file.ext" ä®à¬ â
|
||
ld hl,(__buff) ; ¤à¥á ¡á. ¯ã⨠ªâ. ¯ ¥«¨
|
||
ld bc,127;255 ; ¬ ªá. ¤«¨ ¨¬¥¨
|
||
ld a,(de)
|
||
cp "." ; ".." ?
|
||
jr z,return_to_parent ; § ¤ ¢ த¨â. ¯ ¯ªã
|
||
; á®§¤ âì ®¢ë© ¯ãâì
|
||
xor a
|
||
cpir ; ª®¥æ ¯ã⨠¯ ¥«¨
|
||
dec hl
|
||
dec hl
|
||
ld a,'\'
|
||
cp (hl)
|
||
jr z,$+3
|
||
inc hl
|
||
ld (hl),a
|
||
inc hl
|
||
ex de,hl
|
||
call copy_string ; (hl) -> (de) ¤® ã«ï
|
||
; ¢®©â¨ ¢ ¯ ¯ªã
|
||
call fresh_list_panel ; ®¡®¢¨âì ᯨ᮪ ¯ ¥«¨ (space.asm)
|
||
enter_done:
|
||
xor a
|
||
ld l,a
|
||
ld h,a
|
||
ld (enter_to_folder),a ; ä« £ " ¢¨£ æ¨ï ¯® ¯ ¯ª ¬"
|
||
ld (fresh_list_point),hl ; á¡à. ¯®«®¦. 㪠§ ⥫ï (space.asm)
|
||
ld (fresh_list_offset),hl ; á¡à. ᬥé. ᯨ᪠(space.asm)
|
||
enter_done1: ; <- ¢ë§®¢ ¨§ "seldrv.asm"
|
||
call tab1 ; ®¡. ¯ãâì ª®¬-áâப¨ + ¢ë¢¥á⨠㪠§ ⥫ì
|
||
; â¥áâ ¢ª«. qview-०¨¬ ¤à. ¯ ¥«¨
|
||
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ¥«¨
|
||
bit 3,a ; info
|
||
jr nz,enter_done3
|
||
ret
|
||
;bit 4,a ; qview
|
||
;ret z
|
||
;ld a,true
|
||
;ld (dinqview_flag),a
|
||
;jp dinam_qview_panel ; ®¡®¢¨âì qview-¯ ¥«ì
|
||
;
|
||
enter_done3:
|
||
ld a,0 ; ä« £ ®¡®¢«¥¨ï info-¯ ¥«¨
|
||
or a
|
||
ret z ; ¥ ®âà ¡. ¯à¨ ¢¨£ 樨 ¯® ¯ ¯ª ¬
|
||
xor a
|
||
ld (enter_done3+1),a ; á¡à. ä« £
|
||
jp set_info_noactpanel ; ®¡®¢¨âì info-¯ ¥«ì
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20> § ¤ ¢ த¨â. ¯ ¯ªã
|
||
;-------------------------------------------------
|
||
return_to_parent:
|
||
; á®§¤ âì ®¢ë© ¯ãâì
|
||
call cut_path_to_prev_dir ; ®£à ¨ç¨âì ¯ãâì த¨â. ¯ ¯ª®©
|
||
; ¢®©â¨ ¢ த¨â. ¯ ¯ªã
|
||
push af
|
||
push hl
|
||
call read_new_folder ; ®¢ë© ᯨ᮪ ª â «®£ + à §¬¥à ¯ ¯ª¨
|
||
call sorting ; à §¤¥«ìë© á¯¨á®ª 㪠§ ⥫¥© + á®àâ. ᯨáª
|
||
pop hl
|
||
pop af
|
||
; ᪮¯¨à. ¨¬ï த¨â. ¯ ¯ª¨
|
||
ld de,work_buffer+127;255 ; ªã¤
|
||
cp '\' ; ª®à¥ì ¯ã⨠?
|
||
jr z,$+4
|
||
ld (de),a ; ¢®ááâ. ¨¬ï ¤®ç¥à¥© ¯ ¯ª¨
|
||
inc de
|
||
inc hl
|
||
call copy_string
|
||
; 8.3 -> 11 ä®à¬ â ¨¬¥¨
|
||
ld hl,work_buffer+127;255 ; ®âªã¤
|
||
ld de,temp_fname ; ªã¤ (launch.asm)
|
||
ld bc,0144h
|
||
rst 10h
|
||
; ¯®§¨æ. 㪠§ â¥«ì ¨¬ï ¯ ¯ª¨
|
||
call calc_index_name ; ¢ëç¨á«¨âì ¨¤¥ªá ¨¬¥¨
|
||
call set_pointer ; à áç. ¯®«®¦. 㪠§ ⥫ï/ᯨáª
|
||
ld (fresh_list_offset),hl ; ᬥé. ᯨ᪠(space.asm)
|
||
ld (fresh_list_point),bc ; ¯®«®¦. 㪠§ ⥫ï (space.asm)
|
||
call fresh_list_pan ; ®¡®¢¨âì ᯨ᮪ ¯ ¥«¨ (space.asm)
|
||
jr enter_done ; ®¡®¢¨âì ¯ãâì ª®¬-áâப¨
|
||
|
||
|
||
; ‚ëç¨á«¨âì ¯®«®¦. ¨¬¥¨ ¯ ¯ª¨ ¢ ᯨ᪥ ¯ ¥«¨
|
||
; ¢å®¤: bc=¨¤¥ªá ¯®«®¦. ¨¬¥¨ ¯ ¯ª¨
|
||
; ¢ë室: bc=¯®«®¦. 㪠§ ⥫ï
|
||
; hl=ᬥé. ᯨáª
|
||
set_pointer:
|
||
ld hl,(all_files)
|
||
ld de,(_0D01+1) ; à §¬¥à áâà ¨æë - 1
|
||
call cmphlde
|
||
jr nc,setpnt2
|
||
; ç¨á«® ä ©«®¢ ¬¥ìè¥ á¯¨áª ¯ ¥«¨
|
||
setpnt1:ld hl,0
|
||
ret
|
||
;
|
||
; …᫨ ¨¤¥ªá ¨¬¥¨ ¥ ã¬¥é ¥âáï ¯¥à¢®© áâà ¨æ¥,
|
||
; â® ¨¬ï ãáâ ®¢¨âì ¢ ª®¥æ áâà ¨æë ¨ áâநâì
|
||
; á®®â¢. ®¡à §®¬ ᬥé. ᯨ᪠.
|
||
setpnt2:ld a,c
|
||
sub e
|
||
ld a,b
|
||
sbc a,d
|
||
jr c,setpnt1 ; 㪠§. ¢ ¯à¥¤¥« å ¯¥à¢®© áâà ¨æë ᯨáª
|
||
; bc=¨¤¥ªá ¨¬¥¨
|
||
; de=à §¬¥à áâà ¨æë-1
|
||
ld l,c
|
||
ld h,b
|
||
ld bc,-1 ; áç¥â稪 ᬥé. ᯨáª
|
||
dec hl
|
||
inc bc
|
||
call cmphlde ; hl ¨ "à §¬¥à áâà ¨æë - 1"
|
||
jr nc,$-5
|
||
ld hl,(offset_list) ; ᬥé. ᯨáª
|
||
ld a,l
|
||
sub c ; offset_list - áç¥â稪
|
||
ld a,h
|
||
sbc a,b
|
||
jr nc,$+4
|
||
ld l,c ; hl=ᬥé. ᯨáª
|
||
ld h,b
|
||
; 㪠§ â¥«ì ¢ ¯à¥¤¥« å ¯®á«¥¤. áâà ¨æë ᯨáª
|
||
ld c,e ; bc=¯®«®¦. 㪠§ ⥫ï
|
||
ld b,d
|
||
ret
|
||
|
||
|
||
; ‚ëç¨á«¨âì ¨¤¥ªá ¯®«®¦. ¨¬¥¨ ¯ ¯ª¨ ¢ ᯨ᪥
|
||
; ¢å®¤: temp_fname - ¨¬ï ¯ ¯ª¨
|
||
; ¢ë室: bc=¨¤¥ªá ¨¬¥¨
|
||
calc_index_name:
|
||
ld bc,0 ; ¨¤¥ªá ¯®«®¦¥¨ï
|
||
exx
|
||
ld hl,(all_folders) ; ç¨á«® ¯ ¯®ª
|
||
ld a,(sort_type) ; ०¨¬ á®àâ¨à®¢ª¨
|
||
cp "u" ; unsorted
|
||
jr nz,$+5
|
||
ld hl,(all_files) ; ç¨á«® ¯ ¯®ª+ä ©«®¢
|
||
ld a,l
|
||
or h
|
||
exx
|
||
ret z
|
||
ld hl,(directory) ; ¬ áᨢ 㪠§ ⥫¥© ¯ ¯ª¨
|
||
calc_index__:
|
||
ld e,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
inc hl
|
||
push hl
|
||
ex de,hl ; ¨¬ï ᯨáª
|
||
ld de,temp_fname ; ¨¬ï ¯ã⨠(launch.asm)
|
||
call compare_fnames ; áà ¢¨âì ¨¬¥
|
||
pop hl
|
||
ret z
|
||
inc bc ; ++¨¤¥ªá ¯®«®¦¥¨ï
|
||
exx
|
||
dec hl
|
||
ld a,l
|
||
or h
|
||
exx
|
||
jp nz,calc_index__
|
||
ret
|
||
|
||
; ‘à ¢¨âì áâப¨
|
||
; ¢å®¤: hl=string1
|
||
; de=string2
|
||
; ¢ë室: "z" - ᮢ¯ ¤ îâ
|
||
; "nz" - ¥ ᮢ¯ ¤ îâ
|
||
compare_fnames:
|
||
ld a,11 ; ¤«¨ áà ¢¥¨ï
|
||
ex af,af'
|
||
ld a,(de)
|
||
cp (hl)
|
||
ret nz
|
||
inc hl
|
||
inc de
|
||
ex af,af'
|
||
dec a
|
||
jr nz,$-8
|
||
ret
|
||
|
||
|
||
; Ž£à ¨ç¨âì ¯ãâì ¯à¥¤ë¤ã饩 ¯ ¯ª®©
|
||
; ¢å®¤: hl=áâப ¯ãâ¨
|
||
; ¢ë室: hl= ç «® ¨¬¥¨ § â¥à⮩ ¯ ¯ª¨
|
||
; a=§ â¥àâë© á¨¬¢®« ¨¬¥¨ ¯ ¯ª¨
|
||
cut_path_to_prev_dir:
|
||
ld e,l
|
||
ld d,h
|
||
xor a
|
||
cpir ; ª®¥æ áâப¨
|
||
dec hl
|
||
ld bc,127;255
|
||
ld a,'\'
|
||
cpdr
|
||
inc hl
|
||
ex de,hl
|
||
sbc hl,de ; ª®à¥ì ¯ã⨠?
|
||
ex de,hl
|
||
jr nz,$+3 ; ¥â
|
||
inc hl
|
||
ld a,(hl) ; á®åà. § â¨à. ᨬ¢®«
|
||
ld (hl),0 ; ®âª¨ãâì ¯®á«¥¤. ¯ ¯ªã
|
||
ret
|