More A35 work
This commit is contained in:
parent
80b7d40a77
commit
79d94e90c7
|
@ -1276,13 +1276,12 @@ Begin
|
||||||
If BufPos MOD BaudEmulator = 0 Then WaitMS(6);
|
If BufPos MOD BaudEmulator = 0 Then WaitMS(6);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
(*
|
If AllowAbort And (BufPos MOD 128 = 0) And Not Session.LocalMode Then
|
||||||
If AllowAbort And (BufPos MOD 128 = 0) Then
|
If Session.Client.DataWaiting And (InKey(0) = #32) Then Begin
|
||||||
If InKey(0) = #32 Then Begin
|
|
||||||
AnsiColor(7);
|
AnsiColor(7);
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
|
(*
|
||||||
If AllowAbort And (InKey(0) = #32) Then Begin
|
If AllowAbort And (InKey(0) = #32) Then Begin
|
||||||
AnsiColor(7);
|
AnsiColor(7);
|
||||||
Break;
|
Break;
|
||||||
|
@ -1440,7 +1439,7 @@ Begin
|
||||||
Handles[0] := Input.ConIn;
|
Handles[0] := Input.ConIn;
|
||||||
|
|
||||||
If Not TBBSCore(Core).LocalMode Then Begin
|
If Not TBBSCore(Core).LocalMode Then Begin
|
||||||
If TBBSCore(Core).Client.FInBufPos <= TBBSCore(Core).Client.FInBufEnd Then
|
If TBBSCore(Core).Client.FInBufPos < TBBSCore(Core).Client.FInBufEnd Then
|
||||||
InType := 2
|
InType := 2
|
||||||
Else Begin
|
Else Begin
|
||||||
Handles[1] := SocketEvent;
|
Handles[1] := SocketEvent;
|
||||||
|
@ -1916,7 +1915,7 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Begin
|
Begin
|
||||||
PurgeInputBuffer;
|
// PurgeInputBuffer;
|
||||||
|
|
||||||
If UseInLimit Then Begin
|
If UseInLimit Then Begin
|
||||||
Field := InLimit;
|
Field := InLimit;
|
||||||
|
|
|
@ -350,6 +350,7 @@ Var
|
||||||
Begin
|
Begin
|
||||||
If Not Config.MCompress Then Begin
|
If Not Config.MCompress Then Begin
|
||||||
Result := GetBaseByNum(Num, TempBase);
|
Result := GetBaseByNum(Num, TempBase);
|
||||||
|
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -826,31 +827,13 @@ Var
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Close (MBaseFile);
|
||||||
|
|
||||||
Session.io.OutFull (Session.GetPrompt(430));
|
Session.io.OutFull (Session.GetPrompt(430));
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure ToggleBase (A : Word);
|
Procedure ToggleCurrent (Forced: LongInt);
|
||||||
Var
|
|
||||||
B : Word;
|
|
||||||
Begin
|
Begin
|
||||||
If A = 0 Then Exit;
|
|
||||||
|
|
||||||
B := 0;
|
|
||||||
FileMode := 66;
|
|
||||||
|
|
||||||
Reset (MBaseFile);
|
|
||||||
|
|
||||||
Repeat
|
|
||||||
{$I-} Read (MBaseFile, MBase); {$I+}
|
|
||||||
|
|
||||||
If IoResult <> 0 Then Exit;
|
|
||||||
|
|
||||||
If Session.User.Access(MBase.ListACS) Then
|
|
||||||
Inc(B);
|
|
||||||
|
|
||||||
If A = B Then Break;
|
|
||||||
Until False;
|
|
||||||
|
|
||||||
GetMessageScan;
|
GetMessageScan;
|
||||||
|
|
||||||
Session.io.PromptInfo[1] := MBase.Name;
|
Session.io.PromptInfo[1] := MBase.Name;
|
||||||
|
@ -858,32 +841,74 @@ Var
|
||||||
If QWK Then Begin
|
If QWK Then Begin
|
||||||
Case MScan.QwkScan of
|
Case MScan.QwkScan of
|
||||||
0 : Begin
|
0 : Begin
|
||||||
|
If Forced <> -1 Then
|
||||||
|
MScan.QwkScan := Forced
|
||||||
|
Else Begin
|
||||||
MScan.QwkScan := 1;
|
MScan.QwkScan := 1;
|
||||||
|
|
||||||
Session.io.OutFullLn (Session.GetPrompt(97));
|
Session.io.OutFullLn (Session.GetPrompt(97));
|
||||||
End;
|
End;
|
||||||
|
End;
|
||||||
1 : Begin
|
1 : Begin
|
||||||
|
If Forced <> -1 Then
|
||||||
|
MScan.QwkScan := Forced
|
||||||
|
Else Begin
|
||||||
MScan.QwkScan := 0;
|
MScan.QwkScan := 0;
|
||||||
|
|
||||||
Session.io.OutFullLn (Session.GetPrompt(96));
|
Session.io.OutFullLn (Session.GetPrompt(96));
|
||||||
End;
|
End;
|
||||||
2 : Session.io.OutFullLn (Session.GetPrompt(302));
|
End;
|
||||||
|
2 : If Forced <> -1 Then
|
||||||
|
Session.io.OutFullLn (Session.GetPrompt(302));
|
||||||
End;
|
End;
|
||||||
End Else Begin
|
End Else Begin
|
||||||
Case MScan.NewScan of
|
Case MScan.NewScan of
|
||||||
0 : Begin
|
0 : Begin
|
||||||
|
If Forced <> -1 Then
|
||||||
|
MScan.NewScan := Forced
|
||||||
|
Else Begin
|
||||||
MScan.NewScan := 1;
|
MScan.NewScan := 1;
|
||||||
|
|
||||||
Session.io.OutFullLn (Session.GetPrompt(99));
|
Session.io.OutFullLn (Session.GetPrompt(99));
|
||||||
End;
|
End;
|
||||||
|
End;
|
||||||
1 : Begin
|
1 : Begin
|
||||||
|
If Forced <> -1 Then
|
||||||
|
MScan.NewScan := Forced
|
||||||
|
Else Begin
|
||||||
MScan.NewScan := 0;
|
MScan.NewScan := 0;
|
||||||
|
|
||||||
Session.io.OutFullLn (Session.GetPrompt(98));
|
Session.io.OutFullLn (Session.GetPrompt(98));
|
||||||
End;
|
End;
|
||||||
2 : Session.io.OutFullLn (Session.GetPrompt(302));
|
End;
|
||||||
|
2 : If Forced <> -1 Then
|
||||||
|
Session.io.OutFullLn (Session.GetPrompt(302));
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
SetMessageScan;
|
SetMessageScan;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Procedure ToggleAll (Value: Byte);
|
||||||
|
Begin
|
||||||
|
Reset (MBaseFile);
|
||||||
|
|
||||||
|
While Not Eof(MBaseFile) Do Begin
|
||||||
|
Read (MBaseFile, MBase);
|
||||||
|
|
||||||
|
If Session.User.Access(MBase.ListACS) Then
|
||||||
|
ToggleCurrent(Value);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Close (MBaseFile);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Procedure ToggleByNumber (BaseNumber: LongInt);
|
||||||
|
Begin
|
||||||
|
If (BaseNumber > 0) And GetBaseCompressed(BaseNumber, MBase) Then
|
||||||
|
ToggleCurrent(-1);
|
||||||
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Old : RecMessageBase;
|
Old : RecMessageBase;
|
||||||
Temp : String[40];
|
Temp : String[40];
|
||||||
|
@ -893,6 +918,7 @@ Var
|
||||||
Num2 : String[40];
|
Num2 : String[40];
|
||||||
Begin
|
Begin
|
||||||
Old := MBase;
|
Old := MBase;
|
||||||
|
FileMode := 66;
|
||||||
|
|
||||||
Session.User.IgnoreGroup := Pos('/ALLGROUP', strUpper(Data)) > 0;
|
Session.User.IgnoreGroup := Pos('/ALLGROUP', strUpper(Data)) > 0;
|
||||||
|
|
||||||
|
@ -900,8 +926,11 @@ Begin
|
||||||
|
|
||||||
If Total = 0 Then Begin
|
If Total = 0 Then Begin
|
||||||
Session.io.OutFullLn (Session.GetPrompt(94));
|
Session.io.OutFullLn (Session.GetPrompt(94));
|
||||||
|
|
||||||
MBase := Old;
|
MBase := Old;
|
||||||
|
|
||||||
Session.User.IgnoreGroup := False;
|
Session.User.IgnoreGroup := False;
|
||||||
|
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -912,8 +941,14 @@ Begin
|
||||||
|
|
||||||
If (Temp = '') or (Temp = 'Q') Then Break;
|
If (Temp = '') or (Temp = 'Q') Then Break;
|
||||||
|
|
||||||
|
If Temp = 'A' Then
|
||||||
|
ToggleAll(1)
|
||||||
|
Else
|
||||||
|
If Temp = 'D' Then
|
||||||
|
ToggleAll(0)
|
||||||
|
Else
|
||||||
If Temp = '?' Then
|
If Temp = '?' Then
|
||||||
List_Bases
|
// do nothing
|
||||||
Else Begin
|
Else Begin
|
||||||
Num1 := '';
|
Num1 := '';
|
||||||
Num2 := '';
|
Num2 := '';
|
||||||
|
@ -924,9 +959,9 @@ Begin
|
||||||
If Temp[Count1] = ',' Then Begin
|
If Temp[Count1] = ',' Then Begin
|
||||||
If Num2 <> '' Then Begin
|
If Num2 <> '' Then Begin
|
||||||
For Count2 := strS2I(Num2) to strS2I(Num1) Do
|
For Count2 := strS2I(Num2) to strS2I(Num1) Do
|
||||||
ToggleBase(Count2);
|
ToggleByNumber(Count2);
|
||||||
End Else
|
End Else
|
||||||
ToggleBase(strS2I(Num1));
|
ToggleByNumber(strS2I(Num1));
|
||||||
|
|
||||||
Num1 := '';
|
Num1 := '';
|
||||||
Num2 := '';
|
Num2 := '';
|
||||||
|
@ -940,16 +975,14 @@ Begin
|
||||||
|
|
||||||
If Num2 <> '' Then Begin
|
If Num2 <> '' Then Begin
|
||||||
For Count1 := strS2I(Num2) to strS2I(Num1) Do
|
For Count1 := strS2I(Num2) to strS2I(Num1) Do
|
||||||
ToggleBase(Count1);
|
ToggleByNumber(Count1);
|
||||||
End Else
|
End Else
|
||||||
ToggleBase(strS2I(Num1));
|
ToggleByNumber(strS2I(Num1));
|
||||||
|
End;
|
||||||
|
|
||||||
List_Bases;
|
List_Bases;
|
||||||
End;
|
|
||||||
Until False;
|
Until False;
|
||||||
|
|
||||||
Close (MBaseFile);
|
|
||||||
|
|
||||||
MBase := Old;
|
MBase := Old;
|
||||||
|
|
||||||
Session.User.IgnoreGroup := False;
|
Session.User.IgnoreGroup := False;
|
||||||
|
|
|
@ -1000,7 +1000,7 @@ Begin
|
||||||
TmpDt.Hour := strS2I(Copy(SqInfo^.StrTime,1,2));
|
TmpDt.Hour := strS2I(Copy(SqInfo^.StrTime,1,2));
|
||||||
TmpDt.Min := strS2I(Copy(SqInfo^.StrTime, 4,2));
|
TmpDt.Min := strS2I(Copy(SqInfo^.StrTime, 4,2));
|
||||||
TmpDt.Sec := 0;
|
TmpDt.Sec := 0;
|
||||||
TmpStr := FormattedDate(TmpDT, 'DD NNN YY ') + Copy(SqInfo^.StrTime, 1, 5) + ':00';
|
TmpStr := FormatDate(TmpDT, 'DD NNN YY ') + Copy(SqInfo^.StrTime, 1, 5) + ':00';
|
||||||
|
|
||||||
PackTime (TmpDT, TmpDate);
|
PackTime (TmpDT, TmpDate);
|
||||||
|
|
||||||
|
|
|
@ -1309,7 +1309,6 @@ Begin
|
||||||
Session.io.OutFile ('prelogon', True, 0);
|
Session.io.OutFile ('prelogon', True, 0);
|
||||||
|
|
||||||
If UserNum = -1 Then Begin
|
If UserNum = -1 Then Begin
|
||||||
|
|
||||||
Count := 1;
|
Count := 1;
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
|
@ -1330,11 +1329,13 @@ Begin
|
||||||
CreateNewUser(Str);
|
CreateNewUser(Str);
|
||||||
UserLogon2;
|
UserLogon2;
|
||||||
UserLogon3;
|
UserLogon3;
|
||||||
|
|
||||||
Exit;
|
Exit;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Inc (Count);
|
Inc (Count);
|
||||||
End Else Break;
|
End Else
|
||||||
|
Break;
|
||||||
Until False;
|
Until False;
|
||||||
|
|
||||||
A := UserNum; {If user would drop carrier here itd save their info }
|
A := UserNum; {If user would drop carrier here itd save their info }
|
||||||
|
@ -1351,9 +1352,10 @@ Begin
|
||||||
End;
|
End;
|
||||||
|
|
||||||
UserNum := A;
|
UserNum := A;
|
||||||
|
ThisUser := TempUser;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
ThisUser := TempUser;
|
// ThisUser := TempUser;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Session.SystemLog ('User: ' + ThisUser.Handle + ' logged in');
|
Session.SystemLog ('User: ' + ThisUser.Handle + ' logged in');
|
||||||
|
|
|
@ -197,7 +197,8 @@
|
||||||
; &1 = base number &2 = base name &3 = scan base? (Yes or No)
|
; &1 = base number &2 = base name &3 = scan base? (Yes or No)
|
||||||
093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
|
093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
|
||||||
094 |CR|12There are no available message bases!
|
094 |CR|12There are no available message bases!
|
||||||
095 |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01,|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX
|
; Message base new and qwk scan toggle prompt:
|
||||||
|
095 Toggle: |09[|11#-#,#|09], Select [|11A|09]ll, [|11D|09]eselect All, [|11?|09/|11List|09]: |XX
|
||||||
; For strings 096 - 099: &1 = message base name
|
; For strings 096 - 099: &1 = message base name
|
||||||
096 |CR |11|&1 will NOT be scanned in QWK packets!|CR
|
096 |CR |11|&1 will NOT be scanned in QWK packets!|CR
|
||||||
097 |CR |11|&1 will be scanned in QWK packets!|CR
|
097 |CR |11|&1 will be scanned in QWK packets!|CR
|
||||||
|
|
|
@ -316,7 +316,9 @@ Begin
|
||||||
Console.SetWindow (1, 1, 80, 25, True);
|
Console.SetWindow (1, 1, 80, 25, True);
|
||||||
|
|
||||||
FocusCurrent := FocusMax;
|
FocusCurrent := FocusMax;
|
||||||
|
|
||||||
DrawStatusScreen;
|
DrawStatusScreen;
|
||||||
|
|
||||||
SwitchFocus;
|
SwitchFocus;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ Uses
|
||||||
SysUtils,
|
SysUtils,
|
||||||
m_Strings,
|
m_Strings,
|
||||||
m_FileIO,
|
m_FileIO,
|
||||||
m_Socket_Class,
|
m_io_Sockets,
|
||||||
m_DateTime,
|
m_DateTime,
|
||||||
MIS_Server,
|
MIS_Server,
|
||||||
MIS_NodeData,
|
MIS_NodeData,
|
||||||
|
@ -19,7 +19,7 @@ Uses
|
||||||
BBS_MsgBase_JAM,
|
BBS_MsgBase_JAM,
|
||||||
BBS_MsgBase_Squish;
|
BBS_MsgBase_Squish;
|
||||||
|
|
||||||
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TSocketClass) : TServerClient;
|
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TIOSocket) : TServerClient;
|
||||||
|
|
||||||
Type
|
Type
|
||||||
THTTPServer = Class(TServerClient)
|
THTTPServer = Class(TServerClient)
|
||||||
|
@ -30,7 +30,7 @@ Type
|
||||||
Cmd : String;
|
Cmd : String;
|
||||||
Data : String;
|
Data : String;
|
||||||
|
|
||||||
Constructor Create (Owner: TServerManager; CliSock: TSocketClass);
|
Constructor Create (Owner: TServerManager; CliSock: TIOSocket);
|
||||||
Procedure Execute; Override;
|
Procedure Execute; Override;
|
||||||
Destructor Destroy; Override;
|
Destructor Destroy; Override;
|
||||||
|
|
||||||
|
@ -39,12 +39,12 @@ Type
|
||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
|
|
||||||
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TSocketClass) : TServerClient;
|
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TIOSocket) : TServerClient;
|
||||||
Begin
|
Begin
|
||||||
Result := THTTPServer.Create(Owner, CliSock);
|
Result := THTTPServer.Create(Owner, CliSock);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Constructor THTTPServer.Create (Owner: TServerManager; CliSock: TSocketClass);
|
Constructor THTTPServer.Create (Owner: TServerManager; CliSock: TIOSocket);
|
||||||
Begin
|
Begin
|
||||||
Inherited Create(Owner, CliSock);
|
Inherited Create(Owner, CliSock);
|
||||||
|
|
||||||
|
@ -83,6 +83,7 @@ Begin
|
||||||
|
|
||||||
If Cmd = 'QUIT' Then Begin
|
If Cmd = 'QUIT' Then Begin
|
||||||
GotQuit := True;
|
GotQuit := True;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End Else
|
End Else
|
||||||
Client.WriteLine(re_UnknownCommand);
|
Client.WriteLine(re_UnknownCommand);
|
||||||
|
|
|
@ -17,7 +17,6 @@ Function ToUnixDate (DosDate: LongInt): LongInt;
|
||||||
Function DTToUnixDate (DT: DateTime): LongInt;
|
Function DTToUnixDate (DT: DateTime): LongInt;
|
||||||
Procedure UnixToDT (SecsPast: LongInt; Var Dt: DateTime);
|
Procedure UnixToDT (SecsPast: LongInt; Var Dt: DateTime);
|
||||||
Procedure Str2Az (Str: String; MaxLen: Byte; Var AZStr); {Convert string to asciiz}
|
Procedure Str2Az (Str: String; MaxLen: Byte; Var AZStr); {Convert string to asciiz}
|
||||||
Function FormattedDate (DT: DateTime; Mask: String): String;
|
|
||||||
Function LoadFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
Function LoadFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
||||||
Function ExtendFile (FN: String; ToSize: LongInt): Word;
|
Function ExtendFile (FN: String; ToSize: LongInt): Word;
|
||||||
Function SaveFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
Function SaveFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
||||||
|
@ -119,69 +118,6 @@ Begin
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function FormattedDate (DT: DateTime; Mask: String) : String;
|
|
||||||
Var
|
|
||||||
DStr : String[2];
|
|
||||||
MStr : String[2];
|
|
||||||
MNStr : String[3];
|
|
||||||
YStr : String[4];
|
|
||||||
HourStr : String[2];
|
|
||||||
MinStr : String[2];
|
|
||||||
SecStr : String[2];
|
|
||||||
TmpStr : String;
|
|
||||||
CurrPos : Word;
|
|
||||||
i : Word;
|
|
||||||
Begin
|
|
||||||
TmpStr := Mask;
|
|
||||||
Mask := strUpper(Mask);
|
|
||||||
DStr := Copy(strPadL(strI2S(Dt.Day), 2, '0'), 1, 2);
|
|
||||||
MStr := Copy(strPadL(strI2S(Dt.Month), 2, '0'), 1, 2);
|
|
||||||
YStr := Copy(strPadL(strI2S(Dt.Year), 4, '0'), 1, 4);
|
|
||||||
HourStr := Copy(strPadL(strI2S(Dt.Hour), 2, '0'), 1, 2);
|
|
||||||
MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2);
|
|
||||||
SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2);
|
|
||||||
MNStr := MonthString[Dt.Month];
|
|
||||||
|
|
||||||
If (Pos('YYYY', Mask) = 0) Then YStr := Copy(YStr, 3, 2);
|
|
||||||
|
|
||||||
CurrPos := Pos('DD', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(DStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := DStr[i];
|
|
||||||
|
|
||||||
CurrPos := Pos('YY', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(YStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := YStr[i];
|
|
||||||
|
|
||||||
CurrPos := Pos('MM', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(MStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := MStr[i];
|
|
||||||
|
|
||||||
CurrPos := Pos('HH', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(HourStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := HourStr[i];
|
|
||||||
|
|
||||||
CurrPos := Pos('SS', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(SecStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := SecStr[i];
|
|
||||||
|
|
||||||
CurrPos := Pos('II', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(MinStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := MinStr[i];
|
|
||||||
|
|
||||||
CurrPos := Pos('NNN', Mask);
|
|
||||||
If CurrPos > 0 Then
|
|
||||||
For i := 1 to Length(MNStr) Do
|
|
||||||
TmpStr[CurrPos + i - 1] := MNStr[i];
|
|
||||||
|
|
||||||
FormattedDate := TmpStr;
|
|
||||||
End;
|
|
||||||
|
|
||||||
Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
|
||||||
Var
|
Var
|
||||||
F: File;
|
F: File;
|
||||||
|
|
|
@ -64,55 +64,63 @@ Procedure InitProcedures (O: Pointer; S: Pointer; Var CV: VarDataRec; Var X: Wor
|
||||||
|
|
||||||
Procedure AddProc ({$IFDEF MPLPARSER} I: String; {$ENDIF} P: String; T: TIdentTypes);
|
Procedure AddProc ({$IFDEF MPLPARSER} I: String; {$ENDIF} P: String; T: TIdentTypes);
|
||||||
Begin
|
Begin
|
||||||
Inc(X);
|
Inc (X);
|
||||||
New(CV[X]);
|
New (CV[X]);
|
||||||
|
|
||||||
With CV[X]^ Do Begin
|
With CV[X]^ Do Begin
|
||||||
VarID := IW;
|
VarID := IW;
|
||||||
Inc(IW);
|
|
||||||
vType := T;
|
vType := T;
|
||||||
Move(P[1], Params, Ord(P[0]));
|
ArrPos := 0;
|
||||||
NumParams := Ord(p[0]);
|
|
||||||
|
Move (P[1], Params, Ord(P[0]));
|
||||||
|
|
||||||
|
NumParams := Ord(P[0]);
|
||||||
|
|
||||||
|
Inc(IW);
|
||||||
|
|
||||||
{$IFNDEF MPLPARSER}
|
{$IFNDEF MPLPARSER}
|
||||||
VarSize := 0;
|
VarSize := 0;
|
||||||
DataSize := 0;
|
DataSize := 0;
|
||||||
Data := NIL;
|
Data := NIL;
|
||||||
ProcPos := 0;
|
ProcPos := 0;
|
||||||
Kill := True;
|
Kill := True;
|
||||||
|
|
||||||
FillChar (pID, SizeOf(pID), 0);
|
FillChar (pID, SizeOf(pID), 0);
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
Ident := I;
|
Ident := I;
|
||||||
InProc := False;
|
InProc := False;
|
||||||
Proc := True;
|
Proc := True;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
ArrPos := 0;
|
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure AddStr ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word);
|
Procedure AddStr ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word);
|
||||||
Begin
|
Begin
|
||||||
Inc(X);
|
Inc (X);
|
||||||
New(CV[X]);
|
New (CV[X]);
|
||||||
|
|
||||||
With cV[x]^ Do Begin
|
With CV[X]^ Do Begin
|
||||||
VarID := IW;
|
VarID := IW;
|
||||||
Inc(IW);
|
|
||||||
vType := T;
|
vType := T;
|
||||||
NumParams := 0;
|
NumParams := 0;
|
||||||
|
ArrPos := 0;
|
||||||
|
|
||||||
|
Inc(IW);
|
||||||
|
|
||||||
{$IFNDEF MPLPARSER}
|
{$IFNDEF MPLPARSER}
|
||||||
|
ProcPos := 0;
|
||||||
|
Kill := True;
|
||||||
VarSize := SI + 1;
|
VarSize := SI + 1;
|
||||||
DataSize := VarSize;
|
DataSize := VarSize;
|
||||||
|
|
||||||
GetMem (Data, DataSize);
|
GetMem (Data, DataSize);
|
||||||
FillChar (Data^, DataSize, 0);
|
FillChar (Data^, DataSize, 0);
|
||||||
FillChar (pID, SizeOf(pID), 0); //cant we just assign it to 0 here?
|
FillChar (pID, SizeOf(pID), 0); //cant we just assign it to 0 here?
|
||||||
ProcPos := 0;
|
|
||||||
Kill := True;
|
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
Ident := I;
|
Ident := I;
|
||||||
InProc := False;
|
InProc := False;
|
||||||
Proc := False;
|
Proc := False;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
ArrPos := 0;
|
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -123,27 +131,31 @@ Procedure InitProcedures (O: Pointer; S: Pointer; Var CV: VarDataRec; Var X: Wor
|
||||||
|
|
||||||
Procedure AddPointer ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word; PD: Pointer);
|
Procedure AddPointer ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word; PD: Pointer);
|
||||||
Begin
|
Begin
|
||||||
Inc(x);
|
Inc (X);
|
||||||
New(cV[x]);
|
New (CV[X]);
|
||||||
|
|
||||||
With cV[x]^ Do Begin
|
With CV[X]^ Do Begin
|
||||||
VarID := IW;
|
VarID := IW;
|
||||||
Inc(IW);
|
vType := T;
|
||||||
vType := t;
|
|
||||||
NumParams := 0;
|
NumParams := 0;
|
||||||
|
ArrPos := 0;
|
||||||
|
|
||||||
|
Inc (IW);
|
||||||
|
|
||||||
{$IFNDEF MPLPARSER}
|
{$IFNDEF MPLPARSER}
|
||||||
If T = iString Then VarSize := SI + 1 Else VarSize := SI;
|
If T = iString Then VarSize := SI + 1 Else VarSize := SI;
|
||||||
|
|
||||||
DataSize := VarSize;
|
DataSize := VarSize;
|
||||||
Data := PD;
|
Data := PD;
|
||||||
FillChar (pID, SizeOf(pID), 0);
|
|
||||||
ProcPos := 0;
|
ProcPos := 0;
|
||||||
Kill := False;
|
Kill := False;
|
||||||
|
|
||||||
|
FillChar (pID, SizeOf(pID), 0);
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
Ident := I;
|
Ident := I;
|
||||||
InProc := False;
|
InProc := False;
|
||||||
Proc := False;
|
Proc := False;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
ArrPos := 0;
|
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ Uses
|
||||||
|
|
||||||
Var
|
Var
|
||||||
SavedX : Byte;
|
SavedX : Byte;
|
||||||
|
SavedY : Byte;
|
||||||
Console : TOutput;
|
Console : TOutput;
|
||||||
WasError : Boolean;
|
WasError : Boolean;
|
||||||
|
|
||||||
|
@ -72,15 +73,17 @@ Begin
|
||||||
Else Begin
|
Else Begin
|
||||||
If Pos('-ALL', strUpper(ParamStr(1))) > 0 Then Begin
|
If Pos('-ALL', strUpper(ParamStr(1))) > 0 Then Begin
|
||||||
FindFirst ('*.mps', AnyFile - Directory - VolumeID, Dir);
|
FindFirst ('*.mps', AnyFile - Directory - VolumeID, Dir);
|
||||||
|
|
||||||
While DosError = 0 Do Begin
|
While DosError = 0 Do Begin
|
||||||
Parser := TParserEngine.Create(Status);
|
Parser := TParserEngine.Create(Status);
|
||||||
If Not Parser.Compile(Dir.Name) Then Begin
|
|
||||||
|
Parser.Compile(Dir.Name);
|
||||||
|
|
||||||
Parser.Free;
|
Parser.Free;
|
||||||
Break;
|
|
||||||
End;
|
|
||||||
FindNext(Dir);
|
FindNext(Dir);
|
||||||
Parser.Free;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
FindClose(Dir);
|
FindClose(Dir);
|
||||||
End Else Begin
|
End Else Begin
|
||||||
Parser := TParserEngine.Create(Status);
|
Parser := TParserEngine.Create(Status);
|
||||||
|
|
|
@ -236,7 +236,7 @@ Var
|
||||||
MH.OrigNet := MsgBase^.GetOrigAddr.Net;
|
MH.OrigNet := MsgBase^.GetOrigAddr.Net;
|
||||||
MH.DestNet := EchoNode.Address.Net;
|
MH.DestNet := EchoNode.Address.Net;
|
||||||
|
|
||||||
TempStr1 := FormattedDate(DT, 'DD NNN YY HH:MM:SS') + #0;
|
TempStr1 := FormatDate(DT, 'DD NNN YY HH:II:SS') + #0;
|
||||||
Move (TempStr1[1], MH.DateTime[0], 20);
|
Move (TempStr1[1], MH.DateTime[0], 20);
|
||||||
|
|
||||||
If MsgBase^.IsLocal Then MH.Attribute := MH.Attribute OR pktLocal;
|
If MsgBase^.IsLocal Then MH.Attribute := MH.Attribute OR pktLocal;
|
||||||
|
|
|
@ -160,6 +160,7 @@ Var
|
||||||
SortMode : TSortMethod;
|
SortMode : TSortMethod;
|
||||||
Begin
|
Begin
|
||||||
Result := True;
|
Result := True;
|
||||||
|
FileMode := 66;
|
||||||
|
|
||||||
Case ListType of
|
Case ListType of
|
||||||
TopCall : ProcessStatus('Top Callers', False);
|
TopCall : ProcessStatus('Top Callers', False);
|
||||||
|
@ -206,6 +207,7 @@ Begin
|
||||||
|
|
||||||
If (strUpper(User.Handle) = Str) or (strUpper(User.RealName) = Str) Then Begin
|
If (strUpper(User.Handle) = Str) or (strUpper(User.RealName) = Str) Then Begin
|
||||||
Excluded := True;
|
Excluded := True;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
|
@ -33,6 +33,7 @@ Uses
|
||||||
|
|
||||||
Type
|
Type
|
||||||
PhoneRec = Record
|
PhoneRec = Record
|
||||||
|
Position : LongInt;
|
||||||
Name : String[26];
|
Name : String[26];
|
||||||
Address : String[60];
|
Address : String[60];
|
||||||
User : String[30];
|
User : String[30];
|
||||||
|
@ -164,6 +165,7 @@ Begin
|
||||||
Book[Count].StatusBar := INI.ReadString(strI2S(Count), 'statusbar', '1') = '1';
|
Book[Count].StatusBar := INI.ReadString(strI2S(Count), 'statusbar', '1') = '1';
|
||||||
Book[Count].LastCall := INI.ReadString(strI2S(Count), 'last', '');
|
Book[Count].LastCall := INI.ReadString(strI2S(Count), 'last', '');
|
||||||
Book[Count].Calls := INI.ReadString(strI2S(Count), 'calls', '');
|
Book[Count].Calls := INI.ReadString(strI2S(Count), 'calls', '');
|
||||||
|
Book[Count].Position := Count;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
INI.Free;
|
INI.Free;
|
||||||
|
@ -704,18 +706,60 @@ Begin
|
||||||
Screen.PutScreenImage(Image);
|
Screen.PutScreenImage(Image);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TelnetClient (Dial: PhoneRec);
|
Procedure EditEntry (Var Book: PhoneBookRec; Num: SmallInt);
|
||||||
|
Var
|
||||||
|
Box : TMenuBox;
|
||||||
|
Form : TMenuForm;
|
||||||
|
NewRec : PhoneRec;
|
||||||
|
Begin
|
||||||
|
NewRec := Book[Num];
|
||||||
|
Box := TMenuBox.Create(TOutput(Screen));
|
||||||
|
Form := TMenuForm.Create(TOutput(Screen));
|
||||||
|
|
||||||
Procedure DrawStatus;
|
Box.HeadAttr := 1 + 7 * 16;
|
||||||
|
Box.Header := ' Book Editor ';
|
||||||
|
|
||||||
|
Box.Open (17, 8, 63, 16);
|
||||||
|
|
||||||
|
Form.HelpSize := 0;
|
||||||
|
|
||||||
|
Form.AddStr ('N', ' Name' , 24, 10, 32, 10, 6, 26, 26, @NewRec.Name, '');
|
||||||
|
Form.AddStr ('A', ' Address', 21, 11, 32, 11, 9, 30, 60, @NewRec.Address, '');
|
||||||
|
Form.AddStr ('U', ' User Name', 19, 12, 32, 12, 11, 30, 30, @NewRec.User, '');
|
||||||
|
Form.AddPass ('P', ' Password', 20, 13, 32, 13, 10, 20, 20, @NewRec.Password, '');
|
||||||
|
Form.AddBol ('S', ' StatusBar', 19, 14, 32, 14, 11, 3, @NewRec.StatusBar, '');
|
||||||
|
|
||||||
|
Form.Execute;
|
||||||
|
|
||||||
|
If Form.Changed Then
|
||||||
|
If ShowMsgBox(1, 'Save changes?') Then Begin
|
||||||
|
Book[Num] := NewRec;
|
||||||
|
WriteBook(Book);
|
||||||
|
End;
|
||||||
|
|
||||||
|
Form.Free;
|
||||||
|
|
||||||
|
Box.Close;
|
||||||
|
Box.Free;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Procedure TelnetClient (Var Book: PhoneBookRec; Dial: PhoneRec);
|
||||||
|
|
||||||
|
Procedure DrawStatus (Toggle: Boolean);
|
||||||
Begin
|
Begin
|
||||||
If Dial.StatusBar Then Begin
|
If Dial.StatusBar Then Begin
|
||||||
Screen.SetWindow (1, 1, 80, 24, False);
|
Screen.SetWindow (1, 1, 80, 24, False);
|
||||||
Screen.WriteXY (1, 25, Config.StatusColor3, strPadC('ALT/B-Scrollback ALT/L-Send Login ALT/T-Zmodem ALT-H/Hangup ALT-X/Quit', 80, ' '));
|
Screen.WriteXY (1, 25, Config.StatusColor3, strPadC('ALT/B-Scrollback ALT/L-Send Login ALT/T-Zmodem ALT-E/Edit ALT-X/Quit', 80, ' '));
|
||||||
|
End Else
|
||||||
|
If Toggle Then Begin
|
||||||
|
Screen.SetWindow (1, 1, 80, 25, False);
|
||||||
|
Screen.WriteXY (1, 25, 7, strRep(' ', 79));
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Const
|
Const
|
||||||
BufferSize = 1024 * 4;
|
BufferSize = 1024 * 4;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Client : TIOSocket;
|
Client : TIOSocket;
|
||||||
Res : LongInt;
|
Res : LongInt;
|
||||||
|
@ -733,13 +777,20 @@ Begin
|
||||||
If Not Client.Connect(StripAddressPort(Dial.Address), GetAddressPort(Dial.Address)) Then
|
If Not Client.Connect(StripAddressPort(Dial.Address), GetAddressPort(Dial.Address)) Then
|
||||||
ShowMsgBox (0, 'Unable to connect')
|
ShowMsgBox (0, 'Unable to connect')
|
||||||
Else Begin
|
Else Begin
|
||||||
|
Book[Dial.Position].LastCall := DateDos2Str(CurDateDos, 1);
|
||||||
|
Book[Dial.Position].Calls := strI2S(strS2I(Dial.Calls) + 1);
|
||||||
|
|
||||||
|
WriteBook(Book);
|
||||||
|
|
||||||
|
Dial := Book[Dial.Position];
|
||||||
|
|
||||||
Screen.TextAttr := 7;
|
Screen.TextAttr := 7;
|
||||||
Screen.ClearScreen;
|
Screen.ClearScreen;
|
||||||
|
|
||||||
Done := False;
|
Done := False;
|
||||||
Term := TTermAnsi.Create(TOutput(Screen));
|
Term := TTermAnsi.Create(TOutput(Screen));
|
||||||
|
|
||||||
DrawStatus;
|
DrawStatus(False);
|
||||||
|
|
||||||
Term.SetReplyClient(TIOBase(Client));
|
Term.SetReplyClient(TIOBase(Client));
|
||||||
|
|
||||||
|
@ -748,8 +799,6 @@ Begin
|
||||||
Res := Client.ReadBuf (Buffer, BufferSize);
|
Res := Client.ReadBuf (Buffer, BufferSize);
|
||||||
|
|
||||||
If Res < 0 Then Begin
|
If Res < 0 Then Begin
|
||||||
ShowMsgBox (0, 'Connection terminated');
|
|
||||||
|
|
||||||
Done := True;
|
Done := True;
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
|
@ -785,13 +834,23 @@ Begin
|
||||||
|
|
||||||
Case Ch of
|
Case Ch of
|
||||||
#00 : Case Keyboard.ReadKey of
|
#00 : Case Keyboard.ReadKey of
|
||||||
|
#18 : Begin
|
||||||
|
EditEntry(Book, Dial.Position);
|
||||||
|
|
||||||
|
If Dial.StatusBar <> Book[Dial.Position].StatusBar Then Begin
|
||||||
|
Dial := Book[Dial.Position];
|
||||||
|
|
||||||
|
DrawStatus (True);
|
||||||
|
End Else
|
||||||
|
Dial := Book[Dial.Position];
|
||||||
|
End;
|
||||||
#20 : Begin
|
#20 : Begin
|
||||||
Case GetTransferType of
|
Case GetTransferType of
|
||||||
1 : DoZmodemDownload(TIOBase(Client));
|
1 : DoZmodemDownload(TIOBase(Client));
|
||||||
2 : DoZmodemUpload(TIOBase(Client));
|
2 : DoZmodemUpload(TIOBase(Client));
|
||||||
End;
|
End;
|
||||||
|
|
||||||
DrawStatus;
|
DrawStatus(False);
|
||||||
End;
|
End;
|
||||||
#35 : Done := True;
|
#35 : Done := True;
|
||||||
#38 : Begin
|
#38 : Begin
|
||||||
|
@ -801,7 +860,7 @@ Begin
|
||||||
#45 : Break;
|
#45 : Break;
|
||||||
#48 : Begin
|
#48 : Begin
|
||||||
ActivateScrollBack;
|
ActivateScrollBack;
|
||||||
DrawStatus;
|
DrawStatus(False);
|
||||||
End;
|
End;
|
||||||
#71 : Client.WriteStr(#27 + '[H');
|
#71 : Client.WriteStr(#27 + '[H');
|
||||||
#72 : Client.WriteStr(#27 + '[A');
|
#72 : Client.WriteStr(#27 + '[A');
|
||||||
|
@ -827,48 +886,12 @@ Begin
|
||||||
|
|
||||||
Client.Free;
|
Client.Free;
|
||||||
|
|
||||||
|
ShowMsgBox (0, 'Connection terminated');
|
||||||
|
|
||||||
Screen.TextAttr := 7;
|
Screen.TextAttr := 7;
|
||||||
Screen.SetWindow (1, 1, 80, 25, True);
|
Screen.SetWindow (1, 1, 80, 25, True);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure EditEntry (Var Book: PhoneBookRec; Num: SmallInt);
|
|
||||||
Var
|
|
||||||
Box : TMenuBox;
|
|
||||||
Form : TMenuForm;
|
|
||||||
NewRec : PhoneRec;
|
|
||||||
Begin
|
|
||||||
NewRec := Book[Num];
|
|
||||||
Box := TMenuBox.Create(TOutput(Screen));
|
|
||||||
Form := TMenuForm.Create(TOutput(Screen));
|
|
||||||
|
|
||||||
Box.HeadAttr := 1 + 7 * 16;
|
|
||||||
Box.Header := ' Book Editor ';
|
|
||||||
|
|
||||||
Box.Open (17, 8, 63, 16);
|
|
||||||
|
|
||||||
Form.HelpSize := 0;
|
|
||||||
|
|
||||||
Form.AddStr ('N', ' Name' , 24, 10, 32, 10, 6, 26, 26, @NewRec.Name, '');
|
|
||||||
Form.AddStr ('A', ' Address', 21, 11, 32, 11, 9, 30, 60, @NewRec.Address, '');
|
|
||||||
Form.AddStr ('U', ' User Name', 19, 12, 32, 12, 11, 30, 30, @NewRec.User, '');
|
|
||||||
Form.AddPass ('P', ' Password', 20, 13, 32, 13, 10, 20, 20, @NewRec.Password, '');
|
|
||||||
Form.AddBol ('S', ' StatusBar', 19, 14, 32, 14, 11, 3, @NewRec.StatusBar, '');
|
|
||||||
|
|
||||||
|
|
||||||
Form.Execute;
|
|
||||||
|
|
||||||
If Form.Changed Then
|
|
||||||
If ShowMsgBox(1, 'Save changes?') Then Begin
|
|
||||||
Book[Num] := NewRec;
|
|
||||||
WriteBook(Book);
|
|
||||||
End;
|
|
||||||
|
|
||||||
Form.Free;
|
|
||||||
|
|
||||||
Box.Close;
|
|
||||||
Box.Free;
|
|
||||||
End;
|
|
||||||
|
|
||||||
Procedure SearchEntry (Var Owner: Pointer; Str: String);
|
Procedure SearchEntry (Var Owner: Pointer; Str: String);
|
||||||
Begin
|
Begin
|
||||||
If Str = '' Then
|
If Str = '' Then
|
||||||
|
@ -943,13 +966,6 @@ Begin
|
||||||
#13 : If Book[List.Picked].Address = '' Then
|
#13 : If Book[List.Picked].Address = '' Then
|
||||||
ShowMsgBox(0, 'Address is empty')
|
ShowMsgBox(0, 'Address is empty')
|
||||||
Else Begin
|
Else Begin
|
||||||
With Book[List.Picked] Do Begin
|
|
||||||
LastCall := DateDos2Str(CurDateDos, 1);
|
|
||||||
Calls := strI2S(strS2I(Calls) + 1);
|
|
||||||
End;
|
|
||||||
|
|
||||||
WriteBook(Book);
|
|
||||||
|
|
||||||
Dial := Book[List.Picked];
|
Dial := Book[List.Picked];
|
||||||
Result := True;
|
Result := True;
|
||||||
|
|
||||||
|
@ -1005,7 +1021,7 @@ Begin
|
||||||
Repeat
|
Repeat
|
||||||
If Not GetTerminalEntry(Book, Dial) Then Break;
|
If Not GetTerminalEntry(Book, Dial) Then Break;
|
||||||
|
|
||||||
TelnetClient(Dial);
|
TelnetClient(Book, Dial);
|
||||||
Until False;
|
Until False;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
|
@ -3440,4 +3440,25 @@
|
||||||
+ If the download directory doesn't exist when NodeSpy attempts a Zmodem
|
+ If the download directory doesn't exist when NodeSpy attempts a Zmodem
|
||||||
download, it will now tell you instead of crashing.
|
download, it will now tell you instead of crashing.
|
||||||
|
|
||||||
|
+ NodeSpy Terminal now allows the current connected phone book entry to be
|
||||||
|
edited while connected. This allows the password to be set, statusbar to
|
||||||
|
be turned on/off, etc.
|
||||||
|
|
||||||
|
+ NodeSpy Terminal now only updates the last call date and times called if
|
||||||
|
the connection was successful.
|
||||||
|
|
||||||
|
+ NodeSpy terminal now fully disconnects the session before displaying the
|
||||||
|
"connection terminated" box.
|
||||||
|
|
||||||
|
+ MPLC will now continue to attempt to compile subsequent MPL programs even
|
||||||
|
if one compilation fails.
|
||||||
|
|
||||||
|
+ Message Base QWK scan and regular scan settings now have the ability to
|
||||||
|
toggle ALL bases on or off at one time. An updated prompt goes along with
|
||||||
|
this:
|
||||||
|
|
||||||
|
; Message base new and qwk scan toggle prompt:
|
||||||
|
095 Toggle: |09[|11#-#,#|09], Select [|11A|09]ll, [|11D|09]eselect All, [|11?|09/|11List|09]: |XX
|
||||||
|
|
||||||
|
|
||||||
<ALPHA 35 RELEASED>
|
<ALPHA 35 RELEASED>
|
||||||
|
|
Loading…
Reference in New Issue