mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 01:29:20 +00:00
0ba83392d4
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.
70 lines
2.3 KiB
Plaintext
70 lines
2.3 KiB
Plaintext
;
|
|
; File: ProcessManagerSegmentTweaks.a
|
|
;
|
|
; Contains: Code to do smarter loading of Process Manager segments to reduce
|
|
; system heap fragmentation. Based on GregÕs 7 Up code.
|
|
;
|
|
; Written by: Dean Yu
|
|
;
|
|
; Copyright: © 1991 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <1> 12/16/91 DTY first checked in
|
|
;
|
|
; To do: Take decompression slop into account (this doesnÕt happen yet, but it might)
|
|
;
|
|
|
|
load 'StandardEqu.d'
|
|
include 'LinkedPatchMacros.a'
|
|
|
|
;
|
|
; Loading these segments lower in the system heap helps reduce fragmentation of the
|
|
; system heap. Preloading resources from the System file doesnÕt work because they
|
|
; come in before the decompression hooks are installed. For each Process Manager
|
|
; segment in our list, find out itÕs size, reserve enough space for it, and load
|
|
; it low in the heap.
|
|
;
|
|
|
|
kProcessManagerSegmentType equ 'scod' ; Process Manager segment resource type
|
|
|
|
LoadProcessManagerSegmentsLowerInSysHeap InstallProc (Plus,SE,II,IIci,Portable)
|
|
|
|
subq #2,sp
|
|
_CurResFile ; Remember the current resource file
|
|
clr.w -(sp)
|
|
_UseResFile ; Work on the System file
|
|
move.b ResLoad,-(sp) ; Save current resource load state
|
|
|
|
lea ProcessManagerSegmentTable,a4 ; Table of Process Manager segments to load low
|
|
@loadLoop
|
|
move.w (a4)+,d7 ; Get the segment number
|
|
bz.s @doneWithSegments ; Did Õem all
|
|
sf ResLoad ; DonÕt load in resources
|
|
subq #8,sp ; Space for _SizeResource result too
|
|
move.l #kProcessManagerSegmentType,-(sp)
|
|
move.w d7,-(sp)
|
|
_Get1Resource
|
|
_SizeRsrc ; Find out how big it is
|
|
move.l (sp)+,d0 ; Get the size
|
|
_ResrvMem ,Sys ; Make some space low in the heap
|
|
st ResLoad ; Load it in for real now
|
|
subq #4,sp
|
|
move.l #kProcessManagerSegmentType,-(sp)
|
|
move.w d7,-(sp)
|
|
_Get1Resource ; Load it in
|
|
addq #4,sp ; We donÕt really care about the resource
|
|
bra.s @loadLoop
|
|
|
|
@doneWithSegments
|
|
move.b (sp)+,ResLoad ; Restore resource load state
|
|
_UseResFile ; The current resource file is on the stack
|
|
rts
|
|
|
|
ProcessManagerSegmentTable
|
|
dc.w $BFAC ; MiscSeg
|
|
dc.w $BFB0 ; KernelSeg
|
|
dc.w $BFB2 ; EPPCSeg
|
|
dc.w 0 ; End of table
|
|
EndProc
|
|
End |