rtty/datamode change done. Still completely untested. Compiles ok.

This commit is contained in:
OH1KH 2022-09-02 17:01:00 +03:00
parent d5e27773bb
commit c079448a1b
10 changed files with 133 additions and 83 deletions

View File

@ -110,7 +110,7 @@ implementation
{$R *.lfm}
{ TdmDXCluster }
uses dUtils, dData, znacmech, uMyini;
uses dUtils, dData, znacmech, uMyini, fTRXControl;
type Tchyb1 = object(Tchyby) // podedim objekt a prepisu "hlaseni"
//procedure hlaseni(vzkaz,kdo:string);virtual;
@ -209,6 +209,7 @@ function TdmDXCluster.BandModFromFreq(freq : String;var mode,band : String) : Bo
var
tmp : Extended;
cw, ssb : Extended;
n :String;
begin
EnterCriticalsection(csDX);
try
@ -243,7 +244,10 @@ begin
if (tmp >= ssb) then
mode := 'SSB'
else
mode := 'RTTY';
Begin
n:=IntToStr(frmTRXControl.cmbRig.ItemIndex);
mode := cqrini.ReadString('Band'+n, 'Datamode', 'RTTY')
end;
end;
//Writeln('TdmDXCluster.BandModFromFreq:',Result,' cw ',FloatToStr(cw),' ssb ',FloatToStr(ssb))
finally

View File

@ -77,7 +77,7 @@ object frmChangeFreq: TfrmChangeFreq
OnKeyPress = ChkKeyPress
TabOrder = 2
end
object edtRTTY: TEdit
object edtData: TEdit
Left = 168
Height = 34
Top = 89

View File

@ -17,7 +17,7 @@ type
btnCancel: TButton;
edtRXOffset : TEdit;
edtCW: TEdit;
edtRTTY: TEdit;
edtData: TEdit;
edtEnd: TEdit;
edtBegin: TEdit;
edtTXOffset : TEdit;
@ -70,10 +70,10 @@ begin
exit
end;
if NOT TryStrToCurr(edtRTTY.Text,f) then
if NOT TryStrToCurr(edtData.Text,f) then
begin
Application.MessageBox('You must enter correct frequency!','Error',mb_OK+mb_IconError);
edtRTTY.SetFocus;
edtData.SetFocus;
exit
end;

View File

@ -111,7 +111,7 @@ object frmFreq: TfrmFreq
Top = 18
Width = 180
BorderSpacing.Left = 230
Caption = 'RTTY: (f>RTTY and f<=SSB)'
Caption = 'DATA: (f>DATA and f<=SSB)'
ParentColor = False
end
object lblFreqNote4: TLabel

View File

@ -75,7 +75,7 @@ begin
edtBegin.Text := FloatToStr(dmData.qBands.Fields[2].AsFloat);
edtEnd.Text := FloatToStr(dmData.qBands.Fields[3].AsFloat);
edtCW.Text := FloatToStr(dmData.qBands.Fields[4].AsFloat);
edtRTTY.Text := FloatToStr(dmData.qBands.Fields[5].AsFloat);
edtData.Text := FloatToStr(dmData.qBands.Fields[5].AsFloat);
edtSSB.Text := FloatToStr(dmData.qBands.Fields[6].AsFloat);
edtRXOffset.Text := FloatToStr(dmData.qBands.Fields[7].AsFloat);
edtTXOffset.Text := FloatToStr(dmData.qBands.Fields[8].AsFloat);
@ -88,7 +88,7 @@ begin
StrToFloat(edtBegin.Text),
StrToFloat(edtEnd.Text),
StrToFloat(edtCW.Text),
StrToFloat(edtRTTY.Text),
StrToFloat(edtData.Text),
StrToFloat(edtSSB.Text),
StrToFloat(edtRXOffset.Text),
StrToFloat(edtTXOffset.Text)
@ -137,7 +137,7 @@ begin
dbgrdFreq.Columns[2].Title.Caption := 'Begin';
dbgrdFreq.Columns[3].Title.Caption := 'End';
dbgrdFreq.Columns[4].Title.Caption := 'CW';
dbgrdFreq.Columns[5].Title.Caption := 'RTTY';
dbgrdFreq.Columns[5].Title.Caption := 'Data';
dbgrdFreq.Columns[6].Title.Caption := 'SSB';
dbgrdFreq.Columns[7].Title.Caption := 'RX offset';
dbgrdFreq.Columns[8].Title.Caption := 'TX offset';

View File

@ -674,6 +674,7 @@ type
function CheckFreq(freq : String) : String;
procedure WaitWeb(secs:integer);
function RigCmd2DataMode(mode:String):String;
procedure ShowOperator;
procedure StartUpRemote;
procedure NewLogSplash;
@ -2247,7 +2248,7 @@ begin
if (frmTRXControl.GetModeFreqNewQSO(mode,freq)) then
begin
if( mode <> '') and chkAutoMode.Checked then
cmbMode.Text := mode;
cmbMode.Text := RigCmd2DataMode(mode);
if (freq <> empty_freq) then
begin
cmbFreq.Text := freq;
@ -5394,7 +5395,7 @@ begin
if (not (fViewQSO or fEditQSO or cbOffline.Checked)) and (frmTRXControl.GetModeFreqNewQSO(mode,freq)) then
begin
if chkAutoMode.Checked then
cmbMode.Text := mode;
cmbMode.Text := RigCmd2DataMode(mode);
cmbFreq.Text := freq;
edtHisRST.SetFocus;
edtHisRST.SelStart := 1;
@ -6692,7 +6693,7 @@ begin
edtCall.Text := call;
cmbFreq.Text := freq;
if chkAutoMode.Checked then
cmbMode.Text := mode;
cmbMode.Text := RigCmd2DataMode(mode);
freq := FloatToStr(etmp);
if not FromRbn then
mode := dmUtils.GetModeFromFreq(freq);
@ -7703,6 +7704,19 @@ Begin
ShowMessage(message);
end;
function TfrmNewQSO.RigCmd2DataMode(mode:String):String;
var
DatCmd,
n :String;
Begin
n:=IntToStr(frmTRXControl.cmbRig.ItemIndex);
DatCmd := upcase(cqrini.ReadString('Band'+n, 'Datacmd', 'RTTY'));
if (DatCmd = 'USB') or (DatCmd = 'LSB') then DatCmd := 'SSB'; //this is what RigControl responses
if cqrini.ReadBool('Band'+n, 'UseReverse', False) and (mode = DatCmd) then
Result := cqrini.ReadString('Band'+n, 'Datamode', 'RTTY')
else Result := mode;
end;
end.

View File

@ -1,7 +1,7 @@
object frmPreferences: TfrmPreferences
Left = 85
Height = 713
Top = 33
Left = 20
Height = 712
Top = 35
Width = 1131
HelpType = htKeyword
HelpKeyword = 'help/h1.html'
@ -11,7 +11,7 @@ object frmPreferences: TfrmPreferences
AutoScroll = True
BorderIcons = [biSystemMenu]
Caption = 'Preferences'
ClientHeight = 713
ClientHeight = 712
ClientWidth = 1131
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
@ -20,7 +20,7 @@ object frmPreferences: TfrmPreferences
LCLVersion = '2.2.2.0'
object pgPreferences: TPageControl
Left = 160
Height = 713
Height = 712
Top = 0
Width = 883
ActivePage = tabModes
@ -30,7 +30,7 @@ object frmPreferences: TfrmPreferences
OnChange = pgPreferencesChange
object tabProgram: TTabSheet
Caption = 'Program'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object lblWebBrowser: TLabel
AnchorSideLeft.Control = gbInternet
@ -625,7 +625,7 @@ object frmPreferences: TfrmPreferences
end
object tabStation: TTabSheet
Caption = 'Station'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox5: TGroupBox
Left = 16
@ -787,7 +787,7 @@ object frmPreferences: TfrmPreferences
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Caption = 'New QSO'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object Label82: TLabel
AnchorSideLeft.Control = edtRecetQSOs
@ -1264,7 +1264,7 @@ object frmPreferences: TfrmPreferences
end
object tabVisibleColumns: TTabSheet
Caption = 'Visible columns'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object chkDate: TCheckBox
AnchorSideLeft.Control = tabVisibleColumns
@ -1853,7 +1853,7 @@ object frmPreferences: TfrmPreferences
end
object tabBands: TTabSheet
Caption = 'Bands'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object cb136kHz: TCheckBox
Left = 14
@ -2100,7 +2100,7 @@ object frmPreferences: TfrmPreferences
end
object tabTRXcontrol: TTabSheet
Caption = 'TRX control'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object btnChangeDefaultFreq: TButton
AnchorSideTop.Control = grbRadio
@ -2140,7 +2140,7 @@ object frmPreferences: TfrmPreferences
BorderSpacing.Left = 6
BorderSpacing.Top = 4
Caption = ' rigctld '
ClientHeight = 70
ClientHeight = 86
ClientWidth = 655
TabOrder = 0
object lblRigctdPath: TLabel
@ -2374,7 +2374,7 @@ object frmPreferences: TfrmPreferences
Width = 511
BorderSpacing.Top = 3
Caption = 'Radio one serial parameters'
ClientHeight = 130
ClientHeight = 146
ClientWidth = 509
TabOrder = 11
object lblSerialRSpd: TLabel
@ -2869,7 +2869,7 @@ object frmPreferences: TfrmPreferences
end
object TabROTcontrol: TTabSheet
Caption = 'ROT control'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox41: TGroupBox
AnchorSideLeft.Control = TabROTcontrol
@ -3843,7 +3843,7 @@ object frmPreferences: TfrmPreferences
end
object tabModes: TTabSheet
Caption = 'Modes'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object grpUsrDigitalModes: TGroupBox
AnchorSideLeft.Control = tabModes
@ -4142,8 +4142,9 @@ object frmPreferences: TfrmPreferences
BorderSpacing.Left = 30
Caption = 'Data'
ParentColor = False
OnClick = lblDataModeClick
end
object lblLogMode: TLabel
object lblLogDataMode: TLabel
AnchorSideLeft.Control = lblDataMode
AnchorSideTop.Control = edtCW
AnchorSideTop.Side = asrCenter
@ -4154,8 +4155,8 @@ object frmPreferences: TfrmPreferences
Caption = 'Log Mode'
ParentColor = False
end
object lblRigMode: TLabel
AnchorSideLeft.Control = lblLogMode
object lblRigDataCmd: TLabel
AnchorSideLeft.Control = lblLogDataMode
AnchorSideTop.Side = asrCenter
Left = 207
Height = 17
@ -4175,10 +4176,11 @@ object frmPreferences: TfrmPreferences
BorderSpacing.Left = 42
Caption = 'Mode '
ParentColor = False
OnClick = lblDataMode1Click
end
object edtLogMode: TEdit
object edtDataMode: TEdit
AnchorSideLeft.Control = lblDataMode1
AnchorSideTop.Control = lblLogMode
AnchorSideTop.Control = lblLogDataMode
AnchorSideTop.Side = asrCenter
Left = 280
Height = 34
@ -4191,9 +4193,9 @@ object frmPreferences: TfrmPreferences
TabOrder = 6
Text = 'RTTY'
end
object edtRigCmd: TEdit
AnchorSideLeft.Control = edtLogMode
AnchorSideTop.Control = lblRigMode
object edtDataCmd: TEdit
AnchorSideLeft.Control = edtDataMode
AnchorSideTop.Control = lblRigDataCmd
AnchorSideTop.Side = asrCenter
Left = 280
Height = 34
@ -4224,7 +4226,7 @@ object frmPreferences: TfrmPreferences
Visible = False
end
object chkModeReverse: TCheckBox
AnchorSideLeft.Control = lblRigMode
AnchorSideLeft.Control = lblRigDataCmd
AnchorSideTop.Control = lblDataHz
AnchorSideTop.Side = asrCenter
Left = 207
@ -4251,7 +4253,7 @@ object frmPreferences: TfrmPreferences
end
object tabQTHProfiles: TTabSheet
Caption = 'QTH Profiles'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object chkUseProfiles: TCheckBox
Left = 9
@ -4356,7 +4358,7 @@ object frmPreferences: TfrmPreferences
end
object tabExport: TTabSheet
Caption = 'Export'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
inline fraExportPref1: TfraExportPref
Top = 8
@ -4374,7 +4376,7 @@ object frmPreferences: TfrmPreferences
end
object tabDXCluster: TTabSheet
Caption = 'DXCluster'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object gbDXCColor: TGroupBox
AnchorSideLeft.Control = tabDXCluster
@ -4992,7 +4994,7 @@ object frmPreferences: TfrmPreferences
end
object tabFont: TTabSheet
Caption = 'Fonts'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox7: TGroupBox
Left = 14
@ -5203,7 +5205,7 @@ object frmPreferences: TfrmPreferences
end
object tabWazItu: TTabSheet
Caption = 'WAZ, ITU zones'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox8: TGroupBox
Left = 14
@ -5346,7 +5348,7 @@ object frmPreferences: TfrmPreferences
end
object tabIOTA: TTabSheet
Caption = 'IOTA'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox10: TGroupBox
Left = 22
@ -5403,7 +5405,7 @@ object frmPreferences: TfrmPreferences
end
object tabMemebership: TTabSheet
Caption = 'Membership'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox11: TGroupBox
AnchorSideLeft.Control = tabMemebership
@ -5845,7 +5847,7 @@ object frmPreferences: TfrmPreferences
end
object tabBandMap: TTabSheet
Caption = 'Bandmap'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox16: TGroupBox
Left = 13
@ -6164,7 +6166,7 @@ object frmPreferences: TfrmPreferences
end
object tabXplanet: TTabSheet
Caption = 'xplanet support'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox21: TGroupBox
Left = 14
@ -6440,7 +6442,7 @@ object frmPreferences: TfrmPreferences
end
object tabZipCode: TTabSheet
Caption = 'Zip code tracking'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox25: TGroupBox
Left = 6
@ -6697,7 +6699,7 @@ object frmPreferences: TfrmPreferences
end
object tabLoTW: TTabSheet
Caption = 'LoTW/eQSL support'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object lblLoTWBkg: TLabel
AnchorSideLeft.Control = cmbLoTWBckColor
@ -7039,7 +7041,7 @@ object frmPreferences: TfrmPreferences
end
object tabCWInterface: TTabSheet
Caption = 'CW interface'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object lbIfaceType: TLabel
AnchorSideLeft.Control = tabCWInterface
@ -7654,7 +7656,7 @@ object frmPreferences: TfrmPreferences
end
object tabFldigi1: TTabSheet
Caption = 'fldigi/wsjt interface'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox31: TGroupBox
AnchorSideLeft.Control = tabFldigi1
@ -8342,7 +8344,7 @@ object frmPreferences: TfrmPreferences
end
object tabAutoBackup: TTabSheet
Caption = 'Exit & Auto backup'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox32: TGroupBox
Left = 8
@ -8490,7 +8492,7 @@ object frmPreferences: TfrmPreferences
end
object tabExtViewers: TTabSheet
Caption = 'External viewers'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object Label99: TLabel
Left = 23
@ -8578,7 +8580,7 @@ object frmPreferences: TfrmPreferences
end
object tabCallbook: TTabSheet
Caption = 'Callbook support'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox38: TGroupBox
Left = 13
@ -8643,7 +8645,7 @@ object frmPreferences: TfrmPreferences
end
object tabRBN: TTabSheet
Caption = 'RBN support'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object chkRBNAutoConn: TCheckBox
AnchorSideLeft.Control = lblRbnWindowOpen
@ -8962,7 +8964,7 @@ object frmPreferences: TfrmPreferences
end
object tabOnlineLog: TTabSheet
Caption = 'Online log upload'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object GroupBox44: TGroupBox
Left = 13
@ -9264,7 +9266,7 @@ object frmPreferences: TfrmPreferences
end
object tabCondx: TTabSheet
Caption = 'Propagation'
ClientHeight = 682
ClientHeight = 681
ClientWidth = 873
object rbCondxAsImage: TRadioButton
Left = 25
@ -9337,11 +9339,11 @@ object frmPreferences: TfrmPreferences
object Panel1: TPanel
AnchorSideBottom.Side = asrBottom
Left = 1043
Height = 713
Height = 712
Top = 0
Width = 88
Align = alRight
ClientHeight = 713
ClientHeight = 712
ClientWidth = 88
TabOrder = 1
object btnOK: TButton
@ -9406,7 +9408,7 @@ object frmPreferences: TfrmPreferences
end
object lbPreferences: TListBox
Left = 0
Height = 713
Height = 712
Top = 0
Width = 160
Align = alLeft

View File

@ -508,8 +508,8 @@ type
DateEditCall: TDateEdit;
DateEditLoc: TDateEdit;
dlgColor : TColorDialog;
edtLogMode: TEdit;
edtRigCmd: TEdit;
edtDataMode: TEdit;
edtDataCmd: TEdit;
edtGCLineWidth: TEdit;
edtGCStep: TEdit;
edtGCPolarDivisor: TEdit;
@ -715,8 +715,8 @@ type
lblNoRigForMode: TLabel;
lblDataMode: TLabel;
lblDataMode1: TLabel;
lblLogMode: TLabel;
lblRigMode: TLabel;
lblLogDataMode: TLabel;
lblRigDataCmd: TLabel;
lblRName: TLabel;
lblDeviceR: TLabel;
lblExtra: TLabel;
@ -1068,6 +1068,8 @@ type
procedure edtLocExit(Sender: TObject);
procedure edtPdfFilesExit(Sender: TObject);
procedure edtRecetQSOsKeyPress(Sender: TObject; var Key: char);
procedure lblDataMode1Click(Sender: TObject);
procedure lblDataModeClick(Sender: TObject);
procedure RotorParamsChange(Sender: TObject);
procedure TRXParamsChange(Sender: TObject);
procedure edtTxtFilesExit(Sender: TObject);
@ -2611,6 +2613,16 @@ begin
key := #0;
end;
procedure TfrmPreferences.lblDataMode1Click(Sender: TObject);
begin
end;
procedure TfrmPreferences.lblDataModeClick(Sender: TObject);
begin
end;
procedure TfrmPreferences.TRXParamsChange(Sender: TObject);
begin
TRXChanged := True
@ -3367,8 +3379,8 @@ Begin
edtData.Value := cqrini.ReadInteger('Band'+nr, 'RTTY', 500); //note: Data is called rtty for backward compatibility
edtAM.Value := cqrini.ReadInteger('Band'+nr, 'AM', 3000);
edtFM.Value := cqrini.ReadInteger('Band'+nr, 'FM', 2500);
edtLogMode.Text:=cqrini.ReadString('Band'+nr, 'LogMode', 'RTTY');
edtRigCmd.Text:=cqrini.ReadString('Band'+nr, 'RigCmd', 'RTTY');
edtDataMode.Text:=cqrini.ReadString('Band'+nr, 'Datamode', 'RTTY');
edtDataCmd.Text:=cqrini.ReadString('Band'+nr, 'Datacmd', 'RTTY');
chkModeReverse.Checked :=cqrini.ReadBool('Band'+nr, 'UseReverse', False);
BandWNrLoaded := RigNr;
end;
@ -3383,8 +3395,8 @@ Begin
cqrini.WriteInteger('Band'+nr, 'RTTY', edtData.Value); //note: Data is called rtty for backward compatibility
cqrini.WriteInteger('Band'+nr, 'AM', edtAM.Value);
cqrini.WriteInteger('Band'+nr, 'FM', edtFM.Value);
cqrini.WriteString('Band'+nr, 'LogMode', edtLogMode.Text);
cqrini.WriteString('Band'+nr, 'RigCmd', edtRigCmd.Text);
cqrini.WriteString('Band'+nr, 'Datamode', edtDataMode.Text);
cqrini.WriteString('Band'+nr, 'Datacmd', edtDatacmd.Text);
cqrini.WriteBool('Band'+nr, 'UseReverse', chkModeReverse.Checked);
end;

View File

@ -1,7 +1,7 @@
object frmTRXControl: TfrmTRXControl
Left = 732
Left = 950
Height = 302
Top = 27
Top = 29
Width = 265
Anchors = []
Caption = 'TRX control'

View File

@ -158,6 +158,7 @@ type
procedure SetMode(mode : String; bandwidth : Integer);
procedure ClearButtonsColor;
procedure UpdateModeButtons(mode : String);
procedure CheckUserMode(var mode : String);
procedure UserButton(r, b : Char);
public
AutoMode : Boolean;
@ -1134,6 +1135,7 @@ procedure TfrmTRXControl.SetMode(mode : String; bandwidth : Integer);
var
rmode : TRigMode;
begin
CheckUserMode(mode);
if Assigned(radio) then
begin
rmode.mode := mode;
@ -1313,6 +1315,7 @@ begin
mode := 'LSB';
end;
end;
CheckUserMode(mode);
if Assigned(radio) then
begin
@ -1413,26 +1416,27 @@ begin
end;
procedure TfrmTRXControl.UpdateModeButtons(mode : String);
var
usermode :String;
n :String;
begin
btnCW.Font.Color := COLOR_WINDOWTEXT;
btnSSB.Font.Color := COLOR_WINDOWTEXT;
btnDATA.Font.Color := COLOR_WINDOWTEXT;
btnAM.Font.Color := COLOR_WINDOWTEXT;
btnFM.Font.Color := COLOR_WINDOWTEXT;
if mode = 'CW' then
btnCW.Font.Color := clRed
else
if mode = 'SSB' then
btnSSB.Font.Color := clRed
else
if mode = 'RTTY' then
btnDATA.Font.Color := clRed
else
if mode = 'AM' then
btnAM.Font.Color := clRed
else
if mode = 'FM' then
btnFM.Font.Color := clRed;
n:=IntToStr(cmbRig.ItemIndex);
usermode:=cqrini.ReadString('Band'+n, 'Datacmd', 'RTTY');
if mode = usermode then btnDATA.Font.Color := clRed
else
case mode of
'CW' : btnCW.Font.Color := clRed;
'SSB' : btnSSB.Font.Color := clRed;
'AM' : btnAM.Font.Color := clRed;
'FM' : btnFM.Font.Color := clRed;
end;
if Assigned(radio) then
begin
@ -1589,5 +1593,19 @@ begin
btn70CMBand := dmUtils.GetBandFromFreq(
FloatToStr(cqrini.ReadFloat('DefFreq', '70cw', 430000) / 1000));
end;
procedure TfrmTRXControl.CheckUserMode(var mode : String);
var
usermode,
usercmd,
n :String;
begin
n:=IntToStr(cmbRig.ItemIndex);
usercmd:=cqrini.ReadString('Band'+n, 'Datacmd', 'RTTY');
usermode:=cqrini.ReadString('Band'+n, 'Datamode', 'RTTY');
if ((Upcase(mode)='RTTY') or (Upcase(mode)=Upcase(usermode))) then
mode := usercmd;
end;
end.