ソースを参照

amicommon: Amiga/m68k RTL now uses the common code

git-svn-id: trunk@28509 -
Károly Balogh 11 年 前
コミット
26d53cfa55

+ 0 - 9
.gitattributes

@@ -7822,9 +7822,7 @@ rtl/amicommon/sysosh.inc svneol=native#text/plain
 rtl/amicommon/sysutils.pp svneol=native#text/plain
 rtl/amiga/Makefile svneol=native#text/plain
 rtl/amiga/Makefile.fpc svneol=native#text/plain
-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
@@ -7840,14 +7838,7 @@ rtl/amiga/powerpc/prt0.as svneol=native#text/plain
 rtl/amiga/powerpc/utild1.inc svneol=native#text/plain
 rtl/amiga/powerpc/utild2.inc svneol=native#text/plain
 rtl/amiga/powerpc/utilf.inc svneol=native#text/plain
-rtl/amiga/rtldefs.inc svneol=native#text/plain
-rtl/amiga/sysdir.inc svneol=native#text/plain
-rtl/amiga/sysfile.inc svneol=native#text/plain
-rtl/amiga/sysheap.inc svneol=native#text/plain
-rtl/amiga/sysos.inc svneol=native#text/plain
-rtl/amiga/sysosh.inc svneol=native#text/plain
 rtl/amiga/system.pp svneol=native#text/plain
-rtl/amiga/sysutils.pp svneol=native#text/plain
 rtl/amiga/timerd.inc svneol=native#text/plain
 rtl/amiga/tthread.inc svneol=native#text/plain
 rtl/android/Makefile svneol=native#text/plain

+ 2 - 2
rtl/amicommon/sysutils.pp

@@ -153,7 +153,7 @@ begin
 
   if (Handle <> 0) then begin
     new(tmpFIB);
-    if ExamineFH(Pointer(Handle),tmpFIB) then begin
+    if ExamineFH(BPTR(Handle),tmpFIB) then begin
       tmpDateTime:=AmigaFileDateToDateTime(tmpFIB^.fib_Date,validFile);
     end;
     dispose(tmpFIB);
@@ -173,7 +173,7 @@ var
 begin
   result:=0;
   if (Handle <> 0) then begin
-    if NameFromFH(Pointer(Handle), @tmpName, 256) then begin
+    if NameFromFH(BPTR(Handle), @tmpName, 256) then begin
       tmpDateStamp:=DateTimeToAmigaDateStamp(FileDateToDateTime(Age));
       if not SetFileDate(@tmpName,@tmpDateStamp) then begin
         IoErr(); // dump the error code for now (TODO)

+ 178 - 155
rtl/amiga/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-04-01 rev 27428]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-08-17 rev 28432]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku aix
 LIMIT83fs = go32v2 os2 emx watcom msdos
@@ -333,13 +333,13 @@ RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
+AMIINC=$(RTL)/amicommon
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 ifdef RELEASE
 override FPCOPT+=-Ur
 endif
 OBJPASDIR=$(RTL)/objpas
-GRAPHDIR=$(INC)/graph
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
 endif
@@ -409,6 +409,9 @@ endif
 ifeq ($(FULL_TARGET),i386-android)
 override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
 endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
+endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas macpas iso7185 strings dos heaptrc lineinfo ctypes sysutils fgl classes math typinfo charset cpall getopts types rtlconsts sysconst
 endif
@@ -634,6 +637,9 @@ endif
 ifeq ($(FULL_TARGET),i386-android)
 override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
 endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
+endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override TARGET_IMPLICITUNITS+=cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258 cp437 cp646 cp850 cp856 cp866 cp874 cp8859_1 cp8859_5 cp8859_2 cp852
 endif
@@ -859,6 +865,9 @@ endif
 ifeq ($(FULL_TARGET),i386-android)
 override TARGET_LOADERS+=prt0
 endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_LOADERS+=prt0
+endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override TARGET_LOADERS+=prt0
 endif
@@ -1084,6 +1093,9 @@ endif
 ifeq ($(FULL_TARGET),i386-android)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
+endif
 ifeq ($(FULL_TARGET),m68k-linux)
 override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
@@ -1242,454 +1254,460 @@ override TARGET_RSTS+=math rtlconsts typinfo classes sysconst
 endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-android)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc-aix)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),arm-android)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),powerpc64-aix)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),mips-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),mipsel-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),mipsel-android)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),jvm-java)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),jvm-android)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i8086-msdos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i386-android)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc-aix)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),arm-android)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),powerpc64-aix)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),mips-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),mipsel-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),mipsel-android)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),jvm-java)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),jvm-android)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifeq ($(FULL_TARGET),i8086-msdos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 endif
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
@@ -1978,6 +1996,11 @@ EXEEXT=
 SHAREDLIBEXT=.library
 SHORTSUFFIX=amg
 endif
+ifeq ($(OS_TARGET),aros)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=aros
+endif
 ifeq ($(OS_TARGET),morphos)
 EXEEXT=
 SHAREDLIBEXT=.library
@@ -2898,10 +2921,10 @@ dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
 	       $(SYSTEMUNIT)$(PPUEXT)
 sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
 		    objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+	$(COMPILER) -Fi$(OBJPASDIR)/sysutils $(AMIINC)/sysutils.pp
 classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
 		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
-	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+	$(COMPILER) -Fi$(OBJPASDIR)/classes $(AMIINC)/classes.pp
 typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
 	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
 math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)

+ 5 - 5
rtl/amiga/Makefile.fpc

@@ -34,8 +34,8 @@ target=amiga
 cpu=powerpc
 
 [compiler]
-includedir=$(INC) $(PROCINC) $(CPU_TARGET)
-sourcedir=$(INC) $(PROCINC) $(CPU_TARGET) $(COMMON)
+includedir=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC)
+sourcedir=$(INC) $(PROCINC) $(CPU_TARGET) $(AMIINC) $(COMMON)
 
 
 [prerules]
@@ -43,6 +43,7 @@ RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
+AMIINC=$(RTL)/amicommon
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 
@@ -55,7 +56,6 @@ endif
 
 # Paths
 OBJPASDIR=$(RTL)/objpas
-GRAPHDIR=$(INC)/graph
 
 [rules]
 .NOTPARALLEL:
@@ -126,11 +126,11 @@ dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
 
 sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
                     objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+        $(COMPILER) -Fi$(OBJPASDIR)/sysutils $(AMIINC)/sysutils.pp
 
 classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
                    sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT) fgl$(PPUEXT)
-        $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+        $(COMPILER) -Fi$(OBJPASDIR)/classes $(AMIINC)/classes.pp
 
 typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
         $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)

+ 0 - 50
rtl/amiga/classes.pp

@@ -1,50 +0,0 @@
-{
-    This file is part of the Free Component Library (FCL)
-    Copyright (c) 1999-2002 by the Free Pascal development team
-
-    Classes unit for AmigaOS
-
-    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.
-
- **********************************************************************}
-
-{$mode objfpc}
-
-{ determine the type of the resource/form file }
-{$define Win16Res}
-
-unit Classes;
-
-interface
-
-uses
-  sysutils,
-  rtlconsts,
-  types,
-{$ifdef FPC_TESTGENERICS}
-  fgl,
-{$endif}
-  typinfo;
-
-{$i classesh.inc}
-
-
-implementation
-
-
-{ OS - independent class implementations are in /inc directory. }
-{$i classes.inc}
-
-
-initialization
-  CommonInit;
-
-finalization
-  CommonCleanup;
-
-end.

+ 0 - 1016
rtl/amiga/dos.pp

@@ -1,1016 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2004 by Karoly Balogh for Genesi S.a.r.l.
-
-    Heavily based on the Commodore Amiga/m68k RTL by Nils Sjoholm and
-    Carl Eric Codere
-
-    MorphOS port was done on a free Pegasos II/G4 machine
-    provided by 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.
-
- **********************************************************************}
-{$INLINE ON}
-
-unit Dos;
-
-{--------------------------------------------------------------------}
-{ LEFT TO DO:                                                        }
-{--------------------------------------------------------------------}
-{ o DiskFree / Disksize don't work as expected                       }
-{ o Implement EnvCount,EnvStr                                        }
-{ o FindFirst should only work with correct attributes               }
-{--------------------------------------------------------------------}
-
-
-interface
-
-type
-  SearchRec = Packed Record
-    { watch out this is correctly aligned for all processors }
-    { don't modify.                                          }
-    { Replacement for Fill }
-{0} AnchorPtr : Pointer;    { Pointer to the Anchorpath structure }
-{4} Fill: Array[1..15] of Byte; {future use}
-    {End of replacement for fill}
-    Attr : BYTE;        {attribute of found file}
-    Time : LongInt;     {last modify date of found file}
-    Size : LongInt;     {file size of found file}
-    Name : String[255]; {name of found file}
-  End;
-
-{$I dosh.inc}
-
-implementation
-
-{$DEFINE HAS_GETMSCOUNT}
-{$DEFINE HAS_GETCBREAK}
-{$DEFINE HAS_SETCBREAK}
-
-{$DEFINE FPC_FEXPAND_VOLUMES} (* Full paths begin with drive specification *)
-{$DEFINE FPC_FEXPAND_DRIVESEP_IS_ROOT}
-{$DEFINE FPC_FEXPAND_NO_DEFAULT_PATHS}
-{$I dos.inc}
-
-
-{ * include MorphOS specific functions & definitions * }
-
-{$include execd.inc}
-{$include execf.inc}
-{$include timerd.inc}
-{$include doslibd.inc}
-{$include doslibf.inc}
-{$include utilf.inc}
-
-const
-  DaysPerMonth :  Array[1..12] of ShortInt =
-         (031,028,031,030,031,030,031,031,030,031,030,031);
-  DaysPerYear  :  Array[1..12] of Integer  =
-         (031,059,090,120,151,181,212,243,273,304,334,365);
-  DaysPerLeapYear :    Array[1..12] of Integer  =
-         (031,060,091,121,152,182,213,244,274,305,335,366);
-  SecsPerYear      : LongInt  = 31536000;
-  SecsPerLeapYear  : LongInt  = 31622400;
-  SecsPerDay       : LongInt  = 86400;
-  SecsPerHour      : Integer  = 3600;
-  SecsPerMinute    : ShortInt = 60;
-  TICKSPERSECOND    = 50;
-
-
-{******************************************************************************
-                           --- Internal routines ---
-******************************************************************************}
-
-{ * PathConv is implemented in the system unit! * }
-function PathConv(path: string): string; external name 'PATHCONV';
-
-function dosLock(const name: String;
-                 accessmode: Longint) : LongInt;
-var
- buffer: array[0..255] of Char;
-begin
-  move(name[1],buffer,length(name));
-  buffer[length(name)]:=#0;
-  dosLock:=Lock(buffer,accessmode);
-end;
-
-function BADDR(bval: LongInt): Pointer; Inline;
-begin
-  BADDR:=Pointer(bval Shl 2);
-end;
-
-function BSTR2STRING(s : LongInt): PChar; Inline;
-begin
-  BSTR2STRING:=PChar(BADDR(s))+1;
-end;
-
-function IsLeapYear(Source : Word) : Boolean;
-begin
-  if (source Mod 400 = 0) or ((source Mod 4 = 0) and (source Mod 100 <> 0)) then
-    IsLeapYear:=True
-  else
-    IsLeapYear:=False;
-end;
-
-procedure Amiga2DateStamp(Date : LongInt; var TotalDays,Minutes,Ticks: longint);
-{ Converts a value in seconds past 1978 to a value in AMIGA DateStamp format }
-{ Taken from SWAG and modified to work with the Amiga format - CEC           }
-var
-  LocalDate : LongInt;
-  Done : Boolean;
-  TotDays : Integer;
-  Y: Word;
-  H: Word;
-  Min: Word;
-  S : Word;
-begin
-  Y   := 1978; H := 0; Min := 0; S := 0;
-  TotalDays := 0;
-  Minutes := 0;
-  Ticks := 0;
-  LocalDate := Date;
-  Done := false;
-  while not Done do
-  begin
-    if LocalDate >= SecsPerYear then
-    begin
-      Inc(Y,1);
-      Dec(LocalDate,SecsPerYear);
-      Inc(TotalDays,DaysPerYear[12]);
-    end else
-      Done := true;
-    if (IsLeapYear(Y+1)) and (LocalDate >= SecsPerLeapYear) and
-       (Not Done) then
-    begin
-      Inc(Y,1);
-      Dec(LocalDate,SecsPerLeapYear);
-      Inc(TotalDays,DaysPerLeapYear[12]);
-    end;
-  end; { END WHILE }
-
-  TotDays := LocalDate Div SecsPerDay;
-  { Total number of days }
-  TotalDays := TotalDays + TotDays;
-  Dec(LocalDate,TotDays*SecsPerDay);
-  { Absolute hours since start of day }
-  H := LocalDate Div SecsPerHour;
-  { Convert to minutes }
-  Minutes := H*60;
-  Dec(LocalDate,(H * SecsPerHour));
-  { Find the remaining minutes to add }
-  Min := LocalDate Div SecsPerMinute;
-  Dec(LocalDate,(Min * SecsPerMinute));
-  Minutes:=Minutes+Min;
-  { Find the number of seconds and convert to ticks }
-  S := LocalDate;
-  Ticks:=TICKSPERSECOND*S;
-end;
-
-
-function dosSetProtection(const name: string; mask:longint): Boolean;
-var
-  buffer : array[0..255] of Char;
-begin
-  move(name[1],buffer,length(name));
-  buffer[length(name)]:=#0;
-  dosSetProtection:=SetProtection(buffer,mask);
-end;
-
-function dosSetFileDate(name: string; p : PDateStamp): Boolean;
-var
-  buffer : array[0..255] of Char;
-begin
-  move(name[1],buffer,length(name));
-  buffer[length(name)]:=#0;
-  dosSetFileDate:=SetFileDate(buffer,p);
-end;
-
-
-{******************************************************************************
-                        --- Info / Date / Time ---
-******************************************************************************}
-
-function DosVersion: Word;
-var p: PLibrary;
-begin
-  p:=PLibrary(AOS_DOSBase);
-  DosVersion:= p^.lib_Version or (p^.lib_Revision shl 8);
-end;
-
-{ Here are a lot of stuff just for setdate and settime }
-
-var
-  TimerBase : Pointer;
-
-
-procedure NewList (list: pList);
-begin
-  with list^ do begin
-    lh_Head     := pNode(@lh_Tail);
-    lh_Tail     := NIL;
-    lh_TailPred := pNode(@lh_Head)
-  end;
-end;
-
-function CreateExtIO (port: pMsgPort; size: Longint): pIORequest;
-var
-   IOReq: pIORequest;
-begin
-    IOReq := NIL;
-    if port <> NIL then
-    begin
-        IOReq := execAllocMem(size, MEMF_CLEAR);
-        if IOReq <> NIL then
-        begin
-            IOReq^.io_Message.mn_Node.ln_Type   := 7;
-            IOReq^.io_Message.mn_Length    := size;
-            IOReq^.io_Message.mn_ReplyPort := port;
-        end;
-    end;
-    CreateExtIO := IOReq;
-end;
-
-procedure DeleteExtIO (ioReq: pIORequest);
-begin
-    if ioReq <> NIL then
-    begin
-        ioReq^.io_Message.mn_Node.ln_Type := $FF;
-        ioReq^.io_Message.mn_ReplyPort    := pMsgPort(-1);
-        ioReq^.io_Device                  := pDevice(-1);
-        execFreeMem(ioReq, ioReq^.io_Message.mn_Length);
-    end
-end;
-
-function Createport(name : PChar; pri : longint): pMsgPort;
-var
-   sigbit : ShortInt;
-   port    : pMsgPort;
-begin
-   sigbit := AllocSignal(-1);
-   if sigbit = -1 then CreatePort := nil;
-   port := execAllocMem(sizeof(tMsgPort),MEMF_CLEAR);
-   if port = nil then begin
-      FreeSignal(sigbit);
-      CreatePort := nil;
-   end;
-   with port^ do begin
-       if assigned(name) then
-       mp_Node.ln_Name := name
-       else mp_Node.ln_Name := nil;
-       mp_Node.ln_Pri := pri;
-       mp_Node.ln_Type := 4;
-       mp_Flags := 0;
-       mp_SigBit := sigbit;
-       mp_SigTask := FindTask(nil);
-   end;
-   if assigned(name) then AddPort(port)
-   else NewList(addr(port^.mp_MsgList));
-   CreatePort := port;
-end;
-
-procedure DeletePort (port: pMsgPort);
-begin
-    if port <> NIL then
-    begin
-        if port^.mp_Node.ln_Name <> NIL then
-            RemPort(port);
-
-        port^.mp_Node.ln_Type     := $FF;
-        port^.mp_MsgList.lh_Head  := pNode(-1);
-        FreeSignal(port^.mp_SigBit);
-        execFreeMem(port, sizeof(tMsgPort));
-    end;
-end;
-
-
-function Create_Timer(theUnit : longint) : pTimeRequest;
-var
-    Error : longint;
-    TimerPort : pMsgPort;
-    TimeReq : pTimeRequest;
-begin
-    TimerPort := CreatePort(Nil, 0);
-    if TimerPort = Nil then
-  Create_Timer := Nil;
-    TimeReq := pTimeRequest(CreateExtIO(TimerPort,sizeof(tTimeRequest)));
-    if TimeReq = Nil then begin
-  DeletePort(TimerPort);
-  Create_Timer := Nil;
-    end;
-    Error := OpenDevice(TIMERNAME, theUnit, pIORequest(TimeReq), 0);
-    if Error <> 0 then begin
-  DeleteExtIO(pIORequest(TimeReq));
-  DeletePort(TimerPort);
-  Create_Timer := Nil;
-    end;
-    TimerBase := pointer(TimeReq^.tr_Node.io_Device);
-    Create_Timer := pTimeRequest(TimeReq);
-end;
-
-Procedure Delete_Timer(WhichTimer : pTimeRequest);
-var
-    WhichPort : pMsgPort;
-begin
-
-    WhichPort := WhichTimer^.tr_Node.io_Message.mn_ReplyPort;
-    if assigned(WhichTimer) then begin
-        CloseDevice(pIORequest(WhichTimer));
-        DeleteExtIO(pIORequest(WhichTimer));
-    end;
-    if assigned(WhichPort) then
-        DeletePort(WhichPort);
-end;
-
-function set_new_time(secs, micro : longint): longint;
-var
-    tr : ptimerequest;
-begin
-    tr := create_timer(UNIT_MICROHZ);
-
-    { non zero return says error }
-    if tr = nil then set_new_time := -1;
-
-    tr^.tr_time.tv_secs := secs;
-    tr^.tr_time.tv_micro := micro;
-    tr^.tr_node.io_Command := TR_SETSYSTIME;
-    DoIO(pIORequest(tr));
-
-    delete_timer(tr);
-    set_new_time := 0;
-end;
-
-function get_sys_time(tv : ptimeval): longint;
-var
-    tr : ptimerequest;
-begin
-    tr := create_timer( UNIT_MICROHZ );
-
-    { non zero return says error }
-    if tr = nil then get_sys_time := -1;
-
-    tr^.tr_node.io_Command := TR_GETSYSTIME;
-    DoIO(pIORequest(tr));
-
-   { structure assignment }
-   tv^ := tr^.tr_time;
-
-   delete_timer(tr);
-   get_sys_time := 0;
-end;
-
-procedure GetDate(Var Year, Month, MDay, WDay: Word);
-var
-  cd    : pClockData;
-  oldtime : ttimeval;
-begin
-  new(cd);
-  get_sys_time(@oldtime);
-  Amiga2Date(oldtime.tv_secs,cd);
-  Year  := cd^.year;
-  Month := cd^.month;
-  MDay  := cd^.mday;
-  WDay  := cd^.wday;
-  dispose(cd);
-end;
-
-procedure SetDate(Year, Month, Day: Word);
-var
-  cd : pClockData;
-  oldtime : ttimeval;
-begin
-  new(cd);
-  get_sys_time(@oldtime);
-  Amiga2Date(oldtime.tv_secs,cd);
-  cd^.year := Year;
-  cd^.month := Month;
-  cd^.mday := Day;
-  set_new_time(Date2Amiga(cd),0);
-  dispose(cd);
-end;
-
-procedure GetTime(Var Hour, Minute, Second, Sec100: Word);
-var
-  cd      : pClockData;
-  oldtime : ttimeval;
-begin
-  new(cd);
-  get_sys_time(@oldtime);
-  Amiga2Date(oldtime.tv_secs,cd);
-  Hour   := cd^.hour;
-  Minute := cd^.min;
-  Second := cd^.sec;
-  Sec100 := oldtime.tv_micro div 10000;
-  dispose(cd);
-end;
-
-
-Procedure SetTime(Hour, Minute, Second, Sec100: Word);
-var
-  cd : pClockData;
-  oldtime : ttimeval;
-begin
-  new(cd);
-  get_sys_time(@oldtime);
-  Amiga2Date(oldtime.tv_secs,cd);
-  cd^.hour := Hour;
-  cd^.min := Minute;
-  cd^.sec := Second;
-  set_new_time(Date2Amiga(cd), Sec100 * 10000);
-  dispose(cd);
-end;
-
-
-function GetMsCount: int64;
-var
-  TV: TTimeVal;
-begin
-  Get_Sys_Time (@TV);
-  GetMsCount := int64 (TV.TV_Secs) * 1000 + TV.TV_Micro div 1000;
-end;
-
-{******************************************************************************
-                               --- Exec ---
-******************************************************************************}
-
-
-procedure Exec(const Path: PathStr; const ComLine: ComStr);
-var
-  tmpPath: array[0..515] of char;
-  result : longint;
-  tmpLock: longint;
-begin
-  DosError:= 0;
-  LastDosExitCode:=0;
-  tmpPath:=PathConv(Path)+#0+ComLine+#0; // hacky... :)
-
-  { Here we must first check if the command we wish to execute }
-  { actually exists, because this is NOT handled by the        }
-  { _SystemTagList call (program will abort!!)                 }
-
-  { Try to open with shared lock                               }
-  tmpLock:=Lock(tmpPath,SHARED_LOCK);
-  if tmpLock<>0 then
-    begin
-      { File exists - therefore unlock it }
-      Unlock(tmpLock);
-      tmpPath[length(Path)]:=' '; // hacky... replaces first #0 from above, to get the whole string. :)
-      result:=SystemTagList(tmpPath,nil);
-      { on return of -1 the shell could not be executed }
-      { probably because there was not enough memory    }
-      if result = -1 then
-        DosError:=8
-      else
-        LastDosExitCode:=word(result);
-    end
-  else
-    DosError:=3;
-end;
-
-
-procedure GetCBreak(Var BreakValue: Boolean);
-begin
-  breakvalue := system.BreakOn;
-end;
-
-procedure SetCBreak(BreakValue: Boolean);
-begin
-  system.Breakon := BreakValue;
-end;
-
-
-{******************************************************************************
-                               --- Disk ---
-******************************************************************************}
-
-{ How to solve the problem with this:       }
-{  We could walk through the device list    }
-{  at startup to determine possible devices }
-
-const
-
-  not_to_use_devs : array[0..12] of string =(
-                   'DF0:',
-                   'DF1:',
-                   'DF2:',
-                   'DF3:',
-                   'PED:',
-                   'PRJ:',
-                   'PIPE:',
-                   'RAM:',
-                   'CON:',
-                   'RAW:',
-                   'SER:',
-                   'PAR:',
-                   'PRT:');
-
-var
-   deviceids : array[1..20] of byte;
-   devicenames : array[1..20] of string[20];
-   numberofdevices : Byte;
-
-Function DiskFree(Drive: Byte): int64;
-Var
-  MyLock      : LongInt;
-  Inf         : pInfoData;
-  Free        : Longint;
-  myproc      : pProcess;
-  OldWinPtr   : Pointer;
-Begin
-  Free := -1;
-  { Here we stop systemrequesters to appear }
-  myproc := pProcess(FindTask(nil));
-  OldWinPtr := myproc^.pr_WindowPtr;
-  myproc^.pr_WindowPtr := Pointer(-1);
-  { End of systemrequesterstop }
-  New(Inf);
-  MyLock := dosLock(devicenames[deviceids[Drive]],SHARED_LOCK);
-  If MyLock <> 0 then begin
-     if Info(MyLock,Inf) then begin
-        Free := (Inf^.id_NumBlocks * Inf^.id_BytesPerBlock) -
-                (Inf^.id_NumBlocksUsed * Inf^.id_BytesPerBlock);
-     end;
-     Unlock(MyLock);
-  end;
-  Dispose(Inf);
-  { Restore systemrequesters }
-  myproc^.pr_WindowPtr := OldWinPtr;
-  diskfree := Free;
-end;
-
-
-
-Function DiskSize(Drive: Byte): int64;
-Var
-  MyLock      : LongInt;
-  Inf         : pInfoData;
-  Size        : Longint;
-  myproc      : pProcess;
-  OldWinPtr   : Pointer;
-Begin
-  Size := -1;
-  { Here we stop systemrequesters to appear }
-  myproc := pProcess(FindTask(nil));
-  OldWinPtr := myproc^.pr_WindowPtr;
-  myproc^.pr_WindowPtr := Pointer(-1);
-  { End of systemrequesterstop }
-  New(Inf);
-  MyLock := dosLock(devicenames[deviceids[Drive]],SHARED_LOCK);
-  If MyLock <> 0 then begin
-     if Info(MyLock,Inf) then begin
-        Size := (Inf^.id_NumBlocks * Inf^.id_BytesPerBlock);
-     end;
-     Unlock(MyLock);
-  end;
-  Dispose(Inf);
-  { Restore systemrequesters }
-  myproc^.pr_WindowPtr := OldWinPtr;
-  disksize := Size;
-end;
-
-
-procedure FindFirst(const Path: PathStr; Attr: Word; Var f: SearchRec);
-var
- tmpStr: array[0..255] of Char;
- Anchor: PAnchorPath;
- Result: LongInt;
-begin
-  tmpStr:=PathConv(path)+#0;
-  DosError:=0;
-
-  new(Anchor);
-  FillChar(Anchor^,sizeof(TAnchorPath),#0);
-
-  Result:=MatchFirst(@tmpStr,Anchor);
-  f.AnchorPtr:=Anchor;
-  if Result = ERROR_NO_MORE_ENTRIES then
-    DosError:=18
-  else
-    if Result<>0 then DosError:=3;
-
-  if DosError=0 then begin
-    {-------------------------------------------------------------------}
-    { Here we fill up the SearchRec attribute, but we also do check     }
-    { something else, if the it does not match the mask we are looking  }
-    { for we should go to the next file or directory.                   }
-    {-------------------------------------------------------------------}
-    with Anchor^.ap_Info do begin
-      f.Time := fib_Date.ds_Days * (24 * 60 * 60) +
-                fib_Date.ds_Minute * 60 +
-                fib_Date.ds_Tick div 50;
-      f.attr := 0;
-      {*------------------------------------*}
-      {* Determine if is a file or a folder *}
-      {*------------------------------------*}
-      if fib_DirEntryType>0 then f.attr:=f.attr OR DIRECTORY;
-
-      {*------------------------------------*}
-      {* Determine if Read only             *}
-      {*  Readonly if R flag on and W flag  *}
-      {*   off.                             *}
-      {* Should we check also that EXEC     *}
-      {* is zero? for read only?            *}
-      {*------------------------------------*}
-      if ((fib_Protection and FIBF_READ) <> 0) and
-         ((fib_Protection and FIBF_WRITE) = 0) then f.attr:=f.attr or READONLY;
-      f.Name := strpas(fib_FileName);
-      f.Size := fib_Size;
-    end; { end with }
-  end;
-end;
-
-
-procedure FindNext(Var f: SearchRec);
-var
- Result: longint;
- Anchor: PAnchorPath;
-begin
-  DosError:=0;
-  Result:=MatchNext(f.AnchorPtr);
-  if Result = ERROR_NO_MORE_ENTRIES then
-    DosError:=18
-  else
-    if Result <> 0 then DosError:=3;
-
-  if DosError=0 then begin
-    { Fill up the Searchrec information     }
-    { and also check if the files are with  }
-    { the correct attributes                }
-    Anchor:=pAnchorPath(f.AnchorPtr);
-    with Anchor^.ap_Info do begin
-      f.Time := fib_Date.ds_Days * (24 * 60 * 60) +
-                fib_Date.ds_Minute * 60 +
-                fib_Date.ds_Tick div 50;
-      f.attr := 0;
-      {*------------------------------------*}
-      {* Determine if is a file or a folder *}
-      {*------------------------------------*}
-      if fib_DirEntryType > 0 then f.attr:=f.attr OR DIRECTORY;
-
-      {*------------------------------------*}
-      {* Determine if Read only             *}
-      {*  Readonly if R flag on and W flag  *}
-      {*   off.                             *}
-      {* Should we check also that EXEC     *}
-      {* is zero? for read only?            *}
-      {*------------------------------------*}
-      if ((fib_Protection and FIBF_READ) <> 0) and
-         ((fib_Protection and FIBF_WRITE) = 0) then f.attr:=f.attr or READONLY;
-      f.Name := strpas(fib_FileName);
-      f.Size := fib_Size;
-    end; { end with }
-  end;
-end;
-
-procedure FindClose(Var f: SearchRec);
-begin
-  MatchEnd(f.AnchorPtr);
-  if assigned(f.AnchorPtr) then
-    Dispose(PAnchorPath(f.AnchorPtr));
-end;
-
-
-{******************************************************************************
-                               --- File ---
-******************************************************************************}
-
-function FSearch(path: PathStr; dirlist: String) : PathStr;
-var
-  p1     : LongInt;
-  tmpSR  : SearchRec;
-  newdir : PathStr;
-begin
-  { No wildcards allowed in these things }
-  if (pos('?',path)<>0) or (pos('*',path)<>0) or (path='') then
-    FSearch:=''
-  else begin
-    repeat
-      p1:=pos(';',dirlist);
-      if p1<>0 then begin
-        newdir:=Copy(dirlist,1,p1-1);
-        Delete(dirlist,1,p1);
-      end else begin
-        newdir:=dirlist;
-        dirlist:='';
-      end;
-      if (newdir<>'') and (not (newdir[length(newdir)] in ['/',':'])) then
-        newdir:=newdir+'/';
-      FindFirst(newdir+path,anyfile,tmpSR);
-      if doserror=0 then
-        newdir:=newdir+path
-      else
-        newdir:='';
-    until (dirlist='') or (newdir<>'');
-    FSearch:=newdir;
-  end;
-end;
-
-
-Procedure getftime (var f; var time : longint);
-{
-    This function returns a file's date and time as the number of
-    seconds after January 1, 1978 that the file was created.
-}
-var
-    FInfo : pFileInfoBlock;
-    FTime : Longint;
-    FLock : Longint;
-    Str   : String;
-    i     : integer;
-begin
-    DosError:=0;
-    FTime := 0;
-{$ifdef FPC_ANSI_TEXTFILEREC}
-    Str := strpas(filerec(f).Name);
-{$else}
-    Str := ToSingleByteFileSystemEncodedFileName(filerec(f).Name);
-{$endif}
-    DoDirSeparators(Str);
-    FLock := dosLock(Str, SHARED_LOCK);
-    IF FLock <> 0 then begin
-        New(FInfo);
-        if Examine(FLock, FInfo) then begin
-             with FInfo^.fib_Date do
-             FTime := ds_Days * (24 * 60 * 60) +
-             ds_Minute * 60 +
-             ds_Tick div 50;
-        end else begin
-             FTime := 0;
-        end;
-        Unlock(FLock);
-        Dispose(FInfo);
-    end
-    else
-     DosError:=6;
-    time := FTime;
-end;
-
-
-  Procedure setftime(var f; time : longint);
-   var
-    DateStamp: pDateStamp;
-    Str: String;
-    i: Integer;
-    Days, Minutes,Ticks: longint;
-    FLock: longint;
-  Begin
-    new(DateStamp);
-{$ifdef FPC_ANSI_TEXTFILEREC}
-    Str := strpas(filerec(f).Name);
-{$else}
-    Str := ToSingleByteFileSystemEncodedFileName(filerec(f).Name);
-{$endif}
-    DoDirSeparators(str);
-    { Check first of all, if file exists }
-    FLock := dosLock(Str, SHARED_LOCK);
-    IF FLock <> 0 then
-      begin
-        Unlock(FLock);
-        Amiga2DateStamp(time,Days,Minutes,ticks);
-        DateStamp^.ds_Days:=Days;
-        DateStamp^.ds_Minute:=Minutes;
-        DateStamp^.ds_Tick:=Ticks;
-        if dosSetFileDate(Str,DateStamp) then
-            DosError:=0
-        else
-            DosError:=6;
-      end
-    else
-      DosError:=2;
-    if assigned(DateStamp) then Dispose(DateStamp);
-  End;
-
-procedure getfattr(var f; var attr : word);
-var
-    info : pFileInfoBlock;
-    MyLock : Longint;
-    flags: word;
-    Str: String;
-    i: integer;
-begin
-    DosError:=0;
-    flags:=0;
-    New(info);
-{$ifdef FPC_ANSI_TEXTFILEREC}
-    Str := strpas(filerec(f).Name);
-{$else}
-    Str := ToSingleByteFileSystemEncodedFileName(filerec(f).Name);
-{$endif}
-    DoDirSeparators(str);
-    { open with shared lock to check if file exists }
-    MyLock:=dosLock(Str,SHARED_LOCK);
-    if MyLock <> 0 then
-      Begin
-        Examine(MyLock,info);
-        {*------------------------------------*}
-        {* Determine if is a file or a folder *}
-        {*------------------------------------*}
-        if info^.fib_DirEntryType > 0 then
-             flags:=flags OR DIRECTORY;
-
-        {*------------------------------------*}
-        {* Determine if Read only             *}
-        {*  Readonly if R flag on and W flag  *}
-        {*   off.                             *}
-        {* Should we check also that EXEC     *}
-        {* is zero? for read only?            *}
-        {*------------------------------------*}
-        if   ((info^.fib_Protection and FIBF_READ) <> 0)
-         AND ((info^.fib_Protection and FIBF_WRITE) = 0)
-         then
-          flags:=flags OR ReadOnly;
-        Unlock(mylock);
-      end
-    else
-      DosError:=3;
-    attr:=flags;
-    Dispose(info);
-  End;
-
-
-procedure setfattr(var f; attr : word);
-var
-  flags: longint;
-  tmpLock : longint;
-{$ifndef FPC_ANSI_TEXTFILEREC}
-  r : rawbytestring;
-{$endif not FPC_ANSI_TEXTFILEREC}
-  p : pchar;
-begin
-{$ifdef FPC_ANSI_TEXTFILEREC}
-  p := @filerec(f).Name;
-{$else}
-  r := ToSingleByteFileSystemEncodedFileName(filerec(f).Name);
-  p := pchar(r);
-{$endif}
-  DosError:=0;
-  flags:=FIBF_WRITE;
-
-  { By default files are read-write }
-  if attr and ReadOnly <> 0 then flags:=FIBF_READ; { Clear the Fibf_write flags }
-
-  { no need for path conversion here, because file opening already }
-  { converts the path (KB) }
-
-  { create a shared lock on the file }
-  tmpLock:=Lock(p,SHARED_LOCK);
-  if tmpLock <> 0 then begin
-    Unlock(tmpLock);
-    if not SetProtection(p,flags) then DosError:=5;
-  end else
-    DosError:=3;
-end;
-
-
-
-{******************************************************************************
-                             --- Environment ---
-******************************************************************************}
-
-var
-  strofpaths : string;
-
-function getpathstring: string;
-var
-   f : text;
-   s : string;
-   found : boolean;
-   temp : string[255];
-   tmpBat: string[31];
-   tmpList: string[31];
-begin
-   found := true;
-   temp := '';
-
-   tmpBat:='T:'+HexStr(FindTask(nil));
-   tmpList:=tmpBat+'_path.tmp';
-   tmpBat:=tmpBat+'_path.sh';
-
-   assign(f,tmpBat);
-   rewrite(f);
-   writeln(f,'path >'+tmpList);
-   close(f);
-   exec('C:Execute',tmpBat);
-   erase(f);
-
-   assign(f,tmpList);
-   reset(f);
-   { skip the first line, garbage }
-   if not eof(f) then readln(f,s);
-   while not eof(f) do begin
-      readln(f,s);
-      if found then begin
-         temp := s;
-         found := false;
-      end else begin;
-         if (length(s) + length(temp)) < 255 then
-            temp := temp + ';' + s;
-      end;
-   end;
-   close(f);
-   erase(f);
-
-   getpathstring := temp;
-end;
-
-
-function EnvCount: Longint;
-{ HOW TO GET THIS VALUE:                                }
-{   Each time this function is called, we look at the   }
-{   local variables in the Process structure (2.0+)     }
-{   And we also read all files in the ENV: directory    }
-begin
-  EnvCount := 0;
-end;
-
-
-function EnvStr(Index: LongInt): String;
-begin
-  EnvStr:='';
-end;
-
-
-function GetEnv(envvar : String): String;
-var
-   bufarr : array[0..255] of char;
-   strbuffer : array[0..255] of char;
-   temp : Longint;
-begin
-   GetEnv := '';
-   if UpCase(envvar) = 'PATH' then begin
-       if StrOfpaths = '' then StrOfPaths := GetPathString;
-       GetEnv := StrOfPaths;
-   end else begin
-      if (Pos(DriveSeparator,envvar) <> 0) or
-         (Pos(DirectorySeparator,envvar) <> 0) then exit;
-      move(envvar[1],strbuffer,length(envvar));
-      strbuffer[length(envvar)] := #0;
-      temp := GetVar(strbuffer,bufarr,255,$100);
-      if temp <> -1 then
-         GetEnv := StrPas(bufarr);
-   end;
-end;
-
-
-procedure AddDevice(str : String);
-begin
-    inc(numberofdevices);
-    deviceids[numberofdevices] := numberofdevices;
-    devicenames[numberofdevices] := str;
-end;
-
-function MakeDeviceName(str : pchar): string;
-var
-   temp : string[20];
-begin
-   temp := strpas(str);
-   temp := temp + ':';
-   MakeDeviceName := temp;
-end;
-
-function IsInDeviceList(str : string): boolean;
-var
-   i : byte;
-   theresult : boolean;
-begin
-   theresult := false;
-   for i := low(not_to_use_devs) to high(not_to_use_devs) do
-   begin
-       if str = not_to_use_devs[i] then begin
-          theresult := true;
-          break;
-       end;
-   end;
-   IsInDeviceList := theresult;
-end;
-
-procedure ReadInDevices;
-var
-   dl : pDosList;
-   temp : pchar;
-   str  : string[20];
-begin
-   dl := LockDosList(LDF_DEVICES or LDF_READ );
-   repeat
-      dl := NextDosEntry(dl,LDF_DEVICES );
-      if dl <> nil then begin
-         temp := BSTR2STRING(dl^.dol_Name);
-         str := MakeDeviceName(temp);
-         if not IsInDeviceList(str) then
-              AddDevice(str);
-      end;
-   until dl = nil;
-   UnLockDosList(LDF_DEVICES or LDF_READ );
-end;
-
-begin
-  DosError:=0;
-  numberofdevices := 0;
-  StrOfPaths := '';
-  ReadInDevices;
-end.

+ 9 - 12
rtl/amiga/m68k/doslibf.inc

@@ -1,11 +1,8 @@
 {
     This file is part of the Free Pascal run time library.
+    Copyright (c) 2014 Free Pascal development team
 
-    dos functions (V50) for MorphOS/PowerPC
-    Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.
-
-    Free Pascal conversion
-    Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>
+    dos functions (V40) for Amiga/68k
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -51,7 +48,7 @@ function dosDeleteFile(fname: PChar location 'd1'): Boolean;
 SysCall AOS_DOSBase 72;
 
 function dosRename(oldName: PChar location 'd1';
-                   newName: PChar location 'd2'): Boolean;
+                   newName: PChar location 'd2'): LongInt;
 SysCall AOS_DOSBase 78;
 
 function Lock(lname     : PChar   location 'd1';
@@ -65,7 +62,7 @@ function DupLock(lock: LongInt location 'd1'): LongInt;
 SysCall AOS_DOSBase 096;
 
 function Examine(lock         : LongInt        location 'd1';
-                 fileInfoBlock: PFileInfoBlock location 'd2'): Boolean;
+                 fileInfoBlock: PFileInfoBlock location 'd2'): LongInt;
 SysCall AOS_DOSBase 102;
 
 function ExNext(lock         : LongInt        location 'd1';
@@ -73,7 +70,7 @@ function ExNext(lock         : LongInt        location 'd1';
 SysCall AOS_DOSBase 108;
 
 function Info(lock          : LongInt   location 'd1';
-              parameterBlock: PInfoData location 'd2'): Boolean;
+              parameterBlock: PInfoData location 'd2'): LongInt;
 SysCall AOS_DOSBase 114;
 
 function dosCreateDir(dname: PChar location 'd1'): LongInt;
@@ -108,7 +105,7 @@ function SetComment(name   : PChar location 'd1';
 SysCall AOS_DOSBase 180;
 
 function SetProtection(name: PChar   location 'd1';
-                       mask: LongInt location 'd2'): Boolean;
+                       mask: LongInt location 'd2'): LongInt;
 SysCall AOS_DOSBase 186;
 
 function DateStamp(date: PDateStamp location 'd1'): PDateStamp;
@@ -285,7 +282,7 @@ SysCall AOS_DOSBase 378;
 function ParentOfFH(fh: LongInt location 'd1'): LongInt;
 SysCall AOS_DOSBase 384;
 
-function ExamineFH(fh : LongInt        location 'd1';
+function ExamineFH(fh : BPTR           location 'd1';
                    fib: PFileInfoBlock location 'd2'): Boolean;
 SysCall AOS_DOSBase 390;
 
@@ -298,9 +295,9 @@ function NameFromLock(lock  : LongInt location 'd1';
                       len   : LongInt location 'd3'): Boolean;
 SysCall AOS_DOSBase 402;
 
-function NameFromFH(fh    : LongInt location 'd1';
+function NameFromFH(fh    : BPTR    location 'd1';
                     buffer: PChar   location 'd2';
-                    len   : LongInt location 'd3'): LongInt;
+                    len   : LongInt location 'd3'): Boolean;
 SysCall AOS_DOSBase 408;
 
 function SplitName(name     : PChar    location 'd1';

+ 0 - 24
rtl/amiga/rtldefs.inc

@@ -1,24 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2012 by Free Pascal development team
-
-    This file contains platform-specific defines that are used in
-    multiple RTL units.
-
-    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.
-
- **********************************************************************}
-
-{ the single byte OS APIs always use UTF-8 }
-{ define FPCRTL_FILESYSTEM_UTF8}
-
-{ The OS supports a single byte file system operations API that we use }
-{$define FPCRTL_FILESYSTEM_SINGLE_BYTE_API}
-
-{ The OS supports a two byte file system operations API that we use }
-{ define FPCRTL_FILESYSTEM_TWO_BYTE_API}

+ 0 - 99
rtl/amiga/sysdir.inc

@@ -1,99 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2014 by Free Pascal development team
-
-    Low level directory functions
-
-    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.
-
- **********************************************************************}
-
-
-{*****************************************************************************
-                           Directory Handling
-*****************************************************************************}
-procedure do_mkdir(const s : rawbytestring);
-var
-  tmpStr : rawbytestring;
-  tmpLock: LongInt;
-begin
-  checkCTRLC;
-  tmpStr:=PathConv(s);
-  tmpLock:=dosCreateDir(pchar(tmpStr));
-  if tmpLock=0 then begin
-    dosError2InOut(IoErr);
-    exit;
-  end;
-  UnLock(tmpLock);
-end;
-
-procedure do_rmdir(const s : rawbytestring);
-var
-  tmpStr : rawbytestring;
-begin
-  checkCTRLC;
-  if (s='.') then
-    begin
-      InOutRes:=16;
-      exit;
-    end;
-  tmpStr:=PathConv(s);
-  if not dosDeleteFile(pchar(tmpStr)) then
-    dosError2InOut(IoErr);
-end;
-
-procedure do_ChDir(const s: rawbytestring);
-var
-  tmpStr : rawbytestring;
-  tmpLock: LongInt;
-  FIB    : PFileInfoBlock;
-begin
-  checkCTRLC;
-  tmpStr:=PathConv(s);
-  tmpLock:=0;
-
-  { Changing the directory is a pretty complicated affair }
-  {   1) Obtain a lock on the directory                   }
-  {   2) CurrentDir the lock                              }
-  tmpLock:=Lock(pchar(tmpStr),SHARED_LOCK);
-  if tmpLock=0 then begin
-    dosError2InOut(IoErr);
-    exit;
-  end;
-
-  FIB:=nil;
-  new(FIB);
-
-  if (Examine(tmpLock,FIB)=True) and (FIB^.fib_DirEntryType>0) then begin
-    tmpLock:=CurrentDir(tmpLock);
-    if AOS_OrigDir=0 then begin
-      AOS_OrigDir:=tmpLock;
-      tmpLock:=0;
-    end;
-  end else begin
-    dosError2InOut(ERROR_DIR_NOT_FOUND);
-  end;
-
-  if tmpLock<>0 then Unlock(tmpLock);
-  if assigned(FIB) then dispose(FIB);
-end;
-
-procedure do_GetDir (DriveNr: byte; var Dir: RawByteString);
-var tmpbuf: array[0..255] of char;
-begin
-  checkCTRLC;
-  Dir:='';
-
-  if not GetCurrentDirName(tmpbuf,256) then
-    dosError2InOut(IoErr)
-  else
-    begin
-      Dir:=tmpbuf;
-      SetCodePage(Dir,DefaultFileSystemCodePage,false);
-    end;
-end;

+ 0 - 389
rtl/amiga/sysfile.inc

@@ -1,389 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2005 by Free Pascal development team
-
-    Low level file functions
-
-    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.
-
- **********************************************************************}
-
-{ Enable this for file handling debug }
-{DEFINE MOSFPC_FILEDEBUG}
-
-{*****************************************************************************
-                  MorphOS File-handling Support Functions
-*****************************************************************************}
-type
-  { AmigaOS does not automatically close opened files on exit back to  }
-  { the operating system, therefore as a precuation we close all files }
-  { manually on exit.                                                  }
-  PFileList = ^TFileList;
-  TFileList = record { no packed, must be correctly aligned }
-    handle   : LongInt;      { Handle to file     }
-    next     : PFileList;    { Next file in list  }
-    buffered : boolean;      { used buffered I/O? }
-  end;
-
-var
-  AOS_fileList: PFileList; public name 'AOS_FILELIST'; { List pointer to opened files }
-
-{ Function to be called at program shutdown, to close all opened files }
-procedure CloseList(l: PFileList);
-var
-  tmpNext   : PFileList;
-  tmpHandle : LongInt;
-begin
-  if l=nil then exit;
-
-  { First, close all tracked files }
-  tmpNext:=l^.next;
-  while tmpNext<>nil do begin
-    tmpHandle:=tmpNext^.handle;
-    if (tmpHandle<>StdInputHandle) and (tmpHandle<>StdOutputHandle)
-       and (tmpHandle<>StdErrorHandle) then begin
-      dosClose(tmpHandle);
-    end;
-    tmpNext:=tmpNext^.next;
-  end;
-
-  { Next, erase the linked list }
-  while l<>nil do begin
-    tmpNext:=l;
-    l:=l^.next;
-    dispose(tmpNext);
-  end;
-end;
-
-{ Function to be called to add a file to the opened file list }
-procedure AddToList(var l: PFileList; h: LongInt); alias: 'ADDTOLIST'; [public];
-var
-  p     : PFileList;
-  inList: Boolean;
-begin
-  inList:=False;
-  if l<>nil then begin
-    { if there is a valid filelist, search for the value }
-    { in the list to avoid double additions }
-    p:=l;
-    while (p^.next<>nil) and (not inList) do
-      if p^.next^.handle=h then inList:=True
-                           else p:=p^.next;
-    p:=nil;
-  end else begin
-    { if the list is not yet allocated, allocate it. }
-    New(l);
-    l^.next:=nil;
-  end;
-
-  if not inList then begin
-    New(p);
-    p^.handle:=h;
-    p^.buffered:=False;
-    p^.next:=l^.next;
-    l^.next:=p;
-  end
-{$IFDEF MOSFPC_FILEDEBUG}
-  else 
-    RawDoFmt('FPC_FILE_DEBUG: Error! Trying add filehandle a filehandle twice: $%lx !'+#10,@h,pointer(1),nil);
-{$ENDIF}
-  ;
-end;
-
-{ Function to be called to remove a file from the list }
-function RemoveFromList(var l: PFileList; h: LongInt): boolean; alias: 'REMOVEFROMLIST'; [public];
-var
-  p      : PFileList;
-  inList : Boolean;
-  tmpList: PFileList;
-begin
-  inList:=False;
-  if l=nil then begin
-    RemoveFromList:=inList;
-    exit;
-  end;
-
-  p:=l;
-  while (p^.next<>nil) and (not inList) do
-    if p^.next^.handle=h then inList:=True
-                         else p:=p^.next;
-  
-  if inList then begin
-    tmpList:=p^.next^.next;
-    dispose(p^.next);
-    p^.next:=tmpList;
-  end
-{$IFDEF MOSFPC_FILEDEBUG}
-  else 
-    RawDoFmt('FPC_FILE_DEBUG: Error! Trying to remove not existing filehandle: $%lx !'+#10,@h,pointer(1),nil);
-{$ENDIF}
-  ;
-
-  RemoveFromList:=inList;
-end;
-
-{ Function to check if file is in the list }
-function CheckInList(var l: PFileList; h: LongInt): pointer; alias: 'CHECKINLIST'; [public];
-var
-  p      : PFileList;
-  inList : Pointer;
-  
-begin
-  inList:=nil;
-  if l=nil then begin
-    CheckInList:=inList;
-    exit;
-  end;
-
-  p:=l;
-  while (p^.next<>nil) and (inList=nil) do
-    if p^.next^.handle=h then inList:=p^.next
-                         else p:=p^.next;
-
-{$IFDEF MOSFPC_FILEDEBUG}
-  if inList=nil then
-    RawDoFmt('FPC_FILE_DEBUG: Warning! Check for not existing filehandle: $%lx !'+#10,@h,pointer(1),nil);
-{$ENDIF}
-
-  CheckInList:=inList;
-end;
-
-
-{****************************************************************************
-                        Low level File Routines
-               All these functions can set InOutRes on errors
-****************************************************************************}
-
-{ close a file from the handle value }
-procedure do_close(handle : longint);
-begin
-  if RemoveFromList(AOS_fileList,handle) then begin
-    { Do _NOT_ check CTRL_C on Close, because it will conflict
-      with System_Exit! }
-    if not dosClose(handle) then
-      dosError2InOut(IoErr);
-  end;
-end;
-
-procedure do_erase(p : pchar; pchangeable: boolean);
-var
-  tmpStr: array[0..255] of Char;
-begin
-  tmpStr:=PathConv(strpas(p))+#0;
-  checkCTRLC;
-  if not dosDeleteFile(@tmpStr) then
-    dosError2InOut(IoErr);
-end;
-
-procedure do_rename(p1,p2 : pchar; p1changeable, p2changeable: boolean);
-{ quite stack-effective code, huh? :) damn path conversions... (KB) }
-var
-  tmpStr1: array[0..255] of Char;
-  tmpStr2: array[0..255] of Char;
-begin
-  tmpStr1:=PathConv(strpas(p1))+#0;
-  tmpStr2:=PathConv(strpas(p2))+#0;
-  checkCTRLC;
-  if not dosRename(@tmpStr1,@tmpStr2) then
-    dosError2InOut(IoErr);
-end;
-
-function do_write(h: longint; addr: pointer; len: longint) : longint;
-var dosResult: LongInt;
-begin
-  checkCTRLC;
-  do_write:=0;
-  if (len<=0) or (h<=0) then exit;
-
-{$IFDEF MOSFPC_FILEDEBUG}
-  if not ((h=StdOutputHandle) or (h=StdInputHandle) or
-     (h=StdErrorHandle)) then CheckInList(AOS_fileList,h);
-{$ENDIF}
-
-  dosResult:=dosWrite(h,addr,len);
-  if dosResult<0 then begin
-    dosError2InOut(IoErr);
-  end else begin
-    do_write:=dosResult;
-  end;
-end;
-
-function do_read(h: longint; addr: pointer; len: longint) : longint;
-var dosResult: LongInt;
-begin
-  checkCTRLC;
-  do_read:=0;
-  if (len<=0) or (h<=0) then exit;
-
-{$IFDEF MOSFPC_FILEDEBUG}
-  if not ((h=StdOutputHandle) or (h=StdInputHandle) or
-     (h=StdErrorHandle)) then CheckInList(AOS_fileList,h);
-{$ENDIF}
-
-  dosResult:=dosRead(h,addr,len);
-  if dosResult<0 then begin
-    dosError2InOut(IoErr);
-  end else begin
-    do_read:=dosResult;
-  end
-end;
-
-function do_filepos(handle: longint) : longint;
-var dosResult: LongInt;
-begin
-  checkCTRLC;
-  do_filepos:=-1;
-  if CheckInList(AOS_fileList,handle)<>nil then begin
-
-    { Seeking zero from OFFSET_CURRENT to find out where we are }    
-    dosResult:=dosSeek(handle,0,OFFSET_CURRENT);
-    if dosResult<0 then begin
-      dosError2InOut(IoErr);
-    end else begin
-      do_filepos:=dosResult;
-    end;
-  end;
-end;
-
-procedure do_seek(handle, pos: longint);
-begin
-  checkCTRLC;
-  if CheckInList(AOS_fileList,handle)<>nil then begin
-
-    { Seeking from OFFSET_BEGINNING }  
-    if dosSeek(handle,pos,OFFSET_BEGINNING)<0 then
-      dosError2InOut(IoErr);
-  end;
-end;
-
-function do_seekend(handle: longint):longint;
-var dosResult: LongInt;
-begin
-  checkCTRLC;
-  do_seekend:=-1;
-  if CheckInList(AOS_fileList,handle)<>nil then begin
-
-    { Seeking to OFFSET_END }
-    dosResult:=dosSeek(handle,0,OFFSET_END);
-    if dosResult<0 then begin
-      dosError2InOut(IoErr);
-    end else begin
-      do_seekend:=dosResult;
-    end;
-  end;
-end;
-
-function do_filesize(handle : longint) : longint;
-var currfilepos: longint;
-begin
-  checkCTRLC;
-  do_filesize:=-1;
-  if CheckInList(AOS_fileList,handle)<>nil then begin
-
-    currfilepos:=do_filepos(handle);
-    { We have to do this twice, because seek returns the OLD position }
-    do_filesize:=do_seekend(handle);
-    do_filesize:=do_seekend(handle);
-    do_seek(handle,currfilepos);
-
-  end;
-end;
-
-{ truncate at a given position }
-procedure do_truncate(handle, pos: longint);
-begin
-  checkCTRLC;
-  if CheckInList(AOS_fileList,handle)<>nil then begin
-
-    { Seeking from OFFSET_BEGINNING }
-    if SetFileSize(handle,pos,OFFSET_BEGINNING)<0 then
-      dosError2InOut(IoErr);
-  end;
-end;
-
-procedure do_open(var f;p:pchar;flags:longint; pchangeable: boolean);
-{
-  filerec and textrec have both handle and mode as the first items so
-  they could use the same routine for opening/creating.
-  when (flags and $10)   the file will be append
-  when (flags and $100)  the file will be truncate/rewritten
-  when (flags and $1000) there is no check for close (needed for textfiles)
-}
-var
-  handle   : LongInt;
-  openflags: LongInt;
-  tmpStr   : array[0..255] of Char;
-begin
-  tmpStr:=PathConv(strpas(p))+#0;
-
-  { close first if opened }
-  if ((flags and $10000)=0) then begin
-    case filerec(f).mode of
-      fminput,fmoutput,fminout : Do_Close(filerec(f).handle);
-      fmclosed : ;
-      else begin
-        inoutres:=102; {not assigned}
-        exit;
-      end;
-    end;
-  end;
-
-  { reset file handle }
-  filerec(f).handle:=UnusedHandle;
-
-  { convert filemode to filerec modes }
-  { READ/WRITE on existing file }
-  { RESET/APPEND                }
-  openflags:=MODE_OLDFILE;
-  case (flags and 3) of
-    0 : filerec(f).mode:=fminput;
-    1 : filerec(f).mode:=fmoutput;
-    2 : filerec(f).mode:=fminout;
-  end;
-
-  { rewrite (create a new file) }
-  if (flags and $1000)<>0 then openflags:=MODE_NEWFILE;
-
-  { empty name is special }
-  if p[0]=#0 then begin
-    case filerec(f).mode of
-      fminput :
-        filerec(f).handle:=StdInputHandle;
-      fmappend,
-      fmoutput : begin
-        filerec(f).handle:=StdOutputHandle;
-        filerec(f).mode:=fmoutput; {fool fmappend}
-      end;
-    end;
-    exit;
-  end;
-
-  handle:=Open(@tmpStr,openflags);
-  if handle=0 then begin
-    dosError2InOut(IoErr);
-  end else begin
-    AddToList(AOS_fileList,handle);
-    filerec(f).handle:=handle;
-  end;
-
-  { append mode }
-  if ((Flags and $100)<>0) and
-      (FileRec(F).Handle<>UnusedHandle) then begin
-    do_seekend(filerec(f).handle);
-    filerec(f).mode:=fmoutput; {fool fmappend}
-  end;
-end;
-
-function do_isdevice(handle: longint): boolean;
-begin
-  if (handle=StdOutputHandle) or (handle=StdInputHandle) or
-     (handle=StdErrorHandle) then
-    do_isdevice:=True
-  else
-    do_isdevice:=False;
-end;

+ 0 - 51
rtl/amiga/sysheap.inc

@@ -1,51 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2005 by Free Pascal development team
-
-    Low level memory functions
-
-    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.
-
- **********************************************************************}
-
-{ Enable this for memory allocation debugging }
-{DEFINE MOSFPC_MEMDEBUG}
-
-{*****************************************************************************
-      OS Memory allocation / deallocation
- ****************************************************************************}
-
-function SysOSAlloc(size: ptruint): pointer;
-{$IFDEF MOSFPC_MEMDEBUG}
-var values: array[0..2] of dword;
-{$ENDIF}
-begin
-  result:=AllocPooled(AOS_heapPool,size);
-{$IFDEF MOSFPC_MEMDEBUG}
-  values[0]:=dword(result);
-  values[1]:=dword(size);
-  values[2]:=DWord(Sptr-StackBottom);
-  RawDoFmt('FPC_MEM_DEBUG: $%lx:=SysOSAlloc(%lu), free stack: %ld bytes'+#10,@values,pointer(1),nil);
-{$ENDIF}
-end;
-
-{$define HAS_SYSOSFREE}
-
-procedure SysOSFree(p: pointer; size: ptruint);
-{$IFDEF MOSFPC_MEMDEBUG}
-var values: array[0..2] of dword;
-{$ENDIF}
-begin
-  FreePooled(AOS_heapPool,p,size);
-{$IFDEF MOSFPC_MEMDEBUG}
-  values[0]:=dword(p);
-  values[1]:=dword(size);
-  values[2]:=DWord(Sptr-StackBottom);
-  RawDoFmt('FPC_MEM_DEBUG: SysOSFree($%lx,%lu), free stack: %ld bytes'+#10,@values,pointer(1),nil);
-{$ENDIF}
-end;

+ 0 - 178
rtl/amiga/sysos.inc

@@ -1,178 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2001 by Free Pascal development team
-
-    This file implements all the base types and limits required
-    for a minimal POSIX compliant subset required to port the compiler
-    to a new OS.
-
-    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.
-
- **********************************************************************}
-
-{*****************************************************************************
-                           AmigaOS structures
-*****************************************************************************}
-
-{$include execd.inc}
-{$include timerd.inc}
-{$include doslibd.inc}
-
-
-{*****************************************************************************
-                           AmigaOS functions
-*****************************************************************************}
-
-{ exec.library functions }
-
-{$include execf.inc}
-{$include doslibf.inc}
-{$IFDEF AMIGAOS4}
-  // Required to allow opening of utility library interface...
-  {$include utilf.inc}
-{$ENDIF}
-
-
-{*****************************************************************************
-                    System Dependent Structures/Consts
-*****************************************************************************}
-
-
-const
-  CTRL_C           = 20;      { Error code on CTRL-C press }
-
-{ Used for CTRL_C checking in I/O calls }
-procedure checkCTRLC;
-begin
-  if BreakOn then begin
-    if (SetSignal(0,0) And SIGBREAKF_CTRL_C)<>0 then begin
-      { Clear CTRL-C signal }
-      SetSignal(0,SIGBREAKF_CTRL_C);
-      Halt(CTRL_C);
-    end;
-  end;
-end;
-
-
-{ Converts a AmigaOS dos.library error code to a TP compatible error code }
-{ Based on 1.0.x Amiga RTL }
-procedure dosError2InOut(errno: LongInt);
-begin
-  case errno of
-    ERROR_BAD_NUMBER,
-    ERROR_ACTION_NOT_KNOWN,
-    ERROR_NOT_IMPLEMENTED : InOutRes := 1;
-
-    ERROR_OBJECT_NOT_FOUND : InOutRes := 2;
-    ERROR_DIR_NOT_FOUND :  InOutRes := 3;
-    ERROR_DISK_WRITE_PROTECTED : InOutRes := 150;
-    ERROR_OBJECT_WRONG_TYPE : InOutRes := 151;
-
-    ERROR_OBJECT_EXISTS,
-    ERROR_DELETE_PROTECTED,
-    ERROR_WRITE_PROTECTED,
-    ERROR_READ_PROTECTED,
-    ERROR_OBJECT_IN_USE,
-    ERROR_DIRECTORY_NOT_EMPTY : InOutRes := 5;
-
-    ERROR_NO_MORE_ENTRIES : InOutRes := 18;
-    ERROR_RENAME_ACROSS_DEVICES : InOutRes := 17;
-    ERROR_DISK_FULL : InOutRes := 101;
-    ERROR_INVALID_RESIDENT_LIBRARY : InoutRes := 153;
-    ERROR_BAD_HUNK : InOutRes := 153;
-    ERROR_NOT_A_DOS_DISK : InOutRes := 157;
-
-    ERROR_NO_DISK,
-    ERROR_DISK_NOT_VALIDATED,
-    ERROR_DEVICE_NOT_MOUNTED : InOutRes := 152;
-
-    ERROR_SEEK_ERROR : InOutRes := 156;
-
-    ERROR_LOCK_COLLISION,
-    ERROR_LOCK_TIMEOUT,
-    ERROR_UNLOCK_ERROR,
-    ERROR_INVALID_LOCK,
-    ERROR_INVALID_COMPONENT_NAME,
-    ERROR_BAD_STREAM_NAME,
-    ERROR_FILE_NOT_OBJECT : InOutRes := 6;
-   else
-    InOutRes := errno;
-  end;
-end;
-
-
-{ Converts an Unix-like path to Amiga-like path }
-function PathConv(path: string): string; alias: 'PATHCONV'; [public];
-var tmppos: longint;
-begin
-  { check for short paths }
-  if length(path)<=2 then begin
-    if (path='.') or (path='./') then path:='' else
-    if path='..' then path:='/' else
-    if path='*' then path:='#?';
-  end else begin
-    { convert parent directories }
-    tmppos:=pos('../',path);
-    while tmppos<>0 do begin
-      { delete .. to have / as parent dir sign }
-      delete(path,tmppos,2);
-      tmppos:=pos('../',path);
-    end;
-    { convert current directories }
-    tmppos:=pos('./',path);
-    while tmppos<>0 do begin
-      { delete ./ since we doesn't need to sign current directory }
-      delete(path,tmppos,2);
-      tmppos:=pos('./',path);
-    end;
-    { convert wildstar to #? }
-    tmppos:=pos('*',path);
-    while tmppos<>0 do begin
-      delete(path,tmppos,1);
-      insert('#?',path,tmppos);
-      tmppos:=pos('*',path);
-    end;
-  end;
-  PathConv:=path;
-end;
-
-{ Converts an Unix-like path to Amiga-like path }
-function PathConv(const path: rawbytestring): rawbytestring; alias: 'PATHCONVRBS'; [public];
-var tmppos: longint;
-begin
-  { check for short paths }
-  if length(path)<=2 then begin
-    if (path='.') or (path='./') then PathConv:='' else
-    if path='..' then PathConv:='/' else
-    if path='*' then PathConv:='#?'
-    else PathConv:=path;
-  end else begin
-    { convert parent directories }
-    PathConv:=path;
-    tmppos:=pos('../',PathConv);
-    while tmppos<>0 do begin
-      { delete .. to have / as parent dir sign }
-      delete(PathConv,tmppos,2);
-      tmppos:=pos('../',PathConv);
-    end;
-    { convert current directories }
-    tmppos:=pos('./',PathConv);
-    while tmppos<>0 do begin
-      { delete ./ since we doesn't need to sign current directory }
-      delete(PathConv,tmppos,2);
-      tmppos:=pos('./',PathConv);
-    end;
-    { convert wildstar to #? }
-    tmppos:=pos('*',PathConv);
-    while tmppos<>0 do begin
-      delete(PathConv,tmppos,1);
-      insert('#?',PathConv,tmppos);
-      tmppos:=pos('*',PathConv);
-    end;
-  end;
-end;

+ 0 - 33
rtl/amiga/sysosh.inc

@@ -1,33 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2001 by Free Pascal development team
-
-    This file implements all the base types and limits required
-    for a minimal POSIX compliant subset required to port the compiler
-    to a new OS.
-
-    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.
-
- **********************************************************************}
-
-{Platform specific information}
-type
-{$ifdef CPU64}
-  THandle = Int64;
-{$else CPU64}
-  THandle = Longint;
-{$endif CPU64}
-  TThreadID = THandle;
-  
-  PRTLCriticalSection = ^TRTLCriticalSection;
-  TRTLCriticalSection = record
-   Locked: boolean
-  end;
-
-
-

+ 9 - 4
rtl/amiga/system.pp

@@ -110,12 +110,17 @@ implementation
 {$endif cpum68k}
 
 {$I system.inc}
+{$IFDEF AMIGAOS4}
+  // Required to allow opening of utility library interface...
+  {$include utilf.inc}
+{$ENDIF}
+
 
-{$IFDEF MOSFPC_FILEDEBUG}
+{$IFDEF ASYS_FPC_FILEDEBUG}
 {$WARNING Compiling with file debug enabled!}
 {$ENDIF}
 
-{$IFDEF MOSFPC_MEMDEBUG}
+{$IFDEF ASYS_FPC_MEMDEBUG}
 {$WARNING Compiling with memory debug enabled!}
 {$ENDIF}
 
@@ -137,7 +142,7 @@ begin
   end;
 
   { Closing opened files }
-  CloseList(AOS_fileList);
+  CloseList(ASYS_fileList);
 
   { Changing back to original directory if changed }
   if AOS_origDir<>0 then begin
@@ -389,7 +394,7 @@ begin
 { OS specific startup }
   AOS_wbMsg:=nil;
   AOS_origDir:=0;
-  AOS_fileList:=nil;
+  ASYS_fileList:=nil;
   envp:=nil;
   SysInitAmigaOS;
 { Set up signals handlers }

+ 0 - 759
rtl/amiga/sysutils.pp

@@ -1,759 +0,0 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2004-2013 by Karoly Balogh
-
-    Sysutils unit for AmigaOS & clones
-
-    Based on Amiga 1.x version by Carl Eric Codere, and other
-    parts of the RTL
-
-    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.
-
- **********************************************************************}
-
-unit sysutils;
-
-interface
-
-{$MODE objfpc}
-{$MODESWITCH OUT}
-{ force ansistrings }
-{$H+}
-
-{$DEFINE OS_FILESETDATEBYNAME}
-{$DEFINE HAS_SLEEP}
-{$DEFINE HAS_OSERROR}
-
-{ used OS file system APIs use ansistring }
-{$define SYSUTILS_HAS_ANSISTR_FILEUTIL_IMPL}
-{ OS has an ansistring/single byte environment variable API }
-{$define SYSUTILS_HAS_ANSISTR_ENVVAR_IMPL}
-
-{ Include platform independent interface part }
-{$i sysutilh.inc}
-
-{ Platform dependent calls }
-
-Procedure AddDisk(const path:string);
-
-
-implementation
-
-uses dos,sysconst;
-
-{$DEFINE FPC_FEXPAND_VOLUMES} (* Full paths begin with drive specification *)
-{$DEFINE FPC_FEXPAND_DRIVESEP_IS_ROOT}
-{$DEFINE FPC_FEXPAND_NO_DEFAULT_PATHS}
-
-{ Include platform independent implementation part }
-{$i sysutils.inc}
-
-
-{ * Include MorphOS specific includes * }
-{$include execd.inc}
-{$include execf.inc}
-{$include timerd.inc}
-{$include doslibd.inc}
-{$include doslibf.inc}
-{$include utilf.inc}
-
-{ * Followings are implemented in the system unit! * }
-function PathConv(path: shortstring): shortstring; external name 'PATHCONV';
-function PathConv(path: RawByteString): RawByteString; external name 'PATHCONVRBS';
-procedure AddToList(var l: Pointer; h: LongInt); external name 'ADDTOLIST';
-function RemoveFromList(var l: Pointer; h: LongInt): boolean; external name 'REMOVEFROMLIST';
-function CheckInList(var l: Pointer; h: LongInt): pointer; external name 'CHECKINLIST';
-
-var
-  MOS_fileList: Pointer; external name 'AOS_FILELIST';
-
-
-function AmigaFileDateToDateTime(aDate: TDateStamp; out success: boolean): TDateTime;
-var
-  tmpSecs: DWord;
-  tmpDate: TDateTime;
-  tmpTime: TDateTime; 
-  clockData: TClockData;
-begin
-  with aDate do
-    tmpSecs:=(ds_Days * (24 * 60 * 60)) + (ds_Minute * 60) + (ds_Tick div TICKS_PER_SECOND);
-
-  Amiga2Date(tmpSecs,@clockData);
-{$HINT TODO: implement msec values, if possible}
-  with clockData do begin
-     success:=TryEncodeDate(year,month,mday,tmpDate) and
-              TryEncodeTime(hour,min,sec,0,tmpTime);
-  end;
-
-  result:=ComposeDateTime(tmpDate,tmpTime);
-end;
-
-function DateTimeToAmigaDateStamp(dateTime: TDateTime): TDateStamp;
-var
-  tmpSecs: DWord;
-  clockData: TClockData;
-  tmpMSec: Word;
-begin
-{$HINT TODO: implement msec values, if possible}
-  with clockData do begin
-     DecodeDate(dateTime,year,month,mday);
-     DecodeTime(dateTime,hour,min,sec,tmpMSec);
-  end;
-
-  tmpSecs:=Date2Amiga(@clockData);
-
-  with result do begin
-     ds_Days:= tmpSecs div (24 * 60 * 60);
-     ds_Minute:= (tmpSecs div 60) mod ds_Days;
-     ds_Tick:= (((tmpSecs mod 60) mod ds_Minute) mod ds_Days) * TICKS_PER_SECOND;
-  end;
-end;
-
-
-{****************************************************************************
-                              File Functions
-****************************************************************************}
-{$I-}{ Required for correct usage of these routines }
-
-
-(****** non portable routines ******)
-
-function FileOpen(const FileName: rawbytestring; Mode: Integer): LongInt;
-var
-  SystemFileName: RawByteString;
-  dosResult: LongInt;
-begin
-  SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-  {$WARNING FIX ME! To do: FileOpen Access Modes}
-  dosResult:=Open(PChar(SystemFileName),MODE_OLDFILE);
-  if dosResult=0 then
-    dosResult:=-1
-  else
-    AddToList(MOS_fileList,dosResult);
-
-  FileOpen:=dosResult;
-end;
-
-
-function FileGetDate(Handle: LongInt) : LongInt;
-var
-  tmpFIB : PFileInfoBlock;
-  tmpDateTime: TDateTime;
-  validFile: boolean;
-begin
-  validFile:=false;
-
-  if (Handle <> 0) then begin
-    new(tmpFIB);
-    if ExamineFH(Handle,tmpFIB) then begin
-      tmpDateTime:=AmigaFileDateToDateTime(tmpFIB^.fib_Date,validFile);
-    end;
-    dispose(tmpFIB);
-  end;
-
-  if validFile then
-    result:=DateTimeToFileDate(tmpDateTime)
-  else
-    result:=-1;
-end;
-
-
-function FileSetDate(Handle, Age: LongInt) : LongInt;
-var
-  tmpDateStamp: TDateStamp;
-  tmpName: array[0..255] of char;
-begin
-  result:=0;
-  if (Handle <> 0) then begin
-    if (NameFromFH(Handle, @tmpName, 256) = dosTrue) then begin
-      tmpDateStamp:=DateTimeToAmigaDateStamp(FileDateToDateTime(Age));
-      if not SetFileDate(@tmpName,@tmpDateStamp) then begin
-        IoErr(); // dump the error code for now (TODO)
-        result:=-1;
-      end;
-    end;
-  end;
-end;
-
-
-function FileSetDate(const FileName: RawByteString; Age: LongInt) : LongInt;
-var
-  tmpDateStamp: TDateStamp;
-  SystemFileName: RawByteString;
-begin
-  result:=0;
-  SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-  tmpDateStamp:=DateTimeToAmigaDateStamp(FileDateToDateTime(Age));
-  if not SetFileDate(PChar(SystemFileName),@tmpDateStamp) then begin
-    IoErr(); // dump the error code for now (TODO)
-    result:=-1;
-  end;
-end;
-
-
-function FileCreate(const FileName: RawByteString) : LongInt;
-var
-  SystemFileName: RawByteString;
-  dosResult: LongInt;
-begin
-  dosResult:=-1;
-
-  { Open file in MODDE_READWRITE, then truncate it by hand rather than
-    opening it in MODE_NEWFILE, because that returns an exclusive lock 
-    so some operations might fail with it (KB) }
-  SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-  dosResult:=Open(PChar(SystemFileName),MODE_READWRITE);
-  if dosResult = 0 then exit;
-
-  if SetFileSize(dosResult, 0, OFFSET_BEGINNING) = 0 then 
-    AddToList(MOS_fileList,dosResult)
-  else begin
-    dosClose(dosResult);
-    dosResult:=-1;
-  end;
-
-  FileCreate:=dosResult;
-end;
-
-function FileCreate(const FileName: RawByteString; Rights: integer): LongInt;
-begin
-  {$WARNING FIX ME! To do: FileCreate Access Modes}
-  FileCreate:=FileCreate(FileName);
-end;
-
-function FileCreate(const FileName: RawByteString; ShareMode: integer; Rights : integer): LongInt;
-begin
-  {$WARNING FIX ME! To do: FileCreate Access Modes}
-  FileCreate:=FileCreate(FileName);
-end;
-
-
-function FileRead(Handle: LongInt; out Buffer; Count: LongInt): LongInt;
-begin
-  FileRead:=-1;
-  if (Count<=0) or (Handle<=0) then exit;
-
-  FileRead:=dosRead(Handle,@Buffer,Count);
-end;
-
-
-function FileWrite(Handle: LongInt; const Buffer; Count: LongInt): LongInt;
-begin
-  FileWrite:=-1;
-  if (Count<=0) or (Handle<=0) then exit;
-
-  FileWrite:=dosWrite(Handle,@Buffer,Count);
-end;
-
-
-function FileSeek(Handle, FOffset, Origin: LongInt) : LongInt;
-var
-  seekMode: LongInt;
-begin
-  FileSeek:=-1;
-  if (Handle<=0) then exit;
-
-  case Origin of
-    fsFromBeginning: seekMode:=OFFSET_BEGINNING;
-    fsFromCurrent  : seekMode:=OFFSET_CURRENT;
-    fsFromEnd      : seekMode:=OFFSET_END;
-  end;
-
-  FileSeek:=dosSeek(Handle, FOffset, seekMode);
-end;
-
-function FileSeek(Handle: LongInt; FOffset: Int64; Origin: Longint): Int64;
-begin
-  {$WARNING Need to add 64bit call }
-  FileSeek:=FileSeek(Handle,LongInt(FOffset),LongInt(Origin));
-end;
-
-
-procedure FileClose(Handle: LongInt);
-begin
-  if (Handle<=0) then exit;
-
-  dosClose(Handle);
-  RemoveFromList(MOS_fileList,Handle);
-end;
-
-
-function FileTruncate(Handle: THandle; Size: Int64): Boolean;
-var
-  dosResult: LongInt;
-begin
-  FileTruncate:=False;
-  
-  if Size > high (longint) then exit;
-{$WARNING Possible support for 64-bit FS to be checked!}
-
-  if (Handle<=0) then exit;
-
-  dosResult:=SetFileSize(Handle, Size, OFFSET_BEGINNING);
-  if (dosResult<0) then exit;
-
-  FileTruncate:=True;
-end;
-
-
-function DeleteFile(const FileName: RawByteString) : Boolean;
-var
-  SystemFileName: RawByteString;
-begin
-  SystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-  DeleteFile:=dosDeleteFile(PChar(SystemFileName));
-end;
-
-
-function RenameFile(const OldName, NewName: RawByteString): Boolean;
-var
-  OldSystemFileName, NewSystemFileName: RawByteString;
-begin
-  OldSystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(OldName));
-  NewSystemFileName:=PathConv(ToSingleByteFileSystemEncodedFileName(NewName));
-  RenameFile:=dosRename(PChar(OldSystemFileName), PChar(NewSystemFileName));
-end;
-
-
-(****** end of non portable routines ******)
-
-
-function FileAge (const FileName : RawByteString): Longint;
-var
-  tmpLock: Longint;
-  tmpFIB : PFileInfoBlock;
-  tmpDateTime: TDateTime;
-  validFile: boolean;
-  SystemFileName: RawByteString;
-begin
-  validFile:=false;
-  SystemFileName := PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-  tmpLock := Lock(PChar(SystemFileName), SHARED_LOCK);
-  
-  if (tmpLock <> 0) then begin
-    new(tmpFIB);
-    if Examine(tmpLock,tmpFIB) then begin
-      tmpDateTime:=AmigaFileDateToDateTime(tmpFIB^.fib_Date,validFile);
-    end;
-    Unlock(tmpLock);
-    dispose(tmpFIB);
-  end;
-
-  if validFile then
-    result:=DateTimeToFileDate(tmpDateTime)
-  else
-    result:=-1;   
-end;
-
-
-function FileExists (const FileName : RawByteString) : Boolean;
-var
-  tmpLock: LongInt;
-  tmpFIB : PFileInfoBlock;
-  SystemFileName: RawByteString;
-begin
-  result:=false;
-  SystemFileName := PathConv(ToSingleByteFileSystemEncodedFileName(FileName));
-  tmpLock := Lock(PChar(SystemFileName), SHARED_LOCK);
-
-  if (tmpLock <> 0) then begin
-    new(tmpFIB);
-    if Examine(tmpLock,tmpFIB) and (tmpFIB^.fib_DirEntryType <= 0) then
-      result:=true;
-    Unlock(tmpLock);
-    dispose(tmpFIB);
-  end;
-end;
-
-
-Function InternalFindFirst (Const Path : RawByteString; Attr : Longint; out Rslt : TAbstractSearchRec; var Name: RawByteString) : Longint;
-var
-  tmpStr: RawByteString;
-  Anchor: PAnchorPath;
-  tmpDateTime: TDateTime;
-  validDate: boolean;
-begin
-  result:=-1; { We emulate Linux/Unix behaviour, and return -1 on errors. }
-
-  tmpStr:=PathConv(ToSingleByteFileSystemEncodedFileName(Path));
-
-  { $1e = faHidden or faSysFile or faVolumeID or faDirectory }
-  Rslt.ExcludeAttr := (not Attr) and ($1e);
-  Rslt.FindHandle  := 0;
-
-  new(Anchor);
-  FillChar(Anchor^,sizeof(TAnchorPath),#0);
-
-  if MatchFirst(pchar(tmpStr),Anchor)<>0 then exit;
-  Rslt.FindHandle := longint(Anchor);
-
-  with Anchor^.ap_Info do begin
-    Name := fib_FileName;
-    SetCodePage(Name,DefaultFileSystemCodePage,false);
-
-    Rslt.Size := fib_Size;
-    Rslt.Time := DateTimeToFileDate(AmigaFileDateToDateTime(fib_Date,validDate));
-    if not validDate then exit;
-
-    { "128" is Windows "NORMALFILE" attribute. Some buggy code depend on this... :( (KB) }
-    Rslt.Attr := 128;
-
-    if fib_DirEntryType > 0 then Rslt.Attr:=Rslt.Attr or faDirectory;
-    if ((fib_Protection and FIBF_READ) <> 0) and
-       ((fib_Protection and FIBF_WRITE) = 0) then Rslt.Attr:=Rslt.Attr or faReadOnly;
-
-    result:=0; { Return zero if everything went OK }
-  end;
-end;
-
-
-Function InternalFindNext (var Rslt : TAbstractSearchRec; var Name : RawByteString) : Longint;
-var
-  Anchor: PAnchorPath;
-  validDate: boolean;
-begin
-  result:=-1;
-
-  Anchor:=PAnchorPath(Rslt.FindHandle);
-  if not assigned(Anchor) then exit;
-  if MatchNext(Anchor) <> 0 then exit;
-
-  with Anchor^.ap_Info do begin
-    Name := fib_FileName;
-    SetCodePage(Name,DefaultFileSystemCodePage,false);
-    Rslt.Size := fib_Size;
-    Rslt.Time := DateTimeToFileDate(AmigaFileDateToDateTime(fib_Date,validDate));
-    if not validDate then exit;
-
-    { "128" is Windows "NORMALFILE" attribute. Some buggy code depend on this... :( (KB) }
-    Rslt.Attr := 128;
-    if fib_DirEntryType > 0 then Rslt.Attr:=Rslt.Attr or faDirectory;
-    if ((fib_Protection and FIBF_READ) <> 0) and
-       ((fib_Protection and FIBF_WRITE) = 0) then Rslt.Attr:=Rslt.Attr or faReadOnly;
-
-    result:=0; { Return zero if everything went OK }
-  end;
-end;
-
-
-Procedure InternalFindClose(var Handle: THandle);
-var
-  Anchor: PAnchorPath;
-begin
-  Anchor:=PAnchorPath(Handle);
-  if not assigned(Anchor) then exit;
-  MatchEnd(Anchor);
-  Dispose(Anchor);
-  Handle:=THandle(nil);
-end;
-
-
-(****** end of non portable routines ******)
-
-Function FileGetAttr (Const FileName : RawByteString) : Longint;
-var
- F: file;
- attr: word;
-begin
- Assign(F,FileName);
- dos.GetFAttr(F,attr);
- if DosError <> 0 then
-    FileGetAttr := -1
- else
-    FileGetAttr := Attr;
-end;
-
-
-Function FileSetAttr (Const Filename : RawByteString; Attr: longint) : Longint;
-var
- F: file;
-begin
- Assign(F, FileName);
- Dos.SetFAttr(F, Attr and $ffff);
- FileSetAttr := DosError;
-end;
-
-
-
-{****************************************************************************
-                              Disk Functions
-****************************************************************************}
-
-{
-  The Diskfree and Disksize functions need a file on the specified drive, since this
-  is required for the statfs system call.
-  These filenames are set in drivestr[0..26], and have been preset to :
-   0 - '.'      (default drive - hence current dir is ok.)
-   1 - '/fd0/.'  (floppy drive 1 - should be adapted to local system )
-   2 - '/fd1/.'  (floppy drive 2 - should be adapted to local system )
-   3 - '/'       (C: equivalent of dos is the root partition)
-   4..26          (can be set by you're own applications)
-  ! Use AddDisk() to Add new drives !
-  They both return -1 when a failure occurs.
-}
-Const
-  FixDriveStr : array[0..3] of pchar=(
-    '.',
-    '/fd0/.',
-    '/fd1/.',
-    '/.'
-    );
-var
-  Drives   : byte;
-  DriveStr : array[4..26] of pchar;
-
-Procedure AddDisk(const path:string);
-begin
-  if not (DriveStr[Drives]=nil) then
-   FreeMem(DriveStr[Drives],StrLen(DriveStr[Drives])+1);
-  GetMem(DriveStr[Drives],length(Path)+1);
-  StrPCopy(DriveStr[Drives],path);
-  inc(Drives);
-  if Drives>26 then
-   Drives:=4;
-end;
-
-
-
-Function DiskFree(Drive: Byte): int64;
-Begin
-  DiskFree := dos.diskFree(Drive);
-End;
-
-
-Function DiskSize(Drive: Byte): int64;
-Begin
-  DiskSize := dos.DiskSize(Drive);
-End;
-
-function DirectoryExists(const Directory: RawByteString): Boolean;
-var
-  tmpLock: LongInt;
-  FIB    : PFileInfoBlock;
-  SystemDirName: RawByteString;
-begin
-  result:=false;
-  if (Directory='') or (InOutRes<>0) then exit;
-
-  SystemDirName:=PathConv(ToSingleByteFileSystemEncodedFileName(Directory));
-  tmpLock:=Lock(PChar(SystemDirName),SHARED_LOCK);
-  if tmpLock=0 then exit;
-
-  FIB:=nil; new(FIB);
-
-  if (Examine(tmpLock,FIB)=True) and (FIB^.fib_DirEntryType>0) then
-    result:=True;
-
-  if tmpLock<>0 then Unlock(tmpLock);
-  if assigned(FIB) then dispose(FIB);
-end;
-
-
-
-{****************************************************************************
-                              Locale Functions
-****************************************************************************}
-
-Procedure GetLocalTime(var SystemTime: TSystemTime);
-var
- dayOfWeek: word;
-begin
-  dos.GetTime(SystemTime.Hour, SystemTime.Minute, SystemTime.Second,SystemTime.Millisecond);
-  dos.GetDate(SystemTime.Year, SystemTime.Month, SystemTime.Day, DayOfWeek);
-end;
-
-
-Procedure InitAnsi;
-Var
-  i : longint;
-begin
-  {  Fill table entries 0 to 127  }
-  for i := 0 to 96 do
-    UpperCaseTable[i] := chr(i);
-  for i := 97 to 122 do
-    UpperCaseTable[i] := chr(i - 32);
-  for i := 123 to 191 do
-    UpperCaseTable[i] := chr(i);
-  Move (CPISO88591UCT,UpperCaseTable[192],SizeOf(CPISO88591UCT));
-
-  for i := 0 to 64 do
-    LowerCaseTable[i] := chr(i);
-  for i := 65 to 90 do
-    LowerCaseTable[i] := chr(i + 32);
-  for i := 91 to 191 do
-    LowerCaseTable[i] := chr(i);
-  Move (CPISO88591LCT,UpperCaseTable[192],SizeOf(CPISO88591UCT));
-end;
-
-
-Procedure InitInternational;
-begin
-  InitInternationalGeneric; 
-  InitAnsi;
-end;
-
-function SysErrorMessage(ErrorCode: Integer): String;
-
-begin
-{  Result:=StrError(ErrorCode);}
-end;
-
-function GetLastOSError: Integer;
-begin
-    result:=-1;
-end;
-
-{****************************************************************************
-                              OS utility functions
-****************************************************************************}
-
-var
-  StrOfPaths: String;
-
-function GetPathString: String;
-var
-   f : text;
-   s : string;
-   tmpBat: string;
-   tmpList: string;
-begin
-   s := '';
-   result := '';
-
-   tmpBat:='T:'+HexStr(FindTask(nil));
-   tmpList:=tmpBat+'_path.tmp';
-   tmpBat:=tmpBat+'_path.sh';
-
-   assign(f,tmpBat);
-   rewrite(f);
-   writeln(f,'path >'+tmpList);
-   close(f);
-   exec('C:Execute',tmpBat);
-   erase(f);
-
-   assign(f,tmpList);
-   reset(f);
-   { skip the first line, garbage }
-   if not eof(f) then readln(f,s);
-   while not eof(f) do begin
-      readln(f,s);
-      if result = '' then
-        result := s
-      else 
-        result := result + ';' + s;
-   end;
-   close(f);
-   erase(f);
-end;
-
-Function GetEnvironmentVariable(Const EnvVar : String) : String;
-begin
-  if UpCase(envvar) = 'PATH' then begin
-    if StrOfpaths = '' then StrOfPaths := GetPathString;
-    Result:=StrOfPaths;
-  end else
-    Result:=Dos.Getenv(shortstring(EnvVar));
-end;
-
-Function GetEnvironmentVariableCount : Integer;
-
-begin
-  // Result:=FPCCountEnvVar(EnvP);
-  Result:=Dos.envCount;
-end;
-
-Function GetEnvironmentString(Index : Integer) : {$ifdef FPC_RTL_UNICODE}UnicodeString{$else}AnsiString{$endif};
-
-begin
-  // Result:=FPCGetEnvStrFromP(Envp,Index);
-  Result:=Dos.EnvStr(Index);
-end;
-
-function ExecuteProcess (const Path: AnsiString; const ComLine: AnsiString;Flags:TExecuteFlags=[]):
-                                                                       integer;
-var
-  tmpPath: AnsiString;
-  convPath: AnsiString;
-  CommandLine: AnsiString;
-  tmpLock: longint;
-
-  E: EOSError;
-begin
-  DosError:= 0;
-  
-  convPath:=PathConv(Path);
-  tmpPath:=convPath+' '+ComLine;
-  
-  { Here we must first check if the command we wish to execute }
-  { actually exists, because this is NOT handled by the        }
-  { _SystemTagList call (program will abort!!)                 }
-
-  { Try to open with shared lock }
-  tmpLock:=Lock(PChar(convPath),SHARED_LOCK);
-  if tmpLock<>0 then
-    begin
-      { File exists - therefore unlock it }
-      Unlock(tmpLock);
-      result:=SystemTagList(PChar(tmpPath),nil);
-      { on return of -1 the shell could not be executed }
-      { probably because there was not enough memory    }
-      if result = -1 then
-        DosError:=8;
-    end
-  else
-    DosError:=3;
-  
-  if DosError <> 0 then begin
-    if ComLine = '' then
-      CommandLine := Path
-    else
-      CommandLine := Path + ' ' + ComLine;
-    
-    E := EOSError.CreateFmt (SExecuteProcessFailed, [CommandLine, DosError]);
-    E.ErrorCode := DosError;
-    raise E;
-  end;
-end;
-
-function ExecuteProcess (const Path: AnsiString;
-                                  const ComLine: array of AnsiString;Flags:TExecuteFlags=[]): integer;
-var
-  CommandLine: AnsiString;
-  I: integer;
-
-begin
-  Commandline := '';
-  for I := 0 to High (ComLine) do
-   if Pos (' ', ComLine [I]) <> 0 then
-    CommandLine := CommandLine + ' ' + '"' + ComLine [I] + '"'
-   else
-    CommandLine := CommandLine + ' ' + Comline [I];
-  ExecuteProcess := ExecuteProcess (Path, CommandLine);
-end;
-
-procedure Sleep(Milliseconds: cardinal);
-begin
-  // Amiga dos.library Delay() has precision of 1/50 seconds
-  Delay(Milliseconds div 20);
-end;
-
-
-{****************************************************************************
-                              Initialization code
-****************************************************************************}
-
-Initialization
-  InitExceptions;
-  InitInternational;    { Initialize internationalization settings }
-  OnBeep:=Nil;          { No SysBeep() on Amiga, for now. Figure out if we want 
-                          to use intuition.library/DisplayBeep() for this (KB) }
-  StrOfPaths:='';
-
-Finalization
-  DoneExceptions;
-end.