resize calls/params

This commit is contained in:
Joshua Bell 2017-09-01 19:54:04 -07:00
parent fe693d5ad4
commit a1805b2745
4 changed files with 72 additions and 52 deletions

View File

@ -50,12 +50,17 @@ A2D_BTN_CLICK := $43
;; .byte ?? ;; .byte ??
;; .byte ?? ;; .byte ??
A2D_DRAG_RESIZE := $45
A2D_QUERY_CLIENT:= $48 A2D_QUERY_CLIENT:= $48
;; .word xcoord of query ;; .word xcoord of query
;; .word ycoord of query ;; .word ycoord of query
;; .byte part (0 = client, 1 = vscroll, 2 = hscroll) ;; .byte part (0 = client, 1 = vscroll, 2 = hscroll)
;; .byte scroll (1 = up/left, 2 = down/right, 3 = above/before, 4 = below/after, 5 = thumb) ;; .byte scroll (1 = up/left, 2 = down/right, 3 = above/before, 4 = below/after, 5 = thumb)
A2D_RESIZE_WINDOW := $49
A2D_DRAG_SCROLL:= $4A A2D_DRAG_SCROLL:= $4A
;; .byte type (1 = vscroll, 2 = hscroll) ;; .byte type (1 = vscroll, 2 = hscroll)
;; .word xcoord of mouse ;; .word xcoord of mouse
@ -67,6 +72,8 @@ A2D_UPDATE_SCROLL:= $4B
;; .byte type (1 = vertical, 2 = horizontal) ;; .byte type (1 = vertical, 2 = horizontal)
;; .byte pos (new position 0...250) ;; .byte pos (new position 0...250)
;;; Used in A2D_GET_MOUSE ;;; Used in A2D_GET_MOUSE
A2D_ELEM_DESKTOP:= 0 A2D_ELEM_DESKTOP:= 0
A2D_ELEM_MENU := 1 A2D_ELEM_MENU := 1

View File

@ -127,12 +127,17 @@ Current file: stf.s
000800 2 ;; .byte ?? 000800 2 ;; .byte ??
000800 2 ;; .byte ?? 000800 2 ;; .byte ??
000800 2 000800 2
000800 2 A2D_DRAG_RESIZE := $45
000800 2
000800 2 A2D_QUERY_CLIENT:= $48 000800 2 A2D_QUERY_CLIENT:= $48
000800 2 ;; .word xcoord of query 000800 2 ;; .word xcoord of query
000800 2 ;; .word ycoord of query 000800 2 ;; .word ycoord of query
000800 2 ;; .byte part (0 = client, 1 = vscroll, 2 = hscroll) 000800 2 ;; .byte part (0 = client, 1 = vscroll, 2 = hscroll)
000800 2 ;; .byte scroll (1 = up/left, 2 = down/right, 3 = above/before, 4 = below/after, 5 = thumb) 000800 2 ;; .byte scroll (1 = up/left, 2 = down/right, 3 = above/before, 4 = below/after, 5 = thumb)
000800 2 000800 2
000800 2 A2D_RESIZE_WINDOW := $49
000800 2
000800 2
000800 2 A2D_DRAG_SCROLL:= $4A 000800 2 A2D_DRAG_SCROLL:= $4A
000800 2 ;; .byte type (1 = vscroll, 2 = hscroll) 000800 2 ;; .byte type (1 = vscroll, 2 = hscroll)
000800 2 ;; .word xcoord of mouse 000800 2 ;; .word xcoord of mouse
@ -144,6 +149,8 @@ Current file: stf.s
000800 2 ;; .byte type (1 = vertical, 2 = horizontal) 000800 2 ;; .byte type (1 = vertical, 2 = horizontal)
000800 2 ;; .byte pos (new position 0...250) 000800 2 ;; .byte pos (new position 0...250)
000800 2 000800 2
000800 2
000800 2
000800 2 ;;; Used in A2D_GET_MOUSE 000800 2 ;;; Used in A2D_GET_MOUSE
000800 2 A2D_ELEM_DESKTOP:= 0 000800 2 A2D_ELEM_DESKTOP:= 0
000800 2 A2D_ELEM_MENU := 1 000800 2 A2D_ELEM_MENU := 1
@ -436,18 +443,19 @@ Current file: stf.s
000970 1 button_state: 000970 1 button_state:
000970 1 00 .byte $00 000970 1 00 .byte $00
000971 1 000971 1
000971 1 .proc mouse_data ; queried by main input loop 000971 1 .proc mouse_params ; queried by main input loop
000971 1 00 00 xcoord: .word 0 000971 1 00 00 xcoord: .word 0
000973 1 00 00 ycoord: .word 0 000973 1 00 00 ycoord: .word 0
000975 1 00 elem: .byte 0 000975 1 00 elem: .byte 0
000976 1 00 win: .byte 0 000976 1 00 win: .byte 0
000977 1 .endproc 000977 1 .endproc
000977 1 000977 1
000977 1 ;; param block used in dead code (resize button handler?) 000977 1 .proc resize_drag_params
000977 1 64 L0977: .byte $64 ; ??? window id again? 000977 1 64 id: .byte window_id
000978 1 00 00 xcoord1:.word 0 ; ??? 000978 1 00 00 xcoord: .word 0
00097A 1 00 00 ycoord1:.word 0 ; ??? 00097A 1 00 00 ycoord: .word 0
00097C 1 00 .byte 0 ; ??? 00097C 1 00 .byte 0 ; ???
00097D 1 .endproc
00097D 1 00097D 1
00097D 1 .proc close_btn ; queried after close clicked to see if aborted/finished 00097D 1 .proc close_btn ; queried after close clicked to see if aborted/finished
00097D 1 00 state: .byte 0 ; 0 = aborted, 1 = clicked 00097D 1 00 state: .byte 0 ; 0 = aborted, 1 = clicked
@ -462,8 +470,10 @@ Current file: stf.s
000986 1 .endproc 000986 1 .endproc
000986 1 000986 1
000986 1 ;; param block used in dead code (resize?) 000986 1 ;; param block used in dead code (resize?)
000986 1 .proc resize_window_params
000986 1 00 L0986: .byte $00 000986 1 00 L0986: .byte $00
000987 1 00 L0987: .byte $00 000987 1 00 L0987: .byte $00
000988 1 .endproc
000988 1 000988 1
000988 1 .proc update_scroll_params ; called to update scroll bar position 000988 1 .proc update_scroll_params ; called to update scroll bar position
000988 1 00 type: .byte $00 ; 1 = vertical, 2 = horizontal ? 000988 1 00 type: .byte $00 ; 1 = vertical, 2 = horizontal ?
@ -690,25 +700,25 @@ Current file: stf.s
000ADA 1 C9 01 cmp #1 ; was clicked? 000ADA 1 C9 01 cmp #1 ; was clicked?
000ADC 1 D0 F3 bne input_loop ; nope, keep waiting 000ADC 1 D0 F3 bne input_loop ; nope, keep waiting
000ADE 1 000ADE 1
000ADE 1 20 00 40 40 A2D_CALL A2D_GET_MOUSE, mouse_data 000ADE 1 20 00 40 40 A2D_CALL A2D_GET_MOUSE, mouse_params
000AE2 1 71 09 000AE2 1 71 09
000AE4 1 AD 76 09 lda mouse_data::win ; in our window? 000AE4 1 AD 76 09 lda mouse_params::win ; in our window?
000AE7 1 C9 64 cmp #window_id 000AE7 1 C9 64 cmp #window_id
000AE9 1 D0 E6 bne input_loop 000AE9 1 D0 E6 bne input_loop
000AEB 1 000AEB 1
000AEB 1 ;; which part of the window? 000AEB 1 ;; which part of the window?
000AEB 1 AD 75 09 lda mouse_data::elem 000AEB 1 AD 75 09 lda mouse_params::elem
000AEE 1 C9 05 cmp #A2D_ELEM_CLOSE 000AEE 1 C9 05 cmp #A2D_ELEM_CLOSE
000AF0 1 F0 2F beq on_close_btn_down 000AF0 1 F0 2F beq on_close_btn_down
000AF2 1 000AF2 1
000AF2 1 AE 71 09 ldx mouse_data::xcoord ; stash mouse location 000AF2 1 AE 71 09 ldx mouse_params::xcoord ; stash mouse location
000AF5 1 8E 78 09 stx xcoord1 000AF5 1 8E 78 09 stx resize_drag_params::xcoord
000AF8 1 8E 80 09 stx query_client_params::xcoord 000AF8 1 8E 80 09 stx query_client_params::xcoord
000AFB 1 AE 72 09 ldx mouse_data::xcoord+1 000AFB 1 AE 72 09 ldx mouse_params::xcoord+1
000AFE 1 8E 79 09 stx xcoord1+1 000AFE 1 8E 79 09 stx resize_drag_params::xcoord+1
000B01 1 8E 81 09 stx query_client_params::xcoord+1 000B01 1 8E 81 09 stx query_client_params::xcoord+1
000B04 1 AE 73 09 ldx mouse_data::ycoord 000B04 1 AE 73 09 ldx mouse_params::ycoord
000B07 1 8E 7A 09 stx ycoord1 000B07 1 8E 7A 09 stx resize_drag_params::ycoord
000B0A 1 8E 82 09 stx query_client_params::ycoord 000B0A 1 8E 82 09 stx query_client_params::ycoord
000B0D 1 000B0D 1
000B0D 1 C9 03 cmp #A2D_ELEM_TITLE 000B0D 1 C9 03 cmp #A2D_ELEM_TITLE
@ -735,9 +745,9 @@ Current file: stf.s
000B3B 1 60 rts ; exits input loop 000B3B 1 60 rts ; exits input loop
000B3C 1 .endproc 000B3C 1 .endproc
000B3C 1 000B3C 1
000B3C 1 ;;; How would control get here???? Dead code??? 000B3C 1 ;;; This is dead code (no resize handle!) and may be buggy
000B3C 1 .proc maybe_dead_code ; window move routine, maybe? 000B3C 1 .proc on_resize_click
000B3C 1 20 00 40 45 A2D_CALL $45, L0977 ; run resize loop? 000B3C 1 20 00 40 45 A2D_CALL A2D_DRAG_RESIZE, resize_drag_params
000B40 1 77 09 000B40 1 77 09
000B42 1 20 FD 10 jsr L10FD ; call $4015 on main 000B42 1 20 FD 10 jsr L10FD ; call $4015 on main
000B45 1 20 88 10 jsr L1088 000B45 1 20 88 10 jsr L1088
@ -781,10 +791,10 @@ Current file: stf.s
000B98 1 ED 62 09 sbc window_width+1 000B98 1 ED 62 09 sbc window_width+1
000B9B 1 85 07 sta $07 000B9B 1 85 07 sta $07
000B9D 1 20 DF 10 jsr L10DF 000B9D 1 20 DF 10 jsr L10DF
000BA0 1 8D 87 09 sta L0987 000BA0 1 8D 87 09 sta resize_window_params::L0987
000BA3 1 A9 02 lda #$02 000BA3 1 A9 02 lda #$02
000BA5 1 8D 86 09 sta L0986 000BA5 1 8D 86 09 sta resize_window_params::L0986
000BA8 1 20 00 40 49 A2D_CALL $49, L0986 ; change to clamped size ??? 000BA8 1 20 00 40 49 A2D_CALL A2D_RESIZE_WINDOW, resize_window_params ; change to clamped size ???
000BAC 1 86 09 000BAC 1 86 09
000BAE 1 20 98 11 jsr calc_and_draw_mode 000BAE 1 20 98 11 jsr calc_and_draw_mode
000BB1 1 4C F9 0D jmp L0DF9 000BB1 1 4C F9 0D jmp L0DF9
@ -847,7 +857,7 @@ Current file: stf.s
000C1A 1 AD 9D 09 lda window_params::vscroll_pos 000C1A 1 AD 9D 09 lda window_params::vscroll_pos
000C1D 1 ED 6E 09 sbc track_scroll_delta 000C1D 1 ED 6E 09 sbc track_scroll_delta
000C20 1 B0 02 bcs store 000C20 1 B0 02 bcs store
000C22 1 A9 00 lda #$00 ; underflow 000C22 1 A9 00 lda #0 ; underflow
000C24 1 8D 89 09 store: sta update_scroll_params::pos 000C24 1 8D 89 09 store: sta update_scroll_params::pos
000C27 1 20 73 0C jsr update_scroll_pos 000C27 1 20 73 0C jsr update_scroll_pos
000C2A 1 90 E5 bcc loop ; repeat while button down 000C2A 1 90 E5 bcc loop ; repeat while button down
@ -1019,11 +1029,11 @@ Current file: stf.s
000D39 1 000D39 1
000D39 1 ;; Used at start of thumb drag 000D39 1 ;; Used at start of thumb drag
000D39 1 .proc do_thumb_drag 000D39 1 .proc do_thumb_drag
000D39 1 AD 71 09 lda mouse_data::xcoord 000D39 1 AD 71 09 lda mouse_params::xcoord
000D3C 1 8D 8B 09 sta thumb_drag_params::xcoord 000D3C 1 8D 8B 09 sta thumb_drag_params::xcoord
000D3F 1 AD 72 09 lda mouse_data::xcoord+1 000D3F 1 AD 72 09 lda mouse_params::xcoord+1
000D42 1 8D 8C 09 sta thumb_drag_params::xcoord+1 000D42 1 8D 8C 09 sta thumb_drag_params::xcoord+1
000D45 1 AD 73 09 lda mouse_data::ycoord 000D45 1 AD 73 09 lda mouse_params::ycoord
000D48 1 8D 8D 09 sta thumb_drag_params::ycoord 000D48 1 8D 8D 09 sta thumb_drag_params::ycoord
000D4B 1 20 00 40 4A A2D_CALL A2D_DRAG_SCROLL, thumb_drag_params 000D4B 1 20 00 40 4A A2D_CALL A2D_DRAG_SCROLL, thumb_drag_params
000D4F 1 8A 09 000D4F 1 8A 09
@ -1517,10 +1527,10 @@ Current file: stf.s
00113A 1 ;;; On Title Bar Click - if it's on the Fixed/Proportional label, 00113A 1 ;;; On Title Bar Click - if it's on the Fixed/Proportional label,
00113A 1 ;;; toggle it and update. 00113A 1 ;;; toggle it and update.
00113A 1 .proc on_title_bar_click 00113A 1 .proc on_title_bar_click
00113A 1 AD 72 09 lda mouse_data::xcoord+1 ; mouse x high byte? 00113A 1 AD 72 09 lda mouse_params::xcoord+1 ; mouse x high byte?
00113D 1 CD 85 11 cmp mode_box_left+1 00113D 1 CD 85 11 cmp mode_box_left+1
001140 1 D0 06 bne :+ 001140 1 D0 06 bne :+
001142 1 AD 71 09 lda mouse_data::xcoord 001142 1 AD 71 09 lda mouse_params::xcoord
001145 1 CD 84 11 cmp mode_box_left 001145 1 CD 84 11 cmp mode_box_left
001148 1 90 19 : bcc ignore 001148 1 90 19 : bcc ignore
00114A 1 AD 6F 09 lda fixed_mode_flag 00114A 1 AD 6F 09 lda fixed_mode_flag

Binary file not shown.

View File

@ -243,18 +243,19 @@ fixed_mode_flag:
button_state: button_state:
.byte $00 .byte $00
.proc mouse_data ; queried by main input loop .proc mouse_params ; queried by main input loop
xcoord: .word 0 xcoord: .word 0
ycoord: .word 0 ycoord: .word 0
elem: .byte 0 elem: .byte 0
win: .byte 0 win: .byte 0
.endproc .endproc
;; param block used in dead code (resize button handler?) .proc resize_drag_params
L0977: .byte $64 ; ??? window id again? id: .byte window_id
xcoord1:.word 0 ; ??? xcoord: .word 0
ycoord1:.word 0 ; ??? ycoord: .word 0
.byte 0 ; ??? .byte 0 ; ???
.endproc
.proc close_btn ; queried after close clicked to see if aborted/finished .proc close_btn ; queried after close clicked to see if aborted/finished
state: .byte 0 ; 0 = aborted, 1 = clicked state: .byte 0 ; 0 = aborted, 1 = clicked
@ -269,8 +270,10 @@ scroll: .byte 0 ; 1 = up, 2 = down, 3 = above, 4 = below, 5 = th
.endproc .endproc
;; param block used in dead code (resize?) ;; param block used in dead code (resize?)
.proc resize_window_params
L0986: .byte $00 L0986: .byte $00
L0987: .byte $00 L0987: .byte $00
.endproc
.proc update_scroll_params ; called to update scroll bar position .proc update_scroll_params ; called to update scroll bar position
type: .byte $00 ; 1 = vertical, 2 = horizontal ? type: .byte $00 ; 1 = vertical, 2 = horizontal ?
@ -489,24 +492,24 @@ input_loop:
cmp #1 ; was clicked? cmp #1 ; was clicked?
bne input_loop ; nope, keep waiting bne input_loop ; nope, keep waiting
A2D_CALL A2D_GET_MOUSE, mouse_data A2D_CALL A2D_GET_MOUSE, mouse_params
lda mouse_data::win ; in our window? lda mouse_params::win ; in our window?
cmp #window_id cmp #window_id
bne input_loop bne input_loop
;; which part of the window? ;; which part of the window?
lda mouse_data::elem lda mouse_params::elem
cmp #A2D_ELEM_CLOSE cmp #A2D_ELEM_CLOSE
beq on_close_btn_down beq on_close_btn_down
ldx mouse_data::xcoord ; stash mouse location ldx mouse_params::xcoord ; stash mouse location
stx xcoord1 stx resize_drag_params::xcoord
stx query_client_params::xcoord stx query_client_params::xcoord
ldx mouse_data::xcoord+1 ldx mouse_params::xcoord+1
stx xcoord1+1 stx resize_drag_params::xcoord+1
stx query_client_params::xcoord+1 stx query_client_params::xcoord+1
ldx mouse_data::ycoord ldx mouse_params::ycoord
stx ycoord1 stx resize_drag_params::ycoord
stx query_client_params::ycoord stx query_client_params::ycoord
cmp #A2D_ELEM_TITLE cmp #A2D_ELEM_TITLE
@ -531,9 +534,9 @@ title: jsr on_title_bar_click
rts ; exits input loop rts ; exits input loop
.endproc .endproc
;;; How would control get here???? Dead code??? ;;; This is dead code (no resize handle!) and may be buggy
.proc maybe_dead_code ; window move routine, maybe? .proc on_resize_click
A2D_CALL $45, L0977 ; run resize loop? A2D_CALL A2D_DRAG_RESIZE, resize_drag_params
jsr L10FD ; call $4015 on main jsr L10FD ; call $4015 on main
jsr L1088 jsr L1088
@ -576,10 +579,10 @@ L0B8B: sta window_params::L0998
sbc window_width+1 sbc window_width+1
sta $07 sta $07
jsr L10DF jsr L10DF
sta L0987 sta resize_window_params::L0987
lda #$02 lda #$02
sta L0986 sta resize_window_params::L0986
A2D_CALL $49, L0986 ; change to clamped size ??? A2D_CALL A2D_RESIZE_WINDOW, resize_window_params ; change to clamped size ???
jsr calc_and_draw_mode jsr calc_and_draw_mode
jmp L0DF9 jmp L0DF9
.endproc .endproc
@ -640,7 +643,7 @@ loop: lda window_params::vscroll_pos
lda window_params::vscroll_pos lda window_params::vscroll_pos
sbc track_scroll_delta sbc track_scroll_delta
bcs store bcs store
lda #$00 ; underflow lda #0 ; underflow
store: sta update_scroll_params::pos store: sta update_scroll_params::pos
jsr update_scroll_pos jsr update_scroll_pos
bcc loop ; repeat while button down bcc loop ; repeat while button down
@ -812,11 +815,11 @@ store: sta window_params::L099B
;; Used at start of thumb drag ;; Used at start of thumb drag
.proc do_thumb_drag .proc do_thumb_drag
lda mouse_data::xcoord lda mouse_params::xcoord
sta thumb_drag_params::xcoord sta thumb_drag_params::xcoord
lda mouse_data::xcoord+1 lda mouse_params::xcoord+1
sta thumb_drag_params::xcoord+1 sta thumb_drag_params::xcoord+1
lda mouse_data::ycoord lda mouse_params::ycoord
sta thumb_drag_params::ycoord sta thumb_drag_params::ycoord
A2D_CALL A2D_DRAG_SCROLL, thumb_drag_params A2D_CALL A2D_DRAG_SCROLL, thumb_drag_params
rts rts
@ -1300,10 +1303,10 @@ end: rts
;;; On Title Bar Click - if it's on the Fixed/Proportional label, ;;; On Title Bar Click - if it's on the Fixed/Proportional label,
;;; toggle it and update. ;;; toggle it and update.
.proc on_title_bar_click .proc on_title_bar_click
lda mouse_data::xcoord+1 ; mouse x high byte? lda mouse_params::xcoord+1 ; mouse x high byte?
cmp mode_box_left+1 cmp mode_box_left+1
bne :+ bne :+
lda mouse_data::xcoord lda mouse_params::xcoord
cmp mode_box_left cmp mode_box_left
: bcc ignore : bcc ignore
lda fixed_mode_flag lda fixed_mode_flag