Yo te diria que uses la libreria INPOUT32.dll que la podes encontrar en esta pagina:
http://www.logix4u.net/inpout32.htm
ahi se explica un poco como funciona. Lo que supuestamente tiene de bueno es que podes acceder al puerto desde win2000/xp pero yo lo he probado en dos maquinas y en una me anduvo y en la otra no. y no se si es por alguna configuracion de winxp o de delphi porque en el 5 me anduvo y en 6 no.
Basicamente el codigo seria algo asi:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Label1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32';
procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32';
procedure TForm1.Button1Click(Sender: TObject);
begin
outportb($378,255); end;
procedure TForm1.Button2Click(Sender: TObject);
begin
outportb($378,0); end;
procedure TForm1.Label1Click(Sender: TObject);
begin
Label1.Caption := IntToStr( inportb($379) );
end;
end.