+ some more 68k stuff (merged from OS4/MorphOS, needs work)

git-svn-id: trunk@5396 -
This commit is contained in:
Károly Balogh 2006-11-15 22:59:22 +00:00
parent 6ad8307653
commit f26e0a2d82
7 changed files with 2568 additions and 1 deletions

5
.gitattributes vendored
View File

@ -4289,8 +4289,13 @@ rtl/amiga/classes.pp svneol=native#text/plain
rtl/amiga/crt.pp svneol=native#text/plain
rtl/amiga/dos.pp svneol=native#text/plain
rtl/amiga/doslibd.inc svneol=native#text/plain
rtl/amiga/m68k/doslibf.inc svneol=native#text/plain
rtl/amiga/m68k/execd.inc svneol=native#text/plain
rtl/amiga/m68k/execf.inc svneol=native#text/plain
rtl/amiga/m68k/prt0.as svneol=native#text/plain
rtl/amiga/m68k/utild1.inc svneol=native#text/plain
rtl/amiga/m68k/utild2.inc svneol=native#text/plain
rtl/amiga/m68k/utilf.inc svneol=native#text/plain
rtl/amiga/powerpc/doslibf.inc svneol=native#text/plain
rtl/amiga/powerpc/execd.inc svneol=native#text/plain
rtl/amiga/powerpc/execf.inc svneol=native#text/plain

View File

@ -0,0 +1,63 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2006 by Karoly Balogh
dos.library functions for AmigaOS 4.x/PowerPC
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.
**********************************************************************}
function Open(name: PChar; accessMode: longint): longint; syscall IDOS 76;
function dosClose(_file: longint): boolean; syscall IDOS 80;
function dosRead(_file: longint; buffer: Pointer; length: longint): longint; syscall IDOS 84;
function dosWrite(_file: longint; buffer: Pointer; length: longint): longint; syscall IDOS 88;
function dosInput: longint; syscall IDOS 92;
function dosOutput: longint; syscall IDOS 96;
function dosSeek(_file: longint;position: longint;offset: longint): longint; syscall IDOS 100;
function dosDeleteFile(name: PChar): boolean; syscall IDOS 104;
function dosRename(oldName: PChar;newName: PChar): boolean; syscall IDOS 108;
function Lock(name: PChar;_type: longint): longint; syscall IDOS 112;
procedure UnLock(lock: longint); syscall IDOS 116;
function Examine(lock: longint; fileInfoBlock: PFileInfoBlock): boolean; syscall IDOS 124;
function Info(lock: longint; parameterBlock: PInfoData): boolean; syscall IDOS 132;
function dosCreateDir(name: PChar): longint; syscall IDOS 136;
function CurrentDir(lock: longint): longint; syscall IDOS 140;
function IoErr: longint; syscall IDOS 144;
function SetProtection(name: PChar; protect: longword): boolean; syscall IDOS 180;
function DateStamp(date: PDateStamp): PDateStamp; syscall IDOS 184;
function SetFileDate(name: PChar; date: PDateStamp): boolean; syscall IDOS 356;
function NameFromLock(lock: longint; buffer: PChar; len: longint): boolean; syscall IDOS 360;
function NameFromFH(fh: longint; buffer: PChar; len: longint): longint; syscall IDOS 364;
function SetFileSize(fh: longint; pos: longint; mode: longint): longint; syscall IDOS 396;
function GetArgStr: PChar; syscall IDOS 456;
function SetArgStr(_string: PChar): PChar; syscall IDOS 460;
function GetCurrentDirName(buf: PChar; len: longint): boolean; syscall IDOS 476;
function GetProgramName(buf: PChar; len: longint): boolean; syscall IDOS 484;
function GetProgramDir: longint; syscall IDOS 500;
function SystemTagList(command: PChar; tags: PTagItem): longint; syscall IDOS 504;
function LockDosList(flags: longword): PDosList; syscall IDOS 544;
procedure UnLockDosList(flags: longword); syscall IDOS 548;
function NextDosEntry(dlist: PDosList; flags: longword): PDosList; syscall IDOS 568;
function MatchFirst(pat: PChar; anchor: PAnchorPath): longint; syscall IDOS 664;
function MatchNext(anchor: PAnchorPath): longint; syscall IDOS 668;
procedure MatchEnd(anchor: PAnchorPath); syscall IDOS 672;
function GetVar(name: PChar; buffer: PChar; size: longint; flags: longword): longint; syscall IDOS 720;

1738
rtl/amiga/m68k/execd.inc Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,537 @@
{$FATAL Not implemented for AmigaOS/m68k yet}
{
This file is part of the Free Pascal run time library.
Copyright (c) 2006 Karoly Balogh
exec functions (V40) for Amiga/PowerPC
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.
**********************************************************************}
function Supervisor(userFunction: Pointer location 'a5'): Cardinal;
SysCall AOS_ExecBase 030;
procedure InitCode(startClass: Cardinal location 'd0';
version : Cardinal location 'd1');
SysCall AOS_ExecBase 072;
procedure InitStruct(initTable: Pointer location 'a1';
memory : Pointer location 'a2';
size : Cardinal location 'd0');
SysCall AOS_ExecBase 078;
function MakeLibrary(funcInit : Pointer location 'a0';
structInit: Pointer location 'a1';
libInit : Pointer location 'a2';
dataSize : Cardinal location 'd0';
segList : Cardinal location 'd1'): PLibrary;
SysCall AOS_ExecBase 084;
procedure MakeFunctions(target : Pointer location 'a0';
functionArray: Pointer location 'a1';
funcDispBase : Pointer location 'a2');
SysCall AOS_ExecBase 090;
function FindResident(name: PChar location 'a1'): PResident;
SysCall AOS_ExecBase 096;
function InitResident(resident: PResident location 'a1';
segList : Cardinal location 'd1'): Pointer;
SysCall AOS_ExecBase 102;
procedure Alert(alertNum: Cardinal location 'd7');
SysCall AOS_ExecBase 108;
procedure Debug(flags: Cardinal location 'd0');
SysCall AOS_ExecBase 114;
procedure Disable;
SysCall AOS_ExecBase 120;
procedure Enable;
SysCall AOS_ExecBase 126;
procedure Forbid;
SysCall AOS_ExecBase 132;
procedure Permit;
SysCall AOS_ExecBase 138;
function SetSR(newSR: Cardinal location 'd0';
mask : Cardinal location 'd1'): Cardinal;
SysCall AOS_ExecBase 144;
function SuperState : Pointer;
SysCall AOS_ExecBase 150;
procedure UserState(sysStack: Pointer location 'd0');
SysCall AOS_ExecBase 156;
function SetIntVector(intNumber: LongInt location 'd0';
interrupt: PInterrupt location 'a1'): PInterrupt;
SysCall AOS_ExecBase 162;
procedure AddIntServer(intNumber: LongInt location 'd0';
interrupt: PInterrupt location 'a1');
SysCall AOS_ExecBase 168;
procedure RemIntServer(intNumber: LongInt location 'd0';
interrupt: PInterrupt location 'a1');
SysCall AOS_ExecBase 174;
procedure Cause(interrupt: PInterrupt location 'a1');
SysCall AOS_ExecBase 180;
function Allocate(freeList: PMemHeader location 'a0';
byteSize: Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 186;
procedure Deallocate(freeList : PMemHeader location 'a0';
memoryBlock: Pointer location 'a1';
byteSize : Cardinal location 'd0');
SysCall AOS_ExecBase 192;
{ * Name changed to avoid conflict with heap manager... * }
function execAllocMem(byteSize : Cardinal location 'd0';
requirements: Cardinal location 'd1'): Pointer;
SysCall AOS_ExecBase 198;
function AllocAbs(byteSize: Cardinal location 'd0';
location: Pointer location 'a1'): Pointer;
SysCall AOS_ExecBase 204;
{ * Name changed to avoid conflict with heap manager... * }
procedure execFreeMem(memoryBlock: Pointer location 'a1';
byteSize : Cardinal location 'd0');
SysCall AOS_ExecBase 210;
function AvailMem(requirements: Cardinal location 'd1'): Cardinal;
SysCall AOS_ExecBase 216;
function AllocEntry(entry: PMemList location 'a0'): PMemList;
SysCall AOS_ExecBase 222;
procedure FreeEntry(entry: PMemList location 'a0');
SysCall AOS_ExecBase 228;
{ * Name changed to avoid conflict with other System unit call... * }
procedure execInsert(list: PList location 'a0';
node: PNode location 'a1';
pred: PNode location 'a2');
SysCall AOS_ExecBase 234;
procedure AddHead(list: PList location 'a0';
node: PNode location 'a1');
SysCall AOS_ExecBase 240;
procedure AddTail(list: PList location 'a0';
node: PNode location 'a1');
SysCall AOS_ExecBase 246;
procedure Remove(node: PNode location 'a1');
SysCall AOS_ExecBase 252;
function RemHead(list: PList location 'a0'): PNode;
SysCall AOS_ExecBase 258;
function RemTail(list: PList location 'a0'): PNode;
SysCall AOS_ExecBase 264;
procedure Enqueue(list: PList location 'a0';
node: PNode location 'a1');
SysCall AOS_ExecBase 270;
function FindName(list: PList location 'a0';
name: PChar location 'a1'): PNode;
SysCall AOS_ExecBase 276;
function AddTask(task : PTask location 'a1';
initPC : Pointer location 'a2';
finalPC: Pointer location 'a3'): Pointer;
SysCall AOS_ExecBase 282;
procedure RemTask(task: PTask location 'a1');
SysCall AOS_ExecBase 288;
function FindTask(name: PChar location 'a1'): PTask;
SysCall AOS_ExecBase 294;
function SetTaskPri(task : PTask location 'a1';
priority: LongInt location 'd0'): ShortInt;
SysCall AOS_ExecBase 300;
function SetSignal(newSignals: Cardinal location 'd0';
signalSet : Cardinal location 'd1'): Cardinal;
SysCall AOS_ExecBase 306;
function SetExcept(newSignals: Cardinal location 'd0';
signalSet : Cardinal location 'd1'): Cardinal;
SysCall AOS_ExecBase 312;
function Wait(signalSet: Cardinal location 'd0'): Cardinal;
SysCall AOS_ExecBase 318;
procedure Signal(task : PTask location 'a1';
signalSet: Cardinal location 'd0');
SysCall AOS_ExecBase 324;
function AllocSignal(signalNum: LongInt location 'd0'): ShortInt;
SysCall AOS_ExecBase 330;
procedure FreeSignal(signalNum: LongInt location 'd0');
SysCall AOS_ExecBase 336;
function AllocTrap(trapNum: LongInt location 'd0'): LongInt;
SysCall AOS_ExecBase 342;
procedure FreeTrap(trapNum: LongInt location 'd0');
SysCall AOS_ExecBase 348;
procedure AddPort(port: PMsgPort location 'a1');
SysCall AOS_ExecBase 354;
procedure RemPort(port: PMsgPort location 'a1');
SysCall AOS_ExecBase 360;
procedure PutMsg(port : PMsgPort location 'a0';
message: PMessage location 'a1');
SysCall AOS_ExecBase 366;
function GetMsg(port: PMsgPort location 'a0'): PMessage;
SysCall AOS_ExecBase 372;
procedure ReplyMsg(message : PMessage location 'a1');
SysCall AOS_ExecBase 378;
function WaitPort(port: PMsgPort location 'a0'): PMessage;
SysCall AOS_ExecBase 384;
function FindPort(name: PChar location 'a1'): PMsgPort;
SysCall AOS_ExecBase 390;
procedure AddLibrary(libHandle: PLibrary location 'a1');
SysCall AOS_ExecBase 396;
procedure RemLibrary(libHandle: PLibrary location 'a1');
SysCall AOS_ExecBase 402;
function OldOpenLibrary(libName: PChar location 'a1'): PLibrary;
SysCall AOS_ExecBase 408;
procedure CloseLibrary(libHandle: PLibrary location 'a1');
SysCall AOS_ExecBase 414;
function SetFunction(libHandle : PLibrary location 'a1';
funcOffset : LongInt location 'a0';
newFunction: Pointer location 'd0'): Pointer;
SysCall AOS_ExecBase 420;
procedure SumLibrary(libHandle: PLibrary location 'a1');
SysCall AOS_ExecBase 426;
procedure AddDevice(device: PDevice location 'a1');
SysCall AOS_ExecBase 432;
procedure RemDevice(device: PDevice location 'a1');
SysCall AOS_ExecBase 438;
function OpenDevice(devName : PChar location 'a0';
numunit : Cardinal location 'd0';
ioRequest: pIORequest location 'a1';
flags : Cardinal location 'd1'): ShortInt;
SysCall AOS_ExecBase 444;
procedure CloseDevice(ioRequest: PIORequest location 'a1');
SysCall AOS_ExecBase 450;
function DoIO(ioRequest: PIORequest location 'a1'): ShortInt;
SysCall AOS_ExecBase 456;
procedure SendIO(ioRequest: PIORequest location 'a1');
SysCall AOS_ExecBase 462;
function CheckIO(ioRequest: PIORequest location 'a1'): PIORequest;
SysCall AOS_ExecBase 468;
function WaitIO(ioRequest: PIORequest location 'a1'): ShortInt;
SysCall AOS_ExecBase 474;
procedure AbortIO(ioRequest: PIORequest location 'a1');
SysCall AOS_ExecBase 480;
procedure AddResource(resource: Pointer location 'a1');
SysCall AOS_ExecBase 486;
procedure RemResource(resource: Pointer location 'a1');
SysCall AOS_ExecBase 492;
function OpenResource(resName: PChar location 'a1'): Pointer;
SysCall AOS_ExecBase 498;
procedure RawIOInit;
SysCall AOS_ExecBase 504;
function RawMayGetChar: Char;
SysCall AOS_ExecBase 510;
procedure RawPutChar(d0arg: Char location 'd0');
SysCall AOS_ExecBase 516;
function RawDoFmt(formatString: PChar location 'a0';
dataStream : Pointer location 'a1';
putChProc : Pointer location 'a2';
putChData : Pointer location 'a3'): Pointer;
SysCall AOS_ExecBase 522;
function GetCC: Cardinal;
SysCall AOS_ExecBase 528;
function TypeOfMem(address: Pointer location 'a1'): Cardinal;
SysCall AOS_ExecBase 534;
function Procure(sigSem: PSignalSemaphore location 'a0';
bidMsg: PSemaphoreMessage location 'a1'): Cardinal;
SysCall AOS_ExecBase 540;
procedure Vacate(sigSem: PSignalSemaphore location 'a0';
bidMsg: PSemaphoreMessage location 'a1');
SysCall AOS_ExecBase 546;
function OpenLibrary(libname: PChar location 'a1';
libver : Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 552;
procedure InitSemaphore(sigSem: PSignalSemaphore location 'a0');
SysCall AOS_ExecBase 558;
procedure ObtainSemaphore(sigSem: PSignalSemaphore location 'a0');
SysCall AOS_ExecBase 564;
procedure ReleaseSemaphore(sigSem: PSignalSemaphore location 'a0');
SysCall AOS_ExecBase 570;
function AttemptSemaphore(sigSem: PSignalSemaphore location 'a0'): Cardinal;
SysCall AOS_ExecBase 576;
procedure ObtainSemaphoreList(sigSem: PList location 'a0');
SysCall AOS_ExecBase 582;
procedure ReleaseSemaphoreList(sigSem: PList location 'a0');
SysCall AOS_ExecBase 588;
function FindSemaphore(sigSem: PChar location 'a1'): PSignalSemaphore;
SysCall AOS_ExecBase 594;
procedure AddSemaphore(sigSem: PSignalSemaphore location 'a1');
SysCall AOS_ExecBase 600;
procedure RemSemaphore(sigSem: PSignalSemaphore location 'a1');
SysCall AOS_ExecBase 606;
function SumKickData: Cardinal;
SysCall AOS_ExecBase 612;
procedure AddMemList(size : Cardinal location 'd0';
attributes: Cardinal location 'd1';
pri : LongInt location 'd2';
base : Pointer location 'a0';
name : PChar location 'a1');
SysCall AOS_ExecBase 618;
procedure CopyMem(source: Pointer location 'a0';
dest : Pointer location 'a1';
size : Cardinal location 'd0');
SysCall AOS_ExecBase 624;
procedure CopyMemQuick(source: Pointer location 'a0';
dest : Pointer location 'a1';
size : Cardinal location 'd0');
SysCall AOS_ExecBase 630;
procedure CacheClearU;
SysCall AOS_ExecBase 636;
procedure CacheClearE(address: Pointer location 'a0';
length : Cardinal location 'd0';
caches : Cardinal location 'd1');
SysCall AOS_ExecBase 642;
function CacheControl(cacheBits: Cardinal location 'd0';
cacheMask: Cardinal location 'd1'): Cardinal;
SysCall AOS_ExecBase 648;
function CreateIORequest(port: PMsgPort location 'a0';
size: Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 654;
procedure DeleteIORequest(iorequest: Pointer location 'a0');
SysCall AOS_ExecBase 660;
function CreateMsgPort: PMsgPort;
SysCall AOS_ExecBase 666;
procedure DeleteMsgPort(port: PMsgPort location 'a0');
SysCall AOS_ExecBase 672;
procedure ObtainSemaphoreShared(sigSem: PSignalSemaphore location 'a0');
SysCall AOS_ExecBase 678;
function AllocVec(byteSize : Cardinal location 'd0';
requirements: Cardinal location 'd1'): Pointer;
SysCall AOS_ExecBase 684;
procedure FreeVec(memoryBlock: Pointer location 'a1');
SysCall AOS_ExecBase 690;
function CreatePool(requirements: Cardinal location 'd0';
puddleSize : Cardinal location 'd1';
threshSize : Cardinal location 'd2'): Pointer;
SysCall AOS_ExecBase 696;
procedure DeletePool(poolHeader: Pointer location 'a0');
SysCall AOS_ExecBase 702;
function AllocPooled(poolHeader: Pointer location 'a0';
memSize : Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 708;
function FreePooled(poolHeader: Pointer location 'a0';
memory : Pointer location 'a1';
memSize : Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 714;
function AttemptSemaphoreShared(sigSem: pSignalSemaphore location 'a0'): Cardinal;
SysCall AOS_ExecBase 720;
procedure ColdReboot;
SysCall AOS_ExecBase 726;
procedure StackSwap(newStack: PStackSwapStruct location 'a0');
SysCall AOS_ExecBase 732;
function NewGetTaskAttrsA(Task : PTask location 'a0';
Data : Pointer location 'a1';
DataSize: Cardinal location 'd0';
TType : Cardinal location 'd1';
Tags : PTagItem location 'a2'): Cardinal;
SysCall AOS_ExecBase 738;
function NewSetTaskAttrsA(Task : PTask location 'a0';
Data : Pointer location 'a1';
DataSize: Cardinal location 'd0';
TType : Cardinal location 'd1';
Tags : PTagItem location 'a2'): Cardinal;
SysCall AOS_ExecBase 744;
function CachePreDMA(address : Pointer location 'a0';
var length: Cardinal location 'a1';
flags : Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 762;
procedure CachePostDMA(address : Pointer location 'a0';
var length: Cardinal location 'a1';
flags : Cardinal location 'd0');
SysCall AOS_ExecBase 768;
procedure AddMemHandler(memhand: PInterrupt location 'a1');
SysCall AOS_ExecBase 774;
procedure RemMemHandler(memhand: PInterrupt location 'a1');
SysCall AOS_ExecBase 780;
function ObtainQuickVector(interruptCode: Pointer location 'a0'): Cardinal;
SysCall AOS_ExecBase 786;
function NewSetFunction(libHandle : PLibrary location 'a0';
newfunction: Pointer location 'a1';
offset : LongInt location 'd0';
tags : PTagItem location 'a2'): Pointer;
SysCall AOS_ExecBase 792;
function NewCreateLibrary(tags: PTagItem location 'a0'): PLibrary;
SysCall AOS_ExecBase 798;
function TaggedOpenLibrary(d0arg: LongInt location 'd0'): Pointer;
SysCall AOS_ExecBase 810;
function ReadGayle: Cardinal;
SysCall AOS_ExecBase 816;
procedure CacheFlushDataArea(Address: Pointer location 'a0';
Size : Cardinal location 'd0');
SysCall AOS_ExecBase 828;
procedure CacheInvalidInstArea(Address: Pointer location 'a0';
Size : Cardinal location 'd0');
SysCall AOS_ExecBase 834;
procedure CacheInvalidDataArea(Address: Pointer location 'a0';
Size : Cardinal location 'd0');
SysCall AOS_ExecBase 840;
procedure CacheFlushDataInstArea(Address: Pointer location 'a0';
Size : Cardinal location 'd0');
SysCall AOS_ExecBase 846;
procedure CacheTrashCacheArea(Address: Pointer location 'a0';
Size : Cardinal location 'd0');
SysCall AOS_ExecBase 852;
function AllocTaskPooled(Size: Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 858;
procedure FreeTaskPooled(Address: Pointer location 'a1';
Size : Cardinal location 'd0');
SysCall AOS_ExecBase 864;
function AllocVecTaskPooled(Size: Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 870;
procedure FreeVecTaskPooled(Address: Pointer location 'a1');
SysCall AOS_ExecBase 876;
procedure FlushPool(poolHeader: Pointer location 'a0');
SysCall AOS_ExecBase 882;
procedure FlushTaskPool;
SysCall AOS_ExecBase 888;
function AllocVecPooled(poolHeader: Pointer location 'a0';
memSize : Cardinal location 'd0'): Pointer;
SysCall AOS_ExecBase 894;
function NewGetSystemAttrsA(Data : Pointer location 'a0';
DataSize: Cardinal location 'd0';
TType : Cardinal location 'd1';
Tags : PTagItem location 'a1'): Cardinal;
SysCall AOS_ExecBase 906;
function NewSetSystemAttrsA(Data : Pointer location 'a0';
DataSize: Cardinal location 'd0';
TType : Cardinal location 'd1';
Tags : PTagItem location 'a1'): Cardinal;
SysCall AOS_ExecBase 912;
function NewCreateTaskA(Tags: PTagItem location 'a0'): PTask;
SysCall AOS_ExecBase 918;
function FindExecNode(ttype: Cardinal location 'd0';
name : PChar location 'a0'): PNode;
SysCall AOS_ExecBase 960;
function AddExecNodeA(innode : Pointer location 'a0';
TagItems: PTagItem location 'a1'): Pointer;
SysCall AOS_ExecBase 966;
function AllocVecDMA(byteSize : Cardinal location 'd0';
requirements: Cardinal location 'd1'): Pointer;
SysCall AOS_ExecBase 972;
procedure FreeVecDMA(memoryBlock: Pointer location 'a1');
SysCall AOS_ExecBase 978;

153
rtl/amiga/m68k/utild1.inc Normal file
View File

@ -0,0 +1,153 @@
{
This file is part of the Free Pascal run time library.
utility definitions (V50) for MorphOS/PowerPC
Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.
Free Pascal conversion, first part
Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>
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.
**********************************************************************}
{ * utility.library date defines
*********************************************************************
* }
type
PClockData = ^TClockData;
TClockData = packed record
sec : Word;
min : Word;
hour : Word;
mday : Word;
month: Word;
year : Word;
wday : Word;
end;
{ * utility.library tagitem defines
*********************************************************************
* }
type
Tag = Cardinal;
type
PPTagItem = ^PTagItem;
PTagItem = ^TTagItem;
TTagItem = packed record
ti_Tag : Tag;
ti_Data: Cardinal;
end;
const
TAG_DONE = 0;
TAG_END = 0;
TAG_IGNORE = 1;
TAG_MORE = 2;
TAG_SKIP = 3;
const
TAG_USER = 1 Shl 31;
const
TAGFILTER_AND = 0;
TAGFILTER_NOT = 1;
const
MAP_REMOVE_NOT_FOUND = 0;
MAP_KEEP_NOT_FOUND = 1;
{ * utility.library namespace defines
*********************************************************************
* }
type
PNamedObject = ^TNamedObject;
TNamedObject = packed record
no_Object: Pointer;
end;
const
ANO_NameSpace = 4000;
ANO_UserSpace = 4001;
ANO_Priority = 4002;
ANO_Flags = 4003;
NSB_NODUPS = 0;
NSB_CASE = 1;
NSF_NODUPS = 1 Shl NSB_NODUPS;
NSF_CASE = 1 Shl NSB_CASE;
{ * utility.library pack attributes and macros
*********************************************************************
* }
const
PSTB_SIGNED = 31;
PSTB_UNPACK = 30;
PSTB_PACK = 29;
PSTB_EXISTS = 26;
PSTF_SIGNED = (1 Shl PSTB_SIGNED);
PSTF_UNPACK = (1 Shl PSTB_UNPACK);
PSTF_PACK = (1 Shl PSTB_PACK);
PSTF_EXISTS = (1 Shl PSTB_EXISTS);
const
PKCTRL_PACKUNPACK = $00000000;
PKCTRL_PACKONLY = $40000000;
PKCTRL_UNPACKONLY = $20000000;
PKCTRL_BYTE = $80000000;
PKCTRL_WORD = $88000000;
PKCTRL_LONG = $90000000;
PKCTRL_UBYTE = $00000000;
PKCTRL_UWORD = $08000000;
PKCTRL_ULONG = $10000000;
PKCTRL_BIT = $18000000;
PKCTRL_FLIPBIT = $98000000;
{$WARNING FIX ME!!! Some macros to convert}
{
PK_BITNUM1(flg) ((flg) == 0x01 ? 0 : (flg) == 0x02 ? 1 : (flg) == 0x04 ? 2 : (flg) == 0x08 ? 3 : (flg) == 0x10 ? 4 : (flg) == 0x20 ? 5 : (flg) == 0x40 ? 6 : 7)
PK_BITNUM2(flg) ((flg < 0x100 ? PK_BITNUM1(flg) : 8 + PK_BITNUM1(flg >> 8)))
PK_BITNUM(flg) ((flg < 0x10000 ? PK_BITNUM2(flg) : 16 + PK_BITNUM2(flg >> 16)))
PK_WORDOFFSET(flg) ((flg) < 0x100 ? 1 : 0)
PK_LONGOFFSET(flg) ((flg) < 0x100 ? 3 : (flg) < 0x10000 ? 2 : (flg) < 0x1000000 ? 1 : 0)
PK_CALCOFFSET(type,field) ((ULONG)(&((struct type *)0)->field))
PACK_STARTTABLE(tagbase) (tagbase)
PACK_NEWOFFSET(tagbase) (-1L),(tagbase)
PACK_ENDTABLE 0
PACK_ENTRY(tagbase,tag,type,field,control) (control | ((tag-tagbase) << 16L) | PK_CALCOFFSET(type,field))
PACK_BYTEBIT(tagbase,tag,type,field,control,flags) (control | ((tag-tagbase) << 16L) | PK_CALCOFFSET(type,field) | (PK_BITNUM(flags) << 13L))
PACK_WORDBIT(tagbase,tag,type,field,control,flags) (control | ((tag-tagbase) << 16L) | (PK_CALCOFFSET(type,field) + PK_WORDOFFSET(flags)) | ((PK_BITNUM(flags) & 7) << 13L))
PACK_LONGBIT(tagbase,tag,type,field,control,flags) (control | ((tag-tagbase) << 16L) | (PK_CALCOFFSET(type,field) + PK_LONGOFFSET(flags)) | ((PK_BITNUM(flags) & 7) << 13L))
}

53
rtl/amiga/m68k/utild2.inc Normal file
View File

@ -0,0 +1,53 @@
{
This file is part of the Free Pascal run time library.
utility definitions (V50) for MorphOS/PowerPC
Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.
Free Pascal conversion, second part
Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>
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.
**********************************************************************}
{ * utility.library include
*********************************************************************
* }
const
UtilityName = 'utility.library';
type
PUtilityBase = ^TUtilityName;
TUtilityName = packed record
ub_LibNode : TLibrary;
ub_Language: Byte;
ub_Reserved: Byte;
end;
{ * utility.library hook defines
*********************************************************************
* }
type
PHook = ^THook;
THook = packed record
h_MinNode : TMinNode;
h_Entry : Cardinal;
h_SubEntry: Cardinal;
h_Data : Pointer;
end;

19
rtl/amiga/m68k/utilf.inc Normal file
View File

@ -0,0 +1,19 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2006 by Karoly Balogh
utility.library functions for AmigaOS 4.x/PowerPC
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.
**********************************************************************}
procedure Amiga2Date(date_amiga: longword; cd: PClockData); syscall IUtility 172;
function CheckDate(date: PClockData): longword; syscall IUtility 176;
function Date2Amiga(date: PClockData): longword; syscall IUtility 180;