Here's an old framework I found for FPC, it uses the AT&T(?) assembly syntax...

[pascal]
PROGRAM Test;

Procedure SetMCGA;
Begin
asm
movw $0x0013,%ax
pushl %ebp
int $0x10
popl %ebp
leave
ret
end;
End;

Procedure DoneMCGA;
begin
asm
movw $0x0003,%ax
pushl %ebp
int $0x10
popl %ebp
leave
ret
end;
end;

Procedure PutPixel(X,Y,Color:longint);
begin
asm
movl 8(%ebp),%ebx
movl 12(%ebp),%edx
movl %ebx,%edi
movl %edx,%ebx {; bx = dx}
shll $8,%edx
shll $6,%ebx
addl %ebx,%edx {; dx = dx + bx (ie y*320)}
addl %edx,%edi {; finalise location}
addl $0xE00A0000,%edi
movb 16(%ebp),%al
stosb
leave
ret $12
end;
end;

function GetPixel(X,Y:LongInt):longint;
begin
asm
movl 8(%ebp),%ebx
movl 12(%ebp),%edx
movl %ebx,%edi
movl %edx,%ebx
shll $8,%edx
shll $6,%ebx
addl %ebx,%edx
addl %edx,%edi
addl $0xE00A0000,%edi
movl (%edi),%eax
leave
ret $8
end;
end;

BEGIN
SetMCGA;

DoneMCGA;
END.
[/pascal]

I'll try to dig up some more, but there's a shitload of old code to go thru...