mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-28 01:31:07 +00:00
4325cdcc78
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.
74 lines
2.5 KiB
Plaintext
74 lines
2.5 KiB
Plaintext
;
|
|
; File: OpenResFile.a
|
|
;
|
|
; Contains: patch to OpenResFile to fix old print glues
|
|
;
|
|
; Copyright: © 1990 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; This file is used in these builds: BigBang
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <4> 1/16/91 stb & gbm; preserve d1-d2/a1 like all good Resource Mgr calls should
|
|
; <3> 4/23/90 dba donÕt change CurMap to SysMap before doing the GetString; this
|
|
; fixes some problems with PrintMonitor, and doesnÕt hurt
|
|
; anything, since no one except PrintMonitor and the System is
|
|
; supposed to have an STR -8192
|
|
; <1> 4/6/90 NB Added a call to PrLoadDriver. This replaces all the driver
|
|
; load hacks from before.
|
|
;
|
|
|
|
load 'StandardEqu.d'
|
|
include 'LinkedPatchMacros.a'
|
|
|
|
macro
|
|
_PrLoadDriver ; Only available on System 7.0 or better.
|
|
move.l #$D8000000,-(SP)
|
|
dc.w $A8FD
|
|
endm
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; OpenResFile Ñ open the printer driver whenever anyone opens 'STR ' ($E000)
|
|
|
|
OpenResFile PatchProc _OpenResFile, (Plus,SE,II,Portable,IIci)
|
|
|
|
move.b ResLoad,-(sp) ; save the old value for whether to load resources
|
|
sf ResLoad ; donÕt load the resource
|
|
|
|
subq #4,sp ; make room for resource handle
|
|
move.w #$E000,-(sp) ; get that resource handle
|
|
_GetString ; got the string now!
|
|
move.l (sp)+,d0 ; get the string into a register
|
|
|
|
move.b (sp)+,ResLoad ; restore ResLoad
|
|
|
|
tst.l d0 ; check if the handle is nil
|
|
bz.s NotForPrinting ; nope, it is not the printer driver name
|
|
exg d0,a0 ; move to address register for dereference
|
|
move.l (a0),a0 ; dereference to get the pointer
|
|
exg d0,a0 ; move file name pointer back to A1
|
|
cmp.l 4(sp), d0 ; check and see if it is the printer name
|
|
bne.s NotForPrinting ; nope, it is not the printer driver
|
|
|
|
movem.l d1-d2/a1,-(sp) ; Resource Mgr calls shouldnÕt touch these <4>
|
|
_PrLoadDriver ; function result is in D0
|
|
movem.l (sp)+,d1-d2/a1 ; restore registers <4>
|
|
move.w D0, ResErr ; copy the error result into ResErr
|
|
move.w $952, D0 ; copy the printing refnum into the function result
|
|
; This will be the error from HOpenResFile if it didn't work.
|
|
|
|
move.l (sp)+, a0 ; save return address
|
|
add.l #4, sp ; strip the parameter
|
|
move.w d0, (sp) ; set the function result
|
|
jmp (a0) ; out of here
|
|
|
|
NotForPrinting
|
|
|
|
jmpold ; go to the old OpenResFile
|
|
|
|
EndProc
|
|
|
|
; ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
End
|