mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 09:21:37 +03:00
1226 lines
28 KiB
NASM
Executable File
1226 lines
28 KiB
NASM
Executable File
; Š« ¢¨è¨ ã¯à ¢«¥¨ï ª®¬-áâப¨:
|
||
;
|
||
; 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
|