mac-rom/OS/PPC/PPCDispatcher.a
Elliot Nunn 4325cdcc78 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 09:52:23 +08:00

236 lines
7.9 KiB
Plaintext

;
; File: PPCDispatcher.a
;
; Contains: Dispatcher for the PPCToolbox
;
; Written by: Jeff Miller
;
; Copyright: © 1984-1992 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <SM3> 4/15/92 CSS Integrate changes from Reality:
; <16> 4/14/92 BBM <JSM>: Remove unfinished PPC code that is under the conditional
; ÒTheFutureÓ, and remove the conditional ÒCubeEÓ since that is
; reality. Remove conditionals, since all they do is confuse.
; <2> 2/13/92 PN Rewrite the dispatcher to make it work for ROM.
; <1> ¥ Pre-SuperMario comments follow ¥
; <15> 10/4/91 JSM Change PsychoticFarmerOrLater conditionals to TheFuture.
; <14> 9/29/91 DTY Conditionalize <12> and <13> out of CubeE.
; <13> 6/10/91 EMT Optimize code for size
; <12> 6/4/91 EMT Roll in StoreAndForward Revisions
; <11> 10/30/90 EMT change ppcListPorts to ipcListPorts.
; <10> 10/24/90 EMT Add to PPCJumpTable for new internal calls PPCEnable and
; PPCDisable
; <9> 10/19/90 JSM <EMT> Completely rewritten.
; <8> 10/15/90 JSM <stb> Use ppcIdleCmd.
; <7> 10/10/90 gbm change cmdCode to ppcCmdCode and ApplA5 to ppcApplA5 per
; interface changes
; <6> 8/10/90 S Fix Dispatcher for CloseAcceptedSessions and
; CountAcceptedSessions.
; <5> 8/10/90 S Change jsr to jmp for CloseUserSessions and
; CountAcceptedSessions.
; <4> 8/6/90 S Included PPCCheckDupNBPName.
; <3> 5/31/90 EMT Added support to find out how many network sessions that this
; machine has currently active that were accepted, along with the
; ability to remove sessions for a particular user
; <2> 4/24/90 S Include a new trap to be called at system task time for PPC
; Internal use.
; <1.5> 11/28/89 CVC Added StartSecureSession call.
; <1.4> 11/6/89 CVC Removed imclude ""PPCEqu.a"
; <1.3> 11/2/89 CVC Added include "PPCEqu.a"
; <1.2> 10/12/89 CVC no change
; <1.1> 10/12/89 CVC Added Access Control
; <1.0> 9/18/89 CVC Adding PPC toolbox for the first time.
;
BLANKS ON
STRING ASIS
CASE OBJ
PRINT OFF
LOAD 'StandardEqu.d'
INCLUDE 'PPCToolBox.a'
INCLUDE 'PPCPriv.a'
INCLUDE 'LinkedPatchMacros.a'
PRINT ON
IF forROM THEN
;Rewrite the dispatcher to make it work for ROM
ppcDispatcher PROC EXPORT
EXPORT VPPCDISPATCHER
minPPCSelector EQU CheckDupNBPNameCmd ; smallest legal selector (-7)
maxPPCSelector EQU StartSecureCmd ; largest legal selector (14)
VPPCDISPATCHER
; Make sure the selector is in range
;
CMP.B #minPPCSelector,D0 ; is selector too small?
BLT.S @badSelector ; yes, return
CMP.B #maxPPCSelector,D0 ; is selector too big?
BGT.S @badSelector ; yes, return
;
; Calculate offset into jump table
EXT.W D0 ; ***temporary until b2
ASL.W #1,D0 ; each entry is 4 bytes
MOVE.W PPCJumpTable(D0.W),d0 ; get the address of the entry point
LEA PPCJumpTable(D0.W),A1 ;jump to it
; Call the routine and clean up
;
MOVE.L A0,-(SP) ; push the PB or pointer to stack parameters
JSR (A1) ; do the routine
MOVE.L (SP)+,A0 ; clean up stack
RTS ; return to caller
@badSelector
MOVE.W #paramErr,D0 ; selector out of range
ADD.W #28,SP ; Take off 7 long words from stack to get back
RTS
MACRO
JT &entry
IMPORT &entry
DC.W &entry - PPCJumpTable
ENDM
;-------------------------------------------------------------------------------------------------
; PPC Dispatch Table
;-------------------------------------------------------------------------------------------------
JumpStart
;
; private calls - at negative offsets before PPCJumpTable
;
JT PPCCheckDupNBPName ; CheckDupNBPNameCmd (-7)
JT PPCCloseUserSessions ; CloseUserSessionsCmd (-6)
JT PPCCountAcceptedNetworkSessions ; CountAcceptedNetworkSessionsCmd (-5)
JT DisableIncoming ; PPCDisableCmd (-4)
JT EnableIncoming ; PPCEnableCmd (-3)
JT PPCSystemTask ; ppcIdleCmd (-2)
JT KillPPC ; PPCRemoveCmd (-1) Called only by PPC Itself.
PPCJumpTable
;
; public calls
;
JT PPCSetUp ; PPCInit (no constant) (0)
;
; parameter block based calls
;
JT ppcOpen ; ppcOpenCmd (1)
JT ppcStart ; ppcStartCmd (2)
JT ppcInform ; ppcInformCmd (3)
JT ppcAccept ; ppcAcceptCmd (4)
JT ppcReject ; ppcRejectCmd (5)
JT ppcWrite ; ppcWriteCmd (6)
JT ppcRead ; ppcReadCmd (7)
JT ppcEnd ; ppcEndCmd (8)
JT ppcClose ; ppcCloseCmd (9)
JT ipcListPorts ; IPCListPortsCmd (10)
;
; stack based calls
;
JT ppcBadSelector ; unused (formerly PromptForUser) (11)
JT ppcDeleteUser ; DeleteUserCmd (12)
JT ppcGetDefaultUser ; GetDefaultUserCmd (13)
JT ppcStartSecure ; StartSecureCmd (14)
JumpEnd
ENDPROC ; ppcDispatcher
ppcBadSelector PROC EXPORT ; used in dispatch table for holes in selector range
MOVE.W #paramErr,D0 ; unused selector
ADD.W #28,SP ; Take off 7 long words from stack to get back
RTS
ENDPROC ; ppcBadSelector
ELSE ;¥¥¥¥ For System
ppcDispatcher PROC EXPORT
minPPCSelector EQU CheckDupNBPNameCmd ; smallest legal selector (-7) <SM3> CSS
maxPPCSelector EQU StartSecureCmd ; largest legal selector (14) <SM3> CSS
;
; Make sure the selector is in range
;
CMP.B #minPPCSelector,D0 ; is selector too small?
BLT.S @badSelector ; yes, return
CMP.B #maxPPCSelector,D0 ; is selector too big?
BGT.S @badSelector ; yes, return
;
; Calculate offset into jump table
;
EXT.W D0 ; ***temporary until b2
ASL.W #2,D0 ; each entry is 4 bytes
MOVE.L PPCJumpTable(D0.W),A1 ; get the address of the entry point
;
; Call the routine and clean up
;
MOVE.L A0,-(SP) ; push the PB or pointer to stack parameters
JSR (A1) ; do the routine
MOVE.L (SP)+,A0 ; clean up stack
RTS ; return to caller
@badSelector
MOVE.W #paramErr,D0 ; selector out of range
RTS
;-------------------------------------------------------------------------------------------------
; PPC Dispatch Table
;-------------------------------------------------------------------------------------------------
;
; private calls - at negative offsets before PPCJumpTable
;
;
dcImport PPCCheckDupNBPName ; CheckDupNBPNameCmd (-7)
dcImport PPCCloseUserSessions ; CloseUserSessionsCmd (-6)
dcImport PPCCountAcceptedNetworkSessions ; CountAcceptedNetworkSessionsCmd (-5)
dcImport DisableIncoming ; PPCDisableCmd (-4)
dcImport EnableIncoming ; PPCEnableCmd (-3)
dcImport PPCSystemTask ; ppcIdleCmd (-2)
dcImport KillPPC ; PPCRemoveCmd (-1) Called only by PPC Itself.
PPCJumpTable
;
; public calls
;
dcImport PPCSetUp ; PPCInit (no constant) (0)
;
; parameter block based calls
;
dcImport ppcOpen ; ppcOpenCmd (1)
dcImport ppcStart ; ppcStartCmd (2)
dcImport ppcInform ; ppcInformCmd (3)
dcImport ppcAccept ; ppcAcceptCmd (4)
dcImport ppcReject ; ppcRejectCmd (5)
dcImport ppcWrite ; ppcWriteCmd (6)
dcImport ppcRead ; ppcReadCmd (7)
dcImport ppcEnd ; ppcEndCmd (8)
dcImport ppcClose ; ppcCloseCmd (9)
dcImport ipcListPorts ; IPCListPortsCmd (10)
;
; stack based calls
;
dcImport ppcBadSelector ; unused (formerly PromptForUser) (11)
dcImport ppcDeleteUser ; DeleteUserCmd (12)
dcImport ppcGetDefaultUser ; GetDefaultUserCmd (13)
dcImport ppcStartSecure ; StartSecureCmd (14)
ENDPROC ; ppcDispatcher
ppcBadSelector PROC EXPORT ; used in dispatch table for holes in selector range
MOVE.W #paramErr,D0 ; unused selector
RTS
ENDPROC ; ppcBadSelector
ENDIF
END