mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-16 03:29:58 +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.
59 lines
1.8 KiB
Plaintext
59 lines
1.8 KiB
Plaintext
; ======================================================================
|
|
; VMPatch.a © 1988 by Apple Computer Inc
|
|
; by Chris Derossi 4/10/89
|
|
; ======================================================================
|
|
|
|
PrNonPortable EQU 1 ; We're building System SW. This is ok.
|
|
|
|
PRINT OFF
|
|
INCLUDE 'Traps.a'
|
|
INCLUDE 'SysEqu.a'
|
|
INCLUDE 'ToolEqu.a'
|
|
INCLUDE 'Private.a'
|
|
INCLUDE 'quickequ.a'
|
|
INCLUDE 'colorequ.a'
|
|
INCLUDE 'VMCalls.a'
|
|
PRINT ON
|
|
|
|
; ======================================================================
|
|
; Header to main init code.
|
|
; ======================================================================
|
|
|
|
MACHINE MC68020
|
|
|
|
VMPatch PROC EXPORT
|
|
|
|
; During a page fault exception, MacVM continues to service the cursor interrupt. Now that
|
|
; the cursor code is not in ROM, and not in the System heap, it must not get paged out.
|
|
; Otherwise, nested page faults could occur, and this is bad.
|
|
;
|
|
; This patch tells MacVM to keep the cursor code in memory at all times. This patch does
|
|
; nothing if MacVM isn't around.
|
|
;
|
|
; Note: This patch knows that the cursor code is pointed to by JCrsrTask, and ends at the
|
|
; location pointed to by JScrnAddr.
|
|
|
|
|
|
Unimplemented EQU $A89F ; the Unimplemented trap number
|
|
MemoryDispatch EQU $A05C ; trap number for MacVM Dispatcher
|
|
|
|
; Does the MacVM dispatch trap exist?
|
|
|
|
MOVE.W #MemoryDispatch, D0 ; MacVM Trap number
|
|
_GetTrapAddress ,NewOS ; get the address of _MemoryDispatch
|
|
MOVEA.L A0, A1 ; Hold it for a sec
|
|
MOVE.W #Unimplemented, D0 ; get address of Unimplemented trap
|
|
_GetTrapAddress
|
|
CMPA.L A0,A1 ; see if MacVM is around
|
|
BEQ.S @0 ; if not, we're done
|
|
|
|
MOVE.L jCrsrTask, A0 ; Point to cursor code
|
|
MOVE.L jScrnAddr, A1 ; Get end of code
|
|
SUBA.L jCrsrTask, A1 ; Calculate length of cursor code
|
|
_HoldMemory ; Tell VM to keep it around
|
|
|
|
@0
|
|
RTS
|
|
|
|
END
|