mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-18 02:30:50 +00:00
Calc: sort out mouse queries - WIP
This commit is contained in:
parent
9c57fa6c92
commit
f0189e3d96
@ -122,12 +122,18 @@ L08C4: rts
|
|||||||
state: .byte $00
|
state: .byte $00
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
L08C6: .byte $00
|
|
||||||
L08C7: .byte $00,$00,$00
|
|
||||||
|
|
||||||
.proc text_pos_params1
|
keychar: ; this params block is getting reused "creatively"
|
||||||
left: .word 0
|
keydown := * + 1
|
||||||
base: .word 0
|
tpp := * + 4
|
||||||
|
tpp1l := * + 4
|
||||||
|
tpp1b := * + 6
|
||||||
|
.proc get_mouse_params
|
||||||
|
xcoord: .word 0
|
||||||
|
ycoord: .word 0
|
||||||
|
elem: .byte 0
|
||||||
|
id: .byte 0
|
||||||
|
.word 0 ; ???
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
.byte $00,$00
|
.byte $00,$00
|
||||||
@ -551,7 +557,7 @@ L0DC9: A2D_CALL $2A, button_state_params
|
|||||||
lda button_state_params::state
|
lda button_state_params::state
|
||||||
cmp #$01
|
cmp #$01
|
||||||
bne L0DDC
|
bne L0DDC
|
||||||
jsr L0DE6
|
jsr on_click
|
||||||
jmp L0DC9
|
jmp L0DC9
|
||||||
|
|
||||||
L0DDC: cmp #$03
|
L0DDC: cmp #$03
|
||||||
@ -559,30 +565,33 @@ L0DDC: cmp #$03
|
|||||||
jsr L0E6F
|
jsr L0E6F
|
||||||
jmp L0DC9
|
jmp L0DC9
|
||||||
|
|
||||||
L0DE6: lda LCBANK1
|
on_click:
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
A2D_CALL A2D_GET_MOUSE, L08C6
|
lda LCBANK1
|
||||||
|
A2D_CALL A2D_GET_MOUSE, get_mouse_params
|
||||||
lda ROMIN2
|
lda ROMIN2
|
||||||
lda text_pos_params1::left
|
lda get_mouse_params::elem
|
||||||
cmp #$02
|
cmp #A2D_ELEM_CLIENT ; Less than CLIENT is MENU or DESKTOP
|
||||||
bcc L0E03
|
bcc ignore_click
|
||||||
lda text_pos_params1::left+1
|
lda get_mouse_params::id
|
||||||
cmp #window_id
|
cmp #window_id ; This window?
|
||||||
beq L0E04
|
beq :+
|
||||||
L0E03: rts
|
|
||||||
|
|
||||||
L0E04: lda text_pos_params1::left
|
ignore_click:
|
||||||
cmp #$02
|
rts
|
||||||
bne L0E13
|
|
||||||
jsr L0E95
|
: lda get_mouse_params::elem
|
||||||
bcc L0E03
|
cmp #A2D_ELEM_CLIENT ; Client area?
|
||||||
|
bne :+
|
||||||
|
jsr L0E95 ; try to translate click into key
|
||||||
|
bcc ignore_click
|
||||||
jmp process_key
|
jmp process_key
|
||||||
|
|
||||||
L0E13: cmp #$05
|
: cmp #A2D_ELEM_CLOSE ; Close box?
|
||||||
bne L0E53
|
bne :+
|
||||||
A2D_CALL A2D_BTN_CLICK, button_click_params
|
A2D_CALL A2D_BTN_CLICK, button_click_params
|
||||||
lda button_click_params::state
|
lda button_click_params::state
|
||||||
beq L0E03
|
beq ignore_click
|
||||||
exit: lda LCBANK1
|
exit: lda LCBANK1
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
A2D_CALL A2D_DESTROY_WINDOW, destroy_window_params
|
A2D_CALL A2D_DESTROY_WINDOW, destroy_window_params
|
||||||
@ -591,19 +600,28 @@ exit: lda LCBANK1
|
|||||||
.addr 0
|
.addr 0
|
||||||
lda ROMIN2
|
lda ROMIN2
|
||||||
A2D_CALL $1A, L08D5
|
A2D_CALL $1A, L08D5
|
||||||
ldx #$09
|
|
||||||
L0E3F: lda L0E4A,x
|
|
||||||
sta L0020,x
|
|
||||||
dex
|
|
||||||
bpl L0E3F
|
|
||||||
jmp L0020
|
|
||||||
|
|
||||||
|
.proc do_close
|
||||||
|
;; Copy following routine to ZP and invoke it
|
||||||
|
zp_stash := $20
|
||||||
|
|
||||||
|
ldx #(routine_end - routine)
|
||||||
|
loop: lda routine,x
|
||||||
|
sta zp_stash,x
|
||||||
|
dex
|
||||||
|
bpl loop
|
||||||
|
jmp zp_stash
|
||||||
|
|
||||||
|
.proc routine
|
||||||
L0E4A: sta RAMRDOFF
|
L0E4A: sta RAMRDOFF
|
||||||
sta RAMWRTOFF
|
sta RAMWRTOFF
|
||||||
jmp exit_da
|
jmp exit_da
|
||||||
|
.endproc
|
||||||
|
routine_end := * ; Can't use .sizeof before the .proc definition
|
||||||
|
.endproc
|
||||||
|
|
||||||
L0E53: cmp #$03
|
: cmp #A2D_ELEM_TITLE ; Title bar?
|
||||||
bne L0E03
|
bne ignore_click
|
||||||
lda #window_id
|
lda #window_id
|
||||||
sta button_state_params::state
|
sta button_state_params::state
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
@ -614,9 +632,9 @@ L0E53: cmp #$03
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
.proc L0E6F
|
.proc L0E6F
|
||||||
lda L08C7
|
lda keydown
|
||||||
bne bail
|
bne bail
|
||||||
lda L08C6 ; check key
|
lda keychar ; check key
|
||||||
cmp #$1B ; Escape?
|
cmp #$1B ; Escape?
|
||||||
bne trydel
|
bne trydel
|
||||||
lda L0BC5
|
lda L0BC5
|
||||||
@ -638,11 +656,11 @@ L0E94: rts ; used by prev/next proc
|
|||||||
L0E95: lda #window_id
|
L0E95: lda #window_id
|
||||||
sta button_state_params::state
|
sta button_state_params::state
|
||||||
A2D_CALL $46, button_state_params
|
A2D_CALL $46, button_state_params
|
||||||
lda text_pos_params1::left+1 ; must have alternate meaning here
|
lda tpp1l+1 ; must have alternate meaning here
|
||||||
ora text_pos_params1::base+1
|
ora tpp1b+1
|
||||||
bne L0E94
|
bne L0E94
|
||||||
lda text_pos_params1::base ; click y
|
lda tpp1b ; click y
|
||||||
ldx text_pos_params1::left ; click x
|
ldx tpp1l ; click x
|
||||||
|
|
||||||
border_lt := 1 ; border width pixels (left/top)
|
border_lt := 1 ; border width pixels (left/top)
|
||||||
border_br := 2 ; (bottom/right)
|
border_br := 2 ; (bottom/right)
|
||||||
@ -687,7 +705,7 @@ L0E95: lda #window_id
|
|||||||
|
|
||||||
: cmp #82 ; special case for tall + button
|
: cmp #82 ; special case for tall + button
|
||||||
bcs :+
|
bcs :+
|
||||||
lda text_pos_params1::left
|
lda tpp1l
|
||||||
cmp #97
|
cmp #97
|
||||||
bcc miss
|
bcc miss
|
||||||
cmp #116
|
cmp #116
|
||||||
@ -703,8 +721,8 @@ L0E95: lda #window_id
|
|||||||
lda row5_lookup,x
|
lda row5_lookup,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
: lda text_pos_params1::left ; special case for wide 0 button
|
: lda tpp1l ; special case for wide 0 button
|
||||||
cmp #12
|
cmp #col1_left-1
|
||||||
bcc miss
|
bcc miss
|
||||||
cmp #'='
|
cmp #'='
|
||||||
bcs miss
|
bcs miss
|
||||||
@ -1129,7 +1147,7 @@ check_button:
|
|||||||
lda #window_id
|
lda #window_id
|
||||||
sta button_state_params::state
|
sta button_state_params::state
|
||||||
A2D_CALL $46, button_state_params
|
A2D_CALL $46, button_state_params
|
||||||
A2D_CALL A2D_SET_TEXT_POS, text_pos_params1
|
A2D_CALL A2D_SET_TEXT_POS, tpp
|
||||||
A2D_CALL $13, 0, c13_addr
|
A2D_CALL $13, 0, c13_addr
|
||||||
bne :+
|
bne :+
|
||||||
lda $FC
|
lda $FC
|
||||||
|
Loading…
x
Reference in New Issue
Block a user