mirror of
https://github.com/elliotnunn/sys7.1-doc-wip.git
synced 2024-12-12 04:29:09 +00:00
67 lines
2.0 KiB
Plaintext
67 lines
2.0 KiB
Plaintext
;
|
||
; Hacks to match MacOS (most recent first):
|
||
;
|
||
; <Sys7.1> 8/3/92 Removed code to preflight the system heap with ResrvMem
|
||
; 9/2/94 SuperMario ROM source dump (header preserved below)
|
||
;
|
||
|
||
;
|
||
; 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
|
||
|
||
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
|
||
; <Sys7.1> Don't preflight with Get1Resource/SizeRsrc/ResrvMem
|
||
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
|
||
_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 |