home *** CD-ROM | disk | FTP | other *** search
- (* ====================================================== *)
- (* PARTEST.PAS *)
- (* Test der paralellen Schnittstelle *)
- (* (c) 1993 Ralf Hensmann & DMV-Verlag *)
- (* ====================================================== *)
- {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}
- {$M 16384,0,655360}
-
- PROGRAM ParTest;
-
- USES Printer, Crt, ParData, ParCRC;
-
- TYPE
- String4 = STRING[4];
-
- VAR
- hAdr : WORD;
- hs : String4;
-
- FUNCTION HexW(w : WORD) : String4;
- CONST
- hs : ARRAY [0..15] OF CHAR = '0123456789ABCDEF';
- BEGIN
- HexW[0] := #4;
- HexW[1] := hs[Hi(w) SHR 4];
- HexW[2] := hs[Hi(w) AND $F];
- HexW[3] := hs[Lo(w) SHR 4];
- HexW[4] := hs[Lo(w) AND $F];
- END;
-
- FUNCTION HexB(w : BYTE) : String4;
- CONST
- hs : ARRAY [0..15] OF CHAR = '0123456789ABCDEF';
- BEGIN
- HexB[0] := #2;
- HexB[1] := hs[w SHR 4];
- HexB[2] := hs[w AND $F];
- END;
-
- FUNCTION GetHex(s : String4) : WORD;
- VAR
- hw, w : WORD;
- i : BYTE;
- BEGIN
- w := 0;
- FOR i := 1 TO Length(s) DO BEGIN
- hw := 0;
- s[i] := UpCase(s[i]);
- IF (s[i] >= '0') AND (s[i] <= '9') THEN
- hw := Ord(s[i]) - BYTE('0')
- ELSE IF (s[i] >= 'A') AND (s[i] <= 'F') THEN
- hw := Ord(s[i]) - BYTE('A') + 10;
- w := w SHL 4 + hw;
- END;
- GetHex := w;
- END;
-
- TYPE
- bArray = ARRAY [0..65024] OF BYTE;
-
- VAR
- Buf0, Buffer : ^bArray;
- i, qs, j2 : WORD;
- j : LongInt;
-
- BEGIN
- New(Buf0);
- New(Buffer);
- WriteLn(HexW(GetLPTAdress(1)),' ',HexW(GetLPTAdress(2)));
- Write('Adresse der Schnittstelle : ');
- hs := '3bc';
- ReadLn(hs);
- Delay(1000);
- hAdr := GetHex(hs);
- RandSeed := $102040AA;
- UnitInit(hAdr);
- SetKbdWatchdog;
- WriteLn('Start');
- IF ParamStr(1) = 'send' THEN BEGIN
- StartSend;
- IF ParaResult = UserBreak THEN Halt;
- WriteLn('Synchronisation (senden) beendet ',
- BYTE(transfermode));
- FOR i := 0 TO 65535 DO BEGIN
- WriteLn(i);
- SendCRCBuf(i, 2);
- IF ParaResult = UserBreak THEN
- WriteLn('Übertragungsfehler');
- END;
- WriteLn('Übertragung beendet');
- END ELSE IF ParamStr(1) = 'receive' THEN BEGIN
- StartReceive;
- IF ParaResult = UserBreak THEN Halt;
- WriteLn('Synchronisation (empfangen) beendet ',
- BYTE(transfermode));
- FOR i := 0 TO 65535 DO BEGIN
- ReceiveCRCBuf(j, 2);
- IF j <> i THEN Write(i:3);
- IF ParaResult = UserBreak THEN
- WriteLn('Übertragungsfehler');
- END;
- WriteLn('Übertragung beendet');
- END ELSE BEGIN
- WriteLn('Usage: PARTEST [send|receive]');
- Halt;
- END;
- IF transfermode = Transfer4 THEN
- WriteLn('4-Bit Transfer-Leitung')
- ELSE
- WriteLn('8-Bit-Transfer-Leitung');
- ClrKbdWatchdog;
- END.
- (* ====================================================== *)
- (* Ende von PARTEST.PAS *)
-