1
0
mirror of https://github.com/mi57730/a2d.git synced 2025-04-14 14:37:02 +00:00

window params

This commit is contained in:
Joshua Bell 2017-09-01 09:16:12 -07:00
parent 57132d2e6f
commit 5e793406f1
4 changed files with 59 additions and 52 deletions
desk.acc/show.text.file

@ -22,7 +22,10 @@ A2D_CREATE_WINDOW := $38
;; 0 = desktop
;; 1, 2, ... = file windows
;; 100 = DA (for example)
;; .byte ???
;; .byte flags
;; bit 0: remove title bar
;; bit 1: add close box
;; bit 2: add resize box
A2D_DESTROY_WINDOW := $39
;; .byte id

@ -99,7 +99,10 @@ Current file: stf.s
000800 2 ;; 0 = desktop
000800 2 ;; 1, 2, ... = file windows
000800 2 ;; 100 = DA (for example)
000800 2 ;; .byte ???
000800 2 ;; .byte flags
000800 2 ;; bit 0: remove title bar
000800 2 ;; bit 1: add close box
000800 2 ;; bit 2: add resize box
000800 2
000800 2 A2D_DESTROY_WINDOW := $39
000800 2 ;; .byte id
@ -478,8 +481,7 @@ Current file: stf.s
000994 1 window_id := $64
000994 1 .proc window_params
000994 1 64 id: .byte window_id ; window identifier
000995 1 02 unk: .byte 2 ; unknown - window flags?
000996 1 .endproc
000995 1 02 flags: .byte 2 ; window flags (2=include close box)
000996 1
000996 1 ;; possibly additional window params - size?
000996 1 00 10 L0996: .word $1000 ; ???
@ -487,13 +489,15 @@ Current file: stf.s
00099A 1 20 L099A: .byte $20
00099B 1 00 FF L099B: .byte $00,$FF
00099D 1
00099D 1 ;; part of window params
00099D 1 vscroll_pos:
00099D 1 00 .byte 0
00099E 1
00099E 1 ;; unused?
00099E 1 ;; more window params (unreferenced)
00099E 1 00 00 C8 00 .byte $00,$00,$C8,$00,$33,$00,$00 ; ???
0009A2 1 33 00 00
0009A5 1 02 96 00 .byte $02,$96,$00 ; ???
0009A8 1 .endproc
0009A8 1
0009A8 1 .proc text_box ; or whole window ??
0009A8 1 0A 00 left: .word 10
@ -578,10 +582,10 @@ Current file: stf.s
000A40 1 18 L0A40: clc
000A41 1 A5 06 lda $06
000A43 1 69 09 adc #$09
000A45 1 8D 96 09 sta L0996
000A45 1 8D 96 09 sta window_params::L0996
000A48 1 A5 07 lda $07
000A4A 1 69 00 adc #$00
000A4C 1 8D 97 09 sta L0996+1
000A4C 1 8D 97 09 sta window_params::L0996+1
000A4F 1 A0 09 ldy #$09
000A51 1 B1 06 lda ($06),y
000A53 1 AA tax
@ -728,7 +732,7 @@ Current file: stf.s
000B6A 1 AD B5 09 lda text_box::width+1
000B6D 1 ED 62 09 sbc window_width+1
000B70 1 8D B1 09 sta text_box::unk1+1
000B73 1 AD 98 09 L0B73: lda L0998
000B73 1 AD 98 09 L0B73: lda window_params::L0998
000B76 1 AE 61 09 ldx window_width
000B79 1 E0 00 cpx #$00
000B7B 1 D0 0C bne L0B89
@ -739,7 +743,7 @@ Current file: stf.s
000B86 1 4C 8B 0B jmp L0B8B
000B89 1
000B89 1 09 01 L0B89: ora #$01
000B8B 1 8D 98 09 L0B8B: sta L0998
000B8B 1 8D 98 09 L0B8B: sta window_params::L0998
000B8E 1 38 sec
000B8F 1 A9 00 lda #$00
000B91 1 ED 61 09 sbc window_width
@ -807,11 +811,11 @@ Current file: stf.s
000C11 1 .endproc
000C11 1
000C11 1 .proc on_vscroll_above_click
000C11 1 AD 9D 09 loop: lda vscroll_pos
000C11 1 AD 9D 09 loop: lda window_params::vscroll_pos
000C14 1 F0 16 beq end
000C16 1 20 84 0C jsr calc_track_scroll_delta
000C19 1 38 sec
000C1A 1 AD 9D 09 lda vscroll_pos
000C1A 1 AD 9D 09 lda window_params::vscroll_pos
000C1D 1 ED 6E 09 sbc track_scroll_delta
000C20 1 B0 02 bcs store
000C22 1 A9 00 lda #$00 ; underflow
@ -822,7 +826,7 @@ Current file: stf.s
000C2D 1 .endproc
000C2D 1
000C2D 1 .proc on_vscroll_up_click
000C2D 1 AD 9D 09 loop : lda vscroll_pos
000C2D 1 AD 9D 09 loop : lda window_params::vscroll_pos
000C30 1 F0 0B beq end
000C32 1 38 sec
000C33 1 E9 01 sbc #1
@ -835,12 +839,12 @@ Current file: stf.s
000C3E 1 vscroll_max := $FA
000C3E 1
000C3E 1 .proc on_vscroll_below_click
000C3E 1 AD 9D 09 loop: lda vscroll_pos
000C3E 1 AD 9D 09 loop: lda window_params::vscroll_pos
000C41 1 C9 FA cmp #vscroll_max ; pos == max ?
000C43 1 F0 1A beq end
000C45 1 20 84 0C jsr calc_track_scroll_delta
000C48 1 18 clc
000C49 1 AD 9D 09 lda vscroll_pos
000C49 1 AD 9D 09 lda window_params::vscroll_pos
000C4C 1 6D 6E 09 adc track_scroll_delta ; pos + delta
000C4F 1 B0 04 bcs overflow
000C51 1 C9 FB cmp #vscroll_max+1 ; > max ?
@ -854,7 +858,7 @@ Current file: stf.s
000C60 1 .endproc
000C60 1
000C60 1 .proc on_vscroll_down_click
000C60 1 AD 9D 09 loop: lda vscroll_pos
000C60 1 AD 9D 09 loop: lda window_params::vscroll_pos
000C63 1 C9 FA cmp #vscroll_max
000C65 1 F0 0B beq end
000C67 1 18 clc
@ -931,7 +935,7 @@ Current file: stf.s
000CE7 1
000CE7 1 .proc on_hscroll_after_click
000CE7 1 A2 02 ldx #2
000CE9 1 AD 9A 09 lda L099A
000CE9 1 AD 9A 09 lda window_params::L099A
000CEC 1 4C 02 0D jmp hscroll_common
000CEF 1 .endproc
000CEF 1
@ -943,7 +947,7 @@ Current file: stf.s
000CF6 1
000CF6 1 .proc on_hscroll_right_click
000CF6 1 A2 01 ldx #1
000CF8 1 AD 9A 09 lda L099A
000CF8 1 AD 9A 09 lda window_params::L099A
000CFB 1 4C 02 0D jmp hscroll_common
000CFE 1 .endproc
000CFE 1
@ -956,26 +960,26 @@ Current file: stf.s
000D02 1 .proc hscroll_common
000D02 1 8D 0C 0D sta compare+1
000D05 1 8E 15 0D stx delta+1
000D08 1 AD 9B 09 loop: lda L099B
000D08 1 AD 9B 09 loop: lda window_params::L099B
000D0B 1 C9 0A compare:cmp #$0A ; self-modified
000D0D 1 D0 01 bne continue
000D0F 1 60 rts
000D10 1
000D10 1 continue:
000D10 1 18 clc
000D11 1 AD 9B 09 lda L099B
000D11 1 AD 9B 09 lda window_params::L099B
000D14 1 69 01 delta: adc #1 ; self-modified
000D16 1 30 0D bmi overflow
000D18 1 CD 9A 09 cmp L099A
000D18 1 CD 9A 09 cmp window_params::L099A
000D1B 1 F0 0A beq store
000D1D 1 90 08 bcc store
000D1F 1 AD 9A 09 lda L099A
000D1F 1 AD 9A 09 lda window_params::L099A
000D22 1 4C 27 0D jmp store
000D25 1
000D25 1 overflow:
000D25 1 A9 00 lda #0
000D27 1
000D27 1 8D 9B 09 store: sta L099B
000D27 1 8D 9B 09 store: sta window_params::L099B
000D2A 1 20 5E 0D jsr L0D5E
000D2D 1 20 D1 0D jsr L0DD1
000D30 1 20 30 0E jsr draw_content
@ -1008,7 +1012,7 @@ Current file: stf.s
000D5E 1
000D5E 1 ;;; only used from hscroll code?
000D5E 1 .proc L0D5E
000D5E 1 AD 9B 09 lda L099B
000D5E 1 AD 9B 09 lda window_params::L099B
000D61 1 20 EC 10 jsr L10EC
000D64 1 18 clc
000D65 1 A5 06 lda $06
@ -1089,11 +1093,11 @@ Current file: stf.s
000DFD 1 00 00 .addr 0
000DFF 1 20 00 40 04 A2D_CALL $04, text_box
000E03 1 A8 09
000E05 1 AD 98 09 lda L0998
000E05 1 AD 98 09 lda window_params::L0998
000E08 1 6A ror a
000E09 1 90 03 bcc skip
000E0B 1 20 D1 0D jsr L0DD1
000E0E 1 AD 9D 09 skip: lda vscroll_pos
000E0E 1 AD 9D 09 skip: lda window_params::vscroll_pos
000E11 1 8D 89 09 sta update_scroll_params::pos
000E14 1 20 ED 0D jsr update_vscroll
000E17 1 20 30 0E jsr draw_content

Binary file not shown.

@ -290,21 +290,21 @@ len: .byte 0 ; length
window_id := $64
.proc window_params
id: .byte window_id ; window identifier
unk: .byte 2 ; unknown - window flags?
.endproc
flags: .byte 2 ; window flags (2=include close box)
;; possibly additional window params - size?
L0996: .word $1000 ; ???
L0998: .byte $00,$C1
L099A: .byte $20
L099B: .byte $00,$FF
L0998: .byte $00,$C1 ; ???
L099A: .byte $20 ; hscroll?
L099B: .byte $00,$FF ; more hscroll?
vscroll_pos:
.byte 0
;; unused?
;; unreferenced
.byte $00,$00,$C8,$00,$33,$00,$00 ; ???
.byte $02,$96,$00 ; ???
.endproc
.proc text_box ; or whole window ??
left: .word 10
@ -386,10 +386,10 @@ L0A28: lda $DF22
L0A40: clc
lda $06
adc #$09
sta L0996
sta window_params::L0996
lda $07
adc #$00
sta L0996+1
sta window_params::L0996+1
ldy #$09
lda ($06),y
tax
@ -528,7 +528,7 @@ L0B54: bcs L0B73
lda text_box::width+1
sbc window_width+1
sta text_box::unk1+1
L0B73: lda L0998
L0B73: lda window_params::L0998
ldx window_width
cpx #$00
bne L0B89
@ -539,7 +539,7 @@ L0B73: lda L0998
jmp L0B8B
L0B89: ora #$01
L0B8B: sta L0998
L0B8B: sta window_params::L0998
sec
lda #$00
sbc window_width
@ -605,11 +605,11 @@ end: rts
.endproc
.proc on_vscroll_above_click
loop: lda vscroll_pos
loop: lda window_params::vscroll_pos
beq end
jsr calc_track_scroll_delta
sec
lda vscroll_pos
lda window_params::vscroll_pos
sbc track_scroll_delta
bcs store
lda #$00 ; underflow
@ -620,7 +620,7 @@ end: rts
.endproc
.proc on_vscroll_up_click
loop : lda vscroll_pos
loop : lda window_params::vscroll_pos
beq end
sec
sbc #1
@ -633,12 +633,12 @@ end: rts
vscroll_max := $FA
.proc on_vscroll_below_click
loop: lda vscroll_pos
loop: lda window_params::vscroll_pos
cmp #vscroll_max ; pos == max ?
beq end
jsr calc_track_scroll_delta
clc
lda vscroll_pos
lda window_params::vscroll_pos
adc track_scroll_delta ; pos + delta
bcs overflow
cmp #vscroll_max+1 ; > max ?
@ -652,7 +652,7 @@ end: rts
.endproc
.proc on_vscroll_down_click
loop: lda vscroll_pos
loop: lda window_params::vscroll_pos
cmp #vscroll_max
beq end
clc
@ -729,7 +729,7 @@ end: rts
.proc on_hscroll_after_click
ldx #2
lda L099A
lda window_params::L099A
jmp hscroll_common
.endproc
@ -741,7 +741,7 @@ end: rts
.proc on_hscroll_right_click
ldx #1
lda L099A
lda window_params::L099A
jmp hscroll_common
.endproc
@ -754,26 +754,26 @@ end: rts
.proc hscroll_common
sta compare+1
stx delta+1
loop: lda L099B
loop: lda window_params::L099B
compare:cmp #$0A ; self-modified
bne continue
rts
continue:
clc
lda L099B
lda window_params::L099B
delta: adc #1 ; self-modified
bmi overflow
cmp L099A
cmp window_params::L099A
beq store
bcc store
lda L099A
lda window_params::L099A
jmp store
overflow:
lda #0
store: sta L099B
store: sta window_params::L099B
jsr L0D5E
jsr L0DD1
jsr draw_content
@ -804,7 +804,7 @@ store: sta L099B
;;; only used from hscroll code?
.proc L0D5E
lda L099B
lda window_params::L099B
jsr L10EC
clc
lda $06
@ -882,11 +882,11 @@ L0DD1: lda #2
.byte $0C
.addr 0
A2D_CALL $04, text_box
lda L0998
lda window_params::L0998
ror a
bcc skip
jsr L0DD1
skip: lda vscroll_pos
skip: lda window_params::vscroll_pos
sta update_scroll_params::pos
jsr update_vscroll
jsr draw_content