mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-03 05:58:24 +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;
|
||||
|
||||
{$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}
|
||||
|
||||
{$ASMMODE ATT}
|
||||
|
||||
var
|
||||
DelayCnt,
|
||||
DelayCnt, { don't modify this var name, as it is hard coded }
|
||||
ScreenWidth,
|
||||
ScreenHeight : longint;
|
||||
|
||||
@ -498,6 +499,61 @@ end;
|
||||
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;
|
||||
begin
|
||||
asm
|
||||
@ -549,6 +605,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{$endif VER0_99_5}
|
||||
|
||||
|
||||
procedure sound(hz : word);
|
||||
begin
|
||||
@ -923,7 +981,11 @@ end.
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.8 1998/08/08 21:56:45 peter
|
||||
|
Loading…
Reference in New Issue
Block a user