home *** CD-ROM | disk | FTP | other *** search
- program KabelTst;
-
- { Programm zum Test des selbstzulötenden Druckerkabels }
-
- uses crt;
-
- var data,status,steuer : word;
- input : byte;
- output,strobe : byte;
- ch : char;
-
- function GetBase(nr : byte) : word;
- { Ermittelt die Basisadresse der Schnittstelle 0 = LPT1, 1 = LPT2,... }
- begin
- GetBase := MemW[$40:$08+2*nr];
- end;
-
- function HexBit(b : byte) : string;
- var h : string; i : integer;
- begin
- byte(h[0]) := 8;
- for i := 1 to 8 do begin
- if b > 127 then h[i] := '1' else h[i] := '0';
- b := b shl 1;
- end;
- HexBit := h;
- end;
-
- begin
- { Initialisierung }
- clrscr;
- GotoXY(1,10); WriteLn('Beenden mit ESC');
- output := $00; { andere Werte sind möglich }
- strobe := 0;
-
- { LPT - Adresse herausfinden }
- data := GetBase(0); { LPT1, bei LPT2 hier GetBase(1) einsetzen }
- status := data+1;
- steuer := data+2;
-
- { Leitungen initialisieren, um sie lesefähig zu machen }
- Port[steuer] := $4;
- Port[status] := $0;
-
- repeat
- repeat
- Gotoxy(1,1);
- WriteLn('Ausgabe auf Datenport (Pin 9 bis 2) : ',HexBit(output));
- Port[data] := output;
- input := (Port[status] and $F8) or ((Port[steuer] shr 1) and $7);
- input := input xor $85;
- Write('Status- und Steuerport Pins 11,10,12,13,15,17,16,14 :');
- WriteLn(HexBit(input));
- if odd(Port[steuer]) then WriteLn('Strobe (1) aktiv')
- else WriteLn('Strobe (1) inaktiv');
- until keypressed;
- output := output +1;
- if odd(strobe) then Port[steuer] := $5 else Port[steuer] := $4;
- strobe := not strobe;
- ch := ReadKey;
- until ch = #27;
- end.
-
-
-