2019-06-29 23:17:50 +08:00

236 lines
6.3 KiB
Plaintext

;
; File: FileTransferMgr.a
;
; Written by: Carol Lee June 1988
;
; Copyright: © 1987-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.
; <7> 10/4/91 JSM Change PsychoticFarmerOrLater conditionals to TheFuture.
; <6> 10/2/91 DTY Conditionalise <4> and <5> out of CubeE.
; <5> 6/26/91 BH fixed FTReceive to call correct routine
; <4> 6/26/91 BH added FTSend and FTReceive
; <3> 8/27/90 kaz Use an offset table instead of a BRA table.
; <2> 7/10/90 dba add __ to distinguish glue from routines themselves
; <1> 3/14/90 BBH first checked in
;
; Pre BBS History
;
; 4/7/89 JNG Changed FTGetName to FTGetToolName
; 4/11/89 JNG Removed FTGetRefCon, FTSetRefCon, FTSetUserData, FTGetUserData,
; and FTGetVersion these are now in the CTBCore routines.
; 4/12/89 JNG Removed FTGetToolName to CTBCore
; 4/13/89 BBH Added FTMenu
; 4/17/89 JNG Moved FTValidate and FTDefault to CTBCore
; 4/20/89 BBH Moved lots of stuff into core. Setup, Intl, Script, Choose
; 4/24/89 JNG Moved FTResume FTEvent FTMenu FTAbort to ctbcore
; 4/24/89 BBH Modified FTNew and file transfer record to add environsProc
; 4/28/89 BBH Added FTNew's new parameter theFlags
; 6/2/89 JNG New Glue/Entry interface
; 6/26/89 BBH Added FTPChoose routine
; 8/14/89 BBH Added new constant curFTversion
;
INCLUDE 'FileTransfers.a'
INCLUDE 'CTBUtilities.a'
INCLUDE 'Traps.a'
INCLUDE 'CommToolboxPriv.a'
MACRO
_ExternalCore &selector
_RealExternalCore &selector,#FTSel
ENDM
;------------------------------------------------------------------------------------
;
; A0.L -> pointer to the routine selector record
;
; D0.L -> function result
;
;
FTEntry MAIN EXPORT
IMPORT __InitFT, __FTNew, __FTDispose, __FTExec, __FTStart, __FTCleanup
Import __FTSend, __FTReceive
BRA.S start
version DC.W curFTversion ; 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 FTList, A1 ; point to offset table
ADD.W 0(A1,D1.W), A1 ; add the offset
JMP (A1) ; go there
FTList
DC.W @InitFT - FTList; 1
DC.W @FTSetRefCon - FTList; 2
DC.W @FTGetRefCon - FTList; 3
DC.W @FTSetUserData - FTList; 4
DC.W @FTGetUserData - FTList; 5
DC.W @FTGetToolName - FTList; 6
DC.W @FTGetProcID - FTList; 7
DC.W @FTNew - FTList; 8
DC.W @FTDispose - FTList; 9
DC.W @FTExec - FTList; A
DC.W @FTStart - FTList; B
DC.W @FTCleanup - FTList; C
DC.W @FTAbort - FTList; D
DC.W @FTResume - FTList; E
DC.W @FTValidate - FTList; F
DC.W @FTDefault - FTList;10
DC.W @FTSetupPreflight - FTList;11
DC.W @FTSetupSetup - FTList;12
DC.W @FTSetupFilter - FTList;13
DC.W @FTSetupItem - FTList;14
DC.W @FTSetupCleanup - FTList;15
DC.W @FTGetConfig - FTList;16
DC.W @FTSetConfig - FTList;17
DC.W @FTIntlToEnglish - FTList;18
DC.W @FTEnglishToIntl - FTList;19
DC.W @FTGetVersion - FTList;1A
DC.W @FTGetFTVersion - FTList;1B
DC.W @FTChoose - FTList;1C
DC.W @FTEvent - FTList;1D
DC.W @FTSetupPostflight - FTList;1E
DC.W @FTMenu - FTList;1F
DC.W @FTActivate - FTList;20
DC.W @FTPChoose - FTList;21
DC.W @FTSetupXCleanup - FTList;22
DC.W @FTGetErrorString - FTList;23
DC.W @FTSend - FTList;24
DC.W @FTReceive - FTList;25
@FTSetRefCon ; 258
_ExternalCore #$40A
@FTGetRefCon ; 259
_ExternalCore #$40B
@FTSetUserData ; 260
_ExternalCore #$40C
@FTGetUserData ; 261
_ExternalCore #$40D
@FTGetVersion
_ExternalCore #$40E
@FTGetToolName ; 262
_ExternalCore #$40F
@FTValidate ; 279
_ExternalCore #$410
@FTDefault ; 280
_ExternalCore #$411
@FTSetupPreflight
_ExternalCore #$412
@FTSetupSetup
_ExternalCore #$413
@FTSetupFilter
_ExternalCore #$415
@FTSetupItem
_ExternalCore #$414
@FTSetupXCleanup
_ExternalCore #$427
@FTSetupCleanup
_ExternalCore #$416
@FTSetupPostflight ; 299
_ExternalCore #$417
@FTGetConfig
_ExternalCore #$418
@FTSetConfig
_ExternalCore #$419
@FTIntlToEnglish
_ExternalCore #$41A
@FTEnglishToIntl
_ExternalCore #$41B
@FTChoose
_ExternalCore #$41C
@FTPChoose
_ExternalCore #$426
@FTGetProcID ; 263
_ExternalCore #$41D
@FTResume
_ExternalCore #$41E
@FTMenu
_ExternalCore #$41F
@FTEvent ; 298
_ExternalCore #$420
@FTActivate
_ExternalCore #$421
@FTAbort
_ExternalCore #$423
@FTGetErrorString
_ExternalCore #$428
@InitFT CLR.W -(SP) ; make room
JSR __InitFT
MOVE.W (SP)+,D0
RTS
@FTNew CLR.L -(SP) ; make room
MOVE.W 38(A0), -(SP) ; theProcID
MOVE.L 34(A0), -(SP) ; theFlags
MOVE.L 30(A0), -(SP) ; theSendProc
MOVE.L 26(A0), -(SP) ; theRecvProc
MOVE.L 22(A0), -(SP) ; theReadProc
MOVE.L 18(A0), -(SP) ; theWriteProc
MOVE.L 14(A0), -(SP) ; theEnvironsProc
MOVE.L 10(A0), -(SP) ; owner
MOVE.L 6(A0), -(SP) ; theRefCon
MOVE.L 2(A0), -(SP) ; theUserData
JSR __FTNew
MOVE.L (SP)+, D0
RTS
@FTDispose MOVE.L 2(A0), -(SP) ; hFT
JSR __FTDispose
RTS
@FTExec MOVE.L 2(A0), -(SP) ; hFT
JSR __FTExec
RTS
@FTStart CLR.W -(SP) ; make room
MOVE.L 8(A0), -(SP) ; hFT
MOVE.W 6(A0), -(SP) ; what
MOVE.L 2(A0), -(SP) ; fileInfo
JSR __FTStart
MOVE.W (SP)+, D0
RTS
@FTCleanup CLR.W -(SP) ; make room
MOVE.L 4(A0), -(SP) ; hFT
MOVE.W 2(A0), -(SP) ; now
JSR __FTCleanup
MOVE.W (SP)+, D0
RTS
@FTGetFTVersion
LEA Version, A0
MOVE.W (A0), D0 ; put version number
RTS
@FTSend
CLR.W -(SP)
MOVE.L 12(a0),-(SP) ; hFT
MOVE.W 10(A0),-(SP) ; numFiles
MOVE.L 6(A0),-(SP) ; pFSpec
MOVE.L 2(A0), -(SP) ; notifyProc
JSR __FTSend
MOVE.W (SP)+,D0
RTS
@FTReceive
CLR.W -(SP)
MOVE.L 10(a0),-(SP) ; hFT
MOVE.L 6(A0),-(SP) ; pFSpec
MOVE.L 2(A0), -(SP) ; notifyProc
JSR __FTReceive
MOVE.W (SP)+,D0
RTS
END