File-Manager/CORE/SHELL.ASM
2025-04-05 01:58:39 +10:00

2418 lines
59 KiB
NASM
Executable File
Raw Permalink 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.

true equ 1
false equ 0
; —¨á«® ä ©«®¢ ­  ª®«®­ªã
files_per_colon equ 25
; ”®à¬ âë ¯ ­¥«¥©
form_full equ 00000001b ; 0-bit full
form_med equ 00000010b ; 1-bit medium
form_brief equ 00000100b ; 2-bit brief
form_info equ 00001000b ; 3-bit info
form_qview equ 00010000b ; 4-bit qview
;form_tree equ 00100000b ; 5-bit tree
form_trd equ 01000000b ; 6-bit trd/scl ä®à¬ â
;form_ equ 10000000b ; 7-bit
; ‘⥪ 㦥 á⮨⠭  @stack
call read_ini_file ; ¯à®ç¨â âì ini-ä ©« (¥á«¨ ¥áâì)
; ¢ª«. ¢ #0000 ¤à ©¢¥àë ª« ¢ë, ¬ë誨, ®¡ê¥ªâë
di
ld a,(page_module0)
out (SLOT0),a
; ­ áâநâì ®¯æ. ï祩ª¨, ¤¨áª¨ ¨ ¯ã⨠¯ ­¥«¥©
call init_option_cells ; ¡¥à¥â ¤ ­­ë¥ ¨§ work_buffer
call set_colors ; ­ áâநâì æ¢¥â  ®¡®«®çª¨
; ¢ëª«. ¢ë¢®¤ ç á®¢
ld hl,enable_clock ; ä« £
ld a,(hl)
ld (clock__+1),a ; á®åà.
ld (hl),false ; á¡à.
ei
;ld a,form_info
;ld (format_mode),a
call make_user_menu ; á®§¤ âì Œ¥­î <20>®«ì§®¢ â¥«ï
; 宫®¤­ë© ¢å®¤ (¢á¥, ªà®¬¥ ¤®á-ª®¬ ­¤)
cold_entry:
; ãáâ. ª®­ä¨£ãà æ¨î Sprinter-2 (¢ª«.  ªá¥«ì)
ld c,0F1h
rst 08h
; 梥⠡®à¤îà 
xor a
out (0FEh),a
; ãáâ. ¢­ãâà. ¯ «¨âàã
ld a,1 ; ­®¬¥à íªà ­ 
ld bc,03A6h ; CGA-¯ «¨âà 
rst 08h
call init_list_types_drives ; ¨­¨æ. ᯨ᮪ ⨯®¢ ¤¨áª®¢ á¨á⥬ë
call get_total_free_space ; ᢮¡. ¬¥áâ® ­  2 ¤¨áª å ¯ ­¥«¥©
; ⥯«ë© ¢å®¤ (¤«ï ¤®á-ª®¬ ­¤)
warm_entry:
; á®åà. ¯®«®¦. ªãàá®à  á¨áâ. íªà ­ 
ld c,8Eh
rst 08h
ld (sys_cursor_coords+1),de
; ãáâ. ⥪áâ. ०¨¬ íªà ­ 
ld a,3 ; 80x32x16 梥⮢
ld bc,0150h ; b=1 íªà ­
rst ToDSS
; á®åà. á¨áâ. íªà ­
ld c,0B2h
ld a,(page_sys_screen) ; áâà. ¡ãä¥à  ®ª­ 
call screen__
ld a,0C0h
out (PORT_Y),a ; § ªàëâì ᯥª. íªà ­
; ¨­¨â. ¤à ©¢¥à ª« ¢ë
xor a
rst 20h
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
ld a,1
rst 20h
; ¨­¨æ. ®¡à ¡®â稪 ᮡë⨩
call InitEvent
ld a,(present_doscmnd) ; ¯à¨§­ ª ®âà ¡®âª¨ ¤®á-ª®¬ ­¤
or a
jr z,entry1 ; ­¥ ¤®á-ª®¬ ­¤ 
db 3Eh ; ld a,..
number_command: db 0 ; ¯®à浪. ­®¬¥à ¤®á-ª®¬ ­¤ë
cp 14 ; "rename"
jr c,entry2
; 23..14 ­®¬¥à  ª®¬ ­¤, ¨§¬¥­ïîé¨å ᯨ᮪ ¤¨áª 
entry1:
; ‡ ¯®«­¨âì ¡ ­ª¨ ᯨ᪠¬¨ ä ©«®¢  ªâ. ¯ ­¥«ì
call save_pos_list ; á®åà. ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
call read_new_folder ; ­®¢ë© ᯨ᮪ ª â «®£  + à §¬¥à ¯ ¯ª¨
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
call set_newpos_list ; ãáâ. ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
; ¯ áá. ¯ ­¥«ì
call change_panel ; ᬥ­¨âì ¯ ­¥«ì
call read_new_folder
call sorting
call change_panel
entry2: xor a
ld (present_doscmnd),a ; á¡à. ¯à¨§­ ª ¤®á-ª®¬ ­¤
ld (number_command),a ; á¡à. ­®¬¥à ª®¬ ­¤ë
ld (this_cd),a ; á¡à. ¯à¨§­ ª "cd","chdir" ª®¬ ­¤
call PutComLine ; ­ ç. ¢ë¢®¤ ¯ã⨠¢ ª®¬-áâப¥
call print_keybar ; ­ ç «ì­ë© ¢ë¢®¤ key-¡ à 
call A20FC ; ¢ë¢¥á⨠ áâ. ¯ ­¥«ì
call change_panel ; ᬥ­¨âì ¯ ­¥«ì
call A20FC ; ¢ë¢¥á⨠¯ áá. ¯ ­¥«ì
call change_panel
call print_status ; áâ âãá­ ï áâப  ¯ ­¥«¨
call show_pointer ; ­ ç «ì­ë© ¢ë¢®¤ 㪠§ â¥«ï
call init_mouse ; ¨­¨æ. ¨ ¯®ª § âì ¬ëèªã
clock__: ld a,false
ld (enable_clock),a ; ¢®ááâ. ä« £
; £« ¢­ë© 横«
main_loop: ld hl,main_loop ; â®çª  ¢®§¢à â 
push hl
;
ld hl,what ; ¯®«¥ ᮡë⨩
ld a,(hl) ; ᮡë⨥
cp evRunComLine ; ᮡë⨥ "®âà ¡®â âì ª®¬-áâபã"
jp z,parsing_command_line ; launch.asm
;
halt
ld a,3 ; â¥áâ ­ ¦ â¨ï ª« ¢¨è
rst 20h
ld a,b
and 11110000b ; Ctrl,Alt,Shift ?
jp nz,change_keybar ; ᬥ­¨âì ¢¨¤ key-¡ à  ¨ ®âà ¡. ®¯æ¨î
call dinam_qview_panel ; ®âà ¡. ¯à¨ ¢ª«. qview-¯ ­¥«¨
jp nz,change_keybar ; ᬥ­¨âì ¢¨¤ key-¡ à  ¨ ®âà ¡. ®¯æ¨î
call handle_event ; ç¨â ¥¬ ᮡë⨥
ld a,(what) ;+0 ᯨ᮪ ᮡë⨩
cp evNothing
ret z
cp evMouseFr
jp z,buttons_press ; ¡ãâ®­ë ­ ¦ âë
cp evKeyboard
jp z,normal_char ; ®¡ëç­ë¥ ª« ¢¨è¨
cp evCombKey
ret nz
ld a,d
cp 58h ; ªãàá®à ¢¢¥àå
jp z,up
cp 52h ; ªãàá®à ¢­¨§
jp z,down
cp 54h ; ªãàá®à ¢«¥¢®
jp z,left
cp 56h ; ªãàá®à ¢¯à ¢®
jp z,right
cp 53h ; PageDown
jp z,page_down
cp 59h ; PageUp
jp z,page_up
cp 57h ; Home
jp z,home_list
cp 51h ; End
jp z,end_list
ld a,d
cp 3Bh ; F1
;jp z,
cp 3Ch ; F2
jp z,user_menu
cp 3Dh ; F3
jp z,file_viewer
cp 3Eh ; F4
;jp z,
cp 3Fh ; F5
jp z,copy
cp 40h ; F6
jp z,rename
cp 41h ; F7
jp z,make_folder
cp 42h ; F8
jp z,delete
cp 43h ; F9
jp z,main_menu
cp 44h ; F10
jr z,quit
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info+form_qview ; info, qview
ret nz
ld a,d
cp 50h ; Ins
jp z,mark
cp 4Fh ; Del
;jp z,
ret
quit: db 3Eh ; ld a,..
confirm_quit: db true ; ä« £ "¯®¤â¢¥à¦¤¥­¨¥ ¢ë室 "
or a
jr z,quit__
; ®âªàëâì ®ª­® "Quit"
ld hl,win_dial_quit ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Yes"
ret nz
quit__: ld b,0 ; Ok ¢®§¢à. ª®¤
pop hl ; ¢®ááâ. ¡ « ­á á⥪ 
jp exit ; ¢ë室 ¢ „Ž‘
;-----------------------------------------------------------
; ®¡ëç­ë¥ ª« ¢¨è¨
;-----------------------------------------------------------
normal_char: ld a,e
cp 1Bh ; Esc ¢à¥¬¥­­ë© ¯à®á¬®âà íªà ­ 
jp z,view_screen
cp 9 ; Tab ᬥ­   ªâ. ¯ ­¥«¨
jp z,tab
cp 0Dh ; Enter
jp z,Press_Enter
cp " "
ret c
; ¢¢®¤ ᨬ¢®«®¢ ¢ ª®¬-áâபã
ld hl,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤  ª®¬-áâப¨
ld (CursorPos),hl ; ¯®«®¦. ªãàá®à  ­  íªà ­¥
ent_to_cline: call ComLineI ; ¢ª«. ªãàá®à
jp EvComLine1 ; ¢å®¤ ¢ ª®¬-áâபã
; ¢®©â¨ ¢ ª®¬-áâபã ( «ìâ. ¢å®¤)
alt_enter_to_comline:
ld hl,what ; ᯨ᮪ ᮡë⨩
ld (hl),evNothing ; ­¥ ®âà ¡. ¯®¢â®à­®
jr ent_to_cline
;-------------------------------------------------
; ‚६¥­­ë© ¯à®á¬®âà á¨áâ. íªà ­  (Esc)
;-------------------------------------------------
view_screen: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
db 3Eh ; ld a,..
flag_esc: db true ; ä« £ ¢à¥¬. ¯à®á¬®âà  íªà ­  ¯® Esc
or a
ret z
; ¢ëª«. ¢ë¢®¤ ç á®¢
ld hl,enable_clock ; ¢®ááâ. ä« £
ld a,(hl)
push af
ld (hl),false
; á®åà. ¯®«­ë© íªà ­ ¬¥­¥¤¦¥à 
ld c,0B2h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
call screen2__
; ¢®ááâ. ¯®«­ë© á¨á⥬­ë© íªà ­
ld c,0B3h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
call screen__
view_scr_loop__:
; ¦¤¥¬ ­ ¦ â¨ï ¬ë誨
call get_mouse_info ; ç⥭¨¥ á®áâ®ï­¨ï ¬ë誨
jr z,view_scr_loop1__ ; ª­®¯ª¨ ­¥ ­ ¦ âë
call get_fire ; ¦¤¥¬, ¯®ª  ­ ¦ âë ª­®¯ª¨
jr view_scr__
;
view_scr_loop1__:
; ¦¤¥¬ ­ ¦ â¨ï ª« ¢¨è¨
ld a,2
rst 20h
jr z,view_scr_loop__
ld a,1 ; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
rst 20h
view_scr__:
; ¢®ááâ. ¯®«­ë© íªà ­ ¬¥­¥¤¦¥à 
ld c,0B3h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
call screen2__
pop af
ld (enable_clock),a ; ¢®ááâ. ä« £
ret
; áà ¢­¨âì hl á de
cmphlde: ld a,l
sub e
ld a,h
sbc a,d
ret
; § £à㧨âì de
L0020: ld e,(hl)
inc hl
ld d,(hl)
inc hl
ret
; (hl) -> (ix)
; b-áç¥â稪
A0E90: ld a,(hl)
ld (ix+0),a
inc hl
inc ix
djnz $-7
ret
; Š®¯¨à®¢ ­¨¥ áâப¨ ¤® ­ã«ï. <20>ã«ì ª®¯¨àã¥âáï ⮦¥.
; (hl) -> (de)
copy_string: ld a,(hl)
ldi
or a
jr nz,$-4
ret
;-------------------------------------------------
; ‘à ¢­¥­¨¥ áâப¨ á ãç¥â®¬ ॣ¨áâà .
; (®¡à §¥æ ¤®«¦¥­ § ª ­ç¨¢ âìáï ­ã«¥¬)
; ¢å®¤: de - string1
; hl - string2 (®¡à §¥æ)
; ¢ë室: "z" - string1 = string2
; "c" - string1 < string2
; ¨­ ç¥ - string1 > string2
;-------------------------------------------------
compare_strings:ld a,(de)
cp (hl)
ret nz
inc hl
inc de
ld a,(hl)
or a
jr nz,$-7 ; ®¡à §¥æ ­¥ § ª®­ç¥­
ld a,(de)
cp (hl)
ret
;-------------------------------------------------
; “¬­®¦¥­¨¥ BC*DE=HLBC
;-------------------------------------------------
mul_bcde: ld hl,0
ld a,17
rr b
rr c
dec a
ret z
jr nc,$+3
add hl,de
rr h
rr l
jr $-13
; ‚뢮¤ HL ¢ hex-ä®à¬ â¥
; ix=¡ãä¥à
; hl=ç¨á«®
hex16: ld a,h
call hex8
ld a,l
; ‚뢮¤ "a" ¢ hex-ä®à¬ â¥
; ix=¡ãä¥à
; a=ç¨á«®
hex8: push af
rrca
rrca
rrca
rrca
call $+4
pop af
and 0Fh
add a,90h
daa
adc a,40h
daa
ld (ix+0),a
inc ix
ret
; ’¥áâ ०¨¬  ®â®¡à ¦¥­¨ï ¯ ­¥«¥©
; -------------------------------
; out: Z - ¢ëª«. ¯ ­¥«¨
; NZ - ¢ª«. ¯ ­¥«¨
test_show_panels:
db 3Eh ; ld a,..
enable_panels: db true ; ä« £ ®â®¡à ¦¥­¨ï ¯ ­¥«¥©
or a
ret
;-----------------------------------
; ªãàá®à ¢«¥¢®
;-----------------------------------
left: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«. -> ¯¥à¥¬¥é¥­¨¥ ¢ ª®¬-áâப¥
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
cp form_info ; info
ret z
cp form_qview ; qview
ret z;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
ld a,l
or h
jr nz,A0CE6_ ; 㪠§ â¥«ì ­¥ ¢ ­ ç «¥ ᯨ᪠
ld de,(offset_list) ; ᬥé. ᯨ᪠
adc hl,de ; adc ­ã¦¥­ ¤«ï ãáâ."z"
jr nz,_0CEE ; ᯨ᮪ ᬥ饭
ret ; á⮨¬ ¢ ­ ç «¥ ᯨ᪠
A0CE6_: ld de,files_per_colon ; 25 ä ©«®¢ ­  ª®«®­ªã
sbc hl,de
jp nc,A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
; ¤®è«¨ ¤® «¥¢®£® ªà ï ᯨ᪠
A0CE8: ld hl,0 ; 㪠§ â¥«ì ¢ ­ ç «® ¯¨áª 
jp A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
;-----------------------------------
; ­  áâà ­¨æã ¢¢¥àå
;-----------------------------------
page_up: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
jr nz,$+8
call history_begin ; ¢ ­ ç «® ¨áâ®à¨¨
jp alt_enter_to_comline ; 䮪ãá ­  ª®¬-áâபã
;
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
cp form_info ; info
ret z
cp form_qview ; qview
ret z;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
ld hl,(cur_pointer)
ld bc,(offset_list) ; ᬥé. ᯨ᪠
adc hl,bc ; "adc" ­ã¦¥­ ¤«ï "z"
ret z ; 㪠§ â¥«ì ¢ ­ ç «¥ ᯨ᪠
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
ld a,c
or b
jr z,A0CE8 ; 㪠§ â¥«ì ­¥ ¢ ­ ç «¥ ᯨ᪠
; ᯨ᮪ ᬥ饭
call clear_pointer
ld hl,0 ; á¡à. ¯®«®¦. 㪠§ â¥«ï
ld (cur_pointer),hl
ld hl,(offset_list) ; ᬥé. ᯨ᪠
_0CEE: ld de,files_per_colon ; 25/50/75 à §¬¥à áâà ­¨æë
and a
sbc hl,de
jr nc,$+5
A0CF0: ld hl,0
ld (offset_list),hl
jp A0D78 ; ®¡­®¢¨âì ¢¥áì ᯨ᮪ ¯ ­¥«¨
;-----------------------------------
; ªãàá®à ¢¯à ¢®
;-----------------------------------
right: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«. -> ¯¥à¥¬¥é¥­¨¥ ¢ ª®¬-áâப¥
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
cp form_info ; info
ret z
cp form_qview ; qview
ret z;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
_0D01: ld de,files_per_colon-1 ; à §¬¥à áâà ­¨æë - 1
call cmphlde ; áà ¢­¨âì hl á de
jr z,A0D1D ; 㪠§ â¥«ì ¢ ª®­æ¥ ᯨ᪠ ¯ ­¥«¨
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
;
ld de,files_per_colon ; 25 ä ©«®¢ ­  ª®«®­ªã
add hl,de
_0D08: ld de,files_per_colon ; 25/50/75 à §¬¥à áâà ­¨æë
call cmphlde ; áà ¢­¨âì hl á de
jr c,$+5
; ¤®è«¨ ¤® ¯à ¢®£® ªà ï ᯨ᪠
_0D0D: ld hl,files_per_colon-1 ; à §¬¥à áâà ­¨æë - 1
inc hl
ld de,(all_files) ; ä ©«®¢ ¨ ¯ ¯®ª
call cmphlde ; cp (hl) áà ¢­¨âì hl á de
dec hl
jp c,A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
ex de,hl ; hl=all_files (ä ©«®¢+¯ ¯ª¨)
dec hl
jp A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
;-----------------------------------
; ­  áâà ­¨æã ¢­¨§
;-----------------------------------
page_down: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
jr nz,$+8
call history_last ; ¢ ª®­¥æ ¨áâ®à¨¨
jp alt_enter_to_comline ; 䮪ãá ­  ª®¬-áâபã
;
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
cp form_info ; info
ret z
cp form_qview ; qview
ret z;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,e
or d
ret z
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
ld hl,(_0D01+1) ; à §¬¥à áâà ­¨æë - 1
call cmphlde ; áà ¢­¨âì hl á de
jr c,A0D1D
; ç¨á«® ä ©«®¢ ¬¥­ìè¥, 祬
; 㬥頥âáï ¢ ᯨ᪥ ¯ ­¥«¨
ld hl,(cur_pointer) ; 㪠§ â¥«ì ­  ª®­¥æ ᯨ᪠ ¯ ­¥«¨
dec de
call cmphlde ; áà ¢­¨âì hl á de
ret z ; 㪠§ â¥«ì ¢ ª®­æ¥ ᯨ᪠
ex de,hl ; hl = all_files-1
jp A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
;
A0D1D: ld c,l
ld b,h
; â¥áâ ­  ª®­¥æ ¢á¥£® ᯨ᪠
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
ld de,(offset_list) ; ᬥé. ᯨ᪠
inc hl
add hl,de
ld de,(all_files)
call cmphlde ; áà ¢­¨âì hl á de
ret z ; ª®­¥æ ä ©«®¢
_0D1F: ld hl,files_per_colon ; 25/50/75 à §¬¥à áâà ­¨æë
ld de,(offset_list) ; ᬥé. ᯨ᪠
add hl,de
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
call cmphlde ; áà ¢­¨âì hl á de
ld l,c
ld h,b
jp z,A0E12_ ; 㪠§ â¥«ì ¢ ¯à¥¤¥« å ¯®á«¥¤. áâà ­¨æë ᯨ᪠
push hl
call clear_pointer
pop hl
ld (cur_pointer),hl
ld bc,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld hl,(offset_list) ; ᬥé. ᯨ᪠
_0D2C: ld de,files_per_colon ; 25/50/75 à §¬¥à áâà ­¨æë
add hl,de
ld (offset_list),hl
dec de
add hl,de
and a
sbc hl,bc
jp c,A0F09 ; ®¡­®¢¨âì ¢¥áì ᯨ᮪ ¯ ­¥«¨
ex de,hl
ld hl,(offset_list) ; ᬥé. ᯨ᪠
sbc hl,de
dec hl
ld (offset_list),hl
jp A0F09 ; ®¡­®¢¨âì ¢¥áì ᯨ᮪ ¯ ­¥«¨
;-----------------------------------
; ªãàá®à ¢¢¥àå
;-----------------------------------
up: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
jr nz,$+8
up1: call history_prev ; ¯à¥¤. áâப  ¨áâ®à¨¨
jp alt_enter_to_comline ; 䮪ãá ­  ª®¬-áâபã
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 3,a ; info
ret nz
bit 4,a ; qview
ret nz;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
ld de,(offset_list) ; ᬥé. ᯨ᪠
adc hl,de ; adc ­ã¦¥­ ¤«ï "z"
ret z ; á⮨¬ ¢ ­ ç «¥ ᯨ᪠
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
and a
sbc hl,de ; ¬¨­ãá offset_list
jr nz,A0D94_
ex de,hl ; hl=offset_list
dec hl
ld (offset_list),hl
; 横« áªà®««¨­£  ¢á¥£® ᯨ᪠ ¯ ­¥«¨
A0D78: ld hl,0
call A0E15_ ; ¢ë¢®¤ 㪠§ â¥«ï ¢ ­®¢®¬ ¯®«®¦.
A0D7A: ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
inc hl
ld (cur_pointer),hl
_0D7D: ld de,files_per_colon ; 25/50/75 à §¬¥à áâà ­¨æë
call cmphlde ; áà ¢­¨âì hl á de
jr z,A0D80
call A2203 ; ¢ë¢®¤ áâப¨ ᯨ᪠
jr A0D7A
;
A0D80: ld hl,0
ld (cur_pointer),hl ; ­®¢®¥ ¯®«®¦.
ret
;
A0D94_: ld hl,(cur_pointer)
dec hl ; --cur_pointer
jp A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
;-----------------------------------
; ªãàá®à ¢­¨§
;-----------------------------------
down: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
jr nz,$+8
down1: call history_next ; á«¥¤. áâப  ¨áâ®à¨¨
jp alt_enter_to_comline ; 䮪ãá ­  ª®¬-áâபã
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 3,a ; info
ret nz
bit 4,a ; qview
ret nz;
;jp nz, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
_0EC7: ld de,files_per_colon-1 ; à §¬¥à áâà ­¨æë - 1
call cmphlde ; áà ¢­¨âì hl á de
jp nz,A0E0A ; ᬥáâ¨âì 㪠§ â¥«ì ¢­¨§
; ¤®è«¨ ¤® ª®­æ  ᯨ᪠ ¯ ­¥«¨
ld de,(offset_list) ; ᬥé. ᯨ᪠
inc hl
add hl,de
ld de,(all_files)
call cmphlde ; áà ¢­¨âì hl á de
ret z ; ª®­¥æ ä ©«®¢
ld hl,(offset_list) ; ᬥé. ᯨ᪠
inc hl
ld (offset_list),hl
A0F09: ld hl,files_per_colon-1 ; à §¬¥à áâà ­¨æë - 1
call A0E15_ ; ¢ë¢®¤ 㪠§ â¥«ï ¢ ­®¢®¬ ¯®«®¦.
; 横« áªà®««¨­£  ¢á¥£® ᯨ᪠ ¯ ­¥«¨
A0F0A: ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
dec hl
ld (cur_pointer),hl
inc hl
ld a,l
or h
jr z,A0F0C ; ¤®è«¨ ¤® ª®­æ  ᯨ᪠ ä ©«®¢
call A2203 ; ¢ë¢®¤ áâப¨ ᯨ᪠
jr A0F0A
;
A0F0C: ld hl,(A0F09+1)
ld (cur_pointer),hl ; ­®¢®¥ ¯®«®¦.
ret
; ¯¥à¥¬¥áâ¨âì 㪠§ â¥«ì ¢­¨§
A0E0A: ld de,(all_files)
inc hl ; ++cur_pointer
call cmphlde ; áà ¢­¨âì hl á de
ret z ; ª®­¥æ ä ©«®¢
A0E12_: push hl
call clear_pointer ; áâ¥à¥âì 㪠§ â¥«ì
pop hl
A0E15_: ld (cur_pointer),hl ; ­®¢®¥ ¯®«®¦.
jp show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì
;-----------------------------------
; ¢ ­ ç «® ᯨ᪠
;-----------------------------------
home_list: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«. -> ¯¥à¥¬¥é¥­¨¥ ¢ ª®¬-áâப¥
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
cp form_info ; info
ret z
cp form_qview ; qview
ret z;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
ld hl,(cur_pointer) ; ⥪. ¯®«®¦. 㪠§ â¥«ï
ld de,(offset_list) ; ᬥé. ᯨ᪠
xor a
adc hl,de ; adc ­ã¦¥­ ¤«ï "z"
ret z ; á⮨¬ ¢ ­ ç «¥ ᯨ᪠
ld l,a
ld h,a ; hl=0
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
call cmphlde ; ᯨ᮪ ᬥ饭 ?
jr z,A0E12_ ; ­¥â, ®¡­®¢¨âì ⮫쪮 ¯®«®¦. 㪠§ â¥«ï
call clear_pointer
jp A0CF0
;-----------------------------------
; ¢ ª®­¥æ ᯨ᪠
;-----------------------------------
end_list: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«. -> ¯¥à¥¬¥é¥­¨¥ ¢ ª®¬-áâப¥
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
cp form_info ; info
ret z
cp form_qview ; qview
ret z;
;jp z, ; ¥á«¨ ä ©«, â® ­ ¢¨£ æ¨ï ¯® ­¥¬ã
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
ld c,l ; bc=all_files
ld b,h
ld hl,(cur_pointer)
ld de,(offset_list) ; ᬥé. ᯨ᪠
add hl,de
inc hl
ld a,l
sub c
ld a,h
sbc a,b
ret z ; 㪠§ â¥«ì ¢ ª®­æ¥ ᯨ᪠
ld de,(_0D01+1) ; à §¬¥à áâà ­¨æë - 1
ld l,c ; hl=all_files
ld h,b
call cmphlde
jr nc,lst4__
; ç¨á«® ä ©«®¢ ¬¥­ìè¥ á¯¨áª  ¯ ­¥«¨
lst3__: dec hl
jp A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
;
lst4__: ld bc,-1 ; áç¥â稪
dec hl ; --all_files
inc bc
call cmphlde ; hl ¨ "à §¬¥à áâà ­¨æë - 1"
jr nc,$-5
ld hl,(offset_list) ; ᬥé. ᯨ᪠
and a
sbc hl,bc
jr c,lst6__
; 㪠§ â¥«ì ¢ ¯à¥¤¥« å ¯®á«¥¤. áâà ­¨æë ᯨ᪠
ex de,hl
jr lst3__
;
lst6__: push bc
push de
call clear_pointer
pop de
pop bc
dec bc
ld (offset_list),bc
inc de
ld (cur_pointer),de
jp A0F09 ; ®¡­®¢¨âì ᯨ᮪ ¯ ­¥«¨
;-----------------------------------
; Ins, ®â¬¥âª  ä ©«®¢
;-----------------------------------
mark: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
call A0E13 ; áâ ¢¨â/á­¨¬ ¥â ®â¬¥âªã ä ©«®¢
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
_0DA4: ld de,files_per_colon-1 ; à §¬¥à áâà ­¨æë - 1
call cmphlde ; áà ¢­¨âì hl á de
ex af,af'
db 3Eh ; ld a,..
enable_down_mark:
db true ; ä« £ "ᬥé âì ªãàá®à ¯à¨ ¢ë¤¥«¥­¨¨"
or a
ret z
ex af,af'
jp nz,A0E0A ; ¯¥à¥¬¥áâ¨âì 㪠§ â¥«ì ¢­¨§
; ­¨¦­ïï áâப  áâà ­¨æë
ld de,(offset_list) ; ᬥé. ᯨ᪠
inc hl
add hl,de
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
call cmphlde ; áà ¢­¨âì hl á de
jp z,show_pointer ; ¯®á«¥¤­¨© ä ©« ᯨ᪠ (ᯨ᮪ ¡®«ìè¥ áâà ­¨æë)
A0DB7: ld hl,(offset_list) ; ᬥé. ᯨ᪠
inc hl
ld (offset_list),hl
A0DE9: ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
dec hl
ld a,l
or h
jr z,_0E04
ld (cur_pointer),hl
call A2203 ; ¤«ï ᬥé. ᯨ᪠ ¢­¨§
jr A0DE9
;
_0E04: ld hl,files_per_colon-1 ; 25/50/75 à §¬¥à áâà ­¨æë (¯®á«¥,"à §¬¥à áâà ­¨æë - 1")
jp A0E15_ ; ¢ë¢®¤ 㪠§ â¥«ï ¢ ­®¢®¬ ¯®«®¦.
; ‘â ¢¨â/á­¨¬ ¥â ®â¬¥âªã ä ©«®¢ ¨ ¢ë¢®¤¨â
; ¨­ä®à¬. áâப㠢뤥«. ä ©«®¢
A0E13: ; ãáâ. ०¨¬ ª« ¢ë "¢áâ ¢ª "
ld hl,D0642 ; ä« £¨ ª« ¢ë
set 1,(hl) ; ãáâ. 1-© ¡¨â (¢áâ ¢ª )
;
call get_record ; ã§­ âì  ¤à¥á ⥪. § ¯¨á¨ ¢ ¯ ¯ª¥
ld a,(format_mode) ; ⥪. 䮬 â ¯ ­¥«¨
and form_trd ; spec
jp nz,mark_spec_record
ld a,(de) ;+11 ᬥé. ¤® ¡ ©â   âਡã⮢
and 10h ; ¯ ¯ª  ?
jr z,A0E15 ; ­¥â
ld a,(hl)
cp "." ; ".."
ret z
db 3Eh ; ld a,..
mark_folders: db true ; ä« £ ®â¬¥âª¨ ¯ ¯®ª
or a
ret z ; ­¥ ®â¬¥ç âì
A0E15: inc de
ld bc,28 ; ᬥé. ¤® à §¬¥à  ä ©« 
add hl,bc
ld a,(de) ; +12 ï祩ª  ¬ àª¨à®¢ª¨ ä ©« 
xor 80h ; ¨­¢¥àâ. ä« £
ld (de),a
push hl
push af
call show_pointer ; ¢ë¢®¤ 㪠§ â¥«ï
pop af
pop hl
call L0020 ; de <= low-à §¬¥à ä ©« 
ld c,(hl) ; bc=áâ. à §à鸞 à §¬¥à 
inc hl
ld b,(hl)
A0E49: ld hl,(low_size) ; ¬«. à §àï¤ à §¬¥à  ¢ë¤¥«. ä ©«®¢
rlca ; a=¡ ©â ®â¬¥âª¨
jr nc,A0E77 ; ®â¬¥âª  á­ïâ , ¢ëç¥áâì à §¬¥à ä ©« 
add hl,de ; de=¬«.à §àï¤ à §¬¥à 
ld (low_size),hl ; ¬«.à §àï¤ à §¬¥à  ¢ë¤¥«. ä ©«®¢
ld hl,(high_size) ; áâ.à §àï¤
adc hl,bc
ld (high_size),hl
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
inc hl ; 㢥«. ç¨á«® ¢ë¤¥«. ä ©«®¢
ld (mark_files),hl
A0E63: ld hl,(__markline) ; ®¯¨á â¥«ì áâப¨ "xxx.. bytes in xx files"
inc hl
inc hl
inc hl
ld (A0E70_+1),hl ;+3 ®â ­ ç «  ®¯¨á â¥«ï
inc hl
inc hl
push hl
pop ix ;+5 ix=mark_string+1
; ¢áâ ¢¨âì ®¡ê¥¬ ä ©«®¢
ld hl,put_comma ; ãáâ. ä« £ ¢ë¢®¤  § ¯ï⮩
inc (hl)
exx
ld hl,(high_size)
exx
ld hl,(low_size)
ld b,0 ; ¡¥§ ¢¥¤ãé¨å ¯à®¡¥«®¢
call dec32 ; ®¡ê¥¬ ¢ë¤¥«. ä ©«®¢
ld hl,put_comma ; ä« £ à §¤¥«¥­¨ï à §à冷¢
dec (hl) ; á¡à. ä« £
; ¢áâ ¢¨âì áâபã " bytes in "
ld hl,mark_string1__
ld b,10 ; ¤«¨­  áâப¨
call A0E90 ; ᪮¯¨à®¢ âì áâபã
; ¢áâ ¢¨âì ç¨á«® ¢ë¤¥«. ä ©«®¢
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld e,l
ld d,h
call dec16 ; ç¨á«® ¡¥§ ¢¥¤ãé. ¯à®¡¥«®¢
; ¢áâ ¢¨âì áâபã " files"
ld b,5 ; ¤«¨­  áâப¨ " files" - 1
and a
ld hl,1
sbc hl,de ; de=ç¨á«® mark-ä ©«®¢
jr nc,A0E6D_
inc b
A0E6D_: ld hl,mark_string2__
call A0E90 ; ᪮¯¨à®¢ âì áâபã
push ix
pop hl
xor a
ld (hl)," " ; ª®­æ¥¢®© ¯à®¡¥«
inc hl
ld (hl),a ; ª®­¥æ ®¯¨á â¥«ï
dec hl
; ã§­ âì ¤«¨­ã áâப¨
A0E70_: ld de,0 ;+3 á®åà. mark_string-1
sbc hl,de
ld c,l
; 業âà¨à®¢ âì áâபã
srl l ; ¤«¨­  áâப¨ / 2
ld a,20 ; ¯®«®¢¨­  è¨à¨­ë ¯ ­¥«¨
sub l
ld (de),a ; X ¯®«®¦. áâப¨
ld hl,-3
add hl,de ; hl=­ ç «® ®¯¨á â¥«ï
ld a,(hl) ; áâ à ï ¤«¨­  áâப¨
ld (hl),c ; ­®¢ ï ¤«¨­  áâப¨
inc c
cp c ; ­®¢ ï < áâ à®© ?
push hl
call nc,clear_footer_line ; ¤ , ®ç¨áâ¨âì áâபã
pop hl
; ¢ë¢®¤ £®â®¢®© áâப¨
jp draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
;
; ¢ëç¥áâì à §¬¥à ä ©« 
A0E77: sbc hl,de
ld (low_size),hl ; ¬«. à §àï¤ à §¬¥à  ¢ë¤¥«. ä ©«®¢
ld hl,(high_size)
sbc hl,bc
ld (high_size),hl ; áâ. à §àï¤
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
dec hl
ld (mark_files),hl
ld a,l
or h
jp nz,A0E63
; 0 ®â¬¥ç¥­ëå ä ©«®¢, áâ¥à¥âì ¨­ä. áâபã
clear_footer_line:
ld hl,footer_med
ld a,(format_mode) ; ä®à¬ â ¯ ­¥«¨
bit 1,a ; medium
jp nz,draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
ld hl,footer_brief
bit 2,a ; brief
jp nz,draw_text
ld hl,footer_spec
bit 6,a ; spec
jp nz,draw_text
ld hl,footer_full ; full
jp draw_text
; ‘â ¢¨â/á­¨¬ ¥â ®â¬¥âªã ᯥª-ä ©«®¢
mark_spec_record:
ld a,(hl) ;+0 1-ï ¡ãª¢  ¨¬¥­¨
xor 80h
ld (hl),a
ld bc,11 ;+11
add hl,bc ; ¯¥à¥©â¨ ­  à §¬¥à ä ©« 
push hl
push af
call show_pointer ; ¢ë¢®¤ 㪠§ â¥«ï
pop af
pop hl
call L0020 ; de=¬«. à §àï¤ à §¬¥à  ä ©« 
ld bc,0 ; bc=áâ. à §àï¤ à §¬¥à  ä ©« 
jp A0E49
;---------------------------------------------------------------------
; ‚뢮¤ ¢á¥© ¨­ä®à¬ æ¨¨ ¢ ¯ ­¥«¨
;---------------------------------------------------------------------
A20FC: ld a,(disk) ; ­®¬¥à ¤¨áª 
add a,"A"
ld hl,(char_disk) ;  ¤à¥á ¡ãª¢ë ¤¨áª   ªâ. ¯ ­¥«¨
ld (hl),a
call width_path ; ¯ãâì ¨§ path-¡ãä¥à  ¢ ¡ãä¥à ¯ã⨠¯ ­¥«¨
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
call draw_half_frame ; ¡®ª®¢ë¥ áâ®à®­ë ¨ ¯à¥¤-­¨¦­ïï «¨­¨ï à ¬ª¨
call A208F ; ­ áâà. ᯨ᮪ ¯ ­¥«¨ + middle-«¨­¨ï
call A21AA ; ¢ë¢®¤ ¯ã⨠¨ á㬬 à­®© ¨­äë
ld a,(format_mode) ; ä®à¬ â ¯ ­¥«¨
and form_info+form_qview
ret nz
;
ld hl,(__title) ; § £®«®¢®ª ¯ ­¥«¨
call draw_text ; A2551 ¯®§¨æ. ¢ë¢®¤ áâப¨
call show_sort_letter ; ¢ë¢®¤ ¡ãª¢ë á®àâ¨à®¢ª¨
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
; ¢ë¢®¤ ᯨ᪠ ä ©«®¢
ld hl,(cur_pointer) ; á®åà. ⥪. ¯®§¨æ¨î 㪠§ â¥«ï
push hl
ld hl,0 ; ­ ç âì ¢ë¢®¤ á ­ ç « 
ld (cur_pointer),hl
; 横« ¢ë¢®¤  ¢á¥£® ᯨ᪠
A2151: call A2203 ; ¢ë¢®¤ áâப¨ ᯨ᪠
ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
inc hl
ld (cur_pointer),hl
_2159: ld de,files_per_colon ; 25/50/75 à §¬¥à áâà ­¨æë
call cmphlde ; áà ¢­¨âì hl á de
jr z,A2164
ld de,(all_files)
call cmphlde ; ¤®è«¨ ¤® ª®­æ  ä ©«®¢ ?
jr nz,A2151 ; ­¥â
A2164: pop hl
ld (cur_pointer),hl ; ¢®ááâ. ⥪. ¯®§¨æ¨î 㪠§ â¥«ï
call print_status ; áâ âãá­ ï áâப  ¢­¨§ã ¯ ­¥«¨
; ¢ë¢®¤ áâப¨ "xxx.. bytes in xx files"
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld a,l
or h
ret z
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info+form_qview
ret nz
; full/med/brief/spec ä®à¬ â
ld hl,(__markline) ; áâப  "xxx.. bytes in xx files"
jp draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
; <20> áâநâì ᯨ᮪ ¯ ­¥«¨ ¨ ¢ë¢¥á⨠up ¨ middle-áâப¨
A208F: call A20E5 ; ¯®«ãç¨âì  ¤à¥á ®¯¨á â. ⥪. ä®à¬ â  (full/medium/brief/..)
ld (__title),de ;  ¤à¥á ®¯¨á â¥«ï â¨â«  ¯ ­¥«¨
A2097_: ld e,(hl) ; ¯®«®¦. ¢¥àâ. «¨­¨¨
inc hl
ld a,(hl)
or a
jr z,set_const ; ª®­¥æ, e="ä ©«®¢ ­  ¯ ­¥«ì"
inc hl
push hl
ld d,a ; de= ¤à¥á middle-áâப¨
ex de,hl
call draw_text ; ¢ë¢®¤ áâப¨
pop hl
jr A2097_
; ­ áâநâì ª®­áâ ­âë ᯨ᪠ ¯ ­¥«¨
set_const: ld l,e ; 25/50/75 ç¨á«® ä ©«®¢ ­  ¯ ­¥«ì
ld h,0
ld (_2159+1),hl
ld (_0D7D+1),hl
ld (_0CEE+1),hl
ld (_0D08+1),hl
ld (_0D1F+1),hl
ld (_0D2C+1),hl
dec hl
ld (A0F09+1),hl
ld (_0EC7+1),hl
ld (_0D01+1),hl
ld (_0D0D+1),hl
ld (_0DA4+1),hl
ld (_0E04+1),hl ; ¡ë«® ¢ 1-© ¯®«®¢¨­¥
ret
; ¯®«ãç¨âì  ¤à¥á ®¯¨á â¥«ï, ᮣ« á­® ⥪ã饬ã
; ä®à¬ âã (full/medium/brief + spec)
A20E5: ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
ld e,a
ld hl,deskr_right ; ®¯¨á â. ä®à¬ â®¢ ¢ë¢®¤  ¯à ¢®© ¯ ­¥«¨
ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï ¯ ­¥«ì
rlca
jr c,$+5 ; ¯à ¢ ï
ld hl,deskr_left ; ®¯¨á â. ä®à¬ â®¢ ¢ë¢®¤  «¥¢®© ¯ ­¥«¨
call A15E5 ; ¯®«ãç¨âì ®¯¨á â¥«ì ⥪. ä®à¬ â  (full/medium/brief)
ld e,(hl) ; de= ¤à¥á â¨â«  ¯ ­¥«¨
inc hl
ld d,(hl)
inc hl
ret
; <20>®«ãç¨âì  ¤à¥á ®¯¨á â¥«ï ⥪. ä®à¬ â 
; in: e=⥪.ä®à¬ â (full/medium/brief + spec)
; hl= ¤à¥á ®¯¨á â¥«ï ä®à¬ â®¢ ¯ ­¥«¨
; out: hl= ¤à¥á ®¯¨á â¥«ï
A15E5: ld a,1
bit 1,e ; medium
jr nz,A15E9__
inc a
bit 2,e ; brief
jr nz,A15E9__
inc a
bit 3,e ; info
jr nz,A15E9__
inc a
bit 4,e ; qview
jr nz,A15E9__
inc a ; ¨­¤¥ªá spec-®¯¨á â¥«ï
bit 6,e ; trd
jr nz,A15E9__
xor a ; ¨­¤¥ªá full-®¯¨á â¥«ï
A15E9__: add a,a
add a,l
ld l,a
jr nc,$+3
inc h
ld a,(hl)
inc hl
ld h,(hl)
ld l,a ; hl= ¤à¥á ®¯¨á â¥«ï
ret
;-----------------------------------------------------------
; ‚뢮¤ ¯ã⨠¢¢¥àåã ¯ ­¥«¨ ¨ áâப¨ á㬬 à­®© ¨­ä®à¬ æ¨¨
;-----------------------------------------------------------
A21AA: db 3Eh ; ld a,..
A21AB: db false ; ä« £ à ¡®âë ®¡¬¥­  ¯ ­¥«¥©
or a
ld a,0
ld (A21AB),a ; á¡à. ä« £
jr nz,A21B0 ; à ¡®â ¥â ®¡¬¥­ ¯ ­¥«¥©
ld a,(format_mode)
bit 3,a ; info
jr z,A21AE
call set_info_actpanel
jr A21B0
;
A21AE: bit 4,a ; qview
jr z,A21B0
call set_qview_actpanel
ret c ; ¡ë« ¢ë¢®¤ ᮤ¥à¦. ä ©« 
;
A21B0: call print_up_path ; ¢ë¢®¤ ¯ãâ¨
ret c ; info, qview ä®à¬ âë
; "ÈÍÍ à §¬¥à_ä ©«®¢_¯ ¯ª¨ (ç¨á«®_ä ©«®¢) ÍÍ á¢®¡._®¡ê¥¬_¤¨áª  Íͼ"
show_summary_info:
db 3Eh ; ld a,..
flag_summary_info:
db false ; ä« £ ¢ë¢®¤  áâப¨ á㬬 à­®© ¨­äë
or a
ret z ; ­¥ ¢ë¢®¤¨âì
ld hl,put_comma ; ãáâ. ä« £ ¢ë¢®¤  § ¯ï⮩
inc (hl)
ld ix,summary_string+1 ; " 0,000,000,000 (0000) Í ... "
; ®¡é. à §¬¥à ä ©«®¢ ᯨ᪠
exx
ld hl,(files_size+2) ; áâ.à §àï¤
exx
ld hl,(files_size) ; ¬«.à §àï¤
ld b,0 ; ¡¥§ ¢¥¤ãé¨å ¯à®¡¥«®¢
call dec32 ; ®¡ê¥¬ ¢ë¤¥«. ä ©«®¢
ld hl,put_comma ; ä« £ à §¤¥«¥­¨ï à §à冷¢
dec (hl) ; á¡à. ä« £
ld (ix+0)," "
inc ix
ld (ix+0),"("
inc ix
and a
; ç¨á«® ä ©«®¢ ¢ ᯨ᪥
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª ¢ ᯨ᪥
ld bc,(all_folders) ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
sbc hl,bc
call dec16 ; ¡¥§ ¢¥¤ãé. ¯à®¡¥«®¢
ld hl,put_comma ; ãáâ. ä« £ ¢ë¢®¤  § ¯ï⮩
inc (hl)
ld (ix+0),")"
inc ix
ld (ix+0)," "
inc ix
ld (ix+0),"Í"
inc ix
ld (ix+0)," "
inc ix
; ᢮¡. ¬¥áâ® ­  ¤¨áª¥ (㦥 ¢ëç¨á«¥­®)
exx
ld hl,(free_space_disk+2) ; áâ.à §àï¤
exx
ld hl,(free_space_disk) ; ¬«.à §àï¤
ld b,0 ; ¡¥§ ¢¥¤ãé¨å ¯à®¡¥«®¢
call dec32 ; ®¡ê¥¬ ¢ë¤¥«. ä ©«®¢
ld hl,put_comma ; ä« £ à §¤¥«¥­¨ï à §à冷¢
dec (hl) ; á¡à. ä« £
push ix
pop hl
xor a
ld (hl)," " ; ª®­æ¥¢®© ¯à®¡¥«
inc hl
ld (hl),a ; ª®­¥æ ®¯¨á â¥«ï
dec hl
; ã§­ âì ¤«¨­ã áâப¨
ld de,summary_string-1 ; ï祩ª  X-¯®«®¦.
sbc hl,de
ld c,l
; 業âà¨à®¢ âì áâபã
srl l ; ¤«¨­  áâப¨ / 2
ld a,20 ; ¯®«®¢¨­  è¨à¨­ë ¯ ­¥«¨
sub l
ld (de),a ; X ¯®«®¦. áâப¨
ld hl,deskr_summary ; ®¯¨á â¥«ì
ld a,(hl) ; áâ à ï ¤«¨­  áâப¨
ld (hl),c ; ­®¢ ï ¤«¨­  áâப¨
inc c
cp c ; ­®¢ ï < áâ à®© ?
call nc,clear_both_line ; ¤ , ®ç¨áâ¨âì áâபã
; ¢ë¢®¤ £®â®¢®© áâப¨
jp draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
clear_both_line:push hl
ld hl,botline ; ®¯¨á â¥«ì "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
call draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
pop hl
ret
;-----------------------------------------------------------
; ‚뢮¤ ¯ã⨠¢¢¥àåã  ªâ. ¯ ­¥«¨
; ¢ë室: CF - ¤«ï info, qview ä®à¬ â®¢
;-----------------------------------------------------------
print_up_path: ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
ld h,a
and form_info+form_qview ; info, qview ä®à¬ âë
jr nz,prn_up_path ; ¢ë¢¥á⨠â¨â«
ld a,h
; ®ç¨áâ¨âì áâப㠯ãâ¨
ld hl,up_med
bit 1,a ; medium
jr nz,upath_
ld hl,up_brief
bit 2,a ; brief
jr nz,upath_
ld hl,up_spec
bit 6,a ; spec
jr nz,upath_
ld hl,up_full ; full
upath_: call draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
; ¢ë¢®¤ ¯ãâ¨
prn_up_path: ld hl,format_mode ; ä®à¬ â  ªâ. ¯ ­¥«¨
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"
bit 3,(hl) ; info
jr nz,upath2_
bit 4,(hl) ; qview
jr nz,upath5_
; ¢ë¢®¤ ¯ãâ¨
ld hl,(__path) ;  ¤à¥á ®¯¨á â¥«ï ¯ã⨠ ªâ. ¯ ­¥«¨
inc hl
ld (hl),a ; 梥â áâப¨
dec hl
call draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
xor a ; á¡à. CF
ret
; ‚뢮¤ § ¯®«­¥­­®£® info-®¯¨á â¥«ï
upath2_: ld (info_color1__),a ; 梥â
ld hl,up_info ; ®¯¨á â¥«ì "ÉÍÍÍÍÍÍÍÍÍÍ»"
call draw_text
ld hl,title_info ; info-®¯¨á â¥«ì
call draw_text
ld a,(format_mode)
and form_trd
ret z
; ¢ë¢®¤ ¤®¯. ®¯¨á â¥«ï ¤«ï ᯥª-¨¬¨¤¦ 
ld hl,title_info_trd
upath4_: call draw_text
scf
ret
; ‚뢮¤ qview-®¯¨á â¥«ï
upath5_: ld (qview_color1__),a ; 梥â
; ld a,(type_title_qview) ; 0/1 ä« £ ⨯  qview-®¯¨á â¥«ï
; or a
; jr nz,upath7_
call draw_half_frame ; ®ç¨áâ¨âì ¯ ­¥«ì
ld hl,up_info ; ®¯¨á â¥«ì "ÉÍÍÍÍÍÍÍÍÍÍ»"
call draw_text
;
upath6_: ld hl,qview_folder_panel ; ®¯¨á â¥«ì ¤«ï ¯ ¯®ª
ld a,(type_title_qview) ; 0/1 ä« £ ⨯  qview-®¯¨á â¥«ï
or a
jr z,upath4_
ld hl,title_qview ; ¢ë¢¥á⨠¢ë¤¥«. â¨â« ¤«ï ä ©« 
jr upath4_
;upath7_: ld hl,title_qview ; ¢ë¢¥á⨠¢ë¤¥«. â¨â« ¤«ï ä ©« 
; jr upath4_
; ‚뢥á⨠㪠§ â¥«ì
show_pointer: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
ld a,(format_mode) ; ä®à¬ â ⥪. ¯ ­¥«¨
and form_info+form_qview
ret nz
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
ld (pointer_flag),a ; ãáâ. ä« £ ¢ë¢®¤  㪠§ â¥«ï
call A2203 ; ¢ë¢®¤ áâப¨ ᯨ᪠
xor a
ld (pointer_flag),a ; á¡à. ä« £
jp print_status1 ; áâ âãá­ ï áâப  ¢­¨§ã ¯ ­¥«¨
; ‘â¥à¥âì 㪠§ â¥«ì
clear_pointer: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info+form_qview
ret nz
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
jp A2203 ; ¢ë¢®¤ áâப¨ ᯨ᪠
;=====================================================================
; ‚뢮¤ 32-å ¡¨â­ëå ç¨á¥« ¢ ¡ãä¥à, ¢ ¤¥áïâ¨ç­®¬ ä®à¬ â¥
;=====================================================================
; in: hl' = áâ. à §àï¤
; hl = ¬«. à §àï¤
; ix = ¡ãä¥à
; c = 30h/20h - ¢¥¤ãé. ᨬ¢®«
; b = 1/0 - ¢áâ ¢«ïâì/­¥â ¢¥¤ã騩 ­ã«ì/¯à®¡¥«
;---------------------------------------------------------------------
; ”« £ put_comma = true/false - ¢áâ ¢«ïâì/­¥â à §¤¥«¨â¥«ì à §à冷¢.
;
; „«ï ä®à¬ â  á "M" - á¡à®á¨âì ä« £ put_comma ¨ ãáâ. ०¨¬ "¢áâ ¢«ïâì
; ¢¥¤ã騥 ¯à®¡¥«ë". …᫨ ä« £ put_comma ãáâ ­®¢«¥­, â® ¡®«¥¥ 7 §­ ª®¢
; ¡ã¤¥â ¯®ï¢«ïâìáï ⮫쪮 ¤«ï §­ ç¥­¨© ®â 1,000 M ¨ ¢ëè¥.
;---------------------------------------------------------------------
dec32: ld de,0CA00h
exx
ld de,3B9Ah ; 1.000.000.000
exx
ld a,(put_mega)
or a
jr z,dec1_
ld (ix+0)," "
inc ix
dec1_: ld iy,tmp1__
res 7,(iy+0)
call GetLenN32
call nz,print_comma
ld de,0E100h
exx
ld de,05F5h ; 100.000.000
exx
call GetLenN32
ld de,9680h
exx
ld de,98h ; 10.000.000
exx
call GetLenN32
call nz,mega_postfix ; "M" ¯®áâ䨪á ç¨á« 
;
ld a,(put_mega)
or a
jr z,dec2_
dec ix
dec ix
dec ix
dec ix
dec2_: ld de,4240h
exx
ld de,0Fh ; 1.000.000
exx
call GetLenN32
call nz,print_comma
ld de,86A0h
exx
ld de,1 ; 100.000
exx
call GetLenN32
dec5: ld de,10000
exx
ld de,0 ; 10.000
exx
call GetLenN32
dec4: ld de,1000 ; 1.000
call GetLenN16
call nz,print_comma
dec3: ld de,100 ; 100
call GetLenN16
dec2: ld de,10 ; 10
call GetLenN16
ld a,l
add a,"0"
jr GetLenN163
tmp1__: db 0
GetLenN32: ld a,2Fh
and a
GetLenN321: inc a
sbc hl,de
exx
sbc hl,de
exx
jp nc,GetLenN321
add hl,de
exx
adc hl,de
exx
jr GetLenN160
;
GetLenN16: ld a,2Fh
and a
GetLenN161: inc a
sbc hl,de
jp nc,GetLenN161
add hl,de
GetLenN160: cp "0"
jr z,GetLenN162
set 7,(iy+0)
GetLenN162: bit 7,(iy+0)
jr nz,GetLenN163
dec b
inc b
ret z ; ¡¥§ ¢¥¤ãé¨å ¯à®¡¥«®¢/­ã«¥©
xor a ; ãáâ. "Z"
ld a,c ; 20h/30h
GetLenN163: ld (ix+0),a ; á®åà. ¢ ¡ãä¥à¥
inc ix
ret
; "M" ¯®áâ䨪á ç¨á« 
mega_postfix: db 3Eh ; ld a,..
put_mega: db 0 ; false/true
or a
ret z
ld de,4240h
exx
ld de,0Fh ; 1.000.000
exx
call GetLenN32 ; ¢ë¢®¤ ¬«. à §à鸞
ld (ix+0)," "
inc ix
ld (ix+0),"M"
inc ix
pop de ; ᬥáâ¨âì á⥪
ret ; ¢ë©â¨ ¨§ ¯/¯ dec32
print_comma: db 3Eh ; ld a,..
put_comma: db 0 ; false/true
or a
ret z
ld (ix+0),","
inc ix
ret
; ‚뢮¤ ç¨á¥« 0...65535 ¡¥§ ¢¥¤ãé. ­ã«ï
; in: hl=ç¨á«®
; ix=¡ãä¥à
dec16: push de
xor a
exx
ld l,a ; áâ. à §àï¤
ld h,a
exx
ld b,a ; ­¥ ¢áâ ¢«ïâì ¢¥¤ãé. ᨬ¢®«
ld iy,tmp1__
res 7,(iy+0)
call dec5
pop de
ret
; ‚뢮¤ ç¨á¥« 0...65535 á ¢¥¤ã騬 ¯à®¡¥«®¬
; in: de=ç¨á«®
; ix=¡ãä¥à
dec16s: push hl
xor a
exx
ld l,a ; áâ. à §àï¤
ld h,a
exx
ex de,hl
ld bc,0120h ; ¢¥¤ã騥 ¯à®¡¥«ë
ld iy,tmp1__
res 7,(iy+0)
call dec5
pop hl
ret
; ‚뢮¤ ç¨á¥« 0..999 á ¢¥¤ãé. ¯à®¡¥«®¬
; in: a=ç¨á«®
; ix=¡ãä¥à
dec9: push hl
ld l,a
ld h,0
ld bc,0120h ; ¢áâ ¢«ïâì ¢¥¤ãé. ­ã«ì
ld iy,tmp1__
res 7,(iy+0)
call dec3
pop hl
ret
; ‚뢮¤ ç¨á¥« 0..99 á ¢¥¤ãé. ­ã«¥¬
; in: a=ç¨á«®
; ix=¡ãä¥à
dec8: push de
ld l,a
ld h,0
ld bc,0130h ; ¢áâ ¢«ïâì ¢¥¤ãé. ­ã«ì
ld iy,tmp1__
res 7,(iy+0)
call dec2
pop de
ret
;-----------------------------------------------------------
; <20>®«ãç¨âì  ¤à¥á ⥪. § ¯¨á¨ ᯨ᪠  ªâ. ¯ ­¥«¨
; <20>¥ ¯®àâ¨âì ॣ.BC!.
;-----------------------------------------------------------
; out: hl=­ ç «® § ¯¨á¨
; de=ï祩ª   âਡã⮢ ä ©«  (+11)
; a= âਡãâ ä ©« 
get_record: ld hl,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
ld de,(offset_list) ; ᬥé. ᯨ᪠
add hl,de
get_record1: ld a,(cash_left_dir) ; ¡ ­ª  ᯨ᪠  ªâ. ¯ ­¥«¨
out (SLOT3),a
ld de,(directory) ; ­ ç «® ᯨ᪠  ¤à¥á®¢ § ¯¨á¥©
add hl,hl ; 1+1=2
add hl,de ; hl=­ ç «® § ¯¨á¨
ld a,(hl) ; à § ¤à¥á æ¨ï
inc hl
ld h,(hl)
ld l,a
ld a,(format_mode)
bit 6,a ; ᯥª-ä®à¬ â ¯ ­¥«¨ ?
jr nz,get_spec_attrib ; ¤ 
ex de,hl
ld hl,11 ; ᬥé. ï祩ª¨  âਡã⮢
add hl,de
ex de,hl
ld a,(de) ;+11  âਡãâ § ¯¨á¨
ret
;
spec_attrib: db 0
;
get_spec_attrib:ld de,spec_attrib ; ï祩ª   âਡã⮢
ld a,(de)
ret
; à §¤¥«¨â¥«ì ª®«®­®ª
separator: db 3Eh ; ld a,..
separ__: db "³"
ld (ix+0),a
inc ix
ret
; ¢áâ ¢ª  ¯à®¡¥«®¢
; in: b=áç¥â稪
spaces: ld a," "
ld (ix+0),a
inc ix
djnz $-5
ret
;---------------------------------------------------------------------
; ‚뢮¤¨â áâபã ᯨ᪠ ä ©«®¢
;---------------------------------------------------------------------
A2203: ld c,19 ; è¨à¨­  medium-ª®«®­ª¨
ld a,(format_mode)
ld e,a ; á®åà. ä®à¬ â ¯ ­¥«¨
bit 1,a ; medium
jr nz,A2217_
ld c,13
bit 2,a ; brief
jr nz,A2217_
; full,spec
ld c,39 ; è¨à¨­  ª®«®­ª¨
A2217_: ld a,c
dec a
ld (string_len),a ; ¤«¨­  áâப¨
ld b,1 ; ᬥé. «¥¢®© áâ®à®­ë ª®«®­ª¨
ld a,(cur_pointer) ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï
A221C_: sub files_per_colon ; 25 ä ©«®¢ ­  ª®«®­ªã
jr c,A2229_
ld d,a ; á®åà. "a"
ld a,b
add a,c ; + è¨à¨­  ª®«®­ª¨
ld b,a ; X ¯®«®¦.
ld a,d ; ¢®ááâ. "a"
jr A221C_
;
A2229_: add a,files_per_colon+2 ; 27 ä ©«®¢ ­  ª®«®­ªã + 2
ld (string_line),a ; Y ¯®«®¦. ªãàá®à 
ld a,b ; ª®«®­ª 
; ª®à४â. ¤«¨­ë 㪠§ â¥«ï ¢ medium-ä®à¬ â¥
bit 1,e ; medium ?
jr z,A2230_
cp 20 ; ¯à ¢ ï ¯®«®¢¨­  «¥¢®© ¯ ­¥«¨ ?
jr z,A222E_ ; ¤ 
cp 60 ; ¯à ¢ ï ¯®«®¢¨­  ¯à ¢®© ¯ ­¥«¨ ?
jr nz,A2230_ ; ­¥â
A222E_: ld hl,string_len
inc (hl) ; ++¤«¨­  㪠§ â¥«ï
;
A2230_: ld (string_colon),a ; X ¯®«®¦. ªãàá®à 
ld b,e ; á®åà. ä®à¬ â ¯ ­¥«¨
call get_record ;  ¤à¥á ⥪. § ¯¨á¨ ¢ ¯ ¯ª¥
ld (print_status2__),a ;+11  âਡãâ ä ©« 
ld (print_status1__),hl ; ­ ç «® § ¯¨á¨
bit 6,b ; spec-§ ¯¨áì ?
jr z,A2235_ ; ­¥â
ld e,l
ld d,h
dec de ; de= ¤à. 1-© ¡ãª¢ë ¨¬¥­¨ - 1
A2235_: push bc
push de
call fill_string ; § ¯®«­¨âì áâப㠯® ä®à¬ âã
pop de
pop bc
call hilight_types ; ¢å: b=ä®à¬ â ¯ ­¥«¨
; c=¨­¤¥ªá 梥â 
;jp print_string
;-----------------------------------------------------------
; ‚뢮¤ áâப¨ ᯨ᪠
;-----------------------------------------------------------
; ¢å®¤: c = ¨­¤¥ªá 梥â , pointer_flag = 00/01 - ¢ë¢®¤¨âì ⥪áâ/㪠§ â¥«ì
;
;print_string:
db 21h ; ld hl,..
string_line: db 1 ; ­®¬¥à áâப¨ ­  íªà ­¥ (0..31)
db 0
ld de,0301h ; á 0-© áâப¨ (¤«ï ᨬ¢®«®¢)
add hl,hl ; 1+1=2
add hl,hl ; 2+2=4
add hl,de
ld de,string_of_list ;  ¤à¥á áâப¨
in a,(PORT_Y)
ld (pnt3__+1),a ; á®åà. ¯®àâ
in a,(SLOT0)
ld (pnt4__+1),a ; á®åà. ¯®àâ
ld a,(panel_left+1) ; ­ ç «® ¯ ­¥«¨
ld b,a
di
ld a,50h ; ¢¨¤¥®-áâà ­¨æ 
out (SLOT0),a
db 3Eh ; ld a,..
string_colon: db 0 ; ­®¬¥à ª®«®­ª¨
add a,81h ; +0 (ᬥé. á«¥¢ )
add a,b ; + ­ ç «® ¯ ­¥«¨
out (PORT_Y),a
ld (pnt1__+1),a
; ¢ë¢®¤ ⥪áâ 
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
db 3Eh ; ld a,..
string_len: db 1 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
inc hl ; ¯¥à¥©â¨ ­   âਡãâ
; ¢ë¢®¤  âਡãâ 
ld iy,color_array
ld a,(iy+0) ; 梥â 㪠§ â¥«ï
ld d,(iy+1) ; 梥⠢뤥«. 㪠§ â¥«ï
ld b,0
add iy,bc
ld b,a ; á®åà. 梥⠭®à¬. 㪠§ â¥«ï
ld e,(iy+0) ; ï祩ª  æ¢¥â  ¯® ¨­¤¥ªáã
db 3Eh ; ld a,..
pointer_flag: db 0 ; 0/1 梥⠯® ¨­¤¥ªáã/㪠§ â¥«ì
or a
jr z,pnt__ ; ­¥ 㪠§ â¥«ì
ld e,d ; 梥⠢뤥«. 㪠§ â¥«ï
ld a,c
cp index_markfile ; 3 ¨­¤¥ªá ï祩ª¨ "梥⠢뤥«. ä ©« "
jr z,pnt__
ld e,b ; 梥⠭®à¬. 㪠§ â¥«ï
;
pnt__: ld a,(string_len) ; ¤«¨­  áâப¨
ld b,a
pnt1__: ld c,81h ; á®åà. ­®¬¥à ª®«®­ª¨
pnt2__: ld a,c
out (PORT_Y),a
ld (hl),e ;  âਡãâ
inc c
djnz pnt2__
pnt3__: ld a,0
out (PORT_Y),a ; ¢®ááâ. ¯®àâ
pnt4__: ld a,0
out (SLOT0),a ; ¢®ááâ. ¯®àâ
ei
ret
; ¡ãä¥à áâப¨ ᯨ᪠ ¯ ­¥«¨
string_of_list: db " "
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÑÍÍÍÍÍ»
;db Filenamm Ext 0005940³21.06.04³18:50
;---------------------------------------------------------------------
; ‘âàãªâãà  «¥¢®© ¯ ­¥«¨ (27 ¡ ©â)
;---------------------------------------------------------------------
panel_left: db 0 ; Y ¯®«®¦. ¯ ­¥«¨
db 0 ; X ¯®«®¦. ¯ ­¥«¨
cur_panel: db 0 ; 00h ¯à¨§­ ª «¥¢®© ¯ ­¥«¨
;  ¨¤¥â ¯¥à¥ª çª 
disk: db 'A'-'A' ; ­®¬¥à ⥪. ¤¨áª  (0=A,1=B)
format_mode: db form_full ; full/med/brief/spec/info/qview
panel_size: db 40 ; è¨à¨­  ¯ ­¥«¨
db 27 ; ¢ëá®â  ¯ ­¥«¨ - 3
char_disk: dw disk_left ; ¡ãª¢  ¤¨áª 
__buff: dw buff_left ; ¡ãä¥à ¯ã⨠( ¡á.¯ãâì)
__title: dw title_full ; ®¯¨á â¥«ì § £®«®¢ª  "ˆ¬ï Ž¡ê¥¬ „ â  ‚६ï"
__markline: dw markline_left ; ®¯¨á â¥«ì áâப¨ "xxx.. bytes in xx files"
cash_left_dir: db -1 ; ­®¬¥à áâà ­¨æë ª â «®£ 
directory: dw left_pointers ; ¬ áᨢ 㪠§ â¥«¥© ­  ¯ ¯ª¨
dw left_pointers ; ¬ áᨢ 㪠§ â¥«¥© ­  ä ©«ë
all_folders: dw 0 ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
files_size: dw 0 ; ¬«. à §àï¤ ®¡é. à §¬¥à  ä ©«®¢
dw 0 ; áâ. à §àï¤
all_files: dw 321 ;21 ç¨á«® ä ©«®¢ + ¯ ¯®ª ¢ ⥪. ¯ ¯ª¥
__path: dw path_left ; ®¯¨á â¥«ì path-áâப¨ ¯ ­¥«¨
__mask: dw mask_left_fname ; "*.*" ¬ áª  ¨¬ñ­ ä ©«®¢ «¥¢®© ¯ ­¥«¨
free_space_disk:dw 0 ; ¬«. à §àï¤ á¢®¡. ¬¥áâ  ­  ¤¨áª¥
dw 0 ; áâ. à §àï¤
total_space_disk:
dw 0 ; ¬«. à §àï¤ ¢á¥£® ¬¥áâ  ­  ¤¨áª¥
dw 0 ; áâ. à §àï¤
;
low_size: dw 0 ; ¬«. à §àï¤ à §¬¥à  ¢ë¤¥«. ä ©«®¢
high_size: dw 0 ; áâ. à §àï¤
;
cur_pointer: dw 0 ; ⥪. ¯®§¨æ¨ï 㪠§ â¥«ï ¢ ¯ ­¥«¨
offset_list: dw 0 ; ᬥ饭¨¥ ᯨ᪠
;
mark_files: dw 0 ; ç¨á«® ¢ë¤¥«. ä ©«®¢
sort_type: db "n" ; n/x/d/s/u ⨯ á®àâ¨à®¢ª¨ ᯨ᪠
db 0 ; 00/01 / á®àâ¨à®¢ª 
;
info_: db 0 ; âਣ£¥à info-¯ ­¥«¨
form_under_info:db form_med ; á®åà. ä®à¬ â ¯®¤ info-¯ ­¥«¨
D48B1: db true ; ä« £ ¨­¢¥àᨨ path-áâப¨
;
qview_: db 0 ; âਣ£¥à qview-¯ ­¥«¨
form_under_qview:
db form_med ; á®åà. ä®à¬ â ¯®¤ qview-¯ ­¥«¨
len_struct equ $ - panel_left ; à §¬¥à áâàãªâãàë
;---------------------------------------------------------------------
; ‘âàãªâãà  ¯à ¢®© ¯ ­¥«¨
;---------------------------------------------------------------------
panel_right: db 0 ; Y ¯®«®¦. ¯ ­¥«¨
db 40 ; X ¯®«®¦. ¯ ­¥«¨
cur_panel1: db 80h ; 80h ¯à¨§­ ª ¯à ¢®© ¯ ­¥«¨
disk1: db 'D'-'A' ; ­®¬¥à ⥪. ¤¨áª  (0=A,1=B)
format_mode1: db form_full ; full/med/brief/spec/info/qview
db 40 ; è¨à¨­  ¯ ­¥«¨
db 27 ; ¢ëá®â  ¯ ­¥«¨ - 3
dw disk_right ; ¡ãª¢  ¤¨áª 
__buff1: dw buff_right ; ¡ãä¥à ¯ãâ¨
dw title_brief ; ®¯¨á â¥«ì § £®«®¢ª  "ˆ¬ï ˆ¬ï ˆ¬ï"
dw markline_right ; ®¯¨á â¥«ì áâப¨ "xxx.. bytes in xx files"
cash_right_dir: db -1 ; ­®¬¥à áâà ­¨æë ª â «®£ 
directory1: dw right_pointers ; ¬ áᨢ 㪠§ â¥«¥© ­  ¯ ¯ª¨
dw right_pointers ; ¬ áᨢ 㪠§ â¥«¥© ­  ä ©«ë
dw 0 ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
files_size1: dw 0 ; ¬«. à §àï¤ ®¡é. à §¬¥à  ä ©«®¢ ¯ ¯ª¨
dw 0 ; áâ. à §àï¤
all_files1: dw 21
__path1: dw path_right ; ®¯¨á â¥«ì ¯ã⨠¯ áᨢ­®© ¯ ­¥«¨
__mask1: dw mask_right_fname ; "*.*" ¬ áª  ¨¬ñ­ ä ©«®¢ ¯à ¢®© ¯ ­¥«¨
free_space_disk1:
dw 0 ; ¬«. à §àï¤ á¢®¡. ¬¥áâ  ­  ¤¨áª¥
dw 0 ; áâ. à §àï¤
total_space_disk1:
dw 0 ; ¬«. à §àï¤ ¢á¥£® ¬¥áâ  ­  ¤¨áª¥
dw 0 ; áâ. à §àï¤
;
dw 0 ; low_size ¬«. à §àï¤ ¢ë¤¥«. ä ©«®¢
dw 0 ; high_size áâ. à §àï¤
cur_pointer1: dw 0
offset_list1: dw 0
;
dw 0 ; ç¨á«® ¢ë¤¥«. ä ©«®¢
sort_type1: db "x" ; n/x/d/s/u ⨯ á®àâ¨à®¢ª¨ ᯨ᪠
db 0 ; 00/01 / á®àâ¨à®¢ª 
;
info1_: db 0 ; âਣ£¥à info-¯ ­¥«¨
form_under_info1:
db form_med ; á®åà. ä®à¬ â ¯®¤ info-¯ ­¥«¨
D48B2: db false ; ä« £ ¨­¢¥àᨨ path-áâப¨
qview1_: db 0 ; âਣ£¥à qview-¯ ­¥«¨
form_under_qview1:
db form_med ; á®åà. ä®à¬ â ¯®¤ qview-¯ ­¥«¨
index_markfile equ 3 ; ᬥé. æ¢¥â  ®â¬¥ç. ä ©«®¢
;-----------------------------------------------------------
; Œ áᨢ 梥⮢ ”Œ ¯®-㬮«ç ­¨î (§­ ç¥­¨ï ­¥ ¨§¬¥­ïîâáï)
; (ï祩ª¨ ¬¥áâ ¬¨ ­¥ ¬¥­ïâì, ¨á¯. ᬥ饭¨ï ª ï祩ª ¬!)
;-----------------------------------------------------------
default_colors:
; < Panel >
part1: db color_pointer ;+0 3Fh Normal cursor
db color_markpoint ;+1 3Eh Selected cursor
db color_panel ;+2 1Bh Normal text
db color_markfile ;+3 1Eh Selected text
db color_seltitle ;+4 30h Selected title
db color_title ;+5 1Eh Column title
db color_markline ;+6 3Eh Selected info
db color_highlighted_info ;+7 1Eh Highlighted info (info/qview ¯ ­¥«¨)
db color_info_names ;+8 1Fh Info names (info/qview ¯ ­¥«¨)
db 0 ;+9 १¥à¢
db 0 ;+10 १¥à¢
db 0 ;+11 १¥à¢
col_lst1 equ $ - part1
; < Horizontal Menu >
part2: db color_hmenu ;+12 30h Normal text
db color_hmenu_pointer ;+13 0Fh Highlighted text
db color_hmenu_hotkey ;+14 0Eh Hot-key
col_lst2 equ $ - part2
; < Menu >
part3: db color_vmenu ;+15 3Fh Normal text
db color_vmenu_pointer ;+16 0Fh Highlighted text
db color_vmenu_hotkey ;+17 0Eh Hot-key
db 0 ;+18 १¥à¢
db 0 ;+19 १¥à¢
col_lst3 equ $ - part3
; < Key Bar > (ï祩ª¨ ­¥ à §¤¥«ïâì)
part4: db kb_f ;+20 30h ¯ã­ªâë key-¡ à 
db kb_b ;+21 0Eh hot-ç¨á«  key-¡ à 
col_lst4 equ $ - part4
; < Command Line >
part5: db color_comline ;+22 07h ª®¬ ­¤­ ï áâப 
db 0 ;+23 १¥à¢
col_lst5 equ $ - part5
; < Dialog >
part6: db color_dial_win ;+24 70h Normal text
db color_dial_hotkey ;+25 0Eh Hot-keys
db color_sel_dial_title ;+26 30h Selected title (®¡ê¥ªâ )
db color_info_win ;+27 1Fh info-®ª­ 
db color_warn_win ;+28 4Fh warning/errors ®ª­ 
db color_listbox ;+29 17h ListBox
db color_list_point ;+30 2Fh 㪠§ â¥«ì ListBox- 
db color_list_hpoint ;+31 1Eh ¯®á«¥ 㪠§ â¥«ï
db color_vscrl_bar ;+32 13h áªà®««-¡ à ListBox- 
db color_inputline ;+33 30h áâப  ¢¢®¤ 
db color_selbuttons ;+34 30h Selected buttons
db color_selbuttons_err ;+35 70h Sel.buttons Warning/Errors
db 0 ;+36 १¥à¢
db 0 ;+37 १¥à¢
db 0 ;+38 १¥à¢
col_lst6 equ $ - part6
; < Viewer >
part7: db color_viewer ;+39 1Bh Normal text
db color_viewer_seltext ;+40 30h Selected text
db color_viewer_status ;+41 30h Status line
db color_viewer_scrl_arrow ;+42 1Eh Scrolling arrows
col_lst7 equ $ - part7
; < Editor >
part8: db color_editor ;+43 1Bh Normal text
db color_edit_seltext ;+44 30h Selected text
db color_edit_status ;+45 30h Status line
col_lst8 equ $ - part8
; < Help >
part9: db color_help ;+46 30h Normal text
db color_help_seltext ;+47 3Eh Highlighted text
db color_help_title ;+48 3Fh Title
db color_help_scrl_bar ;+49 30h Scrollbar
db 0 ;+50 १¥à¢
db 0 ;+51 १¥à¢
col_lst9 equ $ - part9
; < Miscelions >
part10: db color_process_line ;+52 30h «¨­¥©ª  ¯à®æ¥áá 
db color_clock ;+53 30h ç á®¢ ¢ ¯ ­¥«ïå
db 0 ;+54 १¥à¢
db 0 ;+55 १¥à¢
db 0 ;+56 १¥à¢
db 0 ;+57 १¥à¢
db 0 ;+58 १¥à¢
db 0 ;+59 १¥à¢
col_lst10 equ $ - part10
; < Files Highlighting >
db color_folder ;+60 1Fh ¯ ¯ª¨
db color_exe ;+61 1Ah exe-è­¨ª¨
db color_archive ;+62 1Dh  à娢ë
db color_ro ;+63 17h ä ©«ë "r/o","system"
db color_hidden ;+64 13h áªàëâë¥ ä ©«ë
db color_spec ;+65 1Ch ᯥª-ä ©«ë (trd,scl)
len_color_array equ $ - default_colors ; à §¬¥à ¬ áᨢ 
;-------------------------------------------------
; <20> ¡®ç¨© ¬ áᨢ 梥⮢ ¬¥­¥¤¦¥à 
;-------------------------------------------------
color_array: ds len_color_array
;-------------------------------------------------
; “áâ ­®¢¨âì ¯®«­ë© ä®à¬ â  ªâ. ¯ ­¥«¨
;-------------------------------------------------
set_format_full:ld c,form_full ; full
set_format: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld hl,format_mode ; ⥪. ä®à¬ â  ªâ. ¯ ­¥«¨
ld a,(hl)
and form_trd ; ¢ë¤¥«¨âì 6-© ¡¨â ᯥª-ä®à¬ â 
or c
cp (hl) ; ­®¢ë© = áâ à®¬ã ?
ret z ; ¤ 
ld c,a
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ­¥«¨
and form_info+form_qview ; info, qview
jr nz,set_form1 ; ¤ 
ld a,c
ld (form_under_info),a ; ãáâ. ä®à¬ â ¯ ­¥«¨ ¯®¤ "Ctrl+L"
ld (form_under_qview),a ; ãáâ. ä®à¬ â ¯ ­¥«¨ ¯®¤ "Ctrl+Q"
xor a
ld (info_),a ; á¡à. âਣ£¥à info-०¨¬ 
ld (qview_),a ; á¡à. âਣ£¥à qview-०¨¬ 
set_form1: ld (hl),c ; format_mode = ­®¢ë© ä®à¬ â
ld hl,0
ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ â¥«ï
ld (offset_list),hl ; ᬥé. ᯨ᪠
call A20FC ; § ­®¢® ¢ë¢¥á⨠ᯨ᮪
jp enter_done1 ; â¥áâ ­  info/qview ä®à¬ âë ¤à. ¯ ­¥«¨
;-------------------------------------------------
; “áâ ­®¢¨âì á।­¨© ä®à¬ â  ªâ. ¯ ­¥«¨
;-------------------------------------------------
set_format_medium:
ld c,form_med
jr set_format
;-------------------------------------------------
; “áâ ­®¢¨âì ªà âª¨© ä®à¬ â  ªâ. ¯ ­¥«¨
;-------------------------------------------------
set_format_brief:
ld c,form_brief
jr set_format
;-------------------------------------------------
; Tab ¯¥à¥å®¤ ­  ¤àã£ãî ¯ ­¥«ì
;-------------------------------------------------
tab: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld hl,D48B1 ; ä« £ ¨­¢¥àᨨ
ld (hl),false ; á¡à. ¨­¢¥àá¨î path-áâப¨
push hl
call clear_pointer ; ã¡à âì 㪠§ â¥«ì
call prn_up_path ; ¢ë¢®¤ ¯ã⨠⥪. ¯ ­¥«¨ ¡¥§ ¨­¢¥àᨨ
call change_panel ; ᬥ­¨âì  ªâ. ¯ ­¥«ì
pop hl
ld (hl),true ; ¨­¢¥àá¨ï path-áâப¨
call prn_up_path ; ¢ë¢®¤ ¯ã⨠⥪. ¯ ­¥«¨ á ¨­¢¥àᨥ©
tab1: call print_compath ; ¢ë¢®¤ ¯ã⨠¢ ª®¬-áâப¥
jp show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì
;=====
; ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
; and form_qview
; ret z ; ­¥ qview-ä®à¬ â
; ld a,(type_title_qview) ; ä« £ 00/01 - ¯ ¯ª /ä ©«
; or a
; ret z
; ; ¯¥à¥©â¨ ¢ £«ï¤¥«ªã
; ld a,(page_viewer) ; áâà. ¢ìî¥à 
; out (SLOT1),a
; ; ­ áâநâì ¯®«®¦. ¤ ¬¯ 
; ld hl,panel_left ; ¯®«®¦.  ªâ. ¯ ­¥«¨
; ld d,(hl) ; Y ¯®«®¦. ¯ ­¥«¨
; inc hl
; ld e,(hl) ; X ¯®«®¦. ¯ ­¥«¨
; inc d
; inc e
; ld (coord),de ; ¯®«®¦. ªãàá®à 
; ld (winpos),de ; ¯®«®¦. ®ª­ 
; ; ¢®©â¨ ¢ £«ï¤¥«ªã
; ld iy,AAF04
; ld hl,AB317 ; ascii-®ª­®
; ld a,(cur_mode_dump) ; 0/1 ä« £ ⥪. ®ª­  (ascii/hex)
; or a
; jr z,$+5
; ld hl,ABB1C ; hex-®ª­®
; ld bc,f8__ ; â®çª  ¢ë室 
; push bc
; jp (hl)
;f8__: ld a,(page_module1)
; out (SLOT1),a ; ¢®ááâ. áâà. ä¬
; ret
;-------------------------------------------------
; Ctrl+U ®¡¬¥­ ¯ ­¥«¥©
;-------------------------------------------------
swap_panels: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld (A21AB),a ; ãáâ. ä« £ à ¡®âë ®¡¬¥­  ¯ ­¥«¥©
in a,(SLOT3)
push af
ld hl,enable_clock ; ä« £ ¢ë¢®¤  ç á®¢
ld a,(hl)
push af
ld (hl),false ; ¢ëª«. ¢ë¢®¤ ç á®¢
call hidden_clock ; § â¥à¥âì ç áë
di
; á®åà. «¥¢ãî ¯ ­¥«ì (¤® ª®¬. áâப¨) ¢ ¡ãä¥à
ld ix,0C000h+1400h ; ¡ãä¥à §  íªà ­®¬ ¬¥­¥¤¦¥à 
ld de,0000h ; Y/X ¯®«®¦. ®ª­ 
ld hl,1E28h ; ¢ëá®â /è¨à¨­  íªà ­ 
ld a,(page_sys_screen) ; áâà. ¡ãä¥à 
ld b,a
xor a ; ¨¤¥­â¨ä. £«®¡. ®ª­ 
ld c,0B2h ; íªà ­ ¢ ¡ãä¥à
rst 08h
; á®åà. ¯à ¢ãî ¯ ­¥«ì ¢ ¡ãä¥à
ld ix,0C000h+1400h+0960h ; ¡ãä¥à
ld de,0028h ; Y/X ¯®«®¦. ®ª­ 
ld hl,1E28h ; ¢ëá®â /è¨à¨­  íªà ­ 
ld a,(page_sys_screen) ; áâà. ¡ãä¥à 
ld b,a
xor a ; ¨¤¥­â¨ä. £«®¡. ®ª­ 
ld c,0B2h ; íªà ­ ¢ ¡ãä¥à
rst 08h
; ᪮¯¨à. ­  «¥¢ãî ¯à ¢ãî ¯ ­¥«ì
ld ix,0C000h+1400h+0960h ; ¡ãä¥à ¯à ¢®© ¯ ­¥«¨
ld de,0000h ; Y/X ¯®«®¦. ®ª­ 
ld hl,1E28h ; ¢ëá®â /è¨à¨­  íªà ­ 
ld a,(page_sys_screen) ; áâà. ¡ãä¥à 
ld b,a
xor a ; ¨¤¥­â¨ä. £«®¡. ®ª­ 
ld c,0B3h ; ¨§ ¡ãä¥à  ­  íªà ­
rst 08h
; ᪮¯¨à. ­  ¯à ¢ãî «¥¢ãî ¯ ­¥«ì
ld ix,0C000h+1400h ; ¡ãä¥à «¥¢®© ¯ ­¥«¨
ld de,0028h ; Y/X ¯®«®¦. ®ª­ 
ld hl,1E28h ; ¢ëá®â /è¨à¨­  íªà ­ 
ld a,(page_sys_screen) ; áâà. ¡ãä¥à 
ld b,a
xor a ; ¨¤¥­â¨ä. £«®¡. ®ª­ 
ld c,0B3h ; ¨§ ¡ãä¥à  ­  íªà ­
rst 08h
pop af
ld (enable_clock),a ; ¢®ááâ. ä« £
ei
; ®¡¬¥­ïâì X ¯®«®¦. ¯ ­¥«¥©
ld hl,panel_left+1
ld de,panel_right+1
ld c,(hl)
ld a,(de)
ld (hl),a
ld a,c
ld (de),a
inc hl
inc de
; ®¡¬¥­ïâì ï祩ª¨ "cur_panel"
ld c,(hl)
ld a,(de)
ld (hl),a
ld a,c
ld (de),a
pop af
out (SLOT3),a
ret
; ᬥ­   ªâ¨¢­®© ¯ ­¥«¨ (®¡¬¥­ á«ã¦. ï祥ª ¯ ­¥«¥©)
change_panel: ld hl,panel_left ; ®¡¬¥­ (hl) ¨ (de)
ld de,panel_right
ld b,len_struct ; à §¬¥à áâàãªâãàë ¯ ­¥«¨
ld c,(hl)
ld a,(de)
ld (hl),a
ld a,c
ld (de),a
inc hl
inc de
djnz $-7
call A20E5 ; ¯®«ãç¨âì  ¤à¥á ®¯¨á â. ⥪. ä®à¬ â  (full/medium/brief)
ld e,(hl)
inc hl
ld a,(hl)
inc hl
or a
jr nz,$-5
jp set_const ; ­ áâநâì ª®­áâ ­âë
;--------------------------------------------------------------
; “áâ ­®¢¨âì á¨áâ. ¤¨áª ¨ ¯ãâì ®â  ªâ. ¯ ­¥«¨
; ¢ë室: CF - ¯à¨ ®è¨¡ª¥ (a=0FFh - ­¥â ¤¨áª , a=0 - ­¥â ¯ãâ¨)
;--------------------------------------------------------------
set_path_from_activ_panel:
; ãáâ. ¤¨áª ®â  ªâ. ¯ ­¥«¨
ld a,(disk)
ld c,1
rst ToDSS
ld a,-1
ret c
; ãáâ. ¯ãâì ®â  ªâ. ¯ ­¥«¨
ld hl,(__buff)
ld c,1Dh
rst ToDSS
ret nc
ld a,0
ret
;-------------------------------------------------
; “áâ ­®¢¨âì ¤¨áª ¨ ¯ãâì ¤«ï  ªâ. ¯ ­¥«¨
;-------------------------------------------------
set_path_to_activ_panel:
; ãáâ. ¤¨áª ¤«ï  ªâ. ¯ ­¥«¨
ld c,2
rst ToDSS
ret c
ld (disk),a
; ãáâ. ¯ãâì ¤«ï  ªâ. ¯ ­¥«¨
ld hl,(__buff)
ld c,1Eh
rst ToDSS
ret
;-------------------------------------------------
; ‚뢮¤ ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
;-------------------------------------------------
show_sort_letter:
db 3Eh ; ld a,..
sort_char_flag: db true ; ä« £ ¢ë¢®¤  ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
or a
ret z
ld hl,(sort_type)
ld a,""
add a,h
ld h,a ; / á®àâ¨à®¢ª 
ld (sort_char__),hl
ld hl,sort_char ; ®¯¨á â¥«ì ¡ãª¢ë
jr draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
;-------------------------------------------------
; <20>®§¨æ. ¢ë¢®¤ ⥪áâ  (¢  ªâ. ¯ ­¥«¨)
;-------------------------------------------------
; ¢å®¤: hl=®¯¨á â¥«ì áâப¨
draw_text: ld a,(hl)
or a
ret z ; á⮯-¡ ©â
ld (tdraw1__),a ; ¤«¨­  áâப¨
ex af,af'
inc hl
ld a,(hl)
ld (tdraw3__+1),a ; 梥â
inc hl
ld e,(hl) ; áâப 
inc hl
ld d,(hl) ; ª®«®­ª 
inc hl
ex de,hl ; hl=colon/line, de= ¤à¥á áâப¨
call draw_txt_print
ex de,hl
jr draw_text
;
; h=­®¬¥à ª®«®­ª¨
; a'=¤«¨­  áâப¨
; de= ¤à¥á áâப¨
; ­ áâநâì ï祩ª¨ tdraw1__, tdraw3__+1
draw_txt_print: ld bc,0301h ; á 0-© áâப¨ (¤«ï ᨬ¢®«®¢)
ld a,(panel_left+1) ; ­ ç «®  ªâ. ¯ ­¥«¨
add a,h
draw_txt_print1:;
ld (tdraw__),a ; ª®«®­ª 
ld h,0
add hl,hl ; 1+1=2
add hl,hl ; 2+2=4
add hl,bc
in a,(PORT_Y)
ld (tdraw4__+1),a ; á®åà. ¯®àâ
in a,(SLOT0)
ld (tdraw5__+1),a ; á®åà. ¯®àâ
di
ld a,50h ; ¢¨¤¥®-áâà ­¨æ 
out (SLOT0),a
db 3Eh ; ld a,..
tdraw__: db 0 ; ª®«®­ª  (0..79)
add a,81h ; +0 (ᬥé. á«¥¢ )
out (PORT_Y),a
ld c,a
; ¢ë¢®¤ ⥪áâ 
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
db 3Eh ; ld a,..
tdraw1__: db 1 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
inc hl ; ¯¥à¥©â¨ ­   âਡãâ
; ¢ë¢®¤  âਡãâ 
ex af,af'
ld b,a ; ¤«¨­  áâப¨
ld a,c
tdraw2__: out (PORT_Y),a
tdraw3__: ld (hl),0 ;  âਡãâ
inc a
inc de
djnz tdraw2__
tdraw4__: ld a,0
out (PORT_Y),a ; ¢®ááâ. ¯®àâ
tdraw5__: ld a,0
out (SLOT0),a ; ¢®ááâ. ¯®àâ
ei
ret
;-----------------------------------------------------------
; ‚뢮¤ ¡®ª®¢ëå áâ®à®­ ¨ ¯à¥¤-­¨¦­¥© «¨­¨¨ à ¬ª¨ ¯ ­¥«¨
; (á ®ç¨á⪮© ¬¥áâ )
;-----------------------------------------------------------
draw_half_frame:ld hl,0301h+4 ; á 1-© áâப¨
ld a,(panel_size+1)
ld b,a ; 27 ç¨á«® áâப
jr $+7
draw_half_frame1:
ld hl,0301h+(4*2) ; á® 2-© áâப¨
ld b,26 ; ç¨á«® áâப
in a,(PORT_Y)
ld (fdraw3__+1),a ; á®åà. ¯®àâ
in a,(SLOT0)
ld (fdraw4__+1),a ; á®åà. ¯®àâ
ld a,(color_array+2) ; 1Bh color_panel
ld (fdraw1__+1),a ;  âਡãâ
ld a,(panel_left+1) ; ª®«®­ª  (­ ç «® ¯ ­¥«¨)
add a,81h ; +0 (ᬥé. á«¥¢ )
ld c,a
ld a,(format_mode) ; ä®à¬ â ¯ ­¥«¨
; ¢ë¢®¤ á।­¥© ç áâ¨
ld de,midline2 ; «¨­¨ï "º ³ º" medium
bit 1,a ; medium
jr nz,fdraw__
ld de,midline3 ; «¨­¨ï "º ³ ³ º" brief
bit 2,a ; brief
jr nz,fdraw__
ld de,midline4 ; «¨­¨ï "º º""
bit 3,a ; info
jr nz,fdraw__
bit 4,a ; qview
jr nz,fdraw__
ld de,midline1 ; «¨­¨ï "º ³ ³ ³ º" full
bit 6,a ; spec
jr z,fdraw__
ld de,midline_spec ; «¨­¨ï "º ³ ³ ³ ³ ³ º" full-spec
fdraw__: di
ld a,50h ; ¢¨¤¥®-áâà ­¨æ 
out (SLOT0),a
fdraw2__: call fdraw_axel
djnz fdraw2__
; ¢ë¢®¤ ¯à¥¤-­¨¦­¥© «¨­¨¨
ld de,midline4 ; «¨­¨ï "º º""
call fdraw_axel
fdraw3__: ld a,0
out (PORT_Y),a ; ¢®ááâ. ¯®àâ
fdraw4__: ld a,0
out (SLOT0),a ; ¢®ááâ. ¯®àâ
ei
ret
fdraw_axel: ld a,c
out (PORT_Y),a
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
ld a,40 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
inc l ; ¯¥à¥©â¨ ­   âਡãâ
; ¢ë¢®¤  âਡãâ 
push bc
ld b,40 ; ¤«¨­  áâப¨
ld a,c
fdraw0__: out (PORT_Y),a
fdraw1__: ld (hl),color_panel ; 1Bh  âਡãâ
inc a
djnz fdraw0__
pop bc
inc l
inc l
inc l
ret