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

1226 lines
28 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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; Š« ¢¨è¨ ã¯à ¢«¥­¨ï ª®¬-áâப¨:
;
; Ctrl+Enter - ¢áâ ¢¨âì ¨¬ï ä ©«  (¯ ¯ª¨) ¨«¨ ⥪. ¯ãâì ¯ ­¥«¨
;
; Esc, Ctrl+Y - ®ç¨áâ¨âì ª®¬-áâபã. Ctrl+Y ¨á¯®«ì§ã¥âáï,
; ª®£¤  ®âª«î祭  Esc. <20>ਠ­ ¦ â¨ïå ­  Esc, Ctrl+Y
; ¢ ¯ãá⮩ ª®¬-áâப¥ - ¢ë室¨¬ ¢ ¬¥­¥¤¦¥à.
;
; ­ ¢¨£ æ¨ï ¯® ¨áâ®à¨¨ ª®¬ ­¤:
;
; Ctrl+E - ¯à¥¤ë¤ãé ï áâப  ¨áâ®à¨¨
; Ctrl+X - á«¥¤ãîé ï áâப  ¨áâ®à¨¨
; Ctrl+Del - ®ç¨áâ¨âì ¨áâ®à¨î ª®¬ ­¤
;
; ¯à¨ ã¡à ­­ëå ¯ ­¥«ïå:
;
; PageUp - ¢ ­ ç «® ¨áâ®à¨¨
; PageDown - ¢ ª®­¥æ ¨áâ®à¨¨
;
;
ComLineWidth:
db 76 ; ¬ ªá. è¨à¨­  ¯®«ï ¢¢®¤ 
;---------------------------------------------------------------------
; <20>à®à¨á®¢ª  ®¡ê¥ªâ 
;---------------------------------------------------------------------
PutComLine:
ld a,(disk) ; ­®¬¥à ¤¨áª 
add a,"A"
ld hl,(char_disk) ;  ¤à¥á ¡ãª¢ë ¤¨áª   ªâ. ¯ ­¥«¨
ld (hl),a
call width_path ; ¯ãâì ¨§ path-¡ãä¥à  ¢ ¡ãä¥à ¯ã⨠¯ ­¥«¨
;
call print_compath ; ¢ë¢¥á⨠¯ãâì + ­®¢ ï è¨à¨­  ¯®«ï ¢¢®¤ 
in a,(SLOT3)
push af
ld a,(page_dial_screen) ; áâà. ¡ãä¥à 
out (SLOT3),a
;
YXpos: ld de,1E04h ; Y/X ­ ç «® ª®¬-áâப¨
ld (CursorPos),de ; Y/X ¯®§¨æ¨ï ªãàá®à 
call GetPutB
; ¯¥à¥ª ç âì ¤ ­­ë¥ ¨§ ¡ãä¥à  áâப¨ ¢ íªà ­. ¡ãä¥à
ex de,hl ; hl= ¤à¥á ¢ íªà ­. ¡ãä¥à¥
ld de,ComLineBuff+5 ; áâப 
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï ¢¢®¤ 
ld b,a
ld a,(color_array+22) ; 梥⠪®¬-áâப¨
ld c,a
ld a,(de)
inc de
ld (hl),a
inc hl
ld (hl),c ; 梥â áâப¨
inc hl
djnz $-6
pop af
out (SLOT3),a
jr PrnComLn ; ¢ë¢®¤ áâப¨ ­  íªà ­
;-----------------------------------------------------------
; <20>® §­ ç¥­¨î ª®®à¤¨­ â ã§­ âì  ¤à¥á ¢áâ ¢ª¨ ¢ ¯ ¬ïâ¨
; Input: BC - Y/X ª®®à¤¨­ âë ®â ­ ç «  ®ª­ 
; Output: DE -  ¤à¥á ¢áâ ¢ª¨
;-----------------------------------------------------------
GetPutB:ld hl,LC000+MaxDialWin
ld d,0
add hl,de ;DE-shiftX
add hl,de
ex de,hl ;DE-Address
ret
;-------------------------------------------------
; “áâ ­®¢¨âì 䮪ãá ­  ®¡ê¥ªâ "Input Line"
;-------------------------------------------------
ComLineI:
ld de,(CursorPos) ; Y/X ¯®§¨æ¨ï ªãàá®à 
call PILCurs ; ¢ª«. ªãàá®à
ei
ret
;-----------------------------------------------------------
; ‚뢮¤ áâப¨ ®¡ê¥ªâ  "Command Line" ­  íªà ­
;-----------------------------------------------------------
PrnComLn:
ld a,(CurILFl)
push af
call ResILCr ; ¢ëª«. ªãàá®à
ld de,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤ 
ld c,84h ; ãáâ. ªãàá®à
rst 08h
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
push hl
pop iy
ld a,(iy+3) ;+3 ᬥé. áâப¨ §  «¥¢ë© ªà ©
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï
ld e,a
ld c,a
ld b,a
push bc
xor a
ld b,e
ld de,work_buffer ; ¢à¥¬. ¡ãä¥à
push de
ld (de),a
inc de
djnz $-2
ld a,(iy+0)
sub (iy+3)
cp c
jr nc,$+3
ld c,a
ld b,0
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
sub c
jr nc,$+4
add a,c
ld c,a
pop de
push de
ld a,b
or c
jr z,$+4
ldir
pop hl
pop bc
ld a,b ; ¤«¨­  áâப¨
or a
jr z,prne__
ld a,(color_array+22) ; 梥⠪®¬-áâப¨
ld e,a
ld c,85h ; ¢ë¢®¤ áâப¨ á  âਡãâ ¬¨
rst 08h
prne__: ld a,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤ 
ld e,(iy+2) ;+2 ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
add a,e
cp 80
jr c,prne1__
ld b,79
sub b
ld d,a ; "­ ¥§¤" §  ¯à ¢ë© ªà ©
ld a,e
sub d
ld (iy+2),a ;+2 ­®¢®¥ ¯®«®¦. ªãàá®à 
ld a,b
prne1__:ld (CursorPos),a ; X ¯®«®¦. ªãàá®à  ­  íªà ­¥
pop af
or a
call nz,PILCurs ; ¢ª«. ªãàá®à
ei
ld de,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤ 
call GetPutB
ld hl,work_buffer ; ¢à¥¬. ¡ãä¥à
ld bc,(ComLineWidth) ; è¨à¨­  ¯®«ï
ld b,0
in a,(SLOT3)
push af
ld a,(page_dial_screen) ; áâà. ¡ãä¥à 
out (SLOT3),a
ldi
inc de
jp pe,$-3
pop af
out (SLOT3),a
ret
step equ 1 ; è £ áªà®««¨­£ 
;=====================================================================
;
; Ž¡à ¡®â稪 ᮡë⨩ ~Command Line~
;
;=====================================================================
EvComLine:
call handle_event ; —¨â ¥¬ ᮡë⨥
EvComLine1:
ld hl,EvComLine
push hl
ld iy,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld hl,what ; ᯨ᮪ ᮡë⨩
ld a,(hl)
inc hl
cp evMouseFr
jr z,EvComMouse
cp evKeyboard
jp z,EvComKeys
cp evCombKey
jp z,EvComComb
ret
; Ctrl+Y
com_clear:
pop hl ; ¢®ááâ. á⥪ ®â "ComLineWex"
; <Esc> â¥áâ ­  ०¨¬ ®âà ¡®âª¨
ComEsc: ld a,(ComLineBuff+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
or a
jp nz,ClearComLine ; ®ç¨áâ¨âì ª®¬-áâபã
; ¢ë©â¨ ¢ ¬¥­¥¤¦¥à ¯à¨ ¯ãá⮩ ª®¬-áâப¥
ComExit:ld a,evNothing ; ᮡë⨥
jr com_enter__
; <Enter>
ComEnter:
xor a
ld (work_buffer+127),a ;+255 § ¤ âì ¯ãáâãî áâபã
ld hl,ComLineBuff+4 ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
ld e,(hl)
cp e
jr z,ComExit ; ¯ãáâ ï áâப 
ld c," " ; ¯à®¡¥«
ld d,a
add hl,de
ld a,(hl)
cp c
jr nz,ent1__ ; ­¥â ª®­æ. ¯à®¡¥«®¢
ld b,e
; ã¡à âì ª®­æ. ¯à®¡¥«ë ª®¬-áâப¨
ld a,(hl)
cp c
jr nz,$+5
dec hl
djnz $-5
inc hl
ld (hl),d ; ¢ ª®­¥æ ª®¬-áâப¨
ld a,b
or a
jr z,ComExit ; ¡ë«¨ ®¤­¨ ¯à®¡¥«ë
ld de,ComLineBuff+4 ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
ld (de),a ; ­®¢®¥ ç¨á«® (¤«ï history_adding)
ent1__: call history_adding ; ¤®¡ ¢¨âì áâப㠢 history
; ᪮¯¨à. áâப㠢® ¢à¥¬. ¡ãä¥à
ld hl,ComLineBuff+5 ; ®âªã¤ 
ld de,work_buffer+127;255 ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã (á ­ã«¥¬)
ld a,evRunComLine ; ᮡë⨥ "®âà ¡®â âì ª®¬-áâபã"
com_enter__:
pop hl ; ¢®ááâ. ¡ « ­á á⥪ 
ld hl,what ; ¯®«¥ ᮡë⨩
ld (hl),a ; ­®¬¥à ᮡëâ¨ï
call ResILCr ; ¢ëª«. ªãàá®à
call ClearComLine ; ®ç¨áâ¨âì ª®¬-áâபã
; ãáâ. ¨áâ®à¨î ­  ¯®á«. ¯ãáâãî áâபã
ld a,(history_count) ; ç¨á«® áâப ¢ ¨áâ®à¨¨
ld (history_cur_string),a ; ­®¬¥à ⥪. áâப¨ ¨áâ®à¨¨
jp get_fire
; ‘®¡ë⨥ - Œë誠
EvComMouse:
ld e,(hl) ; X coord
inc hl
ld d,(hl) ; Y coord
ld a,(YXpos+2) ; Y ¯®«®¦. ª®¬-áâப¨
cp d
jr nz,ComExit ; ¬ë誠 ­¥ ¢ ª®¬-áâப¥
EvComMouse1:
ld c,4 ; X ­ ç «® áâப¨ ¢¢®¤ 
ld hl,ComLineBuff+1 ; áâàãªâãà  ¡ãä¥à 
ld a,e
sub c
ret c ; ¬ë誠 «¥¢¥¥ áâப¨ ¢¢®¤ 
ld (hl),0 ;+1 ãáâ. ä« £ "­¥ áâ¨à âì áâபã"
inc hl
cp (hl) ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
ret z ; ¬ë誠 ¢ ­ ç «¥ áâப¨ ¢¢®¤ 
ld e,a
inc hl
add a,(hl) ;+3 ᬥé. áâப¨ §  «¥¢ë© ªà ©
inc hl
cp (hl) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
ld a,(hl)
dec hl
dec hl
jr z,$+8
jr c,$+6
inc hl
sub (hl) ;+3 ᬥé. áâப¨ §  «¥¢ë© ªà ©
dec hl
ld e,a
ld (hl),e ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
call PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
jp get_fire
; ‘®¡ë⨥ - ®¡ëç­ ï ª« ¢¨è 
EvComKeys:
ld a,(hl) ;+1 what
cp 1Bh
jp z,ComEsc ; ®¡à ¡®âª  Esc
ld c,cmOkey ; ­®¬¥à ª®¬ ­¤ë
cp 0Dh
jp z,ComEnter
cp 9 ; Tab ᬥ­  ¯ ­¥«¨
jp z,tab
; à ¡®â  ¢ áâப¥ । ªâ¨à®¢ ­¨ï
cp 8 ; "§ ¡®©"
jr z,$+5
cp " "
ret c
;
ld de,ComLineWex
push de
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ex af,af' ; á®åà. ᨬ¢®«
res 7,(iy+1) ;+1 ä« £ ReadyString
ld a,(D0642) ; ä« £¨ ª« ¢ë
bit 1,a ; ¡¨â Ins
ld a,1 ; ¢áâ ¢ª 
jr nz,$+3
dec a ; § ¬¥­ 
and 1
rrca ; ¢¯à ¢® (¬«.¡¨â -> ¯¥à¥­®á)
or (iy+1)
ld (iy+1),a ;+1 ä« £ ReadyString
ex af,af'
cp 8 ; "§ ¡®©"
jp z,backspace
ex af,af' ; á®åà. ᨬ¢®«
ld a,(iy+4) ; InputSymb
cp (iy+0) ; Max len
jr nz,ILn___
ld a,(iy+2)
add a,(iy+3)
cp (iy+0)
ret nc
bit 7,(iy+1)
ret nz
ILn___: ld a,(iy+4)
sub (iy+3)
sub (iy+2)
jr z,no_insrt
dec (iy+4)
bit 7,(iy+1)
jr z,no_insrt
inc (iy+4)
; ¢¢®¤ ¢ á¥à¥¤¨­ã ⥪áâ  (¢áâ ¢ª )
ld c,a
ld b,0
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ld d,h
ld e,l
dec hl
lddr
no_insrt:
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
add a,(iy+3)
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ex af,af'
ld (hl),a ; á®åà. ᨬ¢®« ¢ áâப¥
inc (iy+4)
inc (iy+2)
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï
cp (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
jr nz,$+8
; ªãàá®à §  ¯®«¥¬
inc (iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
dec (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
call PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
pop de ; ¢®ááâ. ¡ « ­á á⥪ 
ComLineWex:
ret
; ‘®¡ë⨥ - ªãàá. ª« ¢¨è¨ ¨«¨ ª®¬¡¨­ æ¨¨
EvComComb:
ld b,(hl) ;+1 what
inc hl
ld a,(hl) ;+2 what
cp 44h ; F10
jp z,ComExit
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld de,ComLineWex
push de
cp 54h ; ªãàá®à ¢«¥¢®
jp z,ComLeft
cp 56h ; ªãàá®à ¢¯à ¢®
jp z,ComRight
cp 4Fh ; Del, 㤠«¨âì ᨬ¢®« ¢ ⥪. ¯®§¨æ¨¨
jp z,ComDel
cp 57h ; Home, ¢ ­ ç «® áâப¨
jp z,ComHome
cp 51h ; End, ¢ ª®­¥æ áâப¨
jp z,ComEnd
;
ld d,a
bit 5,b ; ¡¨â Ctrl
jr z,com_comb_next
cp 18h+80h ; Ctrl+O, ã¡à âì/¯®ª § âì ¯ ­¥«¨
jp z,hidden_panels
cp 15h+80h ; Ctrl+Y, ®ç¨áâ¨âì ª®¬-áâபã
jp z,com_clear
cp 12h+80h ; Ctrl+E ¯à¥¤. áâப  ¨áâ®à¨¨
jp z,history_prev
cp 2Bh+80h ; Ctrl+X á«¥¤. áâப  ¨áâ®à¨¨
jp z,history_next
cp 4Fh+80h ; Ctrl+Del, ®ç¨áâ¨âì ¨áâ®à¨î ª®¬ ­¤
jp z,alt_clear_history
; Enter
ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
and form_info + form_qview ; info, qview
jr nz,com_comb_ext
ld a,d
cp 28h+80h ; Ctrl+Enter, ¨¬ï/¯ãâì ¢ ª®¬-áâபã
jp z,copy_name_to_comline
cp 4Eh+80h ; Ctrl+Enter æ¨äà. ¯®«ï
jp z,copy_name_to_comline
;
cp 1Ah+80h ; Ctrl+[ ¯ãâì «¥¢®© ¯ ­¥«¨ ¢ ª®¬-áâபã
jp z,copy_left_path_panel_to_comline_alt
cp 1Bh+80h ; Ctrl+] ¯ãâì ¯à ¢®© ¯ ­¥«¨ ¢ ª®¬-áâபã
jp z,copy_right_path_panel_to_comline_alt
;
com_comb_next:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ld a,d
jr z,com_comb_next1
cp 58h ; ªãàá®à ¢¢¥àå
jp z,up
cp 52h ; ªãàá®à ¢­¨§
jp z,down
cp 53h ; PageDown
jp z,page_down
cp 59h ; PageUp
jp z,page_up
com_comb_ext:
pop de
ret
; ¯ ­¥«¨ ¢ëª«î祭ë
com_comb_next1:
cp 58h ; ªãàá®à ¢¢¥àå, ¯à¥¤. áâப  ¨áâ®à¨¨
jp z,history_prev
cp 52h ; ªãàá®à ¢­¨§, á«¥¤. áâப  ¨áâ®à¨¨
jp z,history_next
cp 59h ; PageUp, ¢ ­ ç «® ¨áâ®à¨¨
jp z,history_begin
cp 53h ; PageDown, ¢ ª®­¥æ ¨áâ®à¨¨
jp z,history_last
pop de
ret
; Šãàá®à ¢«¥¢® ­  ®¤­® ¬¥áâ®
ComLeft:ld a,(iy+2)
dec a
jp p,ComPrint
ld a,(iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
sub step ; è £ áªà®««¨­£ 
ret c ; ªãàá®à ¢ ªà ©­¥¬ «¥¢®¬ ¯®«®¦.
ld (iy+3),a ; X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
add a,step-1 ; è £ áªà®««¨­£ 
ComPrint:
ld (iy+2),a
jp PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
; Šãàá®à ¢¯à ¢® ­  ®¤­® ¬¥áâ®
ComRight:
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
add a,(iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
cp (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
ret z
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï
ld b,a
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
inc a
cp b
jr nz,ComPrint
inc (iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
sub step-1 ; è £ áªà®««¨­£ 
jr ComPrint
; ‡ ¡®© - 㤠«¨âì ᨬ¢®« «¥¢¥¥ ªãàá®à 
backspace:
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
or a
jr nz,backspac1
ld a,(iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
sub step ; è £ áªà®««¨­£ 
ret c
ld (iy+3),a
inc (iy+2) ;+2 ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
backspac1:
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
LD A,(IY+2) ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
ADD A,(IY+3) ;+3 ᬥé. áâப¨ §  «¥¢ë© ªà ©
ADD A,L
LD L,A
JR NC,$+3
INC H
INC HL
INC HL
INC HL
INC HL
INC HL
LD D,H
LD E,L
DEC DE
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
sub (iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
sub (iy+2) ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
jr z,$+7 ; ªãàá®à §  ª®­æ®¬ áâப¨
ld c,a
ld b,0
ldir ; ®¡­®¢¨âì ®áâ â®ª áâப¨
xor a
ld (de),a ; ¢ ª®­¥æ áâப¨
dec (iy+2) ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
dec (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
jp PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
; Delete - 㤠«¨âì ᨬ¢®« ¢ ⥪. ¯®§¨æ¨¨
ComDel: ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
inc a
add a,(iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ld d,h
ld e,l
dec de
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
sub (iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
sub (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
ret z ; ªãàá®à §  ª®­æ®¬ áâப¨
ld c,a
ld b,0
ldir ; ®¡­®¢¨âì ®áâ â®ª áâப¨
xor a
ld (de),a ; ¢ ª®­¥æ áâப¨
dec (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
jp PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
; Home - ¢ ­ ç «® áâப¨
ComHome:ld a,(move_home_end)
or a
jr nz,$+8
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
jp nz,home_list ; ¢ ­ ç «® ᯨ᪠ ä ©«®¢
;
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
add a,(iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
ret z
xor a ; X ¯®«®¦. ªãàá®à 
ld (iy+2),a ; X ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
ld (iy+3),a ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
jp ComPrint ; ¢ë¢¥á⨠áâப㠭  íªà ­
; End - ¢ ª®­¥æ áâப¨
ComEnd: ld a,(move_home_end)
or a
jr nz,$+8
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
jp nz,end_list ; ¢ ª®­¥æ ᯨ᪠ ä ©«®¢
;
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
sub (iy+3) ;+3 ᬥé. áâப¨ §  «¥¢ë© ªà ©
cp (iy+2) ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
ret z
add a,(iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
ld c,a
ld (iy+3),0 ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï
sub c
jr z,ComEndLp
jr nc,ComEndNIL
neg
ComEndLp:
inc (iy+3) ; X ᬥé. áâப¨ §  «¥¢ë© ªà ©
sub step ; è £ áªà®««¨­£ 
jr nc,ComEndLp
ComEndNIL:
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
sub (iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
jp ComPrint ; ¢ë¢¥á⨠áâப㠭  íªà ­
;-------------------------------------------------
; Žç¨áâ¨âì ¡ãä¥à ª®¬-áâப¨
;-------------------------------------------------
ClearComLine:
call clear_combuffer
jp PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
clear_combuffer:
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
clear_struct_inline:
xor a
ld b,(hl) ;+0 ¬ ªá. ¤«¨­  áâப¨
inc hl
ld (hl),a ;+1 á¡à. ä« £ ReadyString
inc hl
ld (hl),a ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
inc hl
ld (hl),a ;+3 ᬥé. áâப¨ §  «¥¢ë© ªà ©
inc hl
ld (hl),a ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
inc hl ;+5 ¡ãä¥à । ªâ. áâப¨
ld (hl),a
djnz $-2
ret
;---------------------------------------------------------------
; ‚뢮¤ ¯ã⨠¢ ª®¬-áâப¥ ­  íªà ­ + ­®¢ ï è¨à¨­  ¯®«ï ¢¢®¤ 
;---------------------------------------------------------------
print_compath:
; ®ç¨áâ¨âì áâ àë© ¯ãâì ­  íªà ­¥
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï ¢¢®¤ 
ld l,a
ld a,80
sub l
ld l,a ; è¨à¨­  ®ª­ 
ld h,1
ld de,1E00h ; Y/X ¯®«®¦.
ld a,(color_array+22) ; 梥⠪®¬-áâப¨
ld b,a
ld c,89h ; ®ç¨áâ¨âì ®ª­®
rst 08h
; ¢ë¢¥á⨠­®¢ë© ¯ãâì
ld de,1E00h ; Y/X ¯®«®¦. ª®¬-áâப¨
ld c,84h ; ãáâ. ªãàá®à
rst 08h
ld hl,(__path) ;  ¤à¥á ®¯¨á â¥«ï ¯ã⨠ ªâ. ¯ ­¥«¨
ld a,(hl) ; ¤«¨­  áâப¨
dec a
ld (YXpos+1),a ; X ¯®«®¦. ªãàá®à 
ld (EvComMouse1+1),a ; ­ ç «® ¯®«ï ¢¢®¤ 
dec a ; ¡¥§ ª®­æ. ¯à®¡¥« 
ld b,a
ld a,79 ; è¨à¨­  íªà ­  - 1
sub b
ld (ComLineWidth),a ; ­®¢ ï è¨à¨­  ¯®«ï ¢¢®¤  (48..76)
ld de,5 ; ᬥé. ¤® áâப¨
add hl,de
ld a,(color_array+22) ; 梥⠪®¬-áâப¨
ld e,a
push de
ld c,85h ; ¢ë¢®¤ áâப¨ á  âਡãâ ¬¨
rst 08h
pop de
ld a,">"
ld bc,0181h ; ᨬ¢®« á  âਡã⮬
rst 08h
jp PrnComLn ; ¢ë¢¥á⨠ª®¬-áâப㠭  íªà ­
; ”« £ ä®à¬ â  ¢áâ ¢«ï¥¬®£® ¨¬¥­¨ ms-dos/spec
; (§ î§ âì ¯à¨ ¢ë¯®«­¥­¨¨ ª®¬ ­¤­®© áâப¨)
format_name:
db 0
;-----------------------------------------------------------
; ‚áâ ¢¨âì ¯ãâì/¨¬ï ä ©«  ¢ ª®¬-áâபã (Ctrl+Enter)
; á ãáâ ­®¢ª®© 䮪ãá  ­  ª®¬-áâபã.
;-----------------------------------------------------------
put_name_to_comline:
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info+form_qview
ret nz
ld (format_name),a ; ä« £ ä®à¬ â  ¢áâ ¢«ï¥¬®£® ¨¬¥­¨
call print_keybar ; ®¡­®¢¨âì key-¡ à ¢ ­®à¬. ¢¨¤
ld de,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤  ª®¬-áâப¨
ld (CursorPos),de ; ¯®«®¦. ªãàá®à  ­  íªà ­¥
call copy_name_to_comline__ ; ¢áâ ¢¨âì áâபã
; 䮪ãá ­  ª®¬-áâபã (®â ¬ë誨)
enter_to_comline:
call ComLineI ; ¢ª«. ªãàá®à
jp EvComLine ; ¢å®¤ ¢ ª®¬-áâபã
;-----------------------------------------------------------
; ‚áâ ¢¨âì ¯ãâì/¨¬ï ä ©«  ¢ ª®¬-áâபã (Ctrl+Enter)
; ¡¥§ ãáâ ­®¢ª¨ 䮪ãá  ­  ª®¬-áâபã.
;-----------------------------------------------------------
copy_name_to_comline:
call ResILCr ; ¢ëª«. ªãàá®à
call copy_name_to_comline__
jp ComLineI ; ¢ª«. ªãàá®à
copy_name_to_comline__:
ld iy,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
cp max_len_comline ; 126 ;254
ret z ; áâப  § ¯®«­¥­ 
ld hl,PrnComLn ; â®çª  ¢ë室  (¢ë¢¥á⨠áâபã)
push hl
ld hl,status_string+4 ; ¨¬ï ä ©«  áâ âãá­®© áâப¨
ld a,(hl)
cp "." ; ".."
jr z,copy_path_to_comline
; ᪮¯¨à®¢ âì ¨¬ï ä ©« 
ld b,12 ; ¬ ªá. ¤«¨­  ¨¬¥­¨
ld a,(hl)
cp " "
jp z,put_char
inc hl
call put_char
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
cp max_len_comline ; 126 ;254
ret z
djnz $-16
copy_name_to_comline1__:
ld a," " ; ª®­æ¥¢®© ¯à®¡¥«
jp put_char
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ¯ãâì  ªâ. ¯ ­¥«¨ ¢ ª®¬-áâபã
;-----------------------------------------------------------
copy_path_to_comline:
ld hl,(char_disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
ld de,(__buff) ; ¯ãâì  ªâ. ¯ ­¥«¨
call copy_path_to_comline1
jr copy_name_to_comline1__ ; ¢áâ ¢¨âì ª®­æ¥¢®© ¯à®¡¥«
;-----------------------------------------------------------
; ‚áâ ¢¨âì ¯ãâì «¥¢®© ¯ ­¥«¨ ¢ ª®¬-áâபã (Ctrl+[)
;-----------------------------------------------------------
copy_left_path_panel_to_comline:
ld hl,EvComLine ; ¢å®¤ ¢ ª®¬-áâபã
push hl
; ‚áâ ¢¨âì ¯ãâì ¢ ª®¬-áâப㠡¥§ ãáâ ­®¢ª¨ 䮪ãá 
copy_left_path_panel_to_comline_alt:
call ResILCr ; ¢ëª«. ªãàá®à
ld hl,disk_left ; ¤¨áª «¥¢®© ¯ ­¥«¨
ld de,buff_left ; ¯ãâì «¥¢®© ¯ ­¥«¨ buff_right
copy_path_panel__:
call copy_path_to_comline1
jp ComLineI ; ¢ª«. ªãàá®à
;-----------------------------------------------------------
; ‚áâ ¢¨âì ¯ãâì ¯à ¢®© ¯ ­¥«¨ ¢ ª®¬-áâபã (Ctrl+])
;-----------------------------------------------------------
copy_right_path_panel_to_comline:
ld hl,EvComLine ; ¢å®¤ ¢ ª®¬-áâபã
push hl
; ‚áâ ¢¨âì ¯ãâì ¢ ª®¬-áâப㠡¥§ ãáâ ­®¢ª¨ 䮪ãá 
copy_right_path_panel_to_comline_alt:
call ResILCr ; ¢ëª«. ªãàá®à
ld hl,disk_right ; ¤¨áª ¯à ¢®© ¯ ­¥«¨
ld de,buff_right ; ¯ãâì ¯à ¢®© ¯ ­¥«¨
jr copy_path_panel__
; ‘ª®¯¨à®¢ âì ¯ãâì ¢ ª®¬-áâபã
; ¢å®¤: hl=¤¨áª ¯ ­¥«¨
; de¯ãâì ¯ ­¥«¨
copy_path_to_comline1:
ld iy,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
cp max_len_comline ; 126 ;254
ret nc ; áâப  § ¯®«­¥­ 
ld bc,PrnComLn ; â®çª  ¢ë室  (¢ë¢¥á⨠áâபã)
push bc
push de ; á®åà. ¯ãâì «¥¢®©/¯à ¢®© ¯ ­¥«¨
ld a,(hl) ; ¡ãª¢  ¤¨áª  «¥¢®©/¯à ¢®© ¯ ­¥«¨
inc hl
call put_char
ld a,":"
call put_char
pop hl ; ¢®ááâ. ¯ãâì
ld a,(hl)
or a
jr z,$+14 ; ª®­¥æ áâப¨ ¯ãâ¨
call put_char
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
cp max_len_comline ; 126 ;254
ret z
inc hl
jr $-14
;
ld a,'\'
dec hl
cp (hl) ; ª®à¥­ì ?
call nz,put_char ; ­¥â, ¢áâ ¢¨âì "\"
ret
; ‚áâ ¢¨âì ®¤¨­ ᨬ¢®« ¢ ª®¬-áâபã.
; ‘¨¬¢®« ¢á¥£¤  ¢áâ ¢«ï¥âáï, ¢ ­¥§ ¢¨á¨¬®áâ¨
; ®â ⥪ã饣® ०¨¬  "¢áâ ¢ª /§ ¬¥­ ".
; ¢å®¤: a=ᨬ¢®«
put_char:
push hl
ex af,af' ; á®åà. ᨬ¢®«
res 7,(iy+1) ;+1 ä« £ ReadyString
ld a,1 ; ¢áâ ¢ª 
rrca ; ¢¯à ¢® (¬«.¡¨â -> ¯¥à¥­®á)
or (iy+1)
ld (iy+1),a ;+1 ä« £ ReadyString
ld a,(iy+4) ; InputSymb
cp (iy+0) ; Max len
jr nz,ILn1__
ld a,(iy+2)
add a,(iy+3)
cp (iy+0)
ret nc
bit 7,(iy+1)
ret nz
ILn1__: ld a,(iy+4)
sub (iy+3)
sub (iy+2)
jr z,no_insrt1
dec (iy+4)
bit 7,(iy+1)
jr z,no_insrt1
inc (iy+4)
; ¢¢®¤ ¢ á¥à¥¤¨­ã ⥪áâ  (¢áâ ¢ª )
ld c,a
ld b,0
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ld d,h
ld e,l
dec hl
lddr
no_insrt1:
ld hl,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
add a,(iy+3)
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ex af,af'
ld (hl),a ; ᨬ¢®« ¢ ª®¬-áâபã
pop hl
inc (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
inc (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
ld a,(ComLineWidth) ; è¨à¨­  ¯®«ï ¢¢®¤ 
cp (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
ret nz
; ªãàá®à §  ¯à ¢ë¬ ªà ¥¬ ¯®«ï ¢¢®¤ 
inc (iy+3) ; ᬥé. áâப¨ §  «¥¢ë© ªà ©
dec (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
ret
;-------------------------------------------------
; ‚áâ ¢¨âì áâப㠨§ history-¡ãä¥à 
; ¢å®¤: de=áâàãªâãà  áâப¨:
; +0=¤«¨­  áâப¨, +1=áâப 
;-------------------------------------------------
put_from_history:
call clear_combuffer ; ®ç¨áâ¨âì áâப㠢¢®¤ 
ld iy,ComLineBuff ; áâàãªâãà  ¡ãä¥à 
ld a,(de) ;+0 ¤«¨­  áâப¨
ld b,a
inc de
ld a,(de)
call put_char
djnz $-5
jp PrnComLn ; ¢ë¢¥á⨠áâப㠭  íªà ­
; ‚ë§®¢ ¨§ á ¬®© ª®¬-áâப¨
alt_clear_history:
call ClearComLine
jr $+5
;-------------------------------------------------
; Žç¨áâ¨âì ¨áâ®à¨î ª®¬ ­¤
;-------------------------------------------------
clear_history:
call clear_combuffer ; ®ç¨áâ¨âì áâப㠢¢®¤ 
xor a
ld (history_count),a ; ç¨á«® áâப ¢ history
ld (history_cur_string),a ; ­®¬¥à ⥪. áâப¨ history
ld hl,history_buff ; ª®­¥æ ¯®á«. áâப¨
ld (history_end),hl
ret
;///////////////////////////////////////////////////////////////////////////////
;
; History Š®¤
;
;///////////////////////////////////////////////////////////////////////////////
history_count:
db 0 ; ç¨á«® áâப ¢ ¨áâ®à¨¨
;
history_cur_string:
db 0 ; ­®¬¥à ⥪. áâப¨ ¨áâ®à¨¨
;
history_end:
dw history_buff ; ª®­¥æ ¯®á«¥¤. áâப¨ ¨áâ®à¨¨
;-------------------------------------------------
; ­ ç «® ¨áâ®à¨¨
;-------------------------------------------------
history_begin:
ld a,(history_count)
or a
ret z ; ­¥â áâப
xor a
ld (history_cur_string),a
jr history_copy ; ¯¥à¥©â¨ ­  1-î áâபã
;-------------------------------------------------
; ª®­¥æ ¨áâ®à¨¨
;-------------------------------------------------
history_last:
ld a,(history_count)
or a
ret z ; ­¥â áâப
ld (history_cur_string),a ; ãáâ. ¯®á«¥¤. ¯ãáâãî áâபã
jp ClearComLine ; ¢¥à­ãâì ¯ãáâãî áâபã
;-------------------------------------------------
; ‘«¥¤ãîé ï áâப 
;-------------------------------------------------
history_next:
ld a,(history_count)
or a
ret z ; ­¥â áâப
dec a
ld b,a
ld hl,history_cur_string
ld a,(hl)
cp b
jr c,$+7
inc b
ld (hl),b
jp ClearComLine ; ¢¥à­ãâì ¯ãáâãî áâபã
;
inc a
ld (hl),a
jr history_copy
;-------------------------------------------------
; <20>।ë¤ãé ï áâப 
;-------------------------------------------------
history_prev:
ld a,(history_count)
or a
ret z ; ­¥â áâப
ld b,a
ld hl,history_cur_string
ld a,(hl)
or a
jr z,history_copy ; 㯥૨áì ¢ ­ ç «® ¨áâ®à¨¨
cp b
jr c,$+3
ld a,b
dec a
ld (hl),a
; ¯¥à¥©â¨ ­  áâப㠯® ¥¥ ¨­¤¥ªáã
history_copy:
call history_index
jp put_from_history ; áâப㠨§ history ¢ ¡ãä¥à ª®¬-áâப¨
; ¢å®¤:  =¨­¤¥ªá áâப¨
; ¢ë室: de=áâப  (¥¥ áâàãªâãà  ¨§ history-¡ãä¥à )
history_index:
ld b,0
ld hl,history_buff ; ¡ãä¥à ¨áâ®à¨¨
or a ; ¨­¤¥ªá áâப¨
jr z,hist_index ; 1-ï áâப  ¨áâ®à¨¨
ld c,(hl) ; à §¬¥à áâப¨
inc c
add hl,bc ; ­  á«¥¤. áâபã
dec a
jr nz,$-4
hist_index:
ex de,hl
ret
;-----------------------------------------------------------
; „®¡ ¢¨âì ­®¢ãî áâப㠢 ª®­¥æ ¡ãä¥à  ¨áâ®à¨¨.
; …᫨ áâப  ­¥ ¢«¥§ ¥â, 㤠«ïîâáï á ¬ë¥ áâ àë¥ áâப¨ ¤®
; â¥å ¯®à, ¯®ª  ¯®ï¢¨âáï ¤®áâ â®ç­® ¬¥áâ  ¤«ï ­®¢®© áâப¨.
;-----------------------------------------------------------
history_adding:
ld de,ComLineBuff+4 ; áâàãªâãà  áâப¨
call history_compare ; áà ¢­¨âì áâப¨
ret z ; 㦥 ¥áâì â ª ï áâப 
ld bc,(history_end) ;  ¤à¥á ª®­æ  ¯®á«. áâப¨
ld hl,history_buff+history_size ;  ¤à¥á ª®­æ  ¡ãä¥à 
and a
sbc hl,bc ; hl=à §¬¥à ᢮¡. ¬¥áâ 
ld a,(de) ; ¤«¨­  ­®¢®© áâப¨
inc a
ld c,a
xor a
ld b,a
sbc hl,bc ; 㬥é. ¢ ᢮¡. ¬¥á⥠¡ãä¥à  ¨áâ®à¨¨ ?
jr nc,history_add_ok ; ¤ 
; 㤠«¨âì ¯¥à¢ãî (á ¬ãî áâ àãî) áâப㠨§ ¡ãä¥à 
;push de
ld de,history_buff ; ¡ãä¥à ¨áâ®à¨¨
ld a,(de) ; ¤«¨­  1-© áâப¨
inc a
ld c,a
xor a
ld b,a
ld hl,(history_end)
sbc hl,bc
ld (history_end),hl ; ª®­¥æ ¯®á«. áâப¨
ld l,e ; hl=history_buff
ld h,d
add hl,bc ; ­ ç «® 2-© áâப¨
push hl
ld hl,history_size ; à §¬¥à ¡ãä¥à 
and a
sbc hl,bc
ld c,l ; à §¬¥à ®áâ âª  ¡ãä¥à 
ld b,h
pop hl ; ­ ç «® 2-© áâப¨
ldir
ld hl,history_count
dec (hl) ; --ç¨á«® áâப ¢ history
;pop de ; ¢®ááâ.  ¤à¥á ComLineBuff+4
jr history_adding
;
history_add_ok:
ld hl,(history_end) ;  ¤à¥á ª®­æ  ¯®á«. áâப¨
ex de,hl
ldir
ld (history_end),de ; ª®­¥æ ¯®á«. áâப¨
ld hl,history_count
ld a,(hl)
ld (history_cur_string),a ; ⥪. áâப  history
inc (hl) ; ++ç¨á«® áâப ¢ history
ret
; ‘à ¢­¨âì áâப¨. …᫨ áâப¨ à ¢­ë, â® ¯¥à¥¬¥áâ¨âì
; ⥪. áâப㠢 ª®­¥æ ¨áâ®à¨¨.
; ¢å®¤: de=áâàãªâãà  áâப¨: +0=¤«¨­  áâப¨, +1=áâப 
; ¢ë室: Z-¥áâì áâப 
; NZ-­¥â áâப¨
history_compare:
ld hl,history_count
ld b,(hl) ; ç¨á«® áâப ¢ history
dec b
inc b
jr z,hist_comp_quit ; history-¡ãä¥à ¯ãá⮩
ex af,af'
xor a ; á¡à. ¨­¤¥ªá áà ¢­. áâப¨
ex af,af'
ld hl,history_buff ; ¡ãä¥à ¨áâ®à¨¨
history_comp_loop:
push de
ld (move_cur_str+1),hl ; ⥪. áâப  ¨áâ®à¨¨
ld c,(hl) ; ¤«¨­  ⥪. áâப¨ history
ld a,(de) ; ¤«¨­  ­®¢®© áâப¨
inc hl
inc de
cp c
jr z,hist_comp_loop ; áâப¨ ®¤¨­ ª®¢®© ¤«¨­ë
ld a,l
add a,c
ld l,a
ld a,h
adc a,0
ld h,a
jr hist_comp_next
;
; áà ¢­¨âì áâப¨
hist_comp_loop:
ld a,(de)
cp (hl)
jr nz,hist_comp_notequal ; áâப¨ ­¥ à ¢­ë
inc hl
inc de
dec c
jr nz,hist_comp_loop
; áâப¨ à ¢­ë
jr move_to_end_history ; ­ ©¤¥­­ãî áâப㠢 ª®­¥æ ¨áâ®à¨¨
;
hist_comp_notequal:
inc hl
dec c
jr nz,$-2 ; ¤® ª®­æ  áâப¨
hist_comp_next:
pop de
ex af,af'
inc a ; ++¨­¤¥ªá áà ¢­. áâப¨
ex af,af'
djnz history_comp_loop
hist_comp_quit:
xor a
dec a ; NZ-ä« £
ret
; ¯¥à¥¬¥áâ¨âì ⥪. áâப㠢 ª®­¥æ ¨áâ®à¨¨
move_to_end_history:
ld a,(history_count) ; ç¨á«® áâப ¨áâ®à¨¨
ld c,a
dec c
ex af,af' ; ¨­¤¥ªá ­ ©¤¥­­®© áâப¨
cp c
jr nc,not_move_to_end ; ­ ©¤¥­­ ï áâப  㦥 ¢ ª®­æ¥
; á®åà. áâப㠢® ¢à¥¬. ¡ãä¥à¥
move_cur_str:
ld hl,0 ; ⥪. áâப  ¨áâ®à¨¨
ld de,work_buffer ; ¢à¥¬. ¡ãä¥à
ld c,(hl) ;+0 ¤«¨­  áâப¨
inc c ; ãç¥áâì ï祩ªã ¤«¨­ë áâப¨
xor a
ld b,a
push bc
push hl
ldir
pop de ; ªã¤  (­  ¬¥áâ® áâ à®© áâப¨)
pop bc
; ᤢ¨­ãâì ®áâ â®ª ¡ãä¥à  ­  ¬¥áâ® á®åà. áâப¨
push hl
ld hl,(history_end) ; ª®­¥æ ¯®á«. áâப¨ ¨áâ®à¨¨
and a
sbc hl,de
and a
sbc hl,bc
ld c,l ; ¢¥«¨ç¨­  ᤢ¨£ 
ld b,h
pop hl ; ®âªã¤ 
ldir
; ¢®ááâ. áâப㠨§ ¢à¥¬. ¡ãä¥à  ¢ ª®­¥æ ¨áâ®à¨¨
ld hl,work_buffer ; ¢à¥¬. ¡ãä¥à
ld c,(hl)
inc c
ld b,a
ldir
not_move_to_end:
ld a,(history_count)
dec a
ld (history_cur_string),a ; ⥪. áâப  history
xor a ; Z ä« £
pop de
ret