mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 01:29:20 +00:00
5b0f0cc134
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.
115 lines
4.1 KiB
Plaintext
115 lines
4.1 KiB
Plaintext
;
|
|
; File: MemUtils.a
|
|
;
|
|
; Written by: Ed Tecot
|
|
;
|
|
; Copyright: © 1987-1990 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <3> 7/17/90 dba got rid of most routines, since Memory.h now has in-line
|
|
; register-based interfaces; got rid of MemUtils.h because this is
|
|
; all compatible with the prototypes in Memory.h; replaced special
|
|
; code here with code excerpted from Interface.o source; it would
|
|
; be even better to use Interface.o and use dead-code stripping
|
|
; <2> 7/7/90 dba change names to match Interface.o
|
|
; <1.2> 3/3/89 CCH Added SetHandleSize and HUnlock glue.
|
|
; <1.1> 11/10/88 CCH Fixed Header.
|
|
; <1.0> 11/9/88 CCH Adding to EASE.
|
|
; <¥1.3> 9/23/88 CCH Got rid of inc.sum.d and empty nFiles
|
|
; <1.2> 5/23/88 BBM Glue broken for three routines (ie. no rts)
|
|
; <1.1> 5/19/88 BBM Added more glue for memory manager, OS utils.
|
|
; <1.0> 3/22/88 EMT First time adding Notification Manager sources
|
|
;
|
|
|
|
LOAD 'StandardEqu.d'
|
|
|
|
;
|
|
;FUNCTION EqualString(str1,str2: OsStr255; caseSens,diacSens: BOOLEAN):BOOLEAN;
|
|
;
|
|
|
|
EqualString FUNC EXPORT
|
|
LINK A6, #0 ; allocate stack frame
|
|
|
|
MOVE.L 16(A6),A0 ;ptr to str1
|
|
MOVE.L 12(A6),A1 ;ptr to str2
|
|
MOVEQ #0,D0
|
|
MOVE.B (A0)+,D0 ;str1 length
|
|
SWAP D0
|
|
MOVE.B (A1)+,D0 ;str2 length
|
|
|
|
;depending on value of booleans, make proper call
|
|
TST.B 8(A6) ;value of diacSens
|
|
BEQ.S @2 ;strip diacriticals
|
|
TST.B 10(A6) ;value of caseSens
|
|
BEQ.S @1 ;ignore case
|
|
_CmpString ,CASE ;both diacritical and case sensitive
|
|
BRA.S strDone
|
|
|
|
@1 _CmpString ;diacritical sensitive,map to upper case
|
|
BRA.S strDone
|
|
|
|
;strip diacriticals
|
|
@2 TST.B 10(A6) ;case sensitive?
|
|
BEQ.S @3
|
|
_CmpString ,MARKS,CASE ;ignore diacrits, case sensitive
|
|
BRA.S strDone
|
|
|
|
@3 _CmpString ,MARKS ;ignore diacrits and map to upper case
|
|
|
|
strDone EORI.B #1,D0 ;take opposite of what cmpString returns
|
|
MOVE.B D0,20(A6) ;return result
|
|
|
|
UNLK A6 ; restore stack
|
|
MOVE.L (SP)+,A0 ; rtn addr
|
|
ADD.L #12,SP ; pop args
|
|
JMP (A0)
|
|
|
|
;FUNCTION NGetTrapAddress(trapNum: INTEGER; tTyp: TrapType): LongInt;
|
|
|
|
NGetTrapAddress FUNC EXPORT
|
|
MOVE.L (SP)+,A1 ;return address
|
|
MOVE.B (SP)+,D1 ;trap selector: 0-OSTrap 1-ToolTrap
|
|
MOVE.W (SP)+,D0 ;trap number
|
|
MOVE.L A1,-(SP) ;restore return address
|
|
TST.B D1 ;0-OSTrap 1-ToolTrap
|
|
BEQ.S @1
|
|
_GetTrapAddress newTool
|
|
BRA.S @3
|
|
@1
|
|
_GetTrapAddress newOs
|
|
@3
|
|
MOVE.L A0,4(SP) ;return corresponding address
|
|
RTS
|
|
|
|
GetHandleSize FUNC EXPORT
|
|
|
|
Move.L (SP)+,A1 ;get return address
|
|
Move.L (SP)+,A0 ;get the handle
|
|
_GetHandleSize ;let OS do it
|
|
Move.L D0,(SP) ;return result on stack
|
|
BPl.S @1 ;real sizes are positive
|
|
Clr.L (SP) ;on errors, return 0
|
|
@1
|
|
jmp (a1) ;if result is a size, set 0 result code
|
|
|
|
BlockMove PROC EXPORT
|
|
|
|
Move.L (SP)+,D1 ;return address
|
|
Move.L (SP)+,D0 ;byte count
|
|
Move.L (SP)+,A1 ;destination ptr
|
|
Move.L (SP)+,A0 ;source ptr
|
|
_BlockMove ;let OS to do it.
|
|
Move.L D1,A1 ;return address
|
|
JMP (A1) ;save result code and return via A1
|
|
|
|
StripAddress FUNC EXPORT
|
|
|
|
MOVE.L (SP)+,A1 ;get the return address
|
|
MOVE.L (SP)+,D0 ;get the address
|
|
_StripAddress
|
|
MOVE.L D0,(SP) ;return the stripped address
|
|
JMP (A1)
|
|
|
|
END
|