mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
1738 lines
32 KiB
NASM
Executable File
1738 lines
32 KiB
NASM
Executable File
; Ž¡à ¡®â稪¨ ƒ®à¨§. ¬¥î, Pull-¬¥î, Œ¥î ¢ë¡®à ¤¨áª®¢.
|
||
; ’ ª¦¥ ᮤ¥à¦¨â ¯/¯à®£à ¬¬ã áâனª¨ ¬¥â®ª "û" ¯ãªâ®¢ ¬¥î.
|
||
;
|
||
|
||
|
||
|
||
|
||
; <20>®¬¥à ¯ãªâ®¢
|
||
; Left
|
||
cmLBrief equ 0
|
||
cmLMed equ cmLBrief+1
|
||
cmLFull equ cmLMed+1
|
||
cmLInfo equ cmLFull+1
|
||
cmLQview equ cmLInfo+1
|
||
cmLName equ cmLQview+1
|
||
cmLExt equ cmLName+1
|
||
cmLDate equ cmLExt+1
|
||
cmLSize equ cmLDate+1
|
||
cmLUnsort equ cmLSize+1
|
||
cmLFilter equ cmLUnsort+1
|
||
cmLChangeDrv equ cmLFilter+1
|
||
; Files
|
||
cmHelp equ cmLChangeDrv+1
|
||
cmUsrMenu equ cmHelp+1
|
||
cmView equ cmUsrMenu+1
|
||
cmEdit equ cmView+1
|
||
cmCopy equ cmEdit+1
|
||
cmRename equ cmCopy+1
|
||
cmMkFolder equ cmRename+1
|
||
cmDelete equ cmMkFolder+1
|
||
cmAttrib equ cmDelete+1
|
||
cmSelGroup equ cmAttrib+1
|
||
cmUSelGroup equ cmSelGroup+1
|
||
cmQuit equ cmUSelGroup+1
|
||
; Commands
|
||
cmFind equ cmQuit+1
|
||
cmVolume equ cmFind+1
|
||
cmSwap equ cmVolume+1
|
||
cmPanelsOn equ cmSwap+1
|
||
cmNullTRD equ cmPanelsOn+1 ; á®§¤ âì ¯ãá⮩ TRD image
|
||
cmCopyTRD equ cmNullTRD+1 ; TRD image -> Disk
|
||
cmSaveTRD equ cmCopyTRD+1 ; Disk -> TRD image
|
||
; Options
|
||
cmInterface equ cmSaveTRD+1
|
||
cmConfirm equ cmInterface+1
|
||
cmColors equ cmConfirm+1
|
||
cmHighlight equ cmColors+1
|
||
cmViewSet equ cmHighlight+1
|
||
cmEditSet equ cmViewSet+1
|
||
cmSaveSetup equ cmEditSet+1
|
||
; Right
|
||
cmRBrief equ cmSaveSetup+1
|
||
cmRMed equ cmRBrief+1
|
||
cmRFull equ cmRMed+1
|
||
cmRInfo equ cmRFull+1
|
||
cmRQview equ cmRInfo+1
|
||
cmRName equ cmRQview+1
|
||
cmRExt equ cmRName+1
|
||
cmRDate equ cmRExt+1
|
||
cmRSize equ cmRDate+1
|
||
cmRUnsort equ cmRSize+1
|
||
cmRFilter equ cmRUnsort+1
|
||
cmRChangeDrv equ cmRFilter+1
|
||
|
||
; ä« £¨ ¬ થ஢ ¯ãªâ®¢ ¬¥î
|
||
CTnodef equ 0 ; "¯®-㬮«ç ¨î" ¥ ¢ë¤¥«¥®
|
||
CTdef equ 1 ; "¯®-㬮«ç ¨î" ¢ë¤¥«¥® "û"
|
||
|
||
|
||
LC000 equ 0C000h ; ¤à¥á ¡ãä¥à ®ª
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î
|
||
BoxData:
|
||
CurBox: dw 0 ;+0,+1
|
||
Xo: db 0
|
||
Xi: db 0
|
||
Ypos: db 0 ; ¯®«®¦.
|
||
Xlen: db 0 ; è¨à¨
|
||
|
||
|
||
|
||
CurMenu:db 0 ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
CurMBox:db 0 ; Current mark MenuBox
|
||
BarFlag:db 0 ; Flag barinvert (0=¥â, 1=¤ )
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ’ ¡«¨æ £®à¨§®â «ì®£® Œ¥î
|
||
; ä®à¬ â: +0 - Xo coord
|
||
; +1 - Xi coord
|
||
; +2 - ª®¤ hot-ª« ¢¨è¨
|
||
; +3,4 - ¤à¥á ®¯¨á â¥«ï ¢¥àâ. ¬¥î
|
||
;-----------------------------------------------------------
|
||
BarTabl:ds 5*5 ; ¡«®ª ¯ãªâ * ç¨á«® ¯ãªâ®¢ £®à. ¬¥î
|
||
db 80h ; ª®¥æ â ¡«¨æë
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ’ ¡«¨æ ¢¥à⨪ «ìëå ¬¥î
|
||
; ä®à¬ â: <20>®«®¦¥¨¥ ®ª ¬¥î:
|
||
; +0 - Xo coord
|
||
; +1 - Xi coord
|
||
; +2 - Yo coord
|
||
; +3 - Yi coord
|
||
; +4 - <20>®«®¦¥¨¥ ¯ãªâ ¬¥î:
|
||
; +0 - Xo coord
|
||
; +1 - Xi coords
|
||
; +2 - Y coords
|
||
; +3 - ®¬¥à ª®¬ ¤ë
|
||
; +4 - hot-ª« ¢¨è
|
||
; +5 - ®¬¥à ª®â¥ªáâ
|
||
;-----------------------------------------------------------
|
||
BoxTabl:ds 4 ; +0..+3
|
||
ds 6*26 ; ¡«®ª ¯ãªâ * ¬ ªá. ç¨á«® ¯ãªâ®¢
|
||
db 0 ; ª®¥æ â ¡«¨æë
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;///////////////////////////////////////////////////////////
|
||
; ‚ë§®¢ ƒ®à¨§®â «ì®£® Œ¥î
|
||
;///////////////////////////////////////////////////////////
|
||
main_menu:
|
||
in a,(SLOT3)
|
||
push af
|
||
ld a,(page_sys_screen) ; áâà. ¡ãä¥à ®ª ¤¨ «®£
|
||
out (SLOT3),a
|
||
; á®åà. íªà ¯®¤ áâப®© £®à¨§. ¬¥î
|
||
ld ix,WinHMenuBuff ; address Box buffers
|
||
ld hl,0150h
|
||
ld de,0000h
|
||
ld a,(page_sys_screen) ; page buffer
|
||
ld c,0B2h ; ª®¯¨à. ¨§ ®ª ¢ ¡ãä¥à
|
||
call scrn4__
|
||
call init_hmenu ; ¯®¤£®â®¢ª ¬¥î
|
||
call menu_exec ; à ¡®â ¢ ¬¥î
|
||
call get_fire ; § é¨â ®â "§ «¨¯ ¨ï" ¬ë誨
|
||
; ¢®ááâ. íªà ¯®¤ áâப®© £®à¨§. ¬¥î
|
||
ld ix,WinHMenuBuff ; address Box buffers
|
||
ld hl,0150h
|
||
ld de,0000h
|
||
ld a,(page_sys_screen) ; page buffer
|
||
ld c,0B3h ; ª®¯¨à. ¨§ ¡ãä¥à ¢ ®ª®
|
||
call scrn4__
|
||
pop af
|
||
out (SLOT3),a
|
||
; ¢ë¯®«. ¯ãªâ®¢ pull-¬¥î
|
||
jp pull_commands ; pullcmnd.asm
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ˆ¨æ¨ «¨§ æ¨ï áâப¨ £®à¨§. ¬¥î ¨ â ¡«¨æë ¬ë誨
|
||
;-----------------------------------------------------------
|
||
init_hmenu:
|
||
; ª®à४⮠áâநâì ¯ ¥«¥-§ ¢¨á¨¬ë¥ ï祩ª¨
|
||
ld a,(cur_panel) ; 0=«¥¢ ï, 80h=¯à ¢ ï
|
||
or a
|
||
push af
|
||
call nz,change_panel
|
||
call prep_default_puncts ; ãáâ. "û" ¬¥âª¨ ¯ãªâ®¢
|
||
pop af
|
||
call nz,change_panel
|
||
;
|
||
call InitEvent ; ¨¨æ. ®¡à ¡®â稪 ᮡë⨩
|
||
xor a
|
||
ld (CurMBox),a
|
||
ld (BarFlag),a
|
||
inc a
|
||
ld (CurMenu),a ; ç. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
; ¯®¤£®â. áâப㠬¥î ¢® ¢à¥¬¥®¬ ¡ãä¥à¥
|
||
ld ix,BarTabl ; â ¡«¨æ £®à¨§. ¬¥î
|
||
ld hl,work_buffer ; ¢à¥¬. ¡ãä¥à
|
||
ld de,MenuTab ; ®¯¨á â¥«ì £®à¨§. Œ¥î
|
||
ld b,1 ; ç «® X ª®®à¤¨ â
|
||
ld a,(color_array+12) ; 梥⠣®à¨§. ¬¥î
|
||
ld c,a
|
||
ld (hl)," " ; ç «ìë© ¯à®¡¥«
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
; 横« ¢ë¢®¤ ¢á¥å ¯ãªâ®¢
|
||
InBarL1__:
|
||
ld (hl)," " ; à §¤¥«. ¯ãªâ®¢
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld (ix+0),b ;+0 left X coords
|
||
inc ix
|
||
inc b
|
||
ld a,(de) ; Get name submenu
|
||
; 横« ¢ë¢®¤ ¯ãªâ
|
||
InBarL2__:
|
||
inc de
|
||
cp "&"
|
||
call z,Bhotkey__ ; ãáâ. 梥⠤«ï hot-¡ãª¢ë
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
inc b
|
||
ld a,(de)
|
||
or a
|
||
jr nz,InBarL2__
|
||
ld (hl)," " ; ª®æ®¢ª ¯ãªâ
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
inc b
|
||
ld (ix+0),b ;+1 Right X coords
|
||
inc ix
|
||
inc de
|
||
ld a,(de) ; ª®¤ hot-ª« ¢¨è¨
|
||
ld (ix+0),a ;+2
|
||
inc ix
|
||
inc de
|
||
ld a,(de)
|
||
ld (ix+0),a ;+3,+4 - ¤à¥á ®¯¨á â¥«ï ¢¥àâ. ¬¥î
|
||
inc ix
|
||
inc de
|
||
ld a,(de)
|
||
ld (ix+0),a ;+4
|
||
inc ix
|
||
inc de
|
||
ld a,(de)
|
||
or a
|
||
jr nz,InBarL1__
|
||
; ª®¥æ ¯ãªâ®¢ £®à¨§. ¬¥î
|
||
ld (ix+0),80h ; ª®¥æ Mouse Table
|
||
ld a,80 ; è¨à¨ íªà
|
||
sub b
|
||
jr z,InBarEx__
|
||
; § ¯®«¨âì ®áâ ⮪ áâப¨ ¤® ª®æ íªà
|
||
ld b,a
|
||
ld (hl)," "
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-5
|
||
; ¢ë¢¥á⨠£®â®¢ãî áâப㠣®à¨§. ¬¥î íªà
|
||
InBarEx__:
|
||
ld ix,work_buffer ; ¡ãä¥à áâப¨
|
||
ld hl,0150h ; Y/X à §¬¥à ®ª
|
||
ld de,0000h ; ¯®«®¦. ®ª (áâப¨)
|
||
in a,(SLOT3)
|
||
ld c,0B3h ; ª®¯¨à. ¨§ ¡ãä¥à íªà
|
||
call scrn4__
|
||
jp SetMBar ; ¢ë¢¥á⨠¢ë¤¥«. 㪠§ ⥫ì
|
||
|
||
|
||
;-------------------------------------------------
|
||
; “áâ ®¢¨âì æ¢¥â hot-¡ãª¢ë £®à¨§. ¬¥î
|
||
;-------------------------------------------------
|
||
Bhotkey__:
|
||
ld a,(de)
|
||
ld (hl),a ; hot-¡ãª¢ã ¢ ¡ãä¥à
|
||
inc hl
|
||
inc de
|
||
push de
|
||
ld a,(color_array+14) ; 梥â hot-¡ãª¢ë £®à¨§. ¬¥î
|
||
and 0Fh
|
||
ld e,a
|
||
ld a,(color_array+12) ; 梥⠣®à¨§. ¬¥î
|
||
and 0F0h
|
||
or e
|
||
ld (hl),a ; âਡãâ
|
||
pop de
|
||
inc hl
|
||
ld a,(de)
|
||
inc de
|
||
inc b
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; “áâ ®¢¨âì ¢ë¤¥«. 㪠§ â¥«ì ¢ £®à¨§. Œ¥î
|
||
;-------------------------------------------------
|
||
SetBarI:ld a,(BarFlag)
|
||
or a
|
||
ret nz
|
||
inc a
|
||
ld (BarFlag),a
|
||
ld hl,BarTabl ; à ¡®ç ï â ¡«¨æ £®à¨§. ¬¥î
|
||
ld a,(CurMenu) ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
dec a
|
||
ld c,a ; *5
|
||
add a,a
|
||
add a,a
|
||
add a,c
|
||
add a,l
|
||
ld l,a
|
||
jr nc,$+3
|
||
inc h
|
||
ld e,(hl) ; Xo
|
||
inc hl
|
||
ld d,0 ; Y = 0
|
||
ld a,(hl)
|
||
sub e ; Xi - Xo = è¨à¨
|
||
ld l,a
|
||
ld h,1 ; ¢ëá®â
|
||
ld (RBrIlen+1),hl
|
||
ld (RBrIpos+1),de
|
||
push af ; á®åà. è¨à¨ã
|
||
ld ix,work_buffer
|
||
in a,(SLOT3)
|
||
ld c,0B2h ; ª®¯¨à. á ®ª ¢ ¡ãä¥à
|
||
call scrn4__
|
||
ld a,(color_array+13) ; 梥â 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
ld c,a
|
||
ld a,(color_array+14) ; 梥â hot-¡ãª¢ë £®à¨§. ¬¥î
|
||
and 0Fh
|
||
ld b,a
|
||
pop af ;Reset LenX
|
||
; ¯®¤£®â®¢¨âì ¢ ¡ãä¥à¥ ¢ë¤¥«. 㪠§ ⥫ì
|
||
ld hl,work_buffer ; ¡ãä¥à
|
||
SetInvB__:
|
||
ex af,af'
|
||
inc hl
|
||
ld a,(hl)
|
||
and 0Fh
|
||
cp b ; hot-¡ãª¢ ?
|
||
ld a,c
|
||
jr nz,$+5
|
||
and 0F0h
|
||
or b
|
||
ld (hl),a
|
||
inc hl
|
||
ex af,af'
|
||
dec a
|
||
jr nz,SetInvB__
|
||
; ¢ë¢¥á⨠íªà ¢ë¤¥«. ¯ãªâ (㪠§ ⥫ì)
|
||
ld ix,work_buffer ; ¡ãä¥à
|
||
ld hl,(RBrIlen+1) ; Y/X à §¬¥à ®ª
|
||
ld de,(RBrIpos+1) ; ¯®«®¦. ®ª
|
||
in a,(SLOT3)
|
||
ld c,0B3h ; ª®¯¨à. ¨§ ¡ãä¥à íªà
|
||
jp scrn4__
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‘¡à®á¨âì ¢ë¤¥«. 㪠§ â¥«ì ¢ £®à¨§. Œ¥î
|
||
;-------------------------------------------------
|
||
ResBarI:ld a,(BarFlag)
|
||
or a
|
||
ret z
|
||
xor a
|
||
ld (BarFlag),a
|
||
; ᪮¯¨à. 㪠§ ⥫ì á íªà ¢ ¡ãä¥à
|
||
ld ix,work_buffer
|
||
RBrIlen:ld hl,0 ; á®åà. è¨à¨ 㪠§ ⥫ï
|
||
RBrIpos:ld de,0 ; á®åà. ¯®«®¦. 㪠§ ⥫ï
|
||
ld a,l
|
||
push af
|
||
in a,(SLOT3) ; ¯®àâ
|
||
ld c,0B2h ; ª®¯¨à. á íªà ¢ ¡ãä¥à
|
||
call scrn4__
|
||
ld a,(color_array+12) ; 梥⠣®à¨§. ¬¥î
|
||
ld c,a
|
||
ld a,(color_array+14) ; 梥â hot-¡ãª¢ë £®à¨§. ¬¥î
|
||
and 0Fh
|
||
ld b,a
|
||
pop af ;Reset LenX
|
||
; á¡à®á¨âì ¢ë¤¥«. 㪠§ â¥«ì ¢ ¡ãä¥à¥
|
||
ld hl,work_buffer ; ¡ãä¥à
|
||
ResInvB__:
|
||
ex af,af'
|
||
inc hl
|
||
ld a,(hl)
|
||
and 0Fh
|
||
cp b ; hot-¡ãª¢ ?
|
||
ld a,c
|
||
jr nz,$+5
|
||
and 0F0h
|
||
or b
|
||
ld (hl),a
|
||
inc hl
|
||
ex af,af'
|
||
dec a
|
||
jr nz,ResInvB__
|
||
; ¢ë¢¥á⨠á¡à®è¥ë© ¯ãªâ íªà
|
||
ld ix,work_buffer
|
||
ld hl,(RBrIlen+1) ; à §¬¥àë ®ª (㪠§ ⥫ï)
|
||
ld de,(RBrIpos+1) ; Y/X ¯®«®¦.
|
||
in a,(SLOT3)
|
||
ld c,0B3h ; ª®¯¨à. ¨§ ¡ãä¥à íªà
|
||
jp scrn4__
|
||
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; “áâ ®¢¨âì æ¢¥â hot-¡ãª¢ë ¢¥àâ. ¬¥î
|
||
;-------------------------------------------------
|
||
Bhotkey1__:
|
||
ld a,(de)
|
||
ld (hl),a ; hot-¡ãª¢ã ¢ ¡ãä¥à
|
||
inc hl
|
||
inc de
|
||
push de
|
||
ld a,(color_array+17) ; 梥â hot-¡ãª¢ë ¬¥î
|
||
and 0Fh
|
||
ld e,a
|
||
ld a,(color_array+15) ; 梥⠢¥àâ. ¬¥î
|
||
and 0F0h
|
||
or e
|
||
ld (hl),a ; âਡãâ
|
||
pop de
|
||
inc hl
|
||
ld a,(de)
|
||
inc de
|
||
inc b
|
||
ret
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; “áâ ®¢¨âì ¢ë¤¥«. 㪠§ â¥«ì ¢¥àâ. ¬¥î
|
||
;-----------------------------------------------------------
|
||
SetBoxI:ld a,(CurMBox)
|
||
dec a
|
||
;*6
|
||
add a,a ;1+1=2
|
||
ld c,a ;2
|
||
SetBoxI1:
|
||
add a,a ;2+2=4
|
||
add a,c ;4+2=6
|
||
ld hl,BoxTabl+4 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î + 4
|
||
add a,l
|
||
ld l,a
|
||
jr nc,$+3
|
||
inc h
|
||
ld e,(hl)
|
||
inc hl
|
||
ld a,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
sub e ; Xi - Xo = LenX
|
||
ld l,a
|
||
ld h,1 ; ¢ëá®â
|
||
ld (RBxIlen+1),hl
|
||
ld (RBxIpos+1),de
|
||
;
|
||
push af
|
||
ld ix,work_buffer
|
||
in a,(SLOT3)
|
||
ld c,0B2h
|
||
call scrn4__
|
||
ld a,(color_array+16) ; 梥â 㪠§ â¥«ï ¢¥àâ. ¬¥î
|
||
ld c,a
|
||
ld a,(color_array+17) ; 梥â hot-¡ãª¢ë ¢¥àâ. ¬¥î
|
||
and 0Fh
|
||
ld b,a
|
||
pop af ; LenX
|
||
; ¯®¤£®â®¢¨âì ¢ ¡ãä¥à¥ ¢ë¤¥«. 㪠§ ⥫ì
|
||
ld hl,work_buffer ; ¡ãä¥à
|
||
SetInvX__:
|
||
ex af,af'
|
||
inc hl
|
||
ld a,(hl)
|
||
and 0Fh
|
||
cp b ; hot-¡ãª¢ ?
|
||
ld a,c
|
||
jr nz,$+5
|
||
and 0F0h
|
||
or b
|
||
ld (hl),a
|
||
inc hl
|
||
ex af,af'
|
||
dec a
|
||
jr nz,SetInvX__
|
||
; ¢ë¢¥á⨠íªà ¢ë¤¥«. ¯ãªâ ¬¥î
|
||
ld ix,work_buffer ; ¡ãä¥à
|
||
ld hl,(RBxIlen+1)
|
||
ld de,(RBxIpos+1)
|
||
in a,(SLOT3)
|
||
ld c,0B3h
|
||
jp scrn4__
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‘¡à®á¨âì ¢ë¤¥«. 㪠§ â¥«ì ¢¥àâ. ¬¥î
|
||
;-----------------------------------------------------------
|
||
ResBoxI:ld ix,work_buffer
|
||
RBxIlen:ld hl,0
|
||
RBxIpos:ld de,0
|
||
ld a,l
|
||
push af
|
||
in a,(SLOT3)
|
||
ld c,0B2h
|
||
call scrn4__
|
||
ld a,(color_array+15) ; 梥⠢¥àâ. ¬¥î
|
||
ld c,a
|
||
ld a,(color_array+17) ; 梥â hot-¡ãª¢ë ¢¥àâ. ¬¥î
|
||
and 0Fh
|
||
ld b,a
|
||
pop af
|
||
; á¡à®á¨âì 㪠§ â¥«ì ¢ ¡ãä¥à¥
|
||
ld hl,work_buffer ; ¡ãä¥à
|
||
ResInvX__:
|
||
ex af,af'
|
||
inc hl
|
||
ld a,(hl)
|
||
and 0Fh
|
||
cp b ; 梥â hot-¡ãª¢ë?
|
||
ld a,c
|
||
jr nz,$+5
|
||
and 0F0h
|
||
or b
|
||
ld (hl),a
|
||
inc hl
|
||
ex af,af'
|
||
dec a
|
||
jr nz,ResInvX__
|
||
; ¢ë¢¥á⨠á¡à®è¥ë© ¯ãªâ íªà
|
||
ld ix,work_buffer
|
||
ld hl,(RBxIlen+1)
|
||
ld de,(RBxIpos+1)
|
||
in a,(SLOT3)
|
||
ld c,0B3h
|
||
jp scrn4__
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ƒ« ¢ë© 横« £®à¨§. Œ¥î
|
||
;-----------------------------------------------------------
|
||
menu_exec:
|
||
call handle_event ; ç¨â ¥¬ ᮡë⨥
|
||
ld hl,what
|
||
ld de,menu_exec
|
||
push de
|
||
ld a,(hl) ;+0 ã§ âì ᮡë⨥
|
||
inc hl
|
||
cp evMouseFr ; ¦ âë ¡ãâ®ë ¬ë誨
|
||
jp z,MBmouse
|
||
cp evKeyboard ; ¦ âë ®¡ëçë¥ ª« ¢¨è¨
|
||
jr z,MBkeys
|
||
cp evCombKey ; ¦ âë ªãàá. ª« ¢¨è¨ ¨ á«ã¦.
|
||
jr z,MBcbkey
|
||
ret
|
||
|
||
; ¢ë©â¨, ¥á«¨ ¬¥î § ªàëâ®
|
||
MenuExt:ld a,(CurMBox) ; box open
|
||
or a
|
||
jp nz,CloseBx ; § ªàëâì ¢¥àâ. ¬¥î
|
||
; ¢ë©â¨ ¨§ £®à¨§. ¬¥î
|
||
MenuExit:
|
||
pop de ; ¢®ááâ. ¡ « á á⥪
|
||
ld hl,what
|
||
ld (hl),evNothing ; ãáâ. "¥â ᮡë⨩"
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; Ž¡ëçë¥ ª« ¢¨è¨ (¤«ï ¢¥àâ. ¬¥î)
|
||
;-------------------------------------------------
|
||
MBkeys: ld a,(hl) ;+1 ª®¤ ª« ¢¨è¨
|
||
cp 1Bh ; Esc
|
||
jr z,MenuExt
|
||
cp 0Dh ; Enter
|
||
jr nz,MBkeysN
|
||
ld a,(CurMBox) ; if not box then open
|
||
or a
|
||
jp z,OpenBox ; ®âªàëâì ®ª® ¢¥àâ. ¬¥î
|
||
ld b,a
|
||
ld ix,BoxTabl-2 ; ¯®¨áª ¯ãªâ ¢¥àâ. ¬¥î
|
||
ld de,6
|
||
add ix,de
|
||
djnz $-2
|
||
jp BxEnter
|
||
;
|
||
MBkeysN:ld a,(CurMBox)
|
||
or a
|
||
ret z ; ¢¥àâ. ¬¥î ¥ ®âªàëâ®
|
||
inc hl
|
||
ld a,(hl) ;+2 ᪥-ª®¤ ª« ¢¨è¨
|
||
ld ix,BoxTabl-2 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î - 2
|
||
ld bc,6
|
||
ld h,b
|
||
MBkeys1__:
|
||
inc h
|
||
add ix,bc
|
||
bit 7,(ix+0) ; ª®¥æ ®¯¨á â¥«ï ¬¥î ?
|
||
ret nz ; ¤ , hot-ª« ¢¨è ¥ ©¤¥
|
||
cp (ix+4) ; ᪥-ª®¤ hot-ª« ¢¨è¨
|
||
jr nz,MBkeys1__
|
||
jp BxHotEx
|
||
|
||
;-----------------------------------------------------------
|
||
; Š« ¢¨è¨ ã¯à ¢«. ªãàá®à®¬ ¨ ª®¬¡¨ 樨 á hot-¡ãª¢ ¬¨
|
||
;-----------------------------------------------------------
|
||
MBcbkey:inc hl
|
||
ld a,(hl) ;+2 what
|
||
cp 58h ; ¢¢¥àå
|
||
jp z,MBup
|
||
cp 52h ; ¢¨§
|
||
jp z,MBdown
|
||
cp 54h ; ¢«¥¢®
|
||
jp z,MBleft
|
||
cp 56h ; ¢¯à ¢®
|
||
jp z,MBright
|
||
cp 57h ; Home
|
||
jp z,MBhome
|
||
cp 51h ; End
|
||
jp z,MBend
|
||
cp 44h ; F10
|
||
jr z,MenuExt
|
||
; â¥áâ ᪥-ª®¤ë ¡ãª¢. ª« ¢¨è
|
||
ld ix,BarTabl-5 ; à ¡®ç ï â ¡«¨æ £®à¨§. ¬¥î
|
||
ld bc,5
|
||
ld h,b
|
||
MBcbLp: inc h ; ¯®¨áª hot-ª« ¢¨è¨
|
||
add ix,bc
|
||
bit 7,(ix+0) ; 80h ª®¥æ ®¯¨á â¥«ï ¬¥î ?
|
||
ret nz ; ¥ ¢ë室¨âì ¨§ £®à¨§. ¬¥î ¯® ¥ ⮩ ª®¬¡. ª« ¢¨è
|
||
cp (ix+2) ; hot-ª« ¢¨è ?
|
||
jr nz,MBcbLp ; ¥â
|
||
ld a,(CurMenu) ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
cp h
|
||
jr nz,MBcbnxt
|
||
ld a,(CurMBox)
|
||
or a
|
||
ret nz ; ®ª® ¬¥î ®âªàëâ®
|
||
MBcbnxt:ld a,h
|
||
ld (CurMenu),a ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
call SetMBar
|
||
call ResBarI ; á¡à®á¨âì ¢ë¤¥«. 㪠§ ⥫ì
|
||
call SetBarI ; ¢ë¢¥á⨠¢ë¤¥«. 㪠§ ⥫ì
|
||
call ClosBox
|
||
jp OpenBox
|
||
|
||
; Šãàá®à ¢¢¥àå
|
||
MBup: ld a,(CurMBox)
|
||
or a
|
||
call z,OpenBox ; ®âªàëâì ¬¥î
|
||
ld a,(CurMBox)
|
||
dec a
|
||
jr nz,MBupNxt
|
||
ld ix,BoxTabl-2 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î - 2
|
||
ld bc,6
|
||
ld a,b
|
||
dec a
|
||
MBupLp: inc a ; ¯®¨áª ¯®á«¥¤¥£® í«¥¬¥â
|
||
add ix,bc
|
||
bit 7,(ix+0)
|
||
jr z,MBupLp
|
||
MBupNxt:ld (CurMBox),a
|
||
ld b,a
|
||
ld ix,BoxTabl-2 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î - 2
|
||
ld de,6
|
||
add ix,de
|
||
djnz $-2
|
||
push ix
|
||
call ResBoxI
|
||
call SetBoxI
|
||
pop ix
|
||
ret
|
||
|
||
; Šãàá®à ¢¨§
|
||
MBdown: ld a,(CurMBox)
|
||
or a
|
||
jp z,OpenBox
|
||
inc a
|
||
ld ix,BoxTabl-2 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î - 2
|
||
ld bc,6
|
||
ld h,b ; â¥áâ ¯®á«¥¤¨© í«¥¬¥â
|
||
MBdnLp: inc h
|
||
add ix,bc
|
||
bit 7,(ix+0)
|
||
jr z,MBdnLp
|
||
cp h
|
||
jr nz,$+4
|
||
ld a,1
|
||
jr MBupNxt
|
||
|
||
; Šãàá®à ¢«¥¢®
|
||
MBleft: ld a,(CurMenu) ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
dec a
|
||
jr nz,MBlfNxt
|
||
ld ix,BarTabl-5 ; à ¡®ç ï â ¡«¨æ £®à¨§. ¬¥î
|
||
ld bc,5
|
||
ld a,b
|
||
dec a
|
||
MBlfLp: inc a ; ¯®¨áª ¯®á«¥¤¥£® ¯ãªâ
|
||
add ix,bc
|
||
bit 7,(ix+0)
|
||
jr z,MBlfLp
|
||
MBlfNxt:ld (CurMenu),a ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
call ResBarI ; á¡à®á¨âì ¢ë¤¥«. 㪠§ ⥫ì
|
||
call SetBarI ; ¢ë¢¥á⨠¢ë¤¥«. 㪠§ ⥫ì
|
||
ld a,(CurMBox)
|
||
or a
|
||
ret z
|
||
call ClosBox
|
||
jp OpenBox
|
||
|
||
; Šãàá®à ¢¯à ¢®
|
||
MBright:ld a,(CurMenu) ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
inc a
|
||
ld ix,BarTabl-5 ; à ¡®ç ï â ¡«¨æ £®à¨§. ¬¥î
|
||
ld bc,5
|
||
ld h,b
|
||
MBrgLp: inc h ; ¯à®¢¥àª ¯®á«¥¤¨© ¯ãªâ
|
||
add ix,bc
|
||
bit 7,(ix+0)
|
||
jr z,MBrgLp
|
||
cp h
|
||
jr nz,$+4
|
||
ld a,1
|
||
jr MBlfNxt
|
||
|
||
; Home
|
||
MBhome: ld a,(CurMBox)
|
||
or a
|
||
ret z
|
||
dec a
|
||
ret z
|
||
ld a,1
|
||
jp MBupNxt
|
||
|
||
; End
|
||
MBend: ld a,(CurMBox)
|
||
or a
|
||
ret z
|
||
ld h,a
|
||
ld ix,BoxTabl-2 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î - 2
|
||
ld bc,6
|
||
ld a,b
|
||
dec a
|
||
MBendLp:inc a ; ¯®¨áª ¯®á«¥¤¥£® í«¥¬¥â
|
||
add ix,bc
|
||
bit 7,(ix+0)
|
||
jr z,MBendLp
|
||
cp h
|
||
ret z
|
||
jp MBupNxt
|
||
|
||
;-------------------------------------------------
|
||
; ‘®¡ëâ¨ï ¬ë誨
|
||
;-------------------------------------------------
|
||
MBmouse:ld e,(hl) ;+1 X coord
|
||
inc hl
|
||
ld d,(hl) ;+2 Y coord
|
||
ld a,d
|
||
or a
|
||
jr nz,MBmousB ; Y<>0 then test on Box Open
|
||
ld ix,BarTabl-5 ; à ¡®ç ï â ¡«¨æ £®à¨§. ¬¥î
|
||
ld bc,5
|
||
ld h,b
|
||
ld a,e ; ¯®¨áª ¯ãªâ £®à¨§. ¬¥î
|
||
MBmous1:inc h
|
||
add ix,bc
|
||
bit 7,(ix+0) ; ª®¥æ ®¯¨á â¥«ï ¬¥î ?
|
||
jp nz,CloseBx ; ¤ , § ªàëâì popup-¬¥î
|
||
cp (ix+0)
|
||
jr c,MBmous1 ; < Xo
|
||
cp (ix+1)
|
||
jr nc,MBmous1 ; > Xi
|
||
ld a,(CurMenu) ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
cp h
|
||
jr nz,MBopenB
|
||
ld a,(CurMBox) ; Test on current open menu
|
||
or a
|
||
jp nz,SetMBar
|
||
MBopenB:ld a,h ; ¯ãªâ ©¤¥
|
||
ld (CurMenu),a ; ⥪. ¯®«®¦. 㪠§ â¥«ï £®à¨§. ¬¥î
|
||
call SetMBar
|
||
call ClosBox
|
||
call ResBarI ; á¡à®á¨âì ¢ë¤¥«. 㪠§ ⥫ì
|
||
call SetBarI ; ¢ë¢¥á⨠¢ë¤¥«. 㪠§ ⥫ì
|
||
jp OpenBox
|
||
|
||
; <20>஢¥àª ª®®à¤¨ âë ¬ë誨 ¨ ®ª ¢¥àâ. ¬¥î
|
||
MBmousB:ld a,(CurMBox)
|
||
or a
|
||
jp z,MenuExit ; ¥â ®âªà. popup-¬¥î, ¢ë©â¨ ¢ ¬¥¥¤¦¥à
|
||
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î
|
||
ld a,e
|
||
cp (ix+0)
|
||
jr c,MBoxExt ; < Xo
|
||
cp (ix+1)
|
||
jr nc,MBoxExt ; > Xi
|
||
ld a,d
|
||
cp (ix+2)
|
||
jr c,MBoxExt ; < Yo
|
||
cp (ix+3)
|
||
jr nc,MBoxExt ; > Yi
|
||
dec ix
|
||
dec ix
|
||
ld bc,6
|
||
ld h,b
|
||
MBloopB:inc h
|
||
add ix,bc
|
||
bit 7,(ix+0) ; ª®¥æ ®¯¨á â¥«ï ¬¥î ?
|
||
ret nz ; ¤
|
||
ld a,d
|
||
cp (ix+2)
|
||
jr nz,MBloopB
|
||
ld a,e ; ¯®¨áª ¯ãªâ ¬¥î
|
||
cp (ix+0)
|
||
jr c,MBloopB ; < Xo
|
||
cp (ix+1)
|
||
jr nc,MBloopB ; > Xi
|
||
BxHotEx:ld a,(CurMBox)
|
||
cp h
|
||
jr z,BxEnter ; ãáâ. ¯ãªâ ¬¥î
|
||
ld a,h
|
||
ld (CurMBox),a
|
||
push ix
|
||
call ResBoxI
|
||
call SetBoxI
|
||
pop ix
|
||
halt
|
||
halt
|
||
halt
|
||
halt
|
||
; ¢ë¯®«. ¯ãªâ Pop-¬¥î ¯® <Enter> ¨«¨ ¬ë誥
|
||
BxEnter:ld hl,what
|
||
ld (hl),evCommand ; ãáâ. ᮡë⨥ "ª®¬ ¤ "
|
||
inc hl
|
||
ld a,(ix+3)
|
||
ld (hl),a ;+1 ®¬¥à ª®¬ ¤ë
|
||
call CloseBx ; § ªàëâì ¢¥àâ. ¬¥î
|
||
pop de
|
||
ret ; ¢ë©â¨ ¨§ £®à¨§. ¬¥î
|
||
|
||
MBoxExt:call ClosBox ; § ªàëâì ¢¥àâ. ¬¥î
|
||
jp MenuExit ; ¢ë©â¨ ¢ ¬¥¥¤¦¥à
|
||
;
|
||
CloseBx:call ClosBox ; § ªàëâì ¢¥àâ. ¬¥î
|
||
jp get_fire
|
||
|
||
|
||
|
||
|
||
|
||
|
||
SetMBar:ld a,(BarFlag)
|
||
or a
|
||
ret nz
|
||
;call ResCurs
|
||
jp SetBarI
|
||
|
||
|
||
ResMBar:ld a,(BarFlag)
|
||
or a
|
||
ret z
|
||
jp ResBarI
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; Žâªàëâì ®ª® ¢¥à⨪ «ì®£® Œ¥î
|
||
;
|
||
; ¢å®¤. ¯ à ¬¥âàë: (CurMenu) - Number MenuBox
|
||
;-----------------------------------------------------------
|
||
OpenBox:ld a,1
|
||
ld (CurMBox),a ; ®¬¥à ¯ãªâ ¢¥àâ. ¬¥î
|
||
ld b,a ; ç. ¢¥àåïï áâப ®ª
|
||
ld hl,BarTabl ; â ¡«. £®à¨§. ¬¥î (¯®¨áª ç « ¬¥î)
|
||
ld a,(CurMenu)
|
||
dec a
|
||
ld c,a ; *5
|
||
add a,a
|
||
add a,a
|
||
add a,c
|
||
add a,l
|
||
ld l,a
|
||
jr nc,$+3
|
||
inc h
|
||
;
|
||
PutMenu:push iy
|
||
ld iy,BoxTabl ; Generes MenuBox mouse table
|
||
ld ix,BoxData
|
||
ld a,(hl)
|
||
dec a
|
||
inc hl
|
||
ld (iy+0),a ; Xo position MenuBox
|
||
inc a
|
||
ld (ix+2),a ; Xo for element box
|
||
ld (iy+2),b ; Yo position MenuBox
|
||
ld (ix+4),b ; Temp Y posit for element box
|
||
inc hl
|
||
inc hl
|
||
ld a,(hl) ; ¤à¥á ®¯¨á ⥫ï ⥪. ¬¥î
|
||
ld (ix+0),a ; á®åà. ¤à¥á ®¯¨á ⥫ï
|
||
inc hl
|
||
ld h,(hl)
|
||
ld (ix+1),h
|
||
ld l,a
|
||
call GetLenB ; get in DE len Y,X MenuBox
|
||
ld a,e ; Xi position MenuBox
|
||
sub 2
|
||
ld (ix+5),a ; è¨à¨ ®ª ¡¥§ à ¬ª¨
|
||
ld a,e
|
||
add a,(iy+0)
|
||
ld (iy+1),a
|
||
dec a
|
||
ld (ix+3),a ; Xi for element box
|
||
ld a,d
|
||
add a,(iy+2) ; Yi position MenuBox
|
||
ld (iy+3),a
|
||
call SaveBox ; á®åà. íªà ¯®¤ ¡ã¤ã騬 ®ª®¬
|
||
;
|
||
in a,(SLOT3)
|
||
push af
|
||
ld a,(page_dial_screen) ; Page buffer
|
||
out (SLOT3),a
|
||
; ç «® ¢áâ ¢ª¨ ®ª á â¥ìî ¢ ¡ãä¥à
|
||
ld hl,LC000+MaxDialWin
|
||
ld bc,4
|
||
add iy,bc ; ¤à¥á ®¯¨á â¥«ï ¢¥àâ. ¬¥î
|
||
exx
|
||
ld hl,LC000
|
||
ld a,(ix+5) ; è¨à¨ ®ª
|
||
inc a
|
||
inc a
|
||
add a,a
|
||
ld e,a
|
||
ld d,0
|
||
add hl,de
|
||
exx
|
||
ld a,(color_array+15) ; 梥⠢¥àâ. ¬¥î
|
||
ld c,a
|
||
; à ¬ª ®ª
|
||
ld (hl),"Ú" ; «¥¢ë© ¢¥àå. 㣮«
|
||
inc hl
|
||
ld (hl),c ; 梥â
|
||
inc hl
|
||
ld b,(ix+5) ; è¨à¨ ®ª
|
||
ld a,"Ä"
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-4
|
||
ld (hl),"¿" ; ¯à ¢ë© ¢¥àå. 㣮«
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld b,3
|
||
call copy_cell
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
add hl,de
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld e,(ix+0)
|
||
ld d,(ix+1)
|
||
; –¨ª« ¢ë¢®¤ ¯ãªâ®¢ ¬¥î
|
||
MainPutBox:
|
||
inc (ix+4) ; 㢥«¨ç¨âì Y-¯®«®¦. ¯ãªâ ¬¥î
|
||
ld a,(de)
|
||
inc de
|
||
cp -2 ; à §¤¥«¨â¥«ì ?
|
||
jr nz,PutBln2
|
||
; ¢áâ ¢¨âì à §¤¥«¨â¥«ì ¯ãªâ®¢
|
||
ld (hl),"Ã"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld b,(ix+5)
|
||
ld a,"Ä"
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-4
|
||
ld (hl),"´"
|
||
jr PutBln51
|
||
;
|
||
PutBln2:cp -1 ; ª®¥æ ®¯¨á ⥫ï ?
|
||
jp z,BoxExit ; ¤
|
||
ld b,a
|
||
ld a,(ix+2)
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld a,(ix+3)
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld a,(ix+4)
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld a,b
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld (hl),"³"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld (PutBln4+1),hl ; ¤à¥á ¬¥áâ ¯®¤ ¬¥âªã "û"
|
||
ld b,2 ; 2 ¯à®¡¥« ¢ ç «¥ ¯ãªâ
|
||
ld (hl)," "
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-5
|
||
inc b ; b=1
|
||
ld a,(de)
|
||
PutBln3:inc de
|
||
cp "&"
|
||
call z,Bhotkey1__ ; ¢áâ ¢¨âì hot-¡ãª¢ã
|
||
ld (hl),a ; Put name element
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
inc b
|
||
ld a,(de)
|
||
or a ; ª®¥æ ¨¬¥¨ ?
|
||
jr nz,PutBln3
|
||
inc de
|
||
ld a,(de) ; ï祩ª ᪥-ª®¤ ¯ãªâ
|
||
ld (iy+0),a ; ᪥-ª®¤ hot-ª« ¢¨èë ¢ â ¡«¨æã
|
||
inc iy
|
||
inc de
|
||
ld a,(de) ; ï祩ª ª®â¥ªáâ
|
||
inc de
|
||
ld (iy+0),a ; ¢áâ ¢¨âì ª®¤ ª®â¥ªáâ
|
||
; ¢áâ ¢¨âì ¬¥âªã ¯ãªâ "û" (¥á«¨ ¤®)
|
||
push hl
|
||
PutBln4:ld hl,0
|
||
or a
|
||
jr z,PutBln5
|
||
ld (hl),"û" ; ¯ãªâ "¯®-㬮«ç ¨î"
|
||
PutBln5:pop hl
|
||
inc iy
|
||
ld a,(ix+5) ; è¨à¨ ⥪. ¯ãªâ
|
||
dec a
|
||
sub b
|
||
ld b,a
|
||
ld (hl)," " ; § ¯®«¨âì ®áâ ⮪ ¯ãªâ
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-5
|
||
ld (hl),"³"
|
||
PutBln51:
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
inc hl
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),color_shadow ; 梥â ⥨
|
||
inc hl
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
inc hl
|
||
add hl,de
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),color_shadow ; 梥â ⥨
|
||
inc hl
|
||
jp MainPutBox ; § ¤ ¢ 横«
|
||
|
||
|
||
BoxExit:ld (iy+0),80h ; ª®¥æ â ¡«¨æë
|
||
ld (hl),"À"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld b,(ix+5)
|
||
ld a,"Ä"
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-4
|
||
ld (hl),"Ù"
|
||
BoxExit__:
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
; ¢áâ ¢¨âì 2 ⥨ 㣫 "Ù"
|
||
ld b,2
|
||
call print_shadow
|
||
; ¢áâ ¢¨âì ¨¦îî â¥ì
|
||
ld b,4
|
||
call copy_cell ; ᪮¯¨à. ï祩ª¨
|
||
ld b,(ix+5) ; Full Len box
|
||
inc b
|
||
inc b
|
||
call print_shadow
|
||
pop af
|
||
out (SLOT3),a
|
||
call PutBox
|
||
pop iy
|
||
jp SetBoxI ; Set box invert
|
||
|
||
|
||
; ᪮¯¨à®¢ âì ï祩ª¨ (b=áç¥â稪)
|
||
copy_cell:
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
djnz copy_cell
|
||
ret
|
||
|
||
; ¢áâ ¢¨âì â¥ì
|
||
print_shadow:
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
inc hl
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),color_shadow ; 梥â ⥨
|
||
inc hl
|
||
djnz print_shadow
|
||
ret
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‚ëç¨á«¨âì è¨à¨ã ⥪ã饣® ®ª ¢¥àâ. ¬¥î
|
||
;
|
||
; ¢å®¤: hl=®¯¨á â¥«ì ¬¥î
|
||
; ¢ë室: de=¢ëá®â /è¨à¨ ®ª
|
||
; (¤®à ¡®â ª "è¨à¨ +2" ¤«ï ¤®¯®«. ªà ©¨å ¯à®¡¥«®¢)
|
||
;----------------------------------------------------------
|
||
GetLenB:ld de,0206h
|
||
ld b,e
|
||
dec b
|
||
GetLnL1:ld a,(hl)
|
||
inc hl
|
||
cp -1 ; ª®¥æ ®¯¨á ⥫ï ?
|
||
ret z
|
||
cp -2 ; à §¤¥«¨â¥«ì ¯ãªâ®¢ ?
|
||
jr z,AddLine
|
||
GetLnL2:inc b
|
||
GetLnL3:ld a,(hl)
|
||
inc hl
|
||
cp "&" ; ª ¢ëçª hot-¡ãª¢ë ?
|
||
jr z,GetLnL3
|
||
or a ; ª®¥æ §¢ ¨ï ¯ãªâ ?
|
||
jr nz,GetLnL2 ; ¥â
|
||
inc hl
|
||
inc hl ; ¯à®©â¨ ᪥-ª®¤
|
||
ld a,b
|
||
cp e
|
||
jr c,AddLine
|
||
ld e,b
|
||
AddLine:inc d
|
||
ld b,5
|
||
jr GetLnL1
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‘®åà ¨âì íªà ¯®¤ ¡ã¤ã騬 ®ª®¬
|
||
;-------------------------------------------------
|
||
SaveBox:push ix
|
||
inc e ; á â¥ìî
|
||
inc e
|
||
inc d
|
||
ld l,(iy+0) ; ¯®§¨æ¨ï ®ª
|
||
ld h,(iy+2)
|
||
ld a,l
|
||
add a,e
|
||
cp 80+2 ; § ¯à¥¤¥«®¬ íªà ?
|
||
jr c,GetBnxt
|
||
sub 80+2
|
||
ld l,a
|
||
ld a,(ix+2)
|
||
sub l
|
||
ld (ix+2),a
|
||
ld a,(ix+3)
|
||
sub l
|
||
ld (ix+3),a
|
||
ld a,(iy+0)
|
||
sub l
|
||
ld (iy+0),a
|
||
ld a,(iy+1)
|
||
sub l
|
||
ld (iy+1),a
|
||
ld a,80+2
|
||
sub e
|
||
ld l,a
|
||
GetBnxt:ld ix,LC000 ; Address Box buffers
|
||
ex de,hl
|
||
ld (BoxLen+1),hl
|
||
ld (BoxPos+1),de
|
||
ld a,(page_dial_screen) ; áâà. ¡ãä¥à
|
||
ld c,0B2h
|
||
call scrn4__
|
||
pop ix
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‚뢥á⨠®ª® ¬¥î íªà
|
||
;-------------------------------------------------
|
||
PutBox: push ix
|
||
ld ix,LC000+MaxDialWin ; address Box buffers
|
||
BoxLen: ld hl,0 ; len box
|
||
BoxPos: ld de,0 ; pos box
|
||
ld a,(page_dial_screen) ; áâà. ¡ãä¥à
|
||
ld c,0B3h
|
||
call scrn4__
|
||
pop ix
|
||
ret
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‡ ªàëâì ®ª® ¬¥î ¨ ¢®ááâ. íªà
|
||
;-------------------------------------------------
|
||
ClosBox:ld a,(CurMBox)
|
||
or a
|
||
ret z
|
||
ld ix,LC000 ; Address Box buffers
|
||
ld hl,(BoxLen+1) ; len box
|
||
ld de,(BoxPos+1) ; pos box
|
||
ld a,(page_dial_screen) ; Page buffer
|
||
ld c,0B3h
|
||
call scrn4__
|
||
xor a
|
||
ld (CurMBox),a
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; ”ãªæ¨ï ¢ë¢®¤ Œ¥î ¢ë¡®à . Ž¡à ¡®â稪 ᮡë⨩ Œ¥î ¢ë¡®à .
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; Žâà¨á®¢ª ¬¥î ¢ë¡®à
|
||
;
|
||
; ¢å®¤: hl=â ¡«¨æ ¬¥î
|
||
; a=¯®«®¦. ¯ãªâ ¬¥î
|
||
;-----------------------------------------------------------
|
||
put_menu_select:
|
||
ld (CurMBox),a ; ®¬¥à ¯ãªâ ¬¥î
|
||
push iy
|
||
ld iy,BoxTabl ; Generes MenuBox mouse table
|
||
ld ix,BoxData
|
||
ld a,(hl)
|
||
dec a
|
||
inc hl
|
||
ld b,(hl)
|
||
inc hl
|
||
ld (iy+0),a ; Xo position MenuBox
|
||
inc a
|
||
ld (ix+2),a ; Xo for element box
|
||
ld (iy+2),b ; Yo position MenuBox
|
||
ld (ix+4),b ; Temp Y posit for element box
|
||
ld e,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
inc hl
|
||
ld (selmenu_title+1),de ; ¤à¥á § £®«®¢ª ®ª
|
||
ld a,(hl) ; ¤à¥á ®¯¨á ⥫ï ⥪. ¬¥î
|
||
ld (ix+0),a ; á®åà. ¤à¥á ®¯¨á ⥫ï
|
||
inc hl
|
||
ld h,(hl)
|
||
ld (ix+1),h
|
||
ld l,a
|
||
call GetLenB ; get in DE len Y,X MenuBox
|
||
inc e; ; ᤥ« âì ¯®-è¨à¥
|
||
ld a,e ; Xi position MenuBox
|
||
sub 2
|
||
ld (ix+5),a ; è¨à¨ ®ª ¡¥§ à ¬ª¨
|
||
ld a,e
|
||
add a,(iy+0)
|
||
ld (iy+1),a
|
||
dec a
|
||
ld (ix+3),a ; Xi for element box
|
||
ld a,d
|
||
add a,(iy+2) ; Yi position MenuBox
|
||
ld (iy+3),a
|
||
call SaveBox ; á®åà. íªà ¯®¤ ¡ã¤ã騬 ®ª®¬
|
||
in a,(SLOT3)
|
||
push af
|
||
ld a,(page_dial_screen) ; Page buffer
|
||
out (SLOT3),a
|
||
; ç «® ¢áâ ¢ª¨ ®ª á â¥ìî ¢ ¡ãä¥à
|
||
ld hl,LC000+MaxDialWin
|
||
ld bc,4
|
||
add iy,bc ; ¤à¥á ®¯¨á â¥«ï ¢¥àâ. ¬¥î
|
||
exx
|
||
ld hl,LC000
|
||
ld a,(ix+5) ; è¨à¨ ®ª
|
||
inc a
|
||
inc a
|
||
add a,a
|
||
ld e,a
|
||
ld d,0
|
||
add hl,de
|
||
exx
|
||
ld a,(color_array+15) ; 梥⠢¥àâ. ¬¥î
|
||
ld c,a
|
||
; æ¥â஢ª § £®«®¢ª
|
||
push hl
|
||
ld de,(selmenu_title+1) ; ¤à¥á § £®«®¢ª ®ª
|
||
ld a,(de) ; ¤«¨ § £®«®¢ª
|
||
ld b,a
|
||
ld a,(ix+5) ; è¨à¨ ®ª
|
||
sub b
|
||
srl a ; /2
|
||
add a,a ; ãç¥áâì âਡãâë (१ã«ìâ ⠢ᥣ¤ ç¥âë©)
|
||
ld e,a
|
||
ld d,0
|
||
add hl,de
|
||
ld (selmenu_addr+1),hl ; ¤à¥á ¢áâ ¢ª¨
|
||
pop hl
|
||
; à ¬ª ®ª
|
||
ld (hl),"É" ; «¥¢ë© ¢¥àå. 㣮«
|
||
inc hl
|
||
ld (hl),c ; 梥â
|
||
inc hl
|
||
ld b,(ix+5) ; è¨à¨ ®ª
|
||
ld a,"Í"
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-4
|
||
ld (hl),"»" ; ¯à ¢ë© ¢¥àå. 㣮«
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
;
|
||
push hl
|
||
selmenu_title:
|
||
ld de,0 ; ¤à¥á â¨â« ®ª
|
||
selmenu_addr:
|
||
ld hl,0 ; ¤à¥á ¢áâ ¢ª¨
|
||
ld a,(de)
|
||
ld b,a ; ¤«¨ áâப¨
|
||
inc de
|
||
ld (hl)," "
|
||
inc hl
|
||
inc hl
|
||
ld a,(de)
|
||
ld (hl),a
|
||
inc hl
|
||
inc hl ; âਡãâ
|
||
inc de
|
||
djnz $-5
|
||
ld (hl)," "
|
||
pop hl
|
||
;
|
||
ld b,3
|
||
call copy_cell
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
add hl,de
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld e,(ix+0)
|
||
ld d,(ix+1)
|
||
; 横« ¢ë¢®¤ ¯ãªâ®¢ ¬¥î
|
||
selmenu_loop:
|
||
inc (ix+4) ; 㢥«¨ç¨âì Y-¯®«®¦. ¯ãªâ ¬¥î
|
||
ld a,(de)
|
||
inc de
|
||
cp -2 ; à §¤¥«¨â¥«ì
|
||
jr nz,selmenu1__
|
||
; ¢áâ ¢¨âì à §¤¥«¨â¥«ì ¯ãªâ®¢
|
||
ld (hl),"Ç"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld b,(ix+5) ; è¨à¨ ¯ãªâ
|
||
ld a,"Ä"
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-4
|
||
ld (hl),"¶"
|
||
jr selmenu3__
|
||
selmenu1__:
|
||
cp -1 ; ª®¥æ ®¯¨á ⥫ï ?
|
||
jp z,selmenu4__ ; ¤
|
||
ld b,a
|
||
ld a,(ix+2)
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld a,(ix+3)
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld a,(ix+4)
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld a,b
|
||
ld (iy+0),a
|
||
inc iy
|
||
ld (hl),"º"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld b,2 ; 2 ¯à®¡¥« ¢ ç «¥ ¯ãªâ
|
||
ld (hl)," "
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-5
|
||
inc b ; b=1
|
||
ld a,(de)
|
||
selmenu2__:
|
||
inc de
|
||
cp "&"
|
||
call z,Bhotkey1__ ; ¢áâ ¢¨âì hot-¡ãª¢ã
|
||
ld (hl),a ; Put name element
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
inc b
|
||
ld a,(de)
|
||
or a ; ª®¥æ ¨¬¥¨ ?
|
||
jr nz,selmenu2__
|
||
inc de
|
||
ld a,(de) ; ï祩ª ᪥-ª®¤ ¯ãªâ
|
||
ld (iy+0),a ; ᪥-ª®¤ hot-ª« ¢¨èë ¢ â ¡«¨æã
|
||
inc iy
|
||
inc de
|
||
inc de ; ¥ ¨á¯. ï祩ªã ª®â¥ªáâ
|
||
inc iy ;
|
||
ld a,(ix+5) ; è¨à¨ ⥪. ¯ãªâ
|
||
dec a
|
||
sub b
|
||
ld b,a
|
||
ld (hl)," " ; § ¯®«¨âì ®áâ ⮪ ¯ãªâ
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-5
|
||
ld (hl),"º"
|
||
selmenu3__:
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
inc hl
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),color_shadow ; 梥â ⥨
|
||
inc hl
|
||
exx
|
||
ld a,(hl)
|
||
inc hl
|
||
inc hl
|
||
add hl,de
|
||
exx
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),color_shadow ; 梥â ⥨
|
||
inc hl
|
||
jp selmenu_loop ; § ¤ ¢ 横«
|
||
;
|
||
selmenu4__:
|
||
ld (iy+0),80h ; ª®¥æ â ¡«¨æë
|
||
ld (hl),"È"
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
ld b,(ix+5)
|
||
ld a,"Í"
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),c
|
||
inc hl
|
||
djnz $-4
|
||
ld (hl),"¼"
|
||
jp BoxExit__
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
;
|
||
; Ž¡à ¡®â稪 ᮡë⨩ Œ¥î ¢ë¡®à
|
||
;
|
||
;-----------------------------------------------------------
|
||
event_menu_select:
|
||
call handle_event ; ç¨â ¥¬ ᮡë⨥
|
||
ld hl,what
|
||
ld de,event_menu_select
|
||
push de
|
||
ld a,(hl) ;+0 ã§ âì ᮡë⨥
|
||
inc hl
|
||
cp evMouseFr ; ¦ âë ¡ãâ®ë ¬ë誨
|
||
jp z,sel_menu_mouse
|
||
cp evKeyboard ; ¦ âë ®¡ëçë¥ ª« ¢¨è¨
|
||
jr z,sel_menu_keys
|
||
cp evCombKey ; ¦ âë ªãàá. ª« ¢¨è¨ ¨ á«ã¦.
|
||
jr z,sel_menu_ckeys
|
||
ret
|
||
;
|
||
sel_menu_exit:
|
||
call CloseBx ; § ªàëâì ¬¥î
|
||
pop de ; ¢®ááâ. ¡ « á á⥪
|
||
ld hl,what
|
||
ld (hl),evNothing ; "¥â ᮡë⨩"
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; Ž¡ëçë¥ ª« ¢¨è¨
|
||
;-------------------------------------------------
|
||
sel_menu_keys:
|
||
ld a,(hl) ;+1 ª®¤ ª« ¢¨è¨
|
||
cp 1Bh ; Esc
|
||
jr z,sel_menu_exit
|
||
cp 0Dh ; Enter
|
||
jr nz,sel_menu_keys1
|
||
ld a,(CurMBox) ; if not box then open
|
||
ld b,a
|
||
ld ix,BoxTabl-2 ; ¯®¨áª ¯ãªâ ¢¥àâ. ¬¥î
|
||
ld de,6
|
||
add ix,de
|
||
djnz $-2
|
||
jp BxEnter
|
||
;
|
||
sel_menu_keys1:
|
||
inc hl
|
||
ld a,(hl) ;+2 ᪥-ª®¤ ª« ¢¨è¨
|
||
ld ix,BoxTabl-2 ; à ¡®ç ï â ¡«¨æ ¢¥àâ. ¬¥î - 2
|
||
ld bc,6
|
||
ld h,b
|
||
sel_menu_keys2:
|
||
inc h
|
||
add ix,bc
|
||
bit 7,(ix+0) ; ª®¥æ ®¯¨á â¥«ï ¬¥î ?
|
||
ret nz ; ¤ , hot-ª« ¢¨è ¥ ©¤¥
|
||
cp (ix+4) ; ᪥-ª®¤ hot-ª« ¢¨è¨
|
||
jr nz,sel_menu_keys2
|
||
jp BxHotEx
|
||
|
||
;-------------------------------------------------
|
||
; Š« ¢¨è¨ ã¯à ¢«. ªãàá®à®¬ ¨ F10
|
||
;-------------------------------------------------
|
||
sel_menu_ckeys:
|
||
inc hl
|
||
ld a,(hl) ;+2 what
|
||
cp 44h ; F10
|
||
jr z,sel_menu_exit
|
||
cp 58h ; ¢¢¥àå
|
||
jp z,MBup
|
||
cp 52h ; ¢¨§
|
||
jp z,MBdown
|
||
cp 54h ; ¢«¥¢®
|
||
jp z,MBup
|
||
cp 56h ; ¢¯à ¢®
|
||
jp z,MBdown
|
||
cp 57h ; Home
|
||
jp z,MBhome
|
||
cp 51h ; End
|
||
jp z,MBend
|
||
ret
|
||
|
||
;-------------------------------------------------
|
||
; ‘®¡ëâ¨ï ¬ë誨
|
||
;-------------------------------------------------
|
||
sel_menu_mouse:
|
||
ld e,(hl) ;+1 X coord
|
||
inc hl
|
||
ld d,(hl) ;+2 Y coord
|
||
; ¯à®¢¥àª ª®®à¤. ¬ë誨 ¨ ®ª
|
||
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ
|
||
ld a,e
|
||
cp (ix+0)
|
||
jp c,sel_menu_exit ; < Xo
|
||
cp (ix+1)
|
||
jp nc,sel_menu_exit ; > Xi
|
||
ld a,d
|
||
cp (ix+2)
|
||
jp c,sel_menu_exit ; < Yo
|
||
cp (ix+3)
|
||
jp nc,sel_menu_exit ; > Yi
|
||
dec ix
|
||
dec ix
|
||
ld bc,6
|
||
ld h,b
|
||
selmenu_mouse_loop:
|
||
inc h
|
||
add ix,bc
|
||
bit 7,(ix+0) ; ª®¥æ ®¯¨á â¥«ï ¬¥î ?
|
||
ret nz ; ¤
|
||
ld a,d
|
||
cp (ix+2)
|
||
jr nz,selmenu_mouse_loop
|
||
ld a,e ; ¯®¨áª ¯ãªâ ¬¥î
|
||
cp (ix+0)
|
||
jr c,selmenu_mouse_loop ; < Xo
|
||
cp (ix+1)
|
||
jr nc,selmenu_mouse_loop ; > Xi
|
||
jp BxHotEx
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20> áâனª "û" ¬¥â®ª ¯ãªâ®¢ ¬¥î
|
||
;-------------------------------------------------
|
||
prep_default_puncts:
|
||
ld c,CTdef ; "û" ¯®-㬮«ç ¨î ¢ë¤¥«¥®
|
||
ld a,CTnodef ; " " ¯®-㬮«ç ¨î ¥ ¢ë¤¥«¥®
|
||
; ‘¡à®á¨âì ¯ãªâë
|
||
; Left-¬¥î
|
||
ld (LBrief),a
|
||
ld (LMed),a
|
||
ld (LFull),a
|
||
ld (LInfo),a
|
||
ld (LQview),a
|
||
; á®àâ¨à®¢ª
|
||
ld (LName),a
|
||
ld (LExt),a
|
||
ld (LDate),a
|
||
ld (LSize),a
|
||
ld (LUnsort),a
|
||
; Right-¬¥î
|
||
ld (RBrief),a
|
||
ld (RMed),a
|
||
ld (RFull),a
|
||
ld (RInfo),a
|
||
ld (RQview),a
|
||
; á®àâ¨à®¢ª
|
||
ld (RName),a
|
||
ld (RExt),a
|
||
ld (RDate),a
|
||
ld (RSize),a
|
||
ld (RUnsort),a
|
||
; <20> áâநâì ¯ãªâë
|
||
ld hl,LFull
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
bit 0,a ; full
|
||
jr nz,prep_default1__
|
||
ld hl,LMed
|
||
bit 1,a ; medium
|
||
jr nz,prep_default1__
|
||
ld hl,LBrief
|
||
bit 2,a ; brief
|
||
jr nz,prep_default1__
|
||
ld hl,LInfo
|
||
bit 3,a ; info
|
||
jr nz,prep_default1__
|
||
ld hl,LQview ; qview
|
||
prep_default1__:
|
||
ld (hl),c
|
||
; á®àâ¨à®¢ª
|
||
ld hl,LName
|
||
ld a,(sort_type) ; á®àâ. ªâ. ¯ ¥«¨
|
||
cp "n"
|
||
jr z,prep_default2__
|
||
ld hl,LExt
|
||
cp "x"
|
||
jr z,prep_default2__
|
||
ld hl,LDate
|
||
cp "d"
|
||
jr z,prep_default2__
|
||
ld hl,LSize
|
||
cp "s"
|
||
jr z,prep_default2__
|
||
ld hl,LUnsort
|
||
prep_default2__:
|
||
ld (hl),c
|
||
; Right-¬¥î
|
||
ld hl,RFull
|
||
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ¥«¨
|
||
bit 0,a ; full
|
||
jr nz,prep_default3__
|
||
ld hl,RMed
|
||
bit 1,a ; medium
|
||
jr nz,prep_default3__
|
||
ld hl,RBrief
|
||
bit 2,a ; brief
|
||
jr nz,prep_default3__
|
||
ld hl,RInfo
|
||
bit 3,a ; info
|
||
jr nz,prep_default3__
|
||
ld hl,RQview ; qview
|
||
prep_default3__:
|
||
ld (hl),c
|
||
; á®àâ¨à®¢ª
|
||
ld hl,RName
|
||
ld a,(sort_type1) ; á®àâ. ¯ áá. ¯ ¥«¨
|
||
cp "n"
|
||
jr z,prep_default4__
|
||
ld hl,RExt
|
||
cp "x"
|
||
jr z,prep_default4__
|
||
ld hl,RDate
|
||
cp "d"
|
||
jr z,prep_default4__
|
||
ld hl,RSize
|
||
cp "s"
|
||
jr z,prep_default4__
|
||
ld hl,RUnsort
|
||
prep_default4__:
|
||
ld (hl),c
|
||
ret
|