3819 lines
99 KiB
Plaintext
3819 lines
99 KiB
Plaintext
|
{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
<20> <20>
|
|||
|
<20> X - P a c k e t <20>
|
|||
|
<20> <20>
|
|||
|
<20> <20>
|
|||
|
<20> X P L I B 1 . P A S <20>
|
|||
|
<20> <20>
|
|||
|
<20> Library - Unit mit oft ben<65>tigten Routinen <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
|||
|
|
|||
|
Function CheckXP161 (Kanal:byte) : Boolean;
|
|||
|
var Ver1, Ver2:byte;
|
|||
|
hst:string;
|
|||
|
begin
|
|||
|
with K[kanal]^ do
|
|||
|
begin
|
|||
|
if Pos(AutoSysName[3], SystemErkannt)>0 then
|
|||
|
begin
|
|||
|
hst:=SystemErkannt;
|
|||
|
delete(hst, 1, Pos(AutoSysName[3], hst)+1);
|
|||
|
delete(hst, 1, Pos(' ', hst));
|
|||
|
ver1:=str_int(copy (hst, 1, pos('.',hst)-1));
|
|||
|
delete(hst, 1, pos('.',hst));
|
|||
|
KillendBlanks(hst);
|
|||
|
if not (hst[length(hst)] in ['0'..'9']) then ver2:=str_int(copy (hst, 1,length(hst)-1))
|
|||
|
else ver2:=str_int(copy (hst, 1,length(hst)));
|
|||
|
end else Ver1:=0;
|
|||
|
end;
|
|||
|
if ((Ver1=1) and (Ver2>60)) or (Ver1>1) then CheckXP161:=true else CheckXP161:=false;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
Function PackDT : longint;
|
|||
|
var dt:datetime;
|
|||
|
dummy:word;
|
|||
|
PDT:longint;
|
|||
|
begin
|
|||
|
{year,Month,Day,Hour,Min,Sec: Word;}
|
|||
|
{gepackte zeit wird auf nur 2 sekunden genau!!}
|
|||
|
with DT do
|
|||
|
begin
|
|||
|
|
|||
|
if stunde>0 then gotLastHr:=false;
|
|||
|
if (stunde=0) and (not gotLastHr) then
|
|||
|
begin
|
|||
|
getdate(Jahr_,Monat_, Tag_, WoTag_);
|
|||
|
gotLastHr:=true;
|
|||
|
end;
|
|||
|
Year:=Jahr_; Month:=Monat_; Day:=Tag_;
|
|||
|
hour:=Stunde;
|
|||
|
Min :=Minute;
|
|||
|
Sec :=Sekunde;
|
|||
|
{gettime_(Hour, Min, Sec, dummy);}
|
|||
|
end;
|
|||
|
packTime(DT, PDT);
|
|||
|
PackDT:=PDT;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Procedure Editor;
|
|||
|
var KC : Sondertaste;
|
|||
|
Begin
|
|||
|
{ G^.Fstr[7] := InfoZeile(66);
|
|||
|
G^.Fstr[9] := InfoZeile(168);
|
|||
|
G^.Fstr[12] := InfoZeile(67);
|
|||
|
G^.Fstr[15] := InfoZeile(68);
|
|||
|
Fenster;
|
|||
|
GetString(G^.Edi_Name,Attrib[3],60,8,15,KC,2,Ins);
|
|||
|
clrFenster;
|
|||
|
if KC <> _Esc then
|
|||
|
begin }
|
|||
|
Teil_Bild_Loesch(1,maxZ,0);
|
|||
|
Cursor_ein;
|
|||
|
ExecDOS(Konfig.EditVerz); { + ' ' + G^.Edi_Name);}
|
|||
|
Cursor_aus;
|
|||
|
{ end; }
|
|||
|
Neu_Bild;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Link_erhalter (* Kanal : Byte; var Zeile : str80 *);
|
|||
|
var i : Byte;
|
|||
|
Hstr : String[3];
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if Zeile > '' then
|
|||
|
begin
|
|||
|
HoldStr := RestStr(Zeile);
|
|||
|
for i := 1 to length(HoldStr) do
|
|||
|
case HoldStr[i] of
|
|||
|
BS : HoldStr[i] := M1;
|
|||
|
'#' : HoldStr[i] := B1;
|
|||
|
end;
|
|||
|
i := Byte(str_int(CutStr(Zeile)));
|
|||
|
if i in [1..99] then
|
|||
|
begin
|
|||
|
Hold := true;
|
|||
|
HoldTime := i;
|
|||
|
HoldLauf:=i * 60;
|
|||
|
Zeile := InfoZeile(160) + B1 + HoldStr;
|
|||
|
end else Zeile := InfoZeile(161) + B1 + CutStr(Zeile);
|
|||
|
end else
|
|||
|
begin
|
|||
|
Hold := false;
|
|||
|
Zeile := InfoZeile(151);
|
|||
|
end;
|
|||
|
if Not Connected then
|
|||
|
begin
|
|||
|
Zeile:=InfoZeile(19);
|
|||
|
Hold:=false;
|
|||
|
HoldTime:=0;
|
|||
|
HoldLauf:=0;
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure RC_Update (* (Kanal : Byte; var Zeile : String[80]) *);
|
|||
|
Var i,i1,
|
|||
|
Nr : Byte;
|
|||
|
Nstr : String[1];
|
|||
|
HStr2,
|
|||
|
Hstr : String[20];
|
|||
|
Flag,
|
|||
|
Found : Boolean;
|
|||
|
Found2:boolean;
|
|||
|
Lnorm, Lnod : byte;
|
|||
|
Begin
|
|||
|
Lnod:=10;
|
|||
|
|
|||
|
Nstr := '';
|
|||
|
Zeile := RestStr(Zeile);
|
|||
|
Flag := false;
|
|||
|
Found := false;
|
|||
|
found2:= false;
|
|||
|
|
|||
|
|
|||
|
if Zeile > '' then
|
|||
|
begin
|
|||
|
if pos(B1,Zeile) > 0 then
|
|||
|
begin
|
|||
|
Hstr := RestStr(Zeile);
|
|||
|
if (length(Hstr) > 0) and (Hstr[1] in ['0'..'5']) then
|
|||
|
begin
|
|||
|
Lnorm := str_int(Hstr[1]);
|
|||
|
Flag := true;
|
|||
|
NStr:=RestStr(Hstr);
|
|||
|
end;
|
|||
|
|
|||
|
if (length(NSTr) > 0) and (NStr[1] in ['0'..'5']) then
|
|||
|
begin
|
|||
|
Lnod := str_int(NStr[1]);
|
|||
|
Flag := true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Hstr := CutStr(Zeile);
|
|||
|
|
|||
|
Nr := REM_Auswert(show,2,Hstr);
|
|||
|
if Nr in [1..100] then
|
|||
|
begin
|
|||
|
i := 0;
|
|||
|
Repeat
|
|||
|
inc(i);
|
|||
|
i1 := G^.Remotes[i].BefNr;
|
|||
|
if (i1 = Nr) and (pos(Hstr,G^.Remotes[i].Befehl) = 1) then
|
|||
|
begin
|
|||
|
Found2:=true;
|
|||
|
if (Flag) and (Lnod=10) then
|
|||
|
begin
|
|||
|
if not K[Kanal]^.node then
|
|||
|
begin
|
|||
|
G^.Remotes[i].Level := LNorm;
|
|||
|
|
|||
|
end else
|
|||
|
begin
|
|||
|
G^.Remotes[i].LevelN := Lnorm;
|
|||
|
end;
|
|||
|
Found := true;
|
|||
|
end;
|
|||
|
if (Flag) and (Lnod<10) then
|
|||
|
begin
|
|||
|
G^.Remotes[i].Level := Lnorm;
|
|||
|
G^.Remotes[i].LevelN := Lnod;
|
|||
|
Found := true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
Until Found or (i >= maxREM);
|
|||
|
|
|||
|
if Flag and Found then
|
|||
|
begin
|
|||
|
i1:=i;
|
|||
|
Assign(G^.TFile,SysPfad + RemDatei);
|
|||
|
if RewriteTxt(G^.TFile) = 0 then
|
|||
|
begin
|
|||
|
for i := 1 to maxREM do if G^.Remotes[i].BefNr > 0 then
|
|||
|
begin
|
|||
|
Hstr := SFillStr(2,B1,int_str(G^.Remotes[i].BefNr)) + B1 +
|
|||
|
EFillStr(9,B1,G^.Remotes[i].Befehl) +
|
|||
|
int_str(G^.Remotes[i].AnzCh) + B1 +
|
|||
|
int_str(G^.Remotes[i].AnzPa) + B1 +
|
|||
|
int_str(G^.Remotes[i].Level) + B1 +
|
|||
|
int_str(G^.Remotes[i].LevelN);
|
|||
|
|
|||
|
Writeln(G^.TFile,Hstr);
|
|||
|
end;
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end else Zeile := InfoZeile(130);
|
|||
|
end else Zeile := S_ch;
|
|||
|
|
|||
|
if found2 then
|
|||
|
begin
|
|||
|
hstr:=ParmStr(1,b1,zeile);
|
|||
|
Zeile := upcasestr(hstr) + ':' +
|
|||
|
B1 + 'Terminal ' + int_str(G^.Remotes[i1].Level);
|
|||
|
if Nr in NodeCMDs then Zeile:=Zeile+B1 + '- Node ' + int_str(G^.Remotes[i1].LevelN)
|
|||
|
else Zeile:=Zeile +b1+'- '+InfoZeile(21);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure File_Umbenennen (* alt,neu : String[80]; var Ueber,Art : Integer *);
|
|||
|
var f,f1 : File;
|
|||
|
Begin
|
|||
|
Assign(f,alt);
|
|||
|
Assign(f1,neu);
|
|||
|
if Exists(alt) then
|
|||
|
begin
|
|||
|
if (Ueber = 1) then KillFile(neu);
|
|||
|
if Exists(neu) then
|
|||
|
begin
|
|||
|
Ueber := 135; { Neuer Name existiert bereits }
|
|||
|
Art := 2;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Rename(f,neu);
|
|||
|
Ueber := 136; { File wurde umbenannt }
|
|||
|
Art := 3;
|
|||
|
end;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Ueber := 144; { Alter Name existert <20>berhaupt nicht }
|
|||
|
Art := 1;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
{$IFNDEF no_Bake} {//db1ras}
|
|||
|
Procedure BakenMenu;
|
|||
|
Const ArtMax = 5;
|
|||
|
Var i,
|
|||
|
TNr : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
Hstr : String[4];
|
|||
|
|
|||
|
Begin
|
|||
|
Moni_Off(0);;
|
|||
|
if show = 0 then TNr := Unproto
|
|||
|
else TNr := K[show]^.TncNummer;
|
|||
|
Flag := false;
|
|||
|
for i := 9 to 15 do G^.Fstx[i] := 2;
|
|||
|
G^.Fstr[7] := InfoZeile(73);
|
|||
|
|
|||
|
G^.Fstr[9] := InfoZeile(58);
|
|||
|
G^.Fstr[10] := InfoZeile(61);
|
|||
|
G^.Fstr[11] := InfoZeile(62);
|
|||
|
G^.Fstr[12] := InfoZeile(63);
|
|||
|
G^.Fstr[13] := InfoZeile(64);
|
|||
|
G^.Fstr[14] := InfoZeile(65);
|
|||
|
|
|||
|
Art := 5;
|
|||
|
|
|||
|
Repeat
|
|||
|
for i := 9 to 14 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
G^.Fstr[i][hM+1] := B1;
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
G^.Fstr[i][hM] := B1;
|
|||
|
end;
|
|||
|
|
|||
|
if Art in [1..6] then
|
|||
|
begin
|
|||
|
X := vM;
|
|||
|
Y := Art + 8;
|
|||
|
end else
|
|||
|
begin
|
|||
|
X := hM;
|
|||
|
Y := Art + 4;
|
|||
|
end;
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
delete(G^.Fstr[9],vM+1,1);
|
|||
|
insert(int_str(TNr),G^.Fstr[9],vM+1);
|
|||
|
if TNC[TNr]^.Bake then G^.Fstr[13][vM+1] := X_ch;
|
|||
|
|
|||
|
{ G^.Fstr[14] := '';}
|
|||
|
G^.Fstr[15] := '';
|
|||
|
Fenster(15);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[3]);
|
|||
|
|
|||
|
_Ret : ;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
_F6 : Art := 6;
|
|||
|
_F7,
|
|||
|
_F8,
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F6,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
case Art of
|
|||
|
1 : begin
|
|||
|
G^.Fstr[9][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
Hstr := '';
|
|||
|
GetString(Hstr,Attrib[3],1,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
i := Byte(str_int(Hstr));
|
|||
|
if i in [1..Tnc_Anzahl] then TNr := i
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
end;
|
|||
|
2 : begin
|
|||
|
G^.Fstr[10][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
Hstr := int_str(TNC[TNr]^.BTimer);
|
|||
|
GetString(Hstr,Attrib[3],4,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
TNC[TNr]^.BTimer := Word(str_int(Hstr));
|
|||
|
if TNC[TNr]^.BTimer < MinBake then TNC[TNr]^.BTimer := DefBake;
|
|||
|
end;
|
|||
|
end;
|
|||
|
3 : begin
|
|||
|
G^.Fstr[11][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
GetString(TNC[TNr]^.BPFad,Attrib[3],78,2,15,KC,0,Ins);
|
|||
|
end;
|
|||
|
4 : begin
|
|||
|
G^.Fstr[12][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
GetString(TNC[TNr]^.BText,Attrib[3],78,2,15,KC,0,Ins);
|
|||
|
end;
|
|||
|
5 : begin
|
|||
|
TNC[TNr]^.Bake := not TNC[TNr]^.Bake;
|
|||
|
Flag := true;
|
|||
|
end;
|
|||
|
6 : begin
|
|||
|
G^.Fstr[14][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
GetString(TNC[TNr]^.BCall,Attrib[3],10,2,15,KC,0,Ins);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
SetzeFlags(0);
|
|||
|
Until Flag;
|
|||
|
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
End;
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
|
|||
|
Procedure Tschuess (* Kanal : Integer *); (* Programm-Ende mit ALT-X *)
|
|||
|
var ch : char;
|
|||
|
KC : Sondertaste;
|
|||
|
i : Integer;
|
|||
|
Begin
|
|||
|
if SiAltD then
|
|||
|
begin
|
|||
|
G^.Fstr[7] := InfoZeile(84);
|
|||
|
G^.Fstx[11] := 20;
|
|||
|
G^.Fstr[11] := InfoZeile(85);
|
|||
|
Fenster(15);
|
|||
|
SetzeCursor(length(G^.Fstr[11])+G^.Fstx[11]-2,11);
|
|||
|
clrFenster;
|
|||
|
{ if Klingel then Morse(Kanal,'<27>'); }
|
|||
|
|
|||
|
Repeat
|
|||
|
_ReadKey(KC,Ch);
|
|||
|
case KC of
|
|||
|
_AltH : XP_Help(G^.OHelp[23]);
|
|||
|
_Ret : QRT := true;
|
|||
|
_Andere : begin
|
|||
|
Ch := UpCase(Ch);
|
|||
|
QRT := Ch in YesMenge;
|
|||
|
end;
|
|||
|
end;
|
|||
|
Until QRT or (not QRT and (KC <> _AltH));
|
|||
|
if not QRT then Neu_Bild;
|
|||
|
end else QRT:=true;
|
|||
|
Cursor_Aus;
|
|||
|
END;
|
|||
|
|
|||
|
|
|||
|
Procedure TschuessFenster;
|
|||
|
Begin
|
|||
|
Cursor_Aus;
|
|||
|
G^.Fstr[7] := Version;
|
|||
|
G^.Fstx[11] := 25;
|
|||
|
G^.Fstr[11] := InfoZeile(38);
|
|||
|
G^.Fstx[13] := 34;
|
|||
|
G^.Fstr[13] := InfoZeile(39);
|
|||
|
Fenster(15);
|
|||
|
clrFenster;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure TestCheck (* Kanal : Byte; Zeile : Str80 *);
|
|||
|
var i,j : Byte;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if Test then
|
|||
|
begin
|
|||
|
BellCount:=0;
|
|||
|
K[TestMerk]^.BellCount:=0;
|
|||
|
EraseBufferFile(Kanal);
|
|||
|
EraseBufferFile(TestMerk);
|
|||
|
SystemErkannt:='';
|
|||
|
RX_Save:=false;
|
|||
|
K[TestMerk]^.RX_Save:=false;
|
|||
|
K[Kopieren]^.KopierenFm:=0;
|
|||
|
KopierenFm:=0;
|
|||
|
Kopieren:=0;
|
|||
|
_aus(Attrib[20],Kanal,M1 + InfoZeile(191) + M1);
|
|||
|
_aus(Attrib[20],TestMerk,M1 + InfoZeile(191) + M1);
|
|||
|
if Klingel then
|
|||
|
begin
|
|||
|
Beep(G^.C1_Ton,G^.C1_TonTime);
|
|||
|
Verzoegern(100);
|
|||
|
Beep(G^.C1_Ton,G^.C1_TonTime);
|
|||
|
end;
|
|||
|
S_PAC(TestMerk,CM,true,'I ' + K[TestMerk]^.OwnCall);
|
|||
|
S_PAC(Kanal,CM,true,'I ' + OwnCall);
|
|||
|
K[TestMerk]^.Umlaut := K[TestMerk]^.UmlautMerk;
|
|||
|
Umlaut := UmlautMerk;
|
|||
|
StatusOut(Kanal,14,1,Attrib[12],EFillStr(29,B1,' '),1);
|
|||
|
StatusOut(TestMerk,14,1,Attrib[12],EFillStr(29,B1,' '),1);
|
|||
|
StatusOut(TestMerk,4,1,Attrib[9],EFillStr(9,B1,K[TestMerk]^.OwnCall),1);
|
|||
|
StatusOut(Kanal,4,1,Attrib[9],EFillStr(9,B1,OwnCall),1);
|
|||
|
K[TestMerk]^.TestMerk := 0;
|
|||
|
K[TestMerk]^.Test := false;
|
|||
|
K[TestMerk]^.Call := '';
|
|||
|
K[TestMerk]^.SCon[0] := false;
|
|||
|
K[TestMerk]^.SystemErkannt:='';
|
|||
|
K[TestMerk]^.SCon[0] := false;
|
|||
|
K[TestMerk]^.RemAll:=false;
|
|||
|
Call := '';
|
|||
|
Test := false;
|
|||
|
RemAll:=false;
|
|||
|
K[TestMerk]^.TxComp := false;
|
|||
|
K[TestMerk]^.RxComp := false;
|
|||
|
K[TestMerk]^.CompC :=false;
|
|||
|
K[TestMerk]^.KompressUpd:=false;
|
|||
|
for j:=1 to 255 do
|
|||
|
begin
|
|||
|
K[TestMerk]^.Kompression[j]:=0;
|
|||
|
end;
|
|||
|
TestMerk := 0;
|
|||
|
TxComp := false;
|
|||
|
RxComp := false;
|
|||
|
CompC :=false;
|
|||
|
KompressUpd:=false;
|
|||
|
for j:=1 to 255 do
|
|||
|
begin
|
|||
|
Kompression[j]:=0;
|
|||
|
end;
|
|||
|
end else if not connected and not Kanal_Benutz and (Kanal > 0) then
|
|||
|
begin
|
|||
|
i := Byte(str_int(RestStr(Zeile)));
|
|||
|
if not (i in [1..maxLink]) or K[i]^.Kanal_benutz or K[i]^.connected or
|
|||
|
K[i]^.Mo.MonActive or (i = ConvHilfsPort) then i := KanalFrei(Kanal);
|
|||
|
if i > 0 then
|
|||
|
begin
|
|||
|
First_Frame:=true;
|
|||
|
TestMerk := i;
|
|||
|
Test := true;
|
|||
|
SCon[0] := true;
|
|||
|
TxComp := false;
|
|||
|
RxComp := false;
|
|||
|
CompC :=false;
|
|||
|
KompressUpd:=false;
|
|||
|
for j:=1 to 255 do
|
|||
|
begin
|
|||
|
Kompression[j]:=0;
|
|||
|
end;
|
|||
|
K[i]^.TxComp := false;
|
|||
|
K[i]^.RxComp := false;
|
|||
|
K[i]^.CompC :=false;
|
|||
|
K[i]^.KompressUpd:=false;
|
|||
|
for j:=1 to 255 do
|
|||
|
begin
|
|||
|
K[i]^.Kompression[j]:=0;
|
|||
|
end;
|
|||
|
K[i]^.SCon[0] := true;
|
|||
|
K[i]^.TestMerk := Kanal;
|
|||
|
K[i]^.Test := true;
|
|||
|
K[i]^.First_Frame:=true;
|
|||
|
|
|||
|
BellCount:=0;
|
|||
|
K[i]^.BellCount:=0;
|
|||
|
|
|||
|
QSO_Date := Datum;
|
|||
|
K[TestMerk]^.QSO_Date := Datum;
|
|||
|
|
|||
|
QSO_Begin := copy(Uhrzeit,1,5);
|
|||
|
K[TestMerk]^.QSO_Begin := copy(Uhrzeit,1,5);
|
|||
|
|
|||
|
S_PAC(TestMerk,CM,true,'I ' + PhantasieCall);
|
|||
|
S_PAC(Kanal,CM,true,'I ' + + PhantasieCall);
|
|||
|
|
|||
|
K[TestMerk]^.Call := OwnCall;
|
|||
|
|
|||
|
Call := K[TestMerk]^.OwnCall;
|
|||
|
|
|||
|
K[TestMerk]^.UmlautMerk := K[TestMerk]^.Umlaut;
|
|||
|
K[TestMerk]^.User_Name := GetName(TestMerk,K[TestMerk]^.Call,K[TestMerk]^.Umlaut, TRUE);
|
|||
|
RX_Save:=false;
|
|||
|
K[TestMerk]^.RX_Save:=false;
|
|||
|
UmlautMerk := Umlaut;
|
|||
|
User_Name := GetName(Kanal,Call,Umlaut, TRUE);
|
|||
|
|
|||
|
UserInStatus(Kanal);
|
|||
|
|
|||
|
StatusOut(TestMerk,4,1,Attrib[11],EFillStr(9,B1,K[TestMerk]^.Call),1);
|
|||
|
StatusOut(Kanal,4,1,Attrib[11],EFillStr(9,B1,Call),1);
|
|||
|
_aus(Attrib[20],Kanal,M1 + InfoZeile(190) + B1 + LRK + int_str(TestMerk) + RRK + M1);
|
|||
|
_aus(Attrib[20],TestMerk,M1 + InfoZeile(190) + B1 + LRK + int_str(Kanal) + RRK + M1);
|
|||
|
|
|||
|
K[TestMerk]^.RemAll:=true;
|
|||
|
RemAll:=True;
|
|||
|
|
|||
|
if Klingel then
|
|||
|
begin
|
|||
|
Beep(G^.C2_Ton,G^.C2_TonTime);
|
|||
|
Verzoegern(100);
|
|||
|
Beep(G^.C2_Ton,G^.C2_TonTime);
|
|||
|
end;
|
|||
|
Txt_Senden(TestMerk,6,0);
|
|||
|
if not GrtFlag then Txt_Senden(TestMerk,3,0);
|
|||
|
S_PAC(TestMerk,NU,true,'');
|
|||
|
end else InfoOut(show,1,1,InfoZeile(94));
|
|||
|
end else InfoOut(Kanal,1,1,InfoZeile(193));
|
|||
|
Status2;
|
|||
|
end;
|
|||
|
SetzeFlags(Kanal)
|
|||
|
End;
|
|||
|
|
|||
|
Procedure UserInStatus (* Kanal : Byte *); {//db1ras}
|
|||
|
Var hstr : String[60];
|
|||
|
entfg,richtg : Real;
|
|||
|
status : Boolean;
|
|||
|
entf : String[14];
|
|||
|
|
|||
|
Begin
|
|||
|
hstr:='';
|
|||
|
With k[kanal]^ Do Begin
|
|||
|
If connected Then Begin
|
|||
|
hstr:=User_Name+B1+User_QTH;
|
|||
|
If Length(hstr) > 28 Then
|
|||
|
hstr:=Copy(hstr,1,27)+'~'
|
|||
|
Else If Length(hstr)+7 <= 28 Then
|
|||
|
hstr:=hstr+B1+User_Loc;
|
|||
|
QTH_ENTFG_RICHTG(User_Loc,Konfig.PersLoc,entfg,richtg,status);
|
|||
|
If status=true Then Begin
|
|||
|
Str(entfg:0:1,entf);
|
|||
|
If Length(hstr+entf)+3 <= 28 Then
|
|||
|
hstr:=hstr+B1+entf+'km'
|
|||
|
Else Begin
|
|||
|
Str(entfg:0:0,entf);
|
|||
|
If Length(hstr+entf)+3 <= 28 Then
|
|||
|
hstr:=hstr+B1+entf+'km';
|
|||
|
End;
|
|||
|
End;
|
|||
|
|
|||
|
{fuehrende Leerzeichen entfernen (vorhanden, wenn kein Name/QTH bekannt)}
|
|||
|
While Pos(B1,hstr)=1 Do
|
|||
|
hstr:=Copy(hstr,2,Length(hstr)-1);
|
|||
|
|
|||
|
End;
|
|||
|
|
|||
|
If Not Mo.MonActive Then
|
|||
|
StatusOut(Kanal,14,1,Attrib[12],EFillStr(29,B1,hstr),1);
|
|||
|
End;
|
|||
|
SetzeFlags(Kanal);
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Connect (* Kanal : Byte; Zeile : Str80 *);
|
|||
|
var Hstr : String[9];
|
|||
|
i,i1 : Byte;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Zeile := UpCaseStr(Zeile);
|
|||
|
if Kanal = 0 then K[0]^.TncNummer := Unproto
|
|||
|
else Outside := false;
|
|||
|
if length(Zeile) > 1 then Ausgabe := false;
|
|||
|
S_PAC(Kanal,CM,true,'C' + B1 + RestStr(Zeile));
|
|||
|
i := 0;
|
|||
|
if not connected then While (pos('ALREADY',Response) > 0) and (i < 15) do
|
|||
|
begin
|
|||
|
inc(i);
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(Kanal,CM,true,'I');
|
|||
|
Hstr := Response;
|
|||
|
Strip(Hstr);
|
|||
|
Hstr := Hstr + '-' + int_str(i);
|
|||
|
S_PAC(Kanal,CM,true,'I' + B1 + Hstr);
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(Kanal,CM,true,'C' + B1 + RestStr(Zeile));
|
|||
|
end;
|
|||
|
Rekonnekt := connected;
|
|||
|
ConnectMerk := Zeile;
|
|||
|
if length(Zeile) > 1 then Kanal_benutz := true;
|
|||
|
if Kanal = 0 then Unproto_darstellen;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure S_Aus (* Kanal,Art : Byte; Zeile : String *);
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if Art in [1,3] then S_PAC(Kanal,NU,false,Zeile);
|
|||
|
if Art in [2,3] then _aus(Attrib[19],Kanal,Zeile);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure RC_Alle (* Kanal,Art : Byte *); (* Ausgabe aller Remote-RC's *)
|
|||
|
var i,i1 : Byte;
|
|||
|
Hstr : String[20];
|
|||
|
Begin
|
|||
|
S_Aus(Kanal,Art,M1 + ConstStr(B1,21) + InfoZeile(173) + M2);
|
|||
|
i1 := 1;
|
|||
|
for i := 1 to maxREM do if G^.Remotes[i].BefNr > 0 then
|
|||
|
begin
|
|||
|
Hstr := EFillStr(9,Pkt ,G^.Remotes[i].Befehl) +
|
|||
|
int_str(G^.Remotes[i].Level)+'/'+
|
|||
|
int_str(G^.Remotes[i].LevelN) + B1;
|
|||
|
|
|||
|
if i1 mod 6 = 0 then
|
|||
|
begin
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
Hstr := Hstr + M1;
|
|||
|
end;
|
|||
|
S_Aus(Kanal,Art,Hstr);
|
|||
|
inc(i1);
|
|||
|
end;
|
|||
|
S_Aus(Kanal,Art,M2);
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure TNC_Parm (* Kanal,Art : Byte *);
|
|||
|
var i,i1 : Word;
|
|||
|
Bstr : String[8];
|
|||
|
Hstr : String[80];
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
S_Aus(Kanal,Art,M1 + ConstStr(B1,21) + InfoZeile(40) + M2);
|
|||
|
i := 1;
|
|||
|
Assign(G^.TFile,SysPfad + TncDatei);
|
|||
|
FiResult := ResetTxt(G^.TFile);
|
|||
|
Repeat
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
i1 := pos('=',Hstr);
|
|||
|
if i1 > 0 then
|
|||
|
begin
|
|||
|
Bstr := copy(Hstr,1,i1-1);
|
|||
|
KillEndBlanks(Bstr);
|
|||
|
if (pos('A',Bstr) > 0) or (pos(int_str(TncNummer),Bstr) > 0) then
|
|||
|
begin
|
|||
|
delete(Hstr,1,i1);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(Kanal,CM,true,CutStr(Hstr));
|
|||
|
Hstr := LRK + EFillStr(5,B1,CutStr(Hstr) + RRK) +
|
|||
|
EFillStr(12,B1,RestStr(Hstr)) + ': '+
|
|||
|
EFillStr(16,B1,Response);
|
|||
|
|
|||
|
if length(Hstr) > 36 then
|
|||
|
begin
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
Hstr := Hstr + M1;
|
|||
|
if i mod 2 = 0 then
|
|||
|
begin
|
|||
|
Hstr := M1 + Hstr;
|
|||
|
inc(i);
|
|||
|
end;
|
|||
|
end else
|
|||
|
begin
|
|||
|
if i mod 2 = 0 then
|
|||
|
begin
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
Hstr := Hstr + M1;
|
|||
|
end;
|
|||
|
inc(i);
|
|||
|
end;
|
|||
|
S_Aus(Kanal,Art,Hstr);
|
|||
|
end;
|
|||
|
end;
|
|||
|
Until Eof(G^.TFile);
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
S_Aus(Kanal,Art,M2);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure GetVideoMode;
|
|||
|
Begin
|
|||
|
if VideoSeg = SegHGC then
|
|||
|
begin
|
|||
|
StartColor := 15;
|
|||
|
Hercules := true;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Color := true;
|
|||
|
StartColor := 127; {31 original (blau/wei<65>),116 grau/rot }
|
|||
|
Hercules := false;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Umlautstatus_Aendern (* Kanal : Byte *);
|
|||
|
Const ArtMax = 4;
|
|||
|
Var i : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
udb:user_typ2;
|
|||
|
l_i:longint;
|
|||
|
c:byte;
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
for i := 9 to 15 do G^.Fstx[i] := 3;
|
|||
|
G^.Fstr[7] := InfoZeile(260);
|
|||
|
G^.Fstr[10] := InfoZeile(261);
|
|||
|
G^.Fstr[11] := InfoZeile(262);
|
|||
|
G^.Fstr[12] := InfoZeile(263);
|
|||
|
G^.Fstr[13] := InfoZeile(264);
|
|||
|
for i:=9 to 13 do G^.fstx[i]:=5;
|
|||
|
Art := 1;
|
|||
|
|
|||
|
Repeat
|
|||
|
for i := 10 to 13 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
end;
|
|||
|
|
|||
|
X := vM;
|
|||
|
Y := Art + 9;
|
|||
|
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
if Umlaut = 1 then G^.Fstr[10][vM+1] := X_ch;
|
|||
|
if Umlaut = 2 then G^.Fstr[11][vM+1] := X_ch;
|
|||
|
if Umlaut = 3 then G^.Fstr[12][vM+1] := X_ch;
|
|||
|
|
|||
|
G^.Fstr[9] := '';
|
|||
|
G^.Fstr[14] := '';
|
|||
|
G^.Fstr[15] := '';
|
|||
|
Fenster(15);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[24]);
|
|||
|
|
|||
|
_Ret :;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5,
|
|||
|
_F6,
|
|||
|
_F7,
|
|||
|
_F8,
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F4,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
case Art of
|
|||
|
1 : begin
|
|||
|
G^.Fstr[10][vM] := S_ch;
|
|||
|
if Umlaut <> 1 then Umlaut := 1
|
|||
|
else Umlaut := 0;
|
|||
|
end;
|
|||
|
2 : begin
|
|||
|
G^.Fstr[11][vM] := S_ch;
|
|||
|
if Umlaut <> 2 then Umlaut := 2
|
|||
|
else Umlaut := 0;
|
|||
|
end;
|
|||
|
3 : begin
|
|||
|
G^.Fstr[12][vM] := S_ch;
|
|||
|
if Umlaut <> 3 then Umlaut := 3
|
|||
|
else Umlaut := 0;
|
|||
|
end;
|
|||
|
4 : if connected and (User_Name > '') and not Test then
|
|||
|
begin
|
|||
|
{Neu_Name(Kanal,0,Call,User_Name);}
|
|||
|
{ucall}
|
|||
|
udb.call:=call;
|
|||
|
udb.umlaut:=umlaut;
|
|||
|
PutUser(Udb,c,4,L_I,false);
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
Until Flag;
|
|||
|
|
|||
|
if not connected then UmlautMerk := Umlaut;
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Echo_Menue (* Kanal : Byte *);
|
|||
|
Const ArtMax = 5;
|
|||
|
Var i : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
AllCh,
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
|
|||
|
Begin
|
|||
|
AllCh:=true;
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
for i := 9 to 15 do G^.Fstx[i] := 18;
|
|||
|
G^.Fstr[7] := InfoZeile(74);
|
|||
|
G^.Fstr[9] := InfoZeile(79);
|
|||
|
G^.Fstr[10] := InfoZeile(80);
|
|||
|
G^.Fstr[11] := InfoZeile(81);
|
|||
|
G^.Fstr[12] := InfoZeile(82);
|
|||
|
G^.FStr[13] := InfoZeile(83);
|
|||
|
|
|||
|
Art := 1;
|
|||
|
|
|||
|
Repeat
|
|||
|
for i := 9 to 13 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
end;
|
|||
|
|
|||
|
X := vM;
|
|||
|
Y := Art + 8;
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
if Echo in [1,3,5,7] then G^.Fstr[9][vM+1] := X_ch;
|
|||
|
if Echo in [2,3,6,7] then G^.Fstr[10][vM+1] := X_ch;
|
|||
|
if Echo in [4..7] then G^.Fstr[11][vM+1] := X_ch;
|
|||
|
if SysTextEcho then G^.Fstr[12][vM+1] := X_ch;
|
|||
|
if AllCh then G^.Fstr[13][vM+1] := X_ch;
|
|||
|
|
|||
|
G^.Fstr[14] := '';
|
|||
|
G^.Fstr[15] := '';
|
|||
|
Fenster(15);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[5]);
|
|||
|
|
|||
|
_Ret :;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
_F6,
|
|||
|
_F7,
|
|||
|
_F8,
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F5,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
case Art of
|
|||
|
1 : if Echo in [1,3,5,7] then Echo := Echo - 1
|
|||
|
else Echo := Echo + 1;
|
|||
|
|
|||
|
2 : if Echo in [2,3,6,7] then Echo := Echo - 2
|
|||
|
else Echo := Echo + 2;
|
|||
|
|
|||
|
3 : if Echo in [4..7] then Echo := Echo - 4
|
|||
|
else Echo := Echo + 4;
|
|||
|
4 : SysTextEcho:=not SysTextEcho;
|
|||
|
5 : AllCh:=not AllCh;
|
|||
|
end;
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
Until Flag;
|
|||
|
if AllCH then
|
|||
|
begin
|
|||
|
for i:=1 to maxlink do
|
|||
|
begin
|
|||
|
if i<>kanal then
|
|||
|
begin
|
|||
|
K[i]^.Echo:=K[kanal]^.Echo;
|
|||
|
K[i]^.SysTextEcho:=K[kanal]^.SysTextEcho;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Function LPT_Error (* (Nr : Byte) : Boolean *);
|
|||
|
Begin
|
|||
|
LPT_Error := ((Port[LPT_Base[Nr] + $01] and $B8) <> $98);
|
|||
|
End;
|
|||
|
|
|||
|
(* Den String 'Zeile' an den Drucker schicken *)
|
|||
|
(* Steuerzeichen an den Drucker muessen schon vorher gesendet werden ! *)
|
|||
|
Procedure Write_Lpt (* Kanal : Byte; Zeile : Str20 *);
|
|||
|
var Fehler : Integer;
|
|||
|
i : Byte;
|
|||
|
TimeOut,
|
|||
|
TimeMerk : LongInt;
|
|||
|
Flag : Boolean;
|
|||
|
|
|||
|
Procedure Druckerfehler(B : Byte);
|
|||
|
var l,
|
|||
|
TimeOut : LongInt;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Flag,
|
|||
|
Fehler : Boolean;
|
|||
|
Code : Byte;
|
|||
|
begin
|
|||
|
TimeOut := 0;
|
|||
|
l := TimerTick;
|
|||
|
Repeat
|
|||
|
Code := Port[LPT_Base[PrtPort]+$01];
|
|||
|
Flag := Code and B = B;
|
|||
|
Fehler := Code and $38 <> $18;
|
|||
|
if l <> TimerTick then
|
|||
|
begin
|
|||
|
inc(TimeOut);
|
|||
|
l := TimerTick;
|
|||
|
end;
|
|||
|
Until Flag or Fehler or (TimeOut > Lpt_TimeOut);
|
|||
|
if (TimeOut > Lpt_TimeOut) or Fehler then
|
|||
|
begin
|
|||
|
InfoOut(Kanal,1,1,InfoZeile(291));
|
|||
|
_ReadKey(KC,VC);
|
|||
|
if UpCase(VC) in YesMenge then PrtFailure := true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Begin
|
|||
|
if not PrtFailure then
|
|||
|
begin
|
|||
|
i := 0;
|
|||
|
Flag := false;
|
|||
|
While not Flag and (i < length(Zeile)) do
|
|||
|
begin
|
|||
|
inc(i);
|
|||
|
Druckerfehler($80);
|
|||
|
if not PrtFailure then
|
|||
|
begin
|
|||
|
Port[LPT_Base[PrtPort]] := Ord(Zeile[i]);
|
|||
|
Port[LPT_Base[PrtPort] + $02] := Port[LPT_Base[PrtPort] + $02] or $01;
|
|||
|
Port[LPT_Base[PrtPort] + $02] := Port[LPT_Base[PrtPort] + $02] and $FE;
|
|||
|
Druckerfehler($40);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure LptEscSeq(* Kanal : Byte; Zeile : Str80 *);
|
|||
|
Var Hstr : String[20];
|
|||
|
Begin
|
|||
|
if LPT_vorhanden then
|
|||
|
begin
|
|||
|
Hstr := '';
|
|||
|
while Zeile > '' do
|
|||
|
begin
|
|||
|
Hstr := Hstr + chr(str_int(CutStr(Zeile)));
|
|||
|
Zeile := RestStr(Zeile);
|
|||
|
end;
|
|||
|
Write_Lpt(Kanal,Hstr);
|
|||
|
end else InfoOut(Kanal,1,1,InfoZeile(292));
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Lpt_On_Off (* Kanal : Byte *);
|
|||
|
Var i : Byte;
|
|||
|
D_ON : Boolean;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if Drucker then
|
|||
|
begin
|
|||
|
Write_Lpt(Kanal,LptEsc[10]);
|
|||
|
Drucker := false;
|
|||
|
Print := false;
|
|||
|
PrtFailure := false;
|
|||
|
end else
|
|||
|
begin
|
|||
|
if LPT_vorhanden then
|
|||
|
begin
|
|||
|
D_ON := false;
|
|||
|
for i := 0 to maxLink do if K[i]^.Drucker then D_On := true;
|
|||
|
if not D_ON then
|
|||
|
begin
|
|||
|
if not LPT_Error(PrtPort) then
|
|||
|
begin
|
|||
|
Drucker := true;
|
|||
|
Print := true;
|
|||
|
Write_Lpt(Kanal,LptEsc[9]);
|
|||
|
end else InfoOut(Kanal,1,1,InfoZeile(290));
|
|||
|
end else Alarm;
|
|||
|
end else InfoOut(Kanal,1,1,InfoZeile(292));
|
|||
|
end;
|
|||
|
for i := 0 to maxLink do SetzeFlags(i);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Write_Drucker (* Kanal : Byte; Zeile : String *);
|
|||
|
var i : Integer;
|
|||
|
ch : char;
|
|||
|
Begin
|
|||
|
if not PrtFailure then with K[Kanal]^ do
|
|||
|
Begin
|
|||
|
Zeile := Line_Convert(Kanal,2,Zeile);
|
|||
|
for i := 1 to length(Zeile) do
|
|||
|
Begin
|
|||
|
ch := Zeile[i];
|
|||
|
if (D_Spalte > 80) and (ch <> #13) then
|
|||
|
Begin
|
|||
|
Write_Lpt(Kanal,^J +M1);
|
|||
|
D_Spalte := 1;
|
|||
|
End;
|
|||
|
case ch of
|
|||
|
^J,
|
|||
|
M1 : Begin
|
|||
|
if (Kanal = 0) then
|
|||
|
Begin
|
|||
|
if D_Spalte <> 1 then Write_Lpt(Kanal,^J +M1);
|
|||
|
End else Write_Lpt(Kanal,^J +M1);
|
|||
|
D_Spalte := 1;
|
|||
|
End;
|
|||
|
#127: ;
|
|||
|
#0..#31
|
|||
|
: ;
|
|||
|
else Begin
|
|||
|
Write_Lpt(Kanal,ch);
|
|||
|
inc(D_Spalte);
|
|||
|
End;
|
|||
|
end;
|
|||
|
End;
|
|||
|
End;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Vorschreib_Uebergabe;
|
|||
|
var VC : char;
|
|||
|
Hstr : String[80];
|
|||
|
KC : Sondertaste;
|
|||
|
a,i : Integer;
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
Hstr := '';
|
|||
|
Flag := false;
|
|||
|
i := K[show]^.QBeg + 1;
|
|||
|
WriteRam(1,K[show]^.Y1V+K[show]^.VBeg-1,Attrib[5],0,VorWrite[show]^[K[show]^.stV]);
|
|||
|
WriteRam(1,i,Attrib[5],0,EFillStr(80,B1,InfoZeile(51)));
|
|||
|
GetString(UeberNr,Attrib[5],2,length(InfoZeile(51))+1,i,KC,0,Flag);
|
|||
|
a := str_int(UeberNr);
|
|||
|
if KC = _Ret then
|
|||
|
begin
|
|||
|
if (a in [0..maxLink]) and (a <> show) then
|
|||
|
begin
|
|||
|
with K[show]^ do
|
|||
|
begin
|
|||
|
Hstr := VorWrite[show]^[stV];
|
|||
|
if Vor_im_EMS then EMS_Seite_Einblenden(a,Vor);
|
|||
|
Vor_Feld_Scroll(a);
|
|||
|
Vor_Dn_Scroll(a);
|
|||
|
VorWrite[a]^[K[a]^.stV] := Hstr;
|
|||
|
Chr_Darstell(a,_Alt8,#255);
|
|||
|
Chr_Darstell(a,_End,#255);
|
|||
|
if Vor_im_EMS then EMS_Seite_Einblenden(show,Vor);
|
|||
|
VorWrite[show]^[stV] := '';
|
|||
|
Chr_Darstell(show,_Dn,#255);
|
|||
|
end;
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
Neu_Bild;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Vorschreib_Such (Kanal : Byte);
|
|||
|
var i,i1 : Integer;
|
|||
|
KC : Sondertaste;
|
|||
|
Hstr : String[80];
|
|||
|
Suchstr : String[20];
|
|||
|
gefunden: Boolean;
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin;
|
|||
|
gefunden := false;
|
|||
|
Suchstr := '';
|
|||
|
Hstr := B1 + InfoZeile(42) + B1;
|
|||
|
WriteRam(1,VBeg,Attrib[5],0,EFillStr(80,B1,Hstr));
|
|||
|
GetString(Suchstr,Attrib[5],20,length(Hstr)+1,VBeg,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
i := stV;
|
|||
|
Repeat
|
|||
|
i1 := pos(Suchstr,UpCaseStr(VorWrite[Kanal]^[i]));
|
|||
|
if i1 > 0 then gefunden := true;
|
|||
|
inc(i);
|
|||
|
Until (gefunden) or (i = (VorZeilen - VorCmdZeilen)+1);
|
|||
|
if gefunden then
|
|||
|
begin
|
|||
|
dec(i); Neu_Bild; X1V := i1; Y1V := 2;
|
|||
|
if i = 1 then Y1V := 1;
|
|||
|
if i = (VorZeilen - VorCmdZeilen) then Y1V := 3;
|
|||
|
stV := i;
|
|||
|
InfoOut(Kanal,1,1,InfoZeile(8));
|
|||
|
end else InfoOut(Kanal,1,1,InfoZeile(9));
|
|||
|
end else Neu_Bild;
|
|||
|
Chr_Darstell(Kanal,_Andere,#255);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Belog_Eintrag (* Kanal : Byte *);
|
|||
|
Var Hstr : String[80];
|
|||
|
Bstr : String[20];
|
|||
|
KC : Sondertaste;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Bstr := '';
|
|||
|
Hstr := B1 + InfoZeile(26) + B1;
|
|||
|
WriteRam(1,VBeg,Attrib[5],0,EFillStr(80,B1,Hstr));
|
|||
|
GetString(Bstr,Attrib[5],20,length(Hstr)+1,VBeg,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
LogMerker := Bstr;
|
|||
|
BeLogEintr := Bstr > '';
|
|||
|
end;
|
|||
|
Neu_Bild;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
PROCEDURE BoxListe (* Kanal : Byte *);
|
|||
|
begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if not BoxListeErg then
|
|||
|
begin
|
|||
|
OpenDBox(Kanal);
|
|||
|
BoxStr := EFillStr(79,GPkt,GPkt + B1 + 'Connect to' + B1 +
|
|||
|
Call + DP + B1 + User_Name + B1 + GPkt + B1 +
|
|||
|
'Login' + DP + B1 + WochenTag + B1 +
|
|||
|
copy(Datum,4,8) + B1 + copy(Uhrzeit,1,5) + B1) +
|
|||
|
B1 + Chr(Attrib[20]);
|
|||
|
Rubrik := ConstStr(B1,8);
|
|||
|
Write_BoxStr(Kanal,1);
|
|||
|
BoxlisteErg:=True;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
{Setzt SysArt und SCon aus dem System-String des uebergebenen Kanals }
|
|||
|
{liefert true zurueck, wenn SysArt <> 0 //db1ras }
|
|||
|
Function SetzeSysArt (* (Kanal : Byte) : Boolean *);
|
|||
|
Var Flag : Boolean;
|
|||
|
i,
|
|||
|
OldSysArt : Byte;
|
|||
|
|
|||
|
Begin
|
|||
|
With k[Kanal]^ Do Begin
|
|||
|
OldSysArt:=SysArt;
|
|||
|
SysArt:=0;
|
|||
|
SCon[0]:=false;
|
|||
|
If Not node Then
|
|||
|
For i:=1 to maxSCon Do Begin
|
|||
|
SCon[i]:=false;
|
|||
|
If Pos(SNam[i],UpCaseStr(System))=1 Then
|
|||
|
SysArt:=i;
|
|||
|
End;
|
|||
|
|
|||
|
SCon[SysArt]:=true;
|
|||
|
|
|||
|
If SysArt<>OldSysArt Then
|
|||
|
SystemErkannt:='';
|
|||
|
|
|||
|
If SysArt=0 Then
|
|||
|
SetzeSysArt:=false
|
|||
|
Else
|
|||
|
SetzeSysArt:=true;
|
|||
|
|
|||
|
End;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure L_ON (* Kanal:Byte; Zeile:Str128; Connect_out,ReKon:Boolean *);
|
|||
|
var i : Byte;
|
|||
|
callst,
|
|||
|
ZStr : String;
|
|||
|
Hs : string[8];
|
|||
|
FlagS,
|
|||
|
FlagQ,
|
|||
|
Flag : Boolean;
|
|||
|
AuSyst : Byte;
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
Begin
|
|||
|
|
|||
|
BellCount:=0;
|
|||
|
SystemErkannt:='';
|
|||
|
if (Fwd) and (acZeile='') then fwdGo:=true;
|
|||
|
FTxName := Konfig.SavVerz;
|
|||
|
FRxName := Konfig.SavVerz;
|
|||
|
SPRxCount:=0;
|
|||
|
SPRxSoll:=0;
|
|||
|
TX_CRC:=0;
|
|||
|
RX_CRC:=0;
|
|||
|
ReqName:=False;
|
|||
|
if not ESC_Call then CompC:=false;
|
|||
|
BoxListeErg:=false;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
NodeTimeOut:=NTimeout*60;
|
|||
|
TermTimeOut:=Konfig.TTimeout * 60;
|
|||
|
if ScreenSTBY then
|
|||
|
begin
|
|||
|
ScreenSTBY := false;
|
|||
|
ScreenTimer := ScreenInit;
|
|||
|
Neu_Bild;
|
|||
|
End;
|
|||
|
|
|||
|
TNC_K := false;
|
|||
|
i := pos(' - ',Zeile);
|
|||
|
if i > 0 then (* TNC V2.1c hat Uhrzeit gesendet *)
|
|||
|
begin
|
|||
|
TNC_K := true;
|
|||
|
TNC_Date := copy(Zeile,i+3,8);
|
|||
|
if TNC_Date[3] = '/' (* amerikanisches Format *)
|
|||
|
then TNC_Date := copy(TNC_Date,4,2) + Pkt + copy(TNC_Date,1,2) +
|
|||
|
Pkt + copy(TNC_Date,7,2);
|
|||
|
TNC_Date := GetWeekDay(TNC_Date) + B1 + TNC_Date;
|
|||
|
TNC_Time := copy(Zeile,i+12,8);
|
|||
|
delete(Zeile,i,20); (* Datum/Uhrzeit abschneiden *)
|
|||
|
end;
|
|||
|
|
|||
|
if show <> Kanal then NochNichtGelesen := true
|
|||
|
else NochNichtGelesen := false;
|
|||
|
Zeile := RestStr(Zeile);
|
|||
|
|
|||
|
callst := ParmStr(3,B1,Zeile);
|
|||
|
call := copy(callst, pos(':',CallSt) +1,length(callst));
|
|||
|
StatusOut(Kanal,4,1,Attrib[11],EFillStr(9,B1,Call),1);
|
|||
|
connected := true;
|
|||
|
|
|||
|
If not ESC_Call Then First_Frame := true; {//db1ras}
|
|||
|
DBoxScaned := false;
|
|||
|
DieBoxPW := '';
|
|||
|
Hold := false;
|
|||
|
|
|||
|
if WishBoxLst and (SysArt in SysMenge) then
|
|||
|
begin
|
|||
|
SysArt := 0;
|
|||
|
if not BoxScroll then CloseDBox(Kanal);
|
|||
|
end;
|
|||
|
|
|||
|
{ if rekon then
|
|||
|
begin}
|
|||
|
Sysart:=0;
|
|||
|
|
|||
|
AutoKenn:=False;
|
|||
|
SystemErkannt:='';
|
|||
|
{ end; }
|
|||
|
|
|||
|
AuSyst:=SysArt;
|
|||
|
|
|||
|
UmlautMerk := Umlaut;
|
|||
|
User_Name := GetName(Kanal,Call,Umlaut,TRUE);
|
|||
|
|
|||
|
|
|||
|
Flag:=SetzeSysArt(Kanal); {ersetzt folgendes //db1ras}
|
|||
|
(* Flag := false;
|
|||
|
for i := 0 to maxSCon do SCon[i] := false;
|
|||
|
|
|||
|
if not node then
|
|||
|
begin
|
|||
|
SysArt := 0;
|
|||
|
i:=0;
|
|||
|
Repeat
|
|||
|
inc(SysArt);
|
|||
|
if pos(SNam[SysArt],UpCaseStr(System)) = 1 then
|
|||
|
begin
|
|||
|
Flag := true;
|
|||
|
SCon[SysArt] := true;
|
|||
|
i:=SysArt;
|
|||
|
end
|
|||
|
else
|
|||
|
begin
|
|||
|
Scon[sysArt]:=false;
|
|||
|
end;
|
|||
|
Until (SysArt = maxSCon);
|
|||
|
|
|||
|
SysArt:=i;
|
|||
|
end else SysArt:=0; {if not node}
|
|||
|
|
|||
|
for i:=1 to Sysart-1 do Scon[sysArt]:=false; {?????????????????? //db1ras}
|
|||
|
*)
|
|||
|
if AutoKenn then
|
|||
|
begin
|
|||
|
flag:=true;
|
|||
|
SysArt:=AuSyst;
|
|||
|
scon[SysArt]:=true;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
if Flag then
|
|||
|
Case SysArt of
|
|||
|
1,2,3,4,5,
|
|||
|
14: begin
|
|||
|
if SysArt = 2 then
|
|||
|
begin
|
|||
|
Zstr := Call;
|
|||
|
Strip(Zstr);
|
|||
|
ExtMld := Zstr + '>';
|
|||
|
end;
|
|||
|
|
|||
|
if WishBoxLst then BoxListe(Kanal);
|
|||
|
end;
|
|||
|
|
|||
|
11: if HoldDXc then
|
|||
|
begin
|
|||
|
Zstr := HoldDXcStr;
|
|||
|
Link_erhalter(Kanal,Zstr);
|
|||
|
SetzeFlags(Kanal);
|
|||
|
end;
|
|||
|
|
|||
|
12: S_PAC(Kanal,NU,true,M1);
|
|||
|
|
|||
|
end else
|
|||
|
begin
|
|||
|
SysArt := 0;
|
|||
|
SCon[0] := true;
|
|||
|
end;
|
|||
|
|
|||
|
if Rekon then
|
|||
|
begin
|
|||
|
ConnectMerk := '';
|
|||
|
i := pos('>' + Call + B1,ACMerk + B1);
|
|||
|
if i > 0 then
|
|||
|
begin
|
|||
|
While (i > 0) and (ACMerk[i] <> B1) do dec(i);
|
|||
|
Zstr := copy(ACMerk,1,i);
|
|||
|
KillEndBlanks(Zstr);
|
|||
|
delete(ACMerk,1,i);
|
|||
|
Zstr := Zstr + B1 + CutStr(ACMerk) + B1;
|
|||
|
ACMerk := RestStr(ACMerk);
|
|||
|
While (length(ACMerk) > 0) and (pos('>',CutStr(ACMerk)) = 0) do
|
|||
|
begin
|
|||
|
Zstr := Zstr + CutStr(ACMerk) + B1;
|
|||
|
ACMerk := RestStr(ACMerk);
|
|||
|
end;
|
|||
|
KillStartBlanks(Zstr);
|
|||
|
KillEndBlanks(Zstr);
|
|||
|
ACMerk := Zstr + B1;
|
|||
|
end;
|
|||
|
end else
|
|||
|
begin
|
|||
|
While pos(M1,ConnectMerk) > 0 do
|
|||
|
delete(ConnectMerk,pos(M1,ConnectMerk),1);
|
|||
|
i := pos(B1,ConnectMerk);
|
|||
|
if i > 0 then ConnectMerk[i] := '>';
|
|||
|
KillEndBlanks(ConnectMerk);
|
|||
|
ACMerk := ACMerk + ConnectMerk + B1;
|
|||
|
ConnectMerk := '';
|
|||
|
end;
|
|||
|
|
|||
|
RemAll := false;
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
UserInStatus(Kanal);
|
|||
|
if Connect_Out then
|
|||
|
begin
|
|||
|
QSO_Date := Datum;
|
|||
|
QSO_Begin := copy(Uhrzeit,1,5);
|
|||
|
end;
|
|||
|
if not TNC_ReadOut and TNC_K then
|
|||
|
begin
|
|||
|
QSO_Date := TNC_Date;
|
|||
|
QSO_Begin := TNC_Time;
|
|||
|
end;
|
|||
|
{****fehlerquelle?}
|
|||
|
if Connect_out then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,CM,true,'O' + int_str(MaxFrame));
|
|||
|
ConText := RestStr(RestStr(Zeile));
|
|||
|
_aus(Attrib[20],Kanal,Star + Zeile);
|
|||
|
if TNC_ReadOut or TNC_K then _aus(Attrib[20],Kanal,
|
|||
|
B1 + LRK + QSO_Date + B1 + QSO_Begin + RRK);
|
|||
|
_aus(Attrib[20],Kanal,M1);
|
|||
|
if Auto_CON and (show = Kanal) then _aus(Attrib[20],Kanal,M1);
|
|||
|
end;
|
|||
|
Status2;
|
|||
|
|
|||
|
flagq:=quiet;
|
|||
|
if ((VIP_) and (VIPG)) then quiet:=false;
|
|||
|
Klingel:=not quiet;
|
|||
|
{OR SPEEK}
|
|||
|
if TNC_ReadOut and (Klingel) then
|
|||
|
begin
|
|||
|
if not Auto_CON then
|
|||
|
begin
|
|||
|
if NodeCon then
|
|||
|
begin
|
|||
|
if ReKon and Klingel then
|
|||
|
begin
|
|||
|
FlagS:=False;
|
|||
|
if (not NodE) or ((Node) and (Konfig.NodeSound)) then
|
|||
|
begin
|
|||
|
hs:='RBELL';
|
|||
|
{$IFDEF Sound}
|
|||
|
if Konfig.WavOut and Exists(konfig.spkverz+hs+'.WAV') then
|
|||
|
begin
|
|||
|
WavStream:=WavStream+#3+EFillStr(8,B1,hs);
|
|||
|
FlagS:=True;
|
|||
|
end;
|
|||
|
|
|||
|
If Konfig.MidiOut and Exists(Konfig.SpkVerz+'RBELL.MID') then Flags:=playmidi(konfig.spkverz+'RBELL.MID');
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
if not FlagS then
|
|||
|
begin
|
|||
|
Beep(G^.C1_TON,G^.C1_TonTime);
|
|||
|
Verzoegern(100);
|
|||
|
Beep(G^.C2_Ton,G^.C2_TonTime);
|
|||
|
end;
|
|||
|
if speek then {sprachwav(call);}sprechen(call);
|
|||
|
end;
|
|||
|
end else
|
|||
|
if Klingel then
|
|||
|
if (not NodE) or ((Node) and (Konfig.NodeSound)) then
|
|||
|
begin
|
|||
|
FlagS:=False;
|
|||
|
hs:='WBELL';
|
|||
|
{$IFDEF Sound}
|
|||
|
if Konfig.WavOut and Exists(konfig.spkverz+hs+'.WAV') then
|
|||
|
begin
|
|||
|
WavStream:=WavStream+#3+EFillStr(8,B1,hs);
|
|||
|
FlagS:=True;
|
|||
|
end;
|
|||
|
|
|||
|
If Konfig.MidiOut and Exists(Konfig.SpkVerz+'WBELL.MID') then Flag:=playmidi(konfig.spkverz+'WBELL.MID');
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
if not FlagS then
|
|||
|
begin
|
|||
|
Beep(G^.C2_Ton,G^.C2_TonTime);
|
|||
|
Verzoegern(100);
|
|||
|
Beep(G^.C1_Ton,G^.C1_TonTime);
|
|||
|
end;
|
|||
|
if speek then {sprachwav(call);} sprechen(call);
|
|||
|
end;
|
|||
|
NodeCon := false;
|
|||
|
end else
|
|||
|
begin
|
|||
|
|
|||
|
if Klingel then
|
|||
|
begin
|
|||
|
if ((not NodE) and (not K[gegenkanal]^.node)) or ((Node) and (Konfig.NodeSound)) then C_Bell(call,kanal);
|
|||
|
end;
|
|||
|
{or speek}
|
|||
|
if ((morsen) or (speek)) and (Outside) then
|
|||
|
if ((not NodE) and(not K[gegenkanal]^.node )) or ((Node) and (Konfig.NodeSound)) then
|
|||
|
begin
|
|||
|
ZStr := Call;
|
|||
|
Strip(ZStr);
|
|||
|
if morsen then
|
|||
|
begin
|
|||
|
Verzoegern(10 * MPause);
|
|||
|
Morse(Kanal,ZStr);
|
|||
|
end;
|
|||
|
if Speek then {sprachwav(call); }Sprechen(Call);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
quiet:=flagq;
|
|||
|
klingel:=not quiet;
|
|||
|
if Auto_CON then
|
|||
|
begin
|
|||
|
Outside := false;
|
|||
|
if ACZeile = '' then
|
|||
|
begin
|
|||
|
FoundCall := false;
|
|||
|
Auto_CON := false;
|
|||
|
if AusstiegsKanal then
|
|||
|
begin
|
|||
|
Ignore := true;
|
|||
|
K[GegenKanal]^.Ignore := true;
|
|||
|
end;
|
|||
|
if ((not Node) and (not K[gegenkanal]^.node)) or ((node) and (konfig.nodesound)) then C_Bell(call, kanal);
|
|||
|
|
|||
|
if morsen then
|
|||
|
begin
|
|||
|
Verzoegern(10 * MPause);
|
|||
|
ZStr := Call;
|
|||
|
Strip(ZStr);
|
|||
|
Morse(Kanal,ZStr);
|
|||
|
end;
|
|||
|
if Speek then {sprachwav(call);} Sprechen(Call);
|
|||
|
end;
|
|||
|
if Auto_CON then
|
|||
|
begin
|
|||
|
Zstr := GetConStr(ACZeile);
|
|||
|
S_PAC(Kanal,NU,true,ZStr + M1);
|
|||
|
if not AusstiegsKanal then InfoOut(Kanal,0,1,Zstr);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
SetzeFlags(Kanal);
|
|||
|
UserAnwesend;
|
|||
|
|
|||
|
if (k[kanal]^.user_autopw) and (not k[kanal]^.node) then
|
|||
|
begin
|
|||
|
sysop_einloggen(kanal,'');
|
|||
|
{K[kanal]^.user_autopw:=false;}
|
|||
|
end;
|
|||
|
|
|||
|
End;
|
|||
|
|
|||
|
Procedure L_Off (* Kanal : Byte *);
|
|||
|
Var i : Byte;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
Begin
|
|||
|
BellCount:=0;
|
|||
|
EraseBufferFile(Kanal);
|
|||
|
if fwd then
|
|||
|
begin
|
|||
|
MailPolling:='';
|
|||
|
fwd_:=false;
|
|||
|
MailPrompt_:='';
|
|||
|
MailRXCall:='';
|
|||
|
end;
|
|||
|
fwdGo:=false;
|
|||
|
fwd:=false;
|
|||
|
reqname:=false;
|
|||
|
OnAct:='';
|
|||
|
FTxName := Konfig.SavVerz;
|
|||
|
FRxName := Konfig.SavVerz;
|
|||
|
TX_CRC:=0;
|
|||
|
RX_CRC:=0;
|
|||
|
Response := RestStr(Response);
|
|||
|
TNC_K := false;
|
|||
|
i := pos(' - ',Response);
|
|||
|
if i > 0 then
|
|||
|
Begin
|
|||
|
(* TNC V2.1c hat Uhrzeit gesendet *)
|
|||
|
TNC_K := true;
|
|||
|
TNC_Date := copy(Response,i+3,8);
|
|||
|
if TNC_Date[3] = '/' then (* amerikanisches Format *)
|
|||
|
TNC_Date := copy(TNC_Date,4,2) + Pkt + copy(TNC_Date,1,2) +
|
|||
|
Pkt + copy(TNC_Date,7,2);
|
|||
|
TNC_Date := GetWeekDay(TNC_Date) + B1 + TNC_Date;
|
|||
|
TNC_Time := copy(Response,i+12,8);
|
|||
|
delete(Response,i,20);
|
|||
|
End;
|
|||
|
QSO_End := copy(Uhrzeit,1,5);
|
|||
|
if not TNC_ReadOut and TNC_K then QSO_End := copy(TNC_Time,1,5);
|
|||
|
if X2 > 1 then _aus(Attrib[20],Kanal,M1);
|
|||
|
{*****fehlerquelle}
|
|||
|
_aus(Attrib[20],Kanal,Star + Response);
|
|||
|
Kanal_benutz := false;
|
|||
|
if (TNC_ReadOut or TNC_K) and connected
|
|||
|
then _aus(Attrib[20],Kanal,B1 + LRK + QSO_Date + B1 + QSO_End + RRK);
|
|||
|
_aus(Attrib[20],Kanal,M2);
|
|||
|
|
|||
|
if (FileSend) or (XBin.TX) then
|
|||
|
begin
|
|||
|
FiResult := CloseBin(TxFile);
|
|||
|
FileSend := false;
|
|||
|
end;
|
|||
|
|
|||
|
if (RX_Save) or (XBin.RX) then
|
|||
|
begin
|
|||
|
CloseRxFile(Kanal,1);
|
|||
|
RX_Save := false;
|
|||
|
RX_Bin := 0;
|
|||
|
AutoBinOn := AutoBin;
|
|||
|
end;
|
|||
|
if RX_Bin > 0 then
|
|||
|
begin
|
|||
|
RX_Bin := 0;
|
|||
|
AutoBinOn := AutoBin;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if connected then
|
|||
|
Begin
|
|||
|
if (SysArt in SysMenge) and not BoxScroll then CloseDBox(Kanal);
|
|||
|
for i := 0 to maxSCon do SCon[i] := false;
|
|||
|
connected := false;
|
|||
|
FoundCall := false;
|
|||
|
NodeCon := false;
|
|||
|
Status2;
|
|||
|
if TNC_ReadOut or TNC_K then
|
|||
|
begin
|
|||
|
if Klingel and TNC_ReadOut then
|
|||
|
if ((not node) and (not K[gegenkanal]^.node)) or ((node) and (konfig.nodesound)) then D_Bell(kanal);
|
|||
|
if LogArt > 0 then LogBuchEintrag(Kanal,1);
|
|||
|
end;
|
|||
|
end; (* if connected ... *)
|
|||
|
|
|||
|
Close_7Plus(Kanal);
|
|||
|
Umlaut := UmlautMerk;
|
|||
|
Outside := true;
|
|||
|
Auto_CON := false;
|
|||
|
ACZeile := '';
|
|||
|
ACMerk := '';
|
|||
|
FoundCall := false;
|
|||
|
Hold := false;
|
|||
|
RemAll := false;
|
|||
|
Fwd := false;
|
|||
|
{FwdStarted:=false;}
|
|||
|
SelfSysop:=False;
|
|||
|
MsgToMe := false;
|
|||
|
TxComp := false;
|
|||
|
RxComp := false;
|
|||
|
spcomp:=false;
|
|||
|
CompC :=false;
|
|||
|
STOPComp:=false;
|
|||
|
KompressUpd:=false;
|
|||
|
for i:=1 to 255 do
|
|||
|
begin
|
|||
|
Kompression[i]:=0;
|
|||
|
end;
|
|||
|
DBoxScaned := false;
|
|||
|
DieBoxPW := '';
|
|||
|
SysopParm := false;
|
|||
|
RTF := false;
|
|||
|
Upload := false;
|
|||
|
use_RomLw := false;
|
|||
|
RemPath := G^.Drive;
|
|||
|
TNC_Puffer := false;
|
|||
|
{EraseBufferFile(Kanal);}
|
|||
|
if Conv.Active then ConversIni(Kanal,false);;
|
|||
|
{ Ignore := false;}
|
|||
|
SendZeile := '';
|
|||
|
NodeTimeOut := NTimeOut * 60;
|
|||
|
MeldeCompZ := '';
|
|||
|
MeldeZeile := '';
|
|||
|
ExtMld := '';
|
|||
|
ExtMldFlag := false;
|
|||
|
K[Kopieren]^.KopierenFm:=0;
|
|||
|
KopierenFm:=0;
|
|||
|
Kopieren := 0;
|
|||
|
SysArt := 0;
|
|||
|
UserArt := 0;
|
|||
|
{Comp_Key [Kanal] := false;}
|
|||
|
SystemErkannt:='';
|
|||
|
QSOZeilen:=0;
|
|||
|
FileSendWait := false;
|
|||
|
AutoBinOn := AutoBin;
|
|||
|
for i := 1 to maxLink do if K[i]^.Kopieren = Kanal then K[i]^.Kopieren := 0;
|
|||
|
Auto_Init(Kanal);
|
|||
|
xbin.an:=false;
|
|||
|
xbin.rx:=false;
|
|||
|
xbin.tx:=false;
|
|||
|
xbin.frameNr:=0;
|
|||
|
xbin.ok:=false;
|
|||
|
xbin.retries:=0;
|
|||
|
xbin.eof:=false;
|
|||
|
SetzeFlags(Kanal);
|
|||
|
BoxZaehl:=Box_Time;
|
|||
|
if xbin.pdat then CloseXBinProt(Kanal);
|
|||
|
|
|||
|
End; (* WITH K[Kanal] ... *)
|
|||
|
_OnAct:=false;
|
|||
|
for i:=1 to maxlink do
|
|||
|
if K[i]^.OnAct<>'' then _OnAct:=true;
|
|||
|
Rufz_TNC_init(Kanal);
|
|||
|
UserAnwesend;
|
|||
|
End; {L_Off}
|
|||
|
|
|||
|
Procedure LogBuchEintrag (* Kanal,Art : Byte *);
|
|||
|
var i : Byte;
|
|||
|
Ch : Char;
|
|||
|
Result : Integer;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if QSO_Date > '' then
|
|||
|
begin
|
|||
|
if Art = 0 then QSO_End := copy(Uhrzeit,1,5);
|
|||
|
Assign(G^.TFile,Sys1Pfad + LogDatei + LngExt);
|
|||
|
Result := AppendTxt(G^.TFile);
|
|||
|
if Result = 0 then
|
|||
|
begin
|
|||
|
i := pos(' via ',ConText);
|
|||
|
if i > 0 then
|
|||
|
begin
|
|||
|
delete(ConText,i+2,2);
|
|||
|
if length(ConText) > 50 then ConText := copy(ConText,1,50);
|
|||
|
end;
|
|||
|
if outside then Ch := S_ch
|
|||
|
else Ch := B1;
|
|||
|
if not BeLogEintr then LogMerker := User_Name;
|
|||
|
Writeln(G^.TFile,QSO_Date,B2,QSO_Begin,'-',QSO_End,B2,
|
|||
|
SFillStr(9,B1,TNC[TncNummer]^.QRG_Akt),B1,
|
|||
|
SFillStr(2,B1,int_str(Kanal)),
|
|||
|
Ch,B2,Call,ConstStr(B1,9-length(Call)),B2,
|
|||
|
LogMerker,ConstStr(B1,20-length(LogMerker)),B2,
|
|||
|
OwnCall,ConstStr(B1,9-length(OwnCall)),' > ',ConText);
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
|
|||
|
if Art = 1 then
|
|||
|
begin
|
|||
|
LogMerker := '';
|
|||
|
BeLogEintr := false;
|
|||
|
end;
|
|||
|
end else InfoOut(Kanal,0,1,InfoZeile(45) + B1 + Int_Str(Result) + B1);
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Line_ON (* Kanal : Byte *);
|
|||
|
Var Bstr : String[80];
|
|||
|
Hstr : String[9];
|
|||
|
sec1, sec2 : string[9];
|
|||
|
i,ULogin:byte;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if AusstiegsKanal and not FoundCall then
|
|||
|
begin
|
|||
|
K[GegenKanal]^.RemConReady := true;
|
|||
|
Ignore := true;
|
|||
|
K[GegenKanal]^.Ignore := true;
|
|||
|
S_PAC(GegenKanal,NU,true,M1 + ConStr + Call + M1);
|
|||
|
end;
|
|||
|
|
|||
|
inc(CNr);
|
|||
|
_aus(Attrib[20],Kanal,InfoZeile(223) + B1+ int_str(CNr) + M1);
|
|||
|
|
|||
|
if (Konfig.CBFilter) and (not TNC[TncNummer]^.AfuPort) then
|
|||
|
begin
|
|||
|
if not (CBCallCheck(Call)) then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,InfoZeile(441) + M1);
|
|||
|
S_PAC(Kanal,CM,true,'D');
|
|||
|
|
|||
|
_aus(Attrib[20],Kanal,InfoZeile(441) + M1);
|
|||
|
exit;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if Outside and TNC_ReadOut then
|
|||
|
begin (* Conn. "von aussen" *)
|
|||
|
if Node then
|
|||
|
begin
|
|||
|
ulogin:=0;
|
|||
|
sec2:=Call; strip(sec2);
|
|||
|
for i:=1 to maxlink do
|
|||
|
begin
|
|||
|
sec1:=K[i]^.Call; strip(Sec1);
|
|||
|
if (K[i]^.Node) and (K[i]^.connected) and (sec1=Sec2) then inc(ULogin);
|
|||
|
end;
|
|||
|
if ulogin>Konfig.MaxLoginUser then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,InfoZeile(440) + M1);
|
|||
|
S_PAC(Kanal,CM,true,'D');
|
|||
|
exit;
|
|||
|
end;
|
|||
|
end;
|
|||
|
if Call_Exist(Kanal,3,'') then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,InfoZeile(116) + M1);
|
|||
|
S_PAC(Kanal,CM,true,'D');
|
|||
|
exit;
|
|||
|
end else
|
|||
|
if NOT Call_Exist(Kanal,5,'') then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,InfoZeile(433) + M1);
|
|||
|
S_PAC(Kanal,CM,true,'D');
|
|||
|
exit;
|
|||
|
end;
|
|||
|
|
|||
|
if not AusstiegsKanal then
|
|||
|
begin
|
|||
|
TXT_Senden(Kanal,6,0);
|
|||
|
if not GrtFlag then TXT_Senden(Kanal,3,0);
|
|||
|
Hstr := Call;
|
|||
|
Strip(Hstr);
|
|||
|
if TopBox and (Exists(Konfig.MailVerz + Hstr + MsgExt)) then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,false,^G+M1+InfoZeile(110)+M2+InfoZeile(111)+M2);
|
|||
|
Send_Prompt(Kanal,FF);
|
|||
|
end;
|
|||
|
S_PAC(Kanal,NU,true,'');
|
|||
|
end;
|
|||
|
end; (* Outside *)
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure FreiKanalSuch (* Kanal : Byte; Zeile : Str80 *);
|
|||
|
var i : Integer;
|
|||
|
found : Boolean;
|
|||
|
Hstr : String[80];
|
|||
|
Cross : Byte;
|
|||
|
|
|||
|
begin
|
|||
|
Gate:=0;
|
|||
|
found := false;
|
|||
|
KillEndBlanks(Zeile);
|
|||
|
Hstr := Zeile;
|
|||
|
While pos(B1,Hstr) > 0 do Hstr := RestStr(Hstr);
|
|||
|
if str_int(Hstr) > 0 then Gate := str_int(Hstr);
|
|||
|
if (str_int(Zeile[1]) > 0) and (Zeile[2]=B1) then Gate := str_int(Zeile[1]);
|
|||
|
|
|||
|
if Gate=0 then
|
|||
|
begin
|
|||
|
Zeile := CutStr(Zeile);
|
|||
|
if LinkExists(Zeile,Cross) then
|
|||
|
begin
|
|||
|
Gate := Cross;
|
|||
|
found := true;
|
|||
|
end else Gate := K[Kanal]^.TncNummer;
|
|||
|
end;
|
|||
|
|
|||
|
i := maxLink;
|
|||
|
Repeat
|
|||
|
if (not K[i]^.Test) and (not K[i]^.connected) and (K[i]^.TncNummer = Gate) and
|
|||
|
(not K[i]^.Kanal_benutz) and (not K[i]^.Mo.MonActive) then FreiKanal := i;
|
|||
|
dec(i);
|
|||
|
Until (FreiKanal > 0) or (i < 1);
|
|||
|
if Gate > Tnc_Anzahl then FreiKanal := FF else
|
|||
|
|
|||
|
{wenn Gate AFU contra CB l<>uft, mit kanal 253 abs<62>gen!}
|
|||
|
|
|||
|
|
|||
|
if (FreiKanal > 0) and Call_Exist(Kanal,4,CutStr(Zeile)) then FreiKanal := 254;
|
|||
|
{ s_pac(kanal,nu,false,'Gate:'+int_str(gatE)+' Eing:':int_str(K[kanal]^.TncNummer));
|
|||
|
if TNC[K[kanal]^.TncNummer]^.AfuPort then s_pac(kanal,nu,false,' AFU ');
|
|||
|
s_pac(kanal,nu,false,' Out:':int_str(K[kanal]^.TncNummerGate));
|
|||
|
if TNC[K[kanal]^.TncNummer]^.AfuPort then s_pac(kanal,nu,false,' AFU ');
|
|||
|
}
|
|||
|
if FreiKanal in [1..maxLink] then
|
|||
|
if TNC[K[kanal]^.TncNummer]^.AfuPort<>TNC[gate]^.AfuPort then
|
|||
|
begin
|
|||
|
freikanal:=253;
|
|||
|
end;
|
|||
|
K[FreiKanal]^.FoundCall := found;
|
|||
|
Gate := 0;
|
|||
|
end;
|
|||
|
|
|||
|
Procedure Remote_Connect_Aufbauen (* Kanal : Byte; Zeile : Str80 *);
|
|||
|
var i : Integer;
|
|||
|
Xstr : String[9];
|
|||
|
ok : Boolean;
|
|||
|
i1 : Byte;
|
|||
|
AutoCon : Boolean;
|
|||
|
SSID_org:byte;
|
|||
|
SSID_neu:byte;
|
|||
|
|
|||
|
begin
|
|||
|
KillEndBlanks(Zeile);
|
|||
|
i := length(Zeile);
|
|||
|
AutoCon := (K[K[Kanal]^.GegenKanal]^.FoundCall and
|
|||
|
(K[Kanal]^.GegenKanal > 0));
|
|||
|
|
|||
|
if (i > 1) and (Zeile[i-1] = B1) then
|
|||
|
begin
|
|||
|
if str_int(Zeile[i]) in [1..Tnc_Anzahl] then delete(Zeile,i-1,2);
|
|||
|
KillEndBlanks(Zeile);
|
|||
|
end;
|
|||
|
|
|||
|
if (i > 1) and (Zeile[2] = B1) then
|
|||
|
begin
|
|||
|
if str_int(Zeile[1]) in [1..Tnc_Anzahl] then delete(Zeile,1,2);
|
|||
|
KillEndBlanks(Zeile);
|
|||
|
end;
|
|||
|
|
|||
|
if AutoCon then NeuCall := CutStr(Zeile)
|
|||
|
else NeuCall := Zeile;
|
|||
|
|
|||
|
{ ALTE SSID-PROZEDUR}
|
|||
|
Xstr := RemoteCall;
|
|||
|
{ Strip(RemoteCall);
|
|||
|
RemoteCall := RemoteCall + '-' + int_str(15 - str_int(ParmStr(2,'-',xstr)));}
|
|||
|
{****}
|
|||
|
SSID_org:=str_int(ParmStr(2,'-',xstr));
|
|||
|
SSID_neu:=15-SSID_org;
|
|||
|
if SSID_neu=0 then SSID_neu:=9;
|
|||
|
|
|||
|
Strip(RemoteCall);
|
|||
|
RemoteCall := RemoteCall + '-' + int_str(SSID_neu);
|
|||
|
|
|||
|
{****}
|
|||
|
K[FreiKanal]^.Kanal_benutz := true;
|
|||
|
S_PAC(FreiKanal,CM,true,'I '+ RemoteCall);
|
|||
|
with K[FreiKanal]^ do if FoundCall then
|
|||
|
begin
|
|||
|
GetMem(Lnk,SizeOf(Lnk^));
|
|||
|
Lnk_Init(TncNummer,TNC[TncNummer]^.QRG_Akt);
|
|||
|
ACZeile := GetConPfad(NeuCall);
|
|||
|
FreeMem(Lnk,SizeOf(Lnk^));
|
|||
|
Auto_CON := true;
|
|||
|
Zeile := GetConStr(ACZeile);
|
|||
|
Connect(FreiKanal,Zeile);
|
|||
|
end else
|
|||
|
begin
|
|||
|
K[FreiKanal]^.Outside := false;
|
|||
|
Connect(FreiKanal,'C' + B1 + NeuCall);
|
|||
|
end;
|
|||
|
S_PAC(Kanal,NU,true,Star + InfoZeile(138) + int_str(FreiKanal) +
|
|||
|
B2 + InfoZeile(139) + int_str(K[FreiKanal]^.TncNummer) +
|
|||
|
' ('+Konfig.TNC[K[freikanal]^.TNCNummer].PortNam+')' + m1 );
|
|||
|
end;
|
|||
|
|
|||
|
Procedure RemConInit; (* Kanal : Byte; *)
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
with K[GegenKanal]^ do
|
|||
|
begin
|
|||
|
EinstiegsKanal := false;
|
|||
|
AusstiegsKanal := false;
|
|||
|
RemConReady := false;
|
|||
|
Ignore := false;
|
|||
|
SetzeFlags(GegenKanal);
|
|||
|
GegenKanal := 0;
|
|||
|
end;
|
|||
|
|
|||
|
EinstiegsKanal := false;
|
|||
|
AusstiegsKanal := false;
|
|||
|
RemConReady := false;
|
|||
|
Ignore := false;
|
|||
|
GegenKanal := 0;
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
(* Das Unproto-Rufzeichen in der Statuszeile darstellen *)
|
|||
|
(* Wurde ge<67>ndert, weil ein zu langes Unproto den Rest der Statuszeile
|
|||
|
<20>berschrieben hat - elegantere L<>sung de DJ0HC *)
|
|||
|
|
|||
|
Procedure Unproto_darstellen;
|
|||
|
var i : Integer;
|
|||
|
Hstr : String[19];
|
|||
|
Begin
|
|||
|
K[0]^.TncNummer := Unproto;
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(0,CM,true,'C');
|
|||
|
i := pos('via',K[0]^.Response);
|
|||
|
if i > 0 then Hstr := copy(K[0]^.Response,1,i-1) else
|
|||
|
Hstr := K[0]^.Response;
|
|||
|
Hstr := Channel_ID(0) + Hstr;
|
|||
|
StatusOut(0,2,1,Attrib[9],EFillStr(19,B1,Hstr),1);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Terminal_Kanal (* Kanal : Byte; Anz : ShortInt *);
|
|||
|
Begin
|
|||
|
case Anz of
|
|||
|
1 : if Kanal < maxLink then SwitchChannel(Kanal+1) else Alarm;
|
|||
|
-1 : if Kanal > 0 then SwitchChannel(Kanal-1) else Alarm;
|
|||
|
10 : if Kanal > 0 then
|
|||
|
begin
|
|||
|
if (Kanal+10) <= maxLink then SwitchChannel(Kanal+10) else Alarm;
|
|||
|
end else
|
|||
|
begin
|
|||
|
if multiTNC then
|
|||
|
begin
|
|||
|
inc(Unproto);
|
|||
|
if Unproto > TNC_Anzahl then unproto := 1;
|
|||
|
Unproto_darstellen;
|
|||
|
Neu_Bild;
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
-10 : if Kanal > 0 then
|
|||
|
begin
|
|||
|
if (Kanal-10) > 0 then SwitchChannel(Kanal-10) else Alarm;
|
|||
|
end else
|
|||
|
begin
|
|||
|
if multiTNC then
|
|||
|
begin
|
|||
|
dec(Unproto);
|
|||
|
if Unproto < 1 then unproto := TNC_Anzahl;
|
|||
|
Unproto_darstellen;
|
|||
|
Neu_Bild;
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Trennzeilen (* Kanal : Byte; KC : SonderTaste *);
|
|||
|
var i,i1,
|
|||
|
Art : Byte;
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Flag := RX_TX_Win;
|
|||
|
if Flag then Change_WIN;
|
|||
|
|
|||
|
case KC of
|
|||
|
_ShHome : if Flag and (Kanal > 0) then Art := 2 else Art := 1;
|
|||
|
_ShEnd : if Flag and (Kanal > 0) then Art := 1 else Art := 2;
|
|||
|
_ShPgUp : Art := 3;
|
|||
|
_ShPgDn : Art := 4;
|
|||
|
else Art := 0;
|
|||
|
end;
|
|||
|
|
|||
|
case Art of
|
|||
|
1 : if ((Kanal > 0) and (ObStat > 3)) or
|
|||
|
((Kanal = 0) and (ObStat > (TicAnz + 3))) then
|
|||
|
begin (* obere TrennZeile nach oben *)
|
|||
|
if Kanal = 0 then i1 := TicAnz else i1 := 0;
|
|||
|
dec(ObStat);
|
|||
|
if Y1C + i1 >= ObStat then if Y1C > 1 then dec(Y1C) else inc(stC);
|
|||
|
if Y1V + i1 >= ObStat then if Y1V > 1 then dec(Y1V) else inc(stV);
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
2 : if (ObStat <= VorZeilen - VorCmdZeilen) and
|
|||
|
((ObStat+5 < UnStat) or (Kanal = 0) and (ObStat+4 < maxZ)) then
|
|||
|
begin (* obere TrennZeile nach unten *)
|
|||
|
inc(ObStat);
|
|||
|
if stC - VorZeilen + VorCmdZeilen - Y1C > 0
|
|||
|
then if Y1C < VorCmdZeilen then inc(Y1C);
|
|||
|
if stV-Y1V > 0 then inc(Y1V);
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
3 : if Kanal > 0 then (* untere TrennZeile nach oben *)
|
|||
|
begin
|
|||
|
if UnStat > ObStat + 5 then
|
|||
|
begin
|
|||
|
dec(UnStat);
|
|||
|
if UnStat = maxZ-1 then UnStat := maxZ-2;
|
|||
|
end else Alarm;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
4 : if Kanal > 0 then (* untere TrennZeile nach unten *)
|
|||
|
begin
|
|||
|
if UnStat < maxZ then
|
|||
|
Begin
|
|||
|
inc(UnStat);
|
|||
|
if UnStat = maxZ-1 then UnStat := maxZ;
|
|||
|
End else Alarm;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
if GlobalTrenn and (Kanal > 0) then
|
|||
|
begin
|
|||
|
K[0]^.ObStat := ObStat;
|
|||
|
for i := 1 to maxLink do
|
|||
|
begin
|
|||
|
K[i]^.ObStat := ObStat;
|
|||
|
K[i]^.UnStat := UnStat;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Fenster_Berechnen;
|
|||
|
if Flag then Change_WIN;
|
|||
|
Neu_Bild;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Fenster_Berechnen;
|
|||
|
Var i : Byte;
|
|||
|
Begin
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
if i > 0 then
|
|||
|
begin
|
|||
|
if RX_TX_Win then
|
|||
|
begin
|
|||
|
VBeg := ObStat + 3; {+2}
|
|||
|
VEnd := UnStat - 1;
|
|||
|
QBeg := 1;
|
|||
|
QEnd := ObStat - 1;
|
|||
|
end else
|
|||
|
begin
|
|||
|
VBeg := 1;
|
|||
|
VEnd := ObStat - 1;
|
|||
|
QBeg := ObStat + 3; {+2}
|
|||
|
QEnd := UnStat - 1;
|
|||
|
end;
|
|||
|
end else
|
|||
|
begin
|
|||
|
if ObStat <= (TicAnz + 2) then
|
|||
|
begin
|
|||
|
ObStat := TicAnz + 4; {+3}
|
|||
|
UnStat := ObStat + 3; {+2}
|
|||
|
end;
|
|||
|
VBeg := TicAnz + 1;
|
|||
|
VEnd := ObStat - 1;
|
|||
|
UnStat := ObStat + 3; {+2}
|
|||
|
QBeg := 0;
|
|||
|
QEnd := 0;
|
|||
|
end;
|
|||
|
Vofs := VBeg - 1;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Change_WIN;
|
|||
|
Var i,zv,zq : Byte;
|
|||
|
Begin
|
|||
|
for i := 1 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
{unStat}
|
|||
|
zv := VEnd - VBeg;
|
|||
|
zq := QEnd - QBeg - 2;
|
|||
|
if RX_TX_Win then
|
|||
|
begin
|
|||
|
{vorschreib nach oben, qso nach unten}
|
|||
|
VBeg := 1;
|
|||
|
VEnd := VBeg + zv;
|
|||
|
ObStat := VEnd + 1;
|
|||
|
QBeg := ObStat + 3; {+2}
|
|||
|
QEnd := UnStat - 1;
|
|||
|
{ VBeg := 1;
|
|||
|
VEnd := VBeg + zv -1 ;
|
|||
|
ObStat := VEnd + 1;
|
|||
|
QBeg := ObStat + 3; +2
|
|||
|
QEnd := QBeg + zq - 1;}
|
|||
|
end else
|
|||
|
begin
|
|||
|
{vorschreib nac unten, qso nach oben}
|
|||
|
QBeg := 1;
|
|||
|
QEnd := QBeg + zq +2;
|
|||
|
ObStat := QEnd + 1;
|
|||
|
VBeg := ObStat + 3; {+1}
|
|||
|
VEnd := UnStat-1;
|
|||
|
{ QBeg := 1;
|
|||
|
QEnd := QBeg + zq - 1;
|
|||
|
ObStat := QEnd + 1;
|
|||
|
VBeg := ObStat + 2; +1
|
|||
|
VEnd := VBeg + zv;}
|
|||
|
end;
|
|||
|
Vofs := VBeg-1;
|
|||
|
end;
|
|||
|
RX_TX_Win := not RX_TX_Win;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure ClearVorBuffer (* Kanal : Byte *);
|
|||
|
var i : Byte;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if Vor_im_EMS then EMS_Seite_Einblenden(Kanal,Vor);
|
|||
|
if cmd then
|
|||
|
for i := VorZeilen-VorCmdZeilen+1 to VorZeilen do
|
|||
|
VorWrite[Kanal]^[i][0] := Chr(2)
|
|||
|
else for i := 1 to VorZeilen-VorCmdZeilen do VorWrite[Kanal]^[i] := '';
|
|||
|
Chr_Darstell(Kanal,_CtrlPgUp,#255);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure ClearScrBuffer (* Kanal : Byte *);
|
|||
|
var Result : Word;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
GetMem(Page,maxNotCh);
|
|||
|
FillChar(Page^,maxNotCh,0);
|
|||
|
if use_Vdisk then
|
|||
|
begin
|
|||
|
FiResult := ResetBin(ScrollFile,T);
|
|||
|
Seek(ScrollFile,Pos_im_Scr);
|
|||
|
BlockWrite(ScrollFile,Page^[0],maxNotCh,Result);
|
|||
|
FiResult := CloseBin(ScrollFile);
|
|||
|
end else if use_XMS then
|
|||
|
begin
|
|||
|
Data_to_XMS(@Page^[0],XMS_Handle,Pos_im_Scr,maxNotCh);
|
|||
|
end else if use_EMS then
|
|||
|
begin
|
|||
|
EMS_Seite_einblenden(Kanal,Scr);
|
|||
|
move(Page^,NotCh[Kanal]^,maxNotCh);
|
|||
|
end else move(Page^,NotCh[Kanal]^,maxNotCh);
|
|||
|
FreeMem(Page,maxNotCh);
|
|||
|
X2 := 1;
|
|||
|
NotPos := 0;
|
|||
|
NZeile := '';
|
|||
|
RxLRet := true;
|
|||
|
Neu_Bild;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
(*Function GetWeekDay ( * Dstr : Str8) : Str2 * );
|
|||
|
var Tag,Monat,Jahr,
|
|||
|
i,x,y,z,Fehler : Integer;
|
|||
|
Begin
|
|||
|
val(copy(Dstr,1,2),Tag,Fehler);
|
|||
|
if Fehler = 0 then val(copy(Dstr,4,2),Monat,Fehler);
|
|||
|
if Fehler = 0 then val(copy(Dstr,7,2),Jahr,Fehler);
|
|||
|
if Fehler = 0 then
|
|||
|
begin
|
|||
|
Jahr := Jahr + 2000;
|
|||
|
if Monat > 2 then Monat := Monat - 2 else
|
|||
|
begin
|
|||
|
Monat := Monat + 10;
|
|||
|
Jahr := Jahr - 1;
|
|||
|
end;
|
|||
|
x := Jahr mod 100;
|
|||
|
z := Jahr div 100;
|
|||
|
y := (13 * Monat - 1) div 5 + x div 4 + z div 4;
|
|||
|
i := (x + y + Tag - 2 * z) mod 7;
|
|||
|
if (i >= 0) and (i <= 6)
|
|||
|
then GetWeekDay := copy(ParmStr(i+1,B1,WeekDayStr),1,2)
|
|||
|
else GetWeekDay := 'xx';
|
|||
|
end else GetWeekDay := 'xx';
|
|||
|
End;
|
|||
|
*)
|
|||
|
|
|||
|
Function GetWeekDay (* Dstr : Str8) : Str2 *);
|
|||
|
var Tag,Monat,Jahr,
|
|||
|
i,x,y,z,Fehler : Integer;
|
|||
|
hStr : String[3];
|
|||
|
Begin
|
|||
|
val(copy(Dstr,1,2),Tag,Fehler);
|
|||
|
if Fehler = 0 then val(copy(Dstr,4,2),Monat,Fehler);
|
|||
|
if Fehler = 0 then val(copy(Dstr,7,2),Jahr,Fehler);
|
|||
|
if Fehler = 0 then
|
|||
|
begin
|
|||
|
Jahr := Jahr + 2000;
|
|||
|
if (Monat <= 2) then begin
|
|||
|
dec(Jahr);
|
|||
|
Monat := Monat + 12;
|
|||
|
end;
|
|||
|
x := trunc(365.25*Jahr) + trunc(30.6001*(Monat+1)) + trunc(Jahr/400);
|
|||
|
y := x - trunc(Jahr/100) - 712286 + Tag;
|
|||
|
i := y mod 7;
|
|||
|
if ((i>=0) AND (i<7)) then
|
|||
|
GetWeekDay := copy(ParmStr(i+1,B1,WeekDayStr),1,2)
|
|||
|
else GetWeekDay := 'xx';
|
|||
|
end else GetWeekDay := 'NU';
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Compress_Ein_Aus (* Kanal : Byte *);
|
|||
|
var i:byte;
|
|||
|
Begin
|
|||
|
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
spcomp:=False;
|
|||
|
if ( (MldOk = 19) or (MldOk = 26) ) and (not RxComp) then
|
|||
|
begin
|
|||
|
RxComp := true;
|
|||
|
if (not TxComp) and (MldOk = 19) then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,M1 + Meldung[21] + M1);
|
|||
|
if StopCode>0 then StopComp:=true;
|
|||
|
end;
|
|||
|
if (not TxComp) and (MldOk = 26) then
|
|||
|
begin
|
|||
|
if mo.Monactive then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,M1 + Meldung[27] + M1);
|
|||
|
CompC := true;
|
|||
|
KompressUpd:=true;
|
|||
|
CompCUpdZahl:=0;
|
|||
|
TXComp:=true
|
|||
|
end else
|
|||
|
begin
|
|||
|
s_pac(kanal, CM, true, 'D');
|
|||
|
rxcomp:=false;
|
|||
|
end;
|
|||
|
end;
|
|||
|
if (mldok=19) and (not TXComp) then TXComp:=true;
|
|||
|
|
|||
|
end else if ((MldOk = 20) and RxComp) or ((MldOk=20) and CompC and (TxComp)) then
|
|||
|
begin
|
|||
|
if TxComp then S_PAC(Kanal,NU,true,M1 + Meldung[22] + M1);
|
|||
|
RxComp := false;
|
|||
|
TxComp := false;
|
|||
|
for i:=1 to 255 do
|
|||
|
begin
|
|||
|
Kompression[i]:=0;
|
|||
|
end;
|
|||
|
|
|||
|
CompC:=false;
|
|||
|
KompressUpd:=false;
|
|||
|
{Comp_Key[Kanal]:=false;}
|
|||
|
MeldeZeile := '';
|
|||
|
end else if ( (MldOk = 21) or (MldOk = 27) ) and not RxComp then
|
|||
|
begin
|
|||
|
RxComp := true;
|
|||
|
if (not Mo.MonActive) and (MldOk = 27) then s_pac(kanal, CM, true, 'D');
|
|||
|
{if MldOk=27 then Comp_Key[Kanal] := true;}
|
|||
|
end else if (MldOk = 22) and RxComp then
|
|||
|
begin
|
|||
|
for i:=1 to 255 do
|
|||
|
begin
|
|||
|
Kompression[i]:=0;
|
|||
|
end;
|
|||
|
CompC:=false;
|
|||
|
KompressUpd:=false;
|
|||
|
RxComp := false;
|
|||
|
{Comp_Key[Kanal]:=false;}
|
|||
|
TxComp := false;
|
|||
|
MeldeZeile := '';
|
|||
|
end;
|
|||
|
|
|||
|
if RxComp then
|
|||
|
begin
|
|||
|
CompZeile := '';
|
|||
|
MeldeCompZ := '';
|
|||
|
end;
|
|||
|
|
|||
|
if TxComp then
|
|||
|
begin
|
|||
|
if PacLen > maxCompPac then PacLen := maxCompPac;
|
|||
|
end;
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure CompressMenu (* Kanal : Byte *);
|
|||
|
Const ArtMax = 8;
|
|||
|
Var i : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
AFlag,
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
stopline:string;
|
|||
|
hstr: string[6];
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if (SysArt=0) and (UserArt=2) then SPComp:=true;
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
AFlag := false;
|
|||
|
for i := 9 to 17 do G^.Fstx[i] := 20;
|
|||
|
G^.Fstr[7] := InfoZeile(340);
|
|||
|
G^.Fstr[10] := InfoZeile(341);
|
|||
|
G^.Fstr[11] := InfoZeile(342);
|
|||
|
G^.Fstr[12] := InfoZeile(343);
|
|||
|
G^.Fstr[13] := InfoZeile(344);
|
|||
|
G^.Fstr[14] := InfoZeile(345);
|
|||
|
stopline:=infoZeile(348);
|
|||
|
|
|||
|
if Mo.MonActive then begin
|
|||
|
G^.Fstr[15] := InfoZeile(346);
|
|||
|
g^.fstr[16] := InfoZeile(347);
|
|||
|
g^.fstr[17] := stopLine+' Code: '+int_str(StopCode);
|
|||
|
end
|
|||
|
else
|
|||
|
begin
|
|||
|
g^.fstr[15]:=infozeile(347);
|
|||
|
g^.fstr[16] := stopLine+' Code: '+int_str(StopCode);
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
if not (TxComp or RxComp) then Art := 1 else
|
|||
|
if TxComp and RxComp then Art := 2 else
|
|||
|
if TxComp then Art := 3 else
|
|||
|
if RxComp then Art := 4
|
|||
|
else Art := 1;
|
|||
|
if ((not RXComp) and (not TXComp)) and (stopcode>0) then StopComp:=true;
|
|||
|
Repeat
|
|||
|
for i := 10 to 17 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
end;
|
|||
|
|
|||
|
X:=vm; Y:=Art+9;
|
|||
|
if (not mo.monActive) and (art in [7,8]) then y:=y-1;
|
|||
|
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
if TxComp then G^.Fstr[12][vM+1] := X_ch;
|
|||
|
if RxComp then G^.Fstr[13][vM+1] := X_ch;
|
|||
|
{*} If CompC then G^.Fstr[15][vm+1] := X_ch;
|
|||
|
if SPComp then
|
|||
|
begin
|
|||
|
if Mo.MonActive then G^.Fstr[16][vm+1] := X_ch
|
|||
|
else G^.Fstr[15][vm+1] := X_ch;
|
|||
|
end;
|
|||
|
If StopComp then
|
|||
|
begin
|
|||
|
{G^.Fstr[17][vm+1] := X_ch;}
|
|||
|
if Mo.MonActive then G^.Fstr[17][vm+1] := X_ch
|
|||
|
else G^.Fstr[16][vm+1] := X_ch;
|
|||
|
end;
|
|||
|
{*} { G^.FSTR[15]:='';}
|
|||
|
G^.Fstr[9] := '';
|
|||
|
Fenster(17);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_AltH : XP_Help(G^.OHelp[25]);
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_Ret : ;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
{*} _F6 : if not mo.Monactive then
|
|||
|
begin
|
|||
|
ALARM;
|
|||
|
KC:=_F10;
|
|||
|
Art:=1;
|
|||
|
end else Art:=6;
|
|||
|
{*} _F7: Art:=7;
|
|||
|
_F8 :Art:=8;
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up,_Left : begin
|
|||
|
if Art > 1 then dec(Art)
|
|||
|
else Art:=ArtMax;
|
|||
|
if (not Mo.MonActive) and (Art=6) then art:=5;
|
|||
|
end;
|
|||
|
|
|||
|
_Dn, _Right : if Art < ArtMax then inc(Art)
|
|||
|
else Art:=1;
|
|||
|
|
|||
|
{ _Right : if Art < ArtMax then
|
|||
|
begin
|
|||
|
Art := Art + 4;
|
|||
|
if Art > ArtMax then Art := ArtMax;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_Left : if Art > 1 then
|
|||
|
begin
|
|||
|
if Art <= 4 then Art := 1
|
|||
|
else Art := Art - 4;
|
|||
|
end else Alarm; }
|
|||
|
|
|||
|
_Andere :;
|
|||
|
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (art=6) and (not Mo.MonActive) then art:=7;
|
|||
|
|
|||
|
if (KC in [_F1.._F8,_Ret]) or (VC = B1) then
|
|||
|
case Art of
|
|||
|
1 : if not (TxComp or RxComp) then
|
|||
|
begin
|
|||
|
if (Kanal > 0) and (CompC) and (not SPComp) then
|
|||
|
begin
|
|||
|
S_PAC(Kanal,NU,true,M1 + Meldung[26] + M1);
|
|||
|
KompressUpd:=true;
|
|||
|
CompCUpdZahl:=0;
|
|||
|
FileSendWaitS:=fileSendWait;
|
|||
|
FileSendWait:=true;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
if (Kanal > 0) and (not COMPC) and (not SPComp) then S_PAC(Kanal,NU,true,M1 + Meldung[19] + M1);
|
|||
|
if (Kanal > 0) and (not COMPC) and (SPComp) then S_PAC(Kanal,NU,true,M1 + Meldung[37] + M1);
|
|||
|
TxComp := true;
|
|||
|
Flag := true;
|
|||
|
end;
|
|||
|
2 : if TxComp and RxComp then
|
|||
|
begin
|
|||
|
if (Kanal > 0) and (not SPComp) then S_PAC(Kanal,NU,true,M1 + Meldung[20] + M1);
|
|||
|
if (Kanal > 0) and (SPComp) then S_PAC(Kanal,NU,true,M1 + Meldung[38] + M1);
|
|||
|
TxComp := false;
|
|||
|
KompressUpd:=false;
|
|||
|
Flag := true;
|
|||
|
end;
|
|||
|
3 : TxComp := not TxComp;
|
|||
|
4 : begin
|
|||
|
RxComp := not RxComp;
|
|||
|
AFlag := true;
|
|||
|
end;
|
|||
|
5 : if TxComp and (Kanal > 0) then
|
|||
|
begin
|
|||
|
TxComp := false;
|
|||
|
S_PAC(Kanal,NU,true,M1 + Meldung[23] + M1);
|
|||
|
TxComp := true;
|
|||
|
Flag := true;
|
|||
|
end else Alarm;
|
|||
|
6 : begin
|
|||
|
CompC:=not CompC;
|
|||
|
if compc then spcomp:=false;
|
|||
|
{If Comp_Key[Kanal] then Comp_Key[Kanal] := false
|
|||
|
else Comp_Key[Kanal] := true;}
|
|||
|
end;
|
|||
|
7 : begin
|
|||
|
SPComp:=not SPComp;
|
|||
|
if spcomp then compc:=false;
|
|||
|
end;
|
|||
|
8 : begin
|
|||
|
StopComp:=not StopComp;
|
|||
|
if (StopComp) and ((Mo.MonActive) or (Kanal=0))then
|
|||
|
begin
|
|||
|
hstr:=int_str(StopCode);
|
|||
|
GetString(hstr,Attrib[3],5,8,17,KC,1,Ins);
|
|||
|
StopCode:=str_int(hstr);
|
|||
|
if Mo.MonActive then g^.fstr[17] := stopLine+' Code: '+int_str(StopCode)
|
|||
|
else g^.fstr[16] := stopLine+' Code: '+int_str(StopCode);
|
|||
|
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
Until Flag;
|
|||
|
|
|||
|
if AFlag then
|
|||
|
begin
|
|||
|
CompZeile := '';
|
|||
|
MeldeCompZ := '';
|
|||
|
end;
|
|||
|
if TxComp and (PacLen > maxCompPac) then PacLen := maxCompPac;
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
if (not TXComp) and (not RxComp) then
|
|||
|
begin
|
|||
|
CompC := False;
|
|||
|
SPComp:=false;
|
|||
|
STOPComp:=False;
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Morse_Menue (* Kanal : Byte *);
|
|||
|
Const ArtMax = 6;
|
|||
|
Var i : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
w : Word;
|
|||
|
Hstr : String[70];
|
|||
|
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
for i := 9 to 15 do G^.Fstx[i] := 20;
|
|||
|
G^.Fstr[7] := InfoZeile(418);
|
|||
|
|
|||
|
G^.Fstr[9] := InfoZeile(419);
|
|||
|
G^.Fstr[10] := InfoZeile(420);
|
|||
|
G^.Fstr[11] := InfoZeile(421);
|
|||
|
G^.Fstr[12] := InfoZeile(422);
|
|||
|
G^.Fstr[13] := InfoZeile(423);
|
|||
|
G^.Fstr[14] := InfoZeile(424);
|
|||
|
|
|||
|
Art := 1;
|
|||
|
|
|||
|
Repeat
|
|||
|
for i := 9 to 14 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
{ G^.Fstr[i][hM+1] := B1; }
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
{ G^.Fstr[i][hM] := B1; }
|
|||
|
end;
|
|||
|
|
|||
|
if Art in [1..6] then
|
|||
|
begin
|
|||
|
X := vM;
|
|||
|
Y := Art + 8;
|
|||
|
end else
|
|||
|
begin
|
|||
|
X := hM;
|
|||
|
Y := Art + 3;
|
|||
|
end;
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
if morsen then G^.Fstr[9][vM+1] := X_ch;
|
|||
|
if ConMorsen then G^.Fstr[10][vM+1] := X_ch;
|
|||
|
if ReconMorsen then G^.Fstr[11][vM+1] := X_ch;
|
|||
|
|
|||
|
G^.Fstr[15] := '';
|
|||
|
Fenster(15);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[4]);
|
|||
|
|
|||
|
_Ret : ;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
_F6 : Art := 6;
|
|||
|
_F7,
|
|||
|
_F8,
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Right : if Art < ArtMax then
|
|||
|
begin
|
|||
|
Art := Art + 5;
|
|||
|
if Art > ArtMax then Art := ArtMax;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_Left : if Art > 1 then
|
|||
|
begin
|
|||
|
if Art <= 5 then Art := 1
|
|||
|
else Art := Art - 5;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F6,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
case Art of
|
|||
|
1 : begin
|
|||
|
morsen := not morsen;
|
|||
|
end;
|
|||
|
2 : begin
|
|||
|
ConMorsen := not ConMorsen;
|
|||
|
end;
|
|||
|
3 : begin
|
|||
|
ReconMorsen := not ReconMorsen;
|
|||
|
end;
|
|||
|
4 : begin
|
|||
|
G^.Fstr[12][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
w := Word(6000 div MPause);
|
|||
|
Hstr := int_str(w);
|
|||
|
GetString(Hstr,Attrib[3],3,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
w := Word(str_int(Hstr));
|
|||
|
if (w > 29) and (w < 300) then
|
|||
|
begin
|
|||
|
MPause := Word(6000 div w);
|
|||
|
Morse(Kanal,OwnCall);
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
end;
|
|||
|
5 : begin
|
|||
|
G^.Fstr[13][vM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
Hstr := int_str(G^.TonHoehe);
|
|||
|
GetString(Hstr,Attrib[3],5,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
w := Word(str_int(Hstr));
|
|||
|
if w > 99 then
|
|||
|
begin
|
|||
|
G^.TonHoehe := w;
|
|||
|
Morse(Kanal,OwnCall);
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
end;
|
|||
|
6 : begin
|
|||
|
G^.Fstr[9][hM] := S_ch;
|
|||
|
Fenster(15);
|
|||
|
Hstr := '';
|
|||
|
GetString(Hstr,Attrib[3],70,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then Morse(Kanal,Hstr);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Until Flag;
|
|||
|
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Voice_Menue (* Kanal : Byte *);
|
|||
|
Const ArtMax = 5;
|
|||
|
Var i : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
w : Word;
|
|||
|
Hstr : String[70];
|
|||
|
|
|||
|
|
|||
|
Begin
|
|||
|
{ with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
for i := 9 to 15 do G^.Fstx[i] := 2;
|
|||
|
G^.Fstr[7] := InfoZeile(352);
|
|||
|
|
|||
|
G^.Fstr[9] := InfoZeile(353);
|
|||
|
G^.Fstr[10] := InfoZeile(354);
|
|||
|
G^.Fstr[11] := InfoZeile(355);
|
|||
|
G^.Fstr[12] := InfoZeile(356);
|
|||
|
G^.Fstr[13] := InfoZeile(357);
|
|||
|
|
|||
|
Art := 1;
|
|||
|
|
|||
|
Repeat
|
|||
|
for i := 9 to 13 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
G^.Fstr[i][hM+1] := B1;
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
G^.Fstr[i][hM] := B1;
|
|||
|
end;
|
|||
|
|
|||
|
X := vM;
|
|||
|
Y := Art + 8;
|
|||
|
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
if Speek then G^.Fstr[9][vM+1] := X_ch;
|
|||
|
if ConVoice then G^.Fstr[10][vM+1] := X_ch;
|
|||
|
if ReconVoice then G^.Fstr[11][vM+1] := X_ch;
|
|||
|
|
|||
|
G^.Fstr[14] := '';
|
|||
|
G^.Fstr[15] := '';
|
|||
|
Fenster;
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[2]);
|
|||
|
|
|||
|
_Ret : ;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
_F6,
|
|||
|
_F7,
|
|||
|
_F8,
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F5,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
case Art of
|
|||
|
1 : begin
|
|||
|
Speek := not Speek;
|
|||
|
end;
|
|||
|
2 : begin
|
|||
|
ConVoice := not ConVoice;
|
|||
|
end;
|
|||
|
3 : begin
|
|||
|
ReconVoice := not ReconVoice;
|
|||
|
end;
|
|||
|
4 : begin
|
|||
|
G^.Fstr[12][vM] := S_ch;
|
|||
|
Fenster;
|
|||
|
Hstr := int_str(VSpeed);
|
|||
|
GetString(Hstr,Attrib[3],3,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
w := Word(str_int(Hstr));
|
|||
|
if (w > 1) and (w < FFFF) then
|
|||
|
begin
|
|||
|
VSpeed := w;
|
|||
|
Sprechen(OwnCall);
|
|||
|
end else Alarm;
|
|||
|
end;
|
|||
|
end;
|
|||
|
5 : begin
|
|||
|
G^.Fstr[13][vM] := S_ch;
|
|||
|
Fenster;
|
|||
|
Hstr := '';
|
|||
|
GetString(Hstr,Attrib[3],70,2,15,KC,0,Ins);
|
|||
|
if KC <> _Esc then Sprechen(Hstr);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Until Flag;
|
|||
|
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end; }
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Text_Einstellung (* Kanal : Byte *);
|
|||
|
Const ArtMax = 5;
|
|||
|
Var i,j,h : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
IFlag,
|
|||
|
Flag : Boolean;
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
Hstr : String[3];
|
|||
|
Zeile : string;
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
IFlag := false;
|
|||
|
for i := 9 to 15 do G^.Fstx[i] := 30;
|
|||
|
|
|||
|
G^.Fstr[7] := InfoZeile(349);
|
|||
|
|
|||
|
Art := 1;
|
|||
|
|
|||
|
Repeat
|
|||
|
y:=Art+9;
|
|||
|
x:=vm;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
G^.Fstr[10] := InfoZeile(350)+ B1 + int_str(TNC[TncNummer]^.CText);
|
|||
|
G^.Fstr[11] := InfoZeile(351)+ B1 + int_str(TNC[TncNummer]^.Info);
|
|||
|
G^.Fstr[12] := InfoZeile(352)+ B1 + int_str(TNC[TncNummer]^.Aktuell);
|
|||
|
G^.Fstr[13] := InfoZeile(353)+ B1 + int_str(TNC[TncNummer]^.QText);
|
|||
|
G^.Fstr[14] := InfoZeile(354)+ B1 + int_str(TNC[TncNummer]^.Fix);
|
|||
|
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
G^.Fstr[9] := '';
|
|||
|
G^.Fstr[15] := '';
|
|||
|
Fenster(15);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[9]);
|
|||
|
|
|||
|
_Ret : ;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
_F6,
|
|||
|
_F7,
|
|||
|
_F8,
|
|||
|
_F9,
|
|||
|
_F10 : Alarm;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F5,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
begin
|
|||
|
case Art of
|
|||
|
1 : begin
|
|||
|
G^.Fstr[10][vM] := S_ch;
|
|||
|
Hstr := int_str(TNC[TncNummer]^.CText);
|
|||
|
end;
|
|||
|
2 : begin
|
|||
|
G^.Fstr[11][vM] := S_ch;
|
|||
|
Hstr := int_str(TNC[TncNummer]^.Info);
|
|||
|
end;
|
|||
|
3 : begin
|
|||
|
G^.Fstr[12][vM] := S_ch;
|
|||
|
Hstr := int_str(TNC[TncNummer]^.Aktuell);
|
|||
|
end;
|
|||
|
4 : begin {12}
|
|||
|
G^.Fstr[13][vM] := S_ch;
|
|||
|
Hstr := int_str(TNC[TncNummer]^.QText);
|
|||
|
end;
|
|||
|
5 : begin {13}
|
|||
|
G^.Fstr[14][vM] := S_ch;
|
|||
|
Hstr := int_str(TNC[TncNummer]^.Fix);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Fenster(15);
|
|||
|
GetString(Hstr,Attrib[3],3,2,15,KC,0,IFlag);
|
|||
|
if KC <> _Esc then
|
|||
|
begin
|
|||
|
i := Byte(str_int(Hstr));
|
|||
|
case Art of
|
|||
|
1 : TNC[TncNummer]^.CText := i;
|
|||
|
2 : TNC[TncNummer]^.Info := i;
|
|||
|
3 : TNC[TncNummer]^.Aktuell := i;
|
|||
|
4 : TNC[TncNummer]^.QText := i;
|
|||
|
5 : TNC[TncNummer]^.Fix := i;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Until Flag;
|
|||
|
|
|||
|
ClrFenster;
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure QRG_Einstellen (* Kanal : Byte; Zeile : Str8 *);
|
|||
|
Const Bofs = 2;
|
|||
|
Var TNr,i,i1,i2,
|
|||
|
Bpos : Byte;
|
|||
|
Dpos : Integer;
|
|||
|
w : Word;
|
|||
|
yM,
|
|||
|
Zmax : Byte;
|
|||
|
Flag,
|
|||
|
Cursor,
|
|||
|
Fertig : Boolean;
|
|||
|
Hstr : String[60];
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Such : String[9];
|
|||
|
|
|||
|
Procedure InitVar;
|
|||
|
Begin
|
|||
|
yM := 1;
|
|||
|
Bpos := 1;
|
|||
|
Dpos := 1;
|
|||
|
End;
|
|||
|
|
|||
|
Function GetQrgStr(QPos : Word) : Str80;
|
|||
|
Begin
|
|||
|
GetQrgStr := B1 + EFillStr(79,B1,EFillStr(10,B1,G^.QRG[QPos].CALL) +
|
|||
|
GL + B1 + G^.QRG[QPos].QRG);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure QrgPage(beg : Word);
|
|||
|
Var i,i1 : Byte;
|
|||
|
Begin
|
|||
|
Teil_Bild_Loesch(3,maxZ-1,Attrib[2]);
|
|||
|
i1 := Zmax;
|
|||
|
if i1 > G^.QRG_Anz then i1 := G^.QRG_Anz;
|
|||
|
for i := 1 to i1 do
|
|||
|
WriteRam(1,i+Bofs,Attrib[2],0,EFillStr(80,B1,GetQrgStr(beg-1+i)));
|
|||
|
End;
|
|||
|
|
|||
|
Begin
|
|||
|
if Kanal = 0 then TNr := Unproto
|
|||
|
else TNr := K[Kanal]^.TncNummer;
|
|||
|
|
|||
|
if Zeile > '' then
|
|||
|
begin
|
|||
|
TNC[TNr]^.QRG_Akt := UpCaseStr(Zeile);
|
|||
|
TNC[TNr]^.TicStr := ConstStr(B1,TL);
|
|||
|
Status2;
|
|||
|
end else
|
|||
|
begin
|
|||
|
NowFenster := false;
|
|||
|
Moni_Off(0);;
|
|||
|
InitVar;
|
|||
|
|
|||
|
Such := '';
|
|||
|
Zmax := maxZ - (1 + Bofs);
|
|||
|
Fertig := false;
|
|||
|
Cursor := true;
|
|||
|
|
|||
|
WriteRam(1,1,Attrib[15],0,EFillStr(80,B1,B1 + InfoZeile(229)));
|
|||
|
WriteRam(1,2,Attrib[2],0,ConstStr('<27>',80));
|
|||
|
WriteRam(1,maxZ,Attrib[15],0,ConstStr(B1,80));
|
|||
|
QrgPage(Dpos);
|
|||
|
WriteAttr(1,Bpos+Bofs,80,Attrib[4],0);
|
|||
|
|
|||
|
Repeat
|
|||
|
if Cursor then InitCursor(1,Bpos+Bofs)
|
|||
|
else InitCursor(1,1);
|
|||
|
|
|||
|
WriteRam(60,1,Attrib[15],0,'Nr:' + SFillStr(3,B1,int_str(Dpos)));
|
|||
|
WriteRam(71,1,Attrib[15],0,EFillStr(10,B1,Such));
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
|
|||
|
if KC <> _Andere then Such := '';
|
|||
|
|
|||
|
case KC of
|
|||
|
_Esc, _Del
|
|||
|
: Fertig := true;
|
|||
|
|
|||
|
_AltH
|
|||
|
: XP_Help(G^.OHelp[8]);
|
|||
|
|
|||
|
_Dn
|
|||
|
: if Dpos < G^.QRG_Anz then
|
|||
|
begin
|
|||
|
inc(Dpos);
|
|||
|
if Bpos < Zmax then inc(Bpos) else
|
|||
|
begin
|
|||
|
WriteAttr(1,Bofs+yM,80,Attrib[2],0);
|
|||
|
Scroll(Up,0,1+Bofs,Zmax+Bofs);
|
|||
|
WriteRam(1,Bofs+Bpos,Attrib[4],0,GetQrgStr(Dpos));
|
|||
|
end;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_Up
|
|||
|
: if Dpos > 1 then
|
|||
|
begin
|
|||
|
dec(Dpos);
|
|||
|
if Bpos > 1 then dec(Bpos) else
|
|||
|
begin
|
|||
|
WriteAttr(1,Bofs+yM,80,Attrib[2],0);
|
|||
|
Scroll(Dn,0,1+Bofs,Zmax+Bofs);
|
|||
|
WriteRam(1,Bofs+Bpos,Attrib[4],0,GetQrgStr(Dpos));
|
|||
|
end;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_PgDn
|
|||
|
: if Dpos < G^.QRG_Anz then
|
|||
|
begin
|
|||
|
if Dpos + Zmax - Bpos >= G^.QRG_Anz then
|
|||
|
begin
|
|||
|
Dpos := G^.QRG_Anz;
|
|||
|
Bpos := Zmax;
|
|||
|
if Bpos > G^.QRG_Anz then Bpos := G^.QRG_Anz;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Dpos := Dpos + Zmax - 1;
|
|||
|
if Dpos + Zmax - 1 > G^.QRG_Anz then Dpos := G^.QRG_Anz - Zmax + Bpos;
|
|||
|
QrgPage(Dpos - Bpos + 1);
|
|||
|
end;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_PgUp
|
|||
|
: if Dpos > 1 then
|
|||
|
begin
|
|||
|
if Dpos <= Bpos then
|
|||
|
begin
|
|||
|
Dpos := 1;
|
|||
|
Bpos := 1;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Dpos := Dpos - Zmax + 1;
|
|||
|
if Dpos - Zmax + 1 < 1 then Dpos := Bpos;
|
|||
|
QrgPage(Dpos - Bpos + 1);
|
|||
|
end;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_CtrlPgUp
|
|||
|
: if Dpos > 1 then
|
|||
|
begin
|
|||
|
Dpos := 1;
|
|||
|
Bpos := 1;
|
|||
|
QrgPage(1);
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_CtrlPgDn
|
|||
|
: if Dpos < G^.QRG_Anz then
|
|||
|
begin
|
|||
|
Dpos := G^.QRG_Anz;
|
|||
|
Bpos := Zmax;
|
|||
|
if Bpos > G^.QRG_Anz then Bpos := G^.QRG_Anz;
|
|||
|
QrgPage(Dpos - Bpos + 1);
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_CtrlHome
|
|||
|
: begin
|
|||
|
Dpos := Dpos - Bpos + 1;
|
|||
|
Bpos := 1;
|
|||
|
end;
|
|||
|
|
|||
|
_CtrlEnd
|
|||
|
: if G^.QRG_Anz < Zmax then
|
|||
|
begin
|
|||
|
Dpos := G^.QRG_Anz;
|
|||
|
Bpos := G^.QRG_Anz;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Dpos := Dpos + Zmax - Bpos;
|
|||
|
Bpos := Zmax;
|
|||
|
end;
|
|||
|
|
|||
|
_ShTab
|
|||
|
: Cursor := not Cursor;
|
|||
|
|
|||
|
_Ret
|
|||
|
: begin
|
|||
|
TNC[TNr]^.QRG_Akt := G^.QRG[Dpos].QRG;
|
|||
|
TNC[TNr]^.TicStr := ConstStr(B1,TL);
|
|||
|
fertig := true;
|
|||
|
end;
|
|||
|
|
|||
|
_Andere
|
|||
|
: begin
|
|||
|
Such := Such + UpCase(VC);
|
|||
|
w := 0;
|
|||
|
Flag := false;
|
|||
|
While (w < G^.QRG_Anz) and not Flag do
|
|||
|
begin
|
|||
|
inc(w);
|
|||
|
if pos(Such,G^.QRG[w].CALL) = 1 then
|
|||
|
begin
|
|||
|
Flag := true;
|
|||
|
Dpos := w;
|
|||
|
if (Dpos < Bpos) or (G^.QRG_Anz <= Zmax) then Bpos := Dpos;
|
|||
|
if ((G^.QRG_Anz - Dpos + Bpos) < Zmax) and
|
|||
|
(G^.QRG_Anz > Zmax) and (Dpos > Bpos)
|
|||
|
then Bpos := Zmax - (G^.QRG_Anz - Dpos);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if not Flag then
|
|||
|
begin
|
|||
|
Alarm;
|
|||
|
Such := '';
|
|||
|
end else QrgPage(Dpos - Bpos + 1);
|
|||
|
end;
|
|||
|
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
|
|||
|
WriteAttr(1,Bofs+yM,80,Attrib[2],0);
|
|||
|
WriteAttr(1,Bofs+Bpos,80,Attrib[4],0);
|
|||
|
yM := Bpos;
|
|||
|
Until Fertig;
|
|||
|
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Verschiedene_Einstellungen (* Kanal : Byte *);
|
|||
|
Const ArtMax = 14;
|
|||
|
Var i : Byte;
|
|||
|
KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
RemAll_,
|
|||
|
Flag,
|
|||
|
Flag1 : Boolean;
|
|||
|
maxz_,
|
|||
|
X,Y,
|
|||
|
Art : Byte;
|
|||
|
staAnz : array[0..2] of Str80;
|
|||
|
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
RemAll_ := RemAll;
|
|||
|
Moni_Off(0);;
|
|||
|
Flag := false;
|
|||
|
Flag1 := false;
|
|||
|
|
|||
|
for i := 9 to 16 do G^.Fstx[i] := 3;
|
|||
|
G^.Fstr[7] := InfoZeile(355);
|
|||
|
G^.Fstr[10] := InfoZeile(356);
|
|||
|
G^.Fstr[11] := InfoZeile(357);
|
|||
|
G^.Fstr[12] := InfoZeile(358);
|
|||
|
G^.Fstr[13] := InfoZeile(359);
|
|||
|
G^.Fstr[14] := InfoZeile(360);
|
|||
|
G^.FStr[15] := InfoZeile(361);
|
|||
|
|
|||
|
StaAnz[0]:=infoZeile(362);
|
|||
|
Staanz[1]:=infoZeile(363);
|
|||
|
staanz[2]:=infoZeile(364);
|
|||
|
|
|||
|
Art := 1;
|
|||
|
|
|||
|
Repeat
|
|||
|
|
|||
|
G^.Fstr[16]:=staanz[G^.StatusModus];
|
|||
|
|
|||
|
|
|||
|
for i := 10 to 15 do
|
|||
|
begin
|
|||
|
G^.Fstr[i][vM+1] := B1;
|
|||
|
G^.Fstr[i][hM+1] := B1;
|
|||
|
G^.Fstr[i][vM] := B1;
|
|||
|
G^.Fstr[i][hM] := B1;
|
|||
|
end;
|
|||
|
|
|||
|
if Art in [1..5,16] then
|
|||
|
begin
|
|||
|
X := vM;
|
|||
|
Y := Art + 9;
|
|||
|
if art=11 then y:=6+9;
|
|||
|
end else
|
|||
|
begin
|
|||
|
X := hM;
|
|||
|
Y := Art + 4;
|
|||
|
if art=12 then y:=6+9;
|
|||
|
end;
|
|||
|
G^.Fstr[Y][X] := A_ch;
|
|||
|
|
|||
|
if HardCur then SetzeCursor(X+1,Y);
|
|||
|
|
|||
|
if FileSend then
|
|||
|
begin
|
|||
|
case TX_Bin of
|
|||
|
0 : G^.Fstr[10][vM+1] := X_ch;
|
|||
|
1 : G^.Fstr[12][vM+1] := X_ch;
|
|||
|
2 : G^.Fstr[11][vM+1] := 'x';
|
|||
|
3 : G^.Fstr[11][vM+1] := X_ch;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if _VGA then G^.Fstr[10][vM+1] := X_ch;
|
|||
|
if (Kanal > 0) and TxBeepAck then G^.Fstr[11][vM+1] := X_ch;
|
|||
|
if (Kanal > 0) and Rx_Beep then G^.Fstr[12][vM+1] := X_ch;
|
|||
|
if CtrlBeep then G^.Fstr[13][vM+1] := X_ch;
|
|||
|
if (Kanal > 0) and Auto then G^.Fstr[14][vM+1] := X_ch;
|
|||
|
if VIPG then G^.FStr[15][vM+1] := X_Ch;
|
|||
|
|
|||
|
if ((Kanal = 0) and NoBinMon) or
|
|||
|
((Kanal > 0) and not BinOut) then G^.Fstr[10][hM+1] := X_ch;
|
|||
|
if TopBox then G^.Fstr[11][hM+1] := X_ch;
|
|||
|
if (Kanal > 0) and RemAll then G^.Fstr[12][hM+1] := X_ch;
|
|||
|
if (Kanal > 0) and SPlus then G^.Fstr[13][hM+1] := X_ch;
|
|||
|
if (Kanal > 0) and AutoBin then G^.Fstr[14][hM+1] := X_ch;
|
|||
|
if SoZeichen then G^.FStr[15][hM+1] := X_Ch;
|
|||
|
if G^.ZeilenwTX then G^.FStr[16][hM+1] := X_Ch;
|
|||
|
|
|||
|
G^.Fstr[9] := '';
|
|||
|
|
|||
|
Fenster(16);
|
|||
|
|
|||
|
_ReadKey(KC,VC);
|
|||
|
Case KC of
|
|||
|
_Esc : Flag := true;
|
|||
|
|
|||
|
_AltH : XP_Help(G^.OHelp[26]);
|
|||
|
|
|||
|
_Ret : ;
|
|||
|
|
|||
|
_F1 : Art := 1;
|
|||
|
_F2 : Art := 2;
|
|||
|
_F3 : Art := 3;
|
|||
|
_F4 : Art := 4;
|
|||
|
_F5 : Art := 5;
|
|||
|
_F6 : Art := 6;
|
|||
|
_F7 : Art := 7;
|
|||
|
_F8 : Art := 8;
|
|||
|
_F9 : Art := 9;
|
|||
|
_F10 : Art := 10;
|
|||
|
_CTRLF1: ART:=11;
|
|||
|
_CTRLF2: ART:=12;
|
|||
|
_CTRLF3: Art:=13;
|
|||
|
_CTRLF4: Art:=14;
|
|||
|
|
|||
|
_Up : if Art > 1 then dec(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Dn : if Art < ArtMax then inc(Art)
|
|||
|
else Alarm;
|
|||
|
|
|||
|
_Right : if Art < ArtMax then
|
|||
|
begin
|
|||
|
Art := Art + 5;
|
|||
|
if Art > ArtMax then Art := ArtMax;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_Left : if Art > 1 then
|
|||
|
begin
|
|||
|
if Art <= 5 then Art := 1
|
|||
|
else Art := Art - 5;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
_Andere : case VC of
|
|||
|
B1:;
|
|||
|
else Alarm;
|
|||
|
end;
|
|||
|
|
|||
|
else Alarm;
|
|||
|
End;
|
|||
|
|
|||
|
if (KC in [_F1.._F10,_ctrlF1,_ctrlF2,_ctrlF3, _CTRLF4,_Ret]) or ((KC = _Andere) and (VC = B1)) then
|
|||
|
case Art of
|
|||
|
1 : begin
|
|||
|
maxZ_:=maxZ;
|
|||
|
_VGA := not _VGA;
|
|||
|
LastModeStore := LastMode;
|
|||
|
switch_VGA_Mono;
|
|||
|
ColorItensity(HighCol);
|
|||
|
maxZ := Hi(WindMax) + 1;
|
|||
|
if not _VGA then if maxZ <> 25 then maxZ := 25;
|
|||
|
|
|||
|
Flag1 := RX_TX_Win;
|
|||
|
if Flag1 then Change_WIN;
|
|||
|
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
{ObStat := 5;}
|
|||
|
if i = 0 then UnStat := ObStat + 1
|
|||
|
else UnStat := maxZ - (maxz_ - Unstat);
|
|||
|
{else UnStat := maxZ - 2;}
|
|||
|
{ stC := (VorZeilen - VorCmdZeilen) + 1;}
|
|||
|
X1C := 3;
|
|||
|
{Y1C := 1;}
|
|||
|
{stV := 1;}
|
|||
|
X1V := 1;
|
|||
|
{Y1V := 1;}
|
|||
|
end;
|
|||
|
|
|||
|
Fenster_Berechnen;
|
|||
|
if Flag1 then Change_WIN;
|
|||
|
|
|||
|
Cursor_aus;
|
|||
|
Flag := true;
|
|||
|
end;
|
|||
|
|
|||
|
2 : if Kanal > 0 then
|
|||
|
begin
|
|||
|
TxBeepAck := not TxBeepAck;
|
|||
|
if TxBeepAck and Klingel then
|
|||
|
Beep(G^.TxPiepFreq,G^.TxPiepTime);
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
3 : if Kanal > 0 then Rx_Beep := not Rx_Beep
|
|||
|
else Alarm;
|
|||
|
|
|||
|
4 : CtrlBeep := not CtrlBeep;
|
|||
|
|
|||
|
5 : if Kanal > 0 then Auto := not Auto
|
|||
|
else Alarm;
|
|||
|
|
|||
|
6 : if Kanal = 0 then NoBinMon := not NoBinMon
|
|||
|
else BinOut := not BinOut;
|
|||
|
|
|||
|
7 : TopBox := not TopBox;
|
|||
|
|
|||
|
8 : if Kanal > 0 then RemAll := not RemAll
|
|||
|
else Alarm;
|
|||
|
|
|||
|
9 : If Kanal > 0 then
|
|||
|
begin
|
|||
|
if SplSave then Close_7Plus(Kanal)
|
|||
|
else SPlus := not SPlus;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
10 : If Kanal > 0 then
|
|||
|
begin
|
|||
|
AutoBin := not AutoBin;
|
|||
|
end else Alarm;
|
|||
|
|
|||
|
11 : VIPG:=not VIPG;
|
|||
|
|
|||
|
12 : SoZeichen := Not SoZeichen;
|
|||
|
|
|||
|
13 : begin
|
|||
|
inc (G^.StatusModus);
|
|||
|
if G^.StatusModus > 2 then G^.StatusModus:=0;
|
|||
|
end;
|
|||
|
|
|||
|
14 : G^.ZeilenwTX := not G^.ZeilenwTX;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
SetzeFlags(Kanal);
|
|||
|
Until Flag;
|
|||
|
ClrFenster;
|
|||
|
|
|||
|
if RemAll_ <> RemAll then
|
|||
|
begin
|
|||
|
if RemAll then S_PAC(Kanal,NU,true,InfoZeile(416)+' '+Meldung[28]+M1)
|
|||
|
else S_PAC(Kanal,NU,true,InfoZeile(417)+' '+Meldung[29]+M1);
|
|||
|
end;
|
|||
|
|
|||
|
Neu_Bild;
|
|||
|
Moni_On;
|
|||
|
end;
|
|||
|
UserInStatus(Kanal);
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Alt_Disc (* Kanal : Byte *);
|
|||
|
Var KC : Sondertaste;
|
|||
|
VC : Char;
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
Flag := false;
|
|||
|
if SiAltD then
|
|||
|
begin
|
|||
|
InfoOut(Kanal,1,1,InfoZeile(167));
|
|||
|
_ReadKey(KC,VC);
|
|||
|
VC := UpCase(VC);
|
|||
|
if (KC =_Ret) or (VC in YesMenge) then Flag := true;
|
|||
|
Neu_Bild;
|
|||
|
end else Flag := true;
|
|||
|
if Flag then S_PAC(Kanal,CM,true,'D');
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Auswert_Kopieren (* Kanal : Byte; Zeile : Str80 *);
|
|||
|
Var i : Byte;
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
K[Kopieren]^.KopierenFm := 0;
|
|||
|
if Kanal > 0 then
|
|||
|
begin
|
|||
|
Flag := pos(LZ,Zeile) > 0;
|
|||
|
if Flag then delete(Zeile,pos(LZ,Zeile),1);
|
|||
|
|
|||
|
Zeile := RestStr(UpCaseStr(Zeile));
|
|||
|
if Zeile > '' then
|
|||
|
begin
|
|||
|
i := Byte(str_int(Zeile));
|
|||
|
if (i in [1..maxLink]) and K[i]^.connected then
|
|||
|
begin
|
|||
|
Kopieren := i;
|
|||
|
K[i]^.KopierenFm := Kanal;
|
|||
|
end else
|
|||
|
begin
|
|||
|
K[Kopieren]^.KopierenFm := 0;
|
|||
|
K[KopierenFm]^.Kopieren := 0;
|
|||
|
Kopieren := 0;
|
|||
|
KopierenFm:=0;
|
|||
|
if i > 0 then InfoOut(Kanal,1,1,InfoZeile(301));
|
|||
|
end;
|
|||
|
end else
|
|||
|
begin
|
|||
|
{ if Kopieren > 0 then
|
|||
|
begin }
|
|||
|
K[Kopieren]^.KopierenFm := 0;
|
|||
|
K[KopierenFm]^.Kopieren := 0;
|
|||
|
Kopieren := 0;
|
|||
|
KopierenFm:=0;
|
|||
|
{ K[Kopieren]^.KopierenFm := 0;
|
|||
|
Kopieren := 0; }
|
|||
|
{ end else Alarm; }
|
|||
|
end;
|
|||
|
SetzeFlags(Kanal);
|
|||
|
End else Alarm;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Idle_Einstellen (* Kanal : Byte; Zeile : Str20 *);
|
|||
|
Var i : Integer;
|
|||
|
Begin
|
|||
|
Zeile := RestStr(Zeile);
|
|||
|
if Zeile > '' then
|
|||
|
begin
|
|||
|
i := Integer(str_int(CutStr(Zeile)));
|
|||
|
Idle_Pos := i >= 0;
|
|||
|
if not Idle_Pos then i := i * -1;
|
|||
|
Idle_Anz := i;
|
|||
|
Zeile := RestStr(Zeile);
|
|||
|
if Zeile > '' then
|
|||
|
begin
|
|||
|
Idle_Tout := Word(str_int(Zeile));
|
|||
|
end;
|
|||
|
Idle_Count := 0;
|
|||
|
Idle_TCount := 0;
|
|||
|
end;
|
|||
|
i := Idle_Anz;
|
|||
|
if not Idle_Pos then i := i * -1;
|
|||
|
InfoOut(Kanal,0,1,int_str(i) + B2 + int_str(Idle_Tout));
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Remote_Emulieren(Kanal : Byte; Zeile : Str80);
|
|||
|
Var Bstr : String[80];
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if Kanal > 0 then
|
|||
|
begin
|
|||
|
Zeile := RestStr(Zeile);
|
|||
|
Flag := RemAll;
|
|||
|
RemAll := true;
|
|||
|
Check_Mld(Kanal,Zeile);
|
|||
|
if RxComp then
|
|||
|
begin
|
|||
|
Bstr := MeldeCompZ;
|
|||
|
MeldeCompZ := Zeile;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Bstr := MeldeZeile;
|
|||
|
MeldeZeile := Zeile;
|
|||
|
end;
|
|||
|
Connect_Info(Kanal,Attrib[20],true,Zeile + M1);
|
|||
|
MldOk := 0;
|
|||
|
if RxComp then MeldeCompZ := Bstr
|
|||
|
else MeldeZeile := Bstr;
|
|||
|
RemAll := Flag;
|
|||
|
end else InfoOut(Kanal,1,1,InfoZeile(192));
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure GetString(* var S : Str80;
|
|||
|
Attr,
|
|||
|
L,X,Y : Byte;
|
|||
|
var TC : Sondertaste;
|
|||
|
Art : Byte;
|
|||
|
var Ins : Boolean *);
|
|||
|
Var
|
|||
|
i,P : Byte;
|
|||
|
VC,
|
|||
|
VC1 : Char;
|
|||
|
KC : Sondertaste;
|
|||
|
gr : char;
|
|||
|
{ Gross : Boolean;}
|
|||
|
|
|||
|
|
|||
|
Procedure InitS;
|
|||
|
Begin
|
|||
|
VC1 := #255;
|
|||
|
if L > (SizeOf(S) - 1) then L := SizeOf(S) - 1;
|
|||
|
P := length(S);
|
|||
|
if Art = 3 then Art := 0
|
|||
|
else While (P > 0) and (s[P] <> BS) do dec(P);
|
|||
|
inc(P);
|
|||
|
End;
|
|||
|
|
|||
|
Begin
|
|||
|
{ Gross := true;}
|
|||
|
HistoryCount := 0;
|
|||
|
FillChar(History^[maxHistory+1],SizeOf(History^[1]),0);
|
|||
|
if Ins then gr := '_' else gr := Pkt;
|
|||
|
InitS;
|
|||
|
Repeat
|
|||
|
if length(S) > L then S := copy(S,1,L);
|
|||
|
WriteRam(X,Y,Attr,1,S + ConstStr(gr,L - Length(S)));
|
|||
|
SetzeCursor(X+P-1,Y);
|
|||
|
_ReadKey(KC,VC);
|
|||
|
if Gross then VC := UpCase(VC);
|
|||
|
case KC of
|
|||
|
_Andere : Case VC of
|
|||
|
#32..#254
|
|||
|
: if (P <= L) and ((length(S) < L) or not Ins) then
|
|||
|
begin
|
|||
|
Insert(VC,S,P);
|
|||
|
inc(P);
|
|||
|
if not Ins then delete(S,P,1);
|
|||
|
end else Alarm;
|
|||
|
^T: Del_Wort(S,P);
|
|||
|
^Y: begin
|
|||
|
P := 1;
|
|||
|
S := '';
|
|||
|
end;
|
|||
|
end;
|
|||
|
_AltK : Gross := not Gross;
|
|||
|
_F2 : if (Art > 0) and not Backscroll(show) then
|
|||
|
begin
|
|||
|
if pos(':\',S) <> 2 then S := Konfig.SavVerz;
|
|||
|
if not PfadOk(0,copy(S,1,3)) then S := copy(SysPfad,1,3);
|
|||
|
if pos(S_ch,S) = 0 then
|
|||
|
begin
|
|||
|
While (S[length(S)] <> BS) and (length(S) > 0) do
|
|||
|
delete(S,length(S),1);
|
|||
|
S := S + Joker;
|
|||
|
end;
|
|||
|
Cursor_aus;
|
|||
|
DirZeig(S,VC1,true);
|
|||
|
if (VC1 <> ESC) and (Art = 2) then exit;
|
|||
|
Neu_Bild;
|
|||
|
Fenster(15);
|
|||
|
InitS;
|
|||
|
end;
|
|||
|
_F1,_F3.._F10 : if Art > 0 then
|
|||
|
begin
|
|||
|
case KC of
|
|||
|
_F1 : S := copy(S,1,P-1) + UpCaseStr(copy(Datum,4,2) +
|
|||
|
copy(Datum,1,2) + copy(Uhrzeit,1,2) +
|
|||
|
copy(Uhrzeit,4,2) + Pkt +
|
|||
|
SFillStr(3,'0',int_str(show)));
|
|||
|
_F3 : S := SysPfad;
|
|||
|
_F4 : S := Konfig.SavVerz;
|
|||
|
_F5 : S := G^.Merk_Drive;
|
|||
|
_F6 : S := Konfig.MailVerz;
|
|||
|
_F7 : S := Konfig.RunVerz;
|
|||
|
_F8 : S := Konfig.BinVerz;
|
|||
|
_F9 : S := Konfig.SplVerz;
|
|||
|
_F10 : S := Konfig.SavVerz + SaveName + SFillStr(3,'0',int_str(show));
|
|||
|
end;
|
|||
|
InitS;
|
|||
|
end;
|
|||
|
_Ins : begin (* INS *)
|
|||
|
Ins := not Ins;
|
|||
|
if Ins then gr := '_' else gr := Pkt ;
|
|||
|
end;
|
|||
|
_Left : if P > 1 then dec(P);
|
|||
|
_Right : if P <= Length(S) then inc(P);
|
|||
|
_Home : P := 1;
|
|||
|
_End : P := Length(S) + 1;
|
|||
|
_Del : if P <= Length(S) then Delete(S,P,1);
|
|||
|
_CtrlLeft,
|
|||
|
_CtrlRight : begin
|
|||
|
Cur_Wort(S,KC,P,1);
|
|||
|
end;
|
|||
|
_AltH : XP_Help(G^.OHelp[18]);
|
|||
|
_Back : if P > 1 then
|
|||
|
begin
|
|||
|
Delete(S,P-1,1);
|
|||
|
dec(P);
|
|||
|
end;
|
|||
|
_Up : begin
|
|||
|
if not inudb then
|
|||
|
begin
|
|||
|
if HistoryCount < maxHistory then
|
|||
|
begin
|
|||
|
if HistoryCount = 0 then History^[maxHistory+1] := S;
|
|||
|
inc(HistoryCount);
|
|||
|
S := History^[HistoryCount];
|
|||
|
InitS;
|
|||
|
end else Alarm;
|
|||
|
end; {if not inudb}
|
|||
|
end;
|
|||
|
_Dn : begin
|
|||
|
if not inudb then
|
|||
|
begin
|
|||
|
if HistoryCount > 0 then
|
|||
|
begin
|
|||
|
dec(HistoryCount);
|
|||
|
if HistoryCount = 0 then S := History^[maxHistory+1]
|
|||
|
else S := History^[HistoryCount];
|
|||
|
InitS;
|
|||
|
end else Alarm;
|
|||
|
end; {if not inudb}
|
|||
|
end;
|
|||
|
|
|||
|
_Ret : begin
|
|||
|
move(History^[1],History^[2],SizeOf(History^[1])*(maxHistory-1));
|
|||
|
History^[1] := S;
|
|||
|
end;
|
|||
|
end; (* of case *)
|
|||
|
Until (KC in [_Ret,_Esc]) or ((inudb)and (kc in UDBExit));
|
|||
|
TC := KC;
|
|||
|
Cursor_aus;
|
|||
|
END;
|
|||
|
|
|||
|
Function CBCallCheck (* CBCall : Str9) : Function *);
|
|||
|
var hstr1 : Str9;
|
|||
|
Flag1 : Boolean;
|
|||
|
begin
|
|||
|
{
|
|||
|
CB-Call-System in Deutschland:
|
|||
|
|
|||
|
Freigegeben: DAA200 bis DRZ999
|
|||
|
|
|||
|
Ausgegrenzt sind folgende:
|
|||
|
DBA200 - DBA999
|
|||
|
DBR200 - DBR999
|
|||
|
DEA200 - DEA999
|
|||
|
DER200 - DER999
|
|||
|
|
|||
|
Info: DAKfCBNF, RZ-Stelle, Edgar (DHF600)
|
|||
|
}
|
|||
|
|
|||
|
Strip (CBCall);
|
|||
|
flag1:=false;
|
|||
|
if length(CBCall)=6 then
|
|||
|
begin
|
|||
|
hstr1:=copy (cbcall,4,3);
|
|||
|
if str_int(hstr1)>199 then
|
|||
|
begin
|
|||
|
hstr1:=CBCall;
|
|||
|
delete(hstr1,4,3);
|
|||
|
if hstr1[1]='D' then
|
|||
|
begin
|
|||
|
delete(hstr1,1,1);
|
|||
|
if hstr1[1] in ['A'..'R'] then
|
|||
|
begin
|
|||
|
if hstr1[2] in ['A'..'Z'] then
|
|||
|
begin
|
|||
|
flag1:=true;
|
|||
|
if (hstr1='BA') or
|
|||
|
(hstr1='BR') or
|
|||
|
(hstr1='EA') or
|
|||
|
(hstr1='ER') then flag1:=false;
|
|||
|
end else flag1:=false;
|
|||
|
end else flag1:=false;
|
|||
|
end else flag1:=false;
|
|||
|
end else flag1:=false;
|
|||
|
end else flag1:=false;
|
|||
|
CBCallCheck := Flag1;
|
|||
|
end;
|