{ This file is part of the Free Pascal run time library. A file in Amiga system run time library. Copyright (c) 1998-2000 by Nils Sjoholm member of the Amiga RTL development team. See the file COPYING.FPC, included in this distribution, for details about the copyright. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} { History: Added overlay functions for Pchar->Strings, functions and procedures. 14 Jul 2000. nils.sjoholm@mailbox.swipnet.se } unit icon; INTERFACE {$I amigaoverlays.inc} uses exec, workbench; Const ICONNAME : PChar = 'icon.library'; VAR IconBase : pLibrary; FUNCTION AddFreeList(freelist : pFreeList; mem : POINTER; size : ULONG) : BOOLEAN; FUNCTION BumpRevision(newname : pCHAR; oldname : pCHAR) : pCHAR; FUNCTION DeleteDiskObject(name : pCHAR) : BOOLEAN; FUNCTION FindToolType(toolTypeArray : POINTER; typeName : pCHAR) : pCHAR; PROCEDURE FreeDiskObject(diskobj : pDiskObject); PROCEDURE FreeFreeList(freelist : pFreeList); FUNCTION GetDefDiskObject(typ : LONGINT) : pDiskObject; FUNCTION GetDiskObject(name : pCHAR) : pDiskObject; FUNCTION GetDiskObjectNew(name : pCHAR) : pDiskObject; FUNCTION MatchToolValue(typeString : pCHAR; value : pCHAR) : BOOLEAN; FUNCTION PutDefDiskObject(diskObject : pDiskObject) : BOOLEAN; FUNCTION PutDiskObject(name : pCHAR; diskobj : pDiskObject) : BOOLEAN; {$ifdef amiga_overlays} FUNCTION BumpRevision(newname : string; oldname : pCHAR) : pCHAR; FUNCTION BumpRevision(newname : pCHar; oldname : string) : pCHAR; FUNCTION BumpRevision(newname : string; oldname : string) : pCHAR; FUNCTION DeleteDiskObject(name : string) : BOOLEAN; FUNCTION FindToolType(toolTypeArray : POINTER; typeName : string) : pCHAR; FUNCTION GetDiskObject(name : string) : pDiskObject; FUNCTION GetDiskObjectNew(name : string) : pDiskObject; FUNCTION MatchToolValue(typeString : string; value : pCHAR) : BOOLEAN; FUNCTION MatchToolValue(typeString : pCHAR; value : string) : BOOLEAN; FUNCTION MatchToolValue(typeString : string; value : string) : BOOLEAN; FUNCTION PutDiskObject(name : string; diskobj : pDiskObject) : BOOLEAN; {$endif} IMPLEMENTATION {$ifdef amiga_overlays} uses pastoc; {$endif} FUNCTION AddFreeList(freelist : pFreeList; mem : POINTER; size : ULONG) : BOOLEAN; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L freelist,A0 MOVEA.L mem,A1 MOVEA.L size,A2 MOVEA.L IconBase,A6 JSR -072(A6) MOVEA.L (A7)+,A6 TST.W D0 BEQ.B @end MOVEQ #1,D0 @end: MOVE.B D0,@RESULT END; END; FUNCTION BumpRevision(newname : pCHAR; oldname : pCHAR) : pCHAR; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L newname,A0 MOVEA.L oldname,A1 MOVEA.L IconBase,A6 JSR -108(A6) MOVEA.L (A7)+,A6 MOVE.L D0,@RESULT END; END; FUNCTION DeleteDiskObject(name : pCHAR) : BOOLEAN; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L name,A0 MOVEA.L IconBase,A6 JSR -138(A6) MOVEA.L (A7)+,A6 TST.W D0 BEQ.B @end MOVEQ #1,D0 @end: MOVE.B D0,@RESULT END; END; FUNCTION FindToolType(toolTypeArray : POINTER; typeName : pCHAR) : pCHAR; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L toolTypeArray,A0 MOVEA.L typeName,A1 MOVEA.L IconBase,A6 JSR -096(A6) MOVEA.L (A7)+,A6 MOVE.L D0,@RESULT END; END; PROCEDURE FreeDiskObject(diskobj : pDiskObject); BEGIN ASM MOVE.L A6,-(A7) MOVEA.L diskobj,A0 MOVEA.L IconBase,A6 JSR -090(A6) MOVEA.L (A7)+,A6 END; END; PROCEDURE FreeFreeList(freelist : pFreeList); BEGIN ASM MOVE.L A6,-(A7) MOVEA.L freelist,A0 MOVEA.L IconBase,A6 JSR -054(A6) MOVEA.L (A7)+,A6 END; END; FUNCTION GetDefDiskObject(typ : LONGINT) : pDiskObject; BEGIN ASM MOVE.L A6,-(A7) MOVE.L typ,D0 MOVEA.L IconBase,A6 JSR -120(A6) MOVEA.L (A7)+,A6 MOVE.L D0,@RESULT END; END; FUNCTION GetDiskObject(name : pCHAR) : pDiskObject; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L name,A0 MOVEA.L IconBase,A6 JSR -078(A6) MOVEA.L (A7)+,A6 MOVE.L D0,@RESULT END; END; FUNCTION GetDiskObjectNew(name : pCHAR) : pDiskObject; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L name,A0 MOVEA.L IconBase,A6 JSR -132(A6) MOVEA.L (A7)+,A6 MOVE.L D0,@RESULT END; END; FUNCTION MatchToolValue(typeString : pCHAR; value : pCHAR) : BOOLEAN; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L typeString,A0 MOVEA.L value,A1 MOVEA.L IconBase,A6 JSR -102(A6) MOVEA.L (A7)+,A6 TST.W D0 BEQ.B @end MOVEQ #1,D0 @end: MOVE.B D0,@RESULT END; END; FUNCTION PutDefDiskObject(diskObject : pDiskObject) : BOOLEAN; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L diskObject,A0 MOVEA.L IconBase,A6 JSR -126(A6) MOVEA.L (A7)+,A6 TST.W D0 BEQ.B @end MOVEQ #1,D0 @end: MOVE.B D0,@RESULT END; END; FUNCTION PutDiskObject(name : pCHAR; diskobj : pDiskObject) : BOOLEAN; BEGIN ASM MOVE.L A6,-(A7) MOVEA.L name,A0 MOVEA.L diskobj,A1 MOVEA.L IconBase,A6 JSR -084(A6) MOVEA.L (A7)+,A6 TST.W D0 BEQ.B @end MOVEQ #1,D0 @end: MOVE.B D0,@RESULT END; END; {$ifdef amiga_overlays} FUNCTION BumpRevision(newname : string; oldname : pCHAR) : pCHAR; begin BumpRevision := BumpRevision(pas2c(newname),oldname); end; FUNCTION BumpRevision(newname : pCHar; oldname : string) : pCHAR; begin BumpRevision := BumpRevision(newname,pas2c(oldname)); end; FUNCTION BumpRevision(newname : string; oldname : string) : pCHAR; begin BumpRevision := BumpRevision(pas2c(newname),pas2c(oldname)); end; FUNCTION DeleteDiskObject(name : string) : BOOLEAN; begin DeleteDiskObject := DeleteDiskObject(pas2c(name)); end; FUNCTION FindToolType(toolTypeArray : POINTER; typeName : string) : pCHAR; begin FindToolType := FindToolType(toolTypeArray,pas2c(typeName)); end; FUNCTION GetDiskObject(name : string) : pDiskObject; begin GetDiskObject := GetDiskObject(pas2c(name)); end; FUNCTION GetDiskObjectNew(name : string) : pDiskObject; begin GetDiskObjectNew := GetDiskObjectNew(pas2c(name)); end; FUNCTION MatchToolValue(typeString : string; value : pCHAR) : BOOLEAN; begin MatchToolValue := MatchToolValue(pas2c(typeString),value); end; FUNCTION MatchToolValue(typeString : pCHAR; value : string) : BOOLEAN; begin MatchToolValue := MatchToolValue(typeString,pas2c(value)); end; FUNCTION MatchToolValue(typeString : string; value : string) : BOOLEAN; begin MatchToolValue := MatchToolValue(pas2c(typeString),pas2c(value)); end; FUNCTION PutDiskObject(name : string; diskobj : pDiskObject) : BOOLEAN; begin PutDiskObject := PutDiskObject(pas2c(name),diskobj); end; {$endif} END. (* UNIT ICON *)