mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 16:31:01 +00:00
515 lines
19 KiB
Plaintext
515 lines
19 KiB
Plaintext
|
;
|
|||
|
; File: MiscPatches.a
|
|||
|
;
|
|||
|
; Contains: Miscellaneous patches that don't fit anyplace else. Currently contains the following patches:
|
|||
|
;
|
|||
|
; Patch to _SynchIdleTime to handle idling for File Manager, Edition Manager, Data Access
|
|||
|
; Manager, and PPC Toolbox.
|
|||
|
;
|
|||
|
; InitApplication and CleanupApplication.
|
|||
|
;
|
|||
|
; Gestalt function for Data Access Manager, Edition Manager,
|
|||
|
; Standard File, and AppleEvent Manager.
|
|||
|
;
|
|||
|
; Copyright: <09> 1989-1992 by Apple Computer, Inc. All rights reserved.
|
|||
|
;
|
|||
|
; Change History (most recent first):
|
|||
|
;
|
|||
|
; <SM8> 11/3/92 SWC Changed SlotEqu.a->Slots.a and removed INCLUDE of Traps.a.
|
|||
|
; <SM7> 9/3/92 PN Nuke the check for IIci because this is SuperMario.
|
|||
|
; <SM6> 7/14/92 PN Use the real name for PPCTrap
|
|||
|
; <SM5> 5/20/92 TN Moved entry points for Packs 8 ,9, 11, 13, 15 to new files in
|
|||
|
; the folder with the corresponding Pack sources.
|
|||
|
; <SM4> 5/16/92 kc Remove PowerPrivEqu.a include.
|
|||
|
; <SM3> 4/15/92 kc Change bsr to jsr.
|
|||
|
; <SM2> 4/13/92 JSM Roll-in changes from Reality: (note: still need to merge in revision <55>)
|
|||
|
; <56> 4/7/92 JSM Use more specific equates in place of emPackGlobals everywhere.
|
|||
|
; <54> 12/31/91 RB Removed _PowerDispatch trap definition. It is now in Traps.a
|
|||
|
; <53> 12/6/91 YK Added _CleanUpApplicationComponents to CleanupApplication.
|
|||
|
; (Deja Vu<56>)
|
|||
|
; <52> 11/21/91 YK Removed _InputUtilsDispatch.
|
|||
|
; <51> 10/28/91 SAM/KSM Rolled in Regatta changes.
|
|||
|
; <3> 6/14/91 SAM (HJR) Using new PowerMgr record names.
|
|||
|
; <1> 5/15/91 SAM Split off from 7.0 GM sources. Added support for power cycling
|
|||
|
; at every few SynchIdle calls (for TIM).
|
|||
|
; <50> 10/23/91 DTY _CleanUpApplication now calls _GetOverrideMap to determine when
|
|||
|
; to stop closing files instead of blindly going on through to the
|
|||
|
; System file.
|
|||
|
; <49> 10/23/91 YK Added _InputUtilsDispatch for the Input Utilities.
|
|||
|
; <48> 10/18/91 JH Fixed dumb error accessing DictionaryMgr handle in
|
|||
|
; DictionaryDispatch
|
|||
|
; <47> 10/17/91 JH Added _DictionaryDispatch for the dictionary manager.
|
|||
|
; <46> 10/17/91 JSM Don<6F>t use hasPPC conditional.
|
|||
|
; <45> 9/19/91 JSM Don<6F>t use forNuFinder conditional (this was the only file that
|
|||
|
; used it).
|
|||
|
; <44> 9/18/91 JSM Cleanup header, remove references to hasSplineFonts.
|
|||
|
; <43> 6/12/91 LN removed #include 'HardwareEqu.a'
|
|||
|
; <42> 2/25/91 dnf dfh, #80720,#82672: Give the File Manager some idle time so it
|
|||
|
; can make sure there are enough FCBs available.
|
|||
|
; <41> 2/4/91 CL (MR)Moving the cleanup of TrueType<70> caches into cleanup app from
|
|||
|
; BassPatches for 7.0.
|
|||
|
; <40> 12/14/90 DFH (ksm) DoSevenOhIdle was a head patch to SystemTask. Now it is
|
|||
|
; its own trap, SynchIdleTime, and is called by the Process Mgr at
|
|||
|
; SystemTask and in idle scheduling time.
|
|||
|
; <39> 10/15/90 JSM <stb> Use ppcIdleCmd.
|
|||
|
; <38> 9/21/90 DDG Added a package handler for picture utilities.
|
|||
|
; <37> 9/5/90 ngk Add AppleEventMgr stuff and conditionalizing code more
|
|||
|
; <36> 8/17/90 gbm stop using myHasEditionMgr, since the build system now has its
|
|||
|
; act together
|
|||
|
; <35> 8/6/90 BBH add CommToolbox cleanup code to CleanupApplication as a JSR
|
|||
|
; instead of a patch
|
|||
|
; <34> 7/31/90 DFH Fixed typos in new CleanupApplication code.
|
|||
|
; <33> 7/31/90 DFH Put CleanupApplication's calls in proper sequence. Added Sound
|
|||
|
; Mgr and Resource Mgr cleanups.
|
|||
|
; <32> 7/25/90 PKE In CleanupApplication, call to CleanupScriptApp replaces code
|
|||
|
; that disposed of application itl cache. In InitApplication, add
|
|||
|
; InitScriptApp call to set up application-specific Script Mgr
|
|||
|
; globals (including itl cache). Include ScriptPriv.a.
|
|||
|
; <31> 7/25/90 DFH Include MFPrivate.a to get InitApplication and
|
|||
|
; CleanupApplication.
|
|||
|
; <30> 7/12/90 STB Moved _DispatchHelper & _ProcHelper patch installation code to
|
|||
|
; DispatchHelper.a
|
|||
|
; <29> 7/8/90 JSM Pass in pointer to use count instead of offset when calling
|
|||
|
; _ProcHelper.
|
|||
|
; <28> 7/7/90 JSM Split DispatchHelper and ProcHelper off to {OS}DispatchHelper.a
|
|||
|
; so SixPack can use them, general format cleanup.
|
|||
|
; <27> 7/2/90 PKE Added code to CleanupApplication that disposes of application<6F>s
|
|||
|
; itl2/itl4 cache.
|
|||
|
; <26> 6/20/90 DTY Removed ShutdownMgr.a from MiscPatches and made it a stand-alone
|
|||
|
; 'lpch'
|
|||
|
; <25> 6/19/90 VL Convert various routines for linked patches.
|
|||
|
; <24> 6/13/90 JSM Add include of SlotEqu.a and ROMEqu.a to fix BigBang build after
|
|||
|
; ShutDownMgr.a changes.
|
|||
|
; <23> 6/8/90 ngk Fix bug in PACKHelper, It was trashing A2.
|
|||
|
; <22> 5/31/90 ngk Add gestault selector for StandardFile. Changed PACKHelper to
|
|||
|
; not need a exit proc.
|
|||
|
; <21> 5/2/90 PKE Included 'GestaltPrivateEqu.a' to fix the build. It is now
|
|||
|
; needed for ShutDownMgr.a, which is included here.
|
|||
|
; <20> 4/24/90 S To Include a Call to PPC at System Task Time.
|
|||
|
; <19> 4/20/90 KSM DispatchHelper used to assume that there were no <20>holes<65> in the
|
|||
|
; table, even if they were between the first and last selectors.
|
|||
|
; With a simple branch (I hope), we can keep this from being a
|
|||
|
; problem.
|
|||
|
; <18> 3/20/90 EMT Used smaller (and faster) color quickdraw test.
|
|||
|
; <17> 3/15/90 JSM Do a JMP instead of RTS from PACKHelper to DispatchHelper.
|
|||
|
; <16> 3/10/90 ngk Change Pack11 (Editions Mgr) to use new package dispatcher.
|
|||
|
; Added bit to dispatch flags that means selectors are even
|
|||
|
; numbers.
|
|||
|
; <15> 3/5/90 DVB Only PMgrExit on color machines ha ha
|
|||
|
; <14> 2/26/90 JSM Fix Pack13Entry to check for globals.
|
|||
|
; <13> 2/26/90 JSM Database Access Manager (PACK 13) now uses PACKHelper.
|
|||
|
; <12> 2/24/90 JSM Add support for reentrant locking to PACKHelper.
|
|||
|
; <11> 2/21/90 JSM Tighten up DispatchHelper.
|
|||
|
; <10> 2/20/90 JSM Change DispatchTable format for DispatchHelper, tweak
|
|||
|
; PACKHelper.
|
|||
|
; <9> 2/19/90 JSM Add generic package dispatcher PACKHelper, add PPC Browser as
|
|||
|
; PACK 9.
|
|||
|
; <8> 2/16/90 DVB Add PMgrExit
|
|||
|
; <7> 2/15/90 JSM Add generic dispatcher DispatchHelper.
|
|||
|
; <6> 2/4/90 DNF Add include of FileMgrPrivate.a
|
|||
|
; <5> 1/21/90 ngk Changed gestaltEditionMgr to gestaltEditionMgrAttr
|
|||
|
; <4> 1/12/90 CCH Added include of <20>HardwarePrivateEqu.a<>.
|
|||
|
; <3> 1/6/90 ngk Use symbolic names for Edition manager calls
|
|||
|
; <2> 1/4/90 JSM Add Gestalt function for 7.0 features.
|
|||
|
; <2.4> 12/11/89 GMR Pulled Sony driver Format patch from this file, now in separate
|
|||
|
; patch file (FormatPatch.a).
|
|||
|
; <2.3> 12/8/89 dnf Reorder equates to make things work
|
|||
|
; <2.2> 11/6/89 csd changed ShutDown Manager trap to point to the ShutDown Manager
|
|||
|
; dispatcher, instead of the ShutDown Manager init code.
|
|||
|
; <2.1> 11/4/89 ngk Added call to DataPublication Quit in _CleanupApp
|
|||
|
; <2.0> 11/2/89 dba fixed ShutDown Manager initialization; I am a bad doggie!
|
|||
|
; <1.9> 10/31/89 dba moved ShutDown Manager here
|
|||
|
; <1.8> 10/16/89 KST Added two traps: InitApplication and CleanUpApplication.
|
|||
|
; <1.7> 10/16/89 CCH Commented out EntryTable entries for InitApplication and
|
|||
|
; CleanupApplication until the extended trap dispatcher is rolled
|
|||
|
; into the big bang build.
|
|||
|
; <1.6> 10/11/89 CCH Added _InitApplication and _CleanupApplication.
|
|||
|
; <1.5> 10/6/89 JSM Patch SystemTask and _Pack13 for SnarfMan.
|
|||
|
; <1.4> 10/1/89 ngk Added DataPublications Idle call to SytemTask chain.
|
|||
|
; <1.3> 8/18/89 CCH Removed definition of onMac32.
|
|||
|
; <1.2> 8/9/89 ngk Added new safer dispatcher for PACK=11 (DataPublications)
|
|||
|
; <1.1> 8/8/89 GMR Fixed conditional testing for new sony driver.
|
|||
|
; <1.0> 8/7/89 GMR Adding for first time to EASE.
|
|||
|
;
|
|||
|
|
|||
|
PRINT PUSH,OFF
|
|||
|
|
|||
|
LOAD 'StandardEqu.d'
|
|||
|
INCLUDE 'LinkedPatchMacros.a'
|
|||
|
INCLUDE 'BTreeEqu.a'
|
|||
|
include 'MMUEqu.a'
|
|||
|
include 'BootEqu.a'
|
|||
|
include 'HardwareEqu.a'
|
|||
|
include 'FileMgrPrivate.a'
|
|||
|
include 'GestaltEqu.a'
|
|||
|
include 'GestaltPrivateEqu.a' ; <21>
|
|||
|
include 'Slots.a' ; <24>
|
|||
|
include 'ROMEqu.a' ; <24>
|
|||
|
include 'EditionsPrivate.a'
|
|||
|
include 'DatabaseAccess.a'
|
|||
|
include 'DispatchHelperPriv.a'
|
|||
|
include 'MFPrivate.a'
|
|||
|
include 'ScriptPriv.a' ; <32>
|
|||
|
include 'ResourceMgrPriv.a'
|
|||
|
include 'PPCPriv.a' ; <39>
|
|||
|
include 'fontPrivate.a' ; <CEL-41>
|
|||
|
include 'universalEqu.a'
|
|||
|
include 'PowerPrivEqu.a'
|
|||
|
|
|||
|
PwrCycCount EQU $AA ; <1>
|
|||
|
|
|||
|
PRINT POP
|
|||
|
|
|||
|
;
|
|||
|
; These patches are installed on all ROM families
|
|||
|
;
|
|||
|
ROMs Plus,SE,II,Portable,IIci
|
|||
|
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; Routine: SynchIdleTime
|
|||
|
;
|
|||
|
; Inputs: none
|
|||
|
;
|
|||
|
; Outputs: none
|
|||
|
;
|
|||
|
; Can destroy: D0-D2,A0-A1
|
|||
|
;
|
|||
|
; Function: Gets called at synchronous idlish time by Process Mgr
|
|||
|
;
|
|||
|
; Calls FileManagerIdleProc to check FCB allocation.
|
|||
|
;
|
|||
|
; Calls _EditionBackGroundTask only if the package is loaded
|
|||
|
; and some edition files are in use.
|
|||
|
;
|
|||
|
; Calls DBIdle only if the Data Access manager globals are allocated.
|
|||
|
;
|
|||
|
; Calls idle routine for PPC Toolbox.
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
SynchIdleTimeProc PatchProc _SynchIdleTime
|
|||
|
import FileManagerIdleProc
|
|||
|
|
|||
|
jsr FileManagerIdleProc ; <42>
|
|||
|
|
|||
|
IF hasEditionMgr THEN
|
|||
|
;
|
|||
|
; Check if we need to call _EditionBackGroundTask
|
|||
|
;
|
|||
|
|
|||
|
MOVE.L ExpandMem, A0 ; get expanded memory area
|
|||
|
LEA ExpandMemRec.emDataPub(A0),A0 ; get em globals location
|
|||
|
MOVE.L (A0),D0 ; test if allocated
|
|||
|
BEQ.S @emIdleDone ; if not, no need to do idle
|
|||
|
|
|||
|
MOVE.L D0,A1
|
|||
|
MOVE.L EdtnMgrGlobals.firstPubCB(A1),D0
|
|||
|
CMP.L D0,A0 ; if no pub control blocks
|
|||
|
BEQ.S @emIdleDone ; then done
|
|||
|
MOVE.L EdtnMgrGlobals.nextPollTime(A1),D0 ; if timer has not expired
|
|||
|
CMP.L Ticks,D0 ; then check for DBIdle
|
|||
|
BHI.S @emIdleDone
|
|||
|
|
|||
|
SUBQ #2,SP ; place holder for result
|
|||
|
_EditionBackGroundTask ; call dpBackGroundTask
|
|||
|
TST.W (SP)+ ; ignore result
|
|||
|
@emIdleDone
|
|||
|
ENDIF
|
|||
|
|
|||
|
|
|||
|
IF hasDataAccessMgr THEN
|
|||
|
;
|
|||
|
; Check if we need to call DBIdle
|
|||
|
;
|
|||
|
|
|||
|
MOVE.L ExpandMem, A0 ; get expanded memory area
|
|||
|
MOVE.L ExpandMemRec.emSnarfGlobals(A0), D0 ; get Snarf globals
|
|||
|
BEQ.S @doneDBIdle ; if not allocated no need to do idle
|
|||
|
|
|||
|
SUBQ #2,SP ; place holder for result
|
|||
|
MOVE.W #$00FF,D0 ; actually call DBIdle
|
|||
|
_Pack13
|
|||
|
TST.W (SP)+ ; ignore result
|
|||
|
@doneDBIdle
|
|||
|
ENDIF
|
|||
|
|
|||
|
;
|
|||
|
; always do PPC idle routine
|
|||
|
;
|
|||
|
|
|||
|
MOVEQ #ppcIdleCmd,D0 ; <39> call PPC idle routine
|
|||
|
_PPC ; PPC trap <PN>
|
|||
|
|
|||
|
WITH PMgrRec,PowerDispRec ;
|
|||
|
BRA.S @Done ; <PN> branch always because we are SM ROM
|
|||
|
Testfor hwCbPwrMgr ; do we have a power manager?
|
|||
|
BEQ.S @Done ; no power cycling
|
|||
|
MOVE.L PMgrBase,A0 ; Get the Power Manager Globals
|
|||
|
MOVE.W PwrCycSyncCount(A0),D0 ; Get the number of syncIdle before IdleMind
|
|||
|
ADDI.W #1,PMgrScratch.SyncCounter(A0) ; Increment scratch counter
|
|||
|
CMP.W PMgrScratch.SyncCounter(A0),D0 ; Have we done enough SyncIdles
|
|||
|
BLT.S @Done
|
|||
|
CLR.W PMgrScratch.SyncCounter(A0) ; reset counter
|
|||
|
MOVEQ #IdleMindDisp,D0 ; Set the selector to IdleMind
|
|||
|
_PowerDispatch
|
|||
|
@Done
|
|||
|
rts
|
|||
|
|
|||
|
ENDPROC ; SynchIdleTimeProc
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; Routine: InitApplication <1.6>
|
|||
|
;
|
|||
|
; Inputs: none
|
|||
|
;
|
|||
|
; Outputs: status flag ? (currently unused) in D0
|
|||
|
;
|
|||
|
; Can destroy: D0-D2,A0-A1
|
|||
|
;
|
|||
|
; Function: Gets called at application launch by Multifinder to set up the world.
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
InitApp PatchProc _InitApplication
|
|||
|
;
|
|||
|
; Set up application-specific Script Mgr globals <32>
|
|||
|
;
|
|||
|
SUBQ #2,SP ; space for OSErr result
|
|||
|
_InitScriptApp ; go set up app<70>s script globals
|
|||
|
ADDQ #2,SP ; always returns NoErr, ignore
|
|||
|
|
|||
|
;
|
|||
|
; All done, return status flag in D0
|
|||
|
;
|
|||
|
MOVEQ #-1,D0
|
|||
|
RTS ; big routine
|
|||
|
|
|||
|
ENDPROC ; InitApp
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; Routine: CleanupApplication <1.6>
|
|||
|
; Inputs: none
|
|||
|
; Outputs: none
|
|||
|
; Destroys: D0/A0-A1
|
|||
|
; Gets called by the Process Mgr's ExitToShell code. The current low memory, traps,
|
|||
|
; VBLs, etc. are for the dying application. This is the chance for OS and ToolBox to
|
|||
|
; tidy up things that were given to the application.
|
|||
|
; BEWARE! The order of operations here is VERY important. This is why you add code
|
|||
|
; here, rather than patching this or some other trap. In general, we want to cleanup
|
|||
|
; from the top down. For example, since closing the resource files nukes any custom
|
|||
|
; code provided by the app (e.g. WDEFs), we must cleanup parts that use the custom code
|
|||
|
; (e.g. the Palette Mgr) BEFORE closing the resource files. Similarly, CloseResFiles and
|
|||
|
; _BTCleanUp are called before _FSCleanup so _FSCleanup doesn't close the files out from
|
|||
|
; under the Btree or Resource Mgrs.
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
CleanupApp PatchProc _CleanupApplication
|
|||
|
|
|||
|
CLR.L -(SP) ; room for result
|
|||
|
MOVE.L applZone,A0 ; point to zone hdr
|
|||
|
MOVE.L A0,-(SP) ; push start ptr
|
|||
|
MOVE.L (A0),-(SP) ; push zone trailer
|
|||
|
_sbKillSomeCaches
|
|||
|
ADDQ #4,SP ; ignore result
|
|||
|
|
|||
|
IF hasCommToolbox THEN
|
|||
|
;
|
|||
|
; Clean up CommToolbox if necessary
|
|||
|
;
|
|||
|
import CleanUpCommToolbox
|
|||
|
JSR CleanupCommToolbox
|
|||
|
ENDIF
|
|||
|
|
|||
|
IF hasEditionMgr THEN ; <36>
|
|||
|
;
|
|||
|
; Check if app was doing Edition Manager stuff that needs cleaning up
|
|||
|
;
|
|||
|
MOVE.L ExpandMem, A0 ; get expanded memory area
|
|||
|
MOVE.L ExpandMemRec.emDataPub(A0), D0 ; get dp globals
|
|||
|
BEQ.S @noEditionMgr ; if not allocated, no need to do cleanup
|
|||
|
SUBQ #2,SP ; place holder for result
|
|||
|
_QuitEditionPack ; call pack11 clean up
|
|||
|
TST.W (SP)+ ; ignore result
|
|||
|
@noEditionMgr
|
|||
|
ENDIF
|
|||
|
|
|||
|
;
|
|||
|
; Clean up Compoents and Component insetances belong to this app.
|
|||
|
;
|
|||
|
_CleanUpApplicationComponents <53>
|
|||
|
|
|||
|
;
|
|||
|
; Clean up the Palette Manager if there is one.
|
|||
|
;
|
|||
|
CMP.W #$3FFF,ROM85 ; do we have color QD?
|
|||
|
BHI.S @noPMgrExit
|
|||
|
_PMgrExit
|
|||
|
@noPmgrExit
|
|||
|
|
|||
|
;
|
|||
|
; Clean up Sound Manager
|
|||
|
;
|
|||
|
_SndAppDead
|
|||
|
|
|||
|
;
|
|||
|
; Clean up application-specific Script Mgr globals (incl itl2/4 cache) <27><32>
|
|||
|
;
|
|||
|
SUBQ #2,SP ; space for OSErr result
|
|||
|
_CleanupScriptApp ; go clean up app<70>s script globals
|
|||
|
ADDQ #2,SP ; always returns NoErr, ignore
|
|||
|
|
|||
|
;
|
|||
|
; Clean up Resource Manager. Close resource files from the top of the
|
|||
|
; chain down to, but not including, the system file. After this, defprocs
|
|||
|
; and any other "system" code from the application chain are suspect.
|
|||
|
; NOTE: Could be using ROM routine CloseFiles in ResourceMgr.a.
|
|||
|
;
|
|||
|
@CloseResFiles
|
|||
|
move.l TopMapHndl, a1 ; start at the top
|
|||
|
subq #4,sp
|
|||
|
move.l SysMapHndl,-(sp) ; <50>
|
|||
|
_GetOverrideMap ; <50> Stop at the first system override file
|
|||
|
cmpa.l (sp)+, a1 ; down to the system file?
|
|||
|
beq.s @DoneResMgr ; stop at the system file
|
|||
|
move.l (a1), a1 ; deref handle to get map
|
|||
|
move.w MRefNum(a1), -(sp) ; get file refnum from map
|
|||
|
_CloseResFile ; close said file (sets new TopMapHndl)
|
|||
|
bra.s @CloseResFiles ; and try again
|
|||
|
@DoneResMgr
|
|||
|
|
|||
|
;
|
|||
|
; Do BTree Manager clean up
|
|||
|
;
|
|||
|
suba #fscpbLen,sp ; allocate ioPB
|
|||
|
movea.l sp,a0 ; a0=ioPB
|
|||
|
moveq #(fscpbLen/4)-1,d0 ; d0=size in long
|
|||
|
movea.l a0,a1
|
|||
|
|
|||
|
@BTClear clr.l (a1)+
|
|||
|
dbra d0,@BTClear
|
|||
|
_BTCleanUp ; clean up B*tree
|
|||
|
|
|||
|
;
|
|||
|
; Do File System clean up
|
|||
|
;
|
|||
|
moveq #(fscpbLen/4)-1,d0 ; d0=size in long
|
|||
|
movea.l a0,a1
|
|||
|
|
|||
|
@FSClear clr.l (a1)+
|
|||
|
dbra d0,@FSClear
|
|||
|
_FSCleanUp ; cleanup FS
|
|||
|
adda.L #fscpbLen,sp ; deallocate space
|
|||
|
|
|||
|
rts
|
|||
|
|
|||
|
ENDPROC ; CleanupApp
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; FUNCTION get70MgrAttr(selector : OSType; VAR response : LONGINT) : OSErr;
|
|||
|
;
|
|||
|
; Generic Gestalt function for testing for existence of System 7.0
|
|||
|
; features. Since this patch is for 7.0 only, it always returns 1 in the
|
|||
|
; response. If your particular feature requires more bits set in the
|
|||
|
; response, don't use this routine. Currently, this is the function
|
|||
|
; for the gestaltDBAccessMgrAttr and gestaltEditionMgrAttr selectors.
|
|||
|
;
|
|||
|
; Registers A0 and A1 are destroyed.
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
get70MgrAttr PROC
|
|||
|
|
|||
|
MOVE.L (SP)+,A0 ; return address
|
|||
|
MOVE.L (SP)+,A1 ; address of result
|
|||
|
|
|||
|
MOVE.L #1,(A1) ; 7.0 features always under 7.0!
|
|||
|
|
|||
|
ADDA.W #4,SP ; pop the selector type
|
|||
|
MOVE.W #noErr,(SP) ; it always works
|
|||
|
JMP (A0)
|
|||
|
|
|||
|
ENDPROC ; get70MgrAttr
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; Additional patch code goes here
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; dimg entry - Dictionary Manager
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
DictionaryDispatch PatchProc _DictionaryDispatch
|
|||
|
|
|||
|
DictionaryHandle EQU ExpandMemRec.emDictionaryMgrPackHandle
|
|||
|
DictionaryUseCount EQU ExpandMemRec.emDictionaryMgrUseCount
|
|||
|
|
|||
|
MOVE.L ExpandMem,A1 ; get expand mem into A1
|
|||
|
MOVE.L DictionaryHandle(A1),A0 ; move the handle to the code into A0
|
|||
|
ADD.W #DictionaryUseCount,A1 ; A1 = pointer to use count
|
|||
|
_ProcHelper ; let ProcHelper take over
|
|||
|
|
|||
|
ENDPROC ; DictionaryDispatch
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
;
|
|||
|
; Install Gestalt functions for gestaltDBAccessMgrAttr, gestaltEditionMgr,
|
|||
|
; gestaltStandardFileAttr, and gestaltAppleEventsAttr
|
|||
|
;
|
|||
|
; !!!! all just return 1 for system 7.0 !!!!!
|
|||
|
;
|
|||
|
;___________________________________________________________________________________
|
|||
|
|
|||
|
MiscPatchesInstall InstallProc
|
|||
|
|
|||
|
IMPORT get70MgrAttr
|
|||
|
|
|||
|
IF hasDataAccessMgr THEN ; <37>
|
|||
|
MOVE.L #gestaltDBAccessMgrAttr, D0 ; Data Access Manager
|
|||
|
lea get70MgrAttr, A0
|
|||
|
_NewGestalt
|
|||
|
ENDIF
|
|||
|
|
|||
|
|
|||
|
IF hasEditionMgr THEN ; <37>
|
|||
|
MOVE.L #gestaltEditionMgrAttr, D0 ; Edition Manager
|
|||
|
lea get70MgrAttr, A0
|
|||
|
_NewGestalt
|
|||
|
ENDIF
|
|||
|
|
|||
|
MOVE.L #gestaltStandardFileAttr, D0 ; Standard File
|
|||
|
leaResident get70MgrAttr, A0
|
|||
|
_NewGestalt
|
|||
|
|
|||
|
IF hasAppleEventMgr THEN ; <37>
|
|||
|
MOVE.L #gestaltAppleEventsAttr, D0 ; AppleEvent Manager
|
|||
|
lea get70MgrAttr, A0
|
|||
|
_NewGestalt
|
|||
|
ENDIF
|
|||
|
|
|||
|
;___________________________________________________________________________________
|
|||
|
; Gestalt function for the dictionary manager.
|
|||
|
; just returns 1 for CubeE
|
|||
|
;____________________________________________________________________________________
|
|||
|
MOVE.L #gestaltDictionaryMgrAttr, D0 ; Dictionary Manager
|
|||
|
lea get70MgrAttr, A0
|
|||
|
_NewGestalt
|
|||
|
|
|||
|
|
|||
|
RTS
|
|||
|
|
|||
|
ENDPROC
|
|||
|
|
|||
|
|
|||
|
END ; of file
|