Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[6]

mov ah, B mov cx, 8 @@0: rcl ah,1

mov al, 00000011b {Vcc = 1, SCL = 0, SDA = 0} out dx, al call Pause

mov al, 00000111b {Vcc = 1, SCL = 1, SDA = 0} out dx, al call Pause

mov al, 00000011b {Vcc = 1, SCL = 0, SDA = 0}

out dx, al

jmp @@2

mov al, 00000010b {Vcc out dx, al call Pause

mov al, 00000110b {Vcc

out dx, al call Pause

mov al, 00000010b {Vcc

out dx, al @@2: loop @@0 call Pause

mov al, 00000110b {Vcc

out dx, al call Pause inc dx in al, dx dec dx

and al, 01000000b mov ah, 1 je @@3 mov ah, 0 @@3:

mov al, 00000010b {Vcc out dx, al mov al, ah end;

function GetByte: byte; assembler; asm

mov dx, lpt1 mov cx, 8 @@0:

mov al, 00000110b {Vcc = 1, SCL = 1, SDA = 1}

out dx, al

call Pause

in al, dx

and al, 01000000b shl al,1 shl al,1 rcl ah, 1

mov al, 00000010b {Vcc = 1, SCL = 0, SDA = 1} out dx, al call Pause loop @@0

mov al, 00000110b {Vcc = 1, SCL = 1, SDA = 1} out dx, al call Pause

= 1, SCL = 0, SDA = 1}

= 1, SCL = 1, SDA = 1}

= 1, SCL = 0, SDA = 1}

= 1, SCL = 1, SDA = 1}

= 1, SCL = 0, SDA = 1}


mov al, 00000010b {Vcc = 1, SCL = 0, SDA = 1}

out dx, al call Pause mov al, ah

procedure WriteByte(Addr:Word; B : Byte); begin

PutByte($A0 or ((Hi(Addr) shl 1) and $0e)); PutByte(Lo(Addr)); PutByte(B); Stop; Delay(5); end;

function ReadByte(Addr:Word): Byte; begin

PutByte($A0 or ((Hi(Addr) shl 1) and $0e));

PutByte(Lo(Addr));

PutByte($A1 or ((Hi(Addr) shl 1) and $0e));

ReadByte := GetByte;

procedure ComStr; var

PCStr : String; i: Byte;

PCStr := Ptr(PrefixSeg, $80); for i := 0 to length(PCStr) -1 do if PCStr[i] in [-, /] then begin case PCStr[i+1] of r, R : Mode := mRead; w, W : Mode := mWrite; else Mode := mError; end;

Delete(PCStr\ i, 2); Break; end;

if ParamCount = 0 then Mode := mError else FileName := ParamStr(1); end;

LPT1 := $3 78; asm

mov dx, lpt1

mov al, 00000110b {Vcc = 1}

out dx, al

ComStr;

Assign(F, FileName); case Mode of mRead:

for A:= 0 to 2047 do Buf[A] := ReadByte(A); Rewrite(F, 1);


if IOResult = 0 then begin

BlockWrite(F, Buf, SizeOf(Buf));

Close(F); end; end; mWrite:

Reset(F, 1); if IOResult = 0 then begin

BlockRead(F, Buf, SizeOf(Buf)); Close(F);

for A:= 0 to 2047 do WriteByte(A, Buf[A]); end; end; mError:

WriteLn(24c16 fileName -r-w); WriteLn( -r Read); WriteLn( -w Write);

end; end; end.



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7]