boot3/Toolbox/CommToolbox/ConnectionMgr/ConnectionMgr.a
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
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.
2017-12-26 10:02:57 +08:00

426 lines
12 KiB
Plaintext

;
; File: ConnectionMgr.a
;
; Contains: Entry to the Connection Manager
;
; Written by: Dean Wong, Byron Han, and Jerry Godes
;
; Copyright: © 1988-1991, 1993 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <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 had
; to delete some old code that was compiled under the "CubeE"
; conditional.
; <11> 11/5/91 DTY Add __ to the front of the routines brought back for CubeE to
; keep the build warningless.
; <10> 10/2/91 DTY Conditionalise <7> out of CubeE.
; <9> 6/26/91 BH forgot to change import declarations of extension routines to
; include __Õs
; <8> 6/26/91 BH change extensions to use __ to distinguish from glue
; <7> 6/18/91 BH remove new calls for open/close
; <6> 1/14/91 CP ;Removed CMConnectPrep and added CMListenPrep and CMOpenPrep.
; ;Removed param block from CMPBAccept, CMPBListen, CMPBClose,
; CMPBOpen, and CMConnectCleanup.
; ;Renamed CMFreeIORec to CMDisposeIOPB.
; ;Renamed CMAllocateIORec to CMNewIOPB.
; ;Added async, completor, and timeout parameters to CMListenPrep
; and CMOpenPrep.
; ;Renamed CMIORec to CMIOPB <BBH>
; <5> 11/27/90 kaz Renaming CMHCalls to CMPBCalls; Added CMPBOpen, etc <jng>
; <4> 8/27/90 kaz Use an offset table instead of a BRA table.
; <3> 7/10/90 dba add __ to distinguish glue from actual routines
; <2> 3/15/90 BBH fix names of included files
; <1> 2/22/90 BBH first checked in to BBS
;
; To Do:
;
; Pre-BBS HISTORY :
; 2/15/90 BBH CMGetErrorString moved to core
; 1/26/90 BBH Added CMHRead/Write/IOKill
; 8/14/89 BBH Added curCMversion. Renamed CMStatus to _CMStatus
; 6/28/89 JNG Removed preflight/postflight from status.
; 6/26/89 BBH Added CMPChoose
; 6/2/89 JNG Finished Glue changes.
; 5/24/89 JNG Glue routines now don't change the order of the parameters.
; 4/29/89 JNG Converted CMStatus to assembler.
; 4/24/89 BBH Added CMGetConnEnvirons
; 4/24/89 JNG Removed CMResume CMMenu CMEvent CMActivate CMReset CMIdle
; CMAbort to CTBCore
; 4/18/89 JNG Removed CMGetProcID, CMSetupXXX to CTBCore
; 4/17/89 JNG Removed CMValidate, CMDefault to CTBCore
; 4/12/89 JNG Removed CMGetToolName to CTBCore
; 4/11/89 JNG Removed CMGetRefCon, CMSetRefCon, CMSetUserData, CMGetUserData,
; and CMGetVersion these are now in the CTBCore routines.
; 4/7/89 JNG Changed CMGetConnName to CMGetToolName
INCLUDE 'Traps.a'
INCLUDE 'Connections.a' ; need curCMversion here
INCLUDE 'CTBUtilities.a' ;
INCLUDE 'ConnectionTools.a' ; Status needs the messages defined here
INCLUDE 'CommToolboxPriv.a' ; for core routines
ENTRY _CMStatus
MACRO
_ExternalCore &selector
_RealExternalCore &selector,#CMSel
ENDM
;------------------------------------------------------------------------------------
;
; A0.L -> pointer to the routine selector record
;
; D0.L -> function result
;
CMEntry MAIN EXPORT
IMPORT __InitCM, __CMNew, __CMDispose, __CMOpen, __CMListen, __CMAccept,\
__CMClose, __CMRead, __CMWrite, __CMBreak, __CMGetConnEnvirons, \
__CMAddSearch, __CMRemoveSearch, __CMClearSearch, __CMIOKill, \
__CMNewIOPB, __CMDisposeIOPB, __CMPBRead, __CMPBWrite, \
__CMPBIOKill
BRA.S start
version DC.W curCMversion ; version
start 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 CMStart, A1 ; point to offset table
ADD.W 0(A1,D1.W), A1 ; add the offset
JMP (A1) ; go there
; ASL.W #2, D1 ; multiply by 4
;TABLE JMP TABLE(D1)
CMStart
DC.W @InitCM - CMStart; 1
DC.W @CMSetRefCon - CMStart; 2
DC.W @CMGetRefCon - CMStart; 3
DC.W @CMSetUserData - CMStart; 4
DC.W @CMGetUserData - CMStart; 5
DC.W @CMGetToolName - CMStart; 6
DC.W @CMGetProcID - CMStart; 7
DC.W @CMNew - CMStart; 8
DC.W @CMDispose - CMStart; 9
DC.W @CMIdle - CMStart; A
DC.W @CMOpen - CMStart; B
DC.W @CMListen - CMStart; C
DC.W @CMAccept - CMStart; D
DC.W @CMClose - CMStart; E
DC.W @CMAbort - CMStart; F
DC.W _CMStatus - CMStart; 10
DC.W @CMRead - CMStart; 11
DC.W @CMWrite - CMStart; 12
DC.W @CMActivate - CMStart; 13
DC.W @CMResume - CMStart; 14
DC.W @CMMenu - CMStart; 15
DC.W @CMReset - CMStart; 16
DC.W @CMValidate - CMStart; 17
DC.W @CMDefault - CMStart; 18
DC.W @CMSetupSetup - CMStart; 19
DC.W @CMSetupItem - CMStart; 1A
DC.W @CMSetupCleanup - CMStart; 1B
DC.W @CMGetConfig - CMStart; 1C
DC.W @CMSetConfig - CMStart; 1D
DC.W @CMIntlToEnglish - CMStart; 1E
DC.W @CMEnglishToIntl - CMStart; 1F
DC.W @CMGetVersion - CMStart; 20
DC.W @CMGetCMVersion - CMStart; 21
DC.W @CMSetupFilter - CMStart; 22
DC.W @CMSetupPreflight - CMStart; 23
DC.W @CMChoose - CMStart; 24
DC.W @CMBreak - CMStart; 25
DC.W @CMAddSearch - CMStart; 26
DC.W @CMRemoveSearch - CMStart; 27
DC.W @CMClearSearch - CMStart; 28
DC.W @CMIOKill - CMStart; 29
DC.W @CMEvent - CMStart; 2A
DC.W @CMSetupPostflight - CMStart; 2B
DC.W @CMGetConnEnvirons - CMStart; 2C
DC.W @CMPChoose - CMStart; 2D
DC.W @CMSetupXCleanup - CMStart; 2E
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; below this line are extensions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DC.W @CMGetErrorString - CMStart; 2F
DC.W @CMNewIOPB - CMStart; 30
DC.W @CMDisposeIOPB - CMStart; 31
DC.W @CMPBRead - CMStart; 32
DC.W @CMPBWrite - CMStart; 33
DC.W @CMPBIOKill - CMStart; 34
@CMSetRefCon ; 258
_ExternalCore #$40A
@CMGetRefCon ; 259
_ExternalCore #$40B
@CMSetUserData ; 260
_ExternalCore #$40C
@CMGetUserData ; 261
_ExternalCore #$40D
@CMGetVersion
_ExternalCore #$40E
@CMGetToolName ; 262
_ExternalCore #$40F
@CMValidate ; 279
_ExternalCore #$410
@CMDefault ; 280
_ExternalCore #$411
@CMSetupPreflight
_ExternalCore #$412
@CMSetupSetup
_ExternalCore #$413
@CMSetupFilter
_ExternalCore #$415
@CMSetupItem
_ExternalCore #$414
@CMSetupCleanup
_ExternalCore #$416
@CMSetupXCleanup
_ExternalCore #$427
@CMSetupPostflight ; 299
_ExternalCore #$417
@CMGetConfig
_ExternalCore #$418
@CMSetConfig
_ExternalCore #$419
@CMIntlToEnglish
_ExternalCore #$41A
@CMEnglishToIntl
_ExternalCore #$41B
@CMChoose
_ExternalCore #$41C
@CMPChoose
_ExternalCore #$426
@CMGetProcID ; 263
_ExternalCore #$41D
@CMResume
_ExternalCore #$41E
@CMMenu
_ExternalCore #$41F
@CMEvent ; 298
_ExternalCore #$420
@CMActivate
_ExternalCore #$421
@CMIdle
_ExternalCore #$422
@CMAbort
_ExternalCore #$423
@CMReset
_ExternalCore #$424
@CMGetErrorString
_ExternalCore #$428
@InitCM CLR.W -(SP) ; make room
JSR __InitCM
MOVE.W (SP)+,D0 ; return it
RTS
@CMNew CLR.L -(SP) ; make room
MOVE.W 18(A0), -(SP) ; theProcID
MOVE.L 14(A0), -(SP) ; theFlags
MOVE.L 10(A0), -(SP) ; desiredSizes
MOVE.L 6(A0), -(SP) ; theRefCon
MOVE.L 2(A0), -(SP) ; theUserData
JSR __CMNew
MOVE.L (SP)+, D0
RTS
@CMDispose MOVE.L 2(A0), -(SP) ; hConn
JSR __CMDispose
RTS
@CMOpen CLR.W -(SP) ; make room
MOVE.L 12(A0), -(SP) ; hConn
MOVE.W 10(A0), -(SP) ; theAsync
MOVE.L 6(A0), -(SP) ; completor
MOVE.L 2(A0), -(SP) ; timeout
JSR __CMOpen
MOVE.W (SP)+, D0
RTS
@CMListen CLR.W -(SP) ; make room
MOVE.L 12(A0), -(SP) ; hConn
MOVE.W 10(A0), -(SP) ; theAsync
MOVE.L 6(A0), -(SP) ; completor
MOVE.L 2(A0), -(SP) ; timeout
JSR __CMListen
MOVE.W (SP)+, D0
RTS
@CMAccept CLR.W -(SP) ; make room
MOVE.L 4(A0), -(SP) ; hConn
MOVE.W 2(A0), -(SP) ; accept
JSR __CMAccept
MOVE.W (SP)+, D0
RTS
@CMClose CLR.W -(SP) ; make room
MOVE.L 14(A0), -(SP) ; hConn
MOVE.W 12(A0), -(SP) ; theAsync
MOVE.L 8(A0), -(SP) ; completor
MOVE.L 4(A0), -(SP) ; timeout
MOVE.W 2(A0), -(SP) ; now
JSR __CMClose
MOVE.W (SP)+, D0
RTS
@CMRead CLR.W -(SP) ; make room
MOVE.L 26(A0), -(SP) ; hConn
MOVE.L 22(A0), -(SP) ; theBuffer
MOVE.L 18(A0), -(SP) ; toRead
MOVE.W 16(A0), -(SP) ; theChannel
MOVE.W 14(A0), -(SP) ; theAsync
MOVE.L 10(A0), -(SP) ; completor
MOVE.L 6(A0), -(SP) ; timeout
MOVE.L 2(A0), -(SP) ; flags (VAR)
JSR __CMRead
MOVE.W (SP)+, D0
RTS
@CMWrite CLR.W -(SP) ; make room
MOVE.L 24(A0), -(SP) ; hConn
MOVE.L 20(A0), -(SP) ; theBuffer
MOVE.L 16(A0), -(SP) ; toWrite
MOVE.W 14(A0), -(SP) ; theChannel
MOVE.W 12(A0), -(SP) ; theAsync
MOVE.L 8(A0), -(SP) ; completor
MOVE.L 4(A0), -(SP) ; timeout
MOVE.W 2(A0), -(SP) ; flags
JSR __CMWrite
MOVE.W (SP)+, D0
RTS
@CMGetCMVersion LEA Version, A0
MOVE.W (A0), D0 ; put version number
RTS
@CMBreak ; 293
MOVE.L 12(A0), -(SP) ; hConn
MOVE.L 8(A0), -(SP) ; duration
MOVE.W 6(A0), -(SP) ; async
MOVE.L 2(A0), -(SP) ; completor
JSR __CMBreak
RTS
@CMAddSearch ; 294
CLR.L -(SP) ; make room
MOVE.L 12(A0), -(SP) ; hConn
MOVE.L 8(A0), -(SP) ; theString
MOVE.W 6(A0), -(SP) ; flags
MOVE.L 2(A0), -(SP) ; callBack
JSR __CMAddSearch
MOVE.L (SP)+, D0 ; return point
RTS
@CMRemoveSearch ; 295
MOVE.L 6(A0), -(SP) ; hConn
MOVE.L 2(A0), -(SP) ; refnum
JSR __CMRemoveSearch
RTS
@CMClearSearch ; 296
MOVE.L 2(A0), -(SP) ; hConn
JSR __CMClearSearch
RTS
@CMIOKill ; 297
CLR.W -(SP) ; make room
MOVE.L 4(A0), -(SP) ; hConn
MOVE.W 2(A0), -(SP) ; refnum
JSR __CMIOKill
MOVE.W (SP)+, D0 ; return point
RTS
@CMGetConnEnvirons CLR.W -(SP) ; make room
MOVE.L 6(A0), -(SP) ; hConn
MOVE.L 2(A0), -(SP) ; (ptr to) environs
JSR __CMGetConnEnvirons
MOVE.W (SP)+, D0
RTS
@CMNewIOPB
CLR.W -(SP) ; make room
MOVE.L 6(A0), -(SP) ; hConn
MOVE.L 2(A0), -(SP) ; (ptr to) CMIOPBPtr
JSR __CMNewIOPB
MOVE.W (SP)+, D0
RTS
@CMDisposeIOPB
CLR.W -(SP) ; make room
MOVE.L 6(A0), -(SP) ; hConn
MOVE.L 2(A0), -(SP) ; CMIOPBPtr
JSR __CMDisposeIOPB
MOVE.W (SP)+, D0
RTS
@CMPBRead
CLR.W -(SP) ; make room
MOVE.L 8(A0), -(SP) ; hConn
MOVE.L 4(A0), -(SP) ; CMIOPBPtr
MOVE.B 2(A0), -(SP) ; async
JSR __CMPBRead
MOVE.W (SP)+, D0
RTS
@CMPBWrite
CLR.W -(SP) ; make room
MOVE.L 8(A0), -(SP) ; hConn
MOVE.L 4(A0), -(SP) ; CMIOPBPtr
MOVE.B 2(A0), -(SP) ; async
JSR __CMPBWrite
MOVE.W (SP)+, D0
RTS
@CMPBIOKill
CLR.W -(SP) ; make room
MOVE.L 6(A0), -(SP) ; hConn
MOVE.L 2(A0), -(SP) ; CMIOPBPtr
JSR __CMPBIOKill
MOVE.W (SP)+, D0
RTS
;pascal CMErr CMStatus( hConn, sizes, flags)
_CMStatus FUNC
hConn EQU 10
sizes EQU 6
flags EQU 2
LINK A6,#0
MOVEM.L D2/A1,-(SP)
CLR.L -(SP) ; Call the defproc
MOVE.L hConn(A0),A1 ; Get the core handle
MOVE.L A1,-(SP) ; hCore
MOVE.W #CMStatusMsg,-(SP) ; msg
MOVE.L sizes(A0),-(SP) ; p1
MOVE.L flags(A0),-(SP) ; p2
CLR.L -(SP) ; p3
MOVE.L (A1),A1 ; Dereference core handle
MOVE.L CTBDefProc(A1),A3 ; Finally call it
JSR (A3)
MOVE.L (SP)+,D0 ; Give 'em the return value
MOVEM.L (SP)+,A1 ; Restore the world
UNLK A6
RTS
ENDFUNC
END