summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/webtbs/tw1157b.pp
blob: 63067f8d30e7e90555714e3690eeb7881e76186e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{ %CPU=i386 }
{ %version=1.1 }

{ Source provided for Free Pascal Bug Report 1157 }
{ Submitted by "Colin Goldie" on  2000-10-06 }
{ e-mail: Colin_G@Positek.com.au }
{$ifdef fpc}
{$mode delphi}

{$asmmode intel}
{$endif}

{ @Result in assembler functions should create only a temporary
  variable when it is used }

Function GetBLUEfromRGB( color : word ) : byte; assembler;
asm
    mov cx,color
    and cx,1fh
    mov @Result,cl
    mov ax,255
end;

{
Does something weird .. to the stack im guessing ... error 206 and 103
errors occur 'File not open' ...

However, if instead of using @Result , i chuck my return value into the
accumulator register , everything thing works hunky dory.
}

Function GetBLUEfromRGB2( color : word ) : byte; assembler;
asm
     mov cx,color
     and cx,1fh
     mov al,cl
end;

begin
  if GetBlueFromRGB2($fff)<>GetBlueFromRGB($fff) then
    begin
      Writeln('Error in assembler statement');
      Halt(1);
    end;
end.