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