* Updated to current compiler & rtl.

This commit is contained in:
daniel 1998-06-15 15:13:47 +00:00
parent d98d32acc5
commit 3a5a4d2509

View File

@ -102,14 +102,15 @@ const UnusedHandle=$ffff;
implementation
{ die betriebssystemunabhangigen Implementationen einfuegen: }
{$I SYSTEM.INC}
procedure dosgetinfoblocks(var Atib:Pthreadinfoblock;
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.
@ -129,22 +130,22 @@ begin
{$ifdef SYSTEMDEBUG}
movl U_SYSOS2_LOWESTSTACK,%ebx
cmpl %eax,%ebx
jb _is_not_lowest
jb .Lis_not_lowest
movl %eax,U_SYSOS2_LOWESTSTACK
_is_not_lowest:
.Lis_not_lowest:
{$endif SYSTEMDEBUG}
cmpb $2,U_SYSOS2_OS_MODE
jne _running_in_dos
jne .Lrunning_in_dos
movl U_SYSOS2_STACKBOTTOM,%ebx
jmp _running_in_os2
_running_in_dos:
jmp .Lrunning_in_os2
.Lrunning_in_dos:
movl __heap_brk,%ebx
_running_in_os2:
.Lrunning_in_os2:
cmpl %eax,%ebx
jae __short_on_stack
jae .Lshort_on_stack
leave
ret $4
__short_on_stack:
.Lshort_on_stack:
end ['EAX','EBX'];
{ this needs a local variable }
{ so the function called itself !! }
@ -165,7 +166,7 @@ begin
asm
movb $0x4c,%ah
movb errnum,%al
call ___SYSCALL
call syscall
end;
end;
@ -210,7 +211,7 @@ var hl:longint;
begin
asm
movb $0x2c,%ah
call ___SYSCALL
call syscall
movw %cx,-4(%ebp)
movw %dx,-2(%ebp)
end;
@ -233,7 +234,7 @@ begin
asm
movl size,%edx
movw $0x7f00,%ax
call ___SYSCALL
call syscall
movl %eax,__RESULT
end;
end;
@ -273,7 +274,7 @@ begin
asm
movb $0x3e,%ah
mov h,%ebx
call ___SYSCALL
call syscall
end;
end;
@ -284,10 +285,10 @@ begin
asm
movl 8(%ebp),%edx
movb $0x41,%ah
call ___SYSCALL
jnc LERASE1
movw %ax,U_SYSOS2_INOUTRES;
LERASE1:
call syscall
jnc .LERASE1
movw %ax,inoutres;
.LERASE1:
end;
end;
@ -300,10 +301,10 @@ begin
movl 8(%ebp),%edx
movl 12(%ebp),%edi
movb $0x56,%ah
call ___SYSCALL
jnc LRENAME1
movw %ax,U_SYSOS2_INOUTRES;
LRENAME1:
call syscall
jnc .LRENAME1
movw %ax,inoutres;
.LRENAME1:
end;
end;
@ -315,11 +316,11 @@ begin
movl 12(%ebp),%edx
movl 8(%ebp),%ebx
movb $0x3f,%ah
call ___SYSCALL
jnc LDOSREAD1
movw %ax,U_SYSOS2_INOUTRES;
call syscall
jnc .LDOSREAD1
movw %ax,inoutres;
xorl %eax,%eax
LDOSREAD1:
.LDOSREAD1:
leave
ret $12
end;
@ -333,10 +334,10 @@ begin
movl 12(%ebp),%edx
movl 8(%ebp),%ebx
movb $0x40,%ah
call ___SYSCALL
jnc LDOSWRITE1
movw %ax,U_SYSOS2_INOUTRES;
LDOSWRITE1:
call syscall
jnc .LDOSWRITE1
movw %ax,inoutres;
.LDOSWRITE1:
movl %eax,-4(%ebp)
end;
end;
@ -348,11 +349,11 @@ begin
movw $0x4201,%ax
movl 8(%ebp),%ebx
xorl %edx,%edx
call ___SYSCALL
jnc LDOSFILEPOS
movw %ax,U_SYSOS2_INOUTRES;
call syscall
jnc .LDOSFILEPOS
movw %ax,inoutres;
xorl %eax,%eax
LDOSFILEPOS:
.LDOSFILEPOS:
leave
ret $4
end;
@ -365,9 +366,9 @@ begin
movw $0x4200,%ax
movl 8(%ebp),%ebx
movl 12(%ebp),%edx
call ___SYSCALL
call syscall
jnc .LDOSSEEK1
movw %ax,U_SYSOS2_INOUTRES;
movw %ax,inoutres;
.LDOSSEEK1:
leave
ret $8
@ -381,9 +382,9 @@ begin
movw $0x4202,%ax
movl 8(%ebp),%ebx
xorl %edx,%edx
call ___SYSCALL
call syscall
jnc .Lset_at_end1
movw %ax,U_SYSOS2_INOUTRES;
movw %ax,inoutres;
xorl %eax,%eax
.Lset_at_end1:
leave
@ -408,17 +409,17 @@ begin
movl $0x4200,%eax
movl 8(%ebp),%ebx
movl 12(%ebp),%edx
call ___SYSCALL
call syscall
jc .LTruncate1
movl 8(%ebp),%ebx
movl 12(%ebp),%edx
movl %ebp,%edx
xorl %ecx,%ecx
movb $0x40,%ah
call ___SYSCALL
call syscall
jnc .LTruncate2
.LTruncate1:
movw %ax,U_SYSOS2_INOUTRES;
movw %ax,inoutres;
.LTruncate2:
leave
ret $8
@ -493,11 +494,11 @@ begin
movb $0x3c,%ah
movl p,%edx
xorw %cx,%cx
call ___SYSCALL
jnc LOPEN1
movw %ax,U_SYSOS2_INOUTRES;
call syscall
jnc .LOPEN1
movw %ax,inoutres;
movw $0xffff,%ax
LOPEN1:
.LOPEN1:
movl f,%edx
movw %ax,(%edx)
end
@ -507,11 +508,11 @@ begin
movb $0x3d,%ah
movb oflags,%al
movl p,%edx
call ___SYSCALL
jnc LOPEN2
movw %ax,U_SYSOS2_INOUTRES;
call syscall
jnc .LOPEN2
movw %ax,inoutres;
movw $0xffff,%ax
LOPEN2:
.LOPEN2:
movl f,%edx
movw %ax,(%edx)
end;
@ -560,9 +561,9 @@ begin
asm
leal buffer,%edx
movb 8(%ebp),%ah
call ___SYSCALL
call syscall
jnc .LDOS_DIRS1
movw %ax,U_SYSOS2_INOUTRES;
movw %ax,inoutres;
.LDOS_DIRS1:
end;
end;
@ -605,7 +606,7 @@ begin
movb drivenr,%dl
movl sof,%esi
mov $0x47,%ah
call ___SYSCALL
call syscall
end;
{ Now Dir should be filled with directory in ASCIIZ, }
{ starting from dir[4] }
@ -632,7 +633,7 @@ begin
{ because the drive was the default, which can be unknown }
asm
movb $0x19,%ah
call ___SYSCALL
call syscall
addb $65,%al
movb %al,i
end;
@ -666,38 +667,40 @@ begin
{Determine the operating system we are running on.}
asm
movw $0x7f0a,%ax
call ___SYSCALL
test $512,%bx {Bit 9 is OS/2 flag.}
setnzb U_SYSOS2_OS_MODE
test $4096,%bx
jz _noRSX
movb $2,U_SYSOS2_OS_MODE
_noRSX:
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
mov $0x7f01,%ax
movw $0x7f01,%ax
movl HEAPSIZE,%edx
addl __heap_base,%edx
call ___SYSCALL
cmpl $-1,%eax
jnz _heapok
jnz Lheapok
pushl $204
call _SYSOS2$$_RUNERROR$WORD
_heapok:
{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
mov $0x7f13,%ax
xor %ebx,%ebx
mov $0xfff,%ecx
xor %edx,%edx
call ___SYSCALL
mov %eax,U_SYSOS2_FIRST_MEG
movw $0x7f13,%ax
xorl %ebx,%ebx
movl $0xfff,%ecx
xorl %edx,%edx
call syscall
movl %eax,first_meg
end
else
first_meg:=nil;