mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-29 07:29:15 +00:00
502 lines
12 KiB
Plaintext
502 lines
12 KiB
Plaintext
|
;
|
|||
|
; File: Editions.a
|
|||
|
;
|
|||
|
; Contains: Assembly Interface for Edition Manager
|
|||
|
;
|
|||
|
; Written by: Nick Kledzik
|
|||
|
;
|
|||
|
; Copyright: <09> 1990 by Apple Computer, Inc., all rights reserved.
|
|||
|
;
|
|||
|
; This file is used in these builds: BigBang
|
|||
|
;
|
|||
|
; Change History (most recent first):
|
|||
|
;
|
|||
|
; <5> 8/15/91 MH adjusted formatting of comments to allow a space after "DS
|
|||
|
; EditionContainerSpec"
|
|||
|
; <4> 8/15/91 MH moved conditional include of FSEqu.a inside the conditional
|
|||
|
; assembly directive for Editions.a itself
|
|||
|
; <3> 1/30/91 gbm sab, #38: Change the <20>already including this file<6C> variable to
|
|||
|
; all uppercase (for security reasons)
|
|||
|
; <2> 10/3/90 ngk Change file types for edition files. edtP -> edtp, edtT -> edtt
|
|||
|
; <1> 8/26/90 ngk first checked in
|
|||
|
; <0> 8/26/90 ngk Created
|
|||
|
;
|
|||
|
; To Do:
|
|||
|
;
|
|||
|
;--------------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
IF &TYPE('__INCLUDINGEDITIONS__') = 'UNDEFINED' THEN
|
|||
|
__INCLUDINGEDITIONS__ SET 1
|
|||
|
|
|||
|
IF &TYPE('__INCLUDINGFSEQU__') = 'UNDEFINED' THEN ; get definition of FSSpec
|
|||
|
INCLUDE 'FSEqu.a'
|
|||
|
ENDIF
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; resource types
|
|||
|
rSectionType EQU 'sect'
|
|||
|
|
|||
|
; section types
|
|||
|
stSubscriber EQU $01
|
|||
|
stPublisher EQU $0A
|
|||
|
|
|||
|
; Update Modes
|
|||
|
sumAutomatic EQU 0 ; subscriber update mode - Automatically
|
|||
|
sumManual EQU 1 ; subscriber update mode - Manually
|
|||
|
pumOnSave EQU 0 ; publisher update mode - On Save
|
|||
|
pumManual EQU 1 ; publisher update mode - Manually
|
|||
|
|
|||
|
; EditionContainer subpart usage
|
|||
|
kPartsNotUsed EQU 0
|
|||
|
kPartNumberUnknown EQU -1
|
|||
|
|
|||
|
; preview size
|
|||
|
kPreviewWidth EQU 120
|
|||
|
kPreviewHeight EQU 120
|
|||
|
|
|||
|
; special formats
|
|||
|
kPublisherDocAliasFormat EQU 'alis' ; same as rAliasType
|
|||
|
kPreviewFormat EQU 'prvw'
|
|||
|
kFormatListFormat EQU 'fmts'
|
|||
|
|
|||
|
; bits for formatsMask
|
|||
|
kPICTformatMask EQU 1
|
|||
|
kTEXTformatMask EQU 2
|
|||
|
ksndFormatMask EQU 4
|
|||
|
|
|||
|
; Finder types for edition files
|
|||
|
kPICTEditionFileType EQU 'edtp'
|
|||
|
kTEXTEditionFileType EQU 'edtt'
|
|||
|
ksndEditionFileType EQU 'edts'
|
|||
|
kUnknownEditionFileType EQU 'edtu'
|
|||
|
|
|||
|
; pseudo-item hits for dialogHooks
|
|||
|
; the first is for NewPublisher or NewSubscriber Dialogs
|
|||
|
emHookRedrawPreview EQU 150
|
|||
|
; the following are for SectionOptions Dialog
|
|||
|
emHookCancelSection EQU 160
|
|||
|
emHookGoToPublisher EQU 161
|
|||
|
emHookGetEditionNow EQU 162
|
|||
|
emHookSendEditionNow EQU 162
|
|||
|
emHookManualUpdateMode EQU 163
|
|||
|
emHookAutoUpdateMode EQU 164
|
|||
|
|
|||
|
|
|||
|
; the refcon field of the dialog record in a modalfilter or
|
|||
|
; dialoghook during SectionOptionsDialog contains one the following
|
|||
|
emOptionsDialogRefCon EQU 'optn'
|
|||
|
emCancelSectionDialogRefCon EQU 'cncl'
|
|||
|
emGoToPubErrDialogRefCon EQU 'gerr'
|
|||
|
|
|||
|
|
|||
|
; misc
|
|||
|
kFormatLengthUnknown EQU -1
|
|||
|
|
|||
|
|
|||
|
; record definitions
|
|||
|
;
|
|||
|
SectionRecord RECORD 0
|
|||
|
version DS.B 1 ; SignedByte { always 1 in 7.0 release }
|
|||
|
kind DS.B 1 ; SectionType { publisher or subscriber }
|
|||
|
mode DS.W 1 ; UpdateMode { auto or manual }
|
|||
|
mdDate DS.L 1 ; TimeStamp { version of data in section }
|
|||
|
sectionID DS.L 1 ; LONGINT { application specific, unique per document }
|
|||
|
refCon DS.L 1 ; LONGINT { application specific }
|
|||
|
alias DS.L 1 ; AliasHandle { handle to Alias Record }
|
|||
|
; the following fields are private and set up by RegisterSection
|
|||
|
subPart DS.L 1 ; LONGINT { which part of container, always kPartsNotUsed in 7.0 }
|
|||
|
nextSection DS.L 1 ; SectionHandle { for linked list of app's Sections }
|
|||
|
controlBlock DS.L 1 ; Handle { shared controlblock for this section. }
|
|||
|
refNum DS.L 1 ; EditionRefNum { NIL outside of Open/CloseEdition }
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
EditionContainerSpec RECORD 0
|
|||
|
theFile DS FSSpec ;
|
|||
|
theFileScript DS.W 1 ; ScriptCode
|
|||
|
thePart DS.L 1 ; LONGINT
|
|||
|
thePartName DS.B 32 ; Str31
|
|||
|
thePartScript DS.W 1 ; ScriptCode
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
EditionInfoRecord RECORD 0
|
|||
|
crDate DS.L 1 ; Timestamp { date EditionContainer was created }
|
|||
|
mdDate DS.L 1 ; Timestamp { date of last change }
|
|||
|
fdCreator DS.B 4 ; OSType { file creator }
|
|||
|
fdType DS.B 4 ; OSType { file type, 'edtT', etc }
|
|||
|
container DS EditionContainerSpec ; { the Edition }
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
NewPublisherReply RECORD 0
|
|||
|
canceled DS.B 1 ; BOOLEAN { O }
|
|||
|
replacing DS.B 1 ; BOOLEAN { O }
|
|||
|
usePart DS.B 1 ; BOOLEAN { I }
|
|||
|
pad1 DS.B 1 ;
|
|||
|
preview DS.L 1 ; Handle { I }
|
|||
|
previewFormat DS.B 4 ; FormatType { I }
|
|||
|
container DS EditionContainerSpec ; { I/O }
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
NewSubscriberReply RECORD 0
|
|||
|
canceled DS.B 1 ; BOOLEAN { O }
|
|||
|
formatsMask DS.B 1 ; SignedByte { I }
|
|||
|
container DS EditionContainerSpec ; { I/O }
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
SectionOptionsReply RECORD 0
|
|||
|
canceled DS.B 1 ; BOOLEAN { O }
|
|||
|
changed DS.B 1 ; BOOLEAN { O }
|
|||
|
sectionH DS.L 1 ; SectionHandle { I }
|
|||
|
action DS.B 4 ; ResType { 0 }
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
; FormatIOVerb's
|
|||
|
ioHasFormat EQU 0
|
|||
|
ioReadFormat EQU 1
|
|||
|
ioNewFormat EQU 2
|
|||
|
ioWriteFormat EQU 3
|
|||
|
|
|||
|
FormatIOParamBlock RECORD 0
|
|||
|
ioRefNum DS.L 1 ; LONGINT
|
|||
|
format DS.B 4 ; FormatType
|
|||
|
formatIndex DS.L 1 ; LONGINT
|
|||
|
offset DS.L 1 ; LONGINT
|
|||
|
buffPtr DS.L 1 ; Ptr
|
|||
|
buffLen DS.L 1 ; LONGINT
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
; EditionOpenerVerb's
|
|||
|
eoOpen EQU 0
|
|||
|
eoClose EQU 1
|
|||
|
eoOpenNew EQU 2
|
|||
|
eoCloseNew EQU 3
|
|||
|
eoCanSubscribe EQU 4
|
|||
|
|
|||
|
EditionOpenerParamBlock RECORD 0
|
|||
|
info DS EditionInfoRecord ;
|
|||
|
sectionH DS.L 1 ; SectionHandle
|
|||
|
document DS.L 1 ; FSSpecPtr
|
|||
|
fdCreator DS.B 4 ; OSType
|
|||
|
ioRefNum DS.L 1 ; LONGINT
|
|||
|
ioProc DS.L 1 ; FormatIOProcPtr
|
|||
|
success DS.B 1 ; BOOLEAN
|
|||
|
formatsMask DS.B 1 ; SignedByte
|
|||
|
size EQU *
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
; Section Events
|
|||
|
sectionEventMsgClass EQU 'sect'
|
|||
|
sectionReadMsgID EQU 'read'
|
|||
|
sectionWriteMsgID EQU 'writ'
|
|||
|
sectionScrollMsgID EQU 'scrl'
|
|||
|
sectionCancelMsgID EQU 'cncl'
|
|||
|
|
|||
|
;
|
|||
|
; Section events now arrive in the message buffer using the AppleEvent format.
|
|||
|
; The direct object parameter is an aeTemporaryIDParamType ('tid '). The temporary
|
|||
|
; ID's type is rSectionType ('sect') and the 32-bit value is a SectionHandle.
|
|||
|
; The following is a sample buffer
|
|||
|
;
|
|||
|
; name offset contents
|
|||
|
; ---- ------ --------
|
|||
|
;
|
|||
|
; header 0 'aevt'
|
|||
|
; majorVersion 4 $01
|
|||
|
; minorVersion 6 $01
|
|||
|
; endOfMetaData 8 ';;;;'
|
|||
|
; directObjKey 12 '----'
|
|||
|
; paramType 16 'tid '
|
|||
|
; paramLength 20 $0008
|
|||
|
; tempIDType 24 'sect'
|
|||
|
; tempID 28 the SectionHandle <-- this is want you want
|
|||
|
;
|
|||
|
|
|||
|
|
|||
|
; FUNCTION InitEditionPack: OSErr;
|
|||
|
MACRO
|
|||
|
_InitEditionPack
|
|||
|
MOVE.W #$0011,-(SP)
|
|||
|
MOVE.W #$0100,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION NewSection(container: EditionContainerSpec;
|
|||
|
; sectionDocument: FSSpecPtr;
|
|||
|
; kind: SectionType;
|
|||
|
; sectionID: LONGINT;
|
|||
|
; initalMode: UpdateMode;
|
|||
|
; VAR sectionH: SectionHandle): OSErr;
|
|||
|
MACRO
|
|||
|
_NewSection
|
|||
|
MOVE.W #$0A02,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION RegisterSection(sectionDocument: FSSpec; sectionH: SectionHandle;
|
|||
|
; VAR aliasWasUpdated: BOOLEAN): OSErr;
|
|||
|
MACRO
|
|||
|
_RegisterSection
|
|||
|
MOVE.W #$0604,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; FUNCTION UnRegisterSection(sectionH: SectionHandle): OSErr;
|
|||
|
MACRO
|
|||
|
_UnRegisterSection
|
|||
|
MOVE.W #$0206,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; FUNCTION IsRegisteredSection(sectionH: SectionHandle): OSErr;
|
|||
|
MACRO
|
|||
|
_IsRegisteredSection
|
|||
|
MOVE.W #$0208,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; FUNCTION AssociateSection(sectionH: SectionHandle; newSectionDocument: FSSpecPtr): OSErr;
|
|||
|
MACRO
|
|||
|
_AssociateSection
|
|||
|
MOVE.W #$040C,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION CreateEditionContainerFile(editionFile: FSSpec; fdCreator: OSType;
|
|||
|
; editionFileNameScript: ScriptCode): OSErr;
|
|||
|
MACRO
|
|||
|
_CreateEditionContainerFile
|
|||
|
MOVE.W #$050E,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION DeleteEditionContainerFile(editionFile: FSSpec): OSErr;
|
|||
|
MACRO
|
|||
|
_DeleteEditionContainerFile
|
|||
|
MOVE.W #$0210,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; FUNCTION OpenEdition(subscriberSectionH: SectionHandle;
|
|||
|
; VAR refNum: EditionRefNum): OSErr;
|
|||
|
MACRO
|
|||
|
_OpenEdition
|
|||
|
MOVE.W #$0412,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION OpenNewEdition(publisherSectionH: SectionHandle; fdCreator: OSType;
|
|||
|
; publisherSectionDocument: FSSpecPtr;
|
|||
|
; VAR refNum: EditionRefNum): OSErr;
|
|||
|
MACRO
|
|||
|
_OpenNewEdition
|
|||
|
MOVE.W #$0814,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION CloseEdition(whichEdition: EditionRefNum; successful: BOOLEAN): OSErr;
|
|||
|
MACRO
|
|||
|
_CloseEdition
|
|||
|
MOVE.W #$0316,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION EditionHasFormat(whichEdition: EditionRefNum; whichFormat: FormatType;
|
|||
|
; VAR formatSize: Size): OSErr;
|
|||
|
MACRO
|
|||
|
_EditionHasFormat
|
|||
|
MOVE.W #$0618,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION ReadEdition(whichEdition: EditionRefNum; whichFormat: FormatType;
|
|||
|
; buffPtr: Ptr; VAR buffLen: Size): OSErr;
|
|||
|
MACRO
|
|||
|
_ReadEdition
|
|||
|
MOVE.W #$081A,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION WriteEdition(whichEdition: EditionRefNum; whichFormat: FormatType;
|
|||
|
; buffPtr: Ptr; buffLen: Size): OSErr;
|
|||
|
MACRO
|
|||
|
_WriteEdition
|
|||
|
MOVE.W #$081C,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION GetEditionFormatMark(whichEdition: EditionRefNum; whichFormat: FormatType;
|
|||
|
; VAR currentMark: LONGINT): OSErr;
|
|||
|
MACRO
|
|||
|
_GetEditionFormatMark
|
|||
|
MOVE.W #$061E,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION SetEditionFormatMark(whichEdition: EditionRefNum; whichFormat: FormatType;
|
|||
|
; setMarkTo: LONGINT): OSErr;
|
|||
|
MACRO
|
|||
|
_SetEditionFormatMark
|
|||
|
MOVE.W #$0620,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; FUNCTION GetEditionInfo(sectionH: SectionHandle; VAR editionInfo: EditionInfoRecord): OSErr;
|
|||
|
MACRO
|
|||
|
_GetEditionInfo
|
|||
|
MOVE.W #$0422,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION GoToPublisherSection(container: EditionContainerSpec): OSErr;
|
|||
|
MACRO
|
|||
|
_GoToPublisherSection
|
|||
|
MOVE.W #$0224,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION GetLastEditionContainerUsed(VAR container: EditionContainerSpec): OSErr;
|
|||
|
MACRO
|
|||
|
_GetLastEditionContainerUsed
|
|||
|
MOVE.W #$0226,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION GetStandardFormats(container: EditionContainerSpec; VAR previewFormat: FormatType;
|
|||
|
; preview, publisherAlias, formats: Handle): OSErr;
|
|||
|
MACRO
|
|||
|
_GetStandardFormats
|
|||
|
MOVE.W #$0A28,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION GetEditionOpenerProc(VAR opener: EditionOpenerProcPtr): OSErr;
|
|||
|
MACRO
|
|||
|
_GetEditionOpenerProc
|
|||
|
MOVE.W #$022A,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION SetEditionOpenerProc(opener: EditionOpenerProcPtr): OSErr;
|
|||
|
MACRO
|
|||
|
_SetEditionOpenerProc
|
|||
|
MOVE.W #$022C,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION CallEditionOpenerProc(selector: EditionOpenerVerb; VAR PB: EditionOpenerParamBlock;
|
|||
|
; routine: EditionOpenerProcPtr): OSErr;
|
|||
|
MACRO
|
|||
|
_CallEditionOpenerProc
|
|||
|
MOVE.W #$052E,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION CallFormatIOProc(selector: FormatIOVerb; VAR PB: FormatIOParamBlock;
|
|||
|
; routine: FormatIOProcPtr): OSErr;
|
|||
|
MACRO
|
|||
|
_CallFormatIOProc
|
|||
|
MOVE.W #$0530,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
; FUNCTION NewSubscriberDialog(VAR reply: NewSubscriberReply): OSErr;
|
|||
|
MACRO
|
|||
|
_NewSubscriberDialog
|
|||
|
MOVE.W #$0232,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION NewSubscriberExpDialog(VAR reply: NewSubscriberReply; where: Point;
|
|||
|
; expansionDITLresID: INTEGER; dlgHook: ExpDlgHookProcPtr;
|
|||
|
; filterProc: ExpModalFilterProcPtr; yourDataPtr: UNIV Ptr): OSErr;
|
|||
|
MACRO
|
|||
|
_NewSubscriberExpDialog
|
|||
|
MOVE.W #$0B34,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION NewPublisherDialog(VAR reply: NewPublisherReply): OSErr;
|
|||
|
MACRO
|
|||
|
_NewPublisherDialog
|
|||
|
MOVE.W #$0236,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION NewPublisherExpDialog(VAR reply: NewPublisherReply; where: Point;
|
|||
|
; expansionDITLresID: INTEGER; dlgHook: ExpDlgHookProcPtr;
|
|||
|
; filterProc: ExpModalFilterProcPtr; yourDataPtr: UNIV Ptr): OSErr;
|
|||
|
MACRO
|
|||
|
_NewPublisherExpDialog
|
|||
|
MOVE.W #$0B38,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION SectionOptionsDialog(VAR reply: SectionOptionsReply): OSErr;
|
|||
|
MACRO
|
|||
|
_SectionOptionsDialog
|
|||
|
MOVE.W #$023A,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
; FUNCTION SectionOptionsExpDialog(VAR reply: SectionOptionsReply; where: Point;
|
|||
|
; expansionDITLresID: INTEGER; dlgHook: ExpDlgHookProcPtr;
|
|||
|
; filterProc: ExpModalFilterProcPtr; yourDataPtr: UNIV Ptr): OSErr;
|
|||
|
MACRO
|
|||
|
_SectionOptionsExpDialog
|
|||
|
MOVE.W #$0B3C,D0
|
|||
|
_Pack11
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
ENDIF ; ...already included
|