mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
488 lines
11 KiB
NASM
Executable File
488 lines
11 KiB
NASM
Executable File
;/////////////////////////////////////////////////////////////////////
|
||
; ‚뢮¤ ¤ ëå ªâ. ¯ ¥«¨ -> ¢ ¯ áá. ¯ ¥«ì (¢ë§ë¢ ¥âáï ¨§ ä ©«¥à )
|
||
; <âਣ£¥à ï ä¨âç >
|
||
;/////////////////////////////////////////////////////////////////////
|
||
alt_qview_panel:
|
||
call test_show_panels ; â¥áâ ०¨¬ ¢ª«. ¯ ¥«¥©
|
||
ret z ; ¢ëª«.
|
||
; â¥áâ «¨ç¨ï qview-ä®à¬ â ªâ. ¯ ¥«¨
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
and form_qview
|
||
jr nz,set_norm_actpanel ; ¢ë¢¥á⨠®à¬. ªâ¨¢ãî ¯ ¥«ì
|
||
ld hl,qview1_ ; âਣ£¥à ¯ áá. ¯ ¥«¨
|
||
ld a,(hl)
|
||
or a
|
||
jr nz,set_norm_noactpanel ; ¢ë¢¥á⨠®à¬. ¯ áᨢãî ¯ ¥«ì
|
||
jr set_qview_noactpanel ; qview-¯ ¥«ì ¢ ¯ áá. ¯ ¥«¨ ( ªâ. ¤ ë¥)
|
||
|
||
|
||
|
||
;--------------------------------------------------
|
||
; ‚뢥á⨠®à¬ «ì®© ªâ. ¯ ¥«ì
|
||
;--------------------------------------------------
|
||
set_norm_actpanel:
|
||
ld hl,qview_ ; âਣ£¥à ªâ. ¯ ¥«¨
|
||
ld (hl),0 ; á¡à. âਣ£¥à
|
||
inc hl
|
||
ld a,(hl) ; ï祩ª form_under_qview
|
||
ld (format_mode),a ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
jp A20FC ; ¢ë¢¥á⨠¯ ¥«ì
|
||
|
||
;--------------------------------------------------
|
||
; ‚뢥á⨠®à¬ «ì®© ¯ áá. ¯ ¥«ì
|
||
;--------------------------------------------------
|
||
set_norm_noactpanel:
|
||
call change_panel
|
||
call set_norm_actpanel
|
||
jp change_panel
|
||
|
||
|
||
|
||
;----------------------------------------------------
|
||
; ‚뢥á⨠qview-¯ ¥«ì ¢ ªâ. ¯ ¥«¨ (¯ áá. ¤ ë¥)
|
||
; (¢ë§ë¢ ¥âáï ¨§ Œ¥î)
|
||
;----------------------------------------------------
|
||
set_qview_actpanel:
|
||
; § ¯®«¨âì ¤ 묨 â¨â«-®¯¨á ⥫ì + ãáâ. ¥£® ⨯
|
||
call change_panel
|
||
call get_qview_data ; ¯ áá. ¤ ë¥
|
||
; push af
|
||
call change_panel
|
||
jr set_qview_actpanel1
|
||
; pop af
|
||
; ret nc ; ¯ ¯ª
|
||
; ¢ë¢®¤ ᮤ¥à¦. ä ©«
|
||
; call draw_half_frame ; ®ç¨áâ¨âì ¯ ¥«ì
|
||
;set_qview_file:
|
||
; ld hl,up_info ; ®¯¨á ⥫ì "ÉÍÍÍÍÍÍÍÍÍÍ»"
|
||
; call draw_text
|
||
; ld hl,title_qview ; ®¯¨á â¥«ì ®¤®£® â¨â«
|
||
; call draw_text
|
||
; db 3Eh;-
|
||
;set_qview_fl:
|
||
; db false ; ä« £
|
||
; or a
|
||
; ld a,0
|
||
; ld (set_qview_fl),a ; á¡à. ä« £
|
||
; jr nz,$+11;-
|
||
; call change_panel
|
||
; call alt_file_viewer ; ¢ë¢¥á⨠ᮤ¥à¦. ä ©«
|
||
; call change_panel
|
||
; scf
|
||
; ret
|
||
|
||
; áâà. ä®à¬ â
|
||
set_qview_actpanel1:
|
||
call dinqview_res_flag ; "dinamqview" 㦥 ®âà ¡®â «
|
||
ld de,format_mode ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
ld a,(de)
|
||
bit 4,a ; qview
|
||
ret nz ; ¥ ®âà ¡. ¯®¢â®à®
|
||
bit 3,a ; info
|
||
jr z,$+5
|
||
ld a,(form_under_info) ; ä®à¬ â ¯®¤ info-¯ ¥«ìî
|
||
ld hl,qview_ ; âਣ£¥à ªâ. ¯ ¥«¨
|
||
ld (hl),1 ; ãáâ. âਣ£¥à
|
||
inc hl
|
||
ld (hl),a ; form_under_qview
|
||
and form_trd ; ãç¥áâì 6-© ¡¨â ᯥª-ä®à¬ â
|
||
or form_qview
|
||
ld (de),a ; ãáâ. qview-ä®à¬ â
|
||
xor a
|
||
ld (info_),a ; á¡à. info-âਣ£¥à
|
||
ret
|
||
|
||
|
||
;----------------------------------------------------
|
||
; ‚뢥á⨠qview-¯ ¥«ì ¢ ¯ áá. ¯ ¥«¨ ( ªâ. ¤ ë¥)
|
||
;----------------------------------------------------
|
||
set_qview_noactpanel:
|
||
; § ¯®«¨âì ¤ 묨 â¨â«-®¯¨á ⥫ì + ãáâ. ¥£® ⨯
|
||
call get_qview_data
|
||
; push af
|
||
xor a
|
||
ld (D48B1),a ; á¡à. ¨¢¥àá¨î â¨â«
|
||
call change_panel
|
||
call set_qview_actpanel1 ; áâà. ä®à¬ â
|
||
call draw_half_frame ; ®ç¨áâ¨âì ¯ ¥«ì
|
||
; pop af
|
||
; jr c,set_qview_noactp2 ; ä ©«
|
||
call prn_up_path ; ¢ë¢¥á⨠§ ¯®«. ®¯¨á â¥«ì ¯ ¯ª¨
|
||
;set_qview_noactp1:
|
||
call change_panel
|
||
ld a,true
|
||
ld (D48B1),a ; ãáâ. ¨¢¥àá¨î â¨â«
|
||
ret
|
||
|
||
; áâநâì æ¢¥â qview-â¨â«
|
||
;set_qview_noactp2:
|
||
; ld a,(D48B1) ; ä« £ ¨¢¥àᨨ path-áâப¨ ªâ. ¯ ¥«¨
|
||
; or a
|
||
; ld a,(color_array+4) ; 30h 梥â "Selected title"
|
||
; jr nz,$+5
|
||
; ld a,(color_array+2) ; 1Bh 梥â "Normal text"
|
||
; ld (qview_color1__),a ; 梥â
|
||
; call set_qview_file
|
||
; jr set_qview_noactp1
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
type_title_qview:
|
||
db 0 ; ä« £ 00/01 - ¯ ¯ª /ä ©«
|
||
|
||
;-----------------------------------------------------------
|
||
; ‡ ¯®«¨âì â¨â«-®¯¨á â¥«ì ¤ 묨 ¤¨áª ªâ. ¯ ¥«¨
|
||
; ¨ ãáâ ®¢¨âì ⨯ ¢ë¢®¤¨¬®£® â¨â« -®¯¨á ⥫ï.
|
||
;-----------------------------------------------------------
|
||
get_qview_data:
|
||
; ¢áâ ¢¨âì ¨¬ï ⥪. ¯ ¯ª¨ ¨«¨ ¯ãâì + ᪠¨à®¢ ¨¥
|
||
call print_qview_name
|
||
ret c ; 㪠§ ⥫ì ä ©«¥
|
||
; ç¨á«® ¯ ¯®ª
|
||
exx
|
||
ld hl,0 ; áâ.à §àï¤
|
||
exx
|
||
ld hl,(count_dirs) ; ç¨á«® ¯ ¯®ª
|
||
ld iy,tmp2__
|
||
res 7,(iy+0)
|
||
ld ix,qview_total_folders ; "00,000"
|
||
call decimal16
|
||
; ç¨á«® ä ©«®¢
|
||
exx
|
||
ld hl,0 ; áâ.à §àï¤
|
||
exx
|
||
ld hl,(count_files) ; ç¨á«® ä ©«®¢ ¢ ¯ ¯ª¥
|
||
ld iy,tmp2__
|
||
res 7,(iy+0)
|
||
ld ix,qview_total_files ; "00,000"
|
||
call decimal16
|
||
; ®¡é. à §¬¥à ä ©«®¢
|
||
exx
|
||
ld hl,(size_files+2) ; áâ.à §àï¤
|
||
exx
|
||
ld hl,(size_files) ; ¬«.à §àï¤
|
||
ld ix,qview_total_bytes ; "0,000,000,000"
|
||
jp decimal32
|
||
|
||
|
||
|
||
|
||
|
||
|
||
qview_max_name equ 29 ; ¬ ªá. ¤«¨ áâப¨ ¯ã⨠¤«ï ".."
|
||
|
||
;------------------------------------------------------------------------
|
||
; ‚뢮¤ ¨¬¥¨ ¯ ¯ª¨ (¨«¨ ¯ã⨠".." ¯ ¯ª¨) ¨ ¢ëç¨á«¥¨¥ ¥¥ ¯ à ¬¥â஢.
|
||
; …᫨ 㪠§ ⥫ì ".." ¯ ¯ª¥, â® ¢ëç¨á«ïîâáï ¥¥ ¯ à ¬¥âàë.
|
||
; …᫨ 㪠§ â¥«ì ¨¬¥¨ ä ©« , â® ¢ë©â¨.
|
||
;
|
||
; ¢ë室: CF - 㪠§ ⥫ì ä ©«¥
|
||
;------------------------------------------------------------------------
|
||
print_qview_name:
|
||
; ®ç¨áâ¨âì ¯à¥¦¥¥ ¨¬ï ¯ ¯ª¨
|
||
ld hl,qview_name_folder ; ¡ãä¥à ¨¬¥¨
|
||
ld b,qview_max_name ; 29 áç¥â稪
|
||
ld a," "
|
||
ld (hl),a
|
||
inc hl
|
||
djnz $-2
|
||
;
|
||
call get_record
|
||
ld a,(de) ;+11 âਡãâ ä ©«
|
||
and 10h ; ¯ ¯ª ?
|
||
ld a,true ; ä ©«
|
||
ld (type_title_qview),a ; ä« £ ⨯ qview-®¯¨á ⥫ï
|
||
scf
|
||
ret z
|
||
xor a ; ¯ ¯ª
|
||
ld (type_title_qview),a ; ä« £ ⨯ qview-®¯¨á ⥫ï
|
||
call qview_scan_folder ; ¢ëç¨á«¨âì à §¬¥à ¯ ¯ª¨
|
||
ld a,(hl) ; ç «® ¨¬¥¨ ¯ ¯ª¨
|
||
cp "."
|
||
jr z,qview_parent_name ; ".." ¯ ¯ª
|
||
ld ix,qview_name_folder ; ¡ãä¥à ¨¬¥¨
|
||
jp dir_name ; ¢áâ ¢¨âì ¨¬ï ¯ ¯ª¨
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‚áâ ¢¨âì ¯ãâì ¤«ï ".." ¯ ¯ª¨. „«¨ë© ¯ãâì ®¡à¥§ ¥âáï
|
||
; ;¢å®¤: de=ªã¤ ª®¯¨à®¢ âì
|
||
;-----------------------------------------------------------
|
||
qview_parent_name:
|
||
ld de,qview_name_folder ; ªã¤
|
||
ld hl,(__path) ; ®¯¨á â¥«ï ¯ã⨠ªâ. ¯ ¥«¨
|
||
ld a,(hl) ; ¤«¨ áâப¨
|
||
sub 2 ; ¬¨ãá ¯à®¡¥«ë ç « -ª®æ áâப¨
|
||
ld bc,5 ; ᬥé. ¤® ¡ãª¢ë ¤¨áª
|
||
add hl,bc ; hl= ç «® ¡ãª¢ë ¤¨áª áâப¨
|
||
ld bc,qview_max_name ; 29 ¬ ªá. ¤«¨ ¯ãâ¨
|
||
cp qview_max_name+1
|
||
jr c,qview_parent_loop
|
||
; ®¡à¥§ âì ¤«¨ãî áâபã
|
||
ldi ; ᪮¯¨à®¢ âì "X:\"
|
||
ldi
|
||
ldi
|
||
sub (qview_max_name-5)+3 ; ¤«¨ ®áâ ⪠¯ã⨠+ ¤«¨ "X:\"
|
||
ld c,a
|
||
add hl,bc ; ç «® ¬ ªá. ¤«¨®© áâப¨
|
||
ld a,"." ; ..
|
||
ld (de),a
|
||
inc de
|
||
ld (de),a
|
||
inc de
|
||
ld bc,qview_max_name-5 ; ¬¨ãá ¤«¨ã áâப¨ "X:\.."
|
||
qview_parent_loop:
|
||
ld a,(hl)
|
||
ldi
|
||
ret po ; ¢¥áì ¯ãâì ᪮¯¨à®¢
|
||
or a
|
||
jr nz,qview_parent_loop
|
||
push de
|
||
pop ix ; ¡ãä¥à
|
||
ld b,c
|
||
jp spaces ; ¤®¯¨á âì 墮áâ®¢ë¥ ¯à®¡¥«ë
|
||
|
||
|
||
|
||
|
||
;---------------------------------------------------------------------
|
||
; ‚뢮¤ 32-å ¡¨âëå ç¨á¥« ¢ ¡ãä¥à, ¢ ¤¥áïâ¨ç®¬ ä®à¬ ⥠á
|
||
; à §¤¥«¥¨¥¬ à §à冷¢ § ¯ï⮩ ¨ ¢¥¤ã騬¨ ¯à®¡¥« ¬¨
|
||
;---------------------------------------------------------------------
|
||
; in: hl' = áâ. à §àï¤
|
||
; hl = ¬«. à §àï¤
|
||
; ix = ¡ãä¥à
|
||
;---------------------------------------------------------------------
|
||
decimal32:
|
||
ld de,0CA00h
|
||
exx
|
||
ld de,3B9Ah ; 1.000.000.000
|
||
exx
|
||
ld iy,tmp2__
|
||
res 7,(iy+0)
|
||
call GetN32
|
||
call print_comma1
|
||
ld de,0E100h
|
||
exx
|
||
ld de,05F5h ; 100.000.000
|
||
exx
|
||
call GetN32
|
||
ld de,9680h
|
||
exx
|
||
ld de,98h ; 10.000.000
|
||
exx
|
||
call GetN32
|
||
decimal24:
|
||
ld de,4240h
|
||
exx
|
||
ld de,0Fh ; 1.000.000
|
||
exx
|
||
call GetN32
|
||
call print_comma1
|
||
ld de,86A0h
|
||
exx
|
||
ld de,1 ; 100.000
|
||
exx
|
||
call GetN32
|
||
decimal16:
|
||
ld de,10000
|
||
exx
|
||
ld de,0 ; 10.000
|
||
exx
|
||
call GetN32
|
||
ld de,1000 ; 1.000
|
||
call GetN16
|
||
call print_comma1
|
||
ld de,100 ; 100
|
||
call GetN16
|
||
ld de,10 ; 10
|
||
call GetN16
|
||
ld a,l
|
||
add a,"0"
|
||
jr GetN163
|
||
|
||
tmp2__: db 0
|
||
|
||
GetN32: ld a,2Fh
|
||
and a
|
||
GetN321:inc a
|
||
sbc hl,de
|
||
exx
|
||
sbc hl,de
|
||
exx
|
||
jp nc,GetN321
|
||
add hl,de
|
||
exx
|
||
adc hl,de
|
||
exx
|
||
jr GetN160
|
||
;
|
||
GetN16: ld a,2Fh
|
||
and a
|
||
GetN161:inc a
|
||
sbc hl,de
|
||
jp nc,GetN161
|
||
add hl,de
|
||
GetN160:cp "0"
|
||
jr z,GetN162
|
||
set 7,(iy+0)
|
||
GetN162:bit 7,(iy+0)
|
||
jr nz,GetN163
|
||
ld a," " ; ¢¥¤ã騩 ¯à®¡¥«
|
||
GetN163:ld (ix+0),a ; á®åà. ¢ ¡ãä¥à¥
|
||
inc ix
|
||
ret
|
||
|
||
; à §¤¥«¨â¥«ì à §à冷¢
|
||
print_comma1:
|
||
ld a,","
|
||
jr nz,prn_com__
|
||
ld a," "
|
||
prn_com__:
|
||
ld (ix+0),a
|
||
inc ix
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; „¨ ¬¨ç¥áª¨© ¢ë¢®¤ ªâ. ¯ ¥«¨ ¢ ¯ áᨢ®©
|
||
; ¢ë室: NZ - ᬥ¨âì á®áâ. key-¡ à
|
||
;-----------------------------------------------------------
|
||
dinam_qview_panel:
|
||
call test_show_panels ; â¥áâ ०¨¬ ¢ª«. ¯ ¥«¥©
|
||
ret z ; ¢ëª«.
|
||
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ¥«¨
|
||
and form_qview
|
||
ret z ; ०¨¬ ¢ëª«.
|
||
; § ¤¥à¦ª ¯¥à¥¤ ®âà ¡®âª®©
|
||
ld b,60 ; 0,6 ᥪ.
|
||
dinqview_loop:
|
||
push bc
|
||
call get_mouse_info ; ç⥨¥ á®áâ®ï¨ï ¬ë誨
|
||
pop bc
|
||
jr z,dinqview_next ; ª®¯ª¨ ¥ ¦ âë
|
||
ld a,h
|
||
cp 28 ; Y ª®®à¤. ¬ë誨
|
||
jr nc,dinqview_res_flag
|
||
jr dinqview_set_flag
|
||
dinqview_next:
|
||
push bc
|
||
ld a,3 ; ®¯à®á ª« ¢ë
|
||
rst 20h
|
||
ex af,af'
|
||
ld a,b
|
||
pop bc
|
||
and 11110000b ; ¦ âë Ctrl,Alt,Shift ?
|
||
ret nz ; ¤
|
||
ex af,af'
|
||
jr nz,dinqview_exit ; ¥áâì ᨬ¢®«
|
||
halt
|
||
djnz dinqview_loop
|
||
db 3Eh ; ld a,..
|
||
dinqview_flag:
|
||
db true ; ä« £ ¥®¡å. ®âà ¡®âª¨ "dinam_qview_panel"
|
||
or a
|
||
ret z ; ¥ ®âà ¡ âë¢ âì
|
||
call get_qview_data ; § ¯®«¨âì ®¯¨á ⥫ì
|
||
; jr c,dinqview_file ; 㪠§ ⥫ì ä ©«¥
|
||
call change_panel
|
||
call draw_half_frame ; ®ç¨áâ¨âì ¯ ¥«ì
|
||
call upath6_ ; ¢ë¢¥á⨠§ ¯®«. ®¯¨á ⥫ì
|
||
call change_panel
|
||
dinqview_res_flag:
|
||
xor a ; false
|
||
jr $+4
|
||
dinqview_set_flag:
|
||
ld a,true
|
||
ld (dinqview_flag),a
|
||
dinqview_exit:
|
||
xor a ; Z-ä« £
|
||
ret
|
||
|
||
|
||
|
||
|
||
; ‚뢥á⨠ᮤ¥à¦¨¬®¥ ä ©« ¢ ¯ áá. ¯ ¥«¨
|
||
;dinqview_file:
|
||
; call change_panel
|
||
; call draw_half_frame ; ®ç¨áâ¨âì ¯ ¥«ì
|
||
; ld hl,title_qview ; ®¯¨á â¥«ì ®¤®£® â¨â«
|
||
; call draw_text
|
||
; call change_panel
|
||
; call alt_file_viewer ; ¢ë¢¥á⨠ᮤ¥à¦. ä ©«
|
||
; jr dinqview_res_flag ; á¡à. ä« £ ®âà ¡®âª¨ "dinqview"
|
||
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20>®¤áç¨â âì à §¬¥à ¯ ¯ª¨
|
||
; ¢å®¤: hl= ç «® § ¯¨á¨
|
||
;-------------------------------------------------
|
||
qview_scan_folder:
|
||
push hl
|
||
push hl
|
||
ld hl,win_scan_folder ; ®¯¨á ⥫ì "Scanning the folder..."
|
||
call WinSimple ; ®âªàëâì ®ª®
|
||
pop hl
|
||
call scan_folder ; ᪠¨à. ¯ ¯ªã
|
||
call CloseWinSimple ; § ªàëâì ®ª®
|
||
ld a,1 ; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
|
||
rst 20h
|
||
pop hl
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; ‘ª ¨à®¢ ¨¥ ¯ ¯ª¨ ªâ. ¯ ¥«¨
|
||
; ¢å®¤: hl= ç «® § ¯¨á¨
|
||
;-------------------------------------------------
|
||
scan_folder:
|
||
xor a ; ०¨¬ "¯à®á⮥ ᪠¨à. ¯ ¯ª¨"
|
||
scan_folder_alt:
|
||
ld (scan_mode),a ; ०¨¬ à ¡®âë ¯à®æ¥¤ãàë
|
||
; ᪮¯¨à. ¯ãâì ¯ ¥«¨ ¢® ¢à¥¬. ¡ãä¥à
|
||
push hl
|
||
ld hl,(__buff) ; ®âªã¤ , ¤à¥á ¯ã⨠ªâ. ¯ ¥«¨
|
||
ld de,work_buffer ; ªã¤
|
||
ld a,(disk) ; ¤¨áª ¯ ¥«¨
|
||
add a,"A"
|
||
ld (de),a
|
||
inc de
|
||
ld a,":"
|
||
ld (de),a
|
||
inc de
|
||
call copy_string ; (hl) -> (de) ¤® ã«ï
|
||
pop hl
|
||
ld a,(hl)
|
||
cp "." ; ".." ?
|
||
jr z,scan_fold1 ; ⮫쪮 ¯ãâì த¨â. ¯ ¯ª¨
|
||
; á®§¤ âì ®¢ë© ¯ãâì
|
||
push hl
|
||
ex de,hl
|
||
dec hl
|
||
dec hl
|
||
ld a,'\'
|
||
cp (hl)
|
||
jr z,$+3
|
||
inc hl
|
||
ld (hl),a
|
||
inc hl
|
||
ex de,hl ; de=ªã¤
|
||
pop hl ; ®âªã¤
|
||
ld bc,0044h ; 11 -> 8.3
|
||
rst 10h
|
||
scan_fold1:
|
||
ld hl,work_buffer
|
||
ld c,1Dh ; ãáâ. ¯ãâì
|
||
rst 10h
|
||
jp ScanTree ; ᪠¨à. ¯ ¯ªã
|