mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-04 01:29:22 +00:00
0ba83392d4
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
357 lines
11 KiB
Plaintext
357 lines
11 KiB
Plaintext
;
|
|
; File: CommResourceMgr.a
|
|
;
|
|
; Contains: Entry to the CommResourceManager
|
|
;
|
|
; Written by: Jerry Godes, and Byron Han
|
|
;
|
|
; Copyright: © 1988-1991, 1993 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <SM3> 9/28/93 PN Adding two new calls AddStdPort and RemoveStdPort to the
|
|
; CommResourceManager from DBLite gibbly.
|
|
; <2> 8/12/93 kc <mb>: I deleted all of the "TheFuture" conditionals in all of
|
|
; the CommToolbox files per Mike Bell's instructions. I also
|
|
; deleted the code that was compiled under the "CubeE"
|
|
; conditional.
|
|
; <10> 10/4/91 JSM Change PsychoticFarmerOrLater conditionals to TheFuture.
|
|
; <9> 10/2/91 DTY Conditionalise <6> through <8> so they donÕt get built for
|
|
; CubeE.
|
|
; <8> 7/9/91 BH added __CRMGetToolNamedResource
|
|
; <7> 7/3/91 BH added entry for CRMParseCAPSResource
|
|
; <6> 7/2/91 BH use routines prefixed with __ to avoid glue conflicts;
|
|
; discovered that CRMGetHeader never worked...
|
|
; <5> 7/10/90 dba add __ to distinguish routines from glue
|
|
; <4> 7/2/90 kaz Code shrinkage/cleanup. Changed BRA table to an offset table.
|
|
; Removed CRMDumpResChain.
|
|
; <3> 4/9/90 BBH use CRMFindCommunications that is in CommResourceMgr.c instead
|
|
; of _CRMFindCommunications in CommResourceMgrUtilities.a
|
|
; <2> 3/16/90 BBH made it compile
|
|
; <1> 3/14/90 BBH first checked in
|
|
;
|
|
; Pre-BBS Modification History
|
|
; 4/26/89 BBH Added CRMGetIndToolName and CRMIsDriverOpen routines
|
|
; 5/10/89 JNG New Glue/Entry
|
|
; 7/27/89 JNG Many routines now in assembler, they just grab parms off of a0
|
|
; 8/14/89 BBH Now get version of the CRM from constant in CRMIntf.a
|
|
;
|
|
; 1/25/90 BBH Renamed some routines to be underscore to prevent glue/code conflicts
|
|
;
|
|
|
|
INCLUDE 'Traps.a'
|
|
INCLUDE 'CommResources.a'
|
|
|
|
CRMEntry MAIN EXPORT
|
|
IMPORT __InitCRM, __CRMGetHeader, __CRMInstall, __CRMRemove, \
|
|
__CRMSearch, \
|
|
CRMGet10Resource, \
|
|
CRMGet10IndResource, \
|
|
CRMGet10NamedResource, \
|
|
__CRMReleaseResource, __CRMGetIndex, \
|
|
__CRMCreateCommunications, \
|
|
__CRMParseRefNum, \
|
|
__CRMLocalToRealID, __CRMRealToLocalID, \
|
|
__CRMIsDriverOpen, __CRMCheckTool, \
|
|
__CRMFindCommunications;
|
|
|
|
IMPORT __CRMOpenRFPerm, __CRMReserveRF, __CRMReleaseRF, __CRMGetRFCount, __CRMToolPreflight, \
|
|
__CRMToolPostflight, __CRMCountFiles, __CRMGetIndFile, \
|
|
__CRMGetIndToolName
|
|
|
|
IMPORT __CRMGetToolResource, __CRMReleaseToolResource
|
|
|
|
Import __CRMParseCAPSResource, __CRMGetToolNamedResource
|
|
|
|
IMPORT AddPort, RemovePort
|
|
|
|
BRA.S RealEntry
|
|
Version
|
|
DC.W curCRMversion ; version 2
|
|
RealEntry
|
|
MOVE.W (A0), D1 ; routine selector
|
|
ANDI.W #$FF, D1 ; bump the high byte
|
|
SUB.W #1, D1 ; make it 0 based
|
|
ADD.W D1, D1 ; 2 bytes per offset
|
|
LEA CRMStart, A1 ; point to offset table
|
|
ADD.W 0(A1,D1.W), A1 ; add the offset
|
|
JMP (A1) ; go there
|
|
|
|
CRMStart
|
|
DC.W @InitCRM - CRMStart ; 1
|
|
DC.W @CRMGetHeader - CRMStart ; 2
|
|
DC.W @CRMInstall - CRMStart ; 3
|
|
DC.W @CRMRemove - CRMStart ; 4
|
|
DC.W @CRMSearch - CRMStart ; 5
|
|
DC.W @CRMGetCRMVersion - CRMStart ; 6
|
|
DC.W @CRMGetResource - CRMStart ; 7
|
|
DC.W @CRMGet1Resource - CRMStart ; 8
|
|
DC.W @CRMGetIndResource - CRMStart ; 9
|
|
DC.W @CRMGet1IndResource - CRMStart ; A
|
|
DC.W @CRMGetNamedResource - CRMStart ; B
|
|
DC.W @CRMGet1NamedResource - CRMStart ; C
|
|
DC.W @CRMReleaseResource - CRMStart ; D
|
|
DC.W @CRMGetIndex - CRMStart ; E
|
|
DC.W @CRMLocalToRealID - CRMStart ; F
|
|
DC.W @CRMRealToLocalID - CRMStart ; 10
|
|
DC.W __CRMGetIndToolName - CRMStart ; 11
|
|
|
|
; private routines
|
|
DC.W __CRMOpenRFPerm - CRMStart ; 12
|
|
DC.W __CRMReserveRF - CRMStart ; 13
|
|
DC.W __CRMReleaseRF - CRMStart ; 14
|
|
DC.W __CRMGetRFCount - CRMStart ; 15
|
|
DC.W @none - CRMStart ; 16
|
|
DC.W @none - CRMStart ; 17
|
|
DC.W @none - CRMStart ; 18
|
|
DC.W @CRMCreateCommunications - CRMStart ; 19
|
|
DC.W @CRMFindCommunications - CRMStart ; 1A -- published for 1.0.1
|
|
DC.W __CRMCountFiles - CRMStart ; 1B
|
|
DC.W __CRMGetIndFile - CRMStart ; 1C
|
|
DC.W @CRMParseRefNum - CRMStart ; 1D
|
|
; end privates
|
|
|
|
; Was Debugging routine
|
|
DC.W @none - CRMStart ; 1E
|
|
|
|
DC.W __CRMToolPreflight - CRMStart ; 1F
|
|
DC.W __CRMToolPostflight - CRMStart ; 20
|
|
DC.W @CRMIsDriverOpen - CRMStart ; 21
|
|
DC.W @CRMCheckTool - CRMStart ; 22
|
|
|
|
; new for 1.0.1
|
|
DC.W @CRMGetToolResource - CRMStart ; 23
|
|
DC.W @CRMReleaseToolResource - CRMStart ; 24
|
|
|
|
DC.W @CRMParseCAPSResource - CRMStart ; 25
|
|
DC.W @CRMGetToolNamedResource - CRMStart ; 26
|
|
DC.W @CRMAddStdPort - CRMStart ; 27
|
|
DC.W @CRMRemoveStdPort - CRMStart ; 28
|
|
|
|
@None
|
|
RTS
|
|
|
|
@InitCRM ; 0x01
|
|
CLR.W -(SP) ; make space for return value
|
|
JSR __InitCRM
|
|
MOVE.W (SP)+, D0 ; get return value
|
|
RTS
|
|
|
|
@CRMGetHeader ; 0x02
|
|
CLR.L -(SP) ; make space for return value
|
|
JSR __CRMGetHeader
|
|
MOVE.L (SP)+, D0 ; get return value
|
|
RTS
|
|
|
|
@CRMInstall ; 0x03
|
|
MOVE.L 2(A0), -(SP) ; crmReqPtr
|
|
JSR __CRMInstall
|
|
RTS
|
|
|
|
@CRMRemove ; 0x04
|
|
CLR.W -(SP) ; make space for return value
|
|
MOVE.L 2(A0), -(SP) ; crmReqPtr
|
|
JSR __CRMRemove
|
|
MOVE.W (SP)+, D0 ; get return value
|
|
RTS
|
|
|
|
@CRMSearch ; 0x05
|
|
CLR.L -(SP) ; make space for return value
|
|
MOVE.L 2(A0), -(SP) ; crmReqPtr
|
|
JSR __CRMSearch
|
|
MOVE.L (SP)+, D0 ; get return value
|
|
RTS
|
|
|
|
@CRMGetCRMVersion ; 0x06
|
|
LEA Version, A0 ; get version
|
|
MOVE.W (A0), D0 ; return
|
|
RTS ; and return
|
|
|
|
|
|
;-------------------------------------------------------
|
|
;Resource Getting Analogues
|
|
;
|
|
;We share glue setup with 0 depth and 1 depth res calls
|
|
;-------------------------------------------------------
|
|
|
|
@CRMGetResource ; 0x07
|
|
MOVEQ #0, D0 ; 0 means not 1 deep
|
|
BRA.S @DoGetOne ; downto shared glue
|
|
|
|
@CRMGet1Resource ; 0x08
|
|
MOVEQ #1, D0 ; 1 means 1 deep
|
|
; falls thru to shared glue
|
|
@DoGetOne
|
|
CLR.L -(SP) ; return value
|
|
MOVE.L 4(A0), -(SP) ; theType
|
|
MOVE.W 2(A0), -(SP) ; theID
|
|
MOVE.W D0, -(SP) ; res search depth
|
|
JSR CRMGet10Resource
|
|
MOVE.L (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
|
|
@CRMGetIndResource ; 0x09
|
|
MOVEQ #0, D0 ; 0 means not 1 deep
|
|
BRA.S @DoGetIndex
|
|
|
|
@CRMGet1IndResource ; 0x0A
|
|
MOVEQ #1, D0 ; 1 means 1 deep
|
|
|
|
@DoGetIndex
|
|
CLR.L -(SP) ; return value
|
|
MOVE.L 4(A0), -(SP) ; theType
|
|
MOVE.W 2(A0), -(SP) ; theIndex
|
|
MOVE.W D0, -(SP) ; 0 means not 1 deep
|
|
JSR CRMGet10IndResource
|
|
MOVE.L (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
|
|
@CRMGetNamedResource ; 0x0B
|
|
MOVEQ #0, D0 ; 0 means not 1 deep
|
|
BRA.S @DoGetNamed
|
|
|
|
@CRMGet1NamedResource ; 0x0C
|
|
MOVEQ #1, D0 ; 1 means 1 deep
|
|
|
|
@DoGetNamed
|
|
CLR.L -(SP) ; return value
|
|
MOVE.L 6(A0), -(SP) ; theType
|
|
MOVE.L 2(A0), -(SP) ; name
|
|
MOVE.W D0, -(SP) ; 0 means not 1 deep
|
|
JSR CRMGet10NamedResource
|
|
MOVE.L (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
;----------------------------------------------------------
|
|
|
|
|
|
|
|
@CRMReleaseResource ; 0x0D
|
|
MOVE.L 2(A0), -(SP) ; resource handle
|
|
JSR __CRMReleaseResource
|
|
RTS
|
|
|
|
@CRMGetIndex ; 0x0E
|
|
CLR.L -(SP) ; return value
|
|
MOVE.L 2(A0), -(SP) ; resource handle
|
|
JSR __CRMGetIndex
|
|
MOVE.L (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
@CRMCreateCommunications ; 0x16
|
|
CLR.W -(SP) ; return value
|
|
MOVE.L 6(A0), -(SP) ; vRefNum (ptr to)
|
|
MOVE.L 2(A0), -(SP) ; dirID (ptr to)
|
|
JSR __CRMCreateCommunications
|
|
MOVE.W (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
@CRMFindCommunications ; 0x17
|
|
CLR.W -(SP) ; return value
|
|
MOVE.L 6(A0), -(SP) ; vRefNum (ptr to)
|
|
MOVE.L 2(A0), -(SP) ; dirID (ptr to)
|
|
JSR __CRMFindCommunications
|
|
MOVE.W (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
@CRMCheckTool ; 0x22
|
|
CLR.B -(SP) ; return value
|
|
MOVE.L 12(A0), -(SP) ; fName
|
|
MOVE.L 8(A0), -(SP) ; fType
|
|
MOVE.W 6(A0), -(SP) ; vRefNum
|
|
MOVE.L 2(A0), -(SP) ; dirID
|
|
JSR __CRMCheckTool
|
|
MOVE.B (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
@CRMParseRefNum ; 0x1A
|
|
CLR.W -(SP) ; return value
|
|
MOVE.W 10(A0), -(SP) ; refNum
|
|
MOVE.L 6(A0), -(SP) ; fName
|
|
MOVE.L 2(A0), -(SP) ; vRefNum (ptr to)
|
|
JSR __CRMParseRefNum
|
|
MOVE.W (SP)+,D0 ; get return value
|
|
RTS
|
|
|
|
@CRMLocalToRealID ; 0x1B
|
|
CLR.W -(SP) ; make room
|
|
MOVE.L 10(A0), -(SP) ; resType
|
|
MOVE.W 8(A0), -(SP) ; toolID
|
|
MOVE.L 4(A0), -(SP) ; theKind
|
|
MOVE.W 2(A0), -(SP) ; localID
|
|
JSR __CRMLocalToRealID
|
|
MOVE.W (SP)+, D0
|
|
RTS
|
|
|
|
@CRMRealToLocalID ; 0x1C
|
|
CLR.W -(SP) ; make room
|
|
MOVE.L 10(A0), -(SP) ; resType
|
|
MOVE.W 8(A0), -(SP) ; toolID
|
|
MOVE.L 4(A0), -(SP) ; theKind
|
|
MOVE.W 2(A0), -(SP) ; localID
|
|
JSR __CRMRealToLocalID
|
|
MOVE.W (SP)+, D0
|
|
RTS
|
|
|
|
@CRMIsDriverOpen ; 21
|
|
CLR.B -(SP) ; space for return value
|
|
MOVE.L 2(A0),-(SP) ; driver name
|
|
JSR __CRMIsDriverOpen ; call it
|
|
MOVE.B (SP)+,D0 ; get the return value
|
|
RTS
|
|
|
|
@CRMGetToolResource ; 23
|
|
CLR.L -(SP) ; space for return value
|
|
MOVE.W 8(A0), -(SP) ; procID
|
|
MOVE.L 4(A0), -(SP) ; theType
|
|
MOVE.W 2(A0), -(SP) ; theID
|
|
JSR __CRMGetToolResource ; call it
|
|
MOVE.L (SP)+,D0 ; get the return value
|
|
|
|
RTS
|
|
|
|
@CRMReleaseToolResource ; 24
|
|
MOVE.W 6(A0), -(SP) ; procID
|
|
MOVE.L 2(A0), -(SP) ; theHandle
|
|
JSR __CRMReleaseToolResource ; call it
|
|
RTS
|
|
|
|
@CRMParseCAPSResource ; 25
|
|
CLR.W -(SP) ; make space for return value
|
|
MOVE.L 10(A0),-(SP) ; value
|
|
MOVE.L 6(A0), -(SP) ; selector
|
|
MOVE.L 2(A0), -(SP) ; theHandle
|
|
JSR __CRMParseCAPSResource ; call it
|
|
MOVE.W (SP)+,D0 ; get the return value
|
|
RTS
|
|
|
|
@CRMGetToolNamedResource ; 26
|
|
CLR.L -(SP) ; make space for return value
|
|
MOVE.W 10(A0),-(SP) ; procID
|
|
MOVE.L 6(A0), -(SP) ; type
|
|
MOVE.L 2(A0), -(SP) ; name
|
|
JSR __CRMGetToolNamedResource ; call it
|
|
MOVE.L (SP)+,D0 ; get the return value
|
|
RTS
|
|
|
|
@CRMAddStdPort ; 27
|
|
CLR.L -(SP) ; make space for return value
|
|
MOVE.W 10(A0),-(SP) ; procID
|
|
MOVE.L 6(A0), -(SP) ; type
|
|
MOVE.L 2(A0), -(SP) ; name
|
|
JSR AddPort ; call it
|
|
MOVE.L (SP)+,D0 ; get the return value
|
|
RTS
|
|
|
|
@CRMRemoveStdPort ; 28
|
|
CLR.L -(SP) ; make space for return value
|
|
MOVE.W 10(A0),-(SP) ; procID
|
|
MOVE.L 6(A0), -(SP) ; type
|
|
MOVE.L 2(A0), -(SP) ; name
|
|
JSR RemovePort ; call it
|
|
MOVE.L (SP)+,D0 ; get the return value
|
|
RTS
|
|
END
|