antoine-source/appleworksgs/WP/Src/Menus.aii
2023-03-04 03:45:20 +01:00

1 line
14 KiB
Plaintext
Executable File

load 'macros.dump'
include 'driver.equ'
include 'wp.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT W_CRCopied
IMPORT W_CalcDocRect
IMPORT W_CalcPages
IMPORT W_CalcPixels
IMPORT W_CalcScrollVals
IMPORT CaretOff
IMPORT W_ClipRuler
IMPORT W_CurDoc
IMPORT W_DelSelect
IMPORT D_DisableMItems
IMPORT W_DrawPgBox
IMPORT D_EnableMItems
IMPORT W_EndLine
IMPORT W_EndOffset
IMPORT W_EndPar
IMPORT D_FastMult
IMPORT W_FirstPage
IMPORT W_GetLRecPtr
IMPORT W_GetLastLine
IMPORT W_GetNewOffset
IMPORT W_GetParRec
IMPORT W_GetRgn
IMPORT W_GotNewCtlVals
IMPORT W_GotoPage
IMPORT W_HideItem
IMPORT W_InsertKeys
IMPORT W_InvSelect
IMPORT W_JunkLeft
IMPORT W_Key
IMPORT W_KillSelect
IMPORT W_LastP
IMPORT W_LineToTopPixel
IMPORT W_MakeCaret
IMPORT W_MakeCaretNS
IMPORT W_MakeCr
IMPORT W_MakeLines
IMPORT W_NewNumPgs
IMPORT W_NewRuler
IMPORT W_NumPgs
IMPORT W_OverRide
IMPORT W_PageDialog
IMPORT W_ParRec
IMPORT W_Ptr
IMPORT W_PutOnScreen
IMPORT W_RulBytes
IMPORT W_ScreenChangedNS
IMPORT W_ScrollBar
IMPORT W_SelectOff
IMPORT W_SelectOn
IMPORT W_SetDocRect
IMPORT W_SetFullREct
IMPORT W_ShowItem
IMPORT W_ShowRuler
IMPORT W_StartLine
IMPORT W_StartOffset
IMPORT W_StartPar
IMPORT W_SwitchData
IMPORT W_TopPg
IMPORT W_TopPgPixel
IMPORT W_UnUseRuler
IMPORT W_UndoOff
IMPORT W_UpdateText
IMPORT W_UseRuler
IMPORT W_View
IMPORT W_HeaderBits
IMPORT W_ModFlags
IMPORT Q_Rect
IMPORT W_Selected
;-----------------------------------------------
;
; Forward addresses and entries
;
;-----------------------------------------------
ENTRY W_ChangeView
ENTRY W_UnCheckView
********************************************************************
*
* Includes...
*
* Monday, May 1, 1989 5:45:52 AM
********************************************************************
****************************************************************
* W_ChangeRuler - shows or hides the ruler
W_ChangeRuler PROC EXPORT
;Using wpglobals
;Using ScreenData
;Using W_ATTRData
local Q_Rect:r,SAmt:w,Rgn:l
begin +b
jsl CaretOff
pushlong W_CurDoc
_SetPort
jsl CaretOff
pushlong !Q_Rect
jsl W_CalcDocRect
stz Q_Rect ;go to top
pushword #$504
_DeleteMItem
lda W_ShowRuler
beq ShowIt
moveword #-W_RulerHt,SAmt
pushlong #W_HideItem
pushword #$503
pushword #5
_InsertMItem
bra DoneInvid
ShowIt
moveword #W_RulerHt,SAmt
pushlong #W_ShowItem
pushword #$503
pushword #5
_InsertMItem
DoneInvid
pushlong !Q_Rect
pushword #0
pushword SAmt
jsl W_GetRgn
movelong ax,Rgn
phx
pha
_ScrollRect
pushlong Rgn
_InValRgn
lda W_ShowRuler
eor #1
sta W_ShowRuler
jsl W_ScreenChangedNS
pha
pha
pha
jsl W_CalcScrollVals
lda 3,s
pha
pushlong W_ScrollBar
_SetCtlParams
pla
pla ;value not used
jsl W_MakeCaret
return
ENDP
****************************************************************
W_GotoPg PROC EXPORT
;Using wpglobals
local NewPage:w,UsePage:w,OldPage:l
begin +b
pushlong W_CurDoc
_SetPort
jsl W_SetDocRect
jsl CaretOff
jsl W_UndoOff
pha
jsl W_GotoPage
pullword NewPage
cmp #-1
jeq GPExit
addword W_FirstPage,W_NumPgs,a
sta UsePage
cmp NewPage
bcc GotUse
lda W_FirstPage
inc a
sta UsePage
cmp NewPage
bcs GotUse
moveword NewPage,UsePage
GotUse
movelong W_TopPg,OldPage
subword UsePage,W_FirstPage,W_TopPg
stz W_TopPgPixel
jsl W_SetFullREct
pha
pha
pha
jsl W_CalcScrollVals
pla
pla
pushlong W_ScrollBar
_SetCtlValue
pushlong OldPage
jsl W_GotNewCtlVals
jsl W_MakeCaretNS
GPExit
jsl W_SetFullREct
return
ENDP
****************************************************************
* W_GotoBeg - goes to the beginning of the W_Document
W_GotoBeg PROC EXPORT
;Using wpglobals
begin +b
pushlong W_CurDoc
_SetPort
jsl W_SetDocRect
jsl CaretOff
jsl W_UndoOff
jsl W_KillSelect
moveword #1,W_StartPar
stz W_StartLine
moveword #W_TextHeader,W_StartOffset
jsl W_MakeCaret
jsl W_SetFullREct
return
ENDP
****************************************************************
* W_GotoEnd - goes to the end of the W_Document
W_GotoEnd PROC EXPORT
;Using wpglobals
local ParPtr:l,LinePtr:l
begin +b
pushlong W_CurDoc
_SetPort
jsl W_SetDocRect
jsl CaretOff
jsl W_UndoOff
jsl W_KillSelect
moveword W_LastP,W_StartPar
PLoop
lda W_StartPar
jsl W_GetParRec
movelong ax,ParPtr
moveword [ParPtr]:#W_pAttr,a
cmp #W_Picture
beq NextPar
cmp #W_PgBrk
bne W_GotPar
NextPar dec W_StartPar
bra PLoop
W_GotPar
moveword [ParPtr]:#W_pLastLine,a
tay
dec a
sta W_StartLine
spacelong
pushword W_StartPar
phy
jsl W_GetLRecPtr
pullLong LinePtr
moveword [LinePtr]:#W_lOffset,W_StartOffset
jsl W_MakeCaret
jsl W_SetFullREct
return
ENDP
****************************************************************
W_GotApNum PROC EXPORT
;Using wpglobals
input num:w
local W_ParRec:l,NewPar:w,NewLine:w,NewOffset:w
begin
jsl W_UndoOff
ldx W_LastP
dex
ldy num
jsl D_FastMult
pha
pha
pha
pushword #8
_UDivide
plx
pla
inx
stx NewPar
stz NewLine
lda NewPar
jsl W_GetParRec
movelong ax,W_ParRec
moveword [W_ParRec]:#W_pAttr,a
beq NoPB
inc NewPar
NoPB
pha
pushword W_StartPar
pushword W_StartLine
pushword W_StartOffset
moveword NewPar,W_StartPar ;was pushword NewPar
pha ;sta W_StartPar SFS 5/24/89
moveword NewLine,W_StartLine
pha
jsl W_GetNewOffset
pullword W_StartOffset
jsl W_MakeCaret
return
ENDP
****************************************************************
W_WpSelectAll PROC EXPORT
;Using wpglobals
begin +b
pushlong W_CurDoc
_SetPort
jsl CaretOff
jsl W_UndoOff
jsl W_SelectOff
moveword W_LastP,W_EndPar
jsl W_GetLastLine
stx W_EndOffset
sta W_EndLine
cmpw #1,W_EndPar
bne IsDiff
lda W_EndLine
bne IsDiff
pha
pushword #1
pushword #0
pushword W_EndOffset
jsl W_JunkLeft
pla
cmp #W_TextHeader
beq Nothing
IsDiff
moveword #1,W_StartPar
stz W_StartLine
moveword #W_TextHeader,W_StartOffset
jsl W_InvSelect
jsl W_SelectOn
jsl W_SetDocRect
jsl W_InvSelect
jsl W_SetFullREct
Nothing
return
ENDP
****************************************************************
W_WpSelectPar PROC EXPORT
;Using wpglobals
local W_ParRec:l
begin +b
pushlong W_CurDoc
_SetPort
jsl CaretOff
jsl W_UndoOff
jsl W_SetDocRect
jsl W_SelectOff
stz W_StartLine
moveword #W_TextHeader,W_StartOffset
moveword W_StartPar,W_EndPar
jsl W_GetLastLine
stx W_EndOffset
sta W_EndLine
cpx #W_TextHeader
beq NoPar
lda W_StartPar
cmp W_LastP
bcs NotNext
inc W_EndPar
stz W_EndLine
moveword #W_TextHeader,W_EndOffset
NotNext
jsl W_SelectOn
jsl W_SetDocRect
jsl W_InvSelect
NoPar
jsl W_SetFullREct
return
ENDP
****************************************************************
* W_CopyRuler
W_CopyRuler PROC EXPORT
;Using wpglobals
local W_ParRec:l
begin +b
jsl W_UndoOff
pushlong W_CurDoc
_SetPort
moveword #1,W_CRCopied
lda W_StartPar
jsl W_GetParRec
movelong ax,W_ParRec
pushlong [W_ParRec]:#W_pRulerHand
pushlong #W_ClipRuler
pushlong #W_RulBytes
_HandToPtr
return
ENDP
****************************************************************
W_PasteRuler PROC EXPORT
;Using wpglobals
local W_ParRec:l,Ruler:l,W_Ptr:l,Q_Rect:r,CurPar:w,temp:w
begin +b
pushlong W_CurDoc
_SetPort
jsl W_SetDocRect
jsl CaretOff
jsl W_UndoOff
lda W_CRCopied
jeq PRExit
pushword W_StartPar
pushword W_StartLine
pushlong #0
jsl W_PutOnScreen
pha
pha
jsl W_NewRuler
pullLong Ruler
pushlong #W_ClipRuler
pushlong Ruler
pushlong #W_RulBytes
_PtrToHand
movelong [Ruler],W_Ptr
moveword #0,[W_Ptr]
lda W_StartPar
sta CurPar
Loop lda CurPar
jsl W_GetParRec
movelong ax,W_ParRec
pushword #1
pushlong Ruler
jsl W_UseRuler
pushword #1
pushlong [W_ParRec]:#W_pRulerHand
jsl W_UnUseRuler
movelong Ruler,[W_ParRec]:#W_pRulerHand
pushword CurPar
jsl W_MakeLines
lda W_Selected
beq DoneLoop
inc CurPar
cmpw W_EndPar,CurPar
bcs Loop
DoneLoop
pushlong !Q_Rect
jsl W_CalcDocRect
pha
pha
pushword W_StartPar
pushword #0
jsl W_LineToTopPixel
pla
pla
sta temp
scmpw temp,Q_Rect
bcc GotR
lda temp
sta Q_Rect
GotR
pushlong !Q_Rect
_ClipRect
pushlong !Q_Rect
_EraseRect
jsl W_UpdateText
jsl W_CalcPages
jsl W_SetFullREct
jsl W_MakeCaret
PRExit
return
ENDP
****************************************************************
W_DoSetPg PROC EXPORT
;Using wpglobals
;Using ScreenData
local NewPage:w,Q_Rect:r
begin +b
pushlong W_CurDoc
_SetPort
jsl W_SetDocRect
jsl CaretOff
jsl W_UndoOff
pha
pha
lda W_FirstPage
inc a
pha
pushword W_HeaderBits
jsl W_PageDialog
pla
plx
cpx #-1
jeq GPExit
sta W_HeaderBits
dex
stx W_FirstPage
jsl W_SetFullREct
jsl CaretOff
jsl W_CalcPages
pushword W_NumPgs
jsl W_NewNumPgs
moveword #1,W_OverRide
jsl W_MakeCaret
pushlong !Q_Rect ;first erase the old value
_getPortRect
lda Q_Rect+6
sec
sbc #W_SideWidth-2
sta Q_Rect+2
lda Q_Rect
clc
adc #W_PNumBoxHt
sta Q_Rect+4
pushlong !Q_Rect
_InvalRect
GPExit
return
ENDP
****************************************************************
*
W_DoNormal PROC EXPORT
;Using wpglobals
;Using W_ATTRData
begin +b
lda W_View
beq DNExit
pushword #W_NormalOn
jsl W_SwitchData
pushword W_View
jsl W_CalcPixels
jsl W_UnCheckView
pushword #W_IPNBit+W_ITBit+W_IDBit
pushword #5
jsl D_DisableMItems
pushword #W_IPBBit+W_PageDBit
pushword #5
jsl D_EnableMItems
stz W_View
pushword #1
pushword #W_NVItem
_CheckMItem
pushword #W_NormalOn
jsl W_ChangeView
DNExit
return
ENDP
****************************************************************
*
W_DoHead PROC EXPORT
;Using wpglobals
;Using W_ATTRData
begin +b
lda W_View
cmp #W_HeaderOn
beq DHExit
pushword #W_HeaderOn
jsl W_SwitchData
pushword W_View
jsl W_CalcPixels
jsl W_UnCheckView
pushword #W_IPBBit+W_PageDBit
pushword #5
jsl D_DisableMItems
pushword #W_IPNBit+W_ITBit+W_IDBit
pushword #5
jsl D_EnableMItems
lda #1
sta W_View
pushword #1
pushword #W_VHItem
_CheckMItem
pushword #W_HeaderOn
jsl W_ChangeView
DHExit
return
ENDP
****************************************************************
*
W_DoFoot PROC EXPORT
;Using wpglobals
;Using W_ATTRData
begin +b
lda W_View
bmi DFExit
pushword #W_FooterOn
jsl W_SwitchData
pushword W_View
jsl W_CalcPixels
jsl W_UnCheckView
pushword #W_IPBBit+W_PageDBit
pushword #5
jsl D_DisableMItems
pushword #W_IPNBit+W_ITBit+W_IDBit
pushword #5
jsl D_EnableMItems
lda #-1
sta W_View
pushword #1
pushword #W_VFItem
_CheckMItem
pushword #W_FooterOn
jsl W_ChangeView
DFExit
return
ENDP
****************************************************************
W_ChangeView PROC EXPORT
;Using wpglobals
input NewMode:w
local Q_Rect:r
begin
jsl CaretOff
jsl W_UndoOff
pushword NewMode
jsl W_SwitchData
lda W_HeaderBits
bne NoInit
moveword #W_HonEven+W_HonOdd+W_FonEven+W_FonOdd,W_HeaderBits
NoInit
jsl W_CalcPages
jsl W_MakeCaret
jsl W_SetFullREct
pushword W_NumPgs
jsl W_NewNumPgs
pha
pha
pha
jsl W_CalcScrollVals
pla
pla
pushlong W_ScrollBar
_SetCtlValue
jsl W_DrawPgBox
pushlong !Q_Rect
jsl W_CalcDocRect
stz Q_Rect
pushlong !Q_Rect
_InvalRect
return
ENDP
****************************************************************
*
W_UnCheckView PROC EXPORT
;Using wpglobals
begin
lda W_View
bne NotNorm
pushword #0
pushword #W_NVItem
_CheckMItem
bra W_DoneCheck
NotNorm cmp #1
bne isFoot
pushword #0
pushword #W_VHItem
_CheckMItem
bra W_DoneCheck
IsFoot
pushword #0
pushword #W_VFItem
_CheckMItem
W_DoneCheck
return
ENDP
****************************************************************
W_InsertPageBrk PROC EXPORT
;Using wpglobals
local W_ParRec:l
begin +b
pushlong W_CurDoc
_SetPort
jsl W_SetDocRect
jsl CaretOff
jsl W_UndoOff
jsl W_DelSelect
pushword W_StartPar
pushword W_StartLine
pushword W_StartOffset
jsl W_MakeCr
pushword W_StartPar
pushword W_StartLine
pushword W_StartOffset
jsl W_MakeCr
lda W_StartPar
inc a
jsl W_GetParRec
movelong ax,W_ParRec
pushword #1
pushlong [W_ParRec]:#W_pRulerHand
jsl W_UnUseRuler
movelong #0,[W_ParRec]:#W_pLineHand
moveword #W_PgBrk,[W_ParRec]:#W_pAttr
movelong #0,[W_ParRec]:#W_pRulerHand
addword #2,W_StartPar,W_StartPar
moveword #W_TextHeader,W_StartOffset
stz W_StartLine
jsl W_CalcPages
moveword #1,W_OverRide
jsl W_MakeCaret
jsl W_SetFullREct
return
ENDP
****************************************************************
W_DoPageNum PROC EXPORT
;Using W_EditData
;Using wpglobals
begin +b
pushlong W_CurDoc
_SetPort
jsl CaretOff
moveword #W_PageNumber,W_Key
stz W_ModFlags
jsl W_InsertKeys
return
ENDP
****************************************************************
W_DoDate PROC EXPORT
;Using W_EditData
;Using wpglobals
begin +b
pushlong W_CurDoc
_SetPort
jsl CaretOff
moveword #W_Date,W_Key
stz W_ModFlags
jsl W_InsertKeys
return
ENDP
****************************************************************
W_DoTime PROC EXPORT
;Using W_EditData
;Using wpglobals
begin +b
pushlong W_CurDoc
_SetPort
jsl CaretOff
moveword #W_Time,W_Key
stz W_ModFlags
jsl W_InsertKeys
return
ENDP
END