mirror of
https://github.com/mi57730/a2d.git
synced 2025-01-07 15:30:24 +00:00
DeskTop: Internal API noodling
This commit is contained in:
parent
3fff12d1f3
commit
3f15d12eb1
11
APIs.md
11
APIs.md
@ -159,11 +159,11 @@ Parameters: { byte icon }
|
||||
|
||||
Redraws an icon by number.
|
||||
|
||||
### `DT_HIGHLIGHT_ICON` ($04)
|
||||
### `DT_REMOVE_ICON` ($04)
|
||||
|
||||
Parameters: { byte icon }
|
||||
|
||||
Unhighlights (deselects) an icon by number.
|
||||
Removes an icon by number.
|
||||
|
||||
### `DT_HIGHLIGHT_ALL` ($05)
|
||||
|
||||
@ -195,6 +195,13 @@ Parameters: { word mousex, word mousey, (out) byte result }
|
||||
|
||||
Find the icon number at the given coordinates.
|
||||
|
||||
### `DT_UNHIGHLIGHT_ICON` ($0B)
|
||||
|
||||
Parameters: { addr iconentry }
|
||||
|
||||
Unhighlights the specified icon. Note that the address of the icon
|
||||
entry is passed, not the number.
|
||||
|
||||
### `DT_REDRAW_ICONS` ($0C)
|
||||
|
||||
Parameters: none (pass $0000 as address)
|
||||
|
@ -58,14 +58,14 @@ DESKTOP := $8E00
|
||||
DT_ADD_ICON := $01 ; { .addr icondata }
|
||||
DT_HIGHLIGHT_ICON := $02 ; { .byte icon }
|
||||
DT_REDRAW_ICON := $03 ; { .byte icon }
|
||||
DT_UNHIGHLIGHT_ICON := $04 ; { .byte icon }
|
||||
DT_REMOVE_ICON := $04 ; { .byte icon }
|
||||
DT_HIGHLIGHT_ALL := $05 ; { .byte window_id }
|
||||
DT_UNHIGHLIGHT_ALL := $06
|
||||
DT_CLOSE_WINDOW := $07 ; { .byte window_id }
|
||||
DT_GET_HIGHLIGHTED := $08 ; { .res 20 }
|
||||
DT_FIND_ICON := $09 ; { .word mousex, .word mousey, .byte result }
|
||||
;; $0A ???
|
||||
;; $0B ???
|
||||
DT_UNHIGHLIGHT_ICON := $0B ; { .addr iconentry }
|
||||
DT_REDRAW_ICONS := $0C ; Repaints desktop icons *
|
||||
DT_ICON_IN_RECT := $0D ; { .byte icon, rect bounds }
|
||||
DT_REDRAW_ICON_IDX := $0E ; { .byte icon_index }
|
||||
|
@ -235,18 +235,18 @@ notpenBIC_2: .byte 7
|
||||
;;; DESKTOP command jump table
|
||||
|
||||
desktop_jump_table:
|
||||
.addr 0 ; $00
|
||||
.addr 0
|
||||
.addr ADD_ICON_IMPL
|
||||
.addr HIGHLIGHT_ICON_IMPL
|
||||
.addr REDRAW_ICON_IMPL
|
||||
.addr UNHIGHLIGHT_ICON_IMPL
|
||||
.addr REMOVE_ICON_IMPL
|
||||
.addr HIGHLIGHT_ALL_IMPL
|
||||
.addr UNHIGHLIGHT_ALL_IMPL
|
||||
.addr CLOSE_WINDOW_IMPL
|
||||
.addr GET_HIGHLIGHTED_IMPL
|
||||
.addr FIND_ICON_IMPL
|
||||
.addr L97F7 ; $0A
|
||||
.addr L9EBE ; $0B
|
||||
.addr UNHIGHLIGHT_ICON_IMPL
|
||||
.addr REDRAW_ICONS_IMPL
|
||||
.addr ICON_IN_RECT_IMPL
|
||||
.addr REDRAW_ICON_IDX_IMPL
|
||||
@ -476,9 +476,11 @@ done: jsr L9F98
|
||||
.endproc
|
||||
|
||||
;;; ============================================================
|
||||
;;; UNHIGHLIGHT_ICON IMPL
|
||||
;;; REMOVE_ICON IMPL
|
||||
|
||||
.proc UNHIGHLIGHT_ICON_IMPL
|
||||
;;; param is pointer to icon number
|
||||
|
||||
.proc REMOVE_ICON_IMPL
|
||||
PARAM_BLOCK params, $06
|
||||
ptr_icon: .addr 0
|
||||
END_PARAM_BLOCK
|
||||
@ -512,40 +514,48 @@ found: asl a
|
||||
MGTK_CALL MGTK::SetPenMode, pencopy_2
|
||||
jsr draw_icon
|
||||
|
||||
;; Move it to the end of the icon list
|
||||
ldy #IconEntry::id
|
||||
lda (ptr),y ; icon num
|
||||
ldx num_icons ; new position
|
||||
jsr change_icon_index
|
||||
|
||||
;; Remove it from the list
|
||||
dec num_icons
|
||||
lda #0
|
||||
ldx num_icons
|
||||
sta icon_table,x
|
||||
|
||||
;; Clear its flag
|
||||
ldy #IconEntry::state
|
||||
lda #0
|
||||
sta (ptr),y
|
||||
|
||||
lda has_highlight
|
||||
beq done
|
||||
|
||||
;; Find it in the highlight list
|
||||
ldx highlight_count
|
||||
dex
|
||||
ldy #0
|
||||
lda (ptr),y
|
||||
L9566: cmp highlight_list,x
|
||||
beq L9571
|
||||
: cmp highlight_list,x
|
||||
beq found2
|
||||
dex
|
||||
bpl L9566
|
||||
bpl :-
|
||||
jmp done ; not found
|
||||
|
||||
jmp done
|
||||
|
||||
L9571: ldx highlight_count ; new position
|
||||
;; Move it to the end of the highlight list
|
||||
found2: ldx highlight_count ; new position
|
||||
jsr change_highlight_index
|
||||
|
||||
;; Remove it from the highloight list and update flag
|
||||
dec highlight_count
|
||||
lda highlight_count
|
||||
bne L9584
|
||||
bne :+
|
||||
lda #0
|
||||
sta has_highlight
|
||||
L9584: lda #0
|
||||
: lda #0
|
||||
ldx highlight_count
|
||||
sta highlight_list,x
|
||||
|
||||
@ -677,7 +687,7 @@ L969D: ldx L9696
|
||||
ldy #0
|
||||
cmp ($06),y
|
||||
bne L969D
|
||||
DESKTOP_DIRECT_CALL DT_UNHIGHLIGHT_ICON, L9695
|
||||
DESKTOP_DIRECT_CALL DT_REMOVE_ICON, L9695
|
||||
jmp L969D
|
||||
L96CF: return #0
|
||||
.endproc
|
||||
@ -1468,12 +1478,17 @@ L9EB4: asl a
|
||||
.endproc
|
||||
|
||||
;;; ============================================================
|
||||
;;; UNHIGHLIGHT_ICON IMPL
|
||||
|
||||
;;; DESKTOP $0B IMPL
|
||||
;;; param is pointer to icon entry
|
||||
|
||||
.proc UNHIGHLIGHT_ICON_IMPL
|
||||
PARAM_BLOCK params, $06
|
||||
ptr_iconent: .addr 0
|
||||
END_PARAM_BLOCK
|
||||
ptr := $06 ; Overwrites param
|
||||
|
||||
;; Deselect icon ???
|
||||
|
||||
.proc L9EBE
|
||||
jmp start
|
||||
|
||||
.byte 0 ; ???
|
||||
@ -1481,8 +1496,6 @@ L9EB4: asl a
|
||||
;; DT_REDRAW_ICON params
|
||||
icon: .byte 0
|
||||
|
||||
ptr := $6
|
||||
|
||||
start: lda has_highlight
|
||||
bne :+
|
||||
return #1 ; No selection
|
||||
@ -1490,16 +1503,14 @@ start: lda has_highlight
|
||||
;; Move it to the end of the highlight list
|
||||
: ldx highlight_count ; new position
|
||||
ldy #IconEntry::id
|
||||
lda (ptr),y ; icon num
|
||||
lda (params::ptr_iconent),y ; icon num
|
||||
jsr change_highlight_index
|
||||
|
||||
;; Remove it from the list
|
||||
;; Remove it from the highlight list and update flag
|
||||
ldx highlight_count
|
||||
lda #0
|
||||
sta highlight_count,x
|
||||
dec highlight_count
|
||||
|
||||
;; Update flag
|
||||
lda highlight_count
|
||||
bne :+
|
||||
lda #0
|
||||
@ -1507,7 +1518,7 @@ start: lda has_highlight
|
||||
|
||||
;; Redraw
|
||||
: ldy #0
|
||||
lda (ptr),y
|
||||
lda (params::ptr_iconent),y
|
||||
sta icon
|
||||
DESKTOP_DIRECT_CALL DT_REDRAW_ICON, icon
|
||||
return #0
|
||||
|
@ -3142,7 +3142,7 @@ L5916: lda cached_window_icon_list,x
|
||||
sta icon_param
|
||||
lda #$00
|
||||
sta cached_window_icon_list,x
|
||||
DESKTOP_RELAY_CALL DT_UNHIGHLIGHT_ICON, icon_param
|
||||
DESKTOP_RELAY_CALL DT_REMOVE_ICON, icon_param
|
||||
lda icon_param
|
||||
jsr DESKTOP_FREE_ICON
|
||||
dec cached_window_icon_count
|
||||
@ -3289,7 +3289,7 @@ L5A4C: jsr redraw_windows_and_desktop
|
||||
lda icon_param
|
||||
jsr DESKTOP_FREE_ICON
|
||||
jsr reset_grafport3
|
||||
DESKTOP_RELAY_CALL DT_UNHIGHLIGHT_ICON, icon_param
|
||||
DESKTOP_RELAY_CALL DT_REMOVE_ICON, icon_param
|
||||
L5A7F: lda cached_window_icon_count
|
||||
sta L5AC6
|
||||
inc cached_window_icon_count
|
||||
|
Loading…
Reference in New Issue
Block a user