Browse Source

* use external names
* removed all direct assembler modes

peter 26 years ago
parent
commit
af8a04a5af

+ 13 - 5
rtl/go32v2/dos.pp

@@ -630,7 +630,12 @@ begin
 end;
 
 
-{$ASMMODE DIRECT}
+var
+  _swap_in  : pointer;external name '_swap_in';
+  _swap_out : pointer;external name '_swap_out';
+  _exception_exit : pointer;external name '_exception_exit';
+  _v2prt0_exceptions_on : longbool;external name '_v2prt0_exceptions_on';
+
 procedure swapvectors;
 begin
   DosError:=0;
@@ -644,15 +649,14 @@ begin
             orl  %eax,%eax
             je   .Lexceptions_off
             movl _swap_out,%eax
-            call *%eax
+            call  %eax
             jmp  .Lno_excep
          .Lexceptions_off:
             movl _swap_in,%eax
-            call *%eax
+            call %eax
          .Lno_excep:
   end;
 end;
-{$ASMMODE ATT}
 
 
 {******************************************************************************
@@ -986,7 +990,11 @@ End;
 end.
 {
   $Log$
-  Revision 1.3  1999-01-22 15:44:59  pierre
+  Revision 1.4  1999-03-01 15:40:48  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.3  1999/01/22 15:44:59  pierre
    Daniel change removed : broke make cycle !!
 
   Revision 1.2  1999/01/22 10:07:03  daniel

+ 47 - 60
rtl/go32v2/dpmiexcp.pp

@@ -106,7 +106,7 @@ function dpmi_set_coprocessor_emulation(flag : longint) : longint;
 
 implementation
 
-{$ASMMODE DIRECT}
+{$asmmode ATT}
 
 {$L exceptn.o}
 
@@ -123,8 +123,8 @@ var
   djgpp_dos_sel : word;external name '___djgpp_dos_sel';
   djgpp_exception_table : array[0..0] of pointer;external name '___djgpp_exception_table';
 
-procedure djgpp_i24;external name ' ___djgpp_i24';
-procedure djgpp_iret;external name ' ___djgpp_iret';
+procedure djgpp_i24;external name '___djgpp_i24';
+procedure djgpp_iret;external name '___djgpp_iret';
 procedure djgpp_npx_hdlr;external name '___djgpp_npx_hdlr';
 procedure djgpp_kbd_hdlr;external name '___djgpp_kbd_hdlr';
 procedure djgpp_kbd_hdlr_pc98;external name '___djgpp_kbd_hdlr_pc98';
@@ -133,8 +133,8 @@ procedure djgpp_cbrk_hdlr;external name '___djgpp_cbrk_hdlr';
 
 var
   exceptions_on : boolean;
-  old_int00 : tseginfo;cvar;external;
-  old_int75 : tseginfo;cvar;external;
+{  old_int00 : tseginfo;cvar;external;
+  old_int75 : tseginfo;cvar;external; }
 
 const
   cbrk_vect : byte = $1b;
@@ -188,12 +188,12 @@ end;
         movl    12(%esp),%eax
         movl    %eax,8(%esp)
         popl    %eax
-        jmp     FPC_setjmp
+        jmp     dpmi_setjmp
      end;
   end;
-  
-  
-function dpmi_setjmp(var rec : dpmi_jmp_buf) : longint;[alias : 'FPC_setjmp'];
+
+
+function dpmi_setjmp(var rec : dpmi_jmp_buf) : longint;
 begin
   asm
         pushl   %edi
@@ -229,7 +229,7 @@ begin
         movw    %fs,46(%edi)
         movw    %gs,48(%edi)
         movw    %ss,50(%edi)
-        movl    ___djgpp_exception_state_ptr, %eax
+        movl    djgpp_exception_state_ptr, %eax
         movl    %eax, 60(%edi)
         { restore EDI }
         pop     %edi
@@ -275,31 +275,24 @@ begin
         movl    28(%edi),%esi
         subl    $28,%esi        { We need 7 working longwords on stack }
         movl    60(%edi),%eax
-        es
-        movl    %eax,(%esi)     { Exception pointer }
+        movl    %eax,%es:(%esi)     { Exception pointer }
         movzwl  42(%edi),%eax
-        es
-        movl    %eax,4(%esi)    { DS }
+        movl    %eax,%es:4(%esi)    { DS }
         movl    20(%edi),%eax
-        es
-        movl    %eax,8(%esi)    { EDI }
+        movl    %eax,%es:8(%esi)    { EDI }
         movl    16(%edi),%eax
-        es
-        movl    %eax,12(%esi)   { ESI }
+        movl    %eax,%es:12(%esi)   { ESI }
         movl    32(%edi),%eax
-        es
-        movl    %eax,16(%esi)   { EIP - start of IRET frame }
+        movl    %eax,%es:16(%esi)   { EIP - start of IRET frame }
         movl    40(%edi),%eax
-        es
-        movl    %eax,20(%esi)   { CS }
+        movl    %eax,%es:20(%esi)   { CS }
         movl    36(%edi),%eax
-        es
-        movl    %eax,24(%esi)   { EFLAGS }
+        movl    %eax,%es:24(%esi)   { EFLAGS }
         movl    0(%edi),%eax
         movw    44(%edi),%es
         movw    50(%edi),%ss
         movl    %esi,%esp
-        popl    ___djgpp_exception_state_ptr
+        popl    djgpp_exception_state_ptr
         popl    %ds
         popl    %edi
         popl    %esi
@@ -501,6 +494,8 @@ end;
 
 const message_level : byte = 0;
 
+procedure ___exit(c:byte);cdecl;external name '___exit';
+
 function do_faulting_finish_message : integer;
 var
   en : pchar;
@@ -615,16 +610,13 @@ begin
 simple_exit:
   if exceptions_on then
     djgpp_exception_toggle;
-  asm
-     pushw $1
-     call  ___exit
-  end;
+  ___exit(1);
 end;
 
 
 function djgpp_exception_state:pexception_state;assembler;
 asm
-        movl    ___djgpp_exception_state_ptr,%eax
+        movl    djgpp_exception_state_ptr,%eax
 end;
 
 
@@ -636,9 +628,9 @@ begin
     exception_level:=1
   else
     inc(exception_level);
-    
+
   sig:=djgpp_exception_state_ptr^.__signum;
-  
+
   if (exception_level=1) or (sig=$78) then
     begin
        sig := except_to_sig(sig);
@@ -684,14 +676,13 @@ var
   cbrk_ori,
   cbrk_rmcb  : trealseginfo;
   cbrk_regs  : registers;
-
+  v2prt0_exceptions_on : longbool;external name '_v2prt0_exceptions_on';
 
 
 procedure djgpp_exception_toggle;[alias : '___djgpp_exception_toggle'];
 var
   _except : tseginfo;
   i : longint;
-  local_ex : boolean;
 begin
 {$ifdef DPMIEXCP_DEBUG}
   if exceptions_on then
@@ -702,11 +693,7 @@ begin
   { toggle here to avoid infinite recursion }
   { if a subfunction calls runerror !!      }
   exceptions_on:=not exceptions_on;
-  local_ex:=exceptions_on;
-  asm
-        movzbl  local_ex,%eax
-        movl    %eax,_v2prt0_exceptions_on
-  end;
+  v2prt0_exceptions_on:=exceptions_on;
   for i:=0 to EXCEPTIONCOUNT-1 do
    begin
      if get_pm_exception_handler(i,_except) then
@@ -779,6 +766,11 @@ begin
 end;
 
 
+var
+  _swap_in  : pointer;external name '_swap_in';
+  _swap_out : pointer;external name '_swap_out';
+  _exception_exit : pointer;external name '_exception_exit';
+
 procedure dpmiexcp_exit{(status : longint)};[public,alias : 'excep_exit'];
 { We need to restore hardware interrupt handlers even if somebody calls
   `_exit' directly, or else we crash the machine in nested programs.
@@ -787,12 +779,9 @@ procedure dpmiexcp_exit{(status : longint)};[public,alias : 'excep_exit'];
 begin
   if (exceptions_on) then
     djgpp_exception_toggle;
-  asm
-        xorl    %eax,%eax
-        movl    %eax,_exception_exit
-        movl    %eax,_swap_in
-        movl    %eax,_swap_out
-  end;
+  _exception_exit:=nil;
+  _swap_in:=nil;
+  _swap_out:=nil;
   { restore the FPU state }
   dpmi_set_coprocessor_emulation(1);
 end;
@@ -815,6 +804,9 @@ begin
 end;
 
 
+var
+  ___djgpp_app_DS : word;external name '___djgpp_app_DS';
+  ___djgpp_our_DS : word;external name '___djgpp_our_DS';
 
 procedure djgpp_exception_setup;[alias : '___djgpp_exception_setup'];
 var
@@ -825,17 +817,11 @@ var
   locksize    : longint;
   i           : longint;
 begin
-  asm
-        movl    _exception_exit,%eax
-        xorl    %eax,%eax
-        jne     .L_already
-        leal    excep_exit,%eax
-        movl    %eax,_exception_exit
-        leal    swap_in,%eax
-        movl    %eax,_swap_in
-        leal    swap_out,%eax
-        movl    %eax,_swap_out
-  end;
+  if assigned(_exception_exit) then
+   exit;
+  _exception_exit:=@dpmiexcp_exit;
+  _swap_in:=@dpmi_swap_in;
+  _swap_out:=@dpmi_swap_out;
 { reset signals }
   for i := 0 to  SIGMAX-1 do
    signal_list[i] := SignalHandler(@SIG_DFL);
@@ -872,9 +858,6 @@ begin
   djgpp_exception_toggle;    { Set new values & save old values }
 { get original video mode and save }
   old_video_mode := farpeekb(dosmemselector, $449);
-  asm
-        .L_already:
-  end;
 end;
 
 
@@ -907,7 +890,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.6  1999-02-05 12:49:25  pierre
+  Revision 1.7  1999-03-01 15:40:49  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.6  1999/02/05 12:49:25  pierre
    <> debug conditionnal renamed DPMIEXCP_DEBUG
 
   Revision 1.5  1999/01/22 15:46:33  pierre

+ 12 - 4
rtl/go32v2/emu387.pp

@@ -21,6 +21,8 @@ procedure npxsetup(prog_name : string);
 
 implementation
 
+{$asmmode ATT}
+
 uses
   dxeload,dpmiexcp,strings;
 
@@ -46,12 +48,12 @@ begin
 
         movl    mask2, %ecx
         notl    %ecx
-        andl    %eax, %ecx      /* the bits we want to keep */
+        andl    %eax, %ecx      { the bits we want to keep }
 
         movl    mask2, %edx
-        andl    mask1, %edx      /* the bits we want to change */
+        andl    mask1, %edx      { the bits we want to change }
 
-        orl     %ecx, %edx      /* the new value */
+        orl     %ecx, %edx      { the new value }
         pushl   %edx
         fldcw   (%esp)
         popl    %edx
@@ -137,6 +139,8 @@ begin
 end;
 
 
+function __detect_80387:byte;external name '__detect_80387';
+
 procedure npxsetup(prog_name : string);
 var
   cp : string;
@@ -212,7 +216,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.1  1998-12-21 13:07:02  peter
+  Revision 1.2  1999-03-01 15:40:50  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.1  1998/12/21 13:07:02  peter
     * use -FE
 
   Revision 1.9  1998/10/26 14:49:45  pierre

+ 23 - 8
rtl/go32v2/go32.pp

@@ -210,6 +210,8 @@ var
 
   implementation
 
+{$asmmode ATT}
+
 
     { the following procedures copy from and to DOS memory using DPMI }
     procedure dpmi_dosmemput(seg : word;ofs : word;var data;count : longint);
@@ -538,20 +540,20 @@ end ['EAX','EDX'];
       end;
 
 
-    procedure test_int31(flag : longint);[alias : 'test_int31'];
+    procedure test_int31(flag : longint);
       begin
          asm
             pushl %ebx
-            movw  $0,U_GO32_INT31ERROR
+            movw  $0,INT31ERROR
             movl  flag,%ebx
             testb $1,%bl
-            jz    1f
-            movw  %ax,U_GO32_INT31ERROR
+            jz    .Lti31_1
+            movw  %ax,INT31ERROR
             xorl  %eax,%eax
-            jmp   2f
-            1:
+            jmp   .Lti31_2
+            .Lti31_1:
             movl  $1,%eax
-            2:
+            .Lti31_2:
             popl  %ebx
          end;
       end;
@@ -702,6 +704,8 @@ end ['EAX','EDX'];
     { here we must use ___v2prt0_ds_alias instead of from v2prt0.s
     because the exception processor sets the ds limit to $fff
     at hardware exceptions }
+    var
+       ___v2prt0_ds_alias : word;external name '___v2prt0_ds_alias';
 
     function get_rm_callback(pm_func : pointer;const reg : trealregs;var rmcb : tseginfo) : boolean;
       begin
@@ -1072,6 +1076,10 @@ end ['EAX','EDX'];
          sti
       end;
 
+
+    var
+      _run_mode : word;external name '_run_mode';
+
     function get_run_mode : word;
 
       begin
@@ -1097,6 +1105,9 @@ end ['EAX','EDX'];
          end;
       end;
 
+    var
+      _core_selector : word;external name '_core_selector';
+
     function get_core_selector : word;
 
       begin
@@ -1159,7 +1170,11 @@ end.
 
 {
   $Log$
-  Revision 1.1  1998-12-21 13:07:03  peter
+  Revision 1.2  1999-03-01 15:40:51  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.1  1998/12/21 13:07:03  peter
     * use -FE
 
   Revision 1.12  1998/08/27 10:30:50  pierre

+ 39 - 50
rtl/go32v2/system.pp

@@ -138,7 +138,7 @@ var
   old_int75 : tseginfo;cvar;
 
 
-{$ASMMODE DIRECT}
+{$ASMMODE ATT}
 
 {*****************************************************************************
                               Go32 Helpers
@@ -163,8 +163,6 @@ asm
 end;
 end;
 
-{$ASMMODE ATT}
-
 
 function tb : longint;
 begin
@@ -294,14 +292,14 @@ begin
   atohex:=rv;
 end;
 
-
+var
+  _args : ppchar;external name '_args';
 procedure setup_arguments;
 type  arrayword = array [0..0] of word;
 var psp : word;
     i,j : byte;
     quote : char;
     proxy_s : string[7];
-    tempargv : ppchar;
     al,proxy_argc,proxy_seg,proxy_ofs,lin : longint;
     largs : array[0..127] of pchar;
     rm_argv : ^arrayword;
@@ -382,13 +380,7 @@ if (argc > 1) and (far_strlen(get_ds,longint(largs[1])) = 6)  then
 getmem(argv,argc shl 2);
 for i := 0 to argc-1  do
    argv[i] := largs[i];
-  tempargv:=argv;
-{$ASMMODE DIRECT}
-  asm
-     movl tempargv,%eax
-     movl %eax,_args
-  end;
-{$ASMMODE ATT}
+  _args:=argv;
 end;
 
 
@@ -419,19 +411,15 @@ begin
 end;
 
 
+var
+  __stubinfo : p_stub_info;external name '__stubinfo';
+  ___dos_argv0 : pchar;external name '___dos_argv0';
 procedure setup_environment;
 var env_selector : word;
     env_count : longint;
     dos_env,cp : pchar;
-    stubaddr : p_stub_info;
 begin
-{$ASMMODE DIRECT}
-   asm
-   movl __stubinfo,%eax
-   movl %eax,stubaddr
-   end;
-{$ASMMODE ATT}
-   stub_info:=stubaddr;
+   stub_info:=__stubinfo;
    getmem(dos_env,stub_info^.env_size);
    env_count:=0;
    sysseg_move(stub_info^.psp_selector,$2c, get_ds, longint(@env_selector), 2);
@@ -465,12 +453,7 @@ begin
   if (dos_argv0 = nil) then halt;
   strcopy(dos_argv0, cp);
   { update ___dos_argv0 also }
-{$ASMMODE DIRECT}
-  asm
-     movl U_SYSTEM_DOS_ARGV0,%eax
-     movl %eax,___dos_argv0
-  end;
-{$ASMMODE ATT}
+  ___dos_argv0:=dos_argv0
 end;
 
 
@@ -545,12 +528,14 @@ end;
 {*****************************************************************************
                          System Dependent Exit code
 *****************************************************************************}
+
+procedure ___exit(exitcode:byte);cdecl;external name '___exit';
+
 Procedure system_exit;
-{$ASMMODE DIRECT}
 {$ifdef SYSTEMDEBUG}
-  var h : byte;
+var
+  h : byte;
 {$endif SYSTEMDEBUG}
-
 begin
 {$ifdef SYSTEMDEBUG}
   for h:=0 to max_files do
@@ -561,15 +546,11 @@ begin
   { not on normal exit !! PM }
   set_pm_interrupt($00,old_int00);
   set_pm_interrupt($75,old_int75);
-  asm
-        movzbw  exitcode,%ax
-        pushw   %ax
-        call    ___exit         {frees all dpmi memory !!}
-  end;
+  ___exit(exitcode);
 end;
 
-procedure halt(errnum : byte);
 
+procedure halt(errnum : byte);
 begin
   exitcode:=errnum;
   do_exit;
@@ -595,6 +576,9 @@ begin
 end;
 
 
+var
+  __stkbottom : longint;external name '__stkbottom';
+
 procedure int_stackcheck(stack_size:longint);[public,alias:'FPC_STACKCHECK'];
 {
   called when trying to get local stack if the compiler directive $S
@@ -613,10 +597,10 @@ begin
         movl    %esp,%eax
         subl    %ebx,%eax
 {$ifdef SYSTEMDEBUG}
-        movl    U_SYSTEM_LOWESTSTACK,%ebx
+        movl    loweststack,%ebx
         cmpl    %eax,%ebx
         jb      .L_is_not_lowest
-        movl    %eax,U_SYSTEM_LOWESTSTACK
+        movl    %eax,loweststack
 .L_is_not_lowest:
 {$endif SYSTEMDEBUG}
         movl    __stkbottom,%ebx
@@ -633,8 +617,6 @@ begin
   end['EAX','EBX'];
   HandleError(202);
 end;
-{$ASMMODE ATT}
-
 
 
 {*****************************************************************************
@@ -671,19 +653,23 @@ end;
                               Heap Management
 *****************************************************************************}
 
-{$ASMMODE DIRECT}
+var
+  int_heap : longint;external name 'HEAP';
+  int_heapsize : longint;external name 'HEAPSIZE';
+
+function getheapstart:pointer;
+begin
+  getheapstart:=@int_heap;
+end;
 
-function getheapstart:pointer;assembler;
-asm
-        leal    HEAP,%eax
-end ['EAX'];
 
+function getheapsize:longint;
+begin
+  getheapsize:=int_heapsize;
+end;
 
-function getheapsize:longint;assembler;
-asm
-        movl    HEAPSIZE,%eax
-end ['EAX'];
 
+function ___sbrk(size:longint):longint;cdecl;external name '___sbrk';
 
 function Sbrk(size : longint):longint;assembler;
 asm
@@ -693,7 +679,6 @@ asm
         addl    $4,%esp
 end;
 
-{$ASMMODE ATT}
 
 { include standard heap management }
 {$I heap.inc}
@@ -1237,7 +1222,11 @@ Begin
 End.
 {
   $Log$
-  Revision 1.5  1999-01-18 10:05:50  pierre
+  Revision 1.6  1999-03-01 15:40:52  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.5  1999/01/18 10:05:50  pierre
    + system_exit procedure added
 
   Revision 1.4  1998/12/30 22:17:59  peter

File diff suppressed because it is too large
+ 568 - 567
rtl/go32v2/v2prt0.as


+ 22 - 12
rtl/i386/i386.inc

@@ -15,7 +15,8 @@
 
  **********************************************************************}
 
-{$ASMMODE ATT}
+{$asmmode ATT}
+
 
 {****************************************************************************
                                 Move / Fill
@@ -150,8 +151,6 @@ end;
                               Object Helpers
 ****************************************************************************}
 
-{$ASMMODE DIRECT}
-
 procedure int_help_constructor;assembler; [public,alias:'FPC_HELP_CONSTRUCTOR'];
 asm
 { Entry without preamble, since we need the ESP of the constructor
@@ -175,7 +174,7 @@ asm
       { Memory size }
         pushl   (%eax)
         pushl   %esi
-        call    FPC_GETMEM
+        call    GetMem
         popal
       { Memory position to %esi }
         movl    (%esi),%esi
@@ -249,12 +248,15 @@ asm
       { SELF }
         movl    %eax,(%edi)
         pushl   %edi
-        call    FPC_FREEMEM
+        call    FreeMem
         addl    $4,%esp
 .LHD_3:
         popal
 end;
 
+{$ifndef NEWATT}
+  {$asmmode DIRECT}
+{$endif}
 
 procedure int_new_class;assembler;[public,alias:'FPC_NEW_CLASS'];
 asm
@@ -291,7 +293,9 @@ asm
 .LDISPOSE_CLASS1:
 end;
 
-{$ASMMODE ATT}
+{$ifndef NEWATT}
+  {$asmmode att}
+{$endif}
 
 
 { checks for a correct vmt pointer }
@@ -495,12 +499,11 @@ begin
 end;
 
 
-{$ASMMODE DIRECT}
 function strpas(p:pchar):string;[public,alias:'FPC_PCHAR_TO_SHORTSTR'];
 begin
   asm
         cld
-        movl    12(%ebp),%edi
+        movl    p,%edi
         movl    $0xff,%ecx
         xorl    %eax,%eax
         movl    %edi,%esi
@@ -508,7 +511,11 @@ begin
         scasb
         movl    %ecx,%eax
 
+{$ifdef NEWATT1}
+        movl    __RESULT,%edi
+{$else}
         movl    8(%ebp),%edi
+{$endif}
         notb    %al
         decl    %eax
         stosb
@@ -531,7 +538,6 @@ begin
         movsb
   end ['ECX','EAX','ESI','EDI'];
 end;
-{$ASMMODE ATT}
 
 
 function strlen(p:pchar):longint;assembler;
@@ -643,7 +649,7 @@ begin
         incl    %ecx
 .LM2:
         cltd
-        idivl   %esi,%eax
+        idivl   %esi
         addb    $0x30,%dl       // convert Rest to ASCII.
         movb    %dl,-12(%ebp,%ebx)
         incl    %ebx
@@ -673,7 +679,7 @@ begin
         movl    $0x0a,%esi      // load 10 as dividing constant.
 .LM4:
         xorl    %edx,%edx
-        divl    %esi,%eax
+        divl    %esi
         addb    $0x30,%dl       // convert Rest to ASCII.
         movb    %dl,-12(%ebp,%ebx)
         incl    %ebx
@@ -739,7 +745,11 @@ end;
 
 {
   $Log$
-  Revision 1.40  1999-02-22 13:23:22  pierre
+  Revision 1.41  1999-03-01 15:40:55  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.40  1999/02/22 13:23:22  pierre
    * VMT field zeroed at destructor forgot offset !!
 
   Revision 1.39  1999/02/05 12:26:25  pierre

+ 12 - 202
rtl/i386/math.inc

@@ -14,209 +14,15 @@
 
  **********************************************************************}
 
-{$ASMMODE DIRECT}
-
-{$ifndef DEFAULT_EXTENDED}
-
-{****************************************************************************
-                       Real/Double data type routines
- ****************************************************************************}
-
-    function pi : real;assembler;
-      asm
-            fldpi
-            leave
-            ret
-      end [];
-
-
-    function abs(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fabs
-      end [];
-
-
-    function sqr(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fldl 8(%ebp)
-            fmulp
-      end [];
-
-
-    function sqrt(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fsqrt
-            leave
-            ret $8
-      end [];
-
-
-    function arctan(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fld1
-            fpatan
-      end [];
-
-
-    function cos(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fcos
-            fstsw
-            sahf
-            jnp .LCOS1
-            fstp %st(0)
-            fldl .LCOS0
-            jmp .LCOS1
-         .LCOS0:
-            .quad       0xffffffffffffffff
-         .LCOS1:
-      end ['EAX'];
-
-
-    function exp(d : real) : real;assembler;
-      asm
-            // comes from DJ GPP
-            fldl        8(%ebp)
-            fldl2e
-            fmulp
-            fstcw      .LCW1
-            fstcw      .LCW2
-            fwait
-            andw        $0xf3ff,.LCW2
-            orw $0x0400,.LCW2
-            fldcw      .LCW2
-            fldl        %st(0)
-            frndint
-            fldcw      .LCW1
-            fxch        %st(1)
-            fsub        %st(1),%st
-            f2xm1
-            fld1
-            faddp
-            fscale
-            fstp        %st(1)
-            jmp         .LCW3
-
-            // store some help data in the data segment
-            .data
-    .LCW1:
-            .word       0
-    .LCW2:
-            .word       0
-            .text
-    .LCW3:
-      end;
-
-
-    function frac(d : real) : real;assembler;
-         asm
-            subl $16,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw -4(%ebp),%cx
-            orw $0x0c3f,%cx
-            movw %cx,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            frndint
-            fldl 8(%ebp)
-            fsub %st(1)
-            fstp %st(1)
-            fclex
-            fldcw -4(%ebp)
-       end ['ECX'];
-
-
-    function int(d : real) : real;assembler;
-       asm
-            subl $16,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw -4(%ebp),%cx
-            orw $0x0c3f,%cx
-            movw %cx,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            frndint
-            fclex
-            fldcw -4(%ebp)
-      end ['ECX'];
-
-
-    function trunc(d : real) : longint;assembler;
-      asm
-            subl $16,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw -4(%ebp),%cx
-            orw $0x0c3f,%cx
-            movw %cx,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            fistpl -8(%ebp)
-            movl -8(%ebp),%eax
-            fldcw -4(%ebp)
-      end ['EAX','ECX'];
-
-
-    function round(d : real) : longint;assembler;
-      asm
-            subl $8,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw $0x1372,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            fistpl -8(%ebp)
-            movl -8(%ebp),%eax
-            fldcw -4(%ebp)
-      end ['EAX','ECX'];
-
-
-    function ln(d : real) : real;assembler;
-      asm
-            fldln2
-            fldl 8(%ebp)
-            fyl2x
-      end [];
-
-
-    function sin(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fsin
-            fstsw
-            sahf
-            jnp .LSIN1
-            fstp %st(0)
-            fldl .LSIN0
-            jmp .LSIN1
-         .LSIN0:
-            .quad       0xffffffffffffffff
-         .LSIN1:
-      end ['EAX'];
-
-
-   function power(bas,expo : real) : real;
-     begin
-        power:=exp(ln(bas)*expo);
-     end;
-
-{$else DEFAULT_EXTENDED}
 
 {****************************************************************************
                        EXTENDED data type routines
  ****************************************************************************}
 
+{$ifndef NEWATT}
+  {$asmmode DIRECT}
+{$endif}
+
     function pi : extended;assembler;[internconst:in_const_pi];
       asm
             fldpi
@@ -409,8 +215,6 @@
         power:=exp(ln(bas)*expo);
      end;
 
-{$endif DEFAULT_EXTENDED}
-
 
 {****************************************************************************
                        Longint data type routines
@@ -539,11 +343,17 @@
 
 {$endif SUPPORT_FIXED}
 
-{$ASMMODE ATT}
+{$ifndef NEWATT}
+  {$asmmode ATT}
+{$endif}
 
 {
   $Log$
-  Revision 1.13  1998-12-15 22:42:56  peter
+  Revision 1.14  1999-03-01 15:40:57  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.13  1998/12/15 22:42:56  peter
     * removed temp symbols
 
   Revision 1.12  1998/11/24 12:54:57  peter

+ 166 - 165
rtl/i386/rttip.inc

@@ -14,94 +14,93 @@
  **********************************************************************}
 
 { Run-Time type information routines - processor dependent part }
-{$ASMMODE DIRECT}
 
 Procedure Initialize (Data,TypeInfo : pointer);[Public,Alias:'FPC_INITIALIZE'];assembler;
 asm
-# Save registers
+// Save registers
         push    %eax
         push    %ebx
         push    %ecx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
-# This is MANIFESTLY wrong
+// This is MANIFESTLY wrong
         subb    $9,%al
-        jz      .DoAnsiStringInit
+        jz      .LDoAnsiStringInit
         decb    %al
-        jz      .DoAnsiStringInit
+        jz      .LDoAnsiStringInit
         subb    $3,%al
-        jz      .DoArrayInit
+        jz      .LDoArrayInit
         decb    %al
-        jz      .DoRecordInit
+        jz      .LDoRecordInit
         decb    %al
         decb    %al
-        jz      .DoObjectInit
+        jz      .LDoObjectInit
         decb    %al
-        jz      .DoClassInit
-        jmp     .ExitInitialize
-.DoObjectInit:
-.DoClassInit:
-.DoRecordInit:
+        jz      .LDoClassInit
+        jmp     .LExitInitialize
+.LDoObjectInit:
+.LDoClassInit:
+.LDoRecordInit:
         incl    %ebx
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordInitLoop:
+// %ebx points to First element in record
+.LMyRecordInitLoop:
         decl    %edx
-        jl      .ExitInitialize
-# %ebx points to typeinfo pointer
-# Push type
+        jl      .LExitInitialize
+// %ebx points to typeinfo pointer
+// Push type
         pushl    (%ebx)
         addl     $4,%ebx
-# %ebx points to offset in record.
-# Us it to calculate data
+// %ebx points to offset in record.
+// Us it to calculate data
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
-        call    FPC_INITIALIZE
-        jmp     .MyRecordInitLoop
-# Array handling
-.DoArrayInit:
-# Skip array name !!
+        call    INITIALIZE
+        jmp     .LMyRecordInitLoop
+// Array handling
+.LDoArrayInit:
+// Skip array name !!
         incl    %ebx
         movzbl  (%ebx),%eax
         incl    %eax
         addl    %eax,%ebx
-# %ebx points to size. Put size in ecx
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayInitLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayInitLoop:
         decl    %edx
-        jl      .ExitInitialize
-# push type
+        jl      .LExitInitialize
+// push type
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
-        call    FPC_INITIALIZE
-        jmp     .MyArrayInitLoop
-# AnsiString handling :
-.DoAnsiStringInit:
+        call    INITIALIZE
+        jmp     .LMyArrayInitLoop
+// AnsiString handling :
+.LDoAnsiStringInit:
         movl 8(%ebp), %eax
         movl $0,(%eax)
-.ExitInitialize:
+.LExitInitialize:
         pop     %edx
         pop     %ecx
         pop     %ebx
@@ -115,84 +114,84 @@ asm
         push    %ebx
         push    %ecx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         subb    $9,%al
-        jz      .DoAnsiStringFinal
+        jz      .LDoAnsiStringFinal
         decb    %al
-        jz      .DoAnsiStringFinal
+        jz      .LDoAnsiStringFinal
         subb    $3,%al
-        jz      .DoArrayFinal
+        jz      .LDoArrayFinal
         decb    %al
-        jz      .DoRecordFinal
+        jz      .LDoRecordFinal
         decb    %al
         decb    %al
-        jz      .DoObjectFinal
+        jz      .LDoObjectFinal
         decb    %al
-        jz      .DoClassFinal
-        jmp     .ExitFinalize
-.DoClassFinal:
-.DoObjectFinal:
-.DoRecordFinal:
+        jz      .LDoClassFinal
+        jmp     .LExitFinalize
+.LDoClassFinal:
+.LDoObjectFinal:
+.LDoRecordFinal:
         incl    %ebx
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordFinalLoop:
+// %ebx points to First element in record
+.LMyRecordFinalLoop:
         decl    %edx
-        jl      .ExitFinalize
-# %ebx points to typeinfo pointer
-# Push type
+        jl      .LExitFinalize
+// %ebx points to typeinfo pointer
+// Push type
         pushl    (%ebx)
         addl     $4,%ebx
-# %ebx points to offset.
-# Use to calculate data
+// %ebx points to offset.
+// Use to calculate data
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
-        call    FPC_FINALIZE
-        jmp     .MyRecordFinalLoop
-# Array handling
-.DoArrayFinal:
-# Skip array name !!
+        call    FINALIZE
+        jmp     .LMyRecordFinalLoop
+// Array handling
+.LDoArrayFinal:
+// Skip array name !!
         incl    %ebx
         movzbl  (%ebx),%eax
         incl    %eax
         addl    %eax,%ebx
-# %ebx points to size. Put size in ecx
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayFinalLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayFinalLoop:
         decl    %edx
-        jl      .ExitFinalize
-# push type
+        jl      .LExitFinalize
+// push type
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
-        call    FPC_FINALIZE
-        jmp     .MyArrayFinalLoop
-# AnsiString handling :
-.DoAnsiStringFinal:
+        call    FINALIZE
+        jmp     .LMyArrayFinalLoop
+// AnsiString handling :
+.LDoAnsiStringFinal:
         pushl   8(%ebp)
-        call    FPC_ANSISTR_DECR_REF
-.ExitFinalize:
+        call    ANSISTR_DECR_REF
+.LExitFinalize:
         pop     %edx
         pop     %ecx
         pop     %ebx
@@ -202,82 +201,82 @@ end;
 
 Procedure Addref (Data,TypeInfo : Pointer); [Public,alias : 'FPC_ADDREF'];Assembler;
 asm
-# Save registers
+// Save registers
         push    %eax
         push    %ebx
         push    %ecx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         subb    $9,%al
-        jz      .DoAnsiStringAddRef
+        jz      .LDoAnsiStringAddRef
         decb    %al
-        jz      .DoAnsiStringAddRef
+        jz      .LDoAnsiStringAddRef
         subb    $2,%al
-        jz      .DoArrayAddRef
+        jz      .LDoArrayAddRef
         decb    %al
-        jz      .DoRecordAddRef
+        jz      .LDoRecordAddRef
         decb    %al
         decb    %al
-        jz      .DoObjectAddRef
+        jz      .LDoObjectAddRef
         decb    %al
-        jz      .DoClassAddRef
-        jmp     .ExitAddRef
-.DoClassAddRef:
-.DoObjectAddRef:
-.DoRecordAddRef:
+        jz      .LDoClassAddRef
+        jmp     .LExitAddRef
+.LDoClassAddRef:
+.LDoObjectAddRef:
+.LDoRecordAddRef:
         incl    %ebx
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordAddRefLoop:
+// %ebx points to First element in record
+.LMyRecordAddRefLoop:
         decl    %edx
-        jl      .ExitAddRef
-# Calculate data
+        jl      .LExitAddRef
+// Calculate data
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
-# Push type
+// Push type
         pushl    (%ebx)
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
-        call    FPC_ADDREF
-        jmp     .MyRecordAddRefLoop
-# Array handling
-.DoArrayAddRef:
-# %ebx points to size. Put size in ecx
+        call    ADDREF
+        jmp     .LMyRecordAddRefLoop
+// Array handling
+.LDoArrayAddRef:
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayAddRefLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayAddRefLoop:
         decl    %edx
-        jl      .ExitAddRef
-# push type
+        jl      .LExitAddRef
+// push type
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
-        call    FPC_ADDREF
-        jmp     .MyArrayAddRefLoop
-# AnsiString handling :
-.DoAnsiStringAddRef:
+        call    ADDREF
+        jmp     .LMyArrayAddRefLoop
+// AnsiString handling :
+.LDoAnsiStringAddRef:
         pushl   8(%ebp)
-        call    FPC_ANSISTR_INCR_REF
-.ExitAddRef:
+        call    ANSISTR_INCR_REF
+.LExitAddRef:
         pop     %edx
         pop     %ecx
         pop     %ebx
@@ -287,94 +286,96 @@ end;
 
 Procedure DecRef (Data,TypeInfo : Pointer); [Public,alias : 'FPC_DECREF'];Assembler;
 asm
-# Save registers
+// Save registers
         push    %eax
         push    %ebx
         push    %ecx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         subb    $9,%al
-        jz      .DoAnsiStringDecRef
+        jz      .LDoAnsiStringDecRef
         decb    %al
-        jz      .DoAnsiStringDecRef
+        jz      .LDoAnsiStringDecRef
         subb    $2,%al
-        jz      .DoArrayDecRef
+        jz      .LDoArrayDecRef
         decb    %al
-        jz      .DoRecordDecRef
+        jz      .LDoRecordDecRef
         decb    %al
         decb    %al
-        jz      .DoObjectDecRef
+        jz      .LDoObjectDecRef
         decb    %al
-        jz      .DoClassDecRef
-        jmp     .ExitDecRef
-.DoClassDecRef:
-.DoObjectDecRef:
-.DoRecordDecRef:
+        jz      .LDoClassDecRef
+        jmp     .LExitDecRef
+.LDoClassDecRef:
+.LDoObjectDecRef:
+.LDoRecordDecRef:
         incl    %ebx
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordDecRefLoop:
+// %ebx points to First element in record
+.LMyRecordDecRefLoop:
         decl    %edx
-        jl      .ExitDecRef
-# Calculate data
+        jl      .LExitDecRef
+// Calculate data
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
-# Push type
+// Push type
         pushl    (%ebx)
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
-        call    FPC_DECREF
-        jmp     .MyRecordDecRefLoop
-# Array handling
-.DoArrayDecRef:
-# %ebx points to size. Put size in ecx
+        call    DECREF
+        jmp     .LMyRecordDecRefLoop
+// Array handling
+.LDoArrayDecRef:
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayDecRefLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayDecRefLoop:
         decl    %edx
-        jl      .ExitDecRef
-# push type
+        jl      .LExitDecRef
+// push type
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
-        call    FPC_DECREF
-        jmp     .MyArrayDecRefLoop
-# AnsiString handling :
-.DoAnsiStringDecRef:
+        call    DECREF
+        jmp     .LMyArrayDecRefLoop
+// AnsiString handling :
+.LDoAnsiStringDecRef:
         movl    8(%ebp),%eax
         pushl   %eax
-        call    FPC_ANSISTR_DECR_REF
-.ExitDecRef:
+        call    ANSISTR_DECR_REF
+.LExitDecRef:
         pop     %edx
         pop     %ecx
         pop     %ebx
         pop     %eax
 end;
 
-{$ASMMODE DEFAULT}
-
 {
   $Log$
-  Revision 1.15  1998-12-20 14:08:06  michael
+  Revision 1.16  1999-03-01 15:40:58  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.15  1998/12/20 14:08:06  michael
   + Finalize fixed after florians fix :)
 
   Revision 1.14  1998/12/19 00:22:09  florian

+ 5 - 3
rtl/i386/set.inc

@@ -14,8 +14,6 @@
 
  **********************************************************************}
 
-{$ASMMODE ATT}
-
 procedure do_load_small(p : pointer;l:longint);assembler;[public,alias:'FPC_SET_LOAD_SMALL'];
 {
   load a normal set p from a smallset l
@@ -430,7 +428,11 @@ end;
 
 {
   $Log$
-  Revision 1.9  1999-01-20 17:48:02  jonas
+  Revision 1.10  1999-03-01 15:40:59  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.9  1999/01/20 17:48:02  jonas
     + fixed bug0163 (set1 <= set2 support)
 
   Revision 1.8  1998/12/15 22:43:00  peter

+ 6 - 6
rtl/i386/setjump.inc

@@ -14,8 +14,6 @@
 
  **********************************************************************}
 
-{$ASMMODE DIRECT}
-
 Function SetJmp (Var S : Jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];
 asm
   movl 8(%ebp),%eax
@@ -45,14 +43,16 @@ asm
   movl 8(%ecx),%edi
   movl 12(%ecx),%ebp
   movl 16(%ecx),%esp
-  jmp *20(%ecx)
+  jmp 20(%ecx)
 end;
 
-{$ASMMODE ATT}
-
 {
   $Log$
-  Revision 1.4  1998-09-14 10:48:13  peter
+  Revision 1.5  1999-03-01 15:41:00  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.4  1998/09/14 10:48:13  peter
     * FPC_ names
     * Heap manager is now system independent
 

+ 14 - 7
rtl/i386/stringss.inc

@@ -3,9 +3,9 @@
     This file is part of the Free Pascal run time library.
     Copyright (c) 1998 by the Free Pascal development team
 
-    Processor dependent part of strings.pp, not shared with 
+    Processor dependent part of strings.pp, not shared with
     sysutils unit.
-    
+
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
 
@@ -15,12 +15,11 @@
 
  **********************************************************************}
 
-{$ASMMODE DIRECT}
     function strpas(p : pchar) : string;
     begin
       asm
         cld
-        movl    12(%ebp),%edi
+        movl    p,%edi
         movl    $0xff,%ecx
         xorl    %eax,%eax
         movl    %edi,%esi
@@ -28,7 +27,11 @@
         scasb
         movl    %ecx,%eax
 
+{$ifdef NEWATT1}
+        movl    __RESULT,%edi
+{$else}
         movl    8(%ebp),%edi
+{$endif}
         notb    %al
         decl    %eax
         stosb
@@ -51,7 +54,7 @@
         movsb
       end ['ECX','EAX','ESI','EDI'];
     end;
-{$ASMMODE ATT}
+
 
     function strpcopy(d : pchar;const s : string) : pchar;
 
@@ -77,7 +80,11 @@
 
 {
   $Log$
-  Revision 1.2  1999-02-25 10:07:02  michael
+  Revision 1.3  1999-03-01 15:41:01  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.2  1999/02/25 10:07:02  michael
   + Added header and log
 
-}
+}

+ 13 - 19
rtl/inc/astrings.inc

@@ -37,8 +37,8 @@
 
 Function  NewAnsiString (Len : Longint) : Pointer; forward;
 Procedure DisposeAnsiString (Var S : Pointer); forward;
-Procedure Decr_Ansi_Ref (Var S : Pointer); forward;
-Procedure Incr_Ansi_Ref (Var S : Pointer); forward;
+Procedure AnsiStr_Decr_Ref (Var S : Pointer); forward;
+Procedure AnsiStr_Incr_Ref (Var S : Pointer); forward;
 Procedure AssignAnsiString (Var S1 : Pointer; S2 : Pointer); forward;
 Function  Ansi_String_Concat (S1,S2 : Pointer): Pointer; forward;
 Procedure Ansi_ShortString_Concat (Var S1: AnsiString; Var S2 : ShortString); forward;
@@ -114,7 +114,7 @@ begin
 end;
 
 
-Procedure Decr_Ansi_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_DECR_REF'];
+Procedure AnsiStr_Decr_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_DECR_REF'];
 {
   Decreases the ReferenceCount of a non constant ansistring;
   If the reference count is zero, deallocate the string;
@@ -136,7 +136,7 @@ Begin
 end;
 
 
-Procedure Incr_Ansi_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_INCR_REF'];
+Procedure AnsiStr_Incr_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_INCR_REF'];
 Begin
   If S=Nil then
     exit;
@@ -161,7 +161,7 @@ begin
     SNew:=NewAnsiString (PAnsiRec(Pointer(S)-FirstOff)^.len);
     Move (Pointer(S)^,SNew^,PAnsiRec(Pointer(S)-FirstOff)^.len+1);
     PAnsiRec(SNew-FirstOff)^.len:=PAnsiRec(Pointer(S)-FirstOff)^.len;
-    Decr_Ansi_Ref (Pointer(S));  { Thread safe }
+    ansistr_decr_ref (Pointer(S));  { Thread safe }
     Pointer(S):=SNew;
     end;
 end;
@@ -176,7 +176,7 @@ begin
     If PAnsiRec(S2-FirstOff)^.Ref>0 then
       Inc(PAnsiRec(S2-FirstOff)^.ref);
   { Decrease the reference count on the old S1 }
-  Decr_Ansi_Ref (S1);
+  ansistr_decr_ref (S1);
   { And finally, have S1 pointing to S2 (or its copy) }
   S1:=S2;
 end;
@@ -309,16 +309,6 @@ begin
 end;
 }
 
-{ stupid solution, could be done with public,name in later versions }
-{$ASMMODE DIRECT}
-procedure dummy;assembler;
-  asm
-     .globl FPC_EMPTYCHAR
-     FPC_EMPTYCHAR:
-     .byte 0
-  end;
-{$ASMMODE ATT}
-
 
 Function AnsiCompare(S1,S2 : Pointer): Longint;[Public,Alias : 'FPC_ANSISTR_COMPARE'];
 {
@@ -439,7 +429,7 @@ begin
       Temp:=Pointer(NewAnsiString(L));
       if Length(S)>0 then
         Move (Pointer(S)^,Temp^,Length(S)+1);
-      Decr_Ansi_ref (Pointer(S));
+      ansistr_decr_ref (Pointer(S));
       Pointer(S):=Temp;
       end
     else
@@ -450,7 +440,7 @@ begin
   else
     { Length=0 }
     begin
-    Decr_Ansi_Ref (Pointer(S));
+    ansistr_decr_ref (Pointer(S));
     Pointer(S):=Nil;
     end;
 end;
@@ -741,7 +731,11 @@ end;
 
 {
   $Log$
-  Revision 1.11  1999-02-04 14:55:42  michael
+  Revision 1.12  1999-03-01 15:41:02  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.11  1999/02/04 14:55:42  michael
   * Fixed pos
 
   Revision 1.10  1999/02/04 10:49:21  florian

+ 10 - 1
rtl/inc/system.inc

@@ -42,6 +42,11 @@ const
 { For Error Handling.}
   ErrorBase : Longint = 0;
 
+{ Used by the ansistrings and maybe also other things in the future }
+var
+  emptychar : char;public name 'FPC_EMPTYCHAR';
+
+
 {****************************************************************************
                      Routines which have compiler magic
 ****************************************************************************}
@@ -480,7 +485,11 @@ end;
 
 {
   $Log$
-  Revision 1.54  1999-02-01 00:05:14  florian
+  Revision 1.55  1999-03-01 15:41:03  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.54  1999/02/01 00:05:14  florian
     + functions lo/hi for DWord type implemented
 
   Revision 1.53  1999/01/29 09:23:09  pierre

+ 6 - 2
rtl/inc/text.inc

@@ -913,7 +913,7 @@ var
   maxlen,spos,len : longint;
 Begin
 { Delete the string }
-  Decr_ansi_ref (Pointer(S));
+  AnsiStr_Decr_ref (Pointer(S));
   { We assign room for 1024 characters totally at random.... }
   Pointer(s):=Pointer(NewAnsiString(1024));
   MaxLen:=1024;
@@ -1201,7 +1201,11 @@ end;
 
 {
   $Log$
-  Revision 1.39  1999-02-17 10:13:29  peter
+  Revision 1.40  1999-03-01 15:41:04  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.39  1999/02/17 10:13:29  peter
     * when error when opening a file, then reset the mode to fmclosed
 
   Revision 1.38  1999/01/28 19:38:19  peter

Some files were not shown because too many files changed in this diff