315 lines
8.9 KiB
Plaintext
315 lines
8.9 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> Primaryfile: X P . P A S <20>
|
|||
|
<20> <20>
|
|||
|
<20> <20>
|
|||
|
<20> XP ist ein auf TOP 1.50-Routinen aufgebautes Programm. <20>
|
|||
|
<20> TOP ist eine Weiterentwicklung des schon bekannten Terminalprogramms <20>
|
|||
|
<20> THP 2.6 von DL1BHO . Es gelten auch hier die gleichen Kriterien wie <20>
|
|||
|
<20> bei THP. Das hei<65>t: <20>
|
|||
|
<20> <20>
|
|||
|
<20> Das Programm ist ausdruecklich PUBLIC DOMAIN, koennen also an jeden <20>
|
|||
|
<20> interessierten Funkamateur zur NICHT-KOMMERZIELLEN NUTZUNG weiterge- <20>
|
|||
|
<20> geben werden. <20>
|
|||
|
<20> <20>
|
|||
|
<20> <20>
|
|||
|
<20> A C H T U N G : <20>
|
|||
|
<20> <20>
|
|||
|
<20> Dieses Programm ist ein reines Hobby-Produkt! <20>
|
|||
|
<20> <20>
|
|||
|
<20> F<>r Fehler, insbesondere f<>r eventuelle Datenverluste, kann <20>
|
|||
|
<20> KEINERLEI HAFTUNG <20>bernommen werden! <20>
|
|||
|
<20> <20>
|
|||
|
<20> <20>
|
|||
|
<20> <20>
|
|||
|
<20> <20>
|
|||
|
<20> Compiliert wird mit TURBO-PASCAL 7.0 <20>
|
|||
|
<20> <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>}
|
|||
|
{ XPLOAD nach 101 suchen, um die richtige versi zu erstellen }
|
|||
|
|
|||
|
PROGRAM Packet_HOSTMODE_Terminal(Input,Output);
|
|||
|
{$M 22000,0,655360}
|
|||
|
{$F+}
|
|||
|
{-$DEFINE extovl} {**Zum Start in TP aktivieren}
|
|||
|
{-$DEFINE code} {** Aktiv f<>r Code-Fassung, Deaktiv f<>r offizielle
|
|||
|
auch XPACT, XPOVR6}
|
|||
|
{-$DEFINE Sound} {**Wenn aktiv, wird SB-Unterst<73>tzung mit
|
|||
|
compilliert, ist es deaktiv, nicht
|
|||
|
auch XPACT, XPACT1, XPOVR, XPOVR4, XPOVR6, XPDEFS}
|
|||
|
{-$DEFINE no_Netrom} {**Wenn aktiv wird keine NetRom-Unterstuetzung
|
|||
|
mit compiliert //db1ras}
|
|||
|
{-$DEFINE no_Bake} {**Wenn aktiv, alle Bakenfunktionen deaktiviert //db1ras}
|
|||
|
|
|||
|
{-$DEFINE ReadOldMemo} {**Wenn aktiv, kann XP auch die Vorgaengerversion der
|
|||
|
memo.xp lesen (waehrend der Uebergangsphase wichtig),
|
|||
|
die alte Version wird als memo.<versionsnummer>
|
|||
|
gesichert, geschrieben wird immer die neue Version
|
|||
|
//db1ras}
|
|||
|
|
|||
|
USES OVERLAY,
|
|||
|
CRT,
|
|||
|
DOS,
|
|||
|
|
|||
|
{ GRAPH,}
|
|||
|
|
|||
|
XPEMS,
|
|||
|
XPXMS,
|
|||
|
XPDEFS,
|
|||
|
XPACT,
|
|||
|
XPACT1,
|
|||
|
|
|||
|
XPOVR,
|
|||
|
XPOVR1,
|
|||
|
XPOVR2,
|
|||
|
XPOVR3,
|
|||
|
XPOVR4,
|
|||
|
XPOVR5,
|
|||
|
XPOVR6,
|
|||
|
OVERXMS;
|
|||
|
|
|||
|
|
|||
|
{$O XPOVR}
|
|||
|
{$O XPOVR1}
|
|||
|
{$O XPOVR2}
|
|||
|
{$O XPOVR3}
|
|||
|
{$O XPOVR4}
|
|||
|
{$O XPOVR5}
|
|||
|
|
|||
|
Var i : Integer;
|
|||
|
spf:dirstr..dirstr;
|
|||
|
|
|||
|
|
|||
|
BEGIN (**** H A U P T P R O G R A M M ****)
|
|||
|
|
|||
|
Check_Loaded; {Ueberprueft, ob XP schon geladen ist}
|
|||
|
|
|||
|
Old_IntMask := Port[$21];
|
|||
|
|
|||
|
Inline($FA);
|
|||
|
FillChar(neue_Table,SizeOf(neue_Table),$FF);
|
|||
|
alte_Table := Ptr(PrefixSeg,$18);
|
|||
|
move(alte_Table^[1],neue_Table[1],20);
|
|||
|
|
|||
|
TabAdresse := Ptr(PrefixSeg,$34);
|
|||
|
TabAdresse^ := @neue_Table[1];
|
|||
|
TabLaenge := Ptr(PrefixSeg,$32);
|
|||
|
TabLaenge^ := maxTable;
|
|||
|
Inline($FB);
|
|||
|
|
|||
|
{ SPf := Dir;}
|
|||
|
SysPfad:=UpCaseStr(ParamStr(0)); { Pfad f<>r Config-Dateien }
|
|||
|
OvrDatei := SysPfad;
|
|||
|
|
|||
|
{$IFDEF extovl}
|
|||
|
OVRDatei := 'XPACKET.OVR';
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
|
|||
|
While (length(SysPfad) > 0) and (SysPfad[length(SysPfad)] <> BS)
|
|||
|
do delete(SysPfad,length(SysPfad),1);
|
|||
|
if (Length(SysPfad) > 0) and (SysPfad[Length(SysPfad)] <> BS)
|
|||
|
then SysPfad := SysPfad + BS;
|
|||
|
|
|||
|
Sys1Pfad := SysPfad;
|
|||
|
OvrInit(OvrDatei);
|
|||
|
if OvrResult <> 0 then
|
|||
|
|
|||
|
begin
|
|||
|
Writeln;
|
|||
|
Writeln('Failure with ',OvrDatei,' !');
|
|||
|
PRG_Stoppen(0);
|
|||
|
end;
|
|||
|
|
|||
|
ParamZeile := Ptr(PrefixSeg,$80);
|
|||
|
UebergabeAuswert;
|
|||
|
|
|||
|
if Nutze_XMS then Init_XMS;
|
|||
|
if Nutze_EMS then Init_EMS;
|
|||
|
|
|||
|
if Nutze_XMS and OVRtoXMS then
|
|||
|
begin
|
|||
|
OvrInitXMS;
|
|||
|
i := OvrResult;
|
|||
|
OVRtoEMS:=false;
|
|||
|
if i = 0 then Mstr := EmsStr + OvrDatei + B1 + 'load into XMS'
|
|||
|
else Mstr := EmsStr + OvrDatei + B1 + 'F-Nr.' + GL + int_str(i);
|
|||
|
end;
|
|||
|
|
|||
|
if Nutze_EMS and OVRtoEMS then
|
|||
|
begin
|
|||
|
OvrInitEMS;
|
|||
|
i := OvrResult;
|
|||
|
if i = 0 then Mstr := EmsStr + OvrDatei + B1 + 'load into EMS'
|
|||
|
else Mstr := EmsStr + OvrDatei + B1 + 'F-Nr.' + GL + int_str(i);
|
|||
|
end;
|
|||
|
|
|||
|
OrigExit := ExitProc;
|
|||
|
ExitProc := @Exit_XP;
|
|||
|
|
|||
|
FreeRam := $A0000 - Adr_absolut(Ptr(PrefixSeg,0));
|
|||
|
|
|||
|
GetMem(G,SizeOf(G^));
|
|||
|
FillChar(G^,SizeOf(G^),0);
|
|||
|
|
|||
|
CheckBreak := false; { kein Abbruch durch ctrl-C }
|
|||
|
GetCBreak(BreakStatus); { Break-Status holen und retten }
|
|||
|
SetCBreak(false); { Break off }
|
|||
|
|
|||
|
CheckSnow := false;
|
|||
|
GetVideoMode;
|
|||
|
StartVideoMode := LastMode; { derzeitigen VideoMode merken }
|
|||
|
LastModeStore := StartVideoMode;
|
|||
|
|
|||
|
if Hercules then maxZ := 25
|
|||
|
else maxZ := WindMax div 256 + 1;
|
|||
|
|
|||
|
Cursor_aus;
|
|||
|
TextAttr := StartColor;
|
|||
|
ClrScr;
|
|||
|
|
|||
|
GenCrcTab;
|
|||
|
Mstr := ParamStr(0);
|
|||
|
|
|||
|
if CRC_PR_EXE then
|
|||
|
begin
|
|||
|
NormVideo;
|
|||
|
ClrScr;
|
|||
|
SetzeCursor(1,25);
|
|||
|
Mstr := ParamStr(0);
|
|||
|
CRC_Datei(Mstr);
|
|||
|
Writeln(Mstr);
|
|||
|
Writeln;
|
|||
|
PRG_Stoppen(0);
|
|||
|
end;
|
|||
|
|
|||
|
Var_Init(99); { Erstmal nur globale Variablen initialisieren }
|
|||
|
|
|||
|
getdate(Jahr_,Monat_, Tag_, woTag_);
|
|||
|
LastLTCheck:=0;
|
|||
|
|
|||
|
Cursor_aus;
|
|||
|
Emblem_zeigen;
|
|||
|
{$IFNDEF Sound}
|
|||
|
writeln('NoSound-Version'); {//db1ras}
|
|||
|
{$ENDIF}
|
|||
|
LastLTCheck:=SizeOf(lokalptr);
|
|||
|
LastLTCheck:=SizeOf(Kanalptr);
|
|||
|
LastLTCheck:=SizeOf(TNC_Typ);
|
|||
|
LastLTCheck:=0;
|
|||
|
|
|||
|
ConfigLesen;
|
|||
|
|
|||
|
{ GetNetRom;}
|
|||
|
(* Konfig.WavOut:=true; {************************ L<>SCHEN}*)
|
|||
|
|
|||
|
{$IFDEF Sound}
|
|||
|
if (konfig.wavout) or (konfig.wavsprach) then
|
|||
|
begin
|
|||
|
FindBlaster;
|
|||
|
assign (SoundFile, 'TEST.WAV');
|
|||
|
end;
|
|||
|
{$ENDIF}
|
|||
|
|
|||
|
{ Mstr := ParamStr(0);
|
|||
|
GetNetRom (Mstr);}
|
|||
|
|
|||
|
Infos_Lesen;
|
|||
|
Strings_Lesen;
|
|||
|
Merker_Conn_Lesen;
|
|||
|
Merker_File_Lesen;
|
|||
|
Fenster_Berechnen;
|
|||
|
V24_Init;
|
|||
|
|
|||
|
AttributFile_Lesen;
|
|||
|
ESC_Lesen;
|
|||
|
QRG_Lesen;
|
|||
|
REM_Lesen;
|
|||
|
PWD_Lesen;
|
|||
|
HELP_Lesen;
|
|||
|
|
|||
|
if (SSAV > 0) then Puffer_lesen;
|
|||
|
|
|||
|
max_path_ermitteln;
|
|||
|
|
|||
|
Switch_VGA_Mono;
|
|||
|
ColorItensity(HighCol);
|
|||
|
maxZ := WindMax div 256 + 1;
|
|||
|
Cursor_aus;
|
|||
|
|
|||
|
show := 0;
|
|||
|
for i := 1 to 4 do StatusOut(0,1,i,Attrib[9],ConstStr(B1,20),1);
|
|||
|
Neu_Bild;
|
|||
|
VorCurEnd;
|
|||
|
|
|||
|
M_aus(Attrib[28],^J, 0);
|
|||
|
|
|||
|
Ini_Start_Tnc;
|
|||
|
if MhKill then FillChar(MH^,SizeOf(MH^),0);
|
|||
|
|
|||
|
K[0]^.TncNummer := 1;
|
|||
|
|
|||
|
SwitchChannel(FirstConCh);
|
|||
|
|
|||
|
if Exists(Konfig.makverz + AutoExecFile) then
|
|||
|
begin
|
|||
|
MakroInit;
|
|||
|
Makro_aktivieren(konfig.makverz + AutoExecFile);
|
|||
|
end;
|
|||
|
|
|||
|
if klingel<>(not quiet) then
|
|||
|
begin
|
|||
|
Klingel:=not Quiet;
|
|||
|
setzeFlags(show);
|
|||
|
end;
|
|||
|
|
|||
|
UserAnwesend;
|
|||
|
|
|||
|
{for i:=1 to maxlink do } {//db1ras}
|
|||
|
{ if (not K[i]^.connected) and (not K[i]^.Mo.MonActive) then }
|
|||
|
{ K[i]^.ignore:=false; }
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Repeat (**** H A U P T S C H L E I F E ****)
|
|||
|
Check_Keyboard;
|
|||
|
Uhr_aus;
|
|||
|
|
|||
|
|
|||
|
If Idle then
|
|||
|
begin
|
|||
|
if (Idle_TCount > 0) and (Idle_TMerk <> TimerTick) then
|
|||
|
begin
|
|||
|
Idle_TMerk := TimerTick;
|
|||
|
dec(Idle_TCount);
|
|||
|
end;
|
|||
|
|
|||
|
if Idle_Count > 0 then dec(Idle_Count);
|
|||
|
|
|||
|
if (Idle_TCount = 0) and ((Idle_Pos and (Idle_Count = 0)) or
|
|||
|
(not Idle_Pos and (Idle_Count > 0))) then
|
|||
|
begin
|
|||
|
IdleDOS;
|
|||
|
if Idle_Pos then Idle_Count := Idle_Anz;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
if not Idle or
|
|||
|
Idle and (Idle_Pos or
|
|||
|
(not Idle_Pos and (Idle_Count = 0) and (Idle_TCount = 0))) then
|
|||
|
begin
|
|||
|
if Idle and not Idle_Pos then Idle_Count := Idle_Anz;
|
|||
|
if polling then TNCs_Pollen;
|
|||
|
set_Hardwarecursor(show);
|
|||
|
end;
|
|||
|
Until QRT; (* E N D E der H A U P T S C H L E I F E *)
|
|||
|
TschuessFenster;
|
|||
|
TncIni(1);
|
|||
|
Abschluss_XP;
|
|||
|
Init_HardDrive;
|
|||
|
ExitProc := OrigExit;
|
|||
|
End.
|