Identify QUERY_BOX and params

This commit is contained in:
Joshua Bell 2017-09-09 18:11:01 -07:00
parent 6039648211
commit 4b9f4f2cc3
2 changed files with 46 additions and 31 deletions

View File

@ -146,12 +146,12 @@ A2D_CREATE_WINDOW := $38
;; .word width pixels ;; .word width pixels
;; .word height ;; .word height
A2D_DESTROY_WINDOW := $39 A2D_DESTROY_WINDOW := $39
;; .byte id ;; .byte id
A2D_UNK_3C := $3C ; Unknown, used in calculator A2D_QUERY_BOX := $3C ; get client "box" of window
;; .byte id window
;; .addr box box definition to populate, like A2D_TEXT_BOX1
A2D_QUERY_TARGET := $40 A2D_QUERY_TARGET := $40
;; .word queryx (relative to screen) ;; .word queryx (relative to screen)

View File

@ -117,8 +117,8 @@ call_init:
skip: lda #0 skip: lda #0
sta L089D sta L089D
lda ROMIN2 lda ROMIN2
A2D_CALL $3C, L08D1 A2D_CALL A2D_QUERY_BOX, query_box_params
A2D_CALL A2D_TEXT_BOX1, L0C6E A2D_CALL A2D_TEXT_BOX1, box_params
rts rts
.proc routine .proc routine
@ -139,22 +139,21 @@ L089D: .byte 0
;; Called after window drag is complete ;; Called after window drag is complete
L089E: sta L08D1 L089E: sta query_box_params_id
lda create_window_params_top lda create_window_params_top
cmp #$BF cmp #screen_height - 1
bcc :+ bcc :+
lda #$80 lda #$80
sta L089D sta L089D
rts rts
: A2D_CALL $3C, L08D1 : A2D_CALL A2D_QUERY_BOX, query_box_params
A2D_CALL A2D_TEXT_BOX1, L0C6E A2D_CALL A2D_TEXT_BOX1, box_params
lda L08D1 lda query_box_params_id
cmp #window_id cmp #window_id
bne L08C4 bne :+
jmp draw_window jmp draw_window
: rts
L08C4: rts
;;; ================================================== ;;; ==================================================
;;; Call Params (and other data) ;;; Call Params (and other data)
@ -199,9 +198,12 @@ id: .byte 0
state: .byte 0 state: .byte 0
.endproc .endproc
;; param block for a 3C call ;; param block for a A2D_QUERY_BOX call
L08D1: .byte $00 ; set to window_id .proc query_box_params
.addr L0C6E id: .byte 0
.addr box_params
.endproc
query_box_params_id := query_box_params::id
;; param block for a 1A call ;; param block for a 1A call
L08D4: .byte $80 L08D4: .byte $80
@ -665,16 +667,16 @@ pixels: .byte px(%1000001)
.byte px(%1001001) .byte px(%1001001)
.endproc .endproc
;; param block for a $03 and TEXT_BOX1 calls, and ref'd in $3C call ;; param block for a $03 and TEXT_BOX1 calls, and ref'd in A2D_QUERY_BOX call
.proc L0C6E .proc box_params
left: .word 0 left: .word 0
top: .word 0 top: .word 0
.word 0 ; ??? $03 call sets to $2000 (hires) .word 0 ; $03 call sets to $2000 (hires)
.word 0 ; ??? $03 call sets to $80 .word 0 ; ??? $03 call sets to $80
hoffset:.word 0 hoffset:.word 0
voffset:.word 0 voffset:.word 0
width: .word 0 ; $03 call sets to 559 width: .word 0 ; $03 call sets to screen_width-1
height: .word 0 ; $03 call sets to 191 height: .word 0 ; $03 call sets to screen_height-1
;; unknown from here ;; unknown from here
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00 ; filled with $FF by $03 call .byte $00,$00,$00,$00,$00,$00,$00,$00,$00 ; filled with $FF by $03 call
@ -685,8 +687,21 @@ height: .word 0 ; $03 call sets to 191
.word 0 ; $03 call sets to $88 (136) .word 0 ; $03 call sets to $88 (136)
.endproc .endproc
L0C93: .byte $00,$00,$0D,$00,$00,$20,$80,$00 menu_bar_height := 13
.byte $00,$00,$00,$00,$2F,$02,$B1,$00 screen_width := 560
screen_height := 192
hires := $2000
;; params for A2D_TEXT_BOX2 when decorating title bar
.proc screen_box
.word 0
.word menu_bar_height
.word hires
.word $80 ; ??
.word 0, 0 ; hoffset/voffset
.word screen_width - 1
.word screen_height - menu_bar_height - 2
.endproc
L0CA3: .byte $00 ; arg for "normal" fill mode? L0CA3: .byte $00 ; arg for "normal" fill mode?
.byte $01,$02 ; ?? .byte $01,$02 ; ??
@ -715,7 +730,7 @@ width_b: .word window_width
height_b:.word window_height height_b:.word window_height
left: .word default_left left: .word default_left
top: .word default_top top: .word default_top
.word $2000 ;hires? .word hires
.word $80 .word $80
hoffset:.word 0 hoffset:.word 0
voffset:.word 0 voffset:.word 0
@ -725,7 +740,7 @@ height: .word window_height
create_window_params_top := create_window_params::top create_window_params_top := create_window_params::top
;; ??? ;; ???
;; Same as latter part of L0C6E block after $03 call fills it in ;; Same as latter part of box_params block after $03 call fills it in
.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.byte $00,$00 .byte $00,$00
.byte $00,$00,$00,$01,$01,$00,$7F,$00 .byte $00,$00,$00,$01,$01,$00,$7F,$00
@ -752,8 +767,8 @@ L0D18: sta ALTZPON
lda LCBANK1 lda LCBANK1
A2D_CALL $1A, L08D4 A2D_CALL $1A, L08D4
A2D_CALL A2D_CREATE_WINDOW, create_window_params A2D_CALL A2D_CREATE_WINDOW, create_window_params
A2D_CALL $03, L0C6E ; get display state? A2D_CALL $03, box_params ; get display state?
A2D_CALL A2D_TEXT_BOX1, L0C6E ; set clipping bounds? A2D_CALL A2D_TEXT_BOX1, box_params ; set clipping bounds?
A2D_CALL $2B, 0 A2D_CALL $2B, 0
lda #$01 lda #$01
sta input_state_params::state sta input_state_params::state
@ -1610,12 +1625,12 @@ draw_title_bar:
bcs :+ bcs :+
dex dex
: stx title_bar_decoration::top+1 : stx title_bar_decoration::top+1
A2D_CALL A2D_TEXT_BOX2, L0C93 A2D_CALL A2D_TEXT_BOX2, screen_box ; set clipping rect to whole screen
A2D_CALL A2D_DRAW_PATTERN, title_bar_decoration ; Draws decoration in title bar A2D_CALL A2D_DRAW_PATTERN, title_bar_decoration ; Draws decoration in title bar
lda #window_id lda #window_id
sta L08D1 sta query_box_params::id
A2D_CALL $3C, L08D1 A2D_CALL A2D_QUERY_BOX, query_box_params ; get client rect
A2D_CALL A2D_TEXT_BOX1, L0C6E A2D_CALL A2D_TEXT_BOX1, box_params ; clip rect?
A2D_CALL A2D_SHOW_CURSOR A2D_CALL A2D_SHOW_CURSOR
jsr display_buffer2 jsr display_buffer2
rts rts