diff --git a/desk.acc/show.text.file/stf.list b/desk.acc/show.text.file/stf.list index c4639be..8ae1635 100644 --- a/desk.acc/show.text.file/stf.list +++ b/desk.acc/show.text.file/stf.list @@ -343,7 +343,9 @@ Current file: stf.s 00096B 1 00 L096B: .byte $00 00096C 1 00 L096C: .byte $00 00096D 1 00 L096D: .byte $00 -00096E 1 00 L096E: .byte $00 +00096E 1 +00096E 1 track_scroll_delta: +00096E 1 00 .byte $00 00096F 1 00096F 1 fixed_mode_flag: 00096F 1 00 .byte $00 ; 0 = proportional, otherwise = fixed @@ -696,10 +698,10 @@ Current file: stf.s 000C11 1 .proc on_vscroll_above_click 000C11 1 AD 9D 09 loop: lda vscroll_pos 000C14 1 F0 16 beq end -000C16 1 20 84 0C jsr L0C84 +000C16 1 20 84 0C jsr calc_track_scroll_delta 000C19 1 38 sec 000C1A 1 AD 9D 09 lda vscroll_pos -000C1D 1 ED 6E 09 sbc L096E +000C1D 1 ED 6E 09 sbc track_scroll_delta 000C20 1 B0 02 bcs :+ 000C22 1 A9 00 lda #$00 000C24 1 8D 89 09 : sta L0989 @@ -725,10 +727,10 @@ Current file: stf.s 000C3E 1 AD 9D 09 loop: lda vscroll_pos 000C41 1 C9 FA cmp #vscroll_max ; pos == max ? 000C43 1 F0 1A beq end -000C45 1 20 84 0C jsr L0C84 +000C45 1 20 84 0C jsr calc_track_scroll_delta 000C48 1 18 clc 000C49 1 AD 9D 09 lda vscroll_pos -000C4C 1 6D 6E 09 adc L096E ; pos + delta +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 ? 000C53 1 90 02 bcc store ; nope, it's good @@ -752,8 +754,7 @@ Current file: stf.s 000C72 1 60 end: rts 000C73 1 .endproc 000C73 1 -000C73 1 ;;; Returns with carry set if mouse released -000C73 1 .proc update_scroll_pos +000C73 1 .proc update_scroll_pos ; Returns with carry set if mouse released 000C73 1 20 7C 0D jsr L0D7C 000C76 1 20 ED 0D jsr L0DED 000C79 1 20 30 0E jsr L0E30 @@ -764,15 +765,17 @@ Current file: stf.s 000C83 1 60 end: rts 000C84 1 .endproc 000C84 1 -000C84 1 AD 63 09 L0C84: lda L0963 +000C84 1 .proc calc_track_scroll_delta +000C84 1 AD 63 09 lda L0963 000C87 1 A2 00 ldx #$00 -000C89 1 E8 L0C89: inx +000C89 1 E8 loop: inx 000C8A 1 38 sec -000C8B 1 E9 32 sbc #$32 -000C8D 1 C9 32 cmp #$32 -000C8F 1 B0 F8 bcs L0C89 -000C91 1 8E 6E 09 stx L096E +000C8B 1 E9 32 sbc #50 +000C8D 1 C9 32 cmp #50 +000C8F 1 B0 F8 bcs loop +000C91 1 8E 6E 09 stx track_scroll_delta 000C94 1 60 rts +000C95 1 .endproc 000C95 1 000C95 1 ;;; Haven't been able to trigger this yet - click on ??? 000C95 1 ;;; Possibly horizontal scroll bar? (unused in this DA - generic code?) diff --git a/desk.acc/show.text.file/stf.o b/desk.acc/show.text.file/stf.o index 7937a35..450b52a 100644 Binary files a/desk.acc/show.text.file/stf.o and b/desk.acc/show.text.file/stf.o differ diff --git a/desk.acc/show.text.file/stf.s b/desk.acc/show.text.file/stf.s index dda79ad..be942f0 100644 --- a/desk.acc/show.text.file/stf.s +++ b/desk.acc/show.text.file/stf.s @@ -210,7 +210,9 @@ L096A: .byte $00 L096B: .byte $00 L096C: .byte $00 L096D: .byte $00 -L096E: .byte $00 + +track_scroll_delta: + .byte $00 fixed_mode_flag: .byte $00 ; 0 = proportional, otherwise = fixed @@ -546,10 +548,10 @@ end: rts .proc on_vscroll_above_click loop: lda vscroll_pos beq end - jsr L0C84 + jsr calc_track_scroll_delta sec lda vscroll_pos - sbc L096E + sbc track_scroll_delta bcs :+ lda #$00 : sta L0989 @@ -575,10 +577,10 @@ vscroll_max := $FA loop: lda vscroll_pos cmp #vscroll_max ; pos == max ? beq end - jsr L0C84 + jsr calc_track_scroll_delta clc lda vscroll_pos - adc L096E ; pos + delta + adc track_scroll_delta ; pos + delta bcs overflow cmp #vscroll_max+1 ; > max ? bcc store ; nope, it's good @@ -602,8 +604,7 @@ loop: lda vscroll_pos end: rts .endproc -;;; Returns with carry set if mouse released -.proc update_scroll_pos +.proc update_scroll_pos ; Returns with carry set if mouse released jsr L0D7C jsr L0DED jsr L0E30 @@ -614,15 +615,17 @@ end: rts end: rts .endproc -L0C84: lda L0963 - ldx #$00 -L0C89: inx +.proc calc_track_scroll_delta + lda L0963 ; ceil(??? / 50) + ldx #0 +loop: inx sec - sbc #$32 - cmp #$32 - bcs L0C89 - stx L096E + sbc #50 + cmp #50 + bcs loop + stx track_scroll_delta rts +.endproc ;;; Haven't been able to trigger this yet - click on ??? ;;; Possibly horizontal scroll bar? (unused in this DA - generic code?)