load 'macros.dump' include 'driver.equ' include 'pl.equ' ;----------------------------------------------- ; ; Imported addresses ; ;----------------------------------------------- IMPORT Asc2Fix IMPORT D_CloseDialog IMPORT D_DecimalOnly IMPORT D_Deref IMPORT Fix2Asc IMPORT D_GetNewModalDialog IMPORT D_NeedHand IMPORT P_AddGuide IMPORT P_AllHGCount IMPORT P_AllHGuides IMPORT P_AllVGCount IMPORT P_AllVGuides IMPORT P_BuildUndo IMPORT P_ContentRect IMPORT P_DefSize IMPORT P_DeleteData IMPORT P_DoScritch IMPORT P_DragStuff IMPORT P_ExplodeGuide IMPORT P_FindGuide IMPORT P_Fix2Int IMPORT P_FixPt IMPORT P_H IMPORT P_HorizGCount IMPORT P_HorizGuides IMPORT P_Local2PL IMPORT P_LockGuides IMPORT P_MergeGuides IMPORT P_OldIdlePt IMPORT P_PageMode IMPORT P_PageRect IMPORT P_PaperRect IMPORT P_PrintHand IMPORT P_SGuideDlog IMPORT P_TrackMaskHorz IMPORT P_TrackMaskVert IMPORT P_TrackOn IMPORT P_V IMPORT P_VRulRect IMPORT P_VertGCount IMPORT P_VertGuides IMPORT P_VisGuides IMPORT D_Set4Pat IMPORT D_SetCursor IMPORT D_UnLock IMPORT D_FastMult IMPORT P_FullPaperRect IMPORT D_UseStdColors ;----------------------------------------------- ; ; Forward addresses and entries ; ;----------------------------------------------- ENTRY P_DrawAGuide ENTRY P_KillOldGuides ; pguide.s ;----------------------------------------------------------------------------- ; ; P_NewGuide (Vert:w) ; P_NewGuide PROC EXPORT ;Using P_Data input Vert:w local Amount:w,Count:w,Offset:w,guiderect:r local Max:w,Min:w,array:l,dist:w,tmprect:r local amt:l,newcount:w error err begin stz err lda vert bne SetVert call D_SetCursor,in=(#UpDownCursor:w) bra DidCursor SetVert call D_SetCursor,in=(#LeftRightCursor:w) DidCursor movelong P_ContentRect+4,tmprect+4 stz tmprect moveword P_VRulRect+2,tmprect+2 tool _ClipRect,in=(!tmprect:l) lda vert bne VertArray moveword P_AllHGCount,Count movelong P_AllHGuides,array moveword P_ContentRect,Min moveword P_ContentRect+4,Max moveword #2,dist bra DidArrays VertArray moveword P_AllVGCount,Count movelong P_AllVGuides,array moveword P_ContentRect+2,Min moveword P_ContentRect+6,Max moveword #4,dist DidArrays in #641:w,#201:w,count:w,array:l,#P_DrawAGuide:l,#RulerGuide:w in Vert:w,Max:w,Min:w,dist:w,#0:w out newcount:w,amt:w xerr err xcall P_DragStuff call P_BuildUndo,in=(#P_GuideUndo:w) cmpw count,newcount beq DidMove lda vert beq GetHoriz movelong P_VertGuides,array moveword P_VertGCount,count bra DidArrays2 GetHoriz movelong P_HorizGuides,array moveword P_HorizGCount,count DidArrays2 bne Unlocked NeedNew call D_NeedHand,in=(#4:l),out=(array:l) Unlocked ; ; Place it in the array. in amt:w,array:l,count:w,#RulerGuide:w out a:w xerr err xcall P_AddGuide done lda vert beq HorizCount inc P_VertGCount inc P_AllVGCount movelong array,P_VertGuides bra DidMove HorizCount inc P_HorizGCount inc P_AllHGCount movelong array,P_HorizGuides DidMove exit call P_MergeGuides tool _ClipRect,in=(#P_ContentRect:l) return ENDP ;----------------------------------------------------------------------------- ; ; P_MoveGuide (Pt:l) -- localized Q_Point ; ; D_MouseDown at Pt. ; Look through page's guidelists to see if it should be dragged. ; If so, rip it out of the master guidelist, then call the drag ; routine with the master guidelist. Rip it out of the page ; guide list and re-insert it if it still exists. ; ; DragStuff needs to return a Q_Point. Guide existance can be checked ; by looking at the input/output count. The returned Q_Point is used ; for insertion into the page's guidelist. ; P_MoveGuide PROC EXPORT ;Using P_Data input Pt:l output MovedIt:w local vert:w,offset:w,array:l,count:w local amt:w,newcount:w,OrigPt:l local Max:w,Min:w,Dist:w local tmprect:r,NewPt:l local _p_array:l,_p_count:w local hwidth:w,vwidth:w,guidetype:w error err begin ; Q_Point needs to be 'widened' to check 1 pixel above & below, ; 2 Q_Pixels each to the left & right? ; needs to coincide w/ draggings nearness checking. stz MovedIt lda P_LockGuides ; Don't drag if guides are X_Locked jne exit lda P_VisGuides ; or hidden. jeq exit moveword #2,vwidth moveword #1,hwidth movelong Pt,OrigPt lda P_PageMode beq DidMap asl vwidth asl vwidth ; ;** ? asl hwidth inc hwidth ; check vertical guides DidMap moveword #1,vert movelong P_VertGuides,array moveword P_VertGCount,count moveword Pt+2,amt moveword P_ContentRect+2,Min moveword P_ContentRect+6,Max moveword #4,dist in array:l,count:w,amt:w,vwidth:w,#-1:w out offset:w,Pt+2:w,guidetype:w xcall P_FindGuide lda offset bpl Removal ; check horizontal guides stz vert movelong P_HorizGuides,array moveword P_HorizGCount,count moveword Pt,amt moveword P_ContentRect,Min moveword P_ContentRect+4,Max moveword #2,dist in array:l,count:w,amt:w,hwidth:w,#-1:w out offset:w,Pt:w,guidetype:w xcall P_FindGuide lda offset bpl Removal brl exit ; remove it. Removal call P_BuildUndo,in=(#P_GuideUndo:w) lda count dec a bne DeleteIt tool _DisposeHandle,in=(array:l) stzl array stz count bra Deleted DeleteIt call P_DeleteData,in=(array:l,offset:w,#1:w,#4:w,count:w),err=(err) dec count Deleted moverect P_ContentRect,tmprect lda vert beq DoHoriz dec P_VertGCount rcall P_FixPt,in=(Pt:ax,#1:y),out=(NewPt:ax) stx tmprect+2 inx stx tmprect+6 bra DidUnMap DoHoriz dec P_HorizGCount rcall P_FixPt,in=(Pt:ax,#0:y),out=(NewPt:ax) sta tmprect inc a sta tmprect+4 DidUnmap ; re-merge call P_MergeGuides lda vert beq HorizMerge movelong P_AllVGuides,_p_array moveword P_AllVGCount,_p_count bra DidMerge HorizMerge movelong P_AllHGuides,_p_array moveword P_AllHGCount,_p_count DidMerge tool _EraseRect,in=(!tmprect:l) tool _InvalRect,in=(!tmprect:l) movelong P_ContentRect+4,tmprect+4 stz tmprect moveword P_VRulRect+2,tmprect+2 tool _ClipRect,in=(!tmprect:l) lda P_TrackOn beq DidScritch call P_DoScritch,in=(P_OldIdlePt:l) stz P_TrackOn DidScritch lda vert bne DoLeftRight call D_SetCursor,in=(#UpDownCursor:w) bra DidCurse DoLeftRight call D_SetCursor,in=(#LeftRightCursor:w) DidCurse ; drag it. in #641:w,#201:w,_p_count:w,_p_array:l,#P_DrawAGuide:l,guidetype:w in Vert:w,Max:w,Min:w,dist:w,#0:w out newcount:w,amt:w xerr err xcall P_DragStuff inc MovedIt cmpw _p_count,newcount beq DidMove lda count bne Unlocked NeedNew call D_NeedHand,in=(#4:l),out=(array:l) Unlocked ; ; Place it in the array. in amt:w,array:l,count:w,guidetype:w out a:w xerr err xcall P_AddGuide done lda vert beq HorizCount inc P_VertGCount inc P_AllVGCount movelong array,P_VertGuides bra DidMove HorizCount inc P_HorizGCount inc P_AllHGCount movelong array,P_HorizGuides DidMove call P_MergeGuides tool _ClipRect,in=(#P_ContentRect:l) exit return ENDP ;------------------------------------------------------------------------------ ; ; P_DrawGuides (RectPtr:l) ; P_DrawGuides PROC EXPORT ;Using P_Data input RectPtr:l local Ptr:l,Count:w,H:w,V:w,offset:l begin ThePt equ V subword P_ContentRect,P_V,offset subword P_ContentRect+2,P_H,offset+2 lda P_AllVGCount beq DoHoriz ; draw vertical guides rcall D_Deref,in=(P_AllVGuides:ax),out=(Ptr:ax) stz Count VLoop lda Count cmp P_AllVGCount bge DoneVert asl a asl a tay moveword [Ptr]:y,H lda P_PageMode beq NormV tool _MapPt,in=(!ThePt:l,#P_PaperRect:l,#P_FullPaperRect:l) bra ShowV NormV addword H,offset+2,H ShowV call P_DrawAGuide,in=(#-1:l,H:w,#0:w,#-1:w,#1:w) inc Count bra VLoop DoneVert rcall D_UnLock,in=(P_AllVGuides:ax) ; draw horizontal guides DoHoriz lda P_AllHGCount beq Exit rcall D_Deref,in=(P_AllHGuides:ax),out=(Ptr:ax) stz Count HLoop lda Count cmp P_AllHGCount bge DoneHoriz asl a asl a tay moveword [Ptr]:y,V lda P_PageMode beq NormH tool _MapPt,in=(!ThePt:l,#P_PaperRect:l,#P_FullPaperRect:l) bra ShowH NormH addword V,offset,V ShowH call P_DrawAGuide,in=(#-1:l,#0:w,V:w,#-1:w,#0:w) inc Count bra HLoop DoneHoriz rcall D_UnLock,in=(P_AllHGuides:ax) Exit _PenNormal return ENDP ;--------------------------------------------------------------------------- ; ; P_DrawAGuide ; ; Notes for D_DrawProc: ; ; newpt of -1,-1 says to get rid of the old drawing & nothing else ; ; newpt == oldpt says to get rid of old, then redraw it for real. ; ; oldpt == -1,-1 says just draw it ; ; need to clip as necessary before calling this. ; Coordinates are in WINDOW local -- not offset nor scaled. ; P_DrawAGuide PROC EXPORT ;Using P_Data input oldpt:l,newpt:l,type:w,vert:w local tmprect:r begin movelong P_ContentRect+4,tmprect+4 call D_Set4Pat,in=(#Black:w) tool _SetPenSize,in=(#1:w,#1:w) tool _SetPenMode,in=(#notXOR:w) lda vert beq MaskVert tool _SetPenMask,in=(#P_TrackMaskVert:l) bra DidMask MaskVert tool _SetPenMask,in=(#P_TrackMaskHorz:l) DidMask ; ; UnDraw the old first... cmpl oldpt,#-1 beq DrawNew DoErase lda vert bne EraseV tool _MoveTo,in=(P_VRulRect+2:w,OldPt:w) tool _LineTo,in=(P_ContentRect+6:w,OldPt:w) bra DidOld EraseV tool _MoveTo,in=(OldPt+2:w,#0:w) tool _LineTo,in=(OldPt+2:w,P_ContentRect+4:w) DidOld ; ; Now the D_New... DrawNew cmpl newpt,#-1 jeq exit cmpl newpt,oldpt bne DrawIt ; ; Do send to back stuff.... moverect P_ContentRect,tmprect lda vert bne SendBackV moveword NewPt,tmprect inc a sta tmprect+4 bra SendIt SendBackV moveword NewPt+2,tmprect+2 inc a sta tmprect+6 SendIt tool _EraseRect,in=(!tmprect:l) tool _InvalRect,in=(!tmprect:l) brl exit DrawIt cmpl OldPt,#-1 bne Clipped tool _SetPenMode,in=(#modeCOPY:w) Clipped lda vert bne ShowV tool _MoveTo,in=(P_VRulRect+2:w,NewPt:w) tool _LineTo,in=(P_ContentRect+6:w,NewPt:w) bra Exit ShowV tool _MoveTo,in=(NewPt+2:w,#0:w) tool _LineTo,in=(NewPt+2:w,P_ContentRect+4:w) exit _PenNormal return ENDP ;--------------------------------------------------------------------------- ; ; P_SetGuides ; ; 1 = OK, 2 = Cancel ; ; 4 = LR LineEdit ; 5 = TB LineEdit ; 6 = Col LineEdit ; 7 = CS LineEdit ; ; 8 = LR 0.25 inch ; 9 = 0.5 inch ; 10 = LE control ; ; 12 = TB 0.25 inch ; 13 = 0.5 inch ; 14 = LE control ; ; 16 = Col 1 ; 17 = 2 ; 18 = LE control ; ; 20 = CS 0.25 inch ; 21 = 0.5 inch ; 22 = LE control ; ; 24-27 Static Q_Text P_SetGuides PROC EXPORT ;Using P_Data local result:w,TheDlog:l,anItem:w,ptr:l,hdl:l local vert:l,horz:l,tmp:l local vfrac:l,hfrac:l,cols:w local colspace:w,colwidth:w,margwidth:w local str:r,inches:l begin +b ; Dialog item #'s LRLE equ 4 TBLE equ 5 ColLE equ 6 CSLE equ 7 LR1 equ 8 LR2 equ 9 LR3 equ 10 TB1 equ 12 TB2 equ 13 TB3 equ 14 Col1 equ 16 Col2 equ 17 Col3 equ 18 CS1 equ 20 CS2 equ 21 CS3 equ 22 FirstStat equ 24 LastLE equ 7 jsl D_UseStdColors call D_GetNewModalDialog,in=(#P_SGuideDlog:l),out=(TheDlog:l) ; set defaults according to print record ?? movelong P_PrintHand,tmp movelong [tmp],ptr moveword [ptr]:#4,vert moveword [ptr]:#6,horz subword P_PageRect,P_PaperRect,tmp tool _FixDiv,in=(tmp:w,#0:w,vert:w,#0:w),out=(vfrac:l) subword P_PageRect+2,P_PaperRect+2,tmp tool _FixDiv,in=(tmp:w,#0:w,horz:w,#0:w),out=(hfrac:l) ; Now check horz and vert to see if they are .25 or .5" ; if so, D_Activate the appropriate control. If not, set ; the Q_Text to reflect the real page Q_Rect & D_Activate the ; LE's ctl. ; horizontal cmpl hfrac,#$00004000 beq DoHQuarter cmpl hfrac,#$00008000 beq DoHHalf DoHLE call Fix2Asc,in=(hfrac:l,!str:l) tool _SetIText,in=(TheDlog:l,#LRLE:w,!str:l) tool _SetDItemValue,in=(#1:w,TheDlog:l,#LR3:w) tool _SelIText,in=(TheDlog:l,#LRLE:w,#0:w,#4:w) bra DidH DoHQuarter tool _SetDItemValue,in=(#1:w,TheDlog:l,#LR1:w) bra DoneH DoHHalf tool _SetDItemValue,in=(#1:w,TheDlog:l,#LR2:w) DoneH tool _SelIText,in=(TheDlog:l,#LRLE:w,#4:w,#4:w) DidH ; vertical cmpl vfrac,#$00004000 beq DoVQuarter cmpl vfrac,#$00008000 beq DoVHalf DoVLE call Fix2Asc,in=(vfrac:l,!str:l) tool _SetIText,in=(TheDlog:l,#TBLE:w,!str:l) tool _SetDItemValue,in=(#1:w,TheDlog:l,#TB3:w) bra DoneV DoVQuarter tool _SetDItemValue,in=(#1:w,TheDlog:l,#TB1:w) bra DoneV DoVHalf tool _SetDItemValue,in=(#1:w,TheDlog:l,#TB2:w) DoneV Loop tool _ModalDialog,in=(#D_DecimalOnly+$80000000:l),out=(result:w) beq Loop cmp #OK beq Add cmp #Cancel jeq QuitDlog cmp #LastLE+1 blt Loop cmp #FirstStat bge Loop tool _SetDItemValue,in=(#1:w,TheDlog:l,result:w) cmpw result,#LR3 beq LEActive cmp #TB3 beq LEActive cmp #Col3 beq LEActive cmp #CS3 beq LEActive bra Loop ; ; 4 rctl's w/ LE's need to D_Activate that LE if selected! ; 10 -> 4, 14 -> 5, 18 -> 6, 22 -> 7. ; LEActive lsr a inc a lsr a inc a sta anItem tool _SelIText,in=(TheDlog:l,anItem:w,#0:w,#4:w) bra Loop ; ; Add necessary guides, after deleting old marked guides Add call P_KillOldGuides ; Top Margin tool _GetDItemValue,in=(TheDlog:l,#TB1:w),out=(a:w) beq Ck5TopB movelong #$00004000,inches ; 1/4" bra DoTopB Ck5TopB tool _GetDItemValue,in=(TheDlog:l,#TB2:w),out=(a:w) beq CkLETopB movelong #$00008000,inches ; 1/2" bra DoTopB CkLETopB tool _GetIText,in=(TheDLog:l,#TBLE:w,!str:l) call Asc2Fix,in=(!str:l),out=(inches:l) bcs Margins DoTopB lda P_HorizGCount bne GotNewH call D_NeedHand,in=(#4:l),out=(P_HorizGuides:l) GotNewH spacelong pushfixword vert pushlong inches _FixMul rcall P_Fix2Int,in=(s:ax),out=(vert:a) in a:w,P_HorizGuides:l,P_HorizGCount:w,#MargGuide:w out P_HorizGCount:w xcall P_AddGuide ; Bottom Margin subword P_PaperRect+4,vert,a in a:w,P_HorizGuides:l,P_HorizGCount:w,#MargGuide:w out P_HorizGCount:w xcall P_AddGuide ; Left Margin Margins tool _GetDItemValue,in=(TheDlog:l,#LR1:w),out=(a:w) beq Ck5LR movelong #$00004000,inches ; 1/4" bra DoLR Ck5LR tool _GetDItemValue,in=(TheDlog:l,#LR2:w),out=(a:w) beq CkLELR movelong #$00008000,inches ; 1/2" bra DoLR CkLELR tool _GetIText,in=(TheDLog:l,#LRLE:w,!str:l) call Asc2Fix,in=(!str:l),out=(inches:l) bcs Columns DoLR lda P_VertGCount bne GotNewV call D_NeedHand,in=(#4:l),out=(P_VertGuides:l) GotNewV spacelong pushfixword horz pushlong inches _FixMul rcall P_Fix2Int,in=(s:ax),out=(margwidth:a) and #$FFFE in a:w,P_VertGuides:l,P_VertGCount:w,#MargGuide:w out P_VertGCount:w xcall P_AddGuide ; Right Margin subword P_PaperRect+6,margwidth,a and #$FFFE in a:w,P_VertGuides:l,P_VertGCount:w,#MargGuide:w out P_VertGCount:w xcall P_AddGuide ; Column guides.... Columns tool _GetDItemValue,in=(TheDlog:l,#Col1:w),out=(a:w) jne QuitDlog ; w/ 1 col, no col-guides necess Ck2Col tool _GetDItemValue,in=(TheDlog:l,#Col2:w),out=(a:w) beq CkLECol moveword #2,cols bra DoCol CkLECol tool _GetIText,in=(TheDLog:l,#ColLE:w,!cols:l) tool _Dec2Int,in=(!cols+1:l,#1:w,#0:w),out=(cols:w) jcs QuitDlog DoCol tool _GetDItemValue,in=(TheDlog:l,#CS1:w),out=(a:w) beq Ck5CW movelong #$00004000,inches ; 1/4" bra DoCW Ck5CW tool _GetDItemValue,in=(TheDlog:l,#CS2:w),out=(a:w) beq CkLECW movelong #$00008000,inches ; 1/2" bra DoCW CkLECW tool _GetIText,in=(TheDLog:l,#CSLE:w,!str:l) call Asc2Fix,in=(!str:l),out=(inches:l) jcs QuitDlog DoCW spacelong pushfixword horz pushlong inches _FixMul rcall P_Fix2Int,in=(s:ax),out=(colspace:a) ; colwidth = (pagewidth - 2*marginwidth - (cols-1)*colspace) / cols. lda margwidth asl a sta tmp subword P_PaperRect+6,tmp,tmp lda cols dec a rcall D_FastMult,in=(a:x,colspace:y),out=(tmp+2:a) subword tmp,tmp+2,tmp tool _UDivide,in=(tmp:w,cols:w),out=(y:w,colwidth:w) moveword margwidth,tmp ColLoop dec cols beq QuitDlog addword tmp,colwidth,tmp and #$FFFE in a:w,P_VertGuides:l,P_VertGCount:w,#ColGuide:w out P_VertGCount:w xcall P_AddGuide addword tmp,colspace,tmp and #$FFFE in a:w,P_VertGuides:l,P_VertGCount:w,#ColGuide:w out P_VertGCount:w xcall P_AddGuide bra ColLoop QuitDlog call D_CloseDialog,in=(TheDlog:l) cmpw result,#Cancel beq exit call P_MergeGuides tool _EraseRect,in=(#P_ContentRect:l) tool _InvalRect,in=(#P_ContentRect:l) exit return ENDP ;--------------------------------------------------------------------------- ; ; P_KillOldGuides ; P_KillOldGuides PROC EXPORT ;Using P_Data local array:l,count:w,offset:w begin lda P_VertGCount jeq DoHoriz rcall D_Deref,in=(P_VertGuides:ax),out=(array:ax) moveword P_VertGCount,count dec a asl a asl a ina ina sta offset KillVLoop cmpw [array]:offset,#RulerGuide bne KillV subword offset,#4,offset bra ContV KillV rcall D_UnLock,in=(P_VertGuides:ax) ; ick!!! dec offset dec offset in P_VertGuides:l,offset:w,#1:w,#4:w,P_VertGCount:w xcall P_DeleteData rcall D_Deref,in=(P_VertGuides:ax),out=(array:ax) ; doubly so. dec P_VertGCount dec offset dec offset ContV lda offset bpl KillVLoop rcall D_UnLock,in=(P_VertGuides:ax) lda P_VertGCount bne DoHoriz tool _DisposeHandle,in=(P_VertGuides:l) stzl P_VertGuides DoHoriz lda P_HorizGCount jeq exit rcall D_Deref,in=(P_HorizGuides:ax),out=(array:ax) moveword P_HorizGCount,count dec a asl a asl a ina ina sta offset KillHLoop cmpw [array]:offset,#RulerGuide bne KillH subword offset,#4,offset bra ContH KillH rcall D_UnLock,in=(P_HorizGuides:ax) ; ick!!! dec offset dec offset in P_HorizGuides:l,offset:w,#1:w,#4:w,P_HorizGCount:w xcall P_DeleteData rcall D_Deref,in=(P_HorizGuides:ax),out=(array:ax) ; doubly so. dec P_HorizGCount dec offset dec offset ContH lda offset bpl KillHLoop rcall D_UnLock,in=(P_HorizGuides:ax) lda P_HorizGCount bne exit tool _DisposeHandle,in=(P_HorizGuides:l) stzl P_HorizGuides exit return ENDP ;--------------------------------------------------------------------------- ; ; P_ExplodeRect(pt:l,recptr:l) pt is in D_PL coords. ; P_ExplodeRect PROC EXPORT ;Using P_Data input pt:l,rectptr:l local ptr:l,hdl:l,tmppt:l error err begin moveword #1,err rcall P_Local2PL,in=(P_PageRect:ax),out=(tmppt:ax) subword pt,tmppt,a jmi quit subword pt+2,tmppt+2,a jmi quit rcall P_Local2PL,in=(P_PageRect+4:ax),out=(tmppt:ax) subword tmppt,pt,a jmi quit jeq quit cmp P_DefSize jlt quit subword tmppt+2,pt+2,a jmi quit jeq quit DoTop in P_AllHGuides:l,P_AllHGCount:w,pt:w,#-1:w,#-1:w out [rectptr]:w xcall P_ExplodeGuide bcc DoBottom cmpw pt,P_PageRect jlt quit moveword P_PageRect,[rectptr] DoBottom in P_AllHGuides:l,P_AllHGCount:w,pt:w,#-1:w,#1:w out [rectptr]:#4:w xcall P_ExplodeGuide bcc DoLeft cmpw P_PageRect+4,pt jlt quit subword P_PageRect+4,#1,[rectptr]:#4 DoLeft in P_AllVGuides:l,P_AllVGCount:w,pt+2:w,#-1:w,#-1:w out [rectptr]:#2:w xcall P_ExplodeGuide bcc DoRight cmpw pt+2,P_PageRect+2 jlt quit moveword P_PageRect+2,[rectptr]:#2 DoRight in P_AllVGuides:l,P_AllVGCount:w,pt+2:w,#-1:w,#1:w out [rectptr]:#6:w xcall P_ExplodeGuide bcc exit cmpw P_PageRect+6,pt+2 blt quit subword P_PageRect+6,#4,[rectptr]:#6 exit stz err ldy #6 addword [rectptr]:y,#2,[rectptr]:y ldy #4 addword [rectptr]:y,#1,[rectptr]:y quit return ENDP END