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

524 lines
14 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.

; …᫨ ¯¥à¥¬¥­­ ï ®ªà㦥­¨ï ­ ©¤¥­ , ini-ä ©« ç¨â ¥âáï/§ ¯¨á뢠¥âáï
; ⮫쪮 ¢ ­¥©.
; …᫨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï ­¥â, ini-ä ©« ç¨â ¥âáï/§ ¯¨á뢠¥âáï ¯®
; ⥪ã饬㠯ã⨠¬¥­¥¤¦¥à .
;
; …᫨ ini-ä ©« ­¥ ­ ©¤¥­ - ¢ ¯ ­¥«ïå ãáâ ­ ¢«¨¢ ¥âáï ¤¨áª ¨ ⥪ã騩
; ¯ãâì ¬¥­¥¤¦¥à . …᫨ ini-ä ©« ­ ©¤¥­, ¤¨áª¨ ¨ ¯ã⨠¯ ­¥«¥© ãáâ ­ ¢-
; «¨¢ îâáï ᮣ« á­® ¤ ­­ëå ini-ä ©« .
;
;
; ‘âàãªâãà  ini-ä ©« :
;
; +0 - ”« £  ªâ¨¢­®© ¯ ­¥«¨ (0=«¥¢ ï, 80h=¯à ¢ ï)
; +1 - <20>®¬¥à ¤¨áª  «¥¢®© ¯ ­¥«¨ (0=A,1=B,..)
; +2 - <20>®¬¥à ¤¨áª  ¯à ¢®© ¯ ­¥«¨ (0=A,1=B,..)
; +3 - <20> áªà áª  ä ©«®¢ (true/false)
; +4 - ”« £ áªàëâ¨ï ¬ë誨 ¯à¨ à ¡®â¥ á ª« ¢®© (true/false)
; <20>¥¦¨¬ á®àâ¨à®¢ª¨ «¥¢®© ¯ ­¥«¨:
; +5 - n/x/d/s/u (name/ext/date/size/unsort)
; +6 - 0=, 1= (¢®á室ïé ï/­¨á室ïé ï)
; <20>¥¦¨¬ á®àâ¨à®¢ª¨ ¯à ¢®© ¯ ­¥«¨:
; +7 - n/x/d/s/u (name/ext/date/size/unsort)
; +8 - 0=, 1= (¢®á室ïé ï/­¨á室ïé ï)
; +9 - ”®à¬ â «¥¢®© ¯ ­¥«¨: full/med/brief/info/qview
; +10 - ”®à¬ â ¯à ¢®© ¯ ­¥«¨: full/med/brief/info/qview
; +11 - ”« £ ¢ë¢®¤  ¡ãª¢ ०¨¬  á®àâ¨à®¢ª¨ (true/false)
; +12 - ”« £ ¢ë¢®¤  áâப¨ á㬬 à­®© ¨­ä®à¬ æ¨¨ (true/false)
; +13 - ‘¬¥é¥­¨¥ ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«¥­¨¨ ä ©«®¢ (true/false)
; +14 - ”« £ ¢ë¢®¤  ç á®¢ ¢¢¥àå㠯ࠢ®© ¯ ­¥«¨ (true/false)
; +15 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à  (true/false)
; +16 - ”« £ ®â¬¥âª¨ ¯ ¯®ª (true/false)
; +17 - ”« £ ¢à¥¬¥­­®£® ¯à®á¬®âà  á¨áâ. íªà ­  ¯® Esc (true/false)
; +18 - ”« £ ®âà ¡®âª¨ Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªàëâëå ¯ ­¥«ïå (false/true)
; ;+19 - ”« £ ¢ë¢®¤  ®¡é¥© «¨­¥©ª¨ ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï (false/true)
; +20 - १¥à¢
; +21 - १¥à¢
; +22 - १¥à¢
;
; +23 - Œ áᨢ 梥⮢ ¬¥­¥¤¦¥à  (color_array), 66 ¡ ©â
;
; +88 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨ (Copy)
; +89 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ¯¥à¥¬¥é¥­¨¨ (Move)
; +90 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯à¨ 㤠«¥­¨¨ (Delete)
; +91 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª (Delete non-empty folders)
; +92 - १¥à¢
; +93 - १¥à¢
; +94 - १¥à¢
; +95 - १¥à¢
;
; +96 - <20>ãâì «¥¢®© ¯ ­¥«¨ (256 ¡ ©â)
; +353 - <20>ãâì ¯à ¢®© ¯ ­¥«¨ (256 ¡ ©â)
;
block1 equ 23 ; ï祩ª¨ 1-£® ¡«®ª  ­ áâ஥ª
block2 equ 8 ; ï祩ª¨ 2-£® ¡«®ª 
size_ini_part1 equ block1+len_color_array+block2 ;97 ¡ ©â (­ áâனª¨ FM)
;-----------------------------------------------------------
; <20> áâநâì ®¯æ¨®­ «ì­ë¥ ï祩ª¨ ¬¥­¥¤¦¥à 
; ¨ ãáâ ­®¢¨âì ¤¨áª¨ ¨ ¯ã⨠¯ ­¥«¥©.
; ¢å®¤: § ¯®«­¥­­ë© work_buffer, ¯à¨ ­ «¨ç¨¨ ini-ä ©« 
;-----------------------------------------------------------
init_option_cells:
; ä« £ ­ «¨ç¨ï ini-ä ©« 
db 3Eh ; ld a,..
enable_ini_file:
db false
or a
jr nz,yes_ini__
;--------------------------------
; ­¥â ini-ä ©« 
;--------------------------------
; ¨á¯®«ì§®¢ âì æ¢¥â  ¯®-㬮«ç ­¨î
ld hl,default_colors ; ®âªã¤ 
ld de,color_array ; ªã¤ 
ld bc,len_color_array
ldir
; ãáâ. ®¤¨­ ª®¢ë¥ ¤¨áª¨ ¢ ¯ ­¥«ïå
ld c,2 ; ¯®«ãç¨âì ­®¬¥à ⥪. ¤¨áª 
rst ToDSS
ld (disk),a ; ­®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
ld (disk1),a ; ­®¬¥à ¤¨áª  ¯ áá. ¯ ­¥«¨
; ãáâ. ®¤¨­ ª®¢ë¥ ¯ã⨠¢ ¯ ­¥«ïå
ld hl,buff_left ; ¡ãä¥à ¯ã⨠«¥¢®© ¯ ­¥«¨
ld c,1Eh ; ¯®«ãç¨âì ⥪. ¯ãâì
rst ToDSS
ld hl,buff_left ; ¯ãâì «¥¢®© ¯ ­¥«¨
ld de,buff_right ; ¯ãâì ¯à ¢®© ¯ ­¥«¨
jp copy_string ; ᪮¯¨à. áâப㠤® ­ã«ï (á ­ã«¥¬)
yes_ini__:
;----------------------------------------
; ˆá¯®«ì§®¢ âì ­ áâனª¨ ¨§ ini-ä ©« 
;----------------------------------------
; “áâ.  ªâ¨¢­ãî ¯ ­¥«ì
ld de,panel_left+1
ld hl,panel_right+1
ld a,(work_buffer) ;+0 ¨§ ini-ä ©«  (0=«¥¢ ï, 80h=¯à ¢ ï)
or a
ld a,0
jr z,$+3
ex de,hl
ld (de),a ; X ¯®«®¦. ®¤­®© ¯ ­¥«¨
ld (hl),40 ; X ¯®«®¦. ¤à㣮© ¯ ­¥«¨
inc de
inc hl
ld (de),a ; cur_panel
ld (hl),80h ; cur_panel ¤à.¯ ­¥«¨
; “áâ. ¤¨áª¨ ¯ ­¥«¥©
ld a,(work_buffer+1)
ld (disk),a ; ¤¨áª  ªâ. ¯ ­¥«¨
ld a,(work_buffer+2)
ld (disk1),a ; ¤¨áª ¯ áá. ¯ ­¥«¨
; <20> áªà áª  ä ©«®¢
ld a,(work_buffer+3)
ld (hilight_enable),a
; <20>àïâ âì ¬ëèªã ¯à¨ à ¡®â¥ á ª« ¢®©
ld a,(work_buffer+4)
ld (hidden_mouse),a ; ä« £ (¢ 0-© áâà. ”Œ, 㦥 ¢ª«î祭 )
; <20>¥¦¨¬ë á®àâ¨à®¢®ª ¯ ­¥«¥©
; l=n/x/d/s/u (name/ext/date/size/unsort)
; h=0/1 (00=, 01=)
ld hl,(work_buffer+5)
ld (sort_type),hl ;  ªâ.
ld hl,(work_buffer+7)
ld (sort_type1),hl ; ¯ áá.
; ”®à¬ âë ¯ ­¥«¥©
ld a,(work_buffer+9) ; full/med/...
ld (format_mode),a ;  ªâ.
ld a,(work_buffer+10)
ld (format_mode1),a ; ¯ áá.
; ”« £ ¢ë¢®¤  ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
ld a,(work_buffer+11) ; true/false
ld (sort_char_flag),a ; ä« £
; ”« £ ¢ë¢®¤  á㬬 à­®© ¨­ä®à¬ æ¨¨ (¢­¨§ã ¯ ­¥«¥©)
ld a,(work_buffer+12) ; false/true
ld (flag_summary_info),a ; ä« £
; ‘¬¥é¥­¨¥ ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«¥­¨¨ ä ©«®¢
ld a,(work_buffer+13)
ld (enable_down_mark),a ; ä« £
; ”« £ ¢ë¢®¤  ç á®¢
ld a,(work_buffer+14)
ld (clock__+1),a ; ⥪. á®áâ. ०¨¬  ¢ë¢®¤ 
ld (enable_clock),a ; ä« £
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à 
ld a,(work_buffer+15)
ld (confirm_quit),a
; ”« £ ®â¬¥âª¨ ¯ ¯®ª
ld a,(work_buffer+16)
ld (mark_folders),a
; ”« £ ¢à¥¬. ¯à®á¬®âà  á¨áâ. íªà ­  ¯® Esc
ld a,(work_buffer+17)
ld (flag_esc),a
; ”« £ ®âà ¡®âª¨ Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªà. ¯ ­¥«ïå
ld a,(work_buffer+18)
ld (move_home_end),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨ (Copy)
ld a,(work_buffer+88)
;ld (),a
;ld (confirm_ceil0),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ¯¥à¥¬¥é¥­¨¨ (Move)
ld a,(work_buffer+89)
;ld (),a
;ld (confirm_ceil1),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯à¨ 㤠«¥­¨¨ (Delete)
ld a,(work_buffer+90)
ld (del_confirm),a
ld (confirm_ceil2),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª (Delete non-empty folders)
ld a,(work_buffer+91)
ld (flag_del_non_empty),a
ld (confirm_ceil3),a
; <20> áâநâì æ¢¥â  ¬¥­¥¤¦¥à 
ld hl,work_buffer+23 ; ­ ç «® 梥â. ¬ áᨢ  ¢ ini-ä ©«¥
ld de,color_array ; ¬ áᨢ 梥⮢ ¬¥­¥¤¦¥à 
ld bc,len_color_array
ldir
ret
;-------------------------------------------------
; —⥭¨¥ ini-ä ©« 
;-------------------------------------------------
read_ini_file:
; ¯à®¢¥à¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï Far- 
ld bc,0146h ; ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï
ld hl,env_name ; ¨¬ï ¯¥à¥¬¥­­®©
ld de,work_buffer ; ¡ãä¥à ¤«ï §­ ç¥­¨ï ¯¥à¥¬¥­­®©
rst ToDSS
jr c,no_ini_string ; ®è¨¡ª 
or a
jr nz,read_ini_file__ ; ¯¥à¥¬¥­­ ï ­ ©¤¥­ 
; ¨á¯. ⥪ã騩 á¨áâ. ¯ãâì
ld hl,save_path ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã
dec de
dec de
ld a,(de)
cp '\'
jr z,$+3
inc de
read_ini_file__:
push de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
ld hl,name_ini_file ; ¨¬ï ini-ä ©« 
ld bc,len_ini_name
ldir ; ª ¤¨áª+¯ãâì + ¨¬ï ini-ä ©« 
; ­ ©â¨ ä ©«
ld hl,work_buffer ; ¨¬ï ä ©«  (¤¨áª+¯ãâì)
ld de,work_buffer+127;255 ; ¡ãä¥à
ld bc,0119h
ld a,20h ; " à娢­ë©"
rst ToDSS
pop de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
jr nc,found_ini_file ; ä ©« ­ ©¤¥­
no_ini_string:
xor a ; false
ld (enable_ini_file),a ; ä« £ ­ «¨ç¨ï ini-ä ©« 
jr ini_done
;
found_ini_file:
ld hl,work_buffer ; ¯®«­®¥ ¨¬ï ä ©«  (¤¨áª+¯ãâì+¨¬ï)
ld a,1 ; ­  ç⥭¨¥
ld c,11h ; ®âªàëâì ä ©«
rst ToDSS
jr c,no_ini_string ; ®è¨¡ª  ®âªàëâ¨ï
ld (handle_ini_file),a ; á®åà. ¤¥áªà¨¯â®à
; ¯à®ç¨â âì ­ áâனª¨ ¬¥­¥¤¦¥à 
ld hl,work_buffer ; ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld de,size_ini_part1 ; ç¨á«® ç¨â ¥¬ëå ¡ ©â
ld c,13h ; ç⥭¨¥ ä ©« 
rst ToDSS
jr c,read_ini_error
; ¯à®ç¨â âì ¯ã⨠«¥¢®© ¨ ¯à ¢®© ¯ ­¥«¥©
ld hl,buff_left ; ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld de,256+256 ; 512 ç¨á«® ç¨â ¥¬ëå ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,13h ; ç⥭¨¥ ä ©« 
rst ToDSS
ld a,true
jr nc,read_ini_ok ; ¡¥§ ®è¨¡®ª
read_ini_error:
xor a
read_ini_ok:
ld (enable_ini_file),a ; ä« £ ­ «¨ç¨ï ini-ä ©« 
close_ini_file:
db 3Eh
handle_ini_file:
db -1
ld c,12h ; § ªàëâì ä ©«
rst ToDSS
ini_done:
restore_sys_path:
ld a,(save_disk)
ld c,1 ; ãáâ. ¤¨áª
rst ToDSS
ret c
ld hl,save_path
ld c,1Dh ; ãáâ. ª â «®£
rst ToDSS
ret
env_name:
db "FM",0 ; ¨¬ï ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
name_ini_file:
db '\FM.INI',0 ; ¨¬ï ini-ä ©« 
len_ini_name equ $ - name_ini_file
name_mnu_file:
db '\FM.MNU',0 ; ä ©« Œ¥­î <20>®«ì§®¢ â¥«ï
len_mnu_name equ $ - name_mnu_file
;------------------------------------------------------------------
; ‡ ¯¨áì ­ áâ஥ª ¢ ini-ä ©« (97+256+256=609 ¡ ©â).
; …᫨ ¯¥à¥¬¥­­ ï ®ªà㦥­¨ï ­¥ ­ ©¤¥­  - § ¯¨áì ¯à®¨§¢®¤¨âáï
; ¢ ⥪ã饬 ¯ãâ¨.
;------------------------------------------------------------------
write_ini_file:
ld hl,show_pointer ; ­ ç «ì­ë© ¢ë¢®¤ 㪠§ â¥«ï
push hl
call clear_pointer ; áªàëâì 㪠§ â¥«ì
; ¯à®¢¥à¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï Far` 
ld bc,0146h ; ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï
ld hl,env_name ; ¨¬ï ¯¥à¥¬¥­­®©
ld de,work_buffer ; ¡ãä¥à ¤«ï §­ ç¥­¨ï ¯¥à¥¬¥­­®©
rst ToDSS
ret c ; ®è¨¡ª 
or a
jr nz,write_ini_file__ ; ¯¥à¥¬¥­­ ï ­ ©¤¥­ 
; ¨á¯. ⥪ã騩 á¨áâ. ¯ãâì
ld hl,save_path ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã
dec de
dec de
ld a,(de)
cp '\'
jr z,$+3
inc de
write_ini_file__:
ld hl,name_ini_file ; ¨¬ï ini-ä ©« 
ld bc,len_ini_name
ldir ; ¤¨áª+¯ãâì + ¨¬ï ini-ä ©« 
ld hl,work_buffer ; ¯®«­®¥ ¨¬ï ä ©«  (¤¨áª+¯ãâì+¨¬ï)
ld a,20h ; " à娢­ë©"
ld c,0Ah ; á®§¤ âì ä ©«
rst ToDSS
jr c,ini_done ; ®è¨¡ª  á®§¤ ­¨ï
ld (handle_ini_file),a ; á®åà. ¤¥áªà¨¯â®à
;
call prep_ini_buffer ; § ¯®«­¨âì ini-¡ãä¥à
;
; § ¯¨á âì ­ áâனª¨ ¬¥­¥¤¦¥à 
ld hl,work_buffer ; ¡ãä¥à ¤ ­­ëå
ld de,size_ini_part1 ; 97 ç¨á«® § ¯¨á. ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,14h ; § ¯¨áì ä ©« 
rst ToDSS
jr c,close_ini_file ; § ªàëâì ä ©«
; § ¯¨á âì ¯ãâì «¥¢®© ¯ ­¥«¨
ld hl,(__buff) ;  ¤à¥á áâப¨ «¥¢®© ¯ ­¥«¨
ld de,256 ; ç¨á«® § ¯¨á. ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,14h ; § ¯¨áì ä ©« 
rst ToDSS
jr c,close_ini_file ; § ªàëâì ä ©«
; § ¯¨á âì ¯ãâì ¯à ¢®© ¯ ­¥«¨
ld hl,(__buff1) ;  ¤à¥á áâப¨ ¯à ¢®© ¯ ­¥«¨
ld de,256 ; ç¨á«® § ¯¨á. ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,14h ; § ¯¨áì ä ©« 
rst ToDSS
jp close_ini_file ; § ªàëâì ä ©«
;-------------------------------------------------
; <20>®¤£®â®¢¨âì ¡ãä¥à ¤«ï § ¯¨á¨ ¢ ini-ä ©«
;-------------------------------------------------
prep_ini_buffer:
; €ªâ¨¢­ ï ¯ ­¥«ì
ld a,(cur_panel) ; 0=«¥¢ ï, 80h=¯à ¢ ï
ld (work_buffer),a ;+0
;or a
; ª®à४⭮ ᪮¯¨à®¢ âì ¯ ­¥«¥-§ ¢¨á¨¬ë¥ ï祩ª¨
;push af
;call nz,change_panel
call prep_ini_buffer1
;pop af
;call nz,change_panel
;
; <20> áªà áª  ä ©«®¢
ld a,(hilight_enable)
ld (work_buffer+3),a
; <20>àïâ âì ¬ëèªã ¯à¨ à ¡®â¥ á ª« ¢®©
ld a,(hidden_mouse) ; ä« £ (¢ 0-© áâà. ”Œ)
ld (work_buffer+4),a
; ”« £ ¢ë¢®¤  ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
ld a,(sort_char_flag)
ld (work_buffer+11),a
; ”« £ ¢ë¢®¤  á㬬 à­®© ¨­ä®à¬ æ¨¨ (¢­¨§ã ¯ ­¥«¥©)
ld a,(flag_summary_info)
ld (work_buffer+12),a
; ‘¬¥é¥­¨¥ ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«¥­¨¨ ä ©«®¢
ld a,(enable_down_mark)
ld (work_buffer+13),a
; ”« £ ¢ë¢®¤  ç á®¢
ld a,(enable_clock)
ld (work_buffer+14),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à 
ld a,(confirm_quit)
ld (work_buffer+15),a
; ”« £ ®â¬¥âª¨ ¯ ¯®ª
ld a,(mark_folders)
ld (work_buffer+16),a
; ”« £ ¢à¥¬. ¯à®á¬®âà  á¨áâ. íªà ­  ¯® Esc
ld a,(flag_esc)
ld (work_buffer+17),a
; ”« £ ®âà ¡®âª¨ Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªà. ¯ ­¥«ïå
ld a,(move_home_end)
ld (work_buffer+18),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨ (Copy)
;ld a,()
ld (work_buffer+88),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ¯¥à¥¬¥é¥­¨¨ (Move)
;ld a,()
ld (work_buffer+89),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯à¨ 㤠«¥­¨¨ (Delete)
ld a,(del_confirm)
ld (work_buffer+90),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª (Delete non-empty folders)
ld a,(flag_del_non_empty)
ld (work_buffer+91),a
; <20>¥à¥ª ç âì ¬ áᨢ 梥⮢ ¬¥­¥¤¦¥à 
ld hl,color_array
ld de,work_buffer+23 ; ­ ç «® 梥â. ¬ áᨢ  ¢ ini-ä ©«¥
ld bc,len_color_array
ldir
ret
; Š®¯¨à®¢ ­¨¥ ¢ ini-¡ãä¥à ¯ ­¥«¥-§ ¢¨á¨¬ëå ï祥ª
prep_ini_buffer1:
; <20>®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
ld a,(disk)
ld (work_buffer+1),a
; <20>®¬¥à ¤¨áª  ¯ áá. ¯ ­¥«¨
ld a,(disk1)
ld (work_buffer+2),a
; <20>¥¦¨¬ë á®àâ¨à®¢®ª ¯ ­¥«¥©
ld hl,(sort_type) ;  ªâ.
ld (work_buffer+5),hl
ld hl,(sort_type1) ; ¯ áá.
ld (work_buffer+7),hl
; ”®à¬ âë ¯ ­¥«¥©
ld a,(format_mode) ;  ªâ.
ld (work_buffer+9),a
ld a,(format_mode1) ; ¯ áá.
ld (work_buffer+10),a
ret
array_read equ 0C000h ; ¡ãä¥à mnu-ä ©« 
;-------------------------------------------------
; —⥭¨¥ ä ©«  fm.mnu
;-------------------------------------------------
read_mnu_file:
; ¯à®¢¥à¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï Far- 
ld bc,0146h ; ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï
ld hl,env_name ; ¨¬ï ¯¥à¥¬¥­­®©
ld de,work_buffer ; ¡ãä¥à ¤«ï §­ ç¥­¨ï ¯¥à¥¬¥­­®©
rst ToDSS
jr c,no_mnu_string ; ®è¨¡ª 
or a
jr nz,read_mnu_file__ ; ¯¥à¥¬¥­­ ï ­ ©¤¥­ 
; ¨á¯. ⥪ã騩 á¨áâ. ¯ãâì
ld hl,save_path ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã
dec de
dec de
ld a,(de)
cp '\'
jr z,$+3
inc de
read_mnu_file__:
push de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
ld hl,name_mnu_file ; ¨¬ï mnu-ä ©« 
ld bc,len_mnu_name
ldir ; ª ¤¨áª+¯ãâì + ¨¬ï mnu-ä ©« 
; ­ ©â¨ ä ©«
ld hl,work_buffer ; ¨¬ï ä ©«  (¤¨áª+¯ãâì)
ld de,work_buffer+127;255 ; ¡ãä¥à
ld bc,0119h
ld a,20h ; " à娢­ë©"
rst ToDSS
pop de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
jr nc,found_mnu_file ; ä ©« ­ ©¤¥­
no_mnu_string:
xor a ; false
ld (enable_mnu_file),a ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
jr mnu_done
;
found_mnu_file:
ld hl,work_buffer ; ¯®«­®¥ ¨¬ï ä ©«  (¤¨áª+¯ãâì+¨¬ï)
ld a,1 ; ­  ç⥭¨¥
ld c,11h ; ®âªàëâì ä ©«
rst ToDSS
jr c,no_mnu_string ; ®è¨¡ª  ®âªàëâ¨ï
ld (handle_mnu_file),a ; á®åà. ¤¥áªà¨¯â®à
; ¯à®ç¨â âì ä ©«
ld hl,array_read ; 0C000h ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld de,73*52 ; 3796 ¬ ªá. ç¨á«® ç¨â ¥¬ëå ¡ ©â
ld c,13h ; ç⥭¨¥ ä ©« 
rst ToDSS
ld a,true
jr nc,read_mnu_ok ; ¡¥§ ®è¨¡®ª
xor a
read_mnu_ok:
ld (enable_mnu_file),a ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
ld hl,array_read
add hl,de
ld (hl),0 ; ¢ ª®­¥æ ä ©« 
db 3Eh ; ld a,..
handle_mnu_file:
db -1
ld c,12h ; § ªàëâì ä ©«
rst ToDSS
mnu_done:
jp restore_sys_path ; ¢®ááâ. ⥪. ¯ãâì