Merge remote-tracking branch 'origin/disasm'

This commit is contained in:
Joshua Bell 2019-02-17 17:23:40 +11:00
commit c81191651b
2 changed files with 103 additions and 79 deletions

View File

@ -263,6 +263,7 @@ L41CB: ldx cached_window_id
by_icon: by_icon:
copy cached_window_id, getwinport_params2::window_id copy cached_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr cached_icons_window_to_screen jsr cached_icons_window_to_screen
COPY_BLOCK grafport2::cliprect, tmp_rect COPY_BLOCK grafport2::cliprect, tmp_rect
@ -279,9 +280,11 @@ L41FE: lda L4241
: inc L4241 : inc L4241
jmp L41FE jmp L41FE
L4227: copy #$00, draw_window_header_flag L4227: copy #0, draw_window_header_flag
copy cached_window_id, getwinport_params2::window_id copy cached_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr cached_icons_screen_to_window jsr cached_icons_screen_to_window
lda active_window_id lda active_window_id
jsr assign_window_portbits jsr assign_window_portbits
@ -2293,8 +2296,10 @@ L516D: lda L51EB,x
lda active_window_id lda active_window_id
jsr create_file_icon_ep2 jsr create_file_icon_ep2
copy active_window_id, getwinport_params2::window_id copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr cached_icons_window_to_screen jsr cached_icons_window_to_screen
copy #0, L51EF copy #0, L51EF
L518D: lda L51EF L518D: lda L51EF
@ -3076,7 +3081,7 @@ L578D: .byte 0
;;; Keyboard-based scrolling of window contents ;;; Keyboard-based scrolling of window contents
.proc cmd_scroll .proc cmd_scroll
jsr L5803 jsr get_active_window_scroll_info
loop: jsr get_event loop: jsr get_event
lda event_kind lda event_kind
cmp #MGTK::EventKind::button_down cmp #MGTK::EventKind::button_down
@ -3125,17 +3130,19 @@ vertical:
;;; ============================================================ ;;; ============================================================
.proc L5803 .proc get_active_window_scroll_info
jsr LoadActiveWindowIconTable jsr LoadActiveWindowIconTable
ldx active_window_id ldx active_window_id
dex dex
lda win_view_by_table,x lda win_view_by_table,x
sta active_window_view_by sta active_window_view_by
jsr L58C3 jsr get_active_window_hscroll_info
stax L585F sta horiz_scroll_pos
stx horiz_scroll_max
sty horiz_scroll_flag sty horiz_scroll_flag
jsr L58E2 jsr get_active_window_vscroll_info
stax L5861 sta vert_scroll_pos
stx vert_scroll_max
sty vert_scroll_flag sty vert_scroll_flag
rts rts
.endproc .endproc
@ -3143,126 +3150,132 @@ vertical:
;;; ============================================================ ;;; ============================================================
scroll_right: ; elevator right / contents left scroll_right: ; elevator right / contents left
ldax L585F lda horiz_scroll_pos
jsr L5863 ldx horiz_scroll_max
sta L585F jsr do_scroll_right
sta horiz_scroll_pos
rts rts
scroll_left: ; elevator left / contents right scroll_left: ; elevator left / contents right
lda L585F lda horiz_scroll_pos
jsr L587E jsr do_scroll_left
sta L585F sta horiz_scroll_pos
rts rts
scroll_down: ; elevator down / contents up scroll_down: ; elevator down / contents up
ldax L5861 lda vert_scroll_pos
jsr L5893 ldx vert_scroll_max
sta L5861 jsr do_scroll_down
sta vert_scroll_pos
rts rts
scroll_up: ; elevator up / contents down scroll_up: ; elevator up / contents down
lda L5861 lda vert_scroll_pos
jsr L58AE jsr do_scroll_up
sta L5861 sta vert_scroll_pos
rts rts
horiz_scroll_flag: .byte 0 ; can scroll horiz? horiz_scroll_flag: .byte 0 ; can scroll horiz?
vert_scroll_flag: .byte 0 ; can scroll vert? vert_scroll_flag: .byte 0 ; can scroll vert?
L585F: .word 0 horiz_scroll_pos: .byte 0
L5861: .word 0 horiz_scroll_max: .byte 0
vert_scroll_pos: .byte 0
vert_scroll_max: .byte 0
.proc L5863 .proc do_scroll_right
stx L587D stx max
cmp L587D cmp max
beq :+ beq :+
sta updatethumb_stash sta updatethumb_stash
inc updatethumb_stash inc updatethumb_stash
lda #MGTK::Ctl::horizontal_scroll_bar copy #MGTK::Ctl::horizontal_scroll_bar, updatethumb_which_ctl
sta updatethumb_which_ctl jsr update_scroll_thumb
jsr L5C54
lda updatethumb_stash lda updatethumb_stash
: rts : rts
L587D: .byte 0 max: .byte 0
.endproc .endproc
.proc L587E .proc do_scroll_left
beq :+ beq :+
sta updatethumb_stash sta updatethumb_stash
dec updatethumb_stash dec updatethumb_stash
lda #MGTK::Ctl::horizontal_scroll_bar copy #MGTK::Ctl::horizontal_scroll_bar, updatethumb_which_ctl
sta updatethumb_which_ctl jsr update_scroll_thumb
jsr L5C54
lda updatethumb_stash lda updatethumb_stash
: rts : rts
.byte 0 .byte 0
.endproc .endproc
.proc L5893 .proc do_scroll_down
stx L58AD stx max
cmp L58AD cmp max
beq :+ beq :+
sta updatethumb_stash sta updatethumb_stash
inc updatethumb_stash inc updatethumb_stash
lda #MGTK::Ctl::vertical_scroll_bar copy #MGTK::Ctl::vertical_scroll_bar, updatethumb_which_ctl
sta updatethumb_which_ctl jsr update_scroll_thumb
jsr L5C54
lda updatethumb_stash lda updatethumb_stash
: rts : rts
L58AD: .byte 0 max: .byte 0
.endproc .endproc
.proc L58AE .proc do_scroll_up
beq :+ beq :+
sta updatethumb_stash sta updatethumb_stash
dec updatethumb_stash dec updatethumb_stash
lda #MGTK::Ctl::vertical_scroll_bar copy #MGTK::Ctl::vertical_scroll_bar, updatethumb_which_ctl
sta updatethumb_which_ctl jsr update_scroll_thumb
jsr L5C54
lda updatethumb_stash lda updatethumb_stash
: rts : rts
.byte 0 .byte 0
.endproc .endproc
.proc L58C3 ;;; Output: A = hscroll pos, X = hscroll max, Y = hscroll active flag (high bit)
.proc get_active_window_hscroll_info
ptr := $06
lda active_window_id lda active_window_id
jsr window_lookup jsr window_lookup
stax $06 stax ptr
ldy #$06 ldy #MGTK::Winfo::hthumbmax
lda ($06),y lda (ptr),y
tax tax
iny iny ; hthumbpos
lda ($06),y lda (ptr),y
pha pha
ldy #$04 ldy #MGTK::Winfo::hscroll
lda ($06),y lda (ptr),y
and #$01 and #$01 ; active flag
clc clc
ror a ror a
ror a ror a ; shift to high bit
tay tay
pla pla
rts rts
.endproc .endproc
.proc L58E2 ;;; Output: A = vscroll pos, X = vscroll max, Y = vscroll active flag (high bit)
.proc get_active_window_vscroll_info
ptr := $06
lda active_window_id lda active_window_id
jsr window_lookup jsr window_lookup
stax $06 stax ptr
ldy #$08 ldy #MGTK::Winfo::vthumbmax
lda ($06),y lda (ptr),y
tax tax
iny iny
lda ($06),y lda (ptr),y
pha pha
ldy #$05 ldy #MGTK::Winfo::vscroll
lda ($06),y lda (ptr),y
and #$01 and #$01 ; active flag
clc clc
ror a ror a
ror a ror a ; shift to high bit
tay tay
pla pla
rts rts
@ -3612,7 +3625,7 @@ active_window_view_by:
and #$01 and #$01
bne :+ bne :+
jmp done_client_click jmp done_client_click
: jsr L5803 : jsr get_active_window_scroll_info
lda findcontrol_which_part lda findcontrol_which_part
cmp #MGTK::Part::thumb cmp #MGTK::Part::thumb
bne :+ bne :+
@ -3658,7 +3671,7 @@ horiz: lda active_window_id
and #$01 and #$01
bne :+ bne :+
jmp done_client_click jmp done_client_click
: jsr L5803 : jsr get_active_window_scroll_info
lda findcontrol_which_part lda findcontrol_which_part
cmp #MGTK::Part::thumb cmp #MGTK::Part::thumb
bne :+ bne :+
@ -3709,24 +3722,25 @@ done_client_click:
lda trackthumb_thumbmoved lda trackthumb_thumbmoved
bne :+ bne :+
rts rts
: jsr L5C54 : jsr update_scroll_thumb
jsr StoreWindowIconTable jsr StoreWindowIconTable
jmp LoadDesktopIconTable jmp LoadDesktopIconTable
.endproc .endproc
;;; ============================================================ ;;; ============================================================
.proc L5C54 .proc update_scroll_thumb
lda updatethumb_stash copy updatethumb_stash, updatethumb_thumbpos
sta updatethumb_thumbpos
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
jsr L6523 jsr L6523
jsr L84D1 jsr L84D1
bit active_window_view_by bit active_window_view_by
bmi :+ bmi :+ ; list view, no icons
jsr cached_icons_screen_to_window jsr cached_icons_screen_to_window
: copy active_window_id, getwinport_params2::window_id : copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect
jsr reset_grafport3 jsr reset_grafport3
jmp L6C19 jmp L6C19
@ -3807,15 +3821,18 @@ replace:
inc selected_icon_count inc selected_icon_count
copy active_window_id, selected_window_index copy active_window_id, selected_window_index
copy active_window_id, getwinport_params2::window_id
copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
copy icon_num, icon_param copy icon_num, icon_param
jsr icon_window_to_screen jsr icon_window_to_screen
jsr offset_grafport2_and_set jsr offset_grafport2_and_set
DESKTOP_RELAY_CALL DT_HIGHLIGHT_ICON, icon_param DESKTOP_RELAY_CALL DT_HIGHLIGHT_ICON, icon_param
copy active_window_id, getwinport_params2::window_id copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
lda icon_num lda icon_num
jsr icon_screen_to_window jsr icon_screen_to_window
jsr reset_grafport3 jsr reset_grafport3
@ -3879,8 +3896,10 @@ desktop:
: cpx #$FF : cpx #$FF
beq L5DF7 beq L5DF7
copy active_window_id, getwinport_params2::window_id copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr cached_icons_window_to_screen jsr cached_icons_window_to_screen
jsr offset_grafport2_and_set jsr offset_grafport2_and_set
@ -3898,6 +3917,7 @@ desktop:
copy active_window_id, getwinport_params2::window_id copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr update_scrollbars jsr update_scrollbars
jsr cached_icons_screen_to_window jsr cached_icons_screen_to_window
jsr reset_grafport3 jsr reset_grafport3
@ -3998,6 +4018,7 @@ L5E77: .byte 0
: copy active_window_id, getwinport_params2::window_id : copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr set_penmode_copy jsr set_penmode_copy
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect
ldx active_window_id ldx active_window_id
@ -5179,6 +5200,7 @@ L6BB8: jsr L744B
copy active_window_id, getwinport_params2::window_id copy active_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr draw_window_header jsr draw_window_header
jsr cached_icons_window_to_screen jsr cached_icons_window_to_screen
copy #0, L6C0E copy #0, L6C0E
@ -5220,9 +5242,10 @@ L6C0E: .byte 0
jmp L6CCD jmp L6CCD
L6C25: jsr push_pointers L6C25: jsr push_pointers
lda cached_window_id
sta getwinport_params2::window_id copy cached_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
bit draw_window_header_flag bit draw_window_header_flag
bmi :+ bmi :+
jsr draw_window_header jsr draw_window_header
@ -5296,9 +5319,9 @@ rows_done:
.byte 0 .byte 0
.endproc .endproc
L6CCD: lda cached_window_id L6CCD: copy cached_window_id, getwinport_params2::window_id
sta getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
bit draw_window_header_flag bit draw_window_header_flag
bmi :+ bmi :+
jsr draw_window_header jsr draw_window_header
@ -5314,9 +5337,10 @@ L6CF3: cpx cached_window_icon_count
bne L6D09 bne L6D09
pla pla
jsr reset_grafport3 jsr reset_grafport3
lda cached_window_id
sta getwinport_params2::window_id copy cached_window_id, getwinport_params2::window_id
jsr get_set_port2 jsr get_set_port2
jsr cached_icons_screen_to_window jsr cached_icons_screen_to_window
rts rts

View File

@ -376,10 +376,10 @@ SetMark = $37
.struct Winfo .struct Winfo
window_id .byte window_id .byte
options .byte ; option_* options .byte ; Option::*
title .addr title .addr
hscroll .byte ; scroll_option_* hscroll .byte ; Scroll::option_*
vscroll .byte ; scroll_option_* vscroll .byte ; Scroll::option_*
hthumbmax .byte hthumbmax .byte
hthumbpos .byte hthumbpos .byte
vthumbmax .byte vthumbmax .byte