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
|