mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-29 07:29:15 +00:00
421 lines
13 KiB
Plaintext
421 lines
13 KiB
Plaintext
|
|
|||
|
;
|
|||
|
; File: PPCToolbox.a
|
|||
|
;
|
|||
|
; Contains: Interface to the PPCToolbox from Assembly language.
|
|||
|
;
|
|||
|
; Written by: Eric M. Trehus
|
|||
|
;
|
|||
|
; Copyright: <09> 1990-1992 by Apple Computer, Inc., all rights reserved.
|
|||
|
;
|
|||
|
; Change History (most recent first):
|
|||
|
;
|
|||
|
; <14> 4/17/92 JSM Undo last revision, those changes are not supported by PPC for
|
|||
|
; CubeE.
|
|||
|
; <13> 9/6/91 MH add: ppcServiceStoreAndForward EQU 2, and PPCKill trap macro and
|
|||
|
; selector.
|
|||
|
; <12> 8/15/91 MH change formatting of comments, move conditional assembly
|
|||
|
; declaration immediately after copyright notice
|
|||
|
; <11> 1/30/91 gbm sab, #38: Change the <20>already including this file<6C> variable to
|
|||
|
; all uppercase (for security reasons)
|
|||
|
; <10> 12/13/90 EMT <JSM> Change interface to support new calling conventions,
|
|||
|
; basically rewrote interface.
|
|||
|
;
|
|||
|
|
|||
|
; Version: 1.00
|
|||
|
; Created: Friday, October 20, 1989 at 9:35:53 PM
|
|||
|
;
|
|||
|
; PPCToolbox.a
|
|||
|
; Assembler Interface to the Macintosh Libraries
|
|||
|
;
|
|||
|
; Copyright Apple Computer, Inc. 1989-90
|
|||
|
; All rights reserved
|
|||
|
;
|
|||
|
; 1.3 JAL 10/10/1990 Changed cmdCode to ppcCmdCode because of duplicate definitions.
|
|||
|
; 1.2 CVC 11/28/1989 Added the StartSecureSession call.
|
|||
|
; 1.1 CVC 11/08/1989 Put the offset to PB here.
|
|||
|
; 1.0 CVC 11/02/1989 First time add the file to the AIncludes folder
|
|||
|
; END EASE MODIFICATION HISTORY
|
|||
|
; 1.1 CVC 11/02/1989 Added PPC command codes (moved from PPCEqu.a)
|
|||
|
; 1.0 CVC 09/18/1989 Adding PPC toolbox for the first time.
|
|||
|
|
|||
|
|
|||
|
IF &TYPE('__INCLUDINGPPCTOOLBOX__') = 'UNDEFINED' THEN
|
|||
|
__INCLUDINGPPCTOOLBOX__ SET 1
|
|||
|
|
|||
|
; PPCCommand Values
|
|||
|
|
|||
|
; Trap Selector D0 Must be set to one of the following, csCode will contain this value
|
|||
|
; when the call completes.
|
|||
|
|
|||
|
ppcInitCmd EQU 0
|
|||
|
ppcOpenCmd EQU 1
|
|||
|
ppcStartCmd EQU 2
|
|||
|
ppcInformCmd EQU 3
|
|||
|
ppcAcceptCmd EQU 4
|
|||
|
ppcRejectCmd EQU 5
|
|||
|
ppcWriteCmd EQU 6
|
|||
|
ppcReadCmd EQU 7
|
|||
|
ppcEndCmd EQU 8
|
|||
|
ppcCloseCmd EQU 9
|
|||
|
IPCListPortsCmd EQU 10
|
|||
|
|
|||
|
DeleteUserCmd EQU 12
|
|||
|
GetDefaultUserCmd EQU 13
|
|||
|
StartSecureCmd EQU 14
|
|||
|
|
|||
|
; Valid PPCServiceTypes
|
|||
|
ppcServiceRealTime EQU 1
|
|||
|
|
|||
|
|
|||
|
; Valid PPCLocationKinds = Integer;
|
|||
|
ppcNoLocation EQU 0 ; There is no PPCLocName
|
|||
|
ppcNBPLocation EQU 1 ; Use AppleTalk NBP
|
|||
|
ppcNBPTypeLocation EQU 2 ; Use just the NBP type, fill in rest with default
|
|||
|
|
|||
|
; Valid PPCPortKinds = Integer;
|
|||
|
ppcByCreatorAndType EQU 1 ; Port type is specified as colloquial Mac creator and type
|
|||
|
ppcByString EQU 2 ; Port type is in pascal string format
|
|||
|
|
|||
|
; Valid PPCSessionOrigins = SignedByte; { requestType returned in PPCInform }
|
|||
|
ppcLocalOrigin EQU 1 ; session originated from this machine
|
|||
|
ppcRemoteOrigin EQU 2 ; session originated from remote machine
|
|||
|
|
|||
|
PPCPortRec RECORD 0 ; TYPE Comment
|
|||
|
nameScript DS.W 1 ; ScriptCode; script of name
|
|||
|
name DS.B 34 ; Str32; name of port as seen in browser
|
|||
|
portKindSelector DS.W 1 ; PPCPortKinds; which variant
|
|||
|
portTypeStr DS.B 34 ; Str32;
|
|||
|
ORG portTypeStr
|
|||
|
portCreator DS.L 1 ; OSType;
|
|||
|
portType DS.L 1 ; OSType;
|
|||
|
ENDR
|
|||
|
|
|||
|
LocationNameRec RECORD 0 ;
|
|||
|
locationKindSelector DS.W 1 ; PPCLocationKind; which variant
|
|||
|
nbpEntity DS.B 100 ; NBP name entity
|
|||
|
ORG nbpEntity ;
|
|||
|
nbpType DS.B 34 ; Str32; just the NBP type string, for PPCOpen
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PortInfoRec RECORD 0 ;
|
|||
|
filler1 DS.B 1 ; SignedByte;
|
|||
|
authRequired DS.B 1 ; Boolean;
|
|||
|
name DS PPCPortRec ;
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCOpenPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
portRefNum DS.W 1 ; PPCPortRefNum Port Reference
|
|||
|
filler1 DS.L 1 ; LONGINT ignored
|
|||
|
serviceType DS.B 1 ; PPCServiceType Bit field describing the requested port service
|
|||
|
resFlag DS.B 1 ; BYTE Must be set to 0
|
|||
|
portName DS.L 1 ; PPCPortPtr PortName for PPC
|
|||
|
locationName DS.L 1 ; LocationNamePtr If NBP Registration is required
|
|||
|
networkVisible DS.B 1 ; BOOLEAN make this network visible on network
|
|||
|
nbpRegistered DS.B 1 ; BOOLEAN The given location name was registered on the network
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCInformPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
portRefNum DS.W 1 ; PPCPortRefNum Port Identifier
|
|||
|
sessRefNum DS.L 1 ; PPCSessRefNum Session Reference
|
|||
|
serviceType DS.B 1 ; PPCServiceType Status Flags for type of session, local, remote
|
|||
|
autoAccept DS.B 1 ; Boolean if true session will be accepted automatically
|
|||
|
portName DS.L 1 ; PPCPortPtr Buffer for Source PPCPortRec
|
|||
|
locationName DS.L 1 ; LocationNamePtr Buffer for Source LocationNameRec
|
|||
|
userName DS.L 1 ; StringPtr Buffer for Soure user's name trying to link.
|
|||
|
userData DS.L 1 ; LongInt value included in PPCStart's userData
|
|||
|
requestType DS.B 1 ; PPCSessionOrigin Local or Network
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCStartPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
portRefNum: DS.W 1 ; PPCPortRefNum; Port Identifier
|
|||
|
sessRefNum: DS.L 1 ; PPCSessRefNum; Session Reference
|
|||
|
serviceType: DS.B 1 ; PPCServiceType Actual service method (realTime)
|
|||
|
resFlag: DS.B 1 ; SignedByte Must be set to 0
|
|||
|
portName: DS.L 1 ; PPCPortPtr Destination portName
|
|||
|
locationName: DS.L 1 ; LocationNamePtr NBP or NAS style service location name
|
|||
|
rejectInfo: DS.L 1 ; LongInt reason for rejecting the session request
|
|||
|
userData: DS.L 1 ; LongInt Copied to destination PPCInform parameter block
|
|||
|
userRefNum: DS.L 1 ; LongInt userRefNum (obtained during login process)
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCAcceptPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
filler1 DS.W 1 ; Integer
|
|||
|
sessRefNum DS.L 1 ; PPCSessRefNum Session Reference
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCRejectPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
filler1 DS.W 1 ; Integer
|
|||
|
sessRefNum DS.L 1 ; PPCSessRefNum Session Reference
|
|||
|
filler2 DS.W 1 ; Integer
|
|||
|
filler3 DS.L 1 ; LongInt
|
|||
|
filler4 DS.L 1 ; LongInt
|
|||
|
rejectInfo DS.L 1 ; LongInt reason for rejecting the session request
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCWritePBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
filler1 DS.W 1 ; Integer
|
|||
|
sessRefNum DS.L 1 ; PPCSessRefNum Session Reference
|
|||
|
bufferLength DS.L 1 ; Size Length of the message buffer
|
|||
|
actualLength DS.L 1 ; Size Actual Length Written
|
|||
|
bufferPtr DS.L 1 ; Ptr Pointer to message buffer
|
|||
|
more DS.B 1 ; Boolean if more data in this block will be written
|
|||
|
filler2 DS.B 1 ; SignedByte;
|
|||
|
userData DS.L 1 ; LongInt Message block userData Uninterpreted by PPC
|
|||
|
blockCreator DS.L 1 ; OSType Message block creator Uninterpreted by PPC
|
|||
|
blockType DS.L 1 ; OSType Message block type Uninterpreted by PPC
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCReadPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
filler1 DS.W 1 ; Integer
|
|||
|
sessRefNum DS.L 1 ; PPCSessRefNum Session Reference
|
|||
|
bufferLength DS.L 1 ; Size Length of the message buffer
|
|||
|
actualLength DS.L 1 ; Size Actual length read
|
|||
|
bufferPtr DS.L 1 ; Ptr Pointer to message buffer
|
|||
|
more DS.B 1 ; Boolean if true more data in this block to be read
|
|||
|
filler2 DS.B 1 ; SignedByte
|
|||
|
userData DS.L 1 ; LongInt Message block userData Uninterpreted by PPC
|
|||
|
blockCreator DS.L 1 ; OSType Message block creator Uninterpreted by PPC
|
|||
|
blockType DS.L 1 ; OSType Message block type Uninterpreted by PPC
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCEndPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
filler1 DS.W 1 ; Integer
|
|||
|
sessRefNum DS.L 1 ; PPCSessRefNum Session Reference
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
PPCClosePBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
portRefNum DS.W 1 ; PPCPortRefNum Port Identifier
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
IPCListPortsPBRec RECORD 0 ; TYPE Comment
|
|||
|
qLink DS.L 1 ; Ptr reserved
|
|||
|
csCode DS.W 1 ; INTEGER reserved
|
|||
|
intUse DS.W 1 ; INTEGER reserved
|
|||
|
intUsePtr DS.L 1 ; Ptr reserved
|
|||
|
ioCompletion DS.L 1 ; PPCComProcPtr Completion routine.
|
|||
|
ioResult DS.W 1 ; OSErr Result of operation.
|
|||
|
reserved DS.L 5 ; LONGINT reserved
|
|||
|
filler1 DS.W 1 ; Integer
|
|||
|
startIndex DS.W 1 ; Integer Start Index
|
|||
|
requestCount DS.W 1 ; Integer Number of entries to be returned
|
|||
|
actualCount DS.W 1 ; Integer Actual Number of entries to be returned
|
|||
|
portName DS.L 1 ; PPCPortPtr PortName Match
|
|||
|
locationName DS.L 1 ; LocationNamePtr NBP or NAS type name to locate the Port Location
|
|||
|
bufferPtr DS.L 1 ; PortInfoArrayPtr Pointer to a buffer requestCount*sizeof(PortInfo) bytes big
|
|||
|
ENDR
|
|||
|
|
|||
|
DeleteUserParams RECORD 0 ;
|
|||
|
userRefNum DS.L 1 ; LONGINT
|
|||
|
ENDR
|
|||
|
|
|||
|
StartSecureParams RECORD 0 ; TYPE
|
|||
|
prompt DS.L 1 ; StringPtr
|
|||
|
guestSelected DS.L 1 ; pointer to a Boolean
|
|||
|
allowGuest DS.B 1 ; Boolean
|
|||
|
reserved1 DS.B 1 ; Byte
|
|||
|
useDefault DS.B 1 ; Boolean
|
|||
|
reserved2 DS.B 1 ; Byte
|
|||
|
userName DS.L 1 ; StringPtr
|
|||
|
startPb DS.L 1 ; PPCStartPBPtr
|
|||
|
ENDR
|
|||
|
|
|||
|
GetDefaultUserParams RECORD 0 ;
|
|||
|
userName DS.L 1 ; Pointer to Str32.
|
|||
|
userRef DS.L 1 ; Pointer to LONGINT.
|
|||
|
ENDR
|
|||
|
|
|||
|
PPCParamBlockRec RECORD 0 ;
|
|||
|
openParam DS PPCOpenPBRec
|
|||
|
ORG 0
|
|||
|
informParam DS PPCInformPBRec
|
|||
|
ORG 0
|
|||
|
startParam DS PPCStartPBRec
|
|||
|
ORG 0
|
|||
|
acceptParam DS PPCAcceptPBRec
|
|||
|
ORG 0
|
|||
|
rejectParam DS PPCRejectPBRec
|
|||
|
ORG 0
|
|||
|
writeParam DS PPCWritePBRec
|
|||
|
ORG 0
|
|||
|
readParam DS PPCReadPBRec
|
|||
|
ORG 0
|
|||
|
endParam DS PPCEndPBRec
|
|||
|
ORG 0
|
|||
|
closeParam DS PPCClosePBRec
|
|||
|
ORG 0
|
|||
|
listPortsParam DS IPCListPortsPBRec
|
|||
|
ENDR
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCInit
|
|||
|
MOVEQ #ppcInitCmd,D0
|
|||
|
DC.W $A0DD
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_DoPPCTrap
|
|||
|
IF &SYSLIST[1] = 'SYNC' THEN
|
|||
|
DC.W $A0DD
|
|||
|
ELSE
|
|||
|
DC.W $A4DD
|
|||
|
ENDIF
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCMacro
|
|||
|
MOVEQ &SYSLIST[1],D0
|
|||
|
_DoPPCTrap &SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCOpen
|
|||
|
_PPCMacro #ppcOpenCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCInform
|
|||
|
_PPCMacro #ppcInformCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCStart
|
|||
|
_PPCMacro #ppcStartCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCAccept
|
|||
|
_PPCMacro #ppcAcceptCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCReject
|
|||
|
_PPCMacro #ppcRejectCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCWrite
|
|||
|
_PPCMacro #ppcWriteCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCRead
|
|||
|
_PPCMacro #ppcReadCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCClose
|
|||
|
_PPCMacro #ppcCloseCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCEnd
|
|||
|
_PPCMacro #ppcEndCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_IPCListPorts
|
|||
|
_PPCMacro #IPCListPortsCmd,&SYSLIST[2]
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_DeleteUserIdentity
|
|||
|
Moveq #DeleteUserCmd,D0
|
|||
|
DC.W $A0DD
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_GetDefaultUser
|
|||
|
Moveq #GetDefaultUserCmd,D0
|
|||
|
DC.W $A0DD
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_StartSecureSession
|
|||
|
Moveq #StartSecureCmd,D0
|
|||
|
DC.W $A0DD
|
|||
|
Endm
|
|||
|
|
|||
|
Macro
|
|||
|
_PPCBrowser
|
|||
|
MOVE.W #$0D00,D0
|
|||
|
_Pack9
|
|||
|
Endm
|
|||
|
|
|||
|
ENDIF ;...already included
|