VZEditor/PATCHED/smooth.asm
2025-04-02 08:44:47 +09:00

323 lines
4.5 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;****************************
; 'smooth.asm'
;****************************
include vz.inc
;--- External symbols ---
wseg
extrn defatr :byte
extrn dspsw :word
extrn w_act :word
extrn w_back :word
endws
extrn clsatr :near
extrn csroff :near
extrn disppole :near
extrn dispstat :near
extrn doswindow :near
extrn isend :near
extrn istop :near
extrn nxtfld :near
extrn nxtfldl :near
extrn prefld :near
extrn prefldl :near
extrn scrout_fx :near
extrn setatr :near
extrn setbtmnumb :near
extrn sethomnumb :near
extrn tout :near
extrn rolldwn :near
extrn rollup :near
extrn smootharea :near
extrn smoothdown :near
extrn smoothup1 :near
extrn smoothup2 :near
extrn sm_chkkey :near
extrn sm_chksft :near
extrn sm_gettrgkey :near
extrn flush_key :near
extrn isdnumb :near
extrn undercsr :near
dseg
;--- Local work ---
btmy db 0
endds
cseg
assume ds:nothing
;--- Smooth scroll Down ---
public se_smoothdn
se_smoothdn proc
call inisup
je rlup9
call bpback
_ifn b
call inisup
call bpact
je rlup9
_endif
call initrol
_repeat
call nxtsup
call bpback
_ifn b
call nxtsup
call bpact
_endif
call smoothdown
mov dh,[bp].tw_py
inc dh
mov dl,btmy
add dl,dh
call rollup
call dspsup
call bpback
_ifn b
call dspsup
call bpact
_endif
mov dh,btmy
call dsppole
mov si,[bp].tbtm
call isend
je rlup8
call bpback
_ifn b
mov si,[bp].tbtm
call isend
call bpact
je rlup8
_endif
call sm_chkkey
_until c
rlup8: call rlend
rlup9: clc
VZ_RET
se_smoothdn endp
;--- Smooth scroll Up ---
public se_smoothup
se_smoothup proc
call inisdn
je rldn91
call bpback
_ifn b
call inisdn
call bpact
rldn91: je rldn9
_endif
call initrol
rldn2:
call nxtsdn
call bpback
_ifn b
call nxtsdn
call bpact
_endif
call smoothup1
mov dh,[bp].tw_py
mov dl,btmy
add dl,dh
call rolldwn
call dspsdn
call bpback
_ifn b
call dspsdn
call bpact
_endif
clr dh
call dsppole
call smoothup2
mov si,[bp].thom
call istop
je rldn8
call bpback
_ifn b
mov si,[bp].thom
call istop
call bpact
je rldn8
_endif
call sm_chkkey
jnc rldn2
rldn8: call rlend
rldn9: clc
VZ_RET
se_smoothup endp
;--- Smooth scroll init ---
initrol proc
call sm_gettrgkey
mov bh,TRUE
call sm_chksft
mov al,ATR_TXT
call setatr
call doswindow
call smootharea
mov btmy,al
call csroff
call initrol1
call bpback
_ifn b
call initrol1
call bpact
_endif
tstb defatr
_if s
clr dx
call undercsr
_endif
VZ_RET
initrol endp
initrol1 proc
mov si,[bp].tfld
mov [bp].tnow,si
tstb [bp].blkm
jnz irol2
test dspsw,DSP_SMOOTH
_if z
irol2: mov defatr,ATR_TXT
mov dx,word ptr [bp].tw_px
mov cx,word ptr [bp].tw_sx
call clsatr
_endif
VZ_RET
initrol1 endp
;--- Common sub ---
bpact proc
mov bp,w_act
mov ds,[bp].ttops
VZ_RET
bpact endp
bpback proc
cmp [bp].wsplit,SPLIT_V
_ifn b
mov bp,w_back
mov ds,[bp].ttops
_endif
VZ_RET
bpback endp
rlend proc
mov defatr,INVALID
call bpback
jb rlend2
call rlend2
call bpact
mov dh,[bp].tw_cy
call dsppole
rlend2: mov si,[bp].tnow
mov [bp].tcp,si
disp4: mov al,[bp].wy ; ##101.23
mov [bp].wys,al
call scrout_fx
call flush_key ; ##151.09
VZ_RET
rlend endp
dsppole proc
cmp [bp].wsplit,SPLIT_V
_if ae
add dh,[bp].tw_py
mov ch,1
call disppole
_endif
VZ_RET
dsppole endp
;--- Scroll up sub ---
inisup proc
mov cx,[bp].tbtm
tst cx
jz isup9
call setbtmnumb
mov [bp].w3,dx
clz
isup9: VZ_RET
inisup endp
nxtsup proc
mov si,[bp].tnow
call nxtfldl
mov [bp].tnow,si
mov [bp].tnxt,si
mov [bp].tcp,si
VZ_RET
nxtsup endp
dspsup proc
call dispstat
mov cl,btmy
mov dx,[bp].w3
mov si,[bp].tbtm
call tout
mov [bp].tbtm,si
mov [bp].w3,dx
VZ_RET
dspsup endp
;--- Scroll down sub ---
inisdn proc
mov si,[bp].thom
call istop
je isdn9
mov cx,si
call sethomnumb
mov [bp].w3,dx
clz
isdn9: VZ_RET
inisdn endp
nxtsdn proc
mov si,[bp].tnow
call prefldl
mov [bp].tnow,si
mov [bp].tnxt,si
mov [bp].tcp,si
mov si,[bp].thom
call isdnumb
jnz nsdn1
cmp byte ptr [si-1],LF
_if e
nsdn1: dec [bp].w3
_endif
call prefld
mov [bp].thom,si
VZ_RET
nxtsdn endp
dspsdn proc
call dispstat
mov si,[bp].thom
clr cl
mov dx,[bp].w3
jmp tout
dspsdn endp
endcs
end
;****************************
; End of 'smooth.asm'
; Copyright (C) 1989 by c.mos
;****************************