Пластиковые карты с открытой памятью. Востриков А.А - 95 стр.

UptoLike

95
{Формирование кадра длины COMFrameLen для передачи, подсчет К’,
передача с ожиданием ухода всего кадра}
Var Res: Boolean; Start: LongInt;
i: Word; Symb: Byte;
Begin
Send_Frame:=False;
Out_Buf.FT:=FT;
Out_Buf.NA:=NA;
Out_Buf.Cmd:=Cmd;
Out_Buf.Status:=Status;
For i:=1 To COMFrameLen-2 Do Out_Buf.Data[i]:=Data[i];
CalcLinkCRC;
Start:=Cur_Time; {Запомнить начало отправки
кадра}
For i:=0 To COMFrameLen-1 Do {Цикл отправления
запросного кадра}
Begin
Symb:=TXBuf[i];
asm
mov dx, COMBase
mov al, Symb
out dx, al {Отправить очередной байт}
add dx, 5
@1:
in al, dx
test al, $40 {Сдвиговый регистр порта
пуст?}
jz @1 {Нет}
end; { of asm }
If (Cur_Time-Start)>Time_Out Then Exit; {Отслеживание
Тайм-Аута}
End; { of For }
Send_Frame:=True;
End; { of Send_Frame }
Function Receive_Frame: Boolean;
{ Ожидать кадр, пока не тайм-аут. Если принят - проверить К’}
Var Start_Time: LongInt;
Cnt, Symb: Byte; Got: Boolean;
Begin
Продолжение прил.