Sehr gute Ergebnisse habe ich in einem Informatik-Physik-Kurs an einem Gymnasium mit der Unit zlportio von Alexandr Zloba gemacht. Hier ein Testprogramm, dass die Zweierpotenzen 2^0 bis 2^7 auf den Port gibt. Ich habe damals eine Ampelsimulation mit 8 LEDs (2 Straßenampeln + 1 Fußgängerampel) programmieren lassen, die an den 8 Datenleitungen des Parallelports angeschlossen waren. Die Unit zlportio.pas mitsamt dem Treiber zlportio.sys kann bezogen werden unter http://www.sharewareorder.com/ZLPORTIO-SOURCE-download-9205.htm
implementation
uses zlportio;
{$R *.dfm}
const LPT1 = $378;
procedure TForm1.FormCreate(Sender: TObject);
begin
  if not zliostarted then begin
    showmessage ('Fehler.');
    Application.Terminate;
  end;
  zlioportwrite (LPT1, ZLIO_BYTE, 0);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  zliostop;
end;
procedure TForm1.StartBtnClick(Sender: TObject);
var wert : integer;
    procedure pause;
    var i : longint;
    begin
      for i := 1 to 200000000 do;
    end;
    
begin
  repeat
    zlioportwrite (LPT1, ZLIO_Byte, 0);
    pause;
    wert := 1;
    repeat
      zlioportwrite (LPT1, ZLIO_Byte, wert);
      wert := 2 * wert;
      pause;
    until (wert = 256);
  until false; // Endlosschleife
end;