mirror of
https://github.com/elliotnunn/sys7.1-doc-wip.git
synced 2024-10-31 19:05:04 +00:00
338 lines
9.6 KiB
Plaintext
338 lines
9.6 KiB
Plaintext
|
;
|
||
|
; File: PuppetString.MacDraw.a
|
||
|
;
|
||
|
; Contains: Puppet string conversion table custumized for MacDraw
|
||
|
;
|
||
|
; Written by: Phil Goldman
|
||
|
;
|
||
|
; Copyright: © 1986-1991 by Apple Computer, Inc., all rights reserved.
|
||
|
;
|
||
|
; Change History (most recent first):
|
||
|
;
|
||
|
; <0> x/xx/86 PYG New Today.
|
||
|
;
|
||
|
;--------------------------------------------------------------------
|
||
|
|
||
|
;--------------------------------------------------------------------
|
||
|
;
|
||
|
; This table is used to convert puppet instructions to event sequences specifically
|
||
|
; for MacDraw. MacDraw is identified as having a creator equal to 'MDRW'. The basic
|
||
|
; instructions are handled by the default table defined in PuppetString.Default.a
|
||
|
;
|
||
|
;--------------------------------------------------------------------
|
||
|
|
||
|
PRINT OFF
|
||
|
LOAD 'ProcessMgrIncludes.D'
|
||
|
INCLUDE 'PuppetStringDefs.a'
|
||
|
PRINT ON
|
||
|
|
||
|
FUNC
|
||
|
BLANKS ON
|
||
|
STRING ASIS
|
||
|
|
||
|
LayoutMenuID EQU 6
|
||
|
GridOnOffItem EQU 9
|
||
|
ExtraMenuID EQU 14
|
||
|
ExtraGridOffItem EQU 13
|
||
|
|
||
|
TableTop
|
||
|
NumberOfEntries DC.B (EntriesBottom-EntriesTop)/6,0
|
||
|
EntriesTop
|
||
|
ResetEntry DC.W pstEventCode
|
||
|
DC.L RstEvtCode-TableTop
|
||
|
CutEntry DC.W pstMenuItem
|
||
|
DC.W 3,3
|
||
|
CopyEntry DC.W pstMenuItem
|
||
|
DC.W 3,4
|
||
|
PasteEntry DC.W pstMenuItem
|
||
|
DC.W 3,5
|
||
|
SelectRectEntry DC.W pstEventList
|
||
|
DC.L SREvtList-TableTop
|
||
|
SelectAllEntry DC.W pstMenuItem
|
||
|
DC.W 3,9
|
||
|
MemCopyEntry DC.W pstIllegalInstr
|
||
|
DC.L 0
|
||
|
OutlineRectEntry DC.W pstEventCode
|
||
|
DC.L OREvtCode-TableTop
|
||
|
GridOnOffEntry DC.W pstMenuItem
|
||
|
DC.W LayoutMenuID,GridOnOffItem
|
||
|
EntriesBottom
|
||
|
|
||
|
RstEvtList
|
||
|
;RstEvtParamCount DC.W 0
|
||
|
RstEvtListOffset DC.L 6
|
||
|
RstEvtListCount DC.W (RstEvtListBottom-RstEvt1)/evtBlkSize
|
||
|
RstEvt1
|
||
|
RstEvt1what DC.W mButDwnEvt+evtMouseLocal+evtIsImportant
|
||
|
RstEvt1message DC.L 0
|
||
|
RstEvt1when DC.L 0
|
||
|
RstEvt1where DC.W 5,5
|
||
|
RstEvt1modifiers DC.W 0
|
||
|
RstEvt2
|
||
|
RstEvt2what DC.W mButUpEvt+evtMouseLocal+evtIsUnimportant
|
||
|
RstEvt2message DC.L 0
|
||
|
RstEvt2when DC.L 0
|
||
|
RstEvt2where DC.W 5,5
|
||
|
RstEvt2modifiers DC.W $80
|
||
|
RstEvt3
|
||
|
RstEvt3what DC.W app4Evt
|
||
|
RstEvt3message DC.B ((GridOnOffEntry-EntriesTop)/6)+2,0,0,0
|
||
|
RstEvt3when DC.L 0
|
||
|
RstEvt3where DC.W 0,0
|
||
|
RstEvt3modifiers DC.W $80
|
||
|
RstEvtListBottom
|
||
|
|
||
|
RstEvtCode
|
||
|
SUBQ #4,SP ;make room for result
|
||
|
MOVE.W #LayoutMenuID,-(SP) ;push menu id
|
||
|
_GetMHandle
|
||
|
TST.L (SP) ;could we find it (might be DA menubar)
|
||
|
BNE.S RstEvtCodeFoundLayout ;if so, branch
|
||
|
MOVE.L (SP)+,A0 ;get rid of 0 on stack and clear A0
|
||
|
BRA.S RstEvtCodeDone ;return w/ an error
|
||
|
RstEvtCodeFoundLayout
|
||
|
MOVE.W #GridOnOffItem,-(SP) ;push item num
|
||
|
PEA LayoutItemString ;push address of string in Layout menu
|
||
|
_GetItem
|
||
|
|
||
|
SUBQ #4,SP ;make room for result
|
||
|
MOVE.L #'MENU',-(SP)
|
||
|
MOVE.W #ExtraMenuID,-(SP) ;push menu id
|
||
|
_GetResource
|
||
|
MOVE.W #ExtraGridOffItem,-(SP) ;push item num
|
||
|
PEA ExtraItemString ;push address of string in Layout menu
|
||
|
_GetItem
|
||
|
|
||
|
MOVEQ.L #0,D0 ;clear out d0
|
||
|
LEA LayoutItemString,A0
|
||
|
MOVE.B (A0)+,D0 ;d0.w <- length of LayoutItemString
|
||
|
SWAP D0
|
||
|
LEA ExtraItemString,A1
|
||
|
MOVE.B (A1)+,D0 ;d0.w <- length of LayoutItemString
|
||
|
_CmpString
|
||
|
LEA RstEvt3what,A0 ;get data to be set in A0
|
||
|
BEQ.S RstEvtCodeAreEqual ;branch if strings were equal
|
||
|
MOVE.W #nullEvt,(A0) ;don't do menu selection
|
||
|
BRA.S RstEvtCodeMakeHdl
|
||
|
RstEvtCodeAreEqual
|
||
|
MOVE.W #app4Evt,(A0) ;do menu selection
|
||
|
RstEvtCodeMakeHdl
|
||
|
LEA RstEvtList,A0 ;get top of list
|
||
|
MOVE.L #RstEvtListBottom-RstEvtList,D0 ;get size of list
|
||
|
_PtrToHand
|
||
|
BEQ.S RstEvtCodeDone ;if no error, branch
|
||
|
SUB.L A0,A0 ;clear out a0
|
||
|
RstEvtCodeDone
|
||
|
MOVE.L (SP)+,A1 ;get return address
|
||
|
ADDQ.W #4,SP ;get rid of parameter
|
||
|
MOVE.L A0,(SP) ;handle is return value
|
||
|
JMP (A1)
|
||
|
|
||
|
LayoutItemString DC.L 0,0,0,0,0,0
|
||
|
ExtraItemString DC.L 0,0,0,0,0,0
|
||
|
|
||
|
|
||
|
SREvtList
|
||
|
SRParamCount DC.W (SREvtListOffset-SRParams)/6
|
||
|
SRParams
|
||
|
SRParam1 DC.L SRParam1LocStart-TableTop
|
||
|
DC.W SRParam1LocEnd-SRParam1LocStart
|
||
|
SRParam2 DC.L SRParam2LocStart-TableTop
|
||
|
DC.W SRParam2LocEnd-SRParam2LocStart
|
||
|
SREvtListOffset DC.L 6
|
||
|
SREvtListCount DC.W (SREvtListBottom-SREvt1)/evtBlkSize
|
||
|
SREvt1
|
||
|
SREvt1what DC.W mButDwnEvt+evtMouseLocal+evtIsImportant
|
||
|
SREvt1message DC.L 0
|
||
|
SREvt1when DC.L 0
|
||
|
SREvt1where DC.W 5,5
|
||
|
SREvt1modifiers DC.W 0
|
||
|
SREvt2
|
||
|
SREvt2what DC.W mButUpEvt+evtMouseLocal+evtIsUnimportant
|
||
|
SREvt2message DC.L 0
|
||
|
SREvt2when DC.L 0
|
||
|
SREvt2where DC.W 5,5
|
||
|
SREvt2modifiers DC.W $80
|
||
|
SREvt3
|
||
|
SREvt3what DC.W mButDwnEvt+evtMouseEither+evtIsImportant
|
||
|
SREvt3message DC.L 0
|
||
|
SREvt3when DC.L 0
|
||
|
SRParam1LocStart
|
||
|
SREvt3where DC.W 0,0
|
||
|
SRParam1LocEnd
|
||
|
SREvt3modifiers DC.W 0
|
||
|
SREvt4
|
||
|
SREvt4what DC.W mButUpEvt+evtMouseEither+evtIsUnimportant
|
||
|
SREvt4message DC.L 0
|
||
|
SREvt4when DC.L 0
|
||
|
SRParam2LocStart
|
||
|
SREvt4where DC.W 0,0
|
||
|
SRParam2LocEnd
|
||
|
SREvt4modifiers DC.W $80
|
||
|
SREvtListBottom
|
||
|
|
||
|
OREvtList
|
||
|
OREvtListOffset DC.L 6
|
||
|
OREvtListCount DC.W (OREvtListBottom-OREvt11)/evtBlkSize
|
||
|
OREvt11
|
||
|
OREvt11what DC.W mButDwnEvt+evtMouseLocal+evtIsImportant
|
||
|
OREvt11message DC.L 0
|
||
|
OREvt11when DC.L 0
|
||
|
OREvt11where DC.W 42,10
|
||
|
OREvt11modifiers DC.W 0
|
||
|
OREvt12
|
||
|
OREvt12what DC.W mButUpEvt+evtMouseLocal+evtIsUnimportant
|
||
|
OREvt12message DC.L 0
|
||
|
OREvt12when DC.L 0
|
||
|
OREvt12where DC.W 42,10
|
||
|
OREvt12modifiers DC.W $80
|
||
|
OREvt13
|
||
|
OREvt13what DC.W mButDwnEvt+evtMouseEither+evtIsImportant
|
||
|
OREvt13message DC.L 0
|
||
|
OREvt13when DC.L 0
|
||
|
ORParam11LocStart
|
||
|
OREvt13where DC.W 0,0
|
||
|
ORParam11LocEnd
|
||
|
OREvt13modifiers DC.W 0
|
||
|
OREvt14
|
||
|
OREvt14what DC.W mButUpEvt+evtMouseEither+evtIsUnimportant
|
||
|
OREvt14message DC.L 0
|
||
|
OREvt14when DC.L 0
|
||
|
ORParam12LocStart
|
||
|
OREvt14where DC.W 0,0
|
||
|
ORParam12LocEnd
|
||
|
OREvt14modifiers DC.W $80
|
||
|
OREvt21
|
||
|
OREvt21what DC.W mButDwnEvt+evtMouseLocal+evtIsImportant
|
||
|
OREvt21message DC.L 0
|
||
|
OREvt21when DC.L 0
|
||
|
OREvt21where DC.W 42,10
|
||
|
OREvt21modifiers DC.W 0
|
||
|
OREvt22
|
||
|
OREvt22what DC.W mButUpEvt+evtMouseLocal+evtIsUnimportant
|
||
|
OREvt22message DC.L 0
|
||
|
OREvt22when DC.L 0
|
||
|
OREvt22where DC.W 42,10
|
||
|
OREvt22modifiers DC.W $80
|
||
|
OREvt23
|
||
|
OREvt23what DC.W mButDwnEvt+evtMouseEither+evtIsImportant
|
||
|
OREvt23message DC.L 0
|
||
|
OREvt23when DC.L 0
|
||
|
ORParam21LocStart
|
||
|
OREvt23where DC.W 0,0
|
||
|
ORParam21LocEnd
|
||
|
OREvt23modifiers DC.W 0
|
||
|
OREvt24
|
||
|
OREvt24what DC.W mButUpEvt+evtMouseEither+evtIsUnimportant
|
||
|
OREvt24message DC.L 0
|
||
|
OREvt24when DC.L 0
|
||
|
ORParam22LocStart
|
||
|
OREvt24where DC.W 0,0
|
||
|
ORParam22LocEnd
|
||
|
OREvt24modifiers DC.W $80
|
||
|
OREvt31
|
||
|
OREvt31what DC.W mButDwnEvt+evtMouseLocal+evtIsImportant
|
||
|
OREvt31message DC.L 0
|
||
|
OREvt31when DC.L 0
|
||
|
OREvt31where DC.W 42,10
|
||
|
OREvt31modifiers DC.W 0
|
||
|
OREvt32
|
||
|
OREvt32what DC.W mButUpEvt+evtMouseLocal+evtIsUnimportant
|
||
|
OREvt32message DC.L 0
|
||
|
OREvt32when DC.L 0
|
||
|
OREvt32where DC.W 42,10
|
||
|
OREvt32modifiers DC.W $80
|
||
|
OREvt33
|
||
|
OREvt33what DC.W mButDwnEvt+evtMouseEither+evtIsImportant
|
||
|
OREvt33message DC.L 0
|
||
|
OREvt33when DC.L 0
|
||
|
ORParam31LocStart
|
||
|
OREvt33where DC.W 0,0
|
||
|
ORParam31LocEnd
|
||
|
OREvt33modifiers DC.W 0
|
||
|
OREvt34
|
||
|
OREvt34what DC.W mButUpEvt+evtMouseEither+evtIsUnimportant
|
||
|
OREvt34message DC.L 0
|
||
|
OREvt34when DC.L 0
|
||
|
ORParam32LocStart
|
||
|
OREvt34where DC.W 0,0
|
||
|
ORParam32LocEnd
|
||
|
OREvt34modifiers DC.W $80
|
||
|
OREvt41
|
||
|
OREvt41what DC.W mButDwnEvt+evtMouseLocal+evtIsImportant
|
||
|
OREvt41message DC.L 0
|
||
|
OREvt41when DC.L 0
|
||
|
OREvt41where DC.W 42,10
|
||
|
OREvt41modifiers DC.W 0
|
||
|
OREvt42
|
||
|
OREvt42what DC.W mButUpEvt+evtMouseLocal+evtIsUnimportant
|
||
|
OREvt42message DC.L 0
|
||
|
OREvt42when DC.L 0
|
||
|
OREvt42where DC.W 42,10
|
||
|
OREvt42modifiers DC.W $80
|
||
|
OREvt43
|
||
|
OREvt43what DC.W mButDwnEvt+evtMouseEither+evtIsImportant
|
||
|
OREvt43message DC.L 0
|
||
|
OREvt43when DC.L 0
|
||
|
ORParam41LocStart
|
||
|
OREvt43where DC.W 0,0
|
||
|
ORParam41LocEnd
|
||
|
OREvt43modifiers DC.W 0
|
||
|
OREvt44
|
||
|
OREvt44what DC.W mButUpEvt+evtMouseEither+evtIsUnimportant
|
||
|
OREvt44message DC.L 0
|
||
|
OREvt44when DC.L 0
|
||
|
ORParam42LocStart
|
||
|
OREvt44where DC.W 0,0
|
||
|
ORParam42LocEnd
|
||
|
OREvt44modifiers DC.W $80
|
||
|
OREvtListBottom
|
||
|
|
||
|
OREvtCodeErr
|
||
|
CLR.L 8(SP) ;return 0
|
||
|
MOVE.L (SP)+,(SP) ;trash the param
|
||
|
RTS
|
||
|
OREvtCode
|
||
|
LEA OREvtList,A0 ;addr of list
|
||
|
MOVE.L #OREvtListBottom-OREvtList,D0 ;size of list
|
||
|
_PtrToHand ;get copy
|
||
|
BNE.S OREvtCodeErr ;if error, branch
|
||
|
MOVE.L (SP)+,D0 ;get ret addr
|
||
|
MOVE.L (SP)+,A1 ;get evt record
|
||
|
MOVE.L A0,(SP) ;handle is retrun value
|
||
|
MOVE.L D0,-(SP) ;put back ret addr
|
||
|
|
||
|
; Here comes a whole lotta parameter stuffing... It may look stupid to AND
|
||
|
; the message field with a constant, rather than the lomem LO3BYTES, and it is.
|
||
|
; The reason is that the pstEventList puppet event message field is defined to
|
||
|
; hold a pointer in the low three bytes. Ergo, this is not a stripaddress
|
||
|
; operation, it is a field extraction operation.
|
||
|
MOVE.L (A0),A0 ;hdl->ptr of evt list
|
||
|
MOVE.L evtMessage(A1),D0 ;get pointer to param block
|
||
|
ANDI.L #$0FFFFFF,D0 ;mask it to size
|
||
|
MOVEA.L D0,A1 ;stick it in address reg
|
||
|
|
||
|
; Do param subst for ulh of rect
|
||
|
MOVE.W (A1),ORParam11LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1),ORParam12LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1),ORParam21LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1)+,ORParam42LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1),ORParam11LocStart-OREvtList+2(A0)
|
||
|
MOVE.W (A1),ORParam32LocStart-OREvtList+2(A0)
|
||
|
MOVE.W (A1),ORParam41LocStart-OREvtList+2(A0)
|
||
|
MOVE.W (A1)+,ORParam42LocStart-OREvtList+2(A0)
|
||
|
|
||
|
; Do param subst for lrh of rect
|
||
|
MOVE.W (A1),ORParam22LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1),ORParam31LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1),ORParam32LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1)+,ORParam41LocStart-OREvtList(A0)
|
||
|
MOVE.W (A1),ORParam12LocStart-OREvtList+2(A0)
|
||
|
MOVE.W (A1),ORParam21LocStart-OREvtList+2(A0)
|
||
|
MOVE.W (A1),ORParam22LocStart-OREvtList+2(A0)
|
||
|
MOVE.W (A1),ORParam31LocStart-OREvtList+2(A0)
|
||
|
|
||
|
RTS
|
||
|
|
||
|
END
|
||
|
|