FFORMAT/BUTTON.ASM
Anatoliy Belyanskiy 3ef8aefe30 Begin
2024-06-09 08:13:19 +10:00

220 lines
5.1 KiB
NASM
Executable File

;=====================================================================
;
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ "Button"
;
;=====================================================================
EvButton: ld hl,what ; ¯®«¥ ᮡë⨩
ld a,(hl) ;+0
inc hl
cp evMouseFr
jr z,EBmouse
cp evKeyboard
jp z,EBkeys
cp evCombKey
ret nz
bit 7,(ix+1) ; sel or nosel
ret nz ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥­
ld b,(hl) ;+1 what
inc hl
ld a,(hl) ;+2 what
cp 56h ; ªãàá®à ¢¯à ¢®
jr z,tb__
push ix
ld e,(ix+0) ; à §¬¥à â ¡«¨æë "Button"
ld d,0
add ix,de
bit 7,(ix+0)
pop ix
ret z ; ¥é¥ ­¥ ª®­¥æ ®¡ê¥ªâ®¢
cp 54h ; ªãàá®à ¢«¥¢®
jr z,tb__
ld a,b
and 00111111b ; ¡¨âë Ctrl, Alt
ret nz
ld a,(hl) ;+2 what
cp 15+80h ; Tab ᪥­-ª®¤+80h
ret nz
; Shift+Tab
tb__: xor a
ld (_Push+1),a ; Push flag
jp SetButton ; select my
; ‘®¡ë⨥ - ¬ë誠
EBmouse: ld e,(hl) ;+1 X coord
inc hl
ld d,(hl) ;+2 Y coord
ld a,d
cp (ix+4) ; Y pos button
jr nz,get_fr ; if <> exit
ld a,e
bit 7,(ix+2)
jr nz,$+6
cp (ix+2) ; Xo pos
jr c,get_fr ; <
bit 7,(ix+3)
jr nz,get_fr
cp (ix+3) ; Xi pos
jr nc,get_fr ; >
xor a
inc a
ld (_Push+1),a ; Push flag
bit 7,(ix+1)
jr nz,_Push
jr SetButton
; ‘®¡ë⨥ - ®¡ëç­ ï ª« ¢¨è 
EBkeys: xor a
ld (_Push+1),a ; Push flag
ld a,(hl) ;+1 what ª®¤ ª« ¢¨è¨
bit 7,(ix+1) ; Sel or nosel
jr nz,EBkeyN
cp 9 ; Tab
jr z,SetButton ; if tab then set button
jr EBkeyN1
;
EBkeyN: cp 0Dh ; Enter
jr z,EBent
EBkeyN1: inc hl
ld a,(hl) ;+2 what ᪥­-ª®¤
cp (ix+6) ; hot-¡ãª¢ 
ret nz
EBent: ld a,1
ld (_Push+1),a
SetButton: call MoveObj ; Select Button
call ResDialInv ; Reset previos invert
ld ix,DialTab+5
;ld de,color_array+34 ; 梥â Selected buttons
;ld (set_dial_tmp_inv+1),de
ld e,(ix+2) ; Xo
ld d,(ix+4) ; Y
ld a,(ix+3) ; Xi
sub e
ld c,a
call SetDialInv ; ¢ë¤¥«¨âì ¡ãâ®­ 梥⮬
;ld de,color_array+26 ; 梥â Selected title (®¡ê¥ªâ )
;ld (set_dial_tmp_inv+1),de
_Push: ld a,0
or a
jr z,BTexit
call PushBut ; § á¢¥â¨âì ªãàá®à
ld hl,what
ld (hl),evCommand
inc hl
ld a,(ix+5) ; ­®¬¥à ª®¬ ­¤ë
ld (hl),a
get_fr: jp GetFire
;
; Button exit
BTexit: ld hl,what
ld (hl),evNothing
ret
;[]===========================================================[]
; Event button
; IX,DialTab+5
;EButton:LD HL,what ; ᯨ᮪ ᮡë⨩
; LD A,(HL)
; INC HL
; CP evMouseFr
; JR Z,EBmouse
; CP evKeyboard
; JR Z,EBkeys
; CP evCombKey
; RET NZ
; BIT 7,(IX+1)
; RET NZ ; ¢ë©â¨ - ®¡ê¥ªâ ¢ë¤¥«¥­
; PUSH IX
; LD E,(IX+0)
; LD D,0
; ADD IX,DE
; BIT 7,(IX+0)
; POP IX
; RET Z
; INC HL
; LD A,(HL) ;+1
; CP 9 ; Shift+Tab
; RET NZ
; xor a
; LD (_Push+1),A ; Push flag
; JP SetButt ; ¢ë¤¥«¨âì ¯à¥¤. ®¡ê¥ªâ
; ‘®¡ë⨥ ®â ¬ë誨,
; ¯à®¢¥àª  ª®®à¤¨­ â
;EBmouse:LD E,(HL) ;Xcoord
; INC HL
; LD D,(HL) ;Ycoord
; LD A,D
; CP (IX+4) ;Y pos button
; RET NZ ;if <> exit
; LD A,E
; BIT 7,(IX+2)
; JR NZ,$+6
; CP (IX+2) ;Xo pos
; RET C ;<
; BIT 7,(IX+3)
; RET NZ
; CP (IX+3) ;Xi pos
; RET NC ;>
; SUB A
; LD (Kbutt+1),A
; INC A
; LD (_Push+1),A ;Push flag
; BIT 7,(IX+1)
; JR NZ,_Push
; JR SetButt
; ‘®¡ë⨥ - ­ ¦ â  ª« ¢¨è 
;EBkeys: xor a
; LD (_Push+1),A ; Push flag
; LD A,(HL)
; cp " "
; jr c,ebkey1
; cp "A"
; ret c
;ebkey1: inc hl ; hl,what+2
; bit 7,(hl) ; ­ ¦ â  ª« ¢¨è  á Ctrl,Shift,Alt ?
; ret nz ; ¤ , ¢ë©â¨
; RES 5,A ; a..z -> A..Z
; BIT 7,(IX+1) ; ¢ë¡à ­  ¨«¨ ­¥ ¢ë¡à ­ 
; JR NZ,EBkeyN
; CP 9 ; Tab
; JR Z,SetButt ; ¢ë¤¥«¨âì á«¥¤. ®¡ê¥ªâ
; cp 0Dh ; ###
; jr z,SetButt
; JR EBkeyN1
;
;EBkeyN: CP 0Dh
; JR Z,EBent
;EBkeyN1:CP (IX+6) ; Hot key
; RET NZ
;EBent: LD A,1
; LD (_Push+1),A
; LD (Kbutt+1),A
;SetButt:CALL MoveObj ; Select Button
; CALL ResDialInv ; Reset previos invert
; LD IX,DialTab+5
; LD E,(IX+2) ; Xo
; LD D,(IX+4) ; Y
; LD A,(IX+3) ; Xi
; SUB E
; LD C,A
; CALL SetDialInv
;_Push: LD A,0
; OR A
; JP Z,BTexit
; CALL PushBut ; Push/pop ¡ãâ®­
; JP C,BTexit
; LD HL,what
; LD (HL),evCommand
; INC HL
; LD A,(IX+5)
; LD (HL),A
; RET
;Button exit
;BTexit: LD HL,what
; LD (HL),evNothing
; RET