peter 27 роки тому
батько
коміт
6452fa5095
6 змінених файлів з 1715 додано та 1635 видалено
  1. 1045 1045
      rtl/os2/dos.pas
  2. 143 63
      rtl/os2/makefile
  3. 0 0
      rtl/os2/prt0.as
  4. 60 0
      rtl/os2/prt1.as
  5. 0 60
      rtl/os2/prt1.so2
  6. 467 467
      rtl/os2/sysos2.pas

Різницю між файлами не показано, бо вона завелика
+ 1045 - 1045
rtl/os2/dos.pas


+ 143 - 63
rtl/os2/makefile

@@ -1,23 +1,29 @@
-# makes the SYSTEM-Unit for OS2
 #
-# Copyright (c) 1996 by Michael Van Canneyt
+#   $Id$
+#   This file is part of the Free Pascal run time library.
+#   Copyright (c) 1996-98 by Michael van Canneyt
+#
+#   Makefile for the Free Pascal OS/2 Runtime Library
+#
+#   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.
+#
 
 #####################################################################
-# Start of configurable section. 
-# Please note that all these must be set in the main makefile, and 
+# Start of configurable section.
+# Please note that all these must be set in the main makefile, and
 # should be set there.
 # Don't remove the indef statements. They serve to avoid conflicts
 # with the main makefile.
 #####################################################################
 
-# set the directory where to install the units.
-ifndef LIBINSTALLDIR
-LIBINSTALLDIR=c:/pp/bin
-endif 
-
-# What is the Operating System
-ifndef OS_SRC
-OS_SRC=os2
+# What is the Operating System ?
+ifndef OS_SOURCE
+OS_SOURCE=go32v2
 endif
 
 # What is the target operating system ?
@@ -25,9 +31,15 @@ ifndef OS_TARGET
 OS_TARGET=os2
 endif
 
+# What is the target processor :
+ifndef CPU
+CPU=i386
+#CPU=m68k
+endif
+
 # What compiler to use ?
 ifndef PP
-PP=../../ppc386
+PP=ppc386
 endif
 
 # What options to pass to the compiler ?
@@ -36,19 +48,38 @@ ifndef OPT
 OPT=
 endif
 
-ifndef CPU
-CPU=i386
-endif 
+# Where is the PPUMOVE program ?
+ifndef PPUMOVE
+PPUMOVE=ppumove
+endif
+
+# Set this to 'shared' or 'static'
+LIBTYPE=shared
+
+# AOUT should be defined in main makefile.
+# But you can set it here too.
+# AOUT = -DAOUT
+
+# Do you want to link to the C library ?
+# Standard it is NO. You can set it to YES to link in th C library.
+ifndef LINK_TO_C
+LINK_TO_C=NO
+endif
 
 #####################################################################
-# End of configurable section. 
+# End of configurable section.
 # Do not edit after this line.
 #####################################################################
 
-# Where are the include files
+#####################################################################
+# System independent
+#####################################################################
+
+# Where are the include files ?
 INC=../inc
 PROCINC=../$(CPU)
 CFG=../cfg
+OBJPASDIR=../objpas
 
 # Get some defaults for Programs and OSes.
 # This will set the following variables :
@@ -59,13 +90,13 @@ CFG=../cfg
 include $(CFG)/makefile.cfg
 
 # Get the system independent include file names.
-# This will set the following variables : 
+# This will set the following variables :
 # SYSINCNAMES
 include $(INC)/makefile.inc
 SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 
 # Get the processor dependent include file names.
-# This will set the following variables : 
+# This will set the following variables :
 # CPUINCNAMES
 include $(PROCINC)/makefile.cpu
 SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
@@ -77,69 +108,118 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 # System dependent
 #####################################################################
 
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.o2
 
-PPUEXT = .ppu
+# Define Linux Units
+SYSTEMPPU=sysos2$(PPUEXT)
+OBJECTS=strings objpas \
+        dos crt
 
-OEXT = .obj
+LOADERS=prt0 prt1
 
+#####################################################################
+# System independent Makefile
+#####################################################################
 
-.PHONY: all clean install diffs diffclean
+# Add Prefix and Suffixes
+OBJLOADERS=$(addsuffix $(OEXT), $(LOADERS))
+PPUOBJECTS=$(addsuffix $(PPUEXT), $(OBJECTS))
 
-all : sysos2$(PPUEXT) prt0$(OEXT) prt1$(OEXT) dosinit$(OEXT) \
-        strings$(PPUEXT) dos$(PPUEXT) getopts$(PPUEXT)
+.PHONY : all install clean \
+	 libs libsclean \
+	 diffs diffclean \
 
+all : $(OBJLOADERS) $(PPUOBJECTS)
 
-getopts$(PPUEXT) : $(PROCINC)/getopts.pp sysos2$(PPUEXT)
-	$(COPY) $(PROCINC)/getopts.pp .
-	$(PP) $(OPT) getopts.pp $(REDIR)
-	$(DEL) getopts.pp
+install : all
+	$(MKDIR) $(UNITINSTALLDIR)
+	$(INSTALL) *$(PPUEXT) *$(OEXT) $(UNITINSTALLDIR)
 
-strings$(PPUEXT) : $(PROCINC)/strings.pp sysos2$(PPUEXT)
-	$(COPY) $(PROCINC)/strings.pp .
-	$(PP) $(OPT) strings.pp $(REDIR)
-	$(DEL) strings.pp
+clean :
+	-$(DEL) *$(OEXT) *$(ASMEXT) *$(PPUEXT) log
 
-dos$(PPUEXT) : dos.pas strings$(PPUEXT) sysos2$(PPUEXT)
-	$(PP) $(OPT) dos.pas $(REDIR)
+#####################################################################
+# Files
+#####################################################################
 
-sysos2$(PPUEXT) : sysos2.pas $(SYSDEPS)
-	$(PP) $(OPT) -Us sysos2.pas $(REDIR)
+#
+# Loaders
+#
 
-prt0$(OEXT) : prt0.so2
+prt0$(OEXT) : prt0.as
 	as -D -o prt0$(OEXT) prt0.as
 
-prt1$(OEXT) : prt1.so2
+prt1$(OEXT) : prt1.as
 	as -D -o prt1$(OEXT) prt1.as
 
-dosinit$(OEXT) : dosinit.as
-	as -D -o dosinit$(OEXT) dosinit.as
+#
+# Base Units (System, strings, os-dependent-base-unit)
+#
+
+$(SYSTEMPPU) : sysos2.pas $(SYSDEPS)
+	$(PP) $(OPT) -Us -Sg sysos2.pas $(REDIR)
+
+strings$(PPUEXT) : $(PROCINC)/strings.pp $(SYSTEMPPU)
+	$(COPY) $(PROCINC)/strings.pp .
+	$(PP) $(OPT) strings $(REDIR)
+	$(DEL) strings.pp
+
+#
+# Delphi Object Model
+#
+
+objpas$(PPUEXT) : $(OBJPASDIR)/objpas.pp $(SYSTEMPPU)
+	$(COPY) $(OBJPASDIR)/objpas.pp .
+	$(PP) $(OPT) objpas $(REDIR)
+	$(DEL) objpas.pp
+
+#
+# System Dependent Units
+#
+
+#
+# TP7 Compatible RTL Units
+#
+
+dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMPPU)
+	$(PP) $(OPT) dos.pas $(REDIR)
+
+crt$(PPUEXT) : crt.pas dos$(PPUEXT)
+	$(PP) $(OPT) crt.pas $(REDIR)
+
+#objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMPPU)
+#	 $(COPY) $(INC)/objects.pp .
+#	 $(PP) $(OPT) objects $(REDIR)
+#	 $(DEL) objects.pp
 
-clean:
-	-$(DEL) *$(OEXT)
-	-$(DEL) *$(PPUEXT)
-	-$(DEL) *.dif
-	-$(DEL) *.s
-	-$(DEL) log
+#
+# Other RTL Units
+#
 
-diffclean:
-	-$(DEL) *.dif
+#####################################################################
+# Libs
+#####################################################################
 
-install: all
-	$(MKDIR) $(LIBINSTALLDIR)/os2units
-	$(INSTALL) *$(OEXT) *$(PPUEXT) $(LIBINSTALLDIR)/os2units
+libs	: all libfpc$(LIBEXT)
 
-%.dif : %.pas
-	-$(DIFF) $(DIFOPTS) $*.pas $(REFPATH)/os2/$*.pas > $*.dif
+libfpc.so:
+	$(PPUMOVE) -o fpc *.ppu
 
-%.dif : %.inc
-	-$(DIFF) $(DIFOPTS) $*.inc $(REFPATH)/os2/$*.inc > $*.dif
+libfpc.a:
+	$(PPUMOVE) -s -o fpc *.ppu
 
-%.dif : %.as
-	-$(DIFF) $(DIFOPTS) $*.as $(REFPATH)/os2/$*.as > $*.dif
+libinstall : libs
+	$(INSTALLEXE) libfpc$(LIBEXT) $(LIBINSTALLDIR)
+	$(INSTALL) *$(PPLEXT) $(UNITINSTALLDIR)
+	ldconfig
 
-makefile.dif : makefile
-	-$(DIFF) $(DIFFOPTS) makefile $(REFPATH)/os2/makefile > makefile.dif
-	
+libsclean : clean
+	-$(DEL) *.a *.so *$(PPLEXT)
+
+#####################################################################
+# Default targets
+#####################################################################
 
-diffs: sysos2.dif dos.dif doscalls.dif os.dif prt0.dif prt1.dif dosinit.dif \
-       makefile.dif
+include $(CFG)/makefile.def

+ 0 - 0
rtl/os2/prt0.so2 → rtl/os2/prt0.as


+ 60 - 0
rtl/os2/prt1.as

@@ -0,0 +1,60 @@
+/ prt1.s (emx+fpk) -- Made from crt2.s and dos.s,
+/                                         Copyright (c) 1990-1996 by Eberhard Mattes.
+/                     Changed for FPK-Pascal in 1997 Dani‰l Mantione.
+/                                         This code is _not_ under the Library GNU Public
+/                                         License, because the original is not. See copying.emx
+/                                         for details. You should have received it with this
+/                                         product, write the author if you haven't.
+
+                .globl  __entry1
+                .globl  _environ
+                .globl  _envc
+                .globl  _argv
+                .globl  _argc
+
+                .text
+
+__entry1:
+                popl    %esi
+                xorl    %ebp, %ebp
+                leal    (%esp), %edi
+                movl    %edi,_environ
+                call    L_ptr_tbl
+                mov             %ecx,_envc
+                mov             %edi,_argv
+                call    L_ptr_tbl
+                mov             %ecx,_argc
+                jmp     *%esi
+
+L_ptr_tbl:
+                xorl    %eax, %eax
+                movl    $-1, %ecx
+1:      incl    %ecx
+                scasl
+                jne     1b
+                ret
+
+/ In executables created with emxbind, the call to _dos_init will
+/ be fixed up at load time to _emx_init of emx.dll.  Under DOS,
+/ this dummy is called instead as there is no fixup.  This module
+/ must be linked statically to avoid having two fixups for the
+/ same location.
+
+                .globl  __dos_init
+                .globl  __dos_syscall
+
+__dos_init:
+                ret     $4
+
+                .align  2, 0x90
+
+__dos_syscall:
+                int     $0x21
+                ret
+
+                .data
+
+                .comm   _environ,       4
+                .comm   _envc,          4
+                .comm   _argv,          4
+                .comm   _argc,          4

+ 0 - 60
rtl/os2/prt1.so2

@@ -1,60 +0,0 @@
-/ prt1.s (emx+fpk) -- Made from crt2.s and dos.s,
-/					  Copyright (c) 1990-1996 by Eberhard Mattes.
-/                     Changed for FPK-Pascal in 1997 Dani‰l Mantione.
-/					  This code is _not_ under the Library GNU Public
-/					  License, because the original is not. See copying.emx
-/					  for details. You should have received it with this
-/					  product, write the author if you haven't.
-
-		.globl  __entry1
-		.globl  _environ
-		.globl	_envc
-		.globl	_argv
-		.globl	_argc
-
-		.text
-
-__entry1:
-		popl    %esi
-		xorl    %ebp, %ebp
-		leal    (%esp), %edi
-		movl    %edi,_environ
-		call    L_ptr_tbl
-		mov		%ecx,_envc
-		mov		%edi,_argv
-		call    L_ptr_tbl
-		mov		%ecx,_argc
-		jmp     *%esi
-
-L_ptr_tbl:
-		xorl    %eax, %eax
-		movl    $-1, %ecx
-1:      incl    %ecx
-		scasl
-		jne     1b
-		ret
-
-/ In executables created with emxbind, the call to _dos_init will
-/ be fixed up at load time to _emx_init of emx.dll.  Under DOS,
-/ this dummy is called instead as there is no fixup.  This module
-/ must be linked statically to avoid having two fixups for the
-/ same location.
-
-		.globl  __dos_init
-		.globl  __dos_syscall
-
-__dos_init:
-		ret     $4
-
-		.align  2, 0x90
-
-__dos_syscall:
-		int     $0x21
-		ret
-
-		.data
-
-		.comm   _environ,	4
-		.comm   _envc,		4
-		.comm   _argv,		4
-		.comm   _argc,		4

+ 467 - 467
rtl/os2/sysos2.pas

@@ -1,9 +1,9 @@
 {****************************************************************************
 
-					 FPK-Pascal -- OS/2 runtime library
+                     FPK-Pascal -- OS/2 runtime library
 
-				  Copyright (c) 1993,95 by Florian Kl„mpfl
-				   Copyright (c) 1997 by Dani‰l Mantione
+                  Copyright (c) 1993,95 by Florian Kl„mpfl
+                   Copyright (c) 1997 by Dani‰l Mantione
 
  FPK-Pascal is distributed under the GNU Public License v2. So is this unit.
  The GNU Public License requires you to distribute the source code of this
@@ -32,19 +32,19 @@ unit sysos2;
 
 {Changelog:
 
-	People:
+    People:
 
-		DM - Dani‰l Mantione
+        DM - Dani‰l Mantione
 
-	Date:			Description of change:				Changed by:
+    Date:           Description of change:              Changed by:
 
-	 -				First released version 0.1.			DM
+     -              First released version 0.1.         DM
 
 Coding style:
 
-	My coding style is a bit unusual for Pascal. Nevertheless I friendly ask
-	you to try to make your changes not look all to different. In general,
-	set your IDE to use tab characters, optimal fill on and a tabsize of 4.}
+    My coding style is a bit unusual for Pascal. Nevertheless I friendly ask
+    you to try to make your changes not look all to different. In general,
+    set your IDE to use tab characters, optimal fill on and a tabsize of 4.}
 
 {$I os.inc}
 
@@ -53,67 +53,67 @@ interface
 {Link the startup code.}
 {$l prt1.oo2}
 
-{$I	SYSTEMH.INC}
-{$I	heaph.inc}
-
-type	Tos=(osDOS,osOS2,osDPMI);
-
-var		os_mode:Tos;
-		first_meg:pointer;
-
-type	Psysthreadib=^Tsysthreadib;
-		Pthreadinfoblock=^Tthreadinfoblock;
-		Pprocessinfoblock=^Tprocessinfoblock;
-
-		Tbytearray=array[0..$ffff] of byte;
-		Pbytearray=^Tbytearray;
-
-		Tsysthreadib=record
-			tid,
-			priority,
-			version:longint;
-			MCcount,
-			MCforceflag:word;
-		end;
-
-		Tthreadinfoblock=record
-			pexchain,
-			stack,
-			stacklimit:pointer;
-			tib2:Psysthreadib;
-			version,
-			ordinal:longint;
-		end;
-
-		Tprocessinfoblock=record
-			pid,
-			parentpid,
-			hmte:longint;
-			cmd,
-			env:Pbytearray;
-			flstatus,
-			ttype:longint;
-		end;
-
-const	UnusedHandle=$ffff;
-		StdInputHandle=0;
-		StdOutputHandle=1;
-		StdErrorHandle=2;
+{$I SYSTEMH.INC}
+{$I heaph.inc}
+
+type    Tos=(osDOS,osOS2,osDPMI);
+
+var     os_mode:Tos;
+        first_meg:pointer;
+
+type    Psysthreadib=^Tsysthreadib;
+        Pthreadinfoblock=^Tthreadinfoblock;
+        Pprocessinfoblock=^Tprocessinfoblock;
+
+        Tbytearray=array[0..$ffff] of byte;
+        Pbytearray=^Tbytearray;
+
+        Tsysthreadib=record
+            tid,
+            priority,
+            version:longint;
+            MCcount,
+            MCforceflag:word;
+        end;
+
+        Tthreadinfoblock=record
+            pexchain,
+            stack,
+            stacklimit:pointer;
+            tib2:Psysthreadib;
+            version,
+            ordinal:longint;
+        end;
+
+        Tprocessinfoblock=record
+            pid,
+            parentpid,
+            hmte:longint;
+            cmd,
+            env:Pbytearray;
+            flstatus,
+            ttype:longint;
+        end;
+
+const   UnusedHandle=$ffff;
+        StdInputHandle=0;
+        StdOutputHandle=1;
+        StdErrorHandle=2;
 
 implementation
 
-{$I	SYSTEM.INC}
+{$I SYSTEM.INC}
 
 procedure dosgetinfoblocks(var Atib:Pthreadinfoblock;
-						   var Apib:Pprocessinfoblock);
-						   external 'DOSCALLS' index 312;
+                           var Apib:Pprocessinfoblock);
+                           external 'DOSCALLS' index 312;
 
 {This is the correct way to call external assembler procedures.}
 procedure syscall;external name '___SYSCALL';
 
 {***************************************************************************
 
-				Runtime error checking related routines.
+                Runtime error checking related routines.
 
 ***************************************************************************}
 
@@ -121,106 +121,106 @@ procedure syscall;external name '___SYSCALL';
 procedure st1(stack_size:longint);[public,alias: 'STACKCHECK'];
 
 begin
-	{ called when trying to get local stack }
-	{ if the compiler directive $S is set   }
-	asm
-		movl stack_size,%ebx
-		movl %esp,%eax
-		subl %ebx,%eax
+    { called when trying to get local stack }
+    { if the compiler directive $S is set   }
+    asm
+        movl stack_size,%ebx
+        movl %esp,%eax
+        subl %ebx,%eax
 {$ifdef SYSTEMDEBUG}
-		movl U_SYSOS2_LOWESTSTACK,%ebx
-		cmpl %eax,%ebx
-		jb   .Lis_not_lowest
-		movl %eax,U_SYSOS2_LOWESTSTACK
-	.Lis_not_lowest:
+        movl U_SYSOS2_LOWESTSTACK,%ebx
+        cmpl %eax,%ebx
+        jb   .Lis_not_lowest
+        movl %eax,U_SYSOS2_LOWESTSTACK
+    .Lis_not_lowest:
 {$endif SYSTEMDEBUG}
-		cmpb $2,U_SYSOS2_OS_MODE
-		jne .Lrunning_in_dos
-		movl U_SYSOS2_STACKBOTTOM,%ebx
-		jmp .Lrunning_in_os2
-	.Lrunning_in_dos:
-		movl __heap_brk,%ebx
-	.Lrunning_in_os2:
-		cmpl %eax,%ebx
-		jae  .Lshort_on_stack
-		leave
-		ret  $4
-	.Lshort_on_stack:
-	end ['EAX','EBX'];
-	{ this needs a local variable }
-	{ so the function called itself !! }
-	{ Writeln('low in stack ');}
-	RunError(202);
+        cmpb $2,U_SYSOS2_OS_MODE
+        jne .Lrunning_in_dos
+        movl U_SYSOS2_STACKBOTTOM,%ebx
+        jmp .Lrunning_in_os2
+    .Lrunning_in_dos:
+        movl __heap_brk,%ebx
+    .Lrunning_in_os2:
+        cmpl %eax,%ebx
+        jae  .Lshort_on_stack
+        leave
+        ret  $4
+    .Lshort_on_stack:
+    end ['EAX','EBX'];
+    { this needs a local variable }
+    { so the function called itself !! }
+    { Writeln('low in stack ');}
+    RunError(202);
 end;
 {no stack check in system }
 
 {****************************************************************************
 
-					Miscelleanious related routines.
+                    Miscelleanious related routines.
 
 ****************************************************************************}
 
 procedure halt(errnum:byte);
 
 begin
-	asm
-		movb $0x4c,%ah
-		movb errnum,%al
-		call syscall
-	end;
+    asm
+        movb $0x4c,%ah
+        movb errnum,%al
+        call syscall
+    end;
 end;
 
 function paramcount:longint;
 
 begin
-	 asm
-		movl _argc,%eax
-		decl %eax
-		leave
-		ret
-	 end ['EAX'];
+     asm
+        movl _argc,%eax
+        decl %eax
+        leave
+        ret
+     end ['EAX'];
 end;
 
 function paramstr(l:longint):string;
 
-	function args:pointer;
+    function args:pointer;
 
-	begin
-		asm
-			movl _argv,%eax
-			leave
-			ret
-		end ['EAX'];
-	end;
+    begin
+        asm
+            movl _argv,%eax
+            leave
+            ret
+        end ['EAX'];
+    end;
 
-var	p:^Pchar;
+var p:^Pchar;
 
 begin
-	 if	(l>=0) and (l<=paramcount) then
-		begin
-			p:=args;
-			paramstr:=strpas(p[l]);
-		end
-	 else paramstr:='';
+     if (l>=0) and (l<=paramcount) then
+        begin
+            p:=args;
+            paramstr:=strpas(p[l]);
+        end
+     else paramstr:='';
 end;
 
 procedure randomize;
 
-var	hl:longint;
+var hl:longint;
 
 begin
-	asm
-		movb $0x2c,%ah
-		call syscall
-		movw %cx,-4(%ebp)
-		movw %dx,-2(%ebp)
-	end;
-	randseed:=hl;
+    asm
+        movb $0x2c,%ah
+        call syscall
+        movw %cx,-4(%ebp)
+        movw %dx,-2(%ebp)
+    end;
+    randseed:=hl;
 end;
 
 {****************************************************************************
 
-					Heap management releated routines.
+                    Heap management releated routines.
 
 ****************************************************************************}
 
@@ -231,29 +231,29 @@ syscall $7f00 resizes the brk area}
 function sbrk(size:longint):longint;
 
 begin
-	asm
-		movl size,%edx
-		movw $0x7f00,%ax
-		call syscall
-		movl %eax,__RESULT
-	end;
+    asm
+        movl size,%edx
+        movw $0x7f00,%ax
+        call syscall
+        movl %eax,__RESULT
+    end;
 end;
 
 function getheapstart:pointer;
 
 begin
-	asm
-		movl __heap_base,%eax
-		leave
-		ret
-	end ['EAX'];
+    asm
+        movl __heap_base,%eax
+        leave
+        ret
+    end ['EAX'];
 end;
 
-{$i	heap.inc}
+{$i heap.inc}
 
 {****************************************************************************
 
-						  Low Level File Routines
+                          Low Level File Routines
 
 ****************************************************************************}
 
@@ -261,169 +261,169 @@ procedure allowslash(p:Pchar);
 
 {Allow slash as backslash.}
 
-var	i:longint;
+var i:longint;
 
 begin
-	for i:=0 to strlen(p) do
-		if p[i]='/' then p[i]:='\';
+    for i:=0 to strlen(p) do
+        if p[i]='/' then p[i]:='\';
 end;
 
 procedure do_close(h:longint);
 
 begin
-	 asm
-		movb $0x3e,%ah
-		mov	h,%ebx
-		call syscall
-	 end;
+     asm
+        movb $0x3e,%ah
+        mov h,%ebx
+        call syscall
+     end;
 end;
 
 procedure do_erase(p:Pchar);
 
 begin
-	allowslash(p);
-	asm
-		movl 8(%ebp),%edx
-		movb $0x41,%ah
-		call syscall
-		jnc	.LERASE1
-		movw %ax,inoutres;
-	.LERASE1:
-	end;
+    allowslash(p);
+    asm
+        movl 8(%ebp),%edx
+        movb $0x41,%ah
+        call syscall
+        jnc .LERASE1
+        movw %ax,inoutres;
+    .LERASE1:
+    end;
 end;
 
 procedure do_rename(p1,p2:Pchar);
 
 begin
-	allowslash(p1);
-	allowslash(p2);
-	asm
-		movl 8(%ebp),%edx
-		movl 12(%ebp),%edi
-		movb $0x56,%ah
-		call syscall
-		jnc	.LRENAME1
-		movw %ax,inoutres;
-	.LRENAME1:
-	end;
+    allowslash(p1);
+    allowslash(p2);
+    asm
+        movl 8(%ebp),%edx
+        movl 12(%ebp),%edi
+        movb $0x56,%ah
+        call syscall
+        jnc .LRENAME1
+        movw %ax,inoutres;
+    .LRENAME1:
+    end;
 end;
 
 function do_read(h,addr,len:longint):longint;
 
 begin
-	asm
-		movl 16(%ebp),%ecx
-		movl 12(%ebp),%edx
-		movl 8(%ebp),%ebx
-		movb $0x3f,%ah
-		call syscall
-		jnc	.LDOSREAD1
-		movw %ax,inoutres;
-		xorl %eax,%eax
-	.LDOSREAD1:
-		leave
-		ret	$12
-	end;
+    asm
+        movl 16(%ebp),%ecx
+        movl 12(%ebp),%edx
+        movl 8(%ebp),%ebx
+        movb $0x3f,%ah
+        call syscall
+        jnc .LDOSREAD1
+        movw %ax,inoutres;
+        xorl %eax,%eax
+    .LDOSREAD1:
+        leave
+        ret $12
+    end;
 end;
 
 function do_write(h,addr,len:longint) : longint;
 
 begin
-	asm
-		movl 16(%ebp),%ecx
-		movl 12(%ebp),%edx
-		movl 8(%ebp),%ebx
-		movb $0x40,%ah
-		call syscall
-		jnc	.LDOSWRITE1
-		movw %ax,inoutres;
-	.LDOSWRITE1:
-	   movl %eax,-4(%ebp)
-	end;
+    asm
+        movl 16(%ebp),%ecx
+        movl 12(%ebp),%edx
+        movl 8(%ebp),%ebx
+        movb $0x40,%ah
+        call syscall
+        jnc .LDOSWRITE1
+        movw %ax,inoutres;
+    .LDOSWRITE1:
+       movl %eax,-4(%ebp)
+    end;
 end;
 
 function do_filepos(handle:longint):longint;
 
 begin
-	asm
-		movw $0x4201,%ax
-		movl 8(%ebp),%ebx
-		xorl %edx,%edx
-		call syscall
-		jnc	.LDOSFILEPOS
-		movw %ax,inoutres;
-		xorl %eax,%eax
-	.LDOSFILEPOS:
-		leave
-		ret	$4
-	 end;
+    asm
+        movw $0x4201,%ax
+        movl 8(%ebp),%ebx
+        xorl %edx,%edx
+        call syscall
+        jnc .LDOSFILEPOS
+        movw %ax,inoutres;
+        xorl %eax,%eax
+    .LDOSFILEPOS:
+        leave
+        ret $4
+     end;
 end;
 
 procedure do_seek(handle,pos:longint);
 
 begin
-	asm
-		movw $0x4200,%ax
-		movl 8(%ebp),%ebx
-		movl 12(%ebp),%edx
-		call syscall
-		jnc .LDOSSEEK1
-		movw %ax,inoutres;
-	.LDOSSEEK1:
-		leave
-		ret $8
-	end;
+    asm
+        movw $0x4200,%ax
+        movl 8(%ebp),%ebx
+        movl 12(%ebp),%edx
+        call syscall
+        jnc .LDOSSEEK1
+        movw %ax,inoutres;
+    .LDOSSEEK1:
+        leave
+        ret $8
+    end;
 end;
 
 function do_seekend(handle:longint):longint;
 
 begin
-	asm
-		movw $0x4202,%ax
-		movl 8(%ebp),%ebx
-		xorl %edx,%edx
-		call syscall
-		jnc .Lset_at_end1
-		movw %ax,inoutres;
-		xorl %eax,%eax
-	.Lset_at_end1:
-		leave
-		ret $4
-	end;
+    asm
+        movw $0x4202,%ax
+        movl 8(%ebp),%ebx
+        xorl %edx,%edx
+        call syscall
+        jnc .Lset_at_end1
+        movw %ax,inoutres;
+        xorl %eax,%eax
+    .Lset_at_end1:
+        leave
+        ret $4
+    end;
 end;
 
 function do_filesize(handle:longint):longint;
 
-var	aktfilepos:longint;
+var aktfilepos:longint;
 
 begin
-	aktfilepos:=do_filepos(handle);
-	do_filesize:=do_seekend(handle);
-	do_seek(handle,aktfilepos);
+    aktfilepos:=do_filepos(handle);
+    do_filesize:=do_seekend(handle);
+    do_seek(handle,aktfilepos);
 end;
 
 procedure do_truncate(handle,pos:longint);
 
 begin
-	asm
-		movl $0x4200,%eax
-		movl 8(%ebp),%ebx
-		movl 12(%ebp),%edx
-		call syscall
-		jc .LTruncate1
-		movl 8(%ebp),%ebx
-		movl 12(%ebp),%edx
-		movl %ebp,%edx
-		xorl %ecx,%ecx
-		movb $0x40,%ah
-		call syscall
-		jnc .LTruncate2
-		.LTruncate1:
-		movw %ax,inoutres;
-		.LTruncate2:
-		leave
-		ret $8
-	end;
+    asm
+        movl $0x4200,%eax
+        movl 8(%ebp),%ebx
+        movl 12(%ebp),%edx
+        call syscall
+        jc .LTruncate1
+        movl 8(%ebp),%ebx
+        movl 12(%ebp),%edx
+        movl %ebp,%edx
+        xorl %ecx,%ecx
+        movb $0x40,%ah
+        call syscall
+        jnc .LTruncate2
+        .LTruncate1:
+        movw %ax,inoutres;
+        .LTruncate2:
+        leave
+        ret $8
+    end;
 end;
 
 procedure do_open(var f;p:pchar;flags:longint);
@@ -436,92 +436,92 @@ procedure do_open(var f;p:pchar;flags:longint);
   when (flags and $1000) there is no check for close (needed for textfiles)
 }
 
-var	oflags:byte;
+var oflags:byte;
 
 begin
-	allowslash(p);
-	{ close first if opened }
-	if ((flags and $1000)=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:=high(word);
-	oflags:=2;
-	{ convert filemode to filerec modes }
-	case (flags and 3) of
-		0 : begin
-			filerec(f).mode:=fminput;
-			oflags:=0;
-		end;
-		1 : filerec(f).mode:=fmoutput;
-		2 : filerec(f).mode:=fminout;
-	end;
-	if (flags and $100)<>0 then
-		begin
-			filerec(f).mode:=fmoutput;
-			oflags:=2;
-		end
-	else
-		if (flags and $10)<>0 then
-			begin
-				filerec(f).mode:=fmoutput;
-				oflags:=2;
-			end;
-	{ 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;
-	if (flags and $100)<>0 then
-		{Use create function.}
-		asm
-			movb $0x3c,%ah
-			movl p,%edx
-			xorw %cx,%cx
-			call syscall
-			jnc .LOPEN1
-			movw %ax,inoutres;
-			movw $0xffff,%ax
-		.LOPEN1:
-			movl f,%edx
-			movw %ax,(%edx)
-		end
-	else
-		{Use open function.}
-		asm
-			movb $0x3d,%ah
-			movb oflags,%al
-			movl p,%edx
-			call syscall
-			jnc .LOPEN2
-			movw %ax,inoutres;
-			movw $0xffff,%ax
-		.LOPEN2:
-			movl f,%edx
-			movw %ax,(%edx)
-		end;
-	if (flags and $10)<>0 then
-		do_seekend(filerec(f).handle);
+    allowslash(p);
+    { close first if opened }
+    if ((flags and $1000)=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:=high(word);
+    oflags:=2;
+    { convert filemode to filerec modes }
+    case (flags and 3) of
+        0 : begin
+            filerec(f).mode:=fminput;
+            oflags:=0;
+        end;
+        1 : filerec(f).mode:=fmoutput;
+        2 : filerec(f).mode:=fminout;
+    end;
+    if (flags and $100)<>0 then
+        begin
+            filerec(f).mode:=fmoutput;
+            oflags:=2;
+        end
+    else
+        if (flags and $10)<>0 then
+            begin
+                filerec(f).mode:=fmoutput;
+                oflags:=2;
+            end;
+    { 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;
+    if (flags and $100)<>0 then
+        {Use create function.}
+        asm
+            movb $0x3c,%ah
+            movl p,%edx
+            xorw %cx,%cx
+            call syscall
+            jnc .LOPEN1
+            movw %ax,inoutres;
+            movw $0xffff,%ax
+        .LOPEN1:
+            movl f,%edx
+            movw %ax,(%edx)
+        end
+    else
+        {Use open function.}
+        asm
+            movb $0x3d,%ah
+            movb oflags,%al
+            movl p,%edx
+            call syscall
+            jnc .LOPEN2
+            movw %ax,inoutres;
+            movw $0xffff,%ax
+        .LOPEN2:
+            movl f,%edx
+            movw %ax,(%edx)
+        end;
+    if (flags and $10)<>0 then
+        do_seekend(filerec(f).handle);
 end;
 
 {*****************************************************************************
-						   UnTyped File Handling
+                           UnTyped File Handling
 *****************************************************************************}
 
 {$i file.inc}
@@ -542,194 +542,194 @@ end;
 
 {****************************************************************************
 
-						  Directory related routines.
+                          Directory related routines.
 
 ****************************************************************************}
 
 {*****************************************************************************
-						   Directory Handling
+                           Directory Handling
 *****************************************************************************}
 
 procedure dosdir(func:byte;const s:string);
 
-var	buffer:array[0..255] of char;
+var buffer:array[0..255] of char;
 
 begin
-	move(s[1],buffer,length(s));
-	buffer[length(s)]:=#0;
-	allowslash(Pchar(@buffer));
-	asm
-		leal buffer,%edx
-		movb 8(%ebp),%ah
-		call syscall
-		jnc  .LDOS_DIRS1
-		movw %ax,inoutres;
-	.LDOS_DIRS1:
-	end;
+    move(s[1],buffer,length(s));
+    buffer[length(s)]:=#0;
+    allowslash(Pchar(@buffer));
+    asm
+        leal buffer,%edx
+        movb 8(%ebp),%ah
+        call syscall
+        jnc  .LDOS_DIRS1
+        movw %ax,inoutres;
+    .LDOS_DIRS1:
+    end;
 end;
 
 
 procedure mkdir(const s : string);
 
 begin
-	DosDir($39,s);
+    DosDir($39,s);
 end;
 
 
 procedure rmdir(const s : string);
 
 begin
-	DosDir($3a,s);
+    DosDir($3a,s);
 end;
 
 procedure chdir(const s : string);
 
 begin
-	DosDir($3b,s);
+    DosDir($3b,s);
 end;
 
 procedure getdir(drivenr : byte;var dir : string);
 
 {Written by Michael Van Canneyt.}
 
-var	temp:array[0..255] of char;
-	sof:Pchar;
-	i:byte;
+var temp:array[0..255] of char;
+    sof:Pchar;
+    i:byte;
 
 begin
-	sof:=pchar(@dir[4]);
-	{ dir[1..3] will contain '[drivenr]:\', but is not }
-	{ supplied by DOS, so we let dos string start at   }
-	{ dir[4]                                           }
-	{ Get dir from drivenr : 0=default, 1=A etc... }
-	asm
-		movb drivenr,%dl
-		movl sof,%esi
-		mov  $0x47,%ah
-		call syscall
-	end;
-	{ Now Dir should be filled with directory in ASCIIZ, }
-	{ starting from dir[4]                               }
-	dir[0]:=#3;
-	dir[2]:=':';
-	dir[3]:='\';
-	i:=4;
-	{Conversion to Pascal string }
-	while (dir[i]<>#0) do
-		begin
-			{ convert path name to DOS }
-			if dir[i]='/' then
-			dir[i]:='\';
-			dir[0]:=char(i);
-			inc(i);
-		end;
-	{ upcase the string (FPKPascal function) }
-	dir:=upcase(dir);
-	if drivenr<>0 then   { Drive was supplied. We know it }
-		dir[1]:=char(65+drivenr-1)
-	else
-		begin
-			{ We need to get the current drive from DOS function 19H  }
-			{ because the drive was the default, which can be unknown }
-			asm
-				movb $0x19,%ah
-				call syscall
-				addb $65,%al
-				movb %al,i
-			end;
-			dir[1]:=char(i);
-		end;
+    sof:=pchar(@dir[4]);
+    { dir[1..3] will contain '[drivenr]:\', but is not }
+    { supplied by DOS, so we let dos string start at   }
+    { dir[4]                                           }
+    { Get dir from drivenr : 0=default, 1=A etc... }
+    asm
+        movb drivenr,%dl
+        movl sof,%esi
+        mov  $0x47,%ah
+        call syscall
+    end;
+    { Now Dir should be filled with directory in ASCIIZ, }
+    { starting from dir[4]                               }
+    dir[0]:=#3;
+    dir[2]:=':';
+    dir[3]:='\';
+    i:=4;
+    {Conversion to Pascal string }
+    while (dir[i]<>#0) do
+        begin
+            { convert path name to DOS }
+            if dir[i]='/' then
+            dir[i]:='\';
+            dir[0]:=char(i);
+            inc(i);
+        end;
+    { upcase the string (FPKPascal function) }
+    dir:=upcase(dir);
+    if drivenr<>0 then   { Drive was supplied. We know it }
+        dir[1]:=char(65+drivenr-1)
+    else
+        begin
+            { We need to get the current drive from DOS function 19H  }
+            { because the drive was the default, which can be unknown }
+            asm
+                movb $0x19,%ah
+                call syscall
+                addb $65,%al
+                movb %al,i
+            end;
+            dir[1]:=char(i);
+        end;
 end;
 
 
 
 {****************************************************************************
 
-						System unit initialization.
+                        System unit initialization.
 
 ****************************************************************************}
 
 procedure OpenStdIO(var f:text;mode:word;hdl:longint);
 
 begin
-	Assign(f,'');
-	TextRec(f).Handle:=hdl;
-	TextRec(f).Mode:=mode;
-	TextRec(f).InOutFunc:=@FileInOutFunc;
-	TextRec(f).FlushFunc:=@FileInOutFunc;
-	TextRec(f).Closefunc:=@fileclosefunc;
+    Assign(f,'');
+    TextRec(f).Handle:=hdl;
+    TextRec(f).Mode:=mode;
+    TextRec(f).InOutFunc:=@FileInOutFunc;
+    TextRec(f).FlushFunc:=@FileInOutFunc;
+    TextRec(f).Closefunc:=@fileclosefunc;
 end;
 
-var	pib:Pprocessinfoblock;
-	tib:Pthreadinfoblock;
+var pib:Pprocessinfoblock;
+    tib:Pthreadinfoblock;
 
 begin
-	{Determine the operating system	we are running on.}
-	asm
-		movw $0x7f0a,%ax
-		call syscall
-		testw $512,%bx		   {Bit 9 is OS/2 flag.}
-		setnzl os_mode
-		testw $4096,%bx
-		jz .LnoRSX
-		movl $2,os_mode
-	.LnoRSX:
-	end;
-
-	{$ASMMODE DIRECT}
-	{Enable the brk area by initializing it with the initial heap size.}
-	asm
-		movw $0x7f01,%ax
-		movl HEAPSIZE,%edx
-		addl __heap_base,%edx
-		call ___SYSCALL
-		cmpl $-1,%eax
-		jnz Lheapok
-		pushl $204
-		{call RUNERROR$$WORD}
-	Lheapok:
-	end;
-	{$ASMMODE ATT}
-
-	{Now request, if we	are	running	under DOS,
-	 read-access to	the	first meg. of memory.}
-	if os_mode in [osDOS,osDPMI] then
-		asm
-			movw $0x7f13,%ax
-			xorl %ebx,%ebx
-			movl $0xfff,%ecx
-			xorl %edx,%edx
-			call syscall
-			movl %eax,first_meg
-		end
-	else
-		first_meg:=nil;
-	{At 0.9.2, case for enumeration does not work.}
-	case os_mode of
-		osDOS:
-			stackbottom:=0;		{In DOS mode, heap_brk is also the
-								 stack bottom.}
-		osOS2:
-			begin
-				dosgetinfoblocks(tib,pib);
-				stackbottom:=longint(tib^.stack);
-			end;
-		osDPMI:
-			stackbottom:=0;		{Not sure how to get it, but seems to be
-								 always zero.}
-	end;
-	exitproc:=nil;
-
-	{Initialize the heap.}
-	initheap;
-
-	{ to test stack depth }
-	loweststack:=maxlongint;
-
-	OpenStdIO(Input,fmInput,StdInputHandle);
-	OpenStdIO(Output,fmOutput,StdOutputHandle);
-	OpenStdIO(StdErr,fmOutput,StdErrorHandle);
-
-	{ kein Ein-	Ausgabefehler }
-	inoutres:=0;
+    {Determine the operating system we are running on.}
+    asm
+        movw $0x7f0a,%ax
+        call syscall
+        testw $512,%bx         {Bit 9 is OS/2 flag.}
+        setnzl os_mode
+        testw $4096,%bx
+        jz .LnoRSX
+        movl $2,os_mode
+    .LnoRSX:
+    end;
+
+    {$ASMMODE DIRECT}
+    {Enable the brk area by initializing it with the initial heap size.}
+    asm
+        movw $0x7f01,%ax
+        movl HEAPSIZE,%edx
+        addl __heap_base,%edx
+        call ___SYSCALL
+        cmpl $-1,%eax
+        jnz Lheapok
+        pushl $204
+        {call RUNERROR$$WORD}
+    Lheapok:
+    end;
+    {$ASMMODE ATT}
+
+    {Now request, if we are running under DOS,
+     read-access to the first meg. of memory.}
+    if os_mode in [osDOS,osDPMI] then
+        asm
+            movw $0x7f13,%ax
+            xorl %ebx,%ebx
+            movl $0xfff,%ecx
+            xorl %edx,%edx
+            call syscall
+            movl %eax,first_meg
+        end
+    else
+        first_meg:=nil;
+    {At 0.9.2, case for enumeration does not work.}
+    case os_mode of
+        osDOS:
+            stackbottom:=0;     {In DOS mode, heap_brk is also the
+                                 stack bottom.}
+        osOS2:
+            begin
+                dosgetinfoblocks(tib,pib);
+                stackbottom:=longint(tib^.stack);
+            end;
+        osDPMI:
+            stackbottom:=0;     {Not sure how to get it, but seems to be
+                                 always zero.}
+    end;
+    exitproc:=nil;
+
+    {Initialize the heap.}
+    initheap;
+
+    { to test stack depth }
+    loweststack:=maxlongint;
+
+    OpenStdIO(Input,fmInput,StdInputHandle);
+    OpenStdIO(Output,fmOutput,StdOutputHandle);
+    OpenStdIO(StdErr,fmOutput,StdErrorHandle);
+
+    { kein Ein- Ausgabefehler }
+    inoutres:=0;
 end.

Деякі файли не було показано, через те що забагато файлів було змінено