2066 lines
57 KiB
Plaintext
2066 lines
57 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 O A D . P A S <20>
|
|||
|
<20> <20>
|
|||
|
<20> Routinen f<>r die Ladung der verschiedenen Systemfiles beim Start von <20>
|
|||
|
<20> TOP. Ebenfalls Initialisierung der TNCs. <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>}
|
|||
|
|
|||
|
|
|||
|
Procedure Emblem_Zeigen;
|
|||
|
Var i : Byte;
|
|||
|
Begin
|
|||
|
i := 1;
|
|||
|
Assign(G^.TFile,SysPfad + EmbDatei);
|
|||
|
if ResetTxt(G^.TFile) > 0 then Abbruch_XP(6,'');
|
|||
|
Repeat
|
|||
|
inc(i);
|
|||
|
Readln(G^.TFile,DZeile);
|
|||
|
WriteTxt(1,i,StartColor,DZeile);
|
|||
|
Until Eof(G^.TFile);
|
|||
|
{ FiResult := CloseTxt(G^.TFile); }
|
|||
|
close(G^.TFile);
|
|||
|
XCP := 3;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Ini_Start_Tnc;
|
|||
|
var i,i1,
|
|||
|
dB,N,
|
|||
|
KA, KA2: Byte;
|
|||
|
l : LongInt;
|
|||
|
Chan,
|
|||
|
Date : String[11];
|
|||
|
Zeit : String[8];
|
|||
|
Fstr : String[3];
|
|||
|
Istr : String[9];
|
|||
|
Hstr : String[80];
|
|||
|
f : File;
|
|||
|
|
|||
|
Begin
|
|||
|
Init_HardDrive;
|
|||
|
for i := 1 to maxLink do
|
|||
|
begin
|
|||
|
Assign(K[i]^.DBox,Konfig.TempVerz + DBoxDatei + SFillStr(3,'0',int_str(i)));
|
|||
|
if WishBoxLst and (K[i]^.SysArt in SysMenge) then OpenDBox(i);
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
{ABFRAGE ob tnc deaktiv ist !!!!! initialisierung pr<70>fen!!!!}
|
|||
|
|
|||
|
|
|||
|
for N := 1 to TNC_Anzahl do (* alle angeschlossenen TNCs in den Hostmode schalten *)
|
|||
|
Begin
|
|||
|
TNC[N]^.AfuPort := Konfig.TNC[n].AfuPort;
|
|||
|
|
|||
|
|
|||
|
{$IFNDEF no_Netrom} {//db1ras}
|
|||
|
NodesSortieren;
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
{$IFNDEF no_bake} {//db1ras}
|
|||
|
TNC[N]^.MailBakenTimer:=MailBakenZeit+N-1;
|
|||
|
{$ENDIF}
|
|||
|
K[0]^.TncNummer := N;
|
|||
|
Hstr := int_str(N) + Pkt + TncI + B1 + GL;
|
|||
|
if (TNC[N]^.RS232 = 5)
|
|||
|
then M_aus(Attrib[28],EFillStr(65,B1,Hstr + PcxStr), 0) else
|
|||
|
begin
|
|||
|
if HwHs then Istr := 'NoIRQ'
|
|||
|
else Istr := 'IRQ'+ GL + int_str(COM[TNC[N]^.RS232].IRQ_Nr);
|
|||
|
|
|||
|
if COM[TNC[N]^.RS232].FifoOn then i := 1
|
|||
|
else i := 0;
|
|||
|
|
|||
|
M_aus(Attrib[28],EFillStr(65,B1,Hstr +
|
|||
|
B1 + 'Ch' + GL + EFillStr(2,B1,int_str(TNC[N]^.Channels)) +
|
|||
|
B1 + 'COM' + GL + int_str(TNC[N]^.RS232) +
|
|||
|
B1 + 'Bd' + GL + EFillStr(6,B1,int_str(COM[TNC[N]^.RS232].Baudrate)) +
|
|||
|
B1 + EFillStr(6,B1,Istr) +
|
|||
|
B1 + 'Fifo' + GL + EFillStr(2,B1,int_str(i)) +
|
|||
|
B1 + 'Po' + GL + int_str(TNC[N]^.HF_Port) +
|
|||
|
B1 + 'Mpx' + GL + int_str(TNC[N]^.MPX) +
|
|||
|
B1 + 'ID' + GL + TNC[N]^.Ident +
|
|||
|
B2), 0);
|
|||
|
end;
|
|||
|
if not TNC[N]^.TNC_im_Host then
|
|||
|
begin
|
|||
|
Switch_TNC(N);
|
|||
|
{ tnc[n]^.tnc_im_host:=true;
|
|||
|
tncini(1);
|
|||
|
tnc[n]^.tnc_im_host:=false; }
|
|||
|
Switch_Hostmode(TNC[N]^.RS232,N);
|
|||
|
DRSI_Hostmode(N,0);
|
|||
|
end;
|
|||
|
M_aus(Attrib[28],InfoZeile(57) + ^J, 0);
|
|||
|
End;
|
|||
|
|
|||
|
M_aus(Attrib[28],^J, 0);
|
|||
|
|
|||
|
Hstr := '';
|
|||
|
|
|||
|
for N := 1 to TNC_Anzahl do with TNC[N]^ do
|
|||
|
begin
|
|||
|
if Falc then for i := Kvon to Kbis do
|
|||
|
begin
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(i,CM,true,'@CCHAN ' + int_str(HF_Port));
|
|||
|
end;
|
|||
|
|
|||
|
if TNC3 then for i := Kvon to Kbis do
|
|||
|
begin
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(i,CM,true,'#PORT' + int_str(HF_Port));
|
|||
|
end;
|
|||
|
|
|||
|
if PCXD then
|
|||
|
begin
|
|||
|
for i := Kvon to Kbis do Hstr := Hstr + int_str(HF_Port);
|
|||
|
K[0]^.TncNummer := N;
|
|||
|
S_PAC(0,CM,true,'@PO '+ EFillStr(40,'-',Hstr));
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
{ TNC[N]^.TXBedarf:=False;
|
|||
|
TNC[N]^.TXGesperrt := TRUE;
|
|||
|
|
|||
|
S_Pac(TNC[N]^.Kvon, cM, True, 'X 0'); }
|
|||
|
|
|||
|
|
|||
|
for KA := 0 to maxLink do
|
|||
|
begin
|
|||
|
with K[KA]^ do
|
|||
|
begin
|
|||
|
for N := 1 to 3 do StatusOut(KA,1,1,Attrib[9],ConstStr(B1,80),N);
|
|||
|
if KA > 0 then
|
|||
|
begin
|
|||
|
StatusOut(KA,1,1,Attrib[14],SFillStr(2,B1,int_str(KA)),1);
|
|||
|
if connected then
|
|||
|
begin
|
|||
|
AnyConnect := true;
|
|||
|
StatusOut(KA,4,1,Attrib[11],EFillStr(9,B1,Call),1);
|
|||
|
User_Name := GetName(KA,Call,dB,TRUE);
|
|||
|
UserInStatus(KA);
|
|||
|
end;
|
|||
|
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(KA,CM,true,'C');
|
|||
|
|
|||
|
if pos(' NOT ',Response) = 0 then
|
|||
|
begin
|
|||
|
if not connected then
|
|||
|
begin
|
|||
|
Kanal_benutz := true;
|
|||
|
ConText := Response;
|
|||
|
L_ON(KA,TncConStr + B1 + Response,false,false);
|
|||
|
AnyConnect := true;
|
|||
|
end;
|
|||
|
end else Begin
|
|||
|
{Connect ist zwischenzeitlich verlohren gegangen}
|
|||
|
connected := false;
|
|||
|
Auto_Init(KA); {//db1ras}
|
|||
|
End;
|
|||
|
|
|||
|
Check_Eig_Mail(KA,KA);
|
|||
|
end;
|
|||
|
if not connected then EraseBufferFile(ka);
|
|||
|
SetzeFlags(KA);
|
|||
|
end; (* with K[KA]^ do ... *)
|
|||
|
end;
|
|||
|
|
|||
|
Date := Datum;
|
|||
|
Zeit := Uhrzeit;
|
|||
|
ZeitMerk := Zeit;
|
|||
|
|
|||
|
for N := 1 to TNC_Anzahl do
|
|||
|
begin
|
|||
|
K[0]^.TncNummer := N;
|
|||
|
Ausgabe := false; S_PAC(0,CM,true,'K ' + copy(Date,4,8));
|
|||
|
Ausgabe := false; S_PAC(0,CM,true,'K ' + Zeit);
|
|||
|
Ausgabe := false; S_PAC(0,CM,true,'K1');
|
|||
|
|
|||
|
Ausgabe := false;
|
|||
|
Pseudo := true;
|
|||
|
TxRxTNC(FF,1,'G');
|
|||
|
TNC[N]^.ExtHost := pos('INVALID',K[0]^.Response) = 0;
|
|||
|
if not TNC[N]^.ExtHost then Idle := false;
|
|||
|
end;
|
|||
|
|
|||
|
multiTNC := (TNC_Anzahl > 1);
|
|||
|
|
|||
|
{ if TncINr > 0 then TncIniDatei := TncIniDatei + int_str(TncINr);
|
|||
|
TncIniDatei := TncIniDatei + Ext; }
|
|||
|
TncIni(0);
|
|||
|
|
|||
|
Unproto := 1;
|
|||
|
K[0]^.TncNummer := Unproto;
|
|||
|
SetzeFlags(0);
|
|||
|
Unproto_darstellen;
|
|||
|
|
|||
|
for N := 1 to TNC_Anzahl do
|
|||
|
begin
|
|||
|
K[0]^.TncNummer := N;
|
|||
|
Ausgabe := false;
|
|||
|
S_PAC(0,CM,true,'I');
|
|||
|
Istr := K[0]^.Response;
|
|||
|
Hstr := EFillStr(35,B1,int_str(N) + Pkt + TncI + DP + B1 +
|
|||
|
InfoZeile(146) + B1 + GL + B1 + Istr);
|
|||
|
if TNC[N]^.ExtHost then Hstr := Hstr + InfoZeile(52) + B1;
|
|||
|
i := TNC[N]^.RS232;
|
|||
|
M_aus(Attrib[28],Hstr +^J, 0);
|
|||
|
end;
|
|||
|
|
|||
|
M_aus(Attrib[28],^J, 0);
|
|||
|
i1:=0;
|
|||
|
for KA := 1 to maxLink do
|
|||
|
Begin
|
|||
|
with K[KA]^ do
|
|||
|
Begin
|
|||
|
if tncnummer<>i1 then
|
|||
|
begin
|
|||
|
i1:=tncnummer;
|
|||
|
Ka2:=KA-1;
|
|||
|
end;
|
|||
|
Chan := SFillStr(2,B1,int_str(KA));
|
|||
|
if OwnCall = S_ch then
|
|||
|
begin
|
|||
|
OwnCall := Konfig.TNC[TNCNummer].INIA[1];
|
|||
|
|
|||
|
if Konfig.TNC[TNCNummer].NodeKan > 0 then
|
|||
|
begin
|
|||
|
if Ka-KA2 > (Konfig.TNC[TNCNummer].MaxKan)-(Konfig.TNC[TNCNummer].NodeKan) then
|
|||
|
begin
|
|||
|
OwnCall:=Konfig.TNC[TNCNummer].INIA[2];
|
|||
|
Node:=True;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Ausgabe := false;
|
|||
|
Rufz_TNC_init(KA);
|
|||
|
|
|||
|
M_aus(Attrib[28],EFillStr(15,B1,LRK + Chan + RRK + DP + OwnCall), 0);
|
|||
|
if (KA mod 5) = 0 then M_aus(Attrib[28],^J, 0);
|
|||
|
if connected then
|
|||
|
begin
|
|||
|
if FirstConCh = 1 then FirstConCh := KA;
|
|||
|
end else
|
|||
|
if Mo.MonActive then
|
|||
|
begin
|
|||
|
Stat_MonitorCalls(KA);
|
|||
|
end else
|
|||
|
begin
|
|||
|
StatusOut(KA,4,1,Attrib[9],EFillStr(9,B1,OwnCall),1);
|
|||
|
StatusOut(KA,14,1,Attrib[9],ConstStr(B1,19),1);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
M_aus(Attrib[28],^J, 0);
|
|||
|
|
|||
|
TNC_High_Channel_Init;
|
|||
|
|
|||
|
if G^.Infostr > '' then
|
|||
|
begin
|
|||
|
_aus(Attrib[20],1,InfoZeile(97) + M1);
|
|||
|
_aus(Attrib[20],1,G^.InfoStr + M2);
|
|||
|
if Klingel then Beep(G^.RemPiepFreq,G^.RemPiepTime);
|
|||
|
G^.Infostr := '';
|
|||
|
end;
|
|||
|
|
|||
|
if LogChk > 0 then
|
|||
|
begin
|
|||
|
Assign(f,Sys1Pfad + LogDatei + LngExt);
|
|||
|
if ResetBin(f,1) = 0 then
|
|||
|
begin
|
|||
|
l := FileSize(f);
|
|||
|
FiResult := CloseBin(f);
|
|||
|
if l > LogChk then
|
|||
|
begin
|
|||
|
_aus(Attrib[20],1,InfoZeile(29) + B1 +
|
|||
|
FormByte(int_str(l)) + B1 + Bytes + M2);
|
|||
|
if Klingel then Beep(G^.RemPiepFreq,G^.RemPiepTime);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if LogArt > 0 then
|
|||
|
begin
|
|||
|
Assign(G^.TFile,Sys1Pfad + LogDatei + LngExt);
|
|||
|
FiResult := ResetTxt(G^.TFile);
|
|||
|
if FiResult > 0 then FiResult := RewriteTxt(G^.TFile);
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
end;
|
|||
|
|
|||
|
if Eig_Mail_Zeile > '' then
|
|||
|
begin
|
|||
|
InfoOut(1,0,1,InfoZeile(153) + Eig_Mail_Zeile);
|
|||
|
If Klingel then Triller;
|
|||
|
end;
|
|||
|
|
|||
|
Assign(G^.TFile,Sys1Pfad + ConDatei);
|
|||
|
FiResult := EraseTxt(G^.TFile);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure TNC_High_Channel_Init;
|
|||
|
var i,i1 : Byte;
|
|||
|
Begin
|
|||
|
for i := 1 to TNC_Anzahl do
|
|||
|
begin
|
|||
|
K[0]^.TncNummer := i;
|
|||
|
i1 := TNC[i]^.TncChannels;
|
|||
|
Repeat
|
|||
|
inc(i1);
|
|||
|
Pseudo := true;
|
|||
|
Ausgabe := false;
|
|||
|
TxRxTNC(i1,1,'I' + B1 + PhantasieCall);
|
|||
|
Until (i1 = FF) or (K[0]^.Response > '');
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Switch_Hostmode (* V24Nr,TNC_Nr : Byte *);
|
|||
|
var N,i,zhs : Byte;
|
|||
|
w : Word;
|
|||
|
Host,Flag : Boolean;
|
|||
|
ch : Char;
|
|||
|
Hstr : String;
|
|||
|
|
|||
|
Begin
|
|||
|
zhs:=0;
|
|||
|
(* for w:=1 to 10 do writeAux(V24Nr,#1);
|
|||
|
|
|||
|
for i:=1 to 2 do
|
|||
|
begin
|
|||
|
clearV24Buffer;
|
|||
|
WriteAux(V24Nr,ESC+'JHOST0'+ M1);
|
|||
|
{Achtung: Steht noch ein M1 bzw. #13 vor ESC, sendet der TNC!!!}
|
|||
|
Wait_Read(V24Nr);
|
|||
|
Verzoegern(300);
|
|||
|
end;
|
|||
|
*)
|
|||
|
(* repeat
|
|||
|
inc(zhs); *)
|
|||
|
|
|||
|
Host := false;
|
|||
|
|
|||
|
{ ClearV24Buffer;
|
|||
|
WriteAux(V24Nr,ESC+M1);
|
|||
|
Wait_Read(V24Nr);}
|
|||
|
|
|||
|
ClearV24Buffer;
|
|||
|
WriteAux(V24Nr,^Q^X);
|
|||
|
{^Q^M^X statt JHOST0 geht auch anstatt ESC+M1, QX}
|
|||
|
Wait_Read(V24Nr);
|
|||
|
|
|||
|
if V24Buffer[0] = 6 then
|
|||
|
begin
|
|||
|
WriteAux(V24Nr,^R^X);
|
|||
|
Wait_Read(V24Nr);
|
|||
|
end;
|
|||
|
|
|||
|
ClearV24Buffer;
|
|||
|
WriteAux(V24Nr,ESC + 'E1'+ M1);
|
|||
|
Wait_Read(V24Nr);
|
|||
|
|
|||
|
ClearV24Buffer;
|
|||
|
WriteAux(V24Nr,^X);
|
|||
|
Wait_Read(V24Nr);
|
|||
|
|
|||
|
ClearV24Buffer;
|
|||
|
WriteAux(V24Nr,ESC);
|
|||
|
Wait_Read(V24Nr);
|
|||
|
|
|||
|
if BufferPos>0 then inc(zhs,3);
|
|||
|
(* if BufferPos=0 then
|
|||
|
begin
|
|||
|
for i:=1 to 2 do
|
|||
|
begin
|
|||
|
clearV24Buffer;
|
|||
|
WriteAux(V24Nr,ESC+'JHOST0'+ M1);
|
|||
|
{Achtung: Steht noch ein M1 bzw. #13 vor ESC, sendet der TNC!!!}
|
|||
|
Wait_Read(V24Nr);
|
|||
|
Verzoegern(300);
|
|||
|
end;
|
|||
|
end;
|
|||
|
until zhs>2; *)
|
|||
|
|
|||
|
if BufferPos = 0 then
|
|||
|
begin
|
|||
|
if not ReSync(V24Nr) then Abbruch_XP(11,'')
|
|||
|
else Host := true;
|
|||
|
end else ch := Chr(V24Buffer[0]);
|
|||
|
|
|||
|
if not Host then
|
|||
|
begin
|
|||
|
i := 10;
|
|||
|
While (ch <> '*') and (i > 0) do
|
|||
|
begin
|
|||
|
Wait_Read(V24Nr);
|
|||
|
w := BufferPos;
|
|||
|
While (w > 0) and (ch <> '*') do
|
|||
|
begin
|
|||
|
dec(w);
|
|||
|
ch := Chr(V24Buffer[w]);
|
|||
|
end;
|
|||
|
if ch <> '*' then ClearV24Buffer;
|
|||
|
dec(i);
|
|||
|
end;
|
|||
|
|
|||
|
if ch <> '*' then Abbruch_XP(14,int_str(V24Nr));
|
|||
|
ClearV24Buffer;
|
|||
|
WriteAux(V24Nr,'JHOST1' + M1);
|
|||
|
Wait_Read(V24Nr);
|
|||
|
Verzoegern(300);
|
|||
|
end;
|
|||
|
|
|||
|
ClearV24Buffer;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure DRSI_Hostmode (* TNC_Nr,Art : Byte *);
|
|||
|
Var i,i1 : Byte;
|
|||
|
Begin
|
|||
|
if Art = 0 then
|
|||
|
begin
|
|||
|
TNC[TNC_Nr]^.TNC_im_Host := true;
|
|||
|
i1 := TNC[TNC_Nr]^.DRSI;
|
|||
|
if i1 > 0 then
|
|||
|
for i := TNC_Nr+1 to TNC_Anzahl do
|
|||
|
if TNC[i]^.DRSI = i1 then TNC[i]^.TNC_im_Host := true;
|
|||
|
end;
|
|||
|
|
|||
|
if Art = 1 then
|
|||
|
begin
|
|||
|
TNC[TNC_Nr]^.TNC_im_Host := false;
|
|||
|
i1 := TNC[TNC_Nr]^.DRSI;
|
|||
|
if i1 > 0 then
|
|||
|
for i := TNC_Nr+1 to TNC_Anzahl do
|
|||
|
if i1 = TNC[i]^.DRSI then TNC[i]^.TNC_im_Host := false;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure ConfigLesen;
|
|||
|
var i,i1,i2,i3,
|
|||
|
Ka,Error : Integer;
|
|||
|
m : Word;
|
|||
|
flag : Boolean;
|
|||
|
ch : char;
|
|||
|
l : LongInt;
|
|||
|
|
|||
|
Begin (* ConfigLesen *)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if CFGNr > 0 then CfgDatei := CfgDatei + int_str(CFGNr);
|
|||
|
|
|||
|
{ WriteTxt(XCP,SZ1,StartColor,CfgDatei + Ext); }
|
|||
|
{*** 1}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>');
|
|||
|
writeln(' <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
for i := 1 to MaxAnwesend do
|
|||
|
begin
|
|||
|
Anwesend[i] := NIL;
|
|||
|
GetMem(Anwesend[i], SizeOf(Anwesend[i]^));
|
|||
|
Anwesend[i]^.Call:='';
|
|||
|
Anwesend[i]^.Da:=False;
|
|||
|
end;
|
|||
|
Assign(G^.Config,Sys1Pfad + CfgDatei + Ext);
|
|||
|
{ if ResetTxt(G^.Config) > 0 then Abbruch_XP(8,'');}
|
|||
|
|
|||
|
{$I-} Reset(G^.Config); {$I+}
|
|||
|
if ioresult<>0 then Abbruch_XP(8,'');
|
|||
|
|
|||
|
read(G^.config, Konfig);
|
|||
|
if Konfig.BackupTime=1 then Konfig.BackupTime:=2;
|
|||
|
TNC_Anzahl:=0;
|
|||
|
for i:=1 to maxTNC do
|
|||
|
begin
|
|||
|
|
|||
|
if (konfig.tnc[i].art=0) and (i<maxTNC) then
|
|||
|
begin
|
|||
|
konfig.tnc[i]:=konfig.tnc[i+1];
|
|||
|
konfig.tnc[i+1].art:=0;
|
|||
|
konfig.tnc[i+1].maxkan:=0;
|
|||
|
end;
|
|||
|
if (konfig.tnc[i].art>0) then inc(TNC_Anzahl);
|
|||
|
{ writeln(konfig.TNC[i].art,' ', konfig.tnc[i].baud);}
|
|||
|
end;
|
|||
|
i:=0;
|
|||
|
|
|||
|
if Konfig.MaxLoginUser=0 then Konfig.MaxLoginUser:=3;
|
|||
|
{$IFNDEF no_Netrom} {//db1ras}
|
|||
|
if Konfig.MaxNodes=0 then BCastKillen;
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
CRCNROM:=chr(Konfig.Teil1)+chr(Konfig.Teil2)+chr(Konfig.Teil3)+chr(Konfig.Teil4);
|
|||
|
|
|||
|
Konfig.LifeTime:=Konfig.LifeTime*60;
|
|||
|
Config_TNC_Lesen;
|
|||
|
|
|||
|
for i := 0 to maxKanal do
|
|||
|
begin
|
|||
|
K[i] := Nil;
|
|||
|
VorWrite[i] := Nil;
|
|||
|
NotCh[i] := Nil;
|
|||
|
end;
|
|||
|
|
|||
|
for i := 0 to maxLink do { Kanal-Record auf den Heap bringen }
|
|||
|
begin
|
|||
|
GetMem(K[i],SizeOf(K[i]^));
|
|||
|
FillChar(K[i]^,SizeOf(K[i]^),0);
|
|||
|
Var_Init(i);
|
|||
|
end;
|
|||
|
K_Record_on_Heap := true;
|
|||
|
|
|||
|
Config_RAM_Lesen;
|
|||
|
GetMem(MH,maxMH * SizeOf(MH_Typ));
|
|||
|
FillChar(MH^,maxMH * SizeOf(MH_Typ),0);
|
|||
|
|
|||
|
{ Zuordnung Terminalkan<61>le - TNC-Kan<61>le }
|
|||
|
for i := 1 to TNC_Anzahl do with TNC[i]^ do if Channels > 0 then
|
|||
|
begin
|
|||
|
for i1 := Kvon to Kbis do K[i1]^.TncNummer := i;
|
|||
|
if DRSI = 0 then
|
|||
|
begin
|
|||
|
for i1 := Kvon to Kbis do K[i1]^.TNCKanal := Chr(i1-Kvon+1);
|
|||
|
ExtHost := true;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Ka := 0;
|
|||
|
for i1 := 1 to TNC_Anzahl do if not TNC[i1]^.ExtHost and
|
|||
|
(TNC[i]^.DRSI = TNC[i1]^.DRSI) and (TNC[i1]^.Channels > 0) then
|
|||
|
begin
|
|||
|
for i3 := TNC[i1]^.Kvon to TNC[i1]^.Kbis do
|
|||
|
begin
|
|||
|
inc(Ka);
|
|||
|
K[i3]^.TNCKanal := Chr(Ka);
|
|||
|
end;
|
|||
|
TNC[i1]^.ExtHost := true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
for i1 := 1 to TNC_Anzahl do TNC[i1]^.ExtHost := false;
|
|||
|
|
|||
|
Config_Verz_Lesen;
|
|||
|
Config_Allg_Lesen;
|
|||
|
Config_Sound_Lesen;
|
|||
|
|
|||
|
if Nutze_XMS then use_XMS := XMS_Installed;
|
|||
|
|
|||
|
if Nutze_EMS then
|
|||
|
begin
|
|||
|
use_EMS := EMS_Installiert;
|
|||
|
Vor_im_EMS := use_EMS;
|
|||
|
end;
|
|||
|
|
|||
|
{ if use_EMS then
|
|||
|
begin
|
|||
|
Writeln(G^.BootFile,EmsStr,'LIM-Version = ',EMS_Version shr 4,Pkt ,(EMS_Version and 15));
|
|||
|
Writeln(G^.BootFile,EmsStr,'Free = ',LongInt(EMS_FreieSeiten * 16),' Kb');
|
|||
|
Writeln(G^.BootFile,EmsStr,'Frame = ',Hex(EMS_Segment,4));
|
|||
|
end; }
|
|||
|
|
|||
|
{ if use_XMS then
|
|||
|
begin
|
|||
|
if HMA = 1 then Writeln(G^.BootFile,'HMA: Exist');
|
|||
|
DZeile := Hex(XMS_Version,3);
|
|||
|
insert(Pkt ,DZeile,2);
|
|||
|
Writeln(G^.BootFile,XmsStr,'Version = ',DZeile);
|
|||
|
DZeile := Hex(XMS_Treiber,3);
|
|||
|
insert(Pkt ,DZeile,2);
|
|||
|
Writeln(G^.BootFile,XmsStr,'Driver = ',DZeile);
|
|||
|
Writeln(G^.BootFile,XmsStr,'Free = ',get_XMS_Free,' Kb');
|
|||
|
end; }
|
|||
|
|
|||
|
if use_XMS then
|
|||
|
begin
|
|||
|
if (LongInt(get_XMS_Free) * 1024) > GesamtNotCh then
|
|||
|
begin
|
|||
|
use_VDisk := false;
|
|||
|
use_EMS := false;
|
|||
|
end else use_XMS := false;
|
|||
|
end;
|
|||
|
|
|||
|
if use_EMS then
|
|||
|
if (EMS_FreieSeiten >= EMS_Pages_Ins) then
|
|||
|
begin
|
|||
|
use_VDisk := false;
|
|||
|
end else use_EMS := false;
|
|||
|
|
|||
|
if not Vdisk_Exists then use_VDisk := false;
|
|||
|
|
|||
|
if use_VDisk then
|
|||
|
begin
|
|||
|
{Writeln(G^.BootFile,RamStr,'Free Memory = ',}
|
|||
|
FormByte(int_str(DiskFree(ord(Vdisk[1])-64)));{,B1 + Bytes);}
|
|||
|
if (GesamtNotCh + 2048) > DiskFree(ord(Vdisk[1])-64)
|
|||
|
then use_VDisk := false;
|
|||
|
end;
|
|||
|
|
|||
|
flag := false;
|
|||
|
|
|||
|
if use_XMS then
|
|||
|
begin
|
|||
|
{ Writeln(G^.BootFile,XmsStr,GesamtNotCh div 1024,' Kb for Backscrollbuffer'); }
|
|||
|
XMS_Handle := get_XMS_Ram((GesamtNotCh div 1024) + 2);
|
|||
|
l := 0;
|
|||
|
GetMem(Page,maxNotChBuf);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
Pos_im_Scr := l;
|
|||
|
l := l + maxNotCh + 40;
|
|||
|
Data_to_XMS(@Page^[0],XMS_Handle,Pos_im_Scr,maxNotCh);
|
|||
|
end;
|
|||
|
FreeMem(Page,maxNotChBuf);
|
|||
|
end else
|
|||
|
if use_EMS then
|
|||
|
begin
|
|||
|
{ Writeln(G^.BootFile,EmsStr,LongInt(EMS_Pages_Ins * 16),' Kb for Backscrollbuffer'); }
|
|||
|
ScrHandle := EMS_Belegen(EMS_Pages_Ins);
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
NotCh[i] := Ptr(EMS_Segment,0);
|
|||
|
EMS_Seite_einblenden(i,Scr);
|
|||
|
FillChar(NotCh[i]^,maxNotCh,0);
|
|||
|
end;
|
|||
|
end else
|
|||
|
if use_VDisk then
|
|||
|
begin
|
|||
|
{ Writeln(G^.BootFile,RamStr,
|
|||
|
FormByte(int_str(GesamtNotCh+2048)),B1,Bytes,B1,'for Backscrollbuffer'); }
|
|||
|
ScrFile_erzeugen;
|
|||
|
end else
|
|||
|
begin
|
|||
|
if not HeapFrei(GesamtNotCh + MindestHeap) then
|
|||
|
begin
|
|||
|
flag := true;
|
|||
|
GesamtNotCh := 0;
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
maxNotCh := NeuBildRam + 96;
|
|||
|
GesamtNotCh := GesamtNotCh + maxNotCh;
|
|||
|
end;
|
|||
|
end;
|
|||
|
if HeapFrei(GesamtNotCh + MindestHeap) then
|
|||
|
begin
|
|||
|
{ if flag then Writeln(G^.BootFile,'Backscrollbuffer corrected !');}
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
GetMem(NotCh[i],maxNotCh);
|
|||
|
FillChar(NotCh[i]^,maxNotCh,FF);
|
|||
|
end;
|
|||
|
end
|
|||
|
else Abbruch_XP(5,'Free RAM = ' + int_str(MaxAvail - MindestHeap) +
|
|||
|
' use = ' + int_str(GesamtNotCh) + B1 + Bytes);
|
|||
|
end;
|
|||
|
|
|||
|
if Vor_im_EMS then Vor_im_EMS := ((EMS_FreieSeiten >= (maxLink + 1)));
|
|||
|
|
|||
|
if Vor_im_EMS then
|
|||
|
begin
|
|||
|
{ Writeln(G^.BootFile,EmsStr,LongInt(maxLink+1)*16,' Kb for TX-Write-Buffer');}
|
|||
|
VorHandle := EMS_Belegen(maxLink + 1);
|
|||
|
GesamtVorCh := 0;
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
VorWrite[i] := Ptr(EMS_Segment,0);
|
|||
|
VorZeilen := 200;
|
|||
|
GesamtVorCh := GesamtVorCh + VorZeilen * 81;
|
|||
|
VorCmdZeilen := VorZeilen div 5;
|
|||
|
end;
|
|||
|
end else
|
|||
|
|
|||
|
begin
|
|||
|
flag := false;
|
|||
|
if not HeapFrei(GesamtVorCh + MindestHeap) then
|
|||
|
begin
|
|||
|
flag := true;
|
|||
|
GesamtVorCh := 0;
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
VorZeilen := 20;
|
|||
|
GesamtVorCh := GesamtVorCh + VorZeilen * 81;
|
|||
|
VorCmdZeilen := VorZeilen div 5;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if HeapFrei(GesamtVorCh + MindestHeap) then
|
|||
|
begin
|
|||
|
{ if flag then Writeln(G^.BootFile,'Tx-Write-Buffer corrected !');}
|
|||
|
for i := 0 to maxLink do with K[i]^ do GetMem(VorWrite[i],VorZeilen * 81);
|
|||
|
end else Abbruch_XP(9,'Free RAM = ' + int_str(MaxAvail - MindestHeap) +
|
|||
|
' use = ' + int_str(GesamtVorCh) + B1 + Bytes);
|
|||
|
end;
|
|||
|
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
if Vor_im_EMS then EMS_Seite_einblenden(i,Vor);
|
|||
|
FillChar(VorWrite[i]^,VorZeilen * 81,0);
|
|||
|
stC := (VorZeilen - VorCmdZeilen) + 1;
|
|||
|
for i1 := stC to VorZeilen do VorWrite[i]^[i1] := CvCh;
|
|||
|
end;
|
|||
|
|
|||
|
Config_BLIND_Lesen;
|
|||
|
|
|||
|
Config_PRN_Lesen;
|
|||
|
{ FiResult := CloseTxt(G^.Config);}
|
|||
|
close(G^.config);
|
|||
|
|
|||
|
Assign(BuffFile,Konfig.TempVerz + BuffDatei);
|
|||
|
|
|||
|
ScreenTimer := ScreenInit;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Infos_Lesen;
|
|||
|
var Hstr : String;
|
|||
|
i,i1,
|
|||
|
Anz,
|
|||
|
Groesse : Word;
|
|||
|
|
|||
|
Begin
|
|||
|
{ WriteTxt(XCP,SZ1,StartColor,MsgsDatei);}
|
|||
|
{*** 2}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>');
|
|||
|
writeln(' <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
|
|||
|
Msg := Nil;
|
|||
|
MsgPos := Nil;
|
|||
|
|
|||
|
Anz := 0;
|
|||
|
Groesse := 0;
|
|||
|
Assign(G^.TFile,SysPfad + MsgsDatei);
|
|||
|
FiResult := ResetTxt(G^.TFile);
|
|||
|
Repeat
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
Groesse := Groesse + ord(Hstr[0]);
|
|||
|
inc(Anz,2);
|
|||
|
Until Eof(G^.TFile);
|
|||
|
|
|||
|
GetMem(Msg,Groesse);
|
|||
|
FillChar(Msg^,Groesse,0);
|
|||
|
|
|||
|
GetMem(MsgPos,Anz);
|
|||
|
FillChar(MsgPos^,Anz,0);
|
|||
|
|
|||
|
FiResult := ResetTxt(G^.TFile);
|
|||
|
i := 1;
|
|||
|
i1 := 1;
|
|||
|
Repeat
|
|||
|
MsgPos^[i1] := i;
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
move(Hstr[1],Msg^[i],ord(Hstr[0]));
|
|||
|
i := i + ord(Hstr[0]);
|
|||
|
inc(i1);
|
|||
|
Until Eof(G^.TFile);
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
MaxMsgs:=i1-2;
|
|||
|
LastInfoOut := Nil;
|
|||
|
GetMem(LastInfoOut,SizeOf(LastInfoOut^));
|
|||
|
FillChar(LastInfoOut^,SizeOf(LastInfoOut^),0);
|
|||
|
for i := 1 to maxInfoOut do LastInfoOut^.IZ[i] := ConstStr(B1,4);
|
|||
|
|
|||
|
History := Nil;
|
|||
|
GetMem(History,SizeOf(History^));
|
|||
|
FillChar(History^,SizeOf(History^),0);
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Strings_Lesen;
|
|||
|
Begin
|
|||
|
G^.InfoDieBox := InfoZeile(175) + B1;
|
|||
|
G^.UserDieBox := InfoZeile(176) + B1;
|
|||
|
G^.InfoBayBox := InfoZeile(177) + B1;
|
|||
|
G^.InfoTnc3Box := InfoZeile(178) + B3;
|
|||
|
G^.RubrikStr := InfoZeile(179) + B1;
|
|||
|
|
|||
|
G^.EzFileStr := InfoZeile(180);
|
|||
|
G^.EzMsgStr := InfoZeile(189);
|
|||
|
|
|||
|
G^.RunElDir := InfoZeile(268) + B1;
|
|||
|
G^.RunElFile := InfoZeile(269) + B1;
|
|||
|
G^.RunElTree := InfoZeile(270) + B1;
|
|||
|
G^.BinEL := InfoZeile(271) + B1;
|
|||
|
G^.TxtEL := InfoZeile(272) + B1;
|
|||
|
G^.DirEL := InfoZeile(273) + B1;
|
|||
|
|
|||
|
WeekDayStr := InfoZeile(86);
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure AttributFile_Lesen;
|
|||
|
var i : Byte;
|
|||
|
Begin
|
|||
|
if ColNr > 0 then AttrDatei := AttrDatei + int_str(ColNr);
|
|||
|
AttrDatei := AttrDatei + Pkt ;
|
|||
|
{ WriteTxt(XCP,SZ1,StartColor,AttrDatei + LngExt);}
|
|||
|
{*** 4}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
Assign(G^.TFile,Sys1Pfad + AttrDatei + LngExt);
|
|||
|
if ResetTxt(G^.TFile) <> 0 then Abbruch_XP(8,'');
|
|||
|
for i := 1 to maxAttr do
|
|||
|
begin
|
|||
|
Readln(G^.TFile,DZeile);
|
|||
|
Attrib[i] := str_int(CutStr(DZeile));
|
|||
|
end;
|
|||
|
Readln(G^.TFile,DZeile);
|
|||
|
HighCol := Byte(str_int(copy(DZeile,1,1))) = 1;
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure ESC_Lesen;
|
|||
|
Var i : Byte;
|
|||
|
Begin
|
|||
|
{ WriteTxt(XCP,SZ1,StartColor,EscDatei);}
|
|||
|
{*** 5}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
Assign(G^.TFile,SysPfad + EscDatei);
|
|||
|
if ResetTxt(G^.TFile) <> 0 then Abbruch_XP(8,'');
|
|||
|
i := 1;
|
|||
|
Repeat
|
|||
|
Readln(G^.TFile,G^.ESCP[i]);
|
|||
|
inc(i);
|
|||
|
Until Eof(G^.TFile);
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure QRG_Lesen;
|
|||
|
Var i : Byte;
|
|||
|
Hstr : String[80];
|
|||
|
Freq : String[10];
|
|||
|
Begin
|
|||
|
XCP := 3;
|
|||
|
{ WriteTxt(XCP,SZ2,StartColor,QrgDatei);}
|
|||
|
{*** 6}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
|
|||
|
Assign(G^.TFile,Sys1Pfad + QrgDatei);
|
|||
|
if ResetTxt(G^.TFile) <> 0 then Abbruch_XP(8,'');
|
|||
|
|
|||
|
G^.QRG_Anz := 0;
|
|||
|
Repeat
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
|
|||
|
if copy(Hstr,1,1) <> LZ then
|
|||
|
begin
|
|||
|
Hstr := UpCaseStr(Hstr);
|
|||
|
Freq := CutStr(Hstr);
|
|||
|
Hstr := RestStr(Hstr);
|
|||
|
|
|||
|
While Hstr > '' do
|
|||
|
begin
|
|||
|
inc(G^.QRG_Anz);
|
|||
|
G^.QRG[G^.QRG_Anz].CALL := CutStr(Hstr);
|
|||
|
G^.QRG[G^.QRG_Anz].QRG := Freq;
|
|||
|
Hstr := RestStr(Hstr);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Until (Eof(G^.TFile) or (G^.QRG_Anz >= maxQRG));
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
|
|||
|
Assign(G^.LinkFile,Sys1Pfad + LinkDatei);
|
|||
|
FiResult := ResetTxt(G^.LinkFile);
|
|||
|
if FiResult > 0 then FiResult := RewriteTxt(G^.LinkFile);
|
|||
|
FiResult := CloseTxt(G^.LinkFile);
|
|||
|
|
|||
|
End;
|
|||
|
|
|||
|
Procedure REM_Lesen;
|
|||
|
Var tmi, mi,i : Byte;
|
|||
|
Hstr : String[40];
|
|||
|
Remotes2: Array [1..maxREM] of REM_Type;
|
|||
|
Begin
|
|||
|
{ WriteTxt(XCP,SZ2,StartColor,RemDatei);}
|
|||
|
{*** 7}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
|
|||
|
Assign(G^.TFile,SysPfad + RemDatei);
|
|||
|
if ResetTxt(G^.TFile) <> 0 then Abbruch_XP(8,'');
|
|||
|
i := 1;
|
|||
|
Repeat
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
if hstr<>'' then
|
|||
|
begin
|
|||
|
with G^.Remotes[i] do
|
|||
|
begin
|
|||
|
BefNr := str_int(CutStr(Hstr));
|
|||
|
Befehl := ParmStr(2,B1,Hstr);
|
|||
|
AnzCh := str_int(ParmStr(3,B1,Hstr));
|
|||
|
AnzPa := str_int(ParmStr(4,B1,Hstr));
|
|||
|
Level := str_int(ParmStr(5,B1,Hstr));
|
|||
|
LevelN:= str_int(ParmStr(6,B1,Hstr));
|
|||
|
end;
|
|||
|
inc(i);
|
|||
|
end;
|
|||
|
Until Eof(G^.TFile);
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
mi:=i-1;
|
|||
|
tmi:=1;
|
|||
|
|
|||
|
for i:=1 to mi do
|
|||
|
begin
|
|||
|
if G^.Remotes[i].BefNr<>99 then
|
|||
|
begin
|
|||
|
Remotes2[G^.Remotes[i].BefNr]:=G^.Remotes[i];
|
|||
|
inc(tmi);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
for i:=1 to mi do
|
|||
|
begin
|
|||
|
if G^.Remotes[i].BefNr=99 then
|
|||
|
begin
|
|||
|
Remotes2[TMI]:=G^.Remotes[i];
|
|||
|
inc(tmi);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
for i:=1 to mi do
|
|||
|
G^.Remotes[i]:=Remotes2[i];
|
|||
|
|
|||
|
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure PWD_Lesen;
|
|||
|
Var Hstr : String[80];
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
Assign(G^.TFile,Sys1Pfad + PwDatei);
|
|||
|
if ResetTxt(G^.TFile) = 0 then
|
|||
|
begin
|
|||
|
{ WriteTxt(XCP,SZ2,StartColor,PwDatei);}
|
|||
|
{*** 8}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
Repeat
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
Flag := PWD = Hstr;
|
|||
|
Until Eof(G^.TFile) or Flag;
|
|||
|
If Flag then
|
|||
|
begin
|
|||
|
Readln(G^.TFile,Hstr);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
Priv_PassWord := EFillStr(80,'a',Hstr);
|
|||
|
end;
|
|||
|
FiResult := CloseTxt(G^.TFile);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure HELP_Lesen;
|
|||
|
Var i : Byte;
|
|||
|
Hstr : String[HlpRec];
|
|||
|
Result : Word;
|
|||
|
Found,
|
|||
|
EFlag : Boolean;
|
|||
|
Begin
|
|||
|
if not Exists(Konfig.TempVerz + THlpDatei) or HlpCompile then Help_Compile;
|
|||
|
{ WriteTxt(XCP,SZ2,StartColor,EFillStr(80-XCP+1,B1,THlpDatei));}
|
|||
|
{*** 9}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
XCP := XCP + SZL;
|
|||
|
Assign(G^.BFile,Konfig.TempVerz + THlpDatei);
|
|||
|
if ResetBin(G^.BFile,HlpRec) <> 0 then Abbruch_XP(8,'');
|
|||
|
Found := false;
|
|||
|
EFlag := false;
|
|||
|
Hstr := '';
|
|||
|
i := 0;
|
|||
|
Repeat
|
|||
|
if not Found or (Hstr = '') then
|
|||
|
begin
|
|||
|
BlockRead(G^.BFile,Hstr[1],1,Result);
|
|||
|
Hstr[0] := Chr(HlpRec);
|
|||
|
KillStartBlanks(Hstr);
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
EFlag := Hstr = LZ;
|
|||
|
if not Found then
|
|||
|
begin
|
|||
|
Found := Hstr = OHelpStr;
|
|||
|
if Found then Hstr := '';
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if Found and not EFlag then
|
|||
|
begin
|
|||
|
if Hstr > '' then
|
|||
|
begin
|
|||
|
inc(i);
|
|||
|
G^.OHelp[i] := CutStr(Hstr);
|
|||
|
Hstr := RestStr(Hstr);
|
|||
|
end;
|
|||
|
end;
|
|||
|
Until Eof(G^.BFile) or EFlag or (i >= maxOHelp);
|
|||
|
|
|||
|
FiResult := CloseBin(G^.BFile);
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure TncIni (* Art : Byte *);
|
|||
|
Var N,bef,
|
|||
|
von,
|
|||
|
bis : Byte;
|
|||
|
Hstr : String[4];
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
{ Assign(G^.TFile,Sys1Pfad + TncIniDatei);
|
|||
|
if ResetTxt(G^.TFile) = 0 then }
|
|||
|
|
|||
|
if 1=1 then
|
|||
|
begin
|
|||
|
|
|||
|
if 1=1 then
|
|||
|
|
|||
|
if 1=1 then
|
|||
|
begin
|
|||
|
von:=1; bis:=tnc_anzahl;
|
|||
|
|
|||
|
if von > 0 then for N := von to bis do
|
|||
|
begin
|
|||
|
dzeile:='';
|
|||
|
for bef:= 1 to 17 do
|
|||
|
begin
|
|||
|
Case Bef of
|
|||
|
1..16:
|
|||
|
begin
|
|||
|
if (Bef in [1,2]) and (Art=0) then
|
|||
|
begin
|
|||
|
if (Konfig.TNC[N].IniA[bef]<>'') and ((bef=1) or (bef=2)) then
|
|||
|
Konfig.TNC[N].IniA[bef]:='I '+Konfig.TNC[N].IniA[Bef];
|
|||
|
end;
|
|||
|
|
|||
|
if art=0 then DZeile:=Konfig.TNC[N].iniA[bef]
|
|||
|
else DZeile:=Konfig.TNC[N].DiniA[bef];
|
|||
|
if (Konfig.TNC[N].IniA[bef]<>'') and ((bef=1) or (bef=2)) then delete(Konfig.TNC[N].IniA[bef],1,2)
|
|||
|
end;
|
|||
|
17:
|
|||
|
begin
|
|||
|
if art=0 then DZeile:=Konfig.TNC[N].iniB
|
|||
|
else DZeile:=Konfig.TNC[N].DiniB;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
while copy(dzeile,1,1)=#32 do delete(Dzeile,1,1);
|
|||
|
KillEndBlanks(Dzeile);
|
|||
|
|
|||
|
if (Art = 0) and (Upcasestr(copy(DZeile,1,1)) = 'I') then
|
|||
|
begin
|
|||
|
DZeile := CutStr(RestStr(DZeile));
|
|||
|
TNC[N]^.HostCall := upcasestr(DZeile);
|
|||
|
DZeile := 'I ' + DZeile;
|
|||
|
end;
|
|||
|
K[0]^.TncNummer := N;
|
|||
|
if dzeile<>'' then S_PAC(0,CM,true,DZeile);
|
|||
|
end; {for bef ...}
|
|||
|
end;
|
|||
|
end;
|
|||
|
{ Until Eof(G^.TFile) or (copy(DZeile,1,1) = DP); }
|
|||
|
{ FiResult := CloseTxt(G^.TFile); }
|
|||
|
end;
|
|||
|
|
|||
|
if Art = 1 then for N := 1 to TNC_Anzahl do
|
|||
|
begin
|
|||
|
if TNC[N]^.TNC_im_Host then
|
|||
|
begin
|
|||
|
K[0]^.TncNummer := N;
|
|||
|
S_PAC(0,CM,true,'JHOST0');
|
|||
|
Verzoegern(300);
|
|||
|
ClearV24Buffer;
|
|||
|
DRSI_Hostmode(N,1);
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Abschluss_XP;
|
|||
|
var i : Byte;
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
AnyConnect := false;
|
|||
|
for i := 1 to maxLink do if K[i]^.connected then AnyConnect := true;
|
|||
|
if (SSAV = 1) or ((SSAV = 2) and AnyConnect) then
|
|||
|
begin
|
|||
|
Puffer_schreiben;
|
|||
|
end else FiResult := EraseBin(BuffFile);
|
|||
|
|
|||
|
Merker_Conn_Schreiben;
|
|||
|
Merker_File_schreiben;
|
|||
|
|
|||
|
ReInstall;
|
|||
|
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
if Save then SaveFile(i);
|
|||
|
if WishBoxLst and (SysArt in SysMenge) then CloseDBox(i);
|
|||
|
if EraseChk > 0 then
|
|||
|
begin
|
|||
|
if ResetBin(DBox,1) = 0 then
|
|||
|
begin
|
|||
|
Flag := FileSize(DBox) > EraseChk;
|
|||
|
FiResult := CloseBin(DBox);
|
|||
|
if Flag then FiResult := EraseBin(DBox);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if use_VDisk then
|
|||
|
begin
|
|||
|
if ResetBin(ScrollFile,T) = 0 then
|
|||
|
begin
|
|||
|
FiResult := CloseBin(ScrollFile);
|
|||
|
FiResult := EraseBin(ScrollFile);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Writeln;
|
|||
|
Writeln('Ende ... ',Datum,B2,Uhrzeit);
|
|||
|
SetCBreak(BreakStatus);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Abbruch_XP (* Nr : Byte; Zeile : Str80 *);
|
|||
|
Var i : Byte;
|
|||
|
Begin
|
|||
|
{ if TextRec(G^.Config).Mode <> fmClosed then FiResult := CloseTxt(G^.Config);}
|
|||
|
{$I-} close(G^.config); i:=ioresult; i:=0; {$I+}
|
|||
|
if K_Record_on_Heap then Close_SaveFiles;
|
|||
|
ReInstall;
|
|||
|
SetzeCursor(1,25);
|
|||
|
Writeln(^G);
|
|||
|
Case Nr of
|
|||
|
1: Writeln('Fehler im File ',CfgDatei);
|
|||
|
2: Writeln('Falsche Interrupt-Nummer f<>r COM' + Zeile + ' !');
|
|||
|
3: Writeln('Falsche Baudrate f<>r COM ' + Zeile + ' !');
|
|||
|
4: Writeln('ERROR, Pfad nicht gefunden -> ' + Zeile);
|
|||
|
5: Writeln('Zuviel Scrollspeicher vergeben !',#10#13,Zeile);
|
|||
|
6: Writeln('Fehler mit Datei ',EmbDatei + ' !');
|
|||
|
7: Writeln('Pufferfiles f<>r Scroll konnte nicht erzeugt werden !');
|
|||
|
8: Writeln('File nicht gefunden, Programm abgebrochen !');
|
|||
|
9: Writeln('Zuviel Vorschreibspeicher vergeben !',#10#13,Zeile);
|
|||
|
10: Writeln('EMS-Fehler: ',EMS_errortext[str_int(Zeile)]);
|
|||
|
11: Writeln('Re-Synchronisation war leider nicht erfolgreich !');
|
|||
|
12: Writeln('TFPCR/X/DRSI-Treiber nicht gefunden !');
|
|||
|
13: Writeln('Schnittstelle f<>r COM-',Zeile,' nicht installiert !');
|
|||
|
14: Writeln('Hostmodebetrieb des TNC an COM-',Zeile,' nicht m<>glich !');
|
|||
|
15: Writeln('Zuviele Kan<61>le insgesamt vergeben, ',Zeile,' !');
|
|||
|
end;
|
|||
|
for i := 1 to maxZ do WriteAttr(1,i,80,TextAttr,1);
|
|||
|
PRG_Stoppen(0);
|
|||
|
End;
|
|||
|
|
|||
|
Procedure ScrFile_erzeugen;
|
|||
|
var i : Byte;
|
|||
|
l : LongInt;
|
|||
|
Result : Word;
|
|||
|
begin
|
|||
|
Assign(ScrollFile,VDisk + ScrollDatei);
|
|||
|
if RewriteBin(ScrollFile,T) = 0 then
|
|||
|
begin
|
|||
|
GetMem(Page,maxNotChBuf);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
l := 0;
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
Pos_im_Scr := l;
|
|||
|
l := l + maxNotCh;
|
|||
|
BlockWrite(ScrollFile,Page^[0],maxNotCh,Result);
|
|||
|
end;
|
|||
|
FreeMem(Page,maxNotChBuf);
|
|||
|
FiResult := CloseBin(ScrollFile);
|
|||
|
end else Abbruch_XP(7,'');
|
|||
|
end;
|
|||
|
|
|||
|
Function HeapFrei (* Bedarf : LongInt) : Boolean *);
|
|||
|
Begin
|
|||
|
HeapFrei := MaxAvail > Bedarf;
|
|||
|
End;
|
|||
|
|
|||
|
{Procedure LineRead (* Fstr : Str10 *);
|
|||
|
var Flag : Boolean;
|
|||
|
i : Byte;
|
|||
|
Begin
|
|||
|
Flag := false;
|
|||
|
i := 0;
|
|||
|
Repeat
|
|||
|
inc(i);
|
|||
|
While not Flag and not Eof(G^.Config) do
|
|||
|
begin
|
|||
|
Readln(G^.Config,DZeile);
|
|||
|
if copy(DZeile,1,length(Fstr)) = Fstr then
|
|||
|
begin
|
|||
|
Flag := true;
|
|||
|
delete(DZeile,1,pos(GL,DZeile));
|
|||
|
end;
|
|||
|
end;
|
|||
|
if not Flag then DZeile := '';
|
|||
|
if Eof(G^.Config) and not Flag then FiResult := ResetTxt(G^.Config);
|
|||
|
Until Flag or (i > 1);
|
|||
|
End;
|
|||
|
}
|
|||
|
|
|||
|
Function MakeString(Zahl:Integer) : String;
|
|||
|
var mst:string;
|
|||
|
begin
|
|||
|
str(Zahl, MSt);
|
|||
|
Makestring:=mst;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
Procedure Config_TNC_Lesen;
|
|||
|
Const PTNC : String[5] = 'CFG:';
|
|||
|
|
|||
|
Var at,T,i,i1,ta,t2,
|
|||
|
i2,i3 : Byte;
|
|||
|
TNC_Str : String[4];
|
|||
|
MpxNr : Byte;
|
|||
|
HfPort : Byte;
|
|||
|
ComNr : Byte;
|
|||
|
TicFlag : Boolean;
|
|||
|
m : LongInt;
|
|||
|
Flag : Boolean;
|
|||
|
|
|||
|
Begin { 1 2 3 4 5 6 7 8 9 10 11}
|
|||
|
{ CFG:TNC1=FALC,10,2M,0,3,1,3E8,10,115200,1,0 }
|
|||
|
|
|||
|
for T:=1 to maxTNC do
|
|||
|
TNC[T]:=NIL;
|
|||
|
T2:=0;
|
|||
|
for T := 1 to maxTNC do
|
|||
|
begin
|
|||
|
at := Konfig.TNC[T].art; {>}
|
|||
|
if (konfig.tnc[t].art=0) or (konfig.TNC[t].maxKan=0)
|
|||
|
{and (konfig.TNC[t].maxKan<=MaxKanal)} then
|
|||
|
begin
|
|||
|
dzeile:=''
|
|||
|
end else
|
|||
|
begin
|
|||
|
dzeile:='WWL';
|
|||
|
inc(T2);
|
|||
|
|
|||
|
{ LineRead(PTNC + 'TNC' + int_str(T));}
|
|||
|
|
|||
|
if dzeile<>'' then
|
|||
|
begin
|
|||
|
tnc_str:=tnc_art[Konfig.TNC[T].Art];
|
|||
|
|
|||
|
if konfig.tnc[t].art=3 then { TFPC }
|
|||
|
begin
|
|||
|
Interface_Exist;
|
|||
|
if not (DRSI_installed or TFPC_installed) then Abbruch_XP(12,'');
|
|||
|
ComNr := 5;
|
|||
|
MpxNr := 0;
|
|||
|
end else
|
|||
|
begin
|
|||
|
ComNr := Konfig.tnc[T].com; { COM-Nummer }
|
|||
|
if not (ComNr in [1..4]) then Abbruch_XP(1,'');
|
|||
|
end;
|
|||
|
|
|||
|
if ComNr in [1..4] then
|
|||
|
begin
|
|||
|
dzeile:='$'+Konfig.tnc[t].adresse;
|
|||
|
m := str_int(dzeile); { Basisadresse }
|
|||
|
if m > 0 then COM[ComNr].Base := m;
|
|||
|
|
|||
|
case ComNr of
|
|||
|
1 : ComAdr1 := COM[1].Base;
|
|||
|
2 : ComAdr2 := COM[2].Base;
|
|||
|
3 : ComAdr3 := COM[3].Base;
|
|||
|
4 : ComAdr4 := COM[4].Base;
|
|||
|
end;
|
|||
|
|
|||
|
m := Byte(Konfig.tnc[t].irq); { Interrupt-Nummer }
|
|||
|
if not (m in [0..15]) then Abbruch_XP(2,int_str(ComNr) + ' : ' + int_str(m));
|
|||
|
if m = 0 then HwHs := true;
|
|||
|
COM[ComNr].IRQ_Nr := m;
|
|||
|
|
|||
|
case ComNr of
|
|||
|
1 : EoiPic1 := COM[1].IRQ_Nr > 7;
|
|||
|
2 : EoiPic2 := COM[2].IRQ_Nr > 7;
|
|||
|
3 : EoiPic3 := COM[3].IRQ_Nr > 7;
|
|||
|
4 : EoiPic4 := COM[4].IRQ_Nr > 7;
|
|||
|
end;
|
|||
|
|
|||
|
m := LongInt(konfig.tnc[t].baud); { Baudrate }
|
|||
|
if (m < 1200) or (m > 115200) then Abbruch_XP(3,int_str(ComNr) + ' : ' + int_str(m));
|
|||
|
COM[ComNr].BaudRate := m;
|
|||
|
|
|||
|
{ FIFOs }
|
|||
|
if konfig.tnc[t].fifo then COM[ComNr].FifoCfg := $01
|
|||
|
else COM[ComNr].FifoCfg := $00;
|
|||
|
end;
|
|||
|
|
|||
|
HfPort := konfig.tnc[t].port; { HF-Portnummer }
|
|||
|
|
|||
|
TicFlag := konfig.tnc[t].tickzeile;{ Tickerzeile }
|
|||
|
|
|||
|
MpxNr := konfig.tnc[t].multiplexnr; { Nummer am Multiplexer }
|
|||
|
if (not (MpxNr in [0..4])) then Abbruch_XP(1,'');
|
|||
|
|
|||
|
m := konfig.tnc[t].maxkan; { Kanalanzahl }
|
|||
|
|
|||
|
if (m >= 0) and (maxLink <= maxKanal) then
|
|||
|
begin { hier sollen ein paar Kan<61>le spendiert werden }
|
|||
|
TNC_used[T2] := true;
|
|||
|
{inc(TNC_Anzahl);}
|
|||
|
GetMem(TNC[T2],SizeOf(TNC[T2]^));
|
|||
|
FillChar(TNC[T2]^,SizeOf(TNC[T2]^),0);
|
|||
|
|
|||
|
with TNC[T2]^ do
|
|||
|
begin
|
|||
|
{PortName:=konfig.tnc[t].portnam;}
|
|||
|
DRSI := 0;
|
|||
|
FALC := false;
|
|||
|
TNC3 := false;
|
|||
|
PCXD := false;
|
|||
|
ExtHost := false;
|
|||
|
TNC_im_Host := false;
|
|||
|
Kvon := 0;
|
|||
|
Kbis := 0;
|
|||
|
{$IFNDEF no_Bake} {//db1ras}
|
|||
|
Bake := false;
|
|||
|
BTimer := 20;
|
|||
|
{$ENDIF}
|
|||
|
CText := 1;
|
|||
|
Info := 1;
|
|||
|
Aktuell := 1;
|
|||
|
QText := 1;
|
|||
|
Fix := 1;
|
|||
|
QRG_Akt := PseudoQRG;
|
|||
|
|
|||
|
if TNC_Str = TNC_Art[4] then { FALC }
|
|||
|
begin
|
|||
|
FALC := true;
|
|||
|
DRSI := 1;
|
|||
|
HF_PortStr := '@CCHAN' + B1 + int_str(HfPort);
|
|||
|
end;
|
|||
|
|
|||
|
if TNC_Str = TNC_Art[2] then { TNC3 }
|
|||
|
begin
|
|||
|
TNC3 := true;
|
|||
|
DRSI := 1;
|
|||
|
HF_PortStr := '#PORT' + B1 + int_str(HfPort);
|
|||
|
end;
|
|||
|
|
|||
|
if (ComNr = 5) and DRSI_installed then
|
|||
|
begin
|
|||
|
PCXD := true;
|
|||
|
DRSI := 1;
|
|||
|
HF_PortStr := 'C' + B1 + int_str(HfPort) + DP;
|
|||
|
end;
|
|||
|
|
|||
|
HF_Port := HfPort;
|
|||
|
Tic := TicFlag;
|
|||
|
if Tic then inc(TicAnz);
|
|||
|
TicStr := ConstStr(B1,TL);
|
|||
|
RS232 := ComNr;
|
|||
|
MPX := MpxNr;
|
|||
|
Ident := LRK + EFillStr(2,B1,konfig.tnc[t].identi) + RRK;
|
|||
|
HostCall := NoCall;
|
|||
|
Channels := m;
|
|||
|
TncChannels := m;
|
|||
|
if Channels > 0 then
|
|||
|
begin
|
|||
|
Kvon := maxLink + 1;
|
|||
|
Kbis := Kvon + Channels - 1;
|
|||
|
end;
|
|||
|
end;
|
|||
|
maxLink := maxLink + m;
|
|||
|
if (maxLink > maxKanal) then
|
|||
|
Abbruch_XP(15,LRK + int_str(maxLink) + '/' + int_str(maxKanal) + RRK);
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
i1 := 1;
|
|||
|
for T := 1 to TNC_Anzahl do { Zuordnung DRSI-Kennziffer }
|
|||
|
begin
|
|||
|
ComNr := TNC[T]^.RS232;
|
|||
|
MpxNr := TNC[T]^.MPX;
|
|||
|
Flag := false;
|
|||
|
|
|||
|
if (TNC[T]^.DRSI > 0) and not TNC[T]^.ExtHost then
|
|||
|
begin
|
|||
|
for i := 1 to TNC_Anzahl do if (TNC[i]^.DRSI > 0) and
|
|||
|
not TNC[i]^.ExtHost then
|
|||
|
begin
|
|||
|
if (TNC[i]^.RS232 = ComNr) and (TNC[i]^.MPX = MpxNr) then
|
|||
|
begin
|
|||
|
TNC[i]^.DRSI := i1;
|
|||
|
TNC[i]^.ExtHost := true;
|
|||
|
Flag := true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
if Flag then inc(i1);
|
|||
|
end;
|
|||
|
for T := 1 to TNC_Anzahl do TNC[T]^.ExtHost := false;
|
|||
|
|
|||
|
for T := 1 to TNC_Anzahl do { Feststellen, wieviel Kan<61>le der DRSI-TNC hat }
|
|||
|
begin
|
|||
|
i2 := TNC[T]^.DRSI;
|
|||
|
i3 := TNC[T]^.Channels;
|
|||
|
for i := 1 to TNC_Anzahl do if T <> i then
|
|||
|
begin
|
|||
|
if i2 = TNC[i]^.DRSI then i3 := i3 + TNC[i]^.Channels;
|
|||
|
end;
|
|||
|
TNC[T]^.TncChannels := i3;
|
|||
|
end;
|
|||
|
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Config_Verz_Lesen;
|
|||
|
Const Verz : String[5] = 'VERZ:';
|
|||
|
|
|||
|
var i,i1,i2 : Integer;
|
|||
|
Flag : Boolean;
|
|||
|
NrStr : String[4];
|
|||
|
DrvStr : String[2];
|
|||
|
Begin
|
|||
|
DrvStr := copy(SysPfad,1,2);
|
|||
|
|
|||
|
{ LineRead(Verz + 'SAVE');}
|
|||
|
DZeile:=Konfig.SavVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.SavVerz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.SavVerz[length(Konfig.SavVerz)] <> BS then Konfig.SavVerz := Konfig.SavVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.SavVerz) then Konfig.SavVerz := SysPfad;
|
|||
|
|
|||
|
{ LineRead(Verz + 'REM');}
|
|||
|
Dzeile:=konfig.RemVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
G^.Drive := UpCaseStr(CutStr(DZeile));
|
|||
|
if G^.Drive[length(G^.Drive)] <> BS then G^.Drive := G^.Drive + BS;
|
|||
|
if not PfadOk(0,G^.Drive) then G^.Drive := SysPfad;
|
|||
|
Ini_RemPath;
|
|||
|
G^.Merk_Drive := G^.Drive;
|
|||
|
|
|||
|
{ LineRead(Verz + 'MAIL');}
|
|||
|
Dzeile:=Konfig.MailVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.MailVerz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.MailVerz[length(Konfig.MailVerz)] <> BS then Konfig.MailVerz := Konfig.MailVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.MailVerz) then Konfig.MailVerz := SysPfad;
|
|||
|
|
|||
|
{ LineRead(Verz + 'RUN');}
|
|||
|
Dzeile:=Konfig.RunVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.RunVerz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.RunVerz[length(Konfig.RunVerz)] <> BS then Konfig.RunVerz := Konfig.RunVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.RunVerz) then Konfig.RunVerz := SysPfad;
|
|||
|
|
|||
|
{LineRead(Verz + 'SPK');
|
|||
|
Dzeile:=
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
G^.SpkPfad := UpCaseStr(CutStr(DZeile));
|
|||
|
if G^.SpkPfad[length(G^.SpkPfad)] <> BS then G^.SpkPfad := G^.SpkPfad + BS;
|
|||
|
if not PfadOk(1,G^.SpkPfad) then G^.SpkPfad := SysPfad;
|
|||
|
}
|
|||
|
{LineRead(Verz + 'BIN');}
|
|||
|
Dzeile:=Konfig.BinVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.BinVerz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.BinVerz[length(Konfig.BinVerz)] <> BS then Konfig.BinVerz := Konfig.BinVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.BinVerz) then Konfig.BinVerz := SysPfad;
|
|||
|
|
|||
|
{LineRead(Verz + '7PL');}
|
|||
|
Dzeile:=Konfig.SplVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.splverz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.splVerz[length(Konfig.SplVerz)] <> BS then Konfig.SplVerz := Konfig.SplVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.SplVerz) then Konfig.SplVerz := SysPfad;
|
|||
|
|
|||
|
{LineRead(Verz + 'TMP');}
|
|||
|
DZeile:=Konfig.TempVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.TempVerz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.TempVerz[length(Konfig.TempVerz)] <> BS then Konfig.TempVerz := Konfig.TempVErz + BS;
|
|||
|
if not PfadOk(1,Konfig.TempVErz) then Konfig.TempVerz := SysPfad;
|
|||
|
|
|||
|
{LineRead(Verz + 'MAK');}
|
|||
|
Dzeile:=konfig.MakVerz;
|
|||
|
if pos(BS,DZeile) = 1 then DZeile := DrvStr + DZeile;
|
|||
|
Konfig.MakVerz := UpCaseStr(CutStr(DZeile));
|
|||
|
if Konfig.MakVerz[length(Konfig.MakVerz)] <> BS then Konfig.MakVerz := Konfig.MakVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.MakVerz) then Konfig.MakVerz := SysPfad;
|
|||
|
|
|||
|
if Konfig.spkVerz[length(Konfig.spkVerz)] <> BS then Konfig.spkVerz := Konfig.spkVerz + BS;
|
|||
|
if not PfadOk(1,Konfig.spkVerz) then Konfig.spkVerz := SysPfad;
|
|||
|
|
|||
|
Flag := false;
|
|||
|
{LineRead(Verz + 'VDRV');}
|
|||
|
{DZeile:='';}
|
|||
|
DZeile:=Konfig.TempVerz;
|
|||
|
if (DZeile > '') and Vdisk_Exists then
|
|||
|
begin
|
|||
|
VDisk := DZeile; {UpCaseStr(copy(DZeile,1,1)) + DP + BS;}
|
|||
|
if not PfadOk(1,VDisk) then Flag := true;
|
|||
|
end else Flag := true;
|
|||
|
if Flag then
|
|||
|
begin
|
|||
|
Vdisk_Exists := false;
|
|||
|
VDisk := SysPfad[1] + DP + BS;
|
|||
|
end;
|
|||
|
|
|||
|
{LineRead(Verz + 'CDRV');}
|
|||
|
Dzeile:=Konfig.CDRom;
|
|||
|
if DZeile > '' then
|
|||
|
begin
|
|||
|
RomDisk := DZeile + DP + BS;
|
|||
|
if PfadOk(0,RomDisk) then Rom_Exists := true;
|
|||
|
end;
|
|||
|
|
|||
|
{LineRead(Verz + 'EDI');}
|
|||
|
{G^.Ext_Edi_Path := Konfig.EditVerz;} {UpCaseStr(CutStr(DZeile));}
|
|||
|
|
|||
|
{ LineRead(Verz + 'VIEW'); }
|
|||
|
{Konfig.ViewVerz := Konfig.ViewVerz;} {UpCaseStr(CutStr(DZeile));}
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Config_Allg_Lesen;
|
|||
|
Const Allg : String[5] = 'ALLG:';
|
|||
|
var iza : byte;
|
|||
|
|
|||
|
var b : Byte;
|
|||
|
w : Word;
|
|||
|
i,i1,i2 : Integer;
|
|||
|
Flag : Boolean;
|
|||
|
NrStr : String[4];
|
|||
|
h1, h2 : str4;
|
|||
|
Begin
|
|||
|
|
|||
|
{LineRead(Allg + 'TIME');}
|
|||
|
|
|||
|
ZeitArt := EFillStr(3,B1,Konfig.ZeitBez);
|
|||
|
ZeitDiff := Konfig.UTCDiff;;
|
|||
|
if (ZeitDiff < -23) or (ZeitDiff > 23) then ZeitDiff := 0;
|
|||
|
RTC := Konfig.Echtzeit;
|
|||
|
UseUTC := Konfig.UTCBenutzen;
|
|||
|
|
|||
|
{ LineRead(Allg + 'POP');}
|
|||
|
Box_Time := Konfig.PopupZeit;
|
|||
|
|
|||
|
{ LineRead(Allg + 'LIT'); }
|
|||
|
LockInt := Konfig.LockIRQ;
|
|||
|
|
|||
|
|
|||
|
{LineRead(Allg + 'SABF');}{sicherheitsabfragen j/n}
|
|||
|
|
|||
|
SiAltD := Konfig.SichAbfr;
|
|||
|
SiAltK := SiAltD;
|
|||
|
|
|||
|
G^.PromptStr := Konfig.PromptS;
|
|||
|
|
|||
|
if (Konfig.NTimeout>0) and (konfig.NTimeout<10) then Konfig.NTimeout:=10;
|
|||
|
if (Konfig.TTimeout>0) and (Konfig.TTimeout<10) then Konfig.TTimeOut:=10;
|
|||
|
|
|||
|
NTimeOut := Konfig.NTimeOut;
|
|||
|
|
|||
|
quietZeitG := konfig.QuietZg;
|
|||
|
if Konfig.QuietDh then
|
|||
|
begin
|
|||
|
Quiet:=true;
|
|||
|
quietZeitG:=false;
|
|||
|
end;
|
|||
|
for iza := 1 to 3 do
|
|||
|
begin
|
|||
|
if konfig.quietzt[iza].stdanf=0 then h1:='0' else h1:='';
|
|||
|
if konfig.quietzt[iza].minanf=0 then h2:='0' else h2:='';
|
|||
|
quietztenan[iza]:=''; quietztenaus[iza]:='';
|
|||
|
quietZtenAn[iza]:=h1+int_str(Konfig.quietzt[iza].StdAnf)+ ':' +h2+int_str(Konfig.quietzt[iza].MinAnf);
|
|||
|
|
|||
|
if konfig.quietzt[iza].stdend=0 then h1:='0' else h1:='';
|
|||
|
if konfig.quietzt[iza].minend=0 then h2:='0' else h2:='';
|
|||
|
quietZtenaus[iza]:=h1+int_str(Konfig.quietzt[iza].StdEND)+ ':' +h2+int_str(Konfig.quietzt[iza].MinEnd);
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
{LineRead(Allg + 'IDLE');}
|
|||
|
idle := Konfig.IDLE;
|
|||
|
|
|||
|
ScreenInit:=Konfig.ScrSavZ;
|
|||
|
|
|||
|
{$IFNDEF no_Bake} {//db1ras}
|
|||
|
MailBakenZeit:=Konfig.MailFrameZeit;
|
|||
|
MailBake:=Konfig.OwnMailFr;
|
|||
|
{$ENDIF}
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Config_PRN_Lesen;
|
|||
|
Const Druck : String[5] = 'PRN:';
|
|||
|
|
|||
|
var i,i1,Anz : Byte;
|
|||
|
Hstr : String[4];
|
|||
|
Begin
|
|||
|
{LineRead(Druck + 'PORT');}
|
|||
|
|
|||
|
PrtPort := Konfig.LPTNr;
|
|||
|
if not (PrtPort in [1..4]) then PrtPort := 1;
|
|||
|
if pos(Km,DZeile) > 0 then
|
|||
|
LPT_Base[PrtPort] := str_int('$' + Konfig.LPTAdr);
|
|||
|
LPT_vorhanden := LPT_Base[PrtPort] > 0;
|
|||
|
|
|||
|
for i := 1 to 10 do
|
|||
|
begin
|
|||
|
{*} lptEsc[i]:='';
|
|||
|
{LineRead(Druck + 'PAR' + int_str(i-1));}
|
|||
|
Dzeile:='';
|
|||
|
if DZeile > '' then
|
|||
|
begin
|
|||
|
Hstr := ParmStr(1,Km,DZeile);
|
|||
|
Anz := ParmAnz;
|
|||
|
Hstr := '';
|
|||
|
if Anz in [1..20] then for i1 := 1 to Anz do
|
|||
|
begin
|
|||
|
Hstr := Hstr + chr(str_int(ParmStr(i1,Km,DZeile)));
|
|||
|
end;
|
|||
|
LptEsc[i] := Hstr;
|
|||
|
end;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Config_RAM_Lesen;
|
|||
|
Const Ram : String[4] = 'RAM:';
|
|||
|
|
|||
|
var i : Byte;
|
|||
|
maxCh : Word;
|
|||
|
maxSt : Byte;
|
|||
|
|
|||
|
Procedure Berechnen(Kanal : Byte);
|
|||
|
Var i1 : Integer;
|
|||
|
Begin
|
|||
|
with K[Kanal]^ do
|
|||
|
begin
|
|||
|
if maxNotCh mod 16 <> 0 then inc(PagesAnz);
|
|||
|
PagesAnz := PagesAnz + (maxNotCh div 16);
|
|||
|
EMS_Pages_Ins := EMS_Pages_Ins + PagesAnz;
|
|||
|
for i1 := 0 to PagesAnz-1 do PagesNot[i1] := EMS_Pages_Ins - PagesAnz + i1;
|
|||
|
maxNotCh := maxNotCh * 1024;
|
|||
|
if maxNotCh < NeuBildRam then maxNotCh := NeuBildRam + 96;
|
|||
|
GesamtNotCh := GesamtNotCh + maxNotCh;
|
|||
|
|
|||
|
if not (VorZeilen in [10..maxVorZeilen]) then VorZeilen := 20;
|
|||
|
|
|||
|
|
|||
|
GesamtVorCh := GesamtVorCh + VorZeilen * 81;
|
|||
|
VorCmdZeilen := VorZeilen div 5;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Begin
|
|||
|
{LineRead(Ram + 'MH');}
|
|||
|
|
|||
|
maxMH := Konfig.MH;
|
|||
|
if not (maxMH in [10..200]) then maxMH := 25;
|
|||
|
|
|||
|
{LineRead(Ram + 'ALL');}
|
|||
|
maxCh := Konfig.BackScRam;
|
|||
|
maxSt := Konfig.VorschZRam;
|
|||
|
if maxCh > 63 then maxCh := 63;
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
maxNotCh := maxCh;
|
|||
|
VorZeilen := maxSt;
|
|||
|
Berechnen(i);
|
|||
|
end;
|
|||
|
if Konfig.BufferDat then SSAV:=1 else SSAV:=0;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Procedure Config_BLIND_Lesen;
|
|||
|
Const BLN : String[5] = 'BLND:';
|
|||
|
|
|||
|
var i : Byte;
|
|||
|
Begin
|
|||
|
HardCur := Konfig.SoftHardC;
|
|||
|
|
|||
|
Win_Rout := Konfig.WinRout;
|
|||
|
|
|||
|
Win_Time := Konfig.WinRoutTime;
|
|||
|
|
|||
|
Braille80 := Konfig.AchzigBrail;
|
|||
|
|
|||
|
for i := 1 to maxLink do K[i]^.RX_Datenpieps := Konfig.RXBeepStart;
|
|||
|
|
|||
|
WCTRL := Konfig.Steuerz;
|
|||
|
|
|||
|
BLTON := Konfig.MarkTon;
|
|||
|
|
|||
|
BiosOut := Konfig.AusgabeBios;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Puffer_schreiben;
|
|||
|
var i,i1 : Integer;
|
|||
|
Result : Word;
|
|||
|
VorZ : Word;
|
|||
|
CmdZ : Word;
|
|||
|
Begin
|
|||
|
if RewriteBin(BuffFile,T) = 0 then
|
|||
|
begin
|
|||
|
InfoOut(show,0,0,InfoZeile(98) + B1 + BuffDatei);
|
|||
|
GetMem(Page,maxNotChBuf);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
|
|||
|
BlockWrite(BuffFile,maxLink,SizeOf(maxLink),Result);
|
|||
|
BlockWrite(BuffFile,Mon_Anz,SizeOf(Mon_Anz),Result);
|
|||
|
|
|||
|
move(MH^,Page^,maxMH * SizeOf(MH_Typ));
|
|||
|
BlockWrite(BuffFile,Page^,maxMhRec * SizeOf(MH_Typ),Result);
|
|||
|
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
BlockWrite(BuffFile,NotPos,SizeOf(NotPos),Result);
|
|||
|
BlockWrite(BuffFile,RxLRet,SizeOf(RxLRet),Result);
|
|||
|
BlockWrite(BuffFile,X2,SizeOf(X2),Result);
|
|||
|
BlockWrite(BuffFile,Mo,SizeOf(Mo),Result);
|
|||
|
BlockWrite(BuffFile,BoxStr,SizeOf(BoxStr),Result);
|
|||
|
BlockWrite(BuffFile,NZeile,SizeOf(NZeile),Result);
|
|||
|
BlockWrite(BuffFile,ACMerk,SizeOf(ACMerk),Result);
|
|||
|
BlockWrite(BuffFile,CompZeile,SizeOf(CompZeile),Result);
|
|||
|
BlockWrite(BuffFile,SendZeile,SizeOf(SendZeile),Result);
|
|||
|
|
|||
|
VorZ := VorZeilen - VorCmdZeilen;
|
|||
|
CmdZ := VorCmdZeilen;
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
if Vor_im_EMS then EMS_Seite_einblenden(i,Vor);
|
|||
|
move(VorWrite[i]^[1],Page^,VorZ * 81);
|
|||
|
move(VorWrite[i]^[VorZ+1],Page^[maxVz*81+1],CmdZ * 81);
|
|||
|
BlockWrite(BuffFile,Page^,maxVorZeilen * 81,Result);
|
|||
|
|
|||
|
if use_VDisk then
|
|||
|
begin
|
|||
|
FiResult := ResetBin(ScrollFile,T);
|
|||
|
Seek(ScrollFile,Pos_im_Scr);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
BlockRead(ScrollFile,Page^[0],maxNotCh,Result);
|
|||
|
FiResult := CloseBin(ScrollFile);
|
|||
|
BlockWrite(BuffFile,Page^,maxNotChBuf,Result);
|
|||
|
end else
|
|||
|
if use_XMS then
|
|||
|
begin
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
XMS_to_Data(@Page^[0],XMS_Handle,Pos_im_Scr,maxNotCh);
|
|||
|
BlockWrite(BuffFile,Page^,maxNotChBuf,Result);
|
|||
|
end else
|
|||
|
begin
|
|||
|
if use_EMS then EMS_Seite_einblenden(i,Scr);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
move(NotCh[i]^,Page^,maxNotCh);
|
|||
|
BlockWrite(BuffFile,Page^,maxNotChBuf,Result);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
FreeMem(Page,maxNotChBuf);
|
|||
|
FiResult := CloseBin(BuffFile);
|
|||
|
Neu_Bild;
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
Procedure Config_SOUND_Lesen;
|
|||
|
begin
|
|||
|
{AdLibFM:=Str_int('$'+konfig.MidiADR);}
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Procedure Puffer_lesen;
|
|||
|
var i,i1 : Byte;
|
|||
|
max : Byte;
|
|||
|
Result : Word;
|
|||
|
VorZ : Word;
|
|||
|
CmdZ : Word;
|
|||
|
w : Word;
|
|||
|
Flag : Boolean;
|
|||
|
Begin
|
|||
|
if ResetBin(BuffFile,T) = 0 then
|
|||
|
begin
|
|||
|
{ WriteTxt(XCP,SZ2,StartColor,BuffDatei); }
|
|||
|
{*** 10}
|
|||
|
gotoxy(1,20);
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
GetMem(Page,maxNotChBuf);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
|
|||
|
BlockRead(BuffFile,max,SizeOf(maxLink),Result);
|
|||
|
if max > maxLink then max := maxLink;
|
|||
|
BlockRead(BuffFile,Mon_Anz,SizeOf(Mon_Anz),Result);
|
|||
|
|
|||
|
BlockRead(BuffFile,Page^,maxMhRec * SizeOf(MH_Typ),Result);
|
|||
|
move(Page^,MH^,maxMH * SizeOf(MH_Typ));
|
|||
|
|
|||
|
for i := 0 to max do with K[i]^ do
|
|||
|
begin
|
|||
|
BlockRead(BuffFile,NotPos,SizeOf(NotPos),Result);
|
|||
|
BlockRead(BuffFile,RxLRet,SizeOf(RxLRet),Result);
|
|||
|
BlockRead(BuffFile,X2,SizeOf(X2),Result);
|
|||
|
BlockRead(BuffFile,Mo,SizeOf(Mo),Result);
|
|||
|
BlockRead(BuffFile,BoxStr,SizeOf(BoxStr),Result);
|
|||
|
BlockRead(BuffFile,NZeile,SizeOf(NZeile),Result);
|
|||
|
BlockRead(BuffFile,ACMerk,SizeOf(ACMerk),Result);
|
|||
|
BlockRead(BuffFile,CompZeile,SizeOf(CompZeile),Result);
|
|||
|
BlockRead(BuffFile,SendZeile,SizeOf(SendZeile),Result);
|
|||
|
|
|||
|
for i1 := 1 to 2 do with Mo do
|
|||
|
begin
|
|||
|
MonFirst[i1] := true;
|
|||
|
MonFrameNr[i1] := 0;
|
|||
|
end;
|
|||
|
|
|||
|
VorZ := VorZeilen - VorCmdZeilen;
|
|||
|
CmdZ := VorCmdZeilen;
|
|||
|
if Vor_im_EMS then EMS_Seite_einblenden(i,Vor);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
BlockRead(BuffFile,Page^,maxVorZeilen * 81,Result);
|
|||
|
move(Page^,VorWrite[i]^[1],VorZ * 81);
|
|||
|
move(Page^[maxVz*81+1],VorWrite[i]^[VorZ+1],CmdZ * 81);
|
|||
|
|
|||
|
Flag := NotPos > maxNotCh;
|
|||
|
if Flag then NotPos := 0;
|
|||
|
|
|||
|
if use_VDisk then
|
|||
|
begin
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
BlockRead(BuffFile,Page^,maxNotChBuf,Result);
|
|||
|
if Flag then FillChar(Page^,maxNotChBuf,0);
|
|||
|
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
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
BlockRead(BuffFile,Page^,maxNotChBuf,Result);
|
|||
|
if Flag then FillChar(Page^,maxNotChBuf,0);
|
|||
|
Data_to_XMS(@Page^[0],XMS_Handle,Pos_im_Scr,maxNotCh);
|
|||
|
end else
|
|||
|
begin
|
|||
|
if use_EMS then EMS_Seite_einblenden(i,Scr);
|
|||
|
FillChar(Page^,maxNotChBuf,0);
|
|||
|
BlockRead(BuffFile,Page^,maxNotChBuf,Result);
|
|||
|
if Flag then FillChar(Page^,maxNotChBuf,0);
|
|||
|
move(Page^,NotCh[i]^,maxNotCh);
|
|||
|
end;
|
|||
|
end;
|
|||
|
FiResult := CloseBin(BuffFile);
|
|||
|
FreeMem(Page,maxNotChBuf);
|
|||
|
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
if Vor_im_EMS then EMS_Seite_einblenden(i,Vor);
|
|||
|
for i1 := (VorZeilen - VorCmdZeilen) + 1 to VorZeilen do
|
|||
|
begin
|
|||
|
delete(VorWrite[i]^[i1],1,2);
|
|||
|
VorWrite[i]^[i1] := CvCh + VorWrite[i]^[i1];
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
gotoxy(1,20);
|
|||
|
{*** 11 }
|
|||
|
writeln(' <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> <20>');
|
|||
|
writeln(' <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> <20>');
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure VorCurEnd;
|
|||
|
Var i : Byte;
|
|||
|
CMerk : Boolean;
|
|||
|
Begin
|
|||
|
for i := 0 to maxLink do with K[i]^ do
|
|||
|
begin
|
|||
|
CMerk := Cmd;
|
|||
|
Cmd := true;
|
|||
|
Chr_Cmd_Show(i,_CtrlPgDn,#255);
|
|||
|
if VorWrite[i]^[stC] <> CvCh then Chr_Cmd_Show(i,_Dn,#255);
|
|||
|
Cmd := false;
|
|||
|
Chr_Vor_Show(i,_CtrlPgDn,#255);
|
|||
|
if VorWrite[i]^[stV] > '' then Chr_Vor_Show(i,_Dn,#255);
|
|||
|
Cmd := CMerk;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
Procedure Interface_Exist;
|
|||
|
Type KArrayTyp = array [1..11] of Char;
|
|||
|
|
|||
|
Var KPointer : Pointer;
|
|||
|
KArray : ^KArrayTyp;
|
|||
|
KStr : String[11];
|
|||
|
Begin
|
|||
|
if not (TFPC_Installed or DRSI_Installed) then
|
|||
|
begin
|
|||
|
Kiss_Int := $3F;
|
|||
|
Repeat
|
|||
|
Inc(Kiss_Int);
|
|||
|
GetIntVec(Kiss_Int,KPointer);
|
|||
|
KArray := KPointer;
|
|||
|
move(KArray^[1],Kstr[1],11);
|
|||
|
Kstr[0] := #11;
|
|||
|
|
|||
|
if (pos(MatchTFPC,Kstr) = 4) then TFPC_installed := true
|
|||
|
else if
|
|||
|
(pos(MatchDRSI1,Kstr) = 1) and
|
|||
|
(pos(MatchDRSI2,Kstr) = 6) then DRSI_installed := true;
|
|||
|
Until TFPC_installed or DRSI_installed or (Kiss_Int >= $FF);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure GenCrcTab;
|
|||
|
Const CRCBIT : Array [1..8] of Word = ($9188,$48C4,$2462,$1231,
|
|||
|
$8108,$4084,$2042,$1021);
|
|||
|
BITTAB : Array [1..8] of Byte = (128,64,32,16,8,4,2,1);
|
|||
|
|
|||
|
Var i,i1 : Byte;
|
|||
|
|
|||
|
Begin
|
|||
|
for i := 0 to FF do
|
|||
|
begin
|
|||
|
G^.CrcFeld[i] := 0;
|
|||
|
for i1 := 1 to 8 do if (BITTAB[i1] and i) > 0 then
|
|||
|
G^.CrcFeld[i] := G^.CrcFeld[i] xor CRCBIT[i1];
|
|||
|
end;
|
|||
|
END;
|
|||
|
|
|||
|
|
|||
|
Procedure GenPrivPWD;
|
|||
|
Var i : Byte;
|
|||
|
Hstr : String[80];
|
|||
|
f : Text;
|
|||
|
Begin
|
|||
|
Randomize;
|
|||
|
Hstr := '';
|
|||
|
Repeat
|
|||
|
i := Random(123);
|
|||
|
if i in [33,34,36..43,45..58,60..122] then Hstr := Hstr + Chr(i);
|
|||
|
Until length(Hstr) >= 80;
|
|||
|
Assign(f,Sys1Pfad + PwDatei);
|
|||
|
if AppendTxt(f) = 0 then
|
|||
|
begin
|
|||
|
Writeln(f);
|
|||
|
Writeln(f,PWD);
|
|||
|
Writeln(f,Hstr);
|
|||
|
FiResult := CloseTxt(f);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure UebergabeAuswert;
|
|||
|
Var Hstr : String[80];
|
|||
|
Bstr : String[80];
|
|||
|
i : Byte;
|
|||
|
unknown : Boolean;
|
|||
|
|
|||
|
Function Sequenz(s : Str60) : Boolean;
|
|||
|
begin
|
|||
|
if pos(s,Hstr) > 0 then
|
|||
|
begin
|
|||
|
unknown := false;
|
|||
|
Sequenz := true;
|
|||
|
end else Sequenz := false;
|
|||
|
end;
|
|||
|
|
|||
|
Begin
|
|||
|
Hstr := UpCaseStr(ParamZeile^);
|
|||
|
KillEndBlanks(Hstr);
|
|||
|
unknown := true;
|
|||
|
for i:=1 to MaxParm do
|
|||
|
if ParmCmd[i]=Hstr then unknown:=false;
|
|||
|
if Hstr='' then unknown:=false;
|
|||
|
if Sequenz(ParmCmd[1]) then Nutze_EMS := false; (* NOEMS *)
|
|||
|
if Sequenz(ParmCmd[2]) then Nutze_XMS := false; (* NOXMS *)
|
|||
|
if Sequenz(ParmCmd[3]) then Vdisk_Exists := false; (* NORAM *)
|
|||
|
if Sequenz(ParmCmd[4]) then OVRtoEMS := false; (* NEOVR *)
|
|||
|
if Sequenz(ParmCmd[5]) then HwHs := true; (* HS *)
|
|||
|
if Sequenz(ParmCmd[6]) then ColNr := str_int(Hstr[pos(ParmCmd[7],Hstr)+1]); (* F *)
|
|||
|
if Sequenz(ParmCmd[7]) then CRC_PR_EXE := true; (* CRC *)
|
|||
|
|
|||
|
{ if Sequenz(ParmCmd[10]) then (* NET *)
|
|||
|
begin
|
|||
|
Sys1Pfad := copy(Hstr,pos(ParmCmd[10],Hstr),80);
|
|||
|
delete(Sys1Pfad,1,3);
|
|||
|
Sys1Pfad := CutStr(Sys1Pfad);
|
|||
|
if Sys1Pfad[length(Sys1Pfad)] <> BS then Sys1Pfad := Sys1Pfad + BS;
|
|||
|
end; }
|
|||
|
if Sequenz(ParmCmd[8]) then (* VER *)
|
|||
|
begin
|
|||
|
Writeln;
|
|||
|
Writeln(Version + B2 + lastEdit);
|
|||
|
Halt(0);
|
|||
|
end;
|
|||
|
if Sequenz(ParmCmd[9]) then HlpCompile := true; (* HLP *)
|
|||
|
if Sequenz(ParmCmd[10]) then GenPrivPWD; (* PWD *)
|
|||
|
if Sequenz(ParmCMD[11]) then OVRtoXMS := false; (* NXOVR *)
|
|||
|
if unknown then
|
|||
|
begin
|
|||
|
Writeln;
|
|||
|
for i := 1 to maxParm do
|
|||
|
begin
|
|||
|
Write(B3 + EFillStr(6,B1,ParmCmd[i]));
|
|||
|
if i mod 5 = 0 then Writeln;
|
|||
|
end;
|
|||
|
Writeln;
|
|||
|
Halt(0);
|
|||
|
end;
|
|||
|
End;
|
|||
|
|
|||
|
|
|||
|
Procedure Sicherung_Speichern; {Backup - Puffer, Con und Merker sichern, ohne Prog zu beenden}
|
|||
|
var i:byte;
|
|||
|
begin
|
|||
|
if not backupbremsen then
|
|||
|
begin
|
|||
|
BackUpLauf:=true;
|
|||
|
Cursor_Aus;
|
|||
|
G^.Fstr[7] := InfoZeile(458);
|
|||
|
G^.Fstx[11] := 3;
|
|||
|
Fenster(7);
|
|||
|
delay(100);
|
|||
|
AnyConnect := false;
|
|||
|
for i := 1 to maxLink do
|
|||
|
begin
|
|||
|
if K[i]^.connected then AnyConnect := true;
|
|||
|
{ if (K[i]^.RXSave) or (K[i]^.Save) or (K[i]^.Splus and K[i]^.Splsave)}
|
|||
|
end;
|
|||
|
{if (SSAV = 1) or ((SSAV = 2) and AnyConnect) then
|
|||
|
begin}
|
|||
|
Puffer_schreiben;
|
|||
|
{ end else FiResult := EraseBin(BuffFile);}
|
|||
|
Merker_Conn_Schreiben;
|
|||
|
Merker_File_schreiben;
|
|||
|
BackUpLauf:=false;
|
|||
|
clrFenster;
|
|||
|
end; {if not backup_bremsen}
|
|||
|
end;
|