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

363 lines
8.7 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.

;-------------------------------------------------
; ˆ­¨æ¨ «¨§ æ¨ï ¬ë誨 ¨ ¢ë¢®¤ ¥¥ ­  íªà ­
;-------------------------------------------------
init_mouse:
xor a
rst 30h
jr show_mouse
;-------------------------------------------------
; ‚뢥á⨠ªãàá®à ¬ë誨
;-------------------------------------------------
show_mouse:
ld a,1
rst 30h
ret
;-------------------------------------------------
; ‘ªàëâì ªãàá®à ¬ë誨
;-------------------------------------------------
hide_mouse:
ld a,2
rst 30h
ret
;-------------------------------------------------
; <20>®«ãç¨âì ­®¢ãî ¨­ä®à¬ æ¨î ® ¬ë誥
;-------------------------------------------------
get_mouse_info:
ld a,3 ; ¯®«ãç¨âì ª®®à¤. ¬ë誨
rst 30h
ret
;-------------------------------------------------
; †¤¥¬, ¯®ª  ­ ¦ âë ¡ãâ®­ë ¬ë誨
;-------------------------------------------------
get_fire:
call get_mouse_info
and 3
jr nz,$-5 ; ¡ãâ®­ë ­ ¦ âë
ret
;---------------------------------------------------------------------
; Ž¡à ¡®âª  ­ ¦ â¨ï ¡ãâ®­®¢ ¬ë誨 ­  ¯ ­¥«ïå ¬¥­¥¤¦¥à 
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨.
; d=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
;---------------------------------------------------------------------
buttons_press:
ld a,d
ld (buttons_bits),a ; á®åà. ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
ld a,h
cp 27 ; ­¨¦­ïï £à ­¨æ  ᯨ᪠
jp nc,event_keybar ; â¥áâ ­  comline ¨ key-¡ à
or a ; 0-ï áâப 
jp z,main_menu ; £®à¨§. Œ¥­î
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call mouse_set_active_panel ; ãáâ. ¬ë誮©  ªâ. ¯ ­¥«ì
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info+form_qview
ret nz ; info, qviev
ld a,h ; Y ª®®à¤¨­ â  ¬ë誨
cp 2 ; ¢¥àå­ïï £à ­¨æ  ᯨ᪠
jp c,event_title ; â¥áâ ­  § £®«®¢®ª ¯ ­¥«¨
sub 2
ld b,l ; á®åà. X ª®®à¤¨­ âã
ld l,a ; Y ª®®à¤¨­ â  ¬ë誨
ld h,0
;
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,e
or d
jp z,get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(cur_panel) ; ⥪.  ªâ. ¯ ­¥«ì
ld c,a ; 0=«¥¢ ï, 80h=¯à ¢ ï
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 0,a ; full, full-ᯥª
jr nz,event_set__ ; ­¨ç¥£® ­¥ ¬¥­ïâì
push de
call event_calc_pointer ; ¢ëç¨á«¨âì ¯®«®¦. 㪠§ â¥«ï
pop de
event_set__:
; hl=¯®«®¦. 㪠§ â¥«ï ¯® ª®®à¤. ¬ë誨
; de=all_files
call cmphlde ; áà ¢­¨âì hl á de
jr nc,event_set_end ; 㪠§ â¥«ì ¢ ª®­¥æ ᯨ᪠
; ¬ë誠 ¢ ¯à¥¤¥« å ᯨ᪠ (­¥ ¢ ¯ãá⮬ ¬¥á⥠ª®«®­ª¨)
call A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
ld a,(buttons_bits) ; ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
bit 1,a ; «¥¢ë© ?
jr nz,button_left ; ¤ 
; ¯®áâ ¢¨âì/á­ïâì ¢ë¤¥«¥­¨¥ ä ©« 
call A0E13
jp get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
;
; 㪠§ â¥«ì ¢ ª®­¥æ ᯨ᪠
event_set_end:
dec de
ex de,hl ; hl = all_files-1
call A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
jp get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
;
button_left:
call get_fire
ei
ld b,9 ; ®¦¨¤ ­¨¥
push bc
call get_mouse_info ; ç⥭¨¥ á®áâ®ï­¨ï ¬ë誨
pop bc
jr nz,double_press ; ª­®¯ª¨ ­ ¦ âë
halt
djnz $-8
ret
; ¤¢®©­®© ª«¨ª
double_press:
xor a
ld (MSbutt),a ; á¡à. áâ âãá ¡ãâ®­®¢
jp Press_Enter ; enter.asm
;-----------------------------------------------------------
; ‚ëç¨á«¥­¨¥ ¯®«®¦¥­¨ï 㪠§ â¥«ï ¯® ª®®à¤¨­ â ¬ ¬ë誨
; ¤«ï "ªà âª®£®" ¨ "á।­¥£®" ä®à¬ â®¢ ¯ ­¥«¥©.
;
; ¢å®¤: a=ä®à¬ â ¯ ­¥«¨
; hl=Y ª®®à¤¨­ â  ¬ë誨
; b=X ª®®à¤¨­ â  ¬ë誨
; c=⥪.  ªâ. ¯ ­¥«ì (0=«¥¢ ï, 80h=¯à ¢ ï)
; ¢ë室: hl=¯®«®¦. 㪠§ â¥«ï
;-----------------------------------------------------------
event_calc_pointer:
ld de,files_per_colon ; 25 ä ©«®¢ ­  ª®«®­ªã
and form_brief
ld a,b ; X ª®®à¤¨­ â 
jr z,event_medium__
; "ªà âª¨©" ä®à¬ â
dec c ;  ªâ. «¥¢ ï ¯ ­¥«ì ?
inc c
; «¥¢ ï ¯ ­¥«ì
ld c,14 ; ­ ç «® á।­¥© ª®«®­ª¨
ld b,27 ; ­ ç «® ¯à ¢®© ª®«®­ª¨
jr z,event_calc__ ; ¤ , «¥¢ ï
; ¯à ¢ ï ¯ ­¥«ì
ld c,54 ; ­ ç «® á।­¥© ª®«®­ª¨
ld b,67 ; ­ ç «® ¯à ¢®© ª®«®­ª¨
event_calc__:
cp c ; ­ ç «® á।­¥© ª®«®­ª¨
ret c
add hl,de ; ª®®à¤.¬ë誨 + ä ©«®¢ ­  ª®«®­ªã
event_calc1__:
cp b ; ­ ç «® ¯à ¢®© ª®«®­ª¨
ret c
add hl,de
ret
;
; "á।­¨©" ä®à¬ â
event_medium__:
dec c ;  ªâ. «¥¢ ï ¯ ­¥«ì ?
inc c
; «¥¢ ï ¯ ­¥«ì
ld b,20 ; ­ ç «® á।­¥© ª®«®­ª¨
jr z,event_calc1__ ; ¤ , «¥¢ ï
; ¯à ¢ ï ¯ ­¥«ì
ld b,60 ; ­ ç «® á।­¥© ª®«®­ª¨
jr event_calc1__
;-----------------------------------------------------------
; “áâ ­®¢ª  ¬ë誮©  ªâ¨¢­®© ¯ ­¥«¨
;
; ¢å®¤: hl=Y/X ª®®à¤¨­ âë
; ¢ë室: h=Y ª®à४â. ª®®à¤¨­ â 
;-----------------------------------------------------------
mouse_set_active_panel:
ld a,(cur_panel) ; 0=«¥¢ ï, 80h=¯à ¢ ï
or a
ld a,l
jr nz,mouse_set__ ;  ªâ. ¯à ¢ ï
cp 40 ; ­ ç «® ¯à ¢®© ¯ ­¥«¨
call nc,mouse_set_panel ; ãáâ.  ªâ. ¯ ­¥«ì
ret
mouse_set__:
cp 40 ; ­ ç «® ¯à ¢®© ¯ ­¥«¨
call c,mouse_set_panel ; ãáâ.  ªâ. ¯ ­¥«ì
ret
;
mouse_set_panel:
push hl ; á®åà. ª®®à¤¨­ âë ¬ë誨
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 ; ¢ë¢®¤ ¯ã⨠⥪. ¯ ­¥«¨ á ¨­¢¥àᨥ©
call print_compath ; ¢ë¢®¤ ¯ã⨠¢ ª®¬-áâப¥
pop hl
ret
;-----------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ­  â¨â«¥ ¯ ­¥«¨
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨
;-----------------------------------------------------------
event_title:
ld a,(buttons_bits) ; ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
bit 0,a ; ¯à ¢ë© ¡ãâ®­ ?
jr nz,event_title_right ; ¤ 
ld a,l ; X ª®®à¤¨­ â 
cp 1 ; ¡ãª¢  á®àâ¨à®¢ª¨
jp z,select_left_drive ; ¬¥­î ¢ë¡®à  ¤¨áª®¢
cp 41 ; ¡ãª¢  á®àâ¨à®¢ª¨
jp z,select_right_drive ; ¬¥­î ¢ë¡®à  ¤¨áª®¢
cp 2 ;  «¥¢®© ¯ ­¥«¨
jr z,event_title_sort
cp 42 ;  ¯à ¢®© ¯ ­¥«¨
jr z,event_title_sort
; “ª § â¥«ì ­  áâப㠢¢¥àå
call up ; 㪠§ â¥«ì ­  áâப㠢¢¥àå
jr event_title_wait ; § ¤¥à¦ª  ¯¥à¥¬¥é. 㪠§ â¥«ï
;
; ‹¨áâ ­¨¥ áâà ­¨æ¥©
event_title_right:
call page_up ; PageUp
call get_fire
jr event_title_wait
;-----------------------------------------------------------
; <20>  áâப㠢­¨§, ¥á«¨ ¬ë誠 ­  27-© áâப¥
;-----------------------------------------------------------
event_footerline:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
push bc
call mouse_set_active_panel ; ãáâ. ¬ë誮©  ªâ. ¯ ­¥«ì
pop bc
bit 0,c ; ¯à ¢ë© ¡ãâ®­ ?
jr nz,event_foot_right ; ¤ 
; “ª § â¥«ì ­  áâப㠢­¨§
call down
event_title_wait:
call show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì (ª®£¤  ­¥ ¢ë¢®¤ïâ up/down)
ei
halt
halt
halt
ret
;
; ‹¨áâ ­¨¥ áâà ­¨æ¥©
event_foot_right:
call page_down ; PageDown
call get_fire
jr event_title_wait
;-----------------------------------------------------------
; Ž¡à ¡®âª  ᨬ¢®«  "áâ५ª " á®àâ¨à®¢ª¨ ¯ ­¥«¥©
;-----------------------------------------------------------
event_title_sort:
ld hl,sort_type
ld c,(hl) ; n/x/.. ¡ãª¢  á®àâ¨à®¢ª¨
ld a,"u"
cp c ; unsort ?
call nz,sorting_list ; ®¡­®¢¨âì ¯ ­¥«ì á ­®¢®© á®àâ¨à®¢ª®©
call show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì
jp get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
;---------------------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ­  key-¡ à¥
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨
;---------------------------------------------------------------------
event_keybar:
db 3Eh ; ld a,..
buttons_bits:
db 0 ; ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
ld c,a
ld a,h
cp 27 ; Y ª®®à¤¨­ â 
jr z,event_footerline
bit 0,c ; ¯à ¢ë© ¡ãâ®­ ?
ret nz ; ¤ 
ld a,h
cp 31 ; Y ª®®à¤¨­ â 
jp nz,event_comline ; â¥áâ ­  ª®¬. áâபã
ld a,l ; X ª®®à¤¨­ â 
push af
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï"
pop af
cp 8
ret c; ; F1 ¯ã­ªâ
cp 16
jp c,user_menu ; F2 ¯ã­ªâ
cp 24
jp c,file_viewer ; F3 ¯ã­ªâ
cp 32
ret c; ; F4 ¯ã­ªâ
cp 40
jp c,copy ; F5 ¯ã­ªâ
cp 48
jp c,rename ; F6 ¯ã­ªâ
cp 56
jp c,make_folder ; F7 ¯ã­ªâ
cp 64
jp c,delete ; F8 ¯ã­ªâ
cp 72
jp nc,quit ; F10 ¯ã­ªâ
; F9 ¯ã­ªâ
jp main_menu
;---------------------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ­  ª®¬ ­¤­®© áâப¥
;---------------------------------------------------------------------
event_comline:
cp 30 ; Y ¯®«®¦. ª®¬-áâப¨
ret nz
ld a,(EvComMouse1+1) ; X ­ ç «® ¯®«ï ¢¢®¤  ª®¬-áâப¨
ld h,a
push hl ; l=X ª®®à¤¨­ â 
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï"
pop hl
ld a,l
sub h
ret c ; ¬ë誠 «¥¢¥¥ áâப¨ ¢¢®¤ 
ld de,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤  ª®¬-áâப¨
ld (CursorPos),de
ld iy,ComLineBuff ; áâàãªâãà  ¡ãä¥à  ª®¬-áâப¨
jp enter_to_comline