mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-06 09:58:29 +02:00
* bugfix to make it work with FPC 0.99.5 (Delayloop is not correctly
converted by ATT parser)
This commit is contained in:
parent
2222aab027
commit
1f8290f89b
@ -100,13 +100,14 @@ uses
|
|||||||
go32;
|
go32;
|
||||||
|
|
||||||
{$ifdef VER0_99_5}
|
{$ifdef VER0_99_5}
|
||||||
{$I386_ATT} {can be removed in the future}
|
{$I386_DIRECT} {due to a bug in the assembler reader using a }
|
||||||
|
{ call to a symbol will crash under FPC 0.99.5 }
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
{$ASMMODE ATT}
|
{$ASMMODE ATT}
|
||||||
|
|
||||||
var
|
var
|
||||||
DelayCnt,
|
DelayCnt, { don't modify this var name, as it is hard coded }
|
||||||
ScreenWidth,
|
ScreenWidth,
|
||||||
ScreenHeight : longint;
|
ScreenHeight : longint;
|
||||||
|
|
||||||
@ -498,6 +499,61 @@ end;
|
|||||||
Delay
|
Delay
|
||||||
*************************************************************************}
|
*************************************************************************}
|
||||||
|
|
||||||
|
{$ifdef VER0_99_5}
|
||||||
|
|
||||||
|
{ Workaround for ATT reader with CALL }
|
||||||
|
procedure Delayloop;
|
||||||
|
begin
|
||||||
|
asm
|
||||||
|
.LDelayLoop1:
|
||||||
|
subl $1,%eax
|
||||||
|
jc .LDelayLoop2
|
||||||
|
cmpl %fs:(%edi),%ebx
|
||||||
|
je .LDelayLoop1
|
||||||
|
.LDelayLoop2:
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure initdelay;
|
||||||
|
begin
|
||||||
|
asm
|
||||||
|
movl $0x46c,%edi
|
||||||
|
movl $-28,%edx
|
||||||
|
movl %fs:(%edi),%ebx
|
||||||
|
.LInitDel1:
|
||||||
|
cmpl %fs:(%edi),%ebx
|
||||||
|
je .LInitDel1
|
||||||
|
movl %fs:(%edi),%ebx
|
||||||
|
movl %edx,%eax
|
||||||
|
call _CRT$$_DELAYLOOP
|
||||||
|
|
||||||
|
notl %eax
|
||||||
|
xorl %edx,%edx
|
||||||
|
movl $55,%ecx
|
||||||
|
divl %ecx
|
||||||
|
movl %eax,_DELAYCNT
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure Delay(MS: Word);
|
||||||
|
begin
|
||||||
|
asm
|
||||||
|
movzwl MS,%ecx
|
||||||
|
jecxz .LDelay2
|
||||||
|
movl $0x400,%edi
|
||||||
|
movl _DELAYCNT,%edx
|
||||||
|
movl %fs:(%edi),%ebx
|
||||||
|
.LDelay1:
|
||||||
|
movl %edx,%eax
|
||||||
|
call _CRT$$_DELAYLOOP
|
||||||
|
loop .LDelay1
|
||||||
|
.LDelay2:
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$else}
|
||||||
procedure Delayloop;
|
procedure Delayloop;
|
||||||
begin
|
begin
|
||||||
asm
|
asm
|
||||||
@ -549,6 +605,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$endif VER0_99_5}
|
||||||
|
|
||||||
|
|
||||||
procedure sound(hz : word);
|
procedure sound(hz : word);
|
||||||
begin
|
begin
|
||||||
@ -923,7 +981,11 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.9 1998-08-15 17:00:10 peter
|
Revision 1.10 1998-08-18 13:32:46 carl
|
||||||
|
* bugfix to make it work with FPC 0.99.5 (Delayloop is not correctly
|
||||||
|
converted by ATT parser)
|
||||||
|
|
||||||
|
Revision 1.9 1998/08/15 17:00:10 peter
|
||||||
* moved delaycnt from interface to implementation
|
* moved delaycnt from interface to implementation
|
||||||
|
|
||||||
Revision 1.8 1998/08/08 21:56:45 peter
|
Revision 1.8 1998/08/08 21:56:45 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user