mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-26 01:49:19 +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
|
|
|