unit Sample1u; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TSample1Form = class(TForm) CardName: TLabel; Memo1: TMemo; ExitButton: TButton; ISAPanel: TGroupBox; HexLabel: TLabel; BaseEdit: TEdit; TestButton: TButton; ChannelBox: TGroupBox; Label2: TLabel; Label3: TLabel; Label4: TLabel; Port0Text: TPanel; Port1Text: TPanel; Port2Text: TPanel; TestTimer: TTimer; procedure ExitButtonClick(Sender: TObject); procedure TestButtonClick(Sender: TObject); procedure TestTimerTimer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Sample1Form: TSample1Form; PortPanels : array[0..2] of TPanel; Address : integer; current : integer = $fffe; i, mask : Word; implementation uses acces32; {$R *.DFM} procedure TSample1Form.ExitButtonClick(Sender: TObject); begin Close(); end; procedure TSample1Form.TestButtonClick(Sender: TObject); begin if TestTimer.Enabled then begin TestTimer.Enabled := false; TestButton.Caption := 'Start Test'; BaseEdit.Enabled := True; end else begin Address := StrToInt('$'+BaseEdit.Text); PortPanels[0] := Port0Text; PortPanels[1] := Port1Text; PortPanels[2] := Port2Text; TestTimer.Enabled := true; TestButton.Caption := 'Abort Test'; BaseEdit.Enabled := False; end; end; procedure TSample1Form.TestTimerTimer(Sender: TObject); var ThisString : AnsiString; port, j : integer; begin ThisString := ''; mask := 1; for j := 0 to 15 do begin if (current and mask) = 0 then ThisString := '0' + ThisString else ThisString := '1' + ThisString; mask := mask SHL 1; end; for port := 0 to 2 do begin PortPanels[port].Caption := ThisString; OutPort(Address + port * 2, current); end; current := not(1 SHL i); i := (i+1) mod 16; end; procedure TSample1Form.FormCreate(Sender: TObject); begin if (InPortB($61) = $AA55) then begin Application.MessageBox('ACCESNT.SYS not detected. Please copy ACCESNT.SYS into [NT]/system32/drivers and re-run this sample.', 'Warning', IDOK); end; end; end.