antoine-source/appleworksgs/PL/Src/PRULER.S

1 line
3.1 KiB
ArmAsm
Executable File

load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_Deref
IMPORT DoneH
IMPORT DoneV
IMPORT P_ContentRect
IMPORT P_Do_Ruler
IMPORT P_FullPaperRect
IMPORT P_H
IMPORT P_HRulRect
IMPORT P_PageMode
IMPORT P_PaperRect
IMPORT P_PortRect
IMPORT P_PrintHand
IMPORT P_V
IMPORT P_VRulRect
IMPORT D_Set4Pat
IMPORT D_UnLock
;----------------------------------------------------------------------
;
; Draw Rulers
;
P_DrawRulers PROC EXPORT
;Using P_Data
;Using P_RulerData
;Using P_IconData
input rgnhdl:l
local tmprect:r,counter:w,offset:w,printstuff:l,vert:l
local horz:l,ppp:w,startloc:w,tmp:l,ppfp:w,rgnptr:l
begin +b
call D_Set4Pat,in=(#LightYellow:w)
moveword #P_TabWTop,tmprect
moveword #P_TabWBottom,tmprect+4
moveword P_VRulRect+2,tmprect+2
moveword P_VRulRect+6,tmprect+6
tool _ClipRect,in=(!tmprect:l)
tool _PaintRect,in=(!tmprect:l)
_PenNormal
rcall D_Deref,in=(P_PrintHand:ax),out=(printstuff:ax)
moveword [printstuff]:#4,vert
moveword [printstuff]:#6,horz
stz vert+2
stz horz+2
rcall D_UnLock,in=(P_PrintHand:ax)
rcall D_Deref,in=(rgnhdl:ax),out=(rgnptr:ax)
; ; Horizontal ruler
moverect P_HRulRect,tmprect
moveword P_VRulRect+2,tmprect+2
tool _RectInRgn,in=(!tmprect:l,rgnhdl:l),out=(a:w)
jeq CkVert
subword P_PaperRect+6,P_PaperRect+2,ppp
; do D_Update Q_Rect!?!?!
subword P_ContentRect+2,P_H,startloc
lda P_PageMode
bne DoHPage
tool _Long2Fix,in=(horz:l),out=(horz:l)
bra DoHoriz
DoHPage moveword P_FullPaperRect+2,startloc
subword P_FullPaperRect+6,P_FullPaperRect+2,ppfp
tool _Multiply,in=(horz:w,ppfp:w),out=(tmp:l)
tool _FixDiv,in=(tmp:l,#0:w,ppp:w),out=(horz:l)
DoHoriz
pushlong horz
pushword startloc
cmpw [rgnptr]:#4,P_ContentRect+2
blt HContent1
and #$FFFE
pushword a
bra HCk
HContent1 pushword P_ContentRect+2
HCk cmpw [rgnptr]:#8,P_ContentRect+6
blt HContent2
pushword P_ContentRect+6
bra DoneH
HContent2 pushword a
DoneH ; in :l,:w,:w,:w
in #0:w,#P_HRulRect:l,#P_VRulRect:l,#P_PortRect:l
in #P_ContentRect:l,P_Pagemode:w
xcall P_Do_Ruler
; ; Vertical ruler
CkVert tool _RectInRgn,in=(#P_VRulRect:l,rgnhdl:l),out=(a:w)
jeq exit
subword P_PaperRect+4,P_PaperRect,ppp
subword P_ContentRect,P_V,startloc
lda P_PageMode
bne DoVPage
tool _Long2Fix,in=(vert:l),out=(vert:l)
bra DoVert
DoVPage moveword P_FullPaperRect,startloc
subword P_FullPaperRect+4,P_FullPaperRect,ppfp
tool _Multiply,in=(vert:w,ppfp:w),out=(tmp:l)
tool _FixDiv,in=(tmp:l,#0:w,ppp:w),out=(vert:l)
DoVert
pushlong vert
pushword startloc
cmpw [rgnptr]:#2,P_ContentRect
blt VContent1
pushword a
bra VCk
VContent1 pushword P_ContentRect
VCk cmpw [rgnptr]:#6,P_ContentRect+4
blt VContent2
pushword P_ContentRect+4
bra DoneV
VContent2 pushword a
DoneV ; in :l,:w,:w,:w
in #1:w,#P_HRulRect:l,#P_VRulRect:l,#P_PortRect:l
in #P_ContentRect:l,P_Pagemode:w
xcall P_Do_Ruler
Exit rcall D_UnLock,in=(rgnhdl:ax)
_PenNormal
return
ENDP
END