; ; 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