boot3/Toolbox/NotificationMgr/MemUtils.a
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
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.
2017-12-26 10:02:57 +08:00

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