disasm: window/icon table

This commit is contained in:
Joshua Bell 2018-12-27 16:34:27 -08:00
parent 2e09f2b9cc
commit 74b2945619
2 changed files with 102 additions and 90 deletions

View File

@ -190,7 +190,7 @@ L412B: copy #0, cached_window_id
beq L4143
bit running_da_flag
bmi L4143
jsr L4244
jsr redraw_selected_icons
L4143: bit L40F1
bpl L4151
DESKTOP_RELAY_CALL DT_REDRAW_ICONS
@ -258,7 +258,7 @@ L41E2: copy cached_window_id, getwinport_params2::window_id
jsr get_set_port2
jsr cached_icons_window_to_screen
COPY_BLOCK grafport2::cliprect, rect_E230
COPY_BLOCK grafport2::cliprect, tmp_rect
copy #0, L4241
L41FE: lda L4241
@ -286,15 +286,15 @@ L4242: .word 0
;;; ============================================================
.proc L4244
.proc redraw_selected_icons
lda selected_icon_count
bne :+
bail: rts
: copy #0, L42C3
: copy #0, num
lda selected_window_index
beq L42A5
beq desktop
cmp active_window_id
bne bail
@ -302,9 +302,10 @@ bail: rts
jsr get_port2
jsr offset_grafport2_and_set
COPY_BLOCK grafport2::cliprect, rect_E230
COPY_BLOCK grafport2::cliprect, tmp_rect
L4270: lda L42C3
;; Redraw selected icons in window
window: lda num
cmp selected_icon_count
beq done
tax
@ -315,21 +316,23 @@ L4270: lda L42C3
DESKTOP_RELAY_CALL DT_REDRAW_ICON, icon_param
: lda icon_param
jsr icon_screen_to_window
inc L42C3
jmp L4270
inc num
jmp window
done: jmp reset_grafport3
L42A5: lda L42C3
;; Redraw selected icons on desktop
desktop:
lda num
cmp selected_icon_count
beq done
tax
copy selected_icon_list,x, icon_param
DESKTOP_RELAY_CALL DT_REDRAW_ICON, icon_param
inc L42C3
jmp L42A5
inc num
jmp desktop
L42C3: .byte 0
num: .byte 0
.endproc
;;; ============================================================
@ -586,7 +589,7 @@ L445C: .byte 0
start: jsr clear_selection
ldx findwindow_window_id
dex
copy LEC26,x, icon_param
copy window_to_dir_icon_table,x, icon_param
lda icon_param
jsr icon_entry_lookup
stax ptr
@ -1973,7 +1976,7 @@ L4EC3: sta cached_window_icon_count
MGTK_RELAY_CALL MGTK::CloseWindow, active_window_id
ldx active_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
sta icon_param
jsr icon_entry_lookup
stax $06
@ -1990,11 +1993,11 @@ L4EC3: sta cached_window_icon_count
copy icon_param, selected_icon_list
ldx active_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
jsr L7345
ldx active_window_id
dex
copy #0, LEC26,x
copy #0, window_to_dir_icon_table,x
MGTK_RELAY_CALL MGTK::FrontWindow, active_window_id
lda active_window_id
bne L4F3C
@ -2618,7 +2621,7 @@ L5427: .byte 0
L5428: .res 9, 0
L5431: ldx #7
L5433: cmp LEC26,x
L5433: cmp window_to_dir_icon_table,x
beq L543E
dex
bpl L5433
@ -2665,7 +2668,7 @@ L5464: lda active_window_id
stax $06
ldy #MGTK::Winfo::port+MGTK::GrafPort::maprect
L5479: lda ($06),y
sta rect_E230-(MGTK::Winfo::port+MGTK::GrafPort::maprect),y
sta tmp_rect-(MGTK::Winfo::port+MGTK::GrafPort::maprect),y
iny
cpy #MGTK::Winfo::port+MGTK::GrafPort::maprect+8
bne L5479
@ -2942,7 +2945,7 @@ L56F8: .byte 0
L5708: sta $800
ldy #$01
ldx #$00
L570F: lda LEC26,x
L570F: lda window_to_dir_icon_table,x
beq L5720
inx
cpx active_window_id
@ -3926,7 +3929,7 @@ L5E77: .byte 0
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect
ldx active_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
pha
jsr L7345
lda window_id
@ -4006,18 +4009,18 @@ L5F3F: jsr clear_selection
jsr offset_grafport2_and_set
ldx #$03
L5F50: lda pt1,x
sta rect_E230::x1,x
sta tmp_rect::x1,x
lda pt2,x
sta rect_E230::x2,x
sta tmp_rect::x2,x
dex
bpl L5F50
jsr set_penmode_xor
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
L5F6B: jsr peek_event
lda event_kind
cmp #MGTK::EventKind::drag
beq L5FC5
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
ldx #$00
L5F80: cpx cached_window_icon_count
bne L5F88
@ -4067,35 +4070,35 @@ L600E: lda L60CB
bcs L601F
jmp L5F6B
L601F: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
L601F: MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
COPY_STRUCT MGTK::Point, event_coords, L60CF
cmp16 event_xcoord, rect_E230::x2
cmp16 event_xcoord, tmp_rect::x2
bpl L6068
cmp16 event_xcoord, rect_E230::x1
cmp16 event_xcoord, tmp_rect::x1
bmi L6054
bit L60D3
bpl L6068
L6054: copy16 event_xcoord, rect_E230::x1
L6054: copy16 event_xcoord, tmp_rect::x1
copy #$80, L60D3
jmp L6079
L6068: copy16 event_xcoord, rect_E230::x2
L6068: copy16 event_xcoord, tmp_rect::x2
copy #0, L60D3
L6079: cmp16 event_ycoord, rect_E230::y2
L6079: cmp16 event_ycoord, tmp_rect::y2
bpl L60AE
cmp16 event_ycoord, rect_E230::y1
cmp16 event_ycoord, tmp_rect::y1
bmi L609A
bit L60D4
bpl L60AE
L609A: copy16 event_ycoord, rect_E230::y1
L609A: copy16 event_ycoord, tmp_rect::y1
copy #$80, L60D4
jmp L60BF
L60AE: copy16 event_ycoord, rect_E230::y2
L60AE: copy16 event_ycoord, tmp_rect::y2
copy #0, L60D4
L60BF: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
L60BF: MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
jmp L5F6B
L60CB: .byte 0
@ -4239,7 +4242,7 @@ L6227: sta cached_window_icon_count
MGTK_RELAY_CALL MGTK::CloseWindow, active_window_id
ldx active_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
sta icon_param
jsr icon_entry_lookup
stax $06
@ -4260,17 +4263,17 @@ L6227: sta cached_window_icon_count
copy icon_param, selected_icon_list
L6276: ldx active_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
jsr L7345
ldx active_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
inx
jsr animate_window_close
ldx active_window_id
dex
lda #$00
sta LEC26,x
sta window_to_dir_icon_table,x
sta win_view_by_table,x
MGTK_RELAY_CALL MGTK::FrontWindow, active_window_id
copy #0, cached_window_id
@ -4863,8 +4866,8 @@ L6893: txa
L68B3: jsr clear_selection
ldx #3
L68B8: lda event_coords,x
sta rect_E230::x1,x
sta rect_E230::x2,x
sta tmp_rect::x1,x
sta tmp_rect::x2,x
dex
bpl L68B8
jsr peek_event
@ -4875,12 +4878,12 @@ L68B8: lda event_coords,x
L68CF: MGTK_RELAY_CALL MGTK::SetPattern, checkerboard_pattern3
jsr set_penmode_xor
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
L68E4: jsr peek_event
lda event_kind
cmp #MGTK::EventKind::drag
beq L6932
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
ldx #0
L68F9: cpx cached_window_icon_count
bne :+
@ -4926,35 +4929,35 @@ L6978: lda L6A35
bcs L6989
jmp L68E4
L6989: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
L6989: MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
COPY_STRUCT MGTK::Point, event_coords, L6A39
cmp16 event_xcoord, rect_E230::x2
cmp16 event_xcoord, tmp_rect::x2
bpl L69D2
cmp16 event_xcoord, rect_E230::x1
cmp16 event_xcoord, tmp_rect::x1
bmi L69BE
bit L6A3D
bpl L69D2
L69BE: copy16 event_xcoord, rect_E230::x1
L69BE: copy16 event_xcoord, tmp_rect::x1
copy #$80, L6A3D
jmp L69E3
L69D2: copy16 event_xcoord, rect_E230::x2
L69D2: copy16 event_xcoord, tmp_rect::x2
copy #0, L6A3D
L69E3: cmp16 event_ycoord, rect_E230::y2
L69E3: cmp16 event_ycoord, tmp_rect::y2
bpl L6A18
cmp16 event_ycoord, rect_E230::y1
cmp16 event_ycoord, tmp_rect::y1
bmi L6A04
bit L6A3E
bpl L6A18
L6A04: copy16 event_ycoord, rect_E230::y1
L6A04: copy16 event_ycoord, tmp_rect::y1
copy #$80, L6A3E
jmp L6A29
L6A18: copy16 event_ycoord, rect_E230::y2
L6A18: copy16 event_ycoord, tmp_rect::y2
copy #0, L6A3E
L6A29: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
L6A29: MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
jmp L68E4
L6A35: .byte 0
@ -4974,7 +4977,7 @@ L6A3E: .byte 0
path_buf := $220
ldx #7
: cmp LEC26,x
: cmp window_to_dir_icon_table,x
beq L6A80
dex
bpl :-
@ -5014,7 +5017,7 @@ L6A80: inx
jsr DESKTOP_COPY_FROM_BUF
lda icon_params2
ldx #$07
L6A95: cmp LEC26,x
L6A95: cmp window_to_dir_icon_table,x
beq L6AA0
dex
bpl L6A95
@ -5076,13 +5079,13 @@ L6B1E: lda LEC2E
rts
L6B2F: ldx #$00
L6B31: lda LEC26,x
L6B31: lda window_to_dir_icon_table,x
beq L6B3A
inx
jmp L6B31
L6B3A: lda icon_params2
sta LEC26,x
sta window_to_dir_icon_table,x
inx
stx cached_window_id
jsr DESKTOP_COPY_TO_BUF
@ -5193,7 +5196,7 @@ L6C25: jsr push_pointers
jsr offset_grafport2_and_set
: ldx cached_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
ldx #$00
L6C53: cmp LE1F1+1,x
beq L6C5F
@ -5264,7 +5267,7 @@ L6CCD: lda cached_window_id
: jsr cached_icons_window_to_screen
jsr offset_grafport2_and_set
COPY_BLOCK grafport2::cliprect, rect_E230
COPY_BLOCK grafport2::cliprect, tmp_rect
ldx #$00
txa
@ -5300,12 +5303,12 @@ L6D25: pla
rts
L6D31: copy #0, L6DB0
copy selected_window_index, rect_E230 ; ???
copy selected_window_index, tmp_rect ; ???
beq L6D7D
cmp active_window_id
beq L6D4D
jsr zero_grafport5_coords
copy #0, rect_E230
copy #0, tmp_rect
beq L6D56
L6D4D: sta getwinport_params2::window_id
jsr get_set_port2
@ -5781,7 +5784,7 @@ L710A: lsr16 L72A8
cmp16 L72A8, L70C1
bcs L7169
L7147: lda LEC2E
jsr L8B19
jsr mark_icons_not_opened_1
dec LEC2E
jsr redraw_windows_and_desktop
jsr do_close
@ -5958,7 +5961,7 @@ L72A8: .word 0
MLI_RELAY_CALL OPEN, open_params
beq done
jsr DESKTOP_SHOW_ALERT0
jsr L8B1F
jsr mark_icons_not_opened_2
lda selected_window_index
bne :+
lda icon_params2
@ -6187,7 +6190,7 @@ L74D3: tay
bcc L750D
lda #ERR_INVALID_PATHNAME
jsr DESKTOP_SHOW_ALERT0
jsr L8B1F
jsr mark_icons_not_opened_2
dec LEC2E
ldx saved_stack
txs
@ -6349,7 +6352,7 @@ flag: .byte 0 ; ???
ep2: pha ; entry point #2 ???
ldx cached_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
sta icon_params2
lda #$80
@ -7099,7 +7102,7 @@ index := $805
start: ldx cached_window_id
dex
lda LEC26,x
lda window_to_dir_icon_table,x
ldx #0
: cmp LE1F1+1,x
@ -8903,31 +8906,34 @@ remove: lda cached_window_icon_list+1,x
;;; ============================================================
L8B19: jsr push_pointers
jmp L8B2E
L8B1F: lda icon_params2
bne L8B25
rts
L8B25: jsr push_pointers
lda icon_params2
jsr L7345
;; fall through
.proc L8B2E
.proc mark_icons_not_opened
ptr := $6
L8B19: jsr push_pointers
jmp start
L8B1F: lda icon_params2
bne :+
rts
: jsr push_pointers
lda icon_params2
ldx #7 ; ???
: cmp LEC26,x
jsr L7345 ; ???
;; fall through
;; Find open window for the icon
start: lda icon_params2
ldx #8 - 1
: cmp window_to_dir_icon_table,x
beq :+
dex
bpl :-
jmp skip
;; If found, remove from the table
: lda #0
sta LEC26,x
sta window_to_dir_icon_table,x
;; Update the icon and redraw
skip: lda icon_params2
jsr icon_entry_lookup
stax ptr
@ -8935,10 +8941,12 @@ skip: lda icon_params2
lda (ptr),y
and #AS_BYTE(~icon_entry_open_mask) ; clear open_flag
sta ($06),y
jsr L4244
jsr redraw_selected_icons
jsr pop_pointers
rts
.endproc
mark_icons_not_opened_1 := mark_icons_not_opened::L8B19
mark_icons_not_opened_2 := mark_icons_not_opened::L8B1F
;;; ============================================================
@ -9127,7 +9135,7 @@ loop: lda step
;; Copy rect to draw
ldy #7
: lda rect_table,x
sta rect_E230,y
sta tmp_rect,y
dex
dey
bpl :-
@ -9149,7 +9157,7 @@ erase: lda step
;; Copy rect to erase
ldy #.sizeof(MGTK::Rect)-1
: lda rect_table,x
sta rect_E230,y
sta tmp_rect,y
dex
dey
bpl :-
@ -9192,7 +9200,7 @@ loop: lda step
;; Copy rect to draw
ldy #.sizeof(MGTK::Rect)-1
: lda rect_table,x
sta rect_E230,y
sta tmp_rect,y
dex
dey
bpl :-
@ -9215,7 +9223,7 @@ erase: lda step
;; Copy rect to erase
ldy #.sizeof(MGTK::Rect)-1
: lda rect_table,x
sta rect_E230,y
sta tmp_rect,y
dex
dey
bpl :-
@ -9234,7 +9242,7 @@ step: .byte 0
;;; ============================================================
.proc draw_anim_window_rect
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
MGTK_RELAY_CALL MGTK::FrameRect, tmp_rect
rts
.endproc

View File

@ -1012,7 +1012,9 @@ LE22E:
;; DT_UNHIGHLIGHT_ICON params
icon_param: .byte 0
rect_E230: DEFINE_RECT 0,0,0,0, rect_E230
;; Used for all sorts of temporary work
tmp_rect:
DEFINE_RECT 0,0,0,0, tmp_rect
.byte $00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
@ -1370,7 +1372,9 @@ window_icon_list_table:
active_window_id:
.byte $00
LEC26: .res 8, 0 ; ???
window_to_dir_icon_table:
.res 8, 0
LEC2E: .res 21, 0 ; ???
LEC43: .res 16, 0 ; ???
LEC53: .byte 0