; ; 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 : 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 ; <5> 11/27/90 kaz Renaming CMHCalls to CMPBCalls; Added CMPBOpen, etc ; <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